From c06a8d9ca36e90b49f9720466ee0a418f1567d20 Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Mon, 19 Feb 2024 21:41:15 +0200 Subject: [PATCH] feat(server): styling financial reports pdf --- .../scss/modules/financial-sheet.scss | 44 +++++++++++++------ .../views/modules/financial-sheet.pug | 9 ++-- packages/server/scripts/gulpConfig.js | 12 +++-- .../APAgingSummaryPdfInjectable.ts | 4 +- .../ARAgingSummaryPdfInjectable.ts | 4 +- .../AgingSummary/_constants.ts | 8 ++++ .../BalanceSheet/BalanceSheetPdfInjectable.ts | 4 +- .../BalanceSheet/constants.ts | 12 +++++ .../CashFlow/CashflowTablePdfInjectable.ts | 7 +-- .../FinancialStatements/CashFlow/constants.ts | 20 +++++++-- .../CustomerBalanceSummaryPdf.ts | 4 +- .../CustomerBalanceSummary/constants.ts | 6 +++ .../GeneralLedger/GeneralLedgerPdf.ts | 4 +- .../GeneralLedger/constants.ts | 13 ++++++ .../InventoryDetailsTablePdf.ts | 4 +- .../InventoryDetails/constant.ts | 7 +++ .../InventoryValuationSheetPdf.ts | 4 +- .../InventoryValuationSheet/_constants.ts | 8 ++++ .../JournalSheet/JournalSheetPdfInjectable.ts | 4 +- .../JournalSheet/constant.ts | 10 +++++ .../ProfitLossTablePdfInjectable.ts | 4 +- .../ProfitLossSheet/constants.ts | 10 ++++- .../PurchasesByItems/PurchasesByItemsPdf.ts | 4 +- .../PurchasesByItems/_types.ts | 10 ++++- .../SalesByItems/SalesByItemsPdfInjectable.ts | 4 +- .../SalesByItems/constants.ts | 12 +++-- .../TrialBalanceSheetPdfInjectsable.ts | 4 +- .../TrialBalanceSheetTable.ts | 1 - .../TrialBalanceSheet/_constants.ts | 11 ++++- .../VendorBalanceSummary.ts | 6 +-- .../VendorBalanceSummaryApplication.ts | 1 - .../VendorBalanceSummaryPdf.ts | 5 ++- .../VendorBalanceSummary/constants.ts | 6 +++ 33 files changed, 210 insertions(+), 56 deletions(-) create mode 100644 packages/server/src/services/FinancialStatements/CustomerBalanceSummary/constants.ts create mode 100644 packages/server/src/services/FinancialStatements/GeneralLedger/constants.ts create mode 100644 packages/server/src/services/FinancialStatements/InventoryDetails/constant.ts create mode 100644 packages/server/src/services/FinancialStatements/JournalSheet/constant.ts create mode 100644 packages/server/src/services/FinancialStatements/VendorBalanceSummary/constants.ts diff --git a/packages/server/resources/scss/modules/financial-sheet.scss b/packages/server/resources/scss/modules/financial-sheet.scss index 5924dc2a3..bceb51dc0 100644 --- a/packages/server/resources/scss/modules/financial-sheet.scss +++ b/packages/server/resources/scss/modules/financial-sheet.scss @@ -1,41 +1,57 @@ +@import "../base.scss"; -.sheet{} +html, +body { + font-size: 14px; +} +body{ + font-weight: 400; + letter-spacing: 0; + line-height: 1.28581; + text-transform: none; + color: #000; + font-family: Segoe UI, Roboto, Oxygen, Ubuntu, Cantarell, Open Sans, Helvetica Neue, Icons16, sans-serif; +} +.sheet{ + padding: 20px; +} .sheet__company-name{ margin: 0; - font-size: 1.6rem; + font-size: 1.4rem; } .sheet__sheet-type { margin: 0 } .sheet__sheet-date { - margin-top: 0.5rem; + margin-top: 0.35rem; } .sheet__header { - text-align: center; - margin-bottom: 2rem; + text-align: center; + margin-bottom: 1rem; } .sheet__table { border-top: 1px solid #000; table-layout: fixed; - border-spacing: 0; - text-align: left; + border-spacing: 0; + text-align: left; + font-size: inherit; + width: 100%; } .sheet__table thead th { - color: #000; - border-bottom: 1px solid #000000; - padding: 0.5rem; + color: #000; + border-bottom: 1px solid #000000; + padding: 0.5rem; } .sheet__table tbody td { border-bottom: 0; - padding-top: 0.32rem; - padding-bottom: 0.32rem; + padding-top: 0.28rem; + padding-bottom: 0.28rem; padding-left: 0.5rem; padding-right: 0.5rem; color: #252A31; - border-bottom: 1px solid rgb(37, 42, 49); - + border-bottom: 1px solid transparent; } \ No newline at end of file diff --git a/packages/server/resources/views/modules/financial-sheet.pug b/packages/server/resources/views/modules/financial-sheet.pug index 7efb237ea..53d0b0308 100644 --- a/packages/server/resources/views/modules/financial-sheet.pug +++ b/packages/server/resources/views/modules/financial-sheet.pug @@ -1,6 +1,9 @@ block head style - //- include ../../css/modules/financial-sheet.css + include ../../css/modules/financial-sheet.css + +style. + #{customCSS} block content .sheet @@ -13,9 +16,9 @@ block content thead tr each column in table.columns - th= column.label + th(style=column.style)= column.label tbody each row in table.rows - tr + tr(class=row.classNames) each cell in row.cells td!= cell.value \ No newline at end of file diff --git a/packages/server/scripts/gulpConfig.js b/packages/server/scripts/gulpConfig.js index 51bbc3aff..1caa9af23 100644 --- a/packages/server/scripts/gulpConfig.js +++ b/packages/server/scripts/gulpConfig.js @@ -66,12 +66,10 @@ module.exports = { // sourcemaps: true, // Allow to enable/disable sourcemaps or pass object to configure it. // minify: true, // Allow to enable/disable minify the source. }, - // { - // src: './assets/sass/editor-style.scss', - // dest: './assets/css', - // sourcemaps: true, - // minify: true, - // }, + { + src: `${RESOURCES_PATH}/scss/modules/financial-sheet.scss`, + dest: `${RESOURCES_PATH}/css/modules`, + }, ], // RTL builds. rtl: [ @@ -114,7 +112,7 @@ module.exports = { // SASS Configuration for all builds. sass: { errLogToConsole: true, - // outputStyle: 'compact', + // outputStyle: 'compact', }, // CSS MQ Packer configuration for all builds and style tasks. diff --git a/packages/server/src/services/FinancialStatements/AgingSummary/APAgingSummaryPdfInjectable.ts b/packages/server/src/services/FinancialStatements/AgingSummary/APAgingSummaryPdfInjectable.ts index 073970b91..50ef588e8 100644 --- a/packages/server/src/services/FinancialStatements/AgingSummary/APAgingSummaryPdfInjectable.ts +++ b/packages/server/src/services/FinancialStatements/AgingSummary/APAgingSummaryPdfInjectable.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { IAPAgingSummaryQuery } from '@/interfaces'; import { TableSheetPdf } from '../TableSheetPdf'; import { APAgingSummaryTableInjectable } from './APAgingSummaryTableInjectable'; +import { HtmlTableCss } from './_constants'; @Service() export class APAgingSummaryPdfInjectable { @@ -27,7 +28,8 @@ export class APAgingSummaryPdfInjectable { tenantId, table.table, table.meta.sheetName, - table.meta.formattedAsDate + table.meta.formattedAsDate, + HtmlTableCss ); } } diff --git a/packages/server/src/services/FinancialStatements/AgingSummary/ARAgingSummaryPdfInjectable.ts b/packages/server/src/services/FinancialStatements/AgingSummary/ARAgingSummaryPdfInjectable.ts index b0031ac37..a3b75f6d3 100644 --- a/packages/server/src/services/FinancialStatements/AgingSummary/ARAgingSummaryPdfInjectable.ts +++ b/packages/server/src/services/FinancialStatements/AgingSummary/ARAgingSummaryPdfInjectable.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { IARAgingSummaryQuery } from '@/interfaces'; import { TableSheetPdf } from '../TableSheetPdf'; import { ARAgingSummaryTableInjectable } from './ARAgingSummaryTableInjectable'; +import { HtmlTableCss } from './_constants'; @Service() export class ARAgingSummaryPdfInjectable { @@ -27,7 +28,8 @@ export class ARAgingSummaryPdfInjectable { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCss ); } } diff --git a/packages/server/src/services/FinancialStatements/AgingSummary/_constants.ts b/packages/server/src/services/FinancialStatements/AgingSummary/_constants.ts index 961f0b7ed..4f68704cb 100644 --- a/packages/server/src/services/FinancialStatements/AgingSummary/_constants.ts +++ b/packages/server/src/services/FinancialStatements/AgingSummary/_constants.ts @@ -2,3 +2,11 @@ export enum AgingSummaryRowType { Contact = 'contact', Total = 'total', } + +export const HtmlTableCss = ` +table tr.row-type--total td{ + font-weight: 500; + border-top: 1px solid #bbb; + border-bottom: 3px double #333; +} +`; diff --git a/packages/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetPdfInjectable.ts b/packages/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetPdfInjectable.ts index 2f776c224..4cbb43e8a 100644 --- a/packages/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetPdfInjectable.ts +++ b/packages/server/src/services/FinancialStatements/BalanceSheet/BalanceSheetPdfInjectable.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { IBalanceSheetQuery } from '@/interfaces'; import { BalanceSheetTableInjectable } from './BalanceSheetTableInjectable'; import { TableSheetPdf } from '../TableSheetPdf'; +import { HtmlTableCustomCss } from './constants'; @Service() export class BalanceSheetPdfInjectable { @@ -27,7 +28,8 @@ export class BalanceSheetPdfInjectable { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/BalanceSheet/constants.ts b/packages/server/src/services/FinancialStatements/BalanceSheet/constants.ts index 8862408a1..5d4cf08b1 100644 --- a/packages/server/src/services/FinancialStatements/BalanceSheet/constants.ts +++ b/packages/server/src/services/FinancialStatements/BalanceSheet/constants.ts @@ -12,3 +12,15 @@ export enum IROW_TYPE { NET_INCOME = 'NET_INCOME', TOTAL = 'TOTAL', } + +export const HtmlTableCustomCss = ` +table tr.row-type--total td { + font-weight: 600; + border-top: 1px solid #bbb; + color: #000; +} +table tr.row-type--total.row-id--assets td, +table tr.row-type--total.row-id--liability-equity td { + border-bottom: 3px double #000; +} +`; diff --git a/packages/server/src/services/FinancialStatements/CashFlow/CashflowTablePdfInjectable.ts b/packages/server/src/services/FinancialStatements/CashFlow/CashflowTablePdfInjectable.ts index 8455028f9..be7cb5382 100644 --- a/packages/server/src/services/FinancialStatements/CashFlow/CashflowTablePdfInjectable.ts +++ b/packages/server/src/services/FinancialStatements/CashFlow/CashflowTablePdfInjectable.ts @@ -2,6 +2,7 @@ import { Inject } from 'typedi'; import { CashflowTableInjectable } from './CashflowTableInjectable'; import { TableSheetPdf } from '../TableSheetPdf'; import { ICashFlowStatementQuery } from '@/interfaces'; +import { HtmlTableCustomCss } from './constants'; export class CashflowTablePdfInjectable { @Inject() @@ -21,13 +22,13 @@ export class CashflowTablePdfInjectable { query: ICashFlowStatementQuery ): Promise { const table = await this.cashflowTable.table(tenantId, query); - const sheetName = 'Cashflow Sheet'; return this.tableSheetPdf.convertToPdf( tenantId, table.table, - sheetName, - table.meta.formattedDateRange + table.meta.sheetName, + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/CashFlow/constants.ts b/packages/server/src/services/FinancialStatements/CashFlow/constants.ts index 58a92ec19..c8a9f348c 100644 --- a/packages/server/src/services/FinancialStatements/CashFlow/constants.ts +++ b/packages/server/src/services/FinancialStatements/CashFlow/constants.ts @@ -1,8 +1,22 @@ - - export const DISPLAY_COLUMNS_BY = { DATE_PERIODS: 'date_periods', TOTAL: 'total', }; -export const MAP_CONFIG = { childrenPath: 'children', pathFormat: 'array' }; \ No newline at end of file +export const MAP_CONFIG = { childrenPath: 'children', pathFormat: 'array' }; +export const HtmlTableCustomCss = ` +table tr.row-type--accounts td { + border-top: 1px solid #bbb; +} +table tr.row-id--cash-end-period { + border-bottom: 3px double #333; +} +table tr.row-type--total { + font-weight: 600; +} +table tr.row-type--total td { + color: #000; +} +table tr.row-type--total:not(:first-child) td { + border-top: 1px solid #bbb; +}`; diff --git a/packages/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryPdf.ts b/packages/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryPdf.ts index b1bff25d8..38d36fd48 100644 --- a/packages/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryPdf.ts +++ b/packages/server/src/services/FinancialStatements/CustomerBalanceSummary/CustomerBalanceSummaryPdf.ts @@ -3,6 +3,7 @@ import { ICustomerBalanceSummaryQuery } from '@/interfaces'; import { TableSheetPdf } from '../TableSheetPdf'; import { CustomerBalanceSummaryTableInjectable } from './CustomerBalanceSummaryTableInjectable'; +import { HtmlTableCustomCss } from './constants'; @Service() export class CustomerBalanceSummaryPdf { @@ -28,7 +29,8 @@ export class CustomerBalanceSummaryPdf { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/CustomerBalanceSummary/constants.ts b/packages/server/src/services/FinancialStatements/CustomerBalanceSummary/constants.ts new file mode 100644 index 000000000..50c3aac24 --- /dev/null +++ b/packages/server/src/services/FinancialStatements/CustomerBalanceSummary/constants.ts @@ -0,0 +1,6 @@ +export const HtmlTableCustomCss = ` +table tr.row-type--total td { + font-weight: 600; + border-top: 1px solid #bbb; + border-bottom: 3px double #333; +}`; diff --git a/packages/server/src/services/FinancialStatements/GeneralLedger/GeneralLedgerPdf.ts b/packages/server/src/services/FinancialStatements/GeneralLedger/GeneralLedgerPdf.ts index f03a26ce7..efe082709 100644 --- a/packages/server/src/services/FinancialStatements/GeneralLedger/GeneralLedgerPdf.ts +++ b/packages/server/src/services/FinancialStatements/GeneralLedger/GeneralLedgerPdf.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { TableSheetPdf } from '../TableSheetPdf'; import { GeneralLedgerTableInjectable } from './GeneralLedgerTableInjectable'; import { IGeneralLedgerSheetQuery } from '@/interfaces'; +import { HtmlTableCustomCss } from './constants'; @Service() export class GeneralLedgerPdf { @@ -27,7 +28,8 @@ export class GeneralLedgerPdf { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/GeneralLedger/constants.ts b/packages/server/src/services/FinancialStatements/GeneralLedger/constants.ts new file mode 100644 index 000000000..26b5ceb8c --- /dev/null +++ b/packages/server/src/services/FinancialStatements/GeneralLedger/constants.ts @@ -0,0 +1,13 @@ +export const HtmlTableCustomCss = ` +table tr:last-child td { + border-bottom: 1px solid #ececec; +} +table tr.row-type--account td, +table tr.row-type--opening-balance td, +table tr.row-type--closing-balance td{ + font-weight: 600; +} +table tr.row-type--closing-balance td { + border-bottom: 1px solid #ececec; +} +`; diff --git a/packages/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsTablePdf.ts b/packages/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsTablePdf.ts index 4128fb3b2..b14b11c80 100644 --- a/packages/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsTablePdf.ts +++ b/packages/server/src/services/FinancialStatements/InventoryDetails/InventoryDetailsTablePdf.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { InventoryDetailsTableInjectable } from './InventoryDetailsTableInjectable'; import { TableSheetPdf } from '../TableSheetPdf'; import { IInventoryDetailsQuery } from '@/interfaces'; +import { HtmlTableCustomCss } from './constant'; @Service() export class InventoryDetailsTablePdf { @@ -27,7 +28,8 @@ export class InventoryDetailsTablePdf { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/InventoryDetails/constant.ts b/packages/server/src/services/FinancialStatements/InventoryDetails/constant.ts new file mode 100644 index 000000000..eeb199236 --- /dev/null +++ b/packages/server/src/services/FinancialStatements/InventoryDetails/constant.ts @@ -0,0 +1,7 @@ +export const HtmlTableCustomCss = ` +table tr.row-type--item td, +table tr.row-type--opening-entry td, +table tr.row-type--closing-entry td{ + font-weight: 500; +} +`; diff --git a/packages/server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheetPdf.ts b/packages/server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheetPdf.ts index 31af8c5f9..449cec9cc 100644 --- a/packages/server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheetPdf.ts +++ b/packages/server/src/services/FinancialStatements/InventoryValuationSheet/InventoryValuationSheetPdf.ts @@ -2,6 +2,7 @@ import { Inject, Service } from "typedi"; import { InventoryValuationSheetTableInjectable } from "./InventoryValuationSheetTableInjectable"; import { TableSheetPdf } from "../TableSheetPdf"; import { IInventoryValuationReportQuery } from "@/interfaces"; +import { HtmlTableCustomCss } from "./_constants"; @Service() @@ -28,7 +29,8 @@ export class InventoryValuationSheetPdf { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } \ No newline at end of file diff --git a/packages/server/src/services/FinancialStatements/InventoryValuationSheet/_constants.ts b/packages/server/src/services/FinancialStatements/InventoryValuationSheet/_constants.ts index a4154f92f..f41136b6f 100644 --- a/packages/server/src/services/FinancialStatements/InventoryValuationSheet/_constants.ts +++ b/packages/server/src/services/FinancialStatements/InventoryValuationSheet/_constants.ts @@ -2,3 +2,11 @@ export enum ROW_TYPE { ITEM = 'ITEM', TOTAL = 'TOTAL', } + +export const HtmlTableCustomCss = ` +table tr.row-type--total td { + border-top: 1px solid #bbb; + font-weight: 600; + border-bottom: 3px double #000; +} +`; diff --git a/packages/server/src/services/FinancialStatements/JournalSheet/JournalSheetPdfInjectable.ts b/packages/server/src/services/FinancialStatements/JournalSheet/JournalSheetPdfInjectable.ts index d3cdd11df..6606d6705 100644 --- a/packages/server/src/services/FinancialStatements/JournalSheet/JournalSheetPdfInjectable.ts +++ b/packages/server/src/services/FinancialStatements/JournalSheet/JournalSheetPdfInjectable.ts @@ -2,6 +2,7 @@ import { IJournalReportQuery } from '@/interfaces'; import { TableSheetPdf } from '../TableSheetPdf'; import { JournalSheetTableInjectable } from './JournalSheetTableInjectable'; import { Inject, Service } from 'typedi'; +import { HtmlTableCustomCss } from './constant'; @Service() export class JournalSheetPdfInjectable { @@ -27,7 +28,8 @@ export class JournalSheetPdfInjectable { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/JournalSheet/constant.ts b/packages/server/src/services/FinancialStatements/JournalSheet/constant.ts new file mode 100644 index 000000000..5f5f975ec --- /dev/null +++ b/packages/server/src/services/FinancialStatements/JournalSheet/constant.ts @@ -0,0 +1,10 @@ +export const HtmlTableCustomCss = ` +table tr.row-type--total td{ + font-weight: 600; +} +table tr td:not(:first-child) { + border-left: 1px solid #ececec; +} +table tr:last-child td { + border-bottom: 1px solid #ececec; +}`; diff --git a/packages/server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossTablePdfInjectable.ts b/packages/server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossTablePdfInjectable.ts index e6348fdf6..4b0ba23de 100644 --- a/packages/server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossTablePdfInjectable.ts +++ b/packages/server/src/services/FinancialStatements/ProfitLossSheet/ProfitLossTablePdfInjectable.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { IProfitLossSheetQuery } from '@/interfaces'; import { ProfitLossSheetTableInjectable } from './ProfitLossSheetTableInjectable'; import { TableSheetPdf } from '../TableSheetPdf'; +import { HtmlTableCustomCss } from './constants'; @Service() export class ProfitLossTablePdfInjectable { @@ -27,7 +28,8 @@ export class ProfitLossTablePdfInjectable { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/ProfitLossSheet/constants.ts b/packages/server/src/services/FinancialStatements/ProfitLossSheet/constants.ts index 56f4a14ba..0bb2a28de 100644 --- a/packages/server/src/services/FinancialStatements/ProfitLossSheet/constants.ts +++ b/packages/server/src/services/FinancialStatements/ProfitLossSheet/constants.ts @@ -18,4 +18,12 @@ export const TOTAL_NODE_TYPES = [ ProfitLossNodeType.ACCOUNTS, ProfitLossNodeType.AGGREGATE, ProfitLossNodeType.EQUATION -]; \ No newline at end of file +]; + +export const HtmlTableCustomCss =` +table tr.row-type--total td { + font-weight: 600; + border-top: 1px solid #bbb; + color: #000; +} +`; \ No newline at end of file diff --git a/packages/server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItemsPdf.ts b/packages/server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItemsPdf.ts index aee73ed99..67e3e7a24 100644 --- a/packages/server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItemsPdf.ts +++ b/packages/server/src/services/FinancialStatements/PurchasesByItems/PurchasesByItemsPdf.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { TableSheetPdf } from '../TableSheetPdf'; import { PurchasesByItemsTableInjectable } from './PurchasesByItemsTableInjectable'; import { IPurchasesByItemsReportQuery } from '@/interfaces/PurchasesByItemsSheet'; +import { HtmlTableCustomCss } from './_types'; @Service() export class PurchasesByItemsPdf { @@ -27,7 +28,8 @@ export class PurchasesByItemsPdf { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/PurchasesByItems/_types.ts b/packages/server/src/services/FinancialStatements/PurchasesByItems/_types.ts index d9fbb7dc0..625c6dff4 100644 --- a/packages/server/src/services/FinancialStatements/PurchasesByItems/_types.ts +++ b/packages/server/src/services/FinancialStatements/PurchasesByItems/_types.ts @@ -2,4 +2,12 @@ export enum ROW_TYPE { TOTAL = 'TOTAL', ITEM = 'ITEM' -} \ No newline at end of file +} + +export const HtmlTableCustomCss = ` +table tr.row-type--total td { + border-top: 1px solid #bbb; + border-bottom: 3px double #000; + font-weight: 600; +} +`; \ No newline at end of file diff --git a/packages/server/src/services/FinancialStatements/SalesByItems/SalesByItemsPdfInjectable.ts b/packages/server/src/services/FinancialStatements/SalesByItems/SalesByItemsPdfInjectable.ts index 68f46e952..874154086 100644 --- a/packages/server/src/services/FinancialStatements/SalesByItems/SalesByItemsPdfInjectable.ts +++ b/packages/server/src/services/FinancialStatements/SalesByItems/SalesByItemsPdfInjectable.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { ISalesByItemsReportQuery } from '@/interfaces'; import { SalesByItemsTableInjectable } from './SalesByItemsTableInjectable'; import { TableSheetPdf } from '../TableSheetPdf'; +import { HtmlTableCustomCss } from './constants'; @Service() export class SalesByItemsPdfInjectable { @@ -27,7 +28,8 @@ export class SalesByItemsPdfInjectable { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/SalesByItems/constants.ts b/packages/server/src/services/FinancialStatements/SalesByItems/constants.ts index 0eb1e2311..cb0b00bae 100644 --- a/packages/server/src/services/FinancialStatements/SalesByItems/constants.ts +++ b/packages/server/src/services/FinancialStatements/SalesByItems/constants.ts @@ -1,6 +1,12 @@ - - export enum ROW_TYPE { ITEM = 'ITEM', TOTAL = 'TOTAL', -} \ No newline at end of file +} + +export const HtmlTableCustomCss = ` +table tr.row-type--total td { + border-top: 1px solid #bbb; + border-bottom: 3px double #000; + font-weight: 600; +} +`; diff --git a/packages/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetPdfInjectsable.ts b/packages/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetPdfInjectsable.ts index 89e1e73f3..b7b53d437 100644 --- a/packages/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetPdfInjectsable.ts +++ b/packages/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetPdfInjectsable.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { ITrialBalanceSheetQuery } from '@/interfaces'; import { TableSheetPdf } from '../TableSheetPdf'; import { TrialBalanceSheetTableInjectable } from './TrialBalanceSheetTableInjectable'; +import { HtmlTableCustomCss } from './_constants'; @Service() export class TrialBalanceSheetPdfInjectable { @@ -27,7 +28,8 @@ export class TrialBalanceSheetPdfInjectable { tenantId, table.table, table.meta.sheetName, - table.meta.formattedDateRange + table.meta.formattedDateRange, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetTable.ts b/packages/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetTable.ts index 5de03eb71..1addd1996 100644 --- a/packages/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetTable.ts +++ b/packages/server/src/services/FinancialStatements/TrialBalanceSheet/TrialBalanceSheetTable.ts @@ -2,7 +2,6 @@ import * as R from 'ramda'; import FinancialSheet from '../FinancialSheet'; import { FinancialTable } from '../FinancialTable'; import { - IBalanceSheetStatementData, ITableColumn, ITableColumnAccessor, ITableRow, diff --git a/packages/server/src/services/FinancialStatements/TrialBalanceSheet/_constants.ts b/packages/server/src/services/FinancialStatements/TrialBalanceSheet/_constants.ts index 91e8c595f..9bc4dfdb0 100644 --- a/packages/server/src/services/FinancialStatements/TrialBalanceSheet/_constants.ts +++ b/packages/server/src/services/FinancialStatements/TrialBalanceSheet/_constants.ts @@ -1,5 +1,12 @@ - export enum IROW_TYPE { ACCOUNT = 'ACCOUNT', TOTAL = 'TOTAL', -} \ No newline at end of file +} + +export const HtmlTableCustomCss = ` +table tr.row-type--total td{ + border-top: 1px solid #bbb; + font-weight: 500; + border-bottom: 3px double #000; +} +`; diff --git a/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummary.ts b/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummary.ts index 2e5e09aa4..6d04461b6 100644 --- a/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummary.ts +++ b/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummary.ts @@ -41,7 +41,7 @@ export class VendorBalanceSummaryReport extends ContactBalanceSummaryReport { /** * Customer section mapper. - * @param {IVendor} vendor + * @param {IVendor} vendor * @returns {IVendorBalanceSummaryVendor} */ private vendorMapper = (vendor: IVendor): IVendorBalanceSummaryVendor => { @@ -58,7 +58,7 @@ export class VendorBalanceSummaryReport extends ContactBalanceSummaryReport { /** * Mappes the vendor model object to vendor balance summary section. - * @param {IVendor[]} vendors - Customers. + * @param {IVendor[]} vendors - Customers. * @returns {IVendorBalanceSummaryVendor[]} */ private vendorsMapper = ( @@ -77,7 +77,7 @@ export class VendorBalanceSummaryReport extends ContactBalanceSummaryReport { /** * Retrieve the vendors sections of the report. - * @param {IVendor} vendors + * @param {IVendor} vendors * @returns {IVendorBalanceSummaryVendor[]} */ private getVendorsSection(vendors: IVendor[]): IVendorBalanceSummaryVendor[] { diff --git a/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryApplication.ts b/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryApplication.ts index 3ce6081f6..c02eac224 100644 --- a/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryApplication.ts +++ b/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryApplication.ts @@ -72,6 +72,5 @@ export class VendorBalanceSummaryApplication { */ public pdf(tenantId: number, query: IVendorBalanceSummaryQuery) { return this.vendorBalanceSummaryPdf.pdf(tenantId, query); - } } diff --git a/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryPdf.ts b/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryPdf.ts index 90e21fbda..f13ffc98c 100644 --- a/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryPdf.ts +++ b/packages/server/src/services/FinancialStatements/VendorBalanceSummary/VendorBalanceSummaryPdf.ts @@ -2,6 +2,7 @@ import { Inject, Service } from 'typedi'; import { IVendorBalanceSummaryQuery } from '@/interfaces'; import { TableSheetPdf } from '../TableSheetPdf'; import { VendorBalanceSummaryTableInjectable } from './VendorBalanceSummaryTableInjectable'; +import { HtmlTableCustomCss } from './constants'; @Service() export class VendorBalanceSummaryPdf { @@ -22,13 +23,13 @@ export class VendorBalanceSummaryPdf { query: IVendorBalanceSummaryQuery ): Promise { const table = await this.vendorBalanceSummaryTable.table(tenantId, query); - return this.tableSheetPdf.convertToPdf( tenantId, table.table, table.meta.sheetName, - table.meta.formattedAsDate + table.meta.formattedAsDate, + HtmlTableCustomCss ); } } diff --git a/packages/server/src/services/FinancialStatements/VendorBalanceSummary/constants.ts b/packages/server/src/services/FinancialStatements/VendorBalanceSummary/constants.ts new file mode 100644 index 000000000..50c3aac24 --- /dev/null +++ b/packages/server/src/services/FinancialStatements/VendorBalanceSummary/constants.ts @@ -0,0 +1,6 @@ +export const HtmlTableCustomCss = ` +table tr.row-type--total td { + font-weight: 600; + border-top: 1px solid #bbb; + border-bottom: 3px double #333; +}`;