diff --git a/packages/server/src/api/controllers/Dashboard/index.ts b/packages/server/src/api/controllers/Dashboard/index.ts index 027f151ac..47f3a5396 100644 --- a/packages/server/src/api/controllers/Dashboard/index.ts +++ b/packages/server/src/api/controllers/Dashboard/index.ts @@ -5,7 +5,7 @@ import DashboardService from '@/services/Dashboard/DashboardService'; @Service() export default class DashboardMetaController { @Inject() - dashboardService: DashboardService; + private dashboardService: DashboardService; /** * Constructor router. diff --git a/packages/server/src/lib/Transformer/Transformer.ts b/packages/server/src/lib/Transformer/Transformer.ts index dfec3391f..185e09c16 100644 --- a/packages/server/src/lib/Transformer/Transformer.ts +++ b/packages/server/src/lib/Transformer/Transformer.ts @@ -149,13 +149,19 @@ export class Transformer { return this.excludeAttributes().length > 0; }; + private dateFormat = 'YYYY MMM DD'; + + setDateFormat(format: string) { + this.dateFormat = format; + } + /** * * @param date * @returns */ protected formatDate(date) { - return date ? moment(date).format('YYYY/MM/DD') : ''; + return date ? moment(date).format(this.dateFormat) : ''; } /** @@ -193,6 +199,7 @@ export class Transformer { ) { transformer.setOptions(options); transformer.setContext(this.context); + transformer.setDateFormat(this.dateFormat); return transformer.work(obj); } diff --git a/packages/server/src/lib/Transformer/TransformerInjectable.ts b/packages/server/src/lib/Transformer/TransformerInjectable.ts index 7343198de..128e3f9bc 100644 --- a/packages/server/src/lib/Transformer/TransformerInjectable.ts +++ b/packages/server/src/lib/Transformer/TransformerInjectable.ts @@ -24,6 +24,17 @@ export class TransformerInjectable { }; } + /** + * Retrieves the given tenatn date format. + * @param {number} tenantId + * @returns {string} + */ + async getTenantDateFormat(tenantId: number) { + const metadata = await TenantMetadata.query().findOne('tenantId', tenantId); + + return metadata.dateFormat; + } + /** * Transformes the given transformer after inject the tenant context. * @param {number} tenantId @@ -41,7 +52,11 @@ export class TransformerInjectable { if (!isNull(tenantId)) { const context = await this.getApplicationContext(tenantId); transformer.setContext(context); + + const dateFormat = await this.getTenantDateFormat(tenantId); + transformer.setDateFormat(dateFormat); } + transformer.setOptions(options); return transformer.work(object); diff --git a/packages/server/src/services/Purchases/BillPayments/BillPaymentEntryTransformer.ts b/packages/server/src/services/Purchases/BillPayments/BillPaymentEntryTransformer.ts index 19dcbacb5..43edf0571 100644 --- a/packages/server/src/services/Purchases/BillPayments/BillPaymentEntryTransformer.ts +++ b/packages/server/src/services/Purchases/BillPayments/BillPaymentEntryTransformer.ts @@ -1,5 +1,6 @@ import { Transformer } from '@/lib/Transformer/Transformer'; import { formatNumber } from '@/utils'; +import { PurchaseInvoiceTransformer } from '../Bills/PurchaseInvoiceTransformer'; export class BillPaymentEntryTransformer extends Transformer { /** @@ -7,7 +8,14 @@ export class BillPaymentEntryTransformer extends Transformer { * @returns {Array} */ public includeAttributes = (): string[] => { - return ['paymentAmountFormatted']; + return ['paymentAmountFormatted', 'bill']; + }; + + /** + * Retreives the + */ + protected bill = (entry) => { + return this.item(entry.bill, new PurchaseInvoiceTransformer()); }; /** diff --git a/packages/webapp/src/containers/Accounting/JournalsLanding/utils.tsx b/packages/webapp/src/containers/Accounting/JournalsLanding/utils.tsx index 3bb0aa798..68030f0d4 100644 --- a/packages/webapp/src/containers/Accounting/JournalsLanding/utils.tsx +++ b/packages/webapp/src/containers/Accounting/JournalsLanding/utils.tsx @@ -16,8 +16,7 @@ export const useManualJournalsColumns = () => { { id: 'date', Header: intl.get('date'), - accessor: 'date', - Cell: FormatDateCell, + accessor: 'formatted_date', width: 115, className: 'date', clickable: true, diff --git a/packages/webapp/src/containers/Drawers/BillDrawer/BillDetailHeader.tsx b/packages/webapp/src/containers/Drawers/BillDrawer/BillDetailHeader.tsx index 34e0418a3..dea7b7c96 100644 --- a/packages/webapp/src/containers/Drawers/BillDrawer/BillDetailHeader.tsx +++ b/packages/webapp/src/containers/Drawers/BillDrawer/BillDetailHeader.tsx @@ -41,19 +41,23 @@ export default function BillDetailHeader() { - + {bill.formatted_bill_date} + - + {bill.formatted_due_date} + {bill.vendor?.display_name} + {defaultTo(bill.bill_number, '-')} + - + {creditNote.formatted_credit_note_date} }> - {moment(expense.payment_date).format('YYYY MMM DD')} + {expense.formatted_payment_date} }> diff --git a/packages/webapp/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailHeader.tsx b/packages/webapp/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailHeader.tsx index a79b6b22c..10756938e 100644 --- a/packages/webapp/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailHeader.tsx +++ b/packages/webapp/src/containers/Drawers/InvoiceDetailDrawer/InvoiceDetailHeader.tsx @@ -43,11 +43,11 @@ export default function InvoiceDetailHeader() { - + {invoice.invoice_date_formatted} - + {invoice.due_date_formatted} diff --git a/packages/webapp/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.tsx b/packages/webapp/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.tsx index 102f62b53..de31d42f6 100644 --- a/packages/webapp/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.tsx +++ b/packages/webapp/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.tsx @@ -37,7 +37,7 @@ export default function PaymentMadeDetailHeader() { } + children={paymentMade.formatted_payment_date} /> { () => [ { Header: intl.get('date'), - accessor: (row) => moment(row.date).format('YYYY MMM DD'), + accessor: 'bill.formatted_bill_date', width: 100, disableSortBy: true, className: 'date', diff --git a/packages/webapp/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailHeader.tsx b/packages/webapp/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailHeader.tsx index df251fed2..bddb4c313 100644 --- a/packages/webapp/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailHeader.tsx +++ b/packages/webapp/src/containers/Drawers/PaymentReceiveDetailDrawer/PaymentReceiveDetailHeader.tsx @@ -36,7 +36,7 @@ export default function PaymentReceiveDetailHeader() { } + children={paymentReceive.formatted_payment_date} /> { () => [ { Header: intl.get('date'), - accessor: (row) => moment(row.payment_date).format('YYYY MMM DD'), + accessor: 'invoice.invoice_date_formatted', width: 100, className: 'date', disableSortBy: true, diff --git a/packages/webapp/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailHeader.tsx b/packages/webapp/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailHeader.tsx index 2d350f660..e5ddfa6ab 100644 --- a/packages/webapp/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailHeader.tsx +++ b/packages/webapp/src/containers/Drawers/ReceiptDetailDrawer/ReceiptDetailHeader.tsx @@ -54,11 +54,11 @@ export default function ReceiptDetailHeader() { } + children={receipt.formatted_receipt_date} /> } + children={receipt.formatted_closed_at_date} /> - + {vendorCredit.formatted_vendor_credit_date} { return React.useMemo( () => [ { Header: intl.get('date'), - accessor: ({ formatted_date }) => - moment(formatted_date).format('YYYY MMM DD'), + accessor: 'date.formatted_date', width: 140, className: 'date', textOverview: true, diff --git a/packages/webapp/src/containers/Purchases/Bills/BillsLanding/components.tsx b/packages/webapp/src/containers/Purchases/Bills/BillsLanding/components.tsx index 167f145aa..f23f2f085 100644 --- a/packages/webapp/src/containers/Purchases/Bills/BillsLanding/components.tsx +++ b/packages/webapp/src/containers/Purchases/Bills/BillsLanding/components.tsx @@ -161,8 +161,7 @@ export function useBillsTableColumns() { { id: 'bill_date', Header: intl.get('bill_date'), - accessor: 'bill_date', - Cell: FormatDateCell, + accessor: 'formatted_bill_date', width: 110, className: 'bill_date', clickable: true, diff --git a/packages/webapp/src/containers/Purchases/CreditNotes/CreditNotesLanding/components.tsx b/packages/webapp/src/containers/Purchases/CreditNotes/CreditNotesLanding/components.tsx index 800f2ef8a..69f7a482c 100644 --- a/packages/webapp/src/containers/Purchases/CreditNotes/CreditNotesLanding/components.tsx +++ b/packages/webapp/src/containers/Purchases/CreditNotes/CreditNotesLanding/components.tsx @@ -5,14 +5,7 @@ import clsx from 'classnames'; import { Intent, Tag, Menu, MenuItem, MenuDivider } from '@blueprintjs/core'; import { CLASSES } from '@/constants/classes'; -import { - FormatDateCell, - FormattedMessage as T, - Choose, - If, - Icon, - Can, -} from '@/components'; +import { FormattedMessage as T, Choose, If, Icon, Can } from '@/components'; import { safeCallback } from '@/utils'; import { VendorCreditAction, AbilitySubject } from '@/constants/abilityOption'; @@ -119,7 +112,6 @@ export function useVendorsCreditNoteTableColumns() { id: 'credit_date', Header: intl.get('date'), accessor: 'formatted_vendor_credit_date', - Cell: FormatDateCell, width: 110, className: 'credit_date', clickable: true, diff --git a/packages/webapp/src/containers/Purchases/PaymentMades/PaymentsLanding/components.tsx b/packages/webapp/src/containers/Purchases/PaymentMades/PaymentsLanding/components.tsx index 2305a9e49..c7291d222 100644 --- a/packages/webapp/src/containers/Purchases/PaymentMades/PaymentsLanding/components.tsx +++ b/packages/webapp/src/containers/Purchases/PaymentMades/PaymentsLanding/components.tsx @@ -11,7 +11,7 @@ import { Position, } from '@blueprintjs/core'; -import { Icon, Money, FormatDateCell, Can } from '@/components'; +import { Icon, Money, Can } from '@/components'; import { PaymentMadeAction, AbilitySubject } from '@/constants/abilityOption'; import { safeCallback } from '@/utils'; @@ -29,7 +29,7 @@ export function ActionsMenu({ }) { return ( - } text={intl.get('view_details')} onClick={safeCallback(onViewDetails, original)} @@ -79,8 +79,7 @@ export function usePaymentMadesTableColumns() { { id: 'payment_date', Header: intl.get('payment_date'), - Cell: FormatDateCell, - accessor: 'payment_date', + accessor: 'formatted_payment_date', width: 140, className: 'payment_date', clickable: true, diff --git a/packages/webapp/src/containers/Sales/CreditNotes/CreditNotesLanding/components.tsx b/packages/webapp/src/containers/Sales/CreditNotes/CreditNotesLanding/components.tsx index be9436ca1..864121cac 100644 --- a/packages/webapp/src/containers/Sales/CreditNotes/CreditNotesLanding/components.tsx +++ b/packages/webapp/src/containers/Sales/CreditNotes/CreditNotesLanding/components.tsx @@ -5,7 +5,6 @@ import clsx from 'classnames'; import { Intent, Tag, Menu, MenuItem, MenuDivider } from '@blueprintjs/core'; import { CLASSES } from '@/constants/classes'; import { - FormatDateCell, FormattedMessage as T, Choose, If, @@ -112,7 +111,6 @@ export function useCreditNoteTableColumns() { id: 'credit_date', Header: intl.get('credit_note.column.credit_date'), accessor: 'formatted_credit_note_date', - Cell: FormatDateCell, width: 110, className: 'credit_date', clickable: true, diff --git a/packages/webapp/src/containers/Sales/Estimates/EstimatesLanding/components.tsx b/packages/webapp/src/containers/Sales/Estimates/EstimatesLanding/components.tsx index 5edfd9051..0c55e9bc7 100644 --- a/packages/webapp/src/containers/Sales/Estimates/EstimatesLanding/components.tsx +++ b/packages/webapp/src/containers/Sales/Estimates/EstimatesLanding/components.tsx @@ -164,8 +164,7 @@ export function useEstiamtesTableColumns() { { id: 'estimate_date', Header: intl.get('estimate_date'), - accessor: 'estimate_date', - Cell: FormatDateCell, + accessor: 'formatted_estimate_date', width: 140, className: 'estimate_date', clickable: true, diff --git a/packages/webapp/src/containers/Sales/Invoices/InvoicesLanding/components.tsx b/packages/webapp/src/containers/Sales/Invoices/InvoicesLanding/components.tsx index 2739ad9e5..ca458f00f 100644 --- a/packages/webapp/src/containers/Sales/Invoices/InvoicesLanding/components.tsx +++ b/packages/webapp/src/containers/Sales/Invoices/InvoicesLanding/components.tsx @@ -128,7 +128,7 @@ export function ActionsMenu({ onQuick, onViewDetails, onPrint, - onSendMail + onSendMail, }, row: { original }, }) { @@ -202,8 +202,7 @@ export function useInvoicesTableColumns() { { id: 'invoice_date', Header: intl.get('invoice_date'), - accessor: 'invoice_date', - Cell: FormatDateCell, + accessor: 'invoice_date_formatted', width: 110, className: 'invoice_date', clickable: true, diff --git a/packages/webapp/src/containers/Sales/PaymentReceives/PaymentsLanding/components.tsx b/packages/webapp/src/containers/Sales/PaymentReceives/PaymentsLanding/components.tsx index fd6aec581..1b800c42d 100644 --- a/packages/webapp/src/containers/Sales/PaymentReceives/PaymentsLanding/components.tsx +++ b/packages/webapp/src/containers/Sales/PaymentReceives/PaymentsLanding/components.tsx @@ -90,8 +90,7 @@ export function usePaymentReceivesColumns() { { id: 'payment_date', Header: intl.get('payment_date'), - accessor: 'payment_date', - Cell: FormatDateCell, + accessor: 'formatted_payment_date', width: 140, className: 'payment_date', clickable: true, diff --git a/packages/webapp/src/containers/Sales/Receipts/ReceiptsLanding/components.tsx b/packages/webapp/src/containers/Sales/Receipts/ReceiptsLanding/components.tsx index e76b2d9c6..f26e18ac9 100644 --- a/packages/webapp/src/containers/Sales/Receipts/ReceiptsLanding/components.tsx +++ b/packages/webapp/src/containers/Sales/Receipts/ReceiptsLanding/components.tsx @@ -119,8 +119,7 @@ export function useReceiptsTableColumns() { { id: 'receipt_date', Header: intl.get('receipt_date'), - accessor: 'receipt_date', - Cell: FormatDateCell, + accessor: 'formatted_receipt_date', width: 140, className: 'receipt_date', clickable: true,