From 6e7419da6768c393844aaf9c06f71f1fa0405ee2 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sun, 21 Jun 2026 19:08:20 +0100 Subject: [PATCH] Updated invoice schema to support dynamic reference types for 'from' and 'to' fields, and modified related service handlers to accommodate new 'fromType' and 'toType' properties. --- src/database/schemas/finance/invoice.schema.js | 6 ++++-- src/services/finance/invoices.js | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/database/schemas/finance/invoice.schema.js b/src/database/schemas/finance/invoice.schema.js index 89cb964..ed7e475 100644 --- a/src/database/schemas/finance/invoice.schema.js +++ b/src/database/schemas/finance/invoice.schema.js @@ -33,8 +33,10 @@ const invoiceSchema = new Schema( shippingAmountWithTax: { type: Number, required: true, default: 0 }, grandTotalAmount: { type: Number, required: true, default: 0 }, totalTaxAmount: { type: Number, required: true, default: 0 }, - from: { type: Schema.Types.ObjectId, ref: 'vendor', required: false }, - to: { type: Schema.Types.ObjectId, ref: 'client', required: false }, + from: { type: Schema.Types.ObjectId, refPath: 'fromType', required: false }, + fromType: { type: String, required: false }, + to: { type: Schema.Types.ObjectId, refPath: 'toType', required: false }, + toType: { type: String, required: false }, state: { type: { type: String, required: true, default: 'draft' }, }, diff --git a/src/services/finance/invoices.js b/src/services/finance/invoices.js index 6562cad..8d3b460 100644 --- a/src/services/finance/invoices.js +++ b/src/services/finance/invoices.js @@ -142,6 +142,8 @@ export const editInvoiceRouteHandler = async (req, res) => { invoiceShipments: req.body.invoiceShipments, from: req.body.from, to: req.body.to, + fromType: req.body.fromType, + toType: req.body.toType, }; // Create audit log before updating const result = await editObject({ @@ -276,6 +278,8 @@ export const newInvoiceRouteHandler = async (req, res) => { invoiceShipments: invoiceShipments, from: req.body.from, to: req.body.to, + fromType: req.body.fromType, + toType: req.body.toType, }; const result = await newObject({ model: invoiceModel,