fix: financial reports.

This commit is contained in:
a.bouhuolia
2022-02-13 13:21:59 +02:00
parent b1f07d281f
commit 2986b537d0
13 changed files with 90 additions and 48 deletions

View File

@@ -15,6 +15,7 @@ import {
CashFlowStatementAlerts, CashFlowStatementAlerts,
} from './components'; } from './components';
import { getDefaultCashFlowSheetQuery } from './utils';
import { compose } from 'utils'; import { compose } from 'utils';
/** /**
@@ -26,13 +27,8 @@ function CashFlowStatement({
}) { }) {
// filter // filter
const [filter, setFilter] = useState({ const [filter, setFilter] = useState({
fromDate: moment().startOf('year').format('YYYY-MM-DD'), ...getDefaultCashFlowSheetQuery(),
toDate: moment().endOf('year').format('YYYY-MM-DD'),
basis: 'cash',
displayColumnsType: 'total',
filterByOption: 'with-transactions',
}); });
// Handle refetch cash flow after filter change. // Handle refetch cash flow after filter change.
const handleFilterSubmit = (filter) => { const handleFilterSubmit = (filter) => {
const _filter = { const _filter = {
@@ -42,7 +38,6 @@ function CashFlowStatement({
}; };
setFilter({ ..._filter }); setFilter({ ..._filter });
}; };
// Handle format number submit. // Handle format number submit.
const handleNumberFormatSubmit = (values) => { const handleNumberFormatSubmit = (values) => {
setFilter({ setFilter({

View File

@@ -12,6 +12,7 @@ import CashFlowStatementGeneralPanel from './CashFlowStatementGeneralPanel';
import withCashFlowStatement from './withCashFlowStatement'; import withCashFlowStatement from './withCashFlowStatement';
import withCashFlowStatementActions from './withCashFlowStatementActions'; import withCashFlowStatementActions from './withCashFlowStatementActions';
import { getDefaultCashFlowSheetQuery } from './utils';
import { compose, transformToForm } from 'utils'; import { compose, transformToForm } from 'utils';
/** /**
@@ -29,10 +30,7 @@ function CashFlowStatementHeader({
toggleCashFlowStatementFilterDrawer, toggleCashFlowStatementFilterDrawer,
}) { }) {
// Filter form default values. // Filter form default values.
const defaultValues = { const defaultValues = getDefaultCashFlowSheetQuery();
fromDate: moment().toDate(),
toDate: moment().toDate(),
};
// Initial form values. // Initial form values.
const initialValues = transformToForm({ const initialValues = transformToForm({

View File

@@ -0,0 +1,14 @@
import moment from 'moment';
/**
* Retrieves the default cashflow sheet query.
*/
export const getDefaultCashFlowSheetQuery = () => {
return {
fromDate: moment().startOf('year').format('YYYY-MM-DD'),
toDate: moment().endOf('year').format('YYYY-MM-DD'),
basis: 'cash',
displayColumnsType: 'total',
filterByOption: 'with-transactions',
};
};

View File

@@ -1,5 +1,6 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import moment from 'moment'; import moment from 'moment';
import * as R from 'ramda';
import { FinancialStatement } from 'components'; import { FinancialStatement } from 'components';
import DashboardPageContent from 'components/Dashboard/DashboardPageContent'; import DashboardPageContent from 'components/Dashboard/DashboardPageContent';
@@ -12,7 +13,7 @@ import { CustomersBalanceLoadingBar } from './components';
import { CustomersBalanceSummaryProvider } from './CustomersBalanceSummaryProvider'; import { CustomersBalanceSummaryProvider } from './CustomersBalanceSummaryProvider';
import withCustomersBalanceSummaryActions from './withCustomersBalanceSummaryActions'; import withCustomersBalanceSummaryActions from './withCustomersBalanceSummaryActions';
import { compose } from 'redux'; import { getDefaultCustomersBalanceQuery } from './utils';
/** /**
* Customers Balance summary. * Customers Balance summary.
@@ -22,10 +23,8 @@ function CustomersBalanceSummary({
toggleCustomerBalanceFilterDrawer, toggleCustomerBalanceFilterDrawer,
}) { }) {
const [filter, setFilter] = useState({ const [filter, setFilter] = useState({
asDate: moment().endOf('day').format('YYYY-MM-DD'), ...getDefaultCustomersBalanceQuery(),
filterByOption: 'with-transactions',
}); });
// Handle re-fetch customers balance summary after filter change. // Handle re-fetch customers balance summary after filter change.
const handleFilterSubmit = (filter) => { const handleFilterSubmit = (filter) => {
const _filter = { const _filter = {
@@ -34,7 +33,6 @@ function CustomersBalanceSummary({
}; };
setFilter({ ..._filter }); setFilter({ ..._filter });
}; };
// Handle number format. // Handle number format.
const handleNumberFormat = (values) => { const handleNumberFormat = (values) => {
setFilter({ setFilter({
@@ -70,6 +68,6 @@ function CustomersBalanceSummary({
</CustomersBalanceSummaryProvider> </CustomersBalanceSummaryProvider>
); );
} }
export default compose(withCustomersBalanceSummaryActions)( export default R.compose(withCustomersBalanceSummaryActions)(
CustomersBalanceSummary, CustomersBalanceSummary,
); );

View File

@@ -6,6 +6,8 @@ import { DataTable, FinancialSheet } from 'components';
import { useCustomersBalanceSummaryContext } from './CustomersBalanceSummaryProvider'; import { useCustomersBalanceSummaryContext } from './CustomersBalanceSummaryProvider';
import { useCustomersSummaryColumns } from './components'; import { useCustomersSummaryColumns } from './components';
import { tableRowTypesToClassnames } from 'utils';
/** /**
* customers balance summary table. * customers balance summary table.
*/ */
@@ -14,29 +16,21 @@ export default function CustomersBalanceSummaryTable({
companyName, companyName,
}) { }) {
const { const {
isCustomersBalanceLoading,
CustomerBalanceSummary: { table }, CustomerBalanceSummary: { table },
} = useCustomersBalanceSummaryContext(); } = useCustomersBalanceSummaryContext();
const columns = useCustomersSummaryColumns(); const columns = useCustomersSummaryColumns();
const rowClassNames = (row) => {
return [`row-type--${row.original.row_types}`];
};
return ( return (
<FinancialSheet <FinancialSheet
name={'customers-balance-summary'}
companyName={companyName} companyName={companyName}
sheetType={intl.get('customers_balance_summary')} sheetType={intl.get('customers_balance_summary')}
asDate={new Date()} asDate={new Date()}
loading={isCustomersBalanceLoading}
> >
<DataTable <DataTable
className="bigcapital-datatable--financial-report"
columns={columns} columns={columns}
data={table.data} data={table.data}
rowClassNames={rowClassNames} rowClassNames={tableRowTypesToClassnames}
noInitialFetch={true} noInitialFetch={true}
/> />
</FinancialSheet> </FinancialSheet>

View File

@@ -0,0 +1,8 @@
import moment from 'moment';
export const getDefaultCustomersBalanceQuery = () => {
return {
asDate: moment().endOf('day').format('YYYY-MM-DD'),
filterByOption: 'with-transactions',
};
};

View File

@@ -81,7 +81,7 @@ const InventoryItemDetailsDataTable = styled(DataTable)`
border-bottom: 1px solid #ddd; border-bottom: 1px solid #ddd;
} }
.tr.row-type { .tr.row_type {
&--ITEM { &--ITEM {
.td { .td {
&.transaction_type { &.transaction_type {

View File

@@ -1,18 +1,18 @@
import React, { useMemo } from 'react'; import React, { useMemo } from 'react';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
import { getColumnWidth } from 'utils';
import { If } from 'components'; import { If } from 'components';
import { CellTextSpan } from 'components/Datatable/Cells'; import { CellTextSpan } from 'components/Datatable/Cells';
import { useInventoryValuationContext } from './InventoryValuationProvider'; import { useInventoryValuationContext } from './InventoryValuationProvider';
import FinancialLoadingBar from '../FinancialLoadingBar'; import FinancialLoadingBar from '../FinancialLoadingBar';
import { getColumnWidth } from 'utils';
import { Align } from 'common';
/** /**
* Retrieve inventory valuation table columns. * Retrieve inventory valuation table columns.
*/ */
export const useInventoryValuationTableColumns = () => { export const useInventoryValuationTableColumns = () => {
// inventory valuation context // inventory valuation context
const { const {
inventoryValuation: { tableRows }, inventoryValuation: { tableRows },
@@ -36,6 +36,7 @@ export const useInventoryValuationTableColumns = () => {
minWidth: 120, minWidth: 120,
}), }),
textOverview: true, textOverview: true,
align: Align.Right,
}, },
{ {
Header: intl.get('asset_value'), Header: intl.get('asset_value'),
@@ -46,6 +47,7 @@ export const useInventoryValuationTableColumns = () => {
minWidth: 120, minWidth: 120,
}), }),
textOverview: true, textOverview: true,
align: Align.Right,
}, },
{ {
Header: intl.get('average'), Header: intl.get('average'),
@@ -56,6 +58,7 @@ export const useInventoryValuationTableColumns = () => {
minWidth: 120, minWidth: 120,
}), }),
textOverview: true, textOverview: true,
align: Align.Right,
}, },
], ],
[tableRows], [tableRows],

View File

@@ -2,15 +2,17 @@ import React from 'react';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
import moment from 'moment'; import moment from 'moment';
import { Button } from '@blueprintjs/core'; import { Button } from '@blueprintjs/core';
import { Icon, If, FormattedMessage as T } from 'components'; import { Icon, If, FormattedMessage as T } from 'components';
import { useJournalSheetContext } from './JournalProvider'; import { useJournalSheetContext } from './JournalProvider';
import FinancialLoadingBar from '../FinancialLoadingBar'; import FinancialLoadingBar from '../FinancialLoadingBar';
import { Align } from 'common';
/** /**
* Retrieve the journal table columns. * Retrieve the journal table columns.
*/ */
export const useJournalTableColumns = () => { export const useJournalTableColumns = () => {
return React.useMemo( return React.useMemo(
() => [ () => [
{ {
@@ -57,12 +59,12 @@ export const useJournalTableColumns = () => {
{ {
Header: intl.get('credit'), Header: intl.get('credit'),
accessor: 'formatted_credit', accessor: 'formatted_credit',
className: 'credit', align: Align.Right,
}, },
{ {
Header: intl.get('debit'), Header: intl.get('debit'),
accessor: 'formatted_debit', accessor: 'formatted_debit',
className: 'debit', align: Align.Right,
}, },
], ],
[], [],

View File

@@ -54,9 +54,8 @@ const PurchasesByItemsDataTable = styled(DataTable)`
.table { .table {
.tbody { .tbody {
.tr .td { .tr .td {
border-bottom: 0; padding-top: 0.36rem;
padding-top: 0.4rem; padding-bottom: 0.36rem;
padding-bottom: 0.4rem;
} }
.tr.row_type--total .td { .tr.row_type--total .td {
border-top: 1px solid #bbb; border-top: 1px solid #bbb;

View File

@@ -1,8 +1,6 @@
import React, { useEffect, useState } from 'react'; import React, { useEffect, useState } from 'react';
import moment from 'moment'; import moment from 'moment';
import 'style/pages/FinancialStatements/ContactsBalanceSummary.scss';
import { FinancialStatement } from 'components'; import { FinancialStatement } from 'components';
import DashboardPageContent from 'components/Dashboard/DashboardPageContent'; import DashboardPageContent from 'components/Dashboard/DashboardPageContent';
@@ -11,10 +9,12 @@ import VendorsBalanceSummaryHeader from './VendorsBalanceSummaryHeader';
import { VendorsBalanceSummaryProvider } from './VendorsBalanceSummaryProvider'; import { VendorsBalanceSummaryProvider } from './VendorsBalanceSummaryProvider';
import { VendorsSummarySheetLoadingBar } from './components'; import { VendorsSummarySheetLoadingBar } from './components';
import { VendorBalanceSummaryBody } from './VendorsBalanceSummaryBody';
import withVendorsBalanceSummaryActions from './withVendorsBalanceSummaryActions'; import withVendorsBalanceSummaryActions from './withVendorsBalanceSummaryActions';
import { getDefaultVendorsBalanceQuery } from './utils';
import { compose } from 'utils'; import { compose } from 'utils';
import { VendorBalanceSummaryBody } from './VendorsBalanceSummaryBody';
/** /**
* Vendors Balance summary. * Vendors Balance summary.
@@ -24,8 +24,7 @@ function VendorsBalanceSummary({
toggleVendorSummaryFilterDrawer, toggleVendorSummaryFilterDrawer,
}) { }) {
const [filter, setFilter] = useState({ const [filter, setFilter] = useState({
asDate: moment().endOf('day').format('YYYY-MM-DD'), ...getDefaultVendorsBalanceQuery(),
filterByOption: 'with-transactions',
}); });
// Handle refetch vendors balance summary. // Handle refetch vendors balance summary.

View File

@@ -1,5 +1,6 @@
import React from 'react'; import React from 'react';
import intl from 'react-intl-universal'; import intl from 'react-intl-universal';
import styled from 'styled-components';
import { DataTable, FinancialSheet } from 'components'; import { DataTable, FinancialSheet } from 'components';
@@ -23,19 +24,42 @@ export default function VendorsBalanceSummaryTable({
const columns = useVendorsBalanceColumns(); const columns = useVendorsBalanceColumns();
return ( return (
<FinancialSheet <VendorBalanceFinancialSheet
companyName={organizationName} companyName={organizationName}
name={'vendors-balance-summary'}
sheetType={intl.get('vendors_balance_summary')} sheetType={intl.get('vendors_balance_summary')}
asDate={new Date()} asDate={new Date()}
> >
<DataTable <VendorBalanceDataTable
className={'bigcapital-datatable--financial-report'}
columns={columns} columns={columns}
data={table?.data} data={table.data}
rowClassNames={tableRowTypesToClassnames} rowClassNames={tableRowTypesToClassnames}
noInitialFetch={true} noInitialFetch={true}
/> />
</FinancialSheet> </VendorBalanceFinancialSheet>
); );
} }
const VendorBalanceFinancialSheet = styled(FinancialSheet)``;
const VendorBalanceDataTable = styled(DataTable)`
.table {
.tbody {
.tr:not(.no-results) {
.td {
border-bottom: 0;
padding-top: 0.4rem;
padding-bottom: 0.4rem;
}
&.row-type--TOTAL {
font-weight: 500;
.td {
border-top: 1px solid #bbb;
border-bottom: 3px double #333;
}
}
}
}
}
`;

View File

@@ -0,0 +1,8 @@
import moment from 'moment';
export const getDefaultVendorsBalanceQuery = () => {
return {
asDate: moment().endOf('day').format('YYYY-MM-DD'),
filterByOption: 'with-transactions',
};
}