fix: broken transactions by vendor report

This commit is contained in:
Ahmed Bouhuolia
2024-02-25 13:20:34 +02:00
parent dd072f8585
commit 6ea870edb2
7 changed files with 47 additions and 25 deletions

View File

@@ -25,9 +25,11 @@ export class TransactionsByVendorMeta {
const formattedFromDate = moment(query.fromDate).format('YYYY/MM/DD'); const formattedFromDate = moment(query.fromDate).format('YYYY/MM/DD');
const formattedDateRange = `From ${formattedFromDate} | To ${formattedToDate}`; const formattedDateRange = `From ${formattedFromDate} | To ${formattedToDate}`;
const sheetName = 'Transactions By Vendor';
return { return {
...commonMeta, ...commonMeta,
sheetName: 'Transactions By Vendor', sheetName,
formattedFromDate, formattedFromDate,
formattedToDate, formattedToDate,
formattedDateRange, formattedDateRange,

View File

@@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi';
import { ITransactionsByVendorsFilter } from '@/interfaces'; import { ITransactionsByVendorsFilter } from '@/interfaces';
import { TableSheetPdf } from '../TableSheetPdf'; import { TableSheetPdf } from '../TableSheetPdf';
import { TransactionsByVendorTableInjectable } from './TransactionsByVendorTableInjectable'; import { TransactionsByVendorTableInjectable } from './TransactionsByVendorTableInjectable';
import { HtmlTableCustomCss } from './constants';
@Service() @Service()
export class TransactionsByVendorsPdf { export class TransactionsByVendorsPdf {
@@ -27,7 +28,8 @@ export class TransactionsByVendorsPdf {
tenantId, tenantId,
table.table, table.table,
table.meta.sheetName, table.meta.sheetName,
table.meta.formattedDateRange table.meta.formattedDateRange,
HtmlTableCustomCss
); );
} }
} }

View File

@@ -0,0 +1,23 @@
export const HtmlTableCustomCss = `
table tr td:not(:first-child) {
border-left: 1px solid #ececec;
}
table tr:last-child td {
border-bottom: 1px solid #ececec;
}
table .cell--credit,
table .cell--debit,
table .column--credit,
table .column--debit,
table .column--running_balance,
table .cell--running_balance{
text-align: right;
}
table tr.row-type--closing-balance td,
table tr.row-type--opening-balance td {
font-weight: 600;
}
table tr.row-type--vendor:not(:first-child) td {
border-top: 1px solid #ddd;
}
`;

View File

@@ -20,18 +20,17 @@ export default function VendorsTransactionsTable({
companyName, companyName,
}) { }) {
// Vendor transactions context. // Vendor transactions context.
const { const { vendorsTransactions, isVendorsTransactionsLoading } =
vendorsTransactions: { tableRows }, useVendorsTransactionsContext();
isVendorsTransactionsLoading,
query, const { table, query } = vendorsTransactions;
} = useVendorsTransactionsContext();
// Retireve vendor transactions table columns. // Retireve vendor transactions table columns.
const columns = useVendorsTransactionsColumns(); const columns = useVendorsTransactionsColumns();
const expandedRows = useMemo( const expandedRows = useMemo(
() => defaultExpanderReducer(tableRows, 5), () => defaultExpanderReducer(table.rows, 5),
[tableRows], [table.rows],
); );
return ( return (
@@ -46,7 +45,7 @@ export default function VendorsTransactionsTable({
> >
<VendorsTransactionsDataTable <VendorsTransactionsDataTable
columns={columns} columns={columns}
data={tableRows} data={table.rows}
rowClassNames={tableRowTypesToClassnames} rowClassNames={tableRowTypesToClassnames}
noInitialFetch={true} noInitialFetch={true}
expandable={true} expandable={true}

View File

@@ -25,7 +25,7 @@ import {
*/ */
export const useVendorsTransactionsColumns = () => { export const useVendorsTransactionsColumns = () => {
const { const {
vendorsTransactions: { tableRows }, vendorsTransactions: { table },
} = useVendorsTransactionsContext(); } = useVendorsTransactionsContext();
return React.useMemo( return React.useMemo(
@@ -59,7 +59,7 @@ export const useVendorsTransactionsColumns = () => {
accessor: 'cells[4].value', accessor: 'cells[4].value',
className: 'credit', className: 'credit',
textOverview: true, textOverview: true,
width: getColumnWidth(tableRows, 'cells[5].value', { width: getColumnWidth(table.rows, 'cells[5].value', {
minWidth: 100, minWidth: 100,
magicSpacing: 10, magicSpacing: 10,
}), }),
@@ -69,7 +69,7 @@ export const useVendorsTransactionsColumns = () => {
accessor: 'cells[5].value', accessor: 'cells[5].value',
className: 'debit', className: 'debit',
textOverview: true, textOverview: true,
width: getColumnWidth(tableRows, 'cells[6].value', { width: getColumnWidth(table.rows, 'cells[6].value', {
minWidth: 100, minWidth: 100,
magicSpacing: 10, magicSpacing: 10,
}), }),
@@ -79,13 +79,13 @@ export const useVendorsTransactionsColumns = () => {
accessor: 'cells[6].value', accessor: 'cells[6].value',
className: 'running_balance', className: 'running_balance',
textOverview: true, textOverview: true,
width: getColumnWidth(tableRows, 'cells[7].value', { width: getColumnWidth(table.rows, 'cells[7].value', {
minWidth: 120, minWidth: 120,
magicSpacing: 10, magicSpacing: 10,
}), }),
}, },
], ],
[tableRows], [table],
); );
}; };

View File

@@ -1,13 +1,16 @@
// @ts-nocheck
import { AnchorButton } from '@blueprintjs/core';
import { import {
DialogContent, DialogContent,
PdfDocumentPreview, PdfDocumentPreview,
FormattedMessage as T, FormattedMessage as T,
} from '@/components'; } from '@/components';
import { useTransactionsByVendorsPdf } from '@/hooks/query'; import { useTransactionsByVendorsPdf } from '@/hooks/query';
import { AnchorButton } from '@blueprintjs/core'; import { useVendorsTransactionsContext } from '../../VendorsTransactionsProvider';
export default function VendorTransactionsPdfDialogContent() { export default function VendorTransactionsPdfDialogContent() {
const { isLoading, pdfUrl } = useTransactionsByVendorsPdf(); const { httpQuery } = useVendorsTransactionsContext();
const { isLoading, pdfUrl } = useTransactionsByVendorsPdf(httpQuery);
return ( return (
<DialogContent> <DialogContent>

View File

@@ -19,14 +19,7 @@ export function useVendorsTransactionsReport(query, props) {
}, },
}, },
{ {
select: (res) => ({ select: (res) => res.data,
data: res.data.table,
tableRows: res.data.table.rows,
}),
defaultData: {
tableRows: [],
data: [],
},
...props, ...props,
}, },
); );