diff --git a/packages/server/src/api/controllers/Sales/SalesInvoices.ts b/packages/server/src/api/controllers/Sales/SalesInvoices.ts index 69b00a576..389c8b4d2 100644 --- a/packages/server/src/api/controllers/Sales/SalesInvoices.ts +++ b/packages/server/src/api/controllers/Sales/SalesInvoices.ts @@ -281,6 +281,13 @@ export default class SaleInvoicesController extends BaseController { check('payment_methods').optional({ nullable: true }).isArray(), check('payment_methods.*.payment_integration_id').exists().toInt(), check('payment_methods.*.enable').exists().isBoolean(), + + // Discount + check('discount').optional({ nullable: true }).isNumeric().toFloat(), + check('discount_type').optional({ nullable: true }).isString().trim(), + + // Adjustments + check('adjustment').optional({ nullable: true }).isArray(), ]; } diff --git a/packages/server/src/database/migrations/20241128080734_add_discount_to_invoices_table.js b/packages/server/src/database/migrations/20241128080734_add_discount_to_invoices_table.js new file mode 100644 index 000000000..a3cc3f2c0 --- /dev/null +++ b/packages/server/src/database/migrations/20241128080734_add_discount_to_invoices_table.js @@ -0,0 +1,23 @@ +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.up = function (knex) { + return knex.schema.alterTable('sales_invoices', (table) => { + table.decimal('discount', 10, 2).nullable().after('credited_amount'); + table.string('discount_type').nullable().after('discount'); + table.decimal('adjustments', 10, 2).nullable().after('discount_type'); + }); +}; + +/** + * @param { import("knex").Knex } knex + * @returns { Promise } + */ +exports.down = function (knex) { + return knex.schema.alterTable('sale_invoices', (table) => { + table.dropColumn('discount'); + table.dropColumn('discount_type'); + table.dropColumn('adjustments'); + }); +}; diff --git a/packages/server/src/interfaces/SaleInvoice.ts b/packages/server/src/interfaces/SaleInvoice.ts index c3bdcde33..33f0fa14c 100644 --- a/packages/server/src/interfaces/SaleInvoice.ts +++ b/packages/server/src/interfaces/SaleInvoice.ts @@ -102,6 +102,13 @@ export interface ISaleInvoiceDTO { isInclusiveTax?: boolean; attachments?: AttachmentLinkDTO[]; + + // # Discount + discount?: number; + discountType?: string; + + // # Adjustments + adjustments?: string; } export interface ISaleInvoiceCreateDTO extends ISaleInvoiceDTO {