feat(TrialBalance): location query.

This commit is contained in:
a.bouhuolia
2022-03-23 18:15:50 +02:00
parent a6d93170df
commit 3faa765a07
3 changed files with 56 additions and 13 deletions

View File

@@ -1,4 +1,4 @@
import React, { useCallback, useEffect, useState } from 'react'; import React, { useCallback, useEffect } from 'react';
import moment from 'moment'; import moment from 'moment';
import { FinancialStatement } from 'components'; import { FinancialStatement } from 'components';
@@ -15,7 +15,7 @@ import { TrialBalanceSheetBody } from './TrialBalanceSheetBody';
import withTrialBalanceActions from './withTrialBalanceActions'; import withTrialBalanceActions from './withTrialBalanceActions';
import { getDefaultTrialBalanceQuery } from './utils'; import { useTrialBalanceSheetQuery } from './utils';
import { compose } from 'utils'; import { compose } from 'utils';
/** /**
@@ -25,9 +25,7 @@ function TrialBalanceSheet({
// #withTrialBalanceSheetActions // #withTrialBalanceSheetActions
toggleTrialBalanceFilterDrawer: toggleFilterDrawer, toggleTrialBalanceFilterDrawer: toggleFilterDrawer,
}) { }) {
const [filter, setFilter] = useState({ const { query, setLocationQuery } = useTrialBalanceSheetQuery();
...getDefaultTrialBalanceQuery(),
});
// Handle filter form submit. // Handle filter form submit.
const handleFilterSubmit = useCallback( const handleFilterSubmit = useCallback(
@@ -37,14 +35,14 @@ function TrialBalanceSheet({
fromDate: moment(filter.fromDate).format('YYYY-MM-DD'), fromDate: moment(filter.fromDate).format('YYYY-MM-DD'),
toDate: moment(filter.toDate).format('YYYY-MM-DD'), toDate: moment(filter.toDate).format('YYYY-MM-DD'),
}; };
setFilter(parsedFilter); setLocationQuery(parsedFilter);
}, },
[setFilter], [setLocationQuery],
); );
// Handle numebr format form submit. // Handle numebr format form submit.
const handleNumberFormatSubmit = (numberFormat) => { const handleNumberFormatSubmit = (numberFormat) => {
setFilter({ setLocationQuery({
...filter, ...query,
numberFormat, numberFormat,
}); });
}; };
@@ -57,9 +55,9 @@ function TrialBalanceSheet({
); );
return ( return (
<TrialBalanceSheetProvider query={filter}> <TrialBalanceSheetProvider query={query}>
<TrialBalanceActionsBar <TrialBalanceActionsBar
numberFormat={filter.numberFormat} numberFormat={query.numberFormat}
onNumberFormatSubmit={handleNumberFormatSubmit} onNumberFormatSubmit={handleNumberFormatSubmit}
/> />
<TrialBalanceSheetLoadingBar /> <TrialBalanceSheetLoadingBar />
@@ -68,7 +66,7 @@ function TrialBalanceSheet({
<DashboardPageContent> <DashboardPageContent>
<FinancialStatement> <FinancialStatement>
<TrialBalanceSheetHeader <TrialBalanceSheetHeader
pageFilter={filter} pageFilter={query}
onSubmitFilter={handleFilterSubmit} onSubmitFilter={handleFilterSubmit}
/> />
<TrialBalanceSheetBody /> <TrialBalanceSheetBody />

View File

@@ -53,7 +53,6 @@ function TrialBalanceSheetHeader({
...pageFilter, ...pageFilter,
fromDate: moment(pageFilter.fromDate).toDate(), fromDate: moment(pageFilter.fromDate).toDate(),
toDate: moment(pageFilter.toDate).toDate(), toDate: moment(pageFilter.toDate).toDate(),
branchesIds: [],
}, },
defaultValues, defaultValues,
); );

View File

@@ -1,5 +1,13 @@
import React from 'react';
import moment from 'moment'; import moment from 'moment';
import { castArray } from 'lodash';
import { useAppQueryString } from 'hooks';
import { transformToForm } from 'utils';
/**
* Retrieves the default trial balance query.
*/
export function getDefaultTrialBalanceQuery() { export function getDefaultTrialBalanceQuery() {
return { return {
fromDate: moment().startOf('year').format('YYYY-MM-DD'), fromDate: moment().startOf('year').format('YYYY-MM-DD'),
@@ -9,3 +17,41 @@ export function getDefaultTrialBalanceQuery() {
branchesIds: [], branchesIds: [],
}; };
} }
/**
* Parses the trial balance sheet query of browser location.
*/
const parseTrialBalanceSheetQuery = (locationQuery) => {
const defaultQuery = getDefaultTrialBalanceQuery();
const transformed = {
...defaultQuery,
...transformToForm(locationQuery, defaultQuery),
};
return {
...transformed,
// Ensures the branches ids is always array.
branchesIds: castArray(transformed.branchesIds),
};
};
/**
* Retrieves the trial balance sheet query.
*/
export const useTrialBalanceSheetQuery = () => {
// Retrieves location query.
const [locationQuery, setLocationQuery] = useAppQueryString();
// Merges the default filter query with location URL query.
const query = React.useMemo(
() => parseTrialBalanceSheetQuery(locationQuery),
[locationQuery],
);
return {
query,
locationQuery,
setLocationQuery,
};
};