feat(AP/ARAgin summary): add branch multi select.

This commit is contained in:
elforjani13
2022-02-16 21:02:38 +02:00
parent cffcef6f43
commit 1c5c632578
6 changed files with 178 additions and 1 deletions

View File

@@ -7,6 +7,7 @@ import { Tabs, Tab, Button, Intent } from '@blueprintjs/core';
import FinancialStatementHeader from 'containers/FinancialStatements/FinancialStatementHeader';
import APAgingSummaryHeaderGeneral from './APAgingSummaryHeaderGeneral';
import APAgingSummaryHeaderDimensions from './APAgingSummaryHeaderDimensions';
import withAPAgingSummary from './withAPAgingSummary';
import withAPAgingSummaryActions from './withAPAgingSummaryActions';
@@ -49,10 +50,14 @@ function APAgingSummaryHeader({
agingDaysBefore: 30,
agingPeriods: 3,
vendorsIds: [],
branchesIds: [],
filterByOption: 'without-zero-balance',
};
// Formik initial values.
const initialValues = transformToForm(pageFilter, defaultValues);
const initialValues = transformToForm(
{ ...pageFilter, branchesIds: [] },
defaultValues,
);
// Handle form submit.
const handleSubmit = (values, { setSubmitting }) => {
@@ -88,6 +93,11 @@ function APAgingSummaryHeader({
title={<T id={'general'} />}
panel={<APAgingSummaryHeaderGeneral />}
/>
<Tab
id="dimensions"
title={'Dimensions'}
panel={<APAgingSummaryHeaderDimensions />}
/>
</Tabs>
<div className={'financial-header-drawer__footer'}>
<Button className={'mr1'} intent={Intent.PRIMARY} type={'submit'}>

View File

@@ -0,0 +1,41 @@
import React from 'react';
import intl from 'react-intl-universal';
import { FormGroup, Classes } from '@blueprintjs/core';
import { BranchMultiSelect, Row, Col } from 'components';
import {
APAgingSummaryHeaderDimensionsProvider,
useAPAgingSummaryHeaderDimensonsContext,
} from './APAgingSummaryHeaderDimensionsProvider';
/**
* APAging summary header dimensions.
* @returns
*/
export default function APAgingSummaryHeaderDimensions() {
return (
<APAgingSummaryHeaderDimensionsProvider>
<APAgingSummaryHeaderDimensionsContent />
</APAgingSummaryHeaderDimensionsProvider>
);
}
/**
* APAging summary header dimensions content.
* @returns
*/
function APAgingSummaryHeaderDimensionsContent() {
const { branches } = useAPAgingSummaryHeaderDimensonsContext();
return (
<Row>
<Col xs={4}>
<FormGroup
label={intl.get('branches_multi_select.label')}
className={Classes.FILL}
>
<BranchMultiSelect name={'branchesIds'} branches={branches} />
</FormGroup>
</Col>
</Row>
);
}

View File

@@ -0,0 +1,38 @@
import React from 'react';
import { useBranches } from 'hooks/query';
import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton';
const APAgingSummaryHeaderDimensonsContext = React.createContext();
/**
* APAging summary header dismensions provider.
* @returns
*/
function APAgingSummaryHeaderDimensionsProvider({ ...props }) {
// Fetches the branches list.
const { isLoading: isBranchesLoading, data: branches } = useBranches();
// Provider
const provider = {
branches,
isBranchesLoading,
};
return isBranchesLoading ? (
<FinancialHeaderLoadingSkeleton />
) : (
<APAgingSummaryHeaderDimensonsContext.Provider
value={provider}
{...props}
/>
);
}
const useAPAgingSummaryHeaderDimensonsContext = () =>
React.useContext(APAgingSummaryHeaderDimensonsContext);
export {
APAgingSummaryHeaderDimensionsProvider,
useAPAgingSummaryHeaderDimensonsContext,
};

View File

@@ -12,6 +12,7 @@ import withARAgingSummary from './withARAgingSummary';
import withARAgingSummaryActions from './withARAgingSummaryActions';
import { compose, transformToForm } from 'utils';
import ARAgingSummaryHeaderDimensions from './ARAgingSummaryHeaderDimensions';
/**
* AR Aging Summary Report - Drawer Header.
@@ -47,13 +48,16 @@ function ARAgingSummaryHeader({
agingDaysBefore: 30,
agingPeriods: 3,
customersIds: [],
branchesIds: [],
filterByOption: 'without-zero-balance',
};
// Initial values.
const initialValues = transformToForm(
{
...pageFilter,
asDate: moment(pageFilter.asDate).toDate(),
branchesIds: [],
},
defaultValues,
);
@@ -91,6 +95,11 @@ function ARAgingSummaryHeader({
title={<T id={'general'} />}
panel={<ARAgingSummaryHeaderGeneral />}
/>
<Tab
id="dimensions"
title={'Dimensions'}
panel={<ARAgingSummaryHeaderDimensions />}
/>
</Tabs>
<div class="financial-header-drawer__footer">

View File

@@ -0,0 +1,41 @@
import React from 'react';
import intl from 'react-intl-universal';
import { FormGroup, Classes } from '@blueprintjs/core';
import { BranchMultiSelect, Row, Col } from 'components';
import {
ARAgingSummaryHeaderDimensionsProvider,
useARAgingSummaryHeaderDimensonsContext,
} from './ARAgingSummaryHeaderDimensionsProvider';
/**
* ARAging summary header dimensions.
* @returns
*/
export default function ARAgingSummaryHeaderDimensions() {
return (
<ARAgingSummaryHeaderDimensionsProvider>
<ARAgingSummaryHeaderDimensionsContent />
</ARAgingSummaryHeaderDimensionsProvider>
);
}
/**
* ARAging summary header dimensions content.
* @returns
*/
function ARAgingSummaryHeaderDimensionsContent() {
const { branches } = useARAgingSummaryHeaderDimensonsContext();
return (
<Row>
<Col xs={4}>
<FormGroup
label={intl.get('branches_multi_select.label')}
className={Classes.FILL}
>
<BranchMultiSelect name={'branchesIds'} branches={branches} />
</FormGroup>
</Col>
</Row>
);
}

View File

@@ -0,0 +1,38 @@
import React from 'react';
import { useBranches } from 'hooks/query';
import { FinancialHeaderLoadingSkeleton } from '../FinancialHeaderLoadingSkeleton';
const ARAgingSummaryHeaderDimensonsContext = React.createContext();
/**
* ARAging summary header dismensions provider.
* @returns
*/
function ARAgingSummaryHeaderDimensionsProvider({ ...props }) {
// Fetches the branches list.
const { isLoading: isBranchesLoading, data: branches } = useBranches();
// Provider
const provider = {
branches,
isBranchesLoading,
};
return isBranchesLoading ? (
<FinancialHeaderLoadingSkeleton />
) : (
<ARAgingSummaryHeaderDimensonsContext.Provider
value={provider}
{...props}
/>
);
}
const useARAgingSummaryHeaderDimensonsContext = () =>
React.useContext(ARAgingSummaryHeaderDimensonsContext);
export {
ARAgingSummaryHeaderDimensionsProvider,
useARAgingSummaryHeaderDimensonsContext,
};