From 6ea870edb2132746d262bb830e2a1b251a7364f4 Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Sun, 25 Feb 2024 13:20:34 +0200 Subject: [PATCH] fix: broken transactions by vendor report --- .../TransactionsByVendorMeta.ts | 4 +++- .../TransactionsByVendorPdf.ts | 4 +++- .../TransactionsByVendor/constants.ts | 23 +++++++++++++++++++ .../VendorsTransactionsTable.tsx | 15 ++++++------ .../VendorsTransactions/components.tsx | 10 ++++---- .../VendorTransactionsPdfDialogContent.tsx | 7 ++++-- .../use-vendor-transactions.ts | 9 +------- 7 files changed, 47 insertions(+), 25 deletions(-) create mode 100644 packages/server/src/services/FinancialStatements/TransactionsByVendor/constants.ts diff --git a/packages/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorMeta.ts b/packages/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorMeta.ts index ea31ac034..42295cc22 100644 --- a/packages/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorMeta.ts +++ b/packages/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorMeta.ts @@ -25,9 +25,11 @@ export class TransactionsByVendorMeta { const formattedFromDate = moment(query.fromDate).format('YYYY/MM/DD'); const formattedDateRange = `From ${formattedFromDate} | To ${formattedToDate}`; + const sheetName = 'Transactions By Vendor'; + return { ...commonMeta, - sheetName: 'Transactions By Vendor', + sheetName, formattedFromDate, formattedToDate, formattedDateRange, diff --git a/packages/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorPdf.ts b/packages/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorPdf.ts index 54ab1be40..d133a9ebc 100644 --- a/packages/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorPdf.ts +++ b/packages/server/src/services/FinancialStatements/TransactionsByVendor/TransactionsByVendorPdf.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { ITransactionsByVendorsFilter } from '@/interfaces'; import { TableSheetPdf } from '../TableSheetPdf'; import { TransactionsByVendorTableInjectable } from './TransactionsByVendorTableInjectable'; +import { HtmlTableCustomCss } from './constants'; @Service() export class TransactionsByVendorsPdf { @@ -27,7 +28,8 @@ export class TransactionsByVendorsPdf { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/TransactionsByVendor/constants.ts b/packages/server/src/services/FinancialStatements/TransactionsByVendor/constants.ts new file mode 100644 index 000000000..d35a2f105 --- /dev/null +++ b/packages/server/src/services/FinancialStatements/TransactionsByVendor/constants.ts @@ -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; +} +`; diff --git a/packages/webapp/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsTable.tsx b/packages/webapp/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsTable.tsx index 693bbfabe..6131da6b1 100644 --- a/packages/webapp/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsTable.tsx +++ b/packages/webapp/src/containers/FinancialStatements/VendorsTransactions/VendorsTransactionsTable.tsx @@ -20,18 +20,17 @@ export default function VendorsTransactionsTable({ companyName, }) { // Vendor transactions context. - const { - vendorsTransactions: { tableRows }, - isVendorsTransactionsLoading, - query, - } = useVendorsTransactionsContext(); + const { vendorsTransactions, isVendorsTransactionsLoading } = + useVendorsTransactionsContext(); + + const { table, query } = vendorsTransactions; // Retireve vendor transactions table columns. const columns = useVendorsTransactionsColumns(); const expandedRows = useMemo( - () => defaultExpanderReducer(tableRows, 5), - [tableRows], + () => defaultExpanderReducer(table.rows, 5), + [table.rows], ); return ( @@ -46,7 +45,7 @@ export default function VendorsTransactionsTable({ > { const { - vendorsTransactions: { tableRows }, + vendorsTransactions: { table }, } = useVendorsTransactionsContext(); return React.useMemo( @@ -59,7 +59,7 @@ export const useVendorsTransactionsColumns = () => { accessor: 'cells[4].value', className: 'credit', textOverview: true, - width: getColumnWidth(tableRows, 'cells[5].value', { + width: getColumnWidth(table.rows, 'cells[5].value', { minWidth: 100, magicSpacing: 10, }), @@ -69,7 +69,7 @@ export const useVendorsTransactionsColumns = () => { accessor: 'cells[5].value', className: 'debit', textOverview: true, - width: getColumnWidth(tableRows, 'cells[6].value', { + width: getColumnWidth(table.rows, 'cells[6].value', { minWidth: 100, magicSpacing: 10, }), @@ -79,13 +79,13 @@ export const useVendorsTransactionsColumns = () => { accessor: 'cells[6].value', className: 'running_balance', textOverview: true, - width: getColumnWidth(tableRows, 'cells[7].value', { + width: getColumnWidth(table.rows, 'cells[7].value', { minWidth: 120, magicSpacing: 10, }), }, ], - [tableRows], + [table], ); }; diff --git a/packages/webapp/src/containers/FinancialStatements/VendorsTransactions/dialogs/VendorTransactionsPdfDialog/VendorTransactionsPdfDialogContent.tsx b/packages/webapp/src/containers/FinancialStatements/VendorsTransactions/dialogs/VendorTransactionsPdfDialog/VendorTransactionsPdfDialogContent.tsx index a3e7f5191..99ad4e7ed 100644 --- a/packages/webapp/src/containers/FinancialStatements/VendorsTransactions/dialogs/VendorTransactionsPdfDialog/VendorTransactionsPdfDialogContent.tsx +++ b/packages/webapp/src/containers/FinancialStatements/VendorsTransactions/dialogs/VendorTransactionsPdfDialog/VendorTransactionsPdfDialogContent.tsx @@ -1,13 +1,16 @@ +// @ts-nocheck +import { AnchorButton } from '@blueprintjs/core'; import { DialogContent, PdfDocumentPreview, FormattedMessage as T, } from '@/components'; import { useTransactionsByVendorsPdf } from '@/hooks/query'; -import { AnchorButton } from '@blueprintjs/core'; +import { useVendorsTransactionsContext } from '../../VendorsTransactionsProvider'; export default function VendorTransactionsPdfDialogContent() { - const { isLoading, pdfUrl } = useTransactionsByVendorsPdf(); + const { httpQuery } = useVendorsTransactionsContext(); + const { isLoading, pdfUrl } = useTransactionsByVendorsPdf(httpQuery); return ( diff --git a/packages/webapp/src/hooks/query/FinancialReports/use-vendor-transactions.ts b/packages/webapp/src/hooks/query/FinancialReports/use-vendor-transactions.ts index 7c9dc5f45..e5768539e 100644 --- a/packages/webapp/src/hooks/query/FinancialReports/use-vendor-transactions.ts +++ b/packages/webapp/src/hooks/query/FinancialReports/use-vendor-transactions.ts @@ -19,14 +19,7 @@ export function useVendorsTransactionsReport(query, props) { }, }, { - select: (res) => ({ - data: res.data.table, - tableRows: res.data.table.rows, - }), - defaultData: { - tableRows: [], - data: [], - }, + select: (res) => res.data, ...props, }, );