feat: resource tables printing

This commit is contained in:
Ahmed Bouhuolia
2024-06-02 13:15:56 +02:00
parent 79be4266bb
commit f15fecde54
11 changed files with 52 additions and 43 deletions

View File

@@ -26,7 +26,6 @@ export class ExportController extends BaseController {
], ],
this.validationResult, this.validationResult,
this.export.bind(this), this.export.bind(this),
this.catchServiceErrors
); );
return router; return router;
} }
@@ -85,26 +84,4 @@ export class ExportController extends BaseController {
next(error); next(error);
} }
} }
/**
* Transforms service errors to response.
* @param {Error}
* @param {Request} req
* @param {Response} res
* @param {ServiceError} error
*/
private catchServiceErrors(
error,
req: Request,
res: Response,
next: NextFunction
) {
if (error instanceof ServiceError) {
return res.status(400).send({
errors: [{ type: error.errorType }],
});
}
next(error);
}
} }

View File

@@ -3,7 +3,7 @@ exports.up = function (knex) {
table.increments('id').primary(); table.increments('id').primary();
table.string('key').notNullable(); table.string('key').notNullable();
table.string('mime_type').notNullable(); table.string('mime_type').notNullable();
table.integer('size').unsigned().notNullable(); table.integer('size').unsigned();
table.string('origin_name'); table.string('origin_name');
table.timestamps(); table.timestamps();
}); });

View File

@@ -10,6 +10,9 @@ export default {
importAggregator: 'group', importAggregator: 'group',
importAggregateOn: 'entries', importAggregateOn: 'entries',
importAggregateBy: 'billNumber', importAggregateBy: 'billNumber',
print: {
pageTitle: 'Bills',
},
fields: { fields: {
vendor: { vendor: {
name: 'bill.field.vendor', name: 'bill.field.vendor',
@@ -83,6 +86,10 @@ export default {
}, },
}, },
columns: { columns: {
billDate: {
name: 'Date',
accessor: 'formattedBillDate',
},
billNumber: { billNumber: {
name: 'Bill No.', name: 'Bill No.',
type: 'text', type: 'text',
@@ -91,13 +98,10 @@ export default {
name: 'Reference No.', name: 'Reference No.',
type: 'text', type: 'text',
}, },
billDate: {
name: 'Date',
type: 'date',
},
dueDate: { dueDate: {
name: 'Due Date', name: 'Due Date',
type: 'date', type: 'date',
accessor: 'formattedDueDate',
}, },
vendorId: { vendorId: {
name: 'Vendor', name: 'Vendor',
@@ -111,10 +115,12 @@ export default {
exchangeRate: { exchangeRate: {
name: 'Exchange Rate', name: 'Exchange Rate',
type: 'number', type: 'number',
printable: false,
}, },
currencyCode: { currencyCode: {
name: 'Currency Code', name: 'Currency Code',
type: 'text', type: 'text',
printable: false,
}, },
dueAmount: { dueAmount: {
name: 'Due Amount', name: 'Due Amount',
@@ -127,10 +133,12 @@ export default {
note: { note: {
name: 'Note', name: 'Note',
type: 'text', type: 'text',
printable: false,
}, },
open: { open: {
name: 'Open', name: 'Open',
type: 'boolean', type: 'boolean',
printable: false,
}, },
entries: { entries: {
name: 'Entries', name: 'Entries',

View File

@@ -77,6 +77,7 @@ export default {
paymentDate: { paymentDate: {
name: 'bill_payment.field.payment_date', name: 'bill_payment.field.payment_date',
type: 'date', type: 'date',
accessor: 'formattedPaymentDate'
}, },
paymentNumber: { paymentNumber: {
name: 'bill_payment.field.payment_number', name: 'bill_payment.field.payment_number',
@@ -94,14 +95,17 @@ export default {
currencyCode: { currencyCode: {
name: 'Currency Code', name: 'Currency Code',
type: 'text', type: 'text',
printable: false,
}, },
exchangeRate: { exchangeRate: {
name: 'bill_payment.field.exchange_rate', name: 'bill_payment.field.exchange_rate',
type: 'number', type: 'number',
printable: false,
}, },
statement: { statement: {
name: 'bill_payment.field.note', name: 'bill_payment.field.note',
type: 'text', type: 'text',
printable: false,
}, },
reference: { reference: {
name: 'bill_payment.field.reference', name: 'bill_payment.field.reference',

View File

@@ -20,6 +20,10 @@ export default {
importAggregateOn: 'entries', importAggregateOn: 'entries',
importAggregateBy: 'creditNoteNumber', importAggregateBy: 'creditNoteNumber',
print: {
pageTitle: 'Credit Notes',
},
fields: { fields: {
customer: { customer: {
name: 'credit_note.field.customer', name: 'credit_note.field.customer',
@@ -88,36 +92,34 @@ export default {
columns: { columns: {
customer: { customer: {
name: 'Customer', name: 'Customer',
type: 'relation',
accessor: 'customer.displayName', accessor: 'customer.displayName',
}, },
exchangeRate: { exchangeRate: {
name: 'Exchange Rate', name: 'Exchange Rate',
type: 'number', printable: false,
}, },
creditNoteDate: { creditNoteDate: {
name: 'Credit Note Date', name: 'Credit Note Date',
type: 'date', accessor: 'formattedCreditNoteDate'
}, },
referenceNo: { referenceNo: {
name: 'Reference No.', name: 'Reference No.',
type: 'text',
}, },
note: { note: {
name: 'Note', name: 'Note',
type: 'text',
}, },
termsConditions: { termsConditions: {
name: 'Terms & Conditions', name: 'Terms & Conditions',
type: 'text', printable: false,
}, },
creditNoteNumber: { creditNoteNumber: {
name: 'Credit Note Number', name: 'Credit Note Number',
type: 'text', printable: false,
}, },
open: { open: {
name: 'Open', name: 'Open',
type: 'boolean', type: 'boolean',
printable: false,
}, },
entries: { entries: {
name: 'Entries', name: 'Entries',

View File

@@ -6,6 +6,9 @@ export default {
sortField: 'name', sortField: 'name',
sortOrder: 'DESC', sortOrder: 'DESC',
}, },
print: {
pageTitle: 'Items',
},
fields: { fields: {
type: { type: {
name: 'item.field.type', name: 'item.field.type',

View File

@@ -67,10 +67,12 @@ export default {
paymentDate: { paymentDate: {
name: 'payment_receive.field.payment_date', name: 'payment_receive.field.payment_date',
type: 'date', type: 'date',
accessor: 'formattedPaymentDate',
}, },
amount: { amount: {
name: 'payment_receive.field.amount', name: 'payment_receive.field.amount',
type: 'number', type: 'number',
accessor: 'formattedAmount'
}, },
referenceNo: { referenceNo: {
name: 'payment_receive.field.reference_no', name: 'payment_receive.field.reference_no',
@@ -88,10 +90,12 @@ export default {
statement: { statement: {
name: 'payment_receive.field.statement', name: 'payment_receive.field.statement',
type: 'text', type: 'text',
printable: false,
}, },
created_at: { created_at: {
name: 'payment_receive.field.created_at', name: 'payment_receive.field.created_at',
type: 'date', type: 'date',
printable: false,
}, },
}, },
fields2: { fields2: {

View File

@@ -11,6 +11,10 @@ export default {
importAggregator: 'group', importAggregator: 'group',
importAggregateOn: 'entries', importAggregateOn: 'entries',
importAggregateBy: 'receiptNumber', importAggregateBy: 'receiptNumber',
print: {
pageTitle: 'Sale Receipts',
},
fields: { fields: {
amount: { amount: {
name: 'receipt.field.amount', name: 'receipt.field.amount',
@@ -81,11 +85,6 @@ export default {
}, },
}, },
columns: { columns: {
amount: {
name: 'receipt.field.amount',
column: 'amount',
type: 'number',
},
depositAccount: { depositAccount: {
name: 'receipt.field.deposit_account', name: 'receipt.field.deposit_account',
type: 'text', type: 'text',
@@ -117,6 +116,11 @@ export default {
type: 'text', type: 'text',
printable: false, printable: false,
}, },
amount: {
name: 'receipt.field.amount',
accessor: 'formattedAmount',
type: 'number',
},
statement: { statement: {
name: 'receipt.field.statement', name: 'receipt.field.statement',
type: 'text', type: 'text',

View File

@@ -20,6 +20,9 @@ export default {
importAggregateOn: 'entries', importAggregateOn: 'entries',
importAggregateBy: 'vendorCreditNumber', importAggregateBy: 'vendorCreditNumber',
print: {
pageTitle: 'Vendor Credits',
},
fields: { fields: {
vendor: { vendor: {
name: 'vendor_credit.field.vendor', name: 'vendor_credit.field.vendor',
@@ -89,6 +92,7 @@ export default {
exchangeRate: { exchangeRate: {
name: 'Echange Rate', name: 'Echange Rate',
type: 'text', type: 'text',
printable: false,
}, },
vendorCreditNumber: { vendorCreditNumber: {
name: 'Vendor Credit No.', name: 'Vendor Credit No.',
@@ -100,7 +104,7 @@ export default {
}, },
vendorCreditDate: { vendorCreditDate: {
name: 'Vendor Credit Date', name: 'Vendor Credit Date',
type: 'date', accessor: 'formattedVendorCreditDate',
}, },
amount: { amount: {
name: 'Amount', name: 'Amount',
@@ -109,10 +113,12 @@ export default {
creditRemaining: { creditRemaining: {
name: 'Credits Remaining', name: 'Credits Remaining',
accessor: 'formattedCreditsRemaining', accessor: 'formattedCreditsRemaining',
printable: false,
}, },
refundedAmount: { refundedAmount: {
name: 'Refunded Amount', name: 'Refunded Amount',
accessor: 'refundedAmount', accessor: 'refundedAmount',
printable: false,
}, },
invoicedAmount: { invoicedAmount: {
name: 'Invoiced Amount', name: 'Invoiced Amount',
@@ -121,10 +127,12 @@ export default {
note: { note: {
name: 'Note', name: 'Note',
type: 'text', type: 'text',
printable: false,
}, },
open: { open: {
name: 'Open', name: 'Open',
type: 'boolean', type: 'boolean',
printable: false,
}, },
entries: { entries: {
name: 'Entries', name: 'Entries',

View File

@@ -92,7 +92,7 @@ function PaymentMadeActionsBar({
}; };
// Handle the print button click. // Handle the print button click.
const handlePrintBtnClick = () => { const handlePrintBtnClick = () => {
downloadExportPdf({ resource: 'PaymentMade' }); downloadExportPdf({ resource: 'BillPayment' });
}; };
return ( return (

View File

@@ -134,7 +134,6 @@ const invalidateResourcesOnImport = (
queryClient: QueryClient, queryClient: QueryClient,
resource: string, resource: string,
) => { ) => {
debugger;
switch (resource) { switch (resource) {
case 'Item': case 'Item':
queryClient.invalidateQueries(T.ITEMS); queryClient.invalidateQueries(T.ITEMS);