fix(BalanceSheet): filter by branches.

fix(ProfitLossSheet): filter by branches.
fix(CashflowStatement): filter by branches.
This commit is contained in:
a.bouhuolia
2022-03-23 16:47:22 +02:00
parent 3d9b95cbcf
commit a6d93170df
7 changed files with 106 additions and 35 deletions

View File

@@ -57,7 +57,7 @@ const branchSelectProps = {
/** /**
* branches mulit select. * branches mulit select.
* @param {*} param0 * @param {*} param0
* @returns * @returns {JSX.Element}
*/ */
export function BranchMultiSelect({ branches, ...rest }) { export function BranchMultiSelect({ branches, ...rest }) {
return ( return (

View File

@@ -11,6 +11,7 @@ function BalanceSheetProvider({ filter, ...props }) {
const query = React.useMemo(() => transformFilterFormToQuery(filter), [ const query = React.useMemo(() => transformFilterFormToQuery(filter), [
filter, filter,
]); ]);
// Fetches the balance sheet report. // Fetches the balance sheet report.
const { const {
data: balanceSheet, data: balanceSheet,

View File

@@ -2,6 +2,7 @@ import React from 'react';
import * as R from 'ramda'; import * as R from 'ramda';
import moment from 'moment'; import moment from 'moment';
import * as Yup from 'yup'; import * as Yup from 'yup';
import { castArray } from 'lodash';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
import { transformToForm } from 'utils'; import { transformToForm } from 'utils';
@@ -33,6 +34,24 @@ export const getDefaultBalanceSheetQuery = () => ({
branchesIds: [], 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. * Retrieves the balance sheet query.
*/ */
@@ -41,15 +60,10 @@ export const useBalanceSheetQuery = () => {
const [locationQuery, setLocationQuery] = useAppQueryString(); const [locationQuery, setLocationQuery] = useAppQueryString();
// Merges the default filter query with location URL query. // Merges the default filter query with location URL query.
const query = React.useMemo(() => { const query = React.useMemo(
const defaultQuery = getDefaultBalanceSheetQuery(); () => parseBalanceSheetQuery(locationQuery),
[locationQuery],
return { );
...defaultQuery,
...transformToForm(locationQuery, defaultQuery),
branchesIds: [],
};
}, [locationQuery]);
return { return {
query, query,

View File

@@ -1,4 +1,4 @@
import React, { useState, useEffect } from 'react'; import React, { useEffect } from 'react';
import moment from 'moment'; import moment from 'moment';
import { FinancialStatement } from 'components'; import { FinancialStatement } from 'components';
@@ -15,33 +15,33 @@ import {
CashFlowStatementAlerts, CashFlowStatementAlerts,
} from './components'; } from './components';
import { getDefaultCashFlowSheetQuery } from './utils'; import { useCashflowStatementQuery } from './utils';
import { compose } from 'utils'; import { compose } from 'utils';
/** /**
* Cash flow statement. * Cash flow statement.
* @returns {JSX.Element}
*/ */
function CashFlowStatement({ function CashFlowStatement({
//#withCashStatementActions // # withCashStatementActions
toggleCashFlowStatementFilterDrawer, toggleCashFlowStatementFilterDrawer,
}) { }) {
// filter // Cashflow statement query.
const [filter, setFilter] = useState({ const { query, setLocationQuery } = useCashflowStatementQuery();
...getDefaultCashFlowSheetQuery(),
});
// Handle refetch cash flow after filter change. // Handle refetch cash flow after filter change.
const handleFilterSubmit = (filter) => { const handleFilterSubmit = (filter) => {
const _filter = { const newFilter = {
...filter, ...filter,
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({ ..._filter }); setLocationQuery({ ...newFilter });
}; };
// Handle format number submit. // Handle format number submit.
const handleNumberFormatSubmit = (values) => { const handleNumberFormatSubmit = (values) => {
setFilter({ setLocationQuery({
...filter, ...query,
numberFormat: values, numberFormat: values,
}); });
}; };
@@ -54,9 +54,9 @@ function CashFlowStatement({
); );
return ( return (
<CashFlowStatementProvider filter={filter}> <CashFlowStatementProvider filter={query}>
<CashFlowStatementActionsBar <CashFlowStatementActionsBar
numberFormat={filter.numberFormat} numberFormat={query.numberFormat}
onNumberFormatSubmit={handleNumberFormatSubmit} onNumberFormatSubmit={handleNumberFormatSubmit}
/> />
<CashFlowStatementLoadingBar /> <CashFlowStatementLoadingBar />
@@ -65,7 +65,7 @@ function CashFlowStatement({
<DashboardPageContent> <DashboardPageContent>
<FinancialStatement> <FinancialStatement>
<CashFlowStatementHeader <CashFlowStatementHeader
pageFilter={filter} pageFilter={query}
onSubmitFilter={handleFilterSubmit} onSubmitFilter={handleFilterSubmit}
/> />
<CashFlowStatementBody /> <CashFlowStatementBody />

View File

@@ -1,4 +1,9 @@
import React from 'react';
import moment from 'moment'; import moment from 'moment';
import { castArray } from 'lodash';
import { transformToForm } from 'utils';
import { useAppQueryString } from 'hooks';
/** /**
* Retrieves the default cashflow sheet query. * Retrieves the default cashflow sheet query.
@@ -13,3 +18,41 @@ export const getDefaultCashFlowSheetQuery = () => {
branchesIds: [], 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,
};
};

View File

@@ -6,6 +6,7 @@ import * as Yup from 'yup';
import { useAppQueryString } from 'hooks'; import { useAppQueryString } from 'hooks';
import { transformToForm } from 'utils'; import { transformToForm } from 'utils';
import { castArray } from 'lodash';
/** /**
* Retrieves the default profit/loss sheet query. * Retrieves the default profit/loss sheet query.
@@ -35,6 +36,25 @@ export const getDefaultProfitLossQuery = () => ({
branchesIds: [], 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. * Retrieves the balance sheet query API.
*/ */
@@ -43,16 +63,10 @@ export const useProfitLossSheetQuery = () => {
const [locationQuery, setLocationQuery] = useAppQueryString(); const [locationQuery, setLocationQuery] = useAppQueryString();
// Merges the default query with location query. // Merges the default query with location query.
const query = React.useMemo(() => { const query = React.useMemo(
const defaultQuery = getDefaultProfitLossQuery(); () => parseProfitLossQuery(locationQuery),
[locationQuery],
return { );
...defaultQuery,
...transformToForm(locationQuery, defaultQuery),
branchesIds: [],
};
}, [locationQuery]);
return { return {
query, query,
locationQuery, locationQuery,

View File

@@ -7,6 +7,5 @@ export function getDefaultTrialBalanceQuery() {
basis: 'accural', basis: 'accural',
filterByOption: 'with-transactions', filterByOption: 'with-transactions',
branchesIds: [], branchesIds: [],
}; };
} }