From a6d93170dfa744486e95b955739da582aead0df8 Mon Sep 17 00:00:00 2001 From: "a.bouhuolia" Date: Wed, 23 Mar 2022 16:47:22 +0200 Subject: [PATCH] fix(BalanceSheet): filter by branches. fix(ProfitLossSheet): filter by branches. fix(CashflowStatement): filter by branches. --- src/components/Branches/BranchMultiSelect.js | 2 +- .../BalanceSheet/BalanceSheetProvider.js | 1 + .../FinancialStatements/BalanceSheet/utils.js | 32 ++++++++++---- .../CashFlowStatement/CashFlowStatement.js | 28 ++++++------ .../CashFlowStatement/utils.js | 43 +++++++++++++++++++ .../ProfitLossSheet/utils.js | 34 ++++++++++----- .../TrialBalanceSheet/utils.js | 1 - 7 files changed, 106 insertions(+), 35 deletions(-) diff --git a/src/components/Branches/BranchMultiSelect.js b/src/components/Branches/BranchMultiSelect.js index db880b32e..2d36e02f1 100644 --- a/src/components/Branches/BranchMultiSelect.js +++ b/src/components/Branches/BranchMultiSelect.js @@ -57,7 +57,7 @@ const branchSelectProps = { /** * branches mulit select. * @param {*} param0 - * @returns + * @returns {JSX.Element} */ export function BranchMultiSelect({ branches, ...rest }) { return ( diff --git a/src/containers/FinancialStatements/BalanceSheet/BalanceSheetProvider.js b/src/containers/FinancialStatements/BalanceSheet/BalanceSheetProvider.js index 7dad5c54a..06d8eddae 100644 --- a/src/containers/FinancialStatements/BalanceSheet/BalanceSheetProvider.js +++ b/src/containers/FinancialStatements/BalanceSheet/BalanceSheetProvider.js @@ -11,6 +11,7 @@ function BalanceSheetProvider({ filter, ...props }) { const query = React.useMemo(() => transformFilterFormToQuery(filter), [ filter, ]); + // Fetches the balance sheet report. const { data: balanceSheet, diff --git a/src/containers/FinancialStatements/BalanceSheet/utils.js b/src/containers/FinancialStatements/BalanceSheet/utils.js index ce6547c1c..6628d3a8c 100644 --- a/src/containers/FinancialStatements/BalanceSheet/utils.js +++ b/src/containers/FinancialStatements/BalanceSheet/utils.js @@ -2,6 +2,7 @@ import React from 'react'; import * as R from 'ramda'; import moment from 'moment'; import * as Yup from 'yup'; +import { castArray } from 'lodash'; import intl from 'react-intl-universal'; import { transformToForm } from 'utils'; @@ -33,6 +34,24 @@ export const getDefaultBalanceSheetQuery = () => ({ branchesIds: [], }); +/** + * Parses balance sheet query. + */ +const parseBalanceSheetQuery = (locationQuery) => { + const defaultQuery = getDefaultBalanceSheetQuery(); + + const transformed = { + ...defaultQuery, + ...transformToForm(locationQuery, defaultQuery), + }; + return { + ...transformed, + + // Ensures the branches ids is always array. + branchesIds: castArray(transformed.branchesIds), + }; +}; + /** * Retrieves the balance sheet query. */ @@ -41,15 +60,10 @@ export const useBalanceSheetQuery = () => { const [locationQuery, setLocationQuery] = useAppQueryString(); // Merges the default filter query with location URL query. - const query = React.useMemo(() => { - const defaultQuery = getDefaultBalanceSheetQuery(); - - return { - ...defaultQuery, - ...transformToForm(locationQuery, defaultQuery), - branchesIds: [], - }; - }, [locationQuery]); + const query = React.useMemo( + () => parseBalanceSheetQuery(locationQuery), + [locationQuery], + ); return { query, diff --git a/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatement.js b/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatement.js index ae7545030..da945f791 100644 --- a/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatement.js +++ b/src/containers/FinancialStatements/CashFlowStatement/CashFlowStatement.js @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react'; +import React, { useEffect } from 'react'; import moment from 'moment'; import { FinancialStatement } from 'components'; @@ -15,33 +15,33 @@ import { CashFlowStatementAlerts, } from './components'; -import { getDefaultCashFlowSheetQuery } from './utils'; +import { useCashflowStatementQuery } from './utils'; import { compose } from 'utils'; /** * Cash flow statement. + * @returns {JSX.Element} */ function CashFlowStatement({ - //#withCashStatementActions + // # withCashStatementActions toggleCashFlowStatementFilterDrawer, }) { - // filter - const [filter, setFilter] = useState({ - ...getDefaultCashFlowSheetQuery(), - }); + // Cashflow statement query. + const { query, setLocationQuery } = useCashflowStatementQuery(); + // Handle refetch cash flow after filter change. const handleFilterSubmit = (filter) => { - const _filter = { + const newFilter = { ...filter, fromDate: moment(filter.fromDate).format('YYYY-MM-DD'), toDate: moment(filter.toDate).format('YYYY-MM-DD'), }; - setFilter({ ..._filter }); + setLocationQuery({ ...newFilter }); }; // Handle format number submit. const handleNumberFormatSubmit = (values) => { - setFilter({ - ...filter, + setLocationQuery({ + ...query, numberFormat: values, }); }; @@ -54,9 +54,9 @@ function CashFlowStatement({ ); return ( - + @@ -65,7 +65,7 @@ function CashFlowStatement({ diff --git a/src/containers/FinancialStatements/CashFlowStatement/utils.js b/src/containers/FinancialStatements/CashFlowStatement/utils.js index 6cf1bc762..3e5dc9ce6 100644 --- a/src/containers/FinancialStatements/CashFlowStatement/utils.js +++ b/src/containers/FinancialStatements/CashFlowStatement/utils.js @@ -1,4 +1,9 @@ +import React from 'react'; import moment from 'moment'; +import { castArray } from 'lodash'; + +import { transformToForm } from 'utils'; +import { useAppQueryString } from 'hooks'; /** * Retrieves the default cashflow sheet query. @@ -13,3 +18,41 @@ export const getDefaultCashFlowSheetQuery = () => { branchesIds: [], }; }; + +/** + * Parses the cashflow query from browser location. + */ +const parseCashflowQuery = (query) => { + const defaultQuery = getDefaultCashFlowSheetQuery(); + + const transformed = { + ...defaultQuery, + ...transformToForm(query, defaultQuery), + }; + return { + ...transformed, + + // Ensures the branches ids is always array. + branchesIds: castArray(transformed.branchesIds), + }; +}; + +/** + * Retrieves the cashflow statement query. + */ +export const useCashflowStatementQuery = () => { + // Retrieves location query. + const [locationQuery, setLocationQuery] = useAppQueryString(); + + // Merges the default filter query with location URL query. + const query = React.useMemo( + () => parseCashflowQuery(locationQuery), + [locationQuery], + ); + + return { + query, + locationQuery, + setLocationQuery, + }; +}; diff --git a/src/containers/FinancialStatements/ProfitLossSheet/utils.js b/src/containers/FinancialStatements/ProfitLossSheet/utils.js index 413ba31d6..dae874894 100644 --- a/src/containers/FinancialStatements/ProfitLossSheet/utils.js +++ b/src/containers/FinancialStatements/ProfitLossSheet/utils.js @@ -6,6 +6,7 @@ import * as Yup from 'yup'; import { useAppQueryString } from 'hooks'; import { transformToForm } from 'utils'; +import { castArray } from 'lodash'; /** * Retrieves the default profit/loss sheet query. @@ -35,6 +36,25 @@ export const getDefaultProfitLossQuery = () => ({ branchesIds: [], }); +/** + * Parses the profit/loss sheet query. + */ +const parseProfitLossQuery = (locationQuery) => { + const defaultQuery = getDefaultProfitLossQuery(); + + const transformed = { + ...defaultQuery, + ...transformToForm(locationQuery, defaultQuery), + }; + + return { + ...transformed, + + // Ensures the branches ids is always array. + branchesIds: castArray(transformed.branchesIds), + }; +}; + /** * Retrieves the balance sheet query API. */ @@ -43,16 +63,10 @@ export const useProfitLossSheetQuery = () => { const [locationQuery, setLocationQuery] = useAppQueryString(); // Merges the default query with location query. - const query = React.useMemo(() => { - const defaultQuery = getDefaultProfitLossQuery(); - - return { - ...defaultQuery, - ...transformToForm(locationQuery, defaultQuery), - branchesIds: [], - }; - }, [locationQuery]); - + const query = React.useMemo( + () => parseProfitLossQuery(locationQuery), + [locationQuery], + ); return { query, locationQuery, diff --git a/src/containers/FinancialStatements/TrialBalanceSheet/utils.js b/src/containers/FinancialStatements/TrialBalanceSheet/utils.js index 894c527c0..c555f3acb 100644 --- a/src/containers/FinancialStatements/TrialBalanceSheet/utils.js +++ b/src/containers/FinancialStatements/TrialBalanceSheet/utils.js @@ -7,6 +7,5 @@ export function getDefaultTrialBalanceQuery() { basis: 'accural', filterByOption: 'with-transactions', branchesIds: [], - }; }