diff --git a/src/services/finance/invoices.js b/src/services/finance/invoices.js index 2f999dc..c37bf47 100644 --- a/src/services/finance/invoices.js +++ b/src/services/finance/invoices.js @@ -21,6 +21,16 @@ import { shipmentModel } from '../../database/schemas/inventory/shipment.schema. const logger = log4js.getLogger('Invoices'); logger.level = config.server.logLevel; +const INVOICE_POPULATE = [ + { path: 'to', strictPopulate: false, ref: 'toType' }, + { path: 'from', strictPopulate: false, ref: 'fromType' }, + { path: 'order' }, + { path: 'invoiceOrderItems.taxRate' }, + { path: 'invoiceShipments.taxRate' }, + { path: 'invoiceOrderItems.orderItem' }, + { path: 'invoiceShipments.shipment' }, +]; + export const listInvoicesRouteHandler = async ( req, res, @@ -93,19 +103,10 @@ export const searchInvoicesRouteHandler = async (req, res, search) => { export const getInvoiceRouteHandler = async (req, res) => { const id = req.params.id; - const populateFields = [ - { path: 'to', strictPopulate: false, ref: 'toType' }, - { path: 'from', strictPopulate: false, ref: 'fromType' }, - { path: 'order' }, - { path: 'invoiceOrderItems.taxRate' }, - { path: 'invoiceShipments.taxRate' }, - { path: 'invoiceOrderItems.orderItem' }, - { path: 'invoiceShipments.shipment' }, - ]; const result = await getObject({ model: invoiceModel, id, - populate: populateFields, + populate: INVOICE_POPULATE, }); if (result?.error) { logger.warn(`Invoice not found with supplied id.`); @@ -158,6 +159,7 @@ export const editInvoiceRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: INVOICE_POPULATE, }); if (result.error) { diff --git a/src/services/finance/payments.js b/src/services/finance/payments.js index d777bcc..0d8e1a7 100644 --- a/src/services/finance/payments.js +++ b/src/services/finance/payments.js @@ -20,6 +20,8 @@ import { invoiceModel } from '../../database/schemas/finance/invoice.schema.js'; const logger = log4js.getLogger('Payments'); logger.level = config.server.logLevel; +const PAYMENT_POPULATE = [{ path: 'vendor' }, { path: 'client' }, { path: 'invoice' }]; + export const listPaymentsRouteHandler = async ( req, res, @@ -90,11 +92,10 @@ export const searchPaymentsRouteHandler = async (req, res, search) => { export const getPaymentRouteHandler = async (req, res) => { const id = req.params.id; - const populateFields = [{ path: 'vendor' }, { path: 'client' }, { path: 'invoice' }]; const result = await getObject({ model: paymentModel, id, - populate: populateFields, + populate: PAYMENT_POPULATE, }); if (result?.error) { logger.warn(`Payment not found with supplied id.`); @@ -140,6 +141,7 @@ export const editPaymentRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: PAYMENT_POPULATE, }); if (result.error) { diff --git a/src/services/inventory/filamentstocks.js b/src/services/inventory/filamentstocks.js index d7fe464..ab985f7 100644 --- a/src/services/inventory/filamentstocks.js +++ b/src/services/inventory/filamentstocks.js @@ -120,6 +120,11 @@ export const editFilamentStockRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: [ + { path: 'filament' }, + { path: 'filamentSku', populate: 'filament' }, + { path: 'stockLocation' }, + ], }); if (result.error) { diff --git a/src/services/inventory/orderitems.js b/src/services/inventory/orderitems.js index d104722..11b4d0e 100644 --- a/src/services/inventory/orderitems.js +++ b/src/services/inventory/orderitems.js @@ -18,6 +18,53 @@ import { const logger = log4js.getLogger('Order Items'); logger.level = config.server.logLevel; +const ORDER_ITEM_POPULATE = [ + { + path: 'order', + }, + { + path: 'taxRate', + strictPopulate: false, + }, + { + path: 'item', + populate: [ + { path: 'costTaxRate', strictPopulate: false }, + { path: 'priceTaxRate', strictPopulate: false }, + ], + strictPopulate: false, + }, + { + path: 'sku', + strictPopulate: false, + populate: [ + { + path: 'filament', + populate: { path: 'costTaxRate', strictPopulate: false }, + strictPopulate: false, + }, + { + path: 'part', + populate: [ + { path: 'costTaxRate', strictPopulate: false }, + { path: 'priceTaxRate', strictPopulate: false }, + ], + strictPopulate: false, + }, + { + path: 'product', + populate: [ + { path: 'costTaxRate', strictPopulate: false }, + { path: 'priceTaxRate', strictPopulate: false }, + ], + strictPopulate: false, + }, + { path: 'costTaxRate', strictPopulate: false }, + { path: 'priceTaxRate', strictPopulate: false }, + ], + }, +]; + export const listOrderItemsRouteHandler = async ( req, res, @@ -137,52 +184,7 @@ export const getOrderItemRouteHandler = async (req, res) => { const result = await getObject({ model: orderItemModel, id, - populate: [ - { - path: 'order', - }, - { - path: 'taxRate', - strictPopulate: false, - }, - { - path: 'item', - populate: [ - { path: 'costTaxRate', strictPopulate: false }, - { path: 'priceTaxRate', strictPopulate: false }, - ], - strictPopulate: false, - }, - { - path: 'sku', - strictPopulate: false, - populate: [ - { - path: 'filament', - populate: { path: 'costTaxRate', strictPopulate: false }, - strictPopulate: false, - }, - { - path: 'part', - populate: [ - { path: 'costTaxRate', strictPopulate: false }, - { path: 'priceTaxRate', strictPopulate: false }, - ], - strictPopulate: false, - }, - { - path: 'product', - populate: [ - { path: 'costTaxRate', strictPopulate: false }, - { path: 'priceTaxRate', strictPopulate: false }, - ], - strictPopulate: false, - }, - { path: 'costTaxRate', strictPopulate: false }, - { path: 'priceTaxRate', strictPopulate: false }, - ], - }, - ], + populate: ORDER_ITEM_POPULATE, }); if (result?.error) { logger.warn(`Order Item not found with supplied id.`); @@ -247,6 +249,7 @@ export const editOrderItemRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ORDER_ITEM_POPULATE, }); if (result.error) { diff --git a/src/services/inventory/partstocks.js b/src/services/inventory/partstocks.js index c7bafef..3b326ec 100644 --- a/src/services/inventory/partstocks.js +++ b/src/services/inventory/partstocks.js @@ -110,6 +110,7 @@ export const editPartStockRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: [{ path: 'partSku' }, { path: 'stockLocation' }, { path: 'source' }], }); if (result.error) { diff --git a/src/services/inventory/productstocks.js b/src/services/inventory/productstocks.js index 7fbbeca..274caef 100644 --- a/src/services/inventory/productstocks.js +++ b/src/services/inventory/productstocks.js @@ -142,6 +142,12 @@ export const editProductStockRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: [ + { path: 'partStocks.partSku' }, + { path: 'partStocks.partStock' }, + { path: 'productSku' }, + { path: 'stockLocation' }, + ], }); if (result.error) { diff --git a/src/services/inventory/purchaseorders.js b/src/services/inventory/purchaseorders.js index 353ae30..8b7d12d 100644 --- a/src/services/inventory/purchaseorders.js +++ b/src/services/inventory/purchaseorders.js @@ -132,6 +132,7 @@ export const editPurchaseOrderRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['vendor'], }); if (result.error) { diff --git a/src/services/inventory/shipments.js b/src/services/inventory/shipments.js index c9a6692..b36879c 100644 --- a/src/services/inventory/shipments.js +++ b/src/services/inventory/shipments.js @@ -122,6 +122,7 @@ export const editShipmentRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['order', 'courierService', 'taxRate'], }); if (result.error) { diff --git a/src/services/inventory/stockevents.js b/src/services/inventory/stockevents.js index 9a46ce0..21c29c9 100644 --- a/src/services/inventory/stockevents.js +++ b/src/services/inventory/stockevents.js @@ -142,6 +142,10 @@ export const editStockEventRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: [ + { path: 'owner', select: 'name _id' }, + { path: 'parent', select: 'name _id' }, + ], }); if (result.error) { diff --git a/src/services/inventory/stocktransfers.js b/src/services/inventory/stocktransfers.js index c0d9866..3ea8a73 100644 --- a/src/services/inventory/stocktransfers.js +++ b/src/services/inventory/stocktransfers.js @@ -362,6 +362,11 @@ export const editStockTransferRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: [ + { path: 'lines.fromStock' }, + { path: 'lines.toStockLocation' }, + { path: 'lines.toStock' }, + ], }); if (result.error) { diff --git a/src/services/management/apppasswords.js b/src/services/management/apppasswords.js index 07899c5..d4efb60 100644 --- a/src/services/management/apppasswords.js +++ b/src/services/management/apppasswords.js @@ -123,6 +123,7 @@ export const editAppPasswordRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['user'], }); if (result?.error) { diff --git a/src/services/management/courierservice.js b/src/services/management/courierservice.js index d4b63e6..72cf1a3 100644 --- a/src/services/management/courierservice.js +++ b/src/services/management/courierservice.js @@ -116,6 +116,7 @@ export const editCourierServiceRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['courier'], }); if (result.error) { diff --git a/src/services/management/documentjobs.js b/src/services/management/documentjobs.js index 03a2851..701003c 100644 --- a/src/services/management/documentjobs.js +++ b/src/services/management/documentjobs.js @@ -106,6 +106,7 @@ export const editDocumentJobRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['documentTemplate', 'documentPrinter', 'object'], }); if (result.error) { diff --git a/src/services/management/documentprinters.js b/src/services/management/documentprinters.js index fe004eb..c31042e 100644 --- a/src/services/management/documentprinters.js +++ b/src/services/management/documentprinters.js @@ -118,6 +118,7 @@ export const editDocumentPrinterRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['currentDocumentSize', 'host'], }); if (result.error) { diff --git a/src/services/management/documenttemplates.js b/src/services/management/documenttemplates.js index 73e8b64..c8e3577 100644 --- a/src/services/management/documenttemplates.js +++ b/src/services/management/documenttemplates.js @@ -132,6 +132,11 @@ export const editDocumentTemplateRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: [ + { path: 'documentSize' }, + { path: 'parent', strictPopulate: false }, + { path: 'documentPrinters', strictPopulate: false }, + ], }); if (result.error) { diff --git a/src/services/management/filaments.js b/src/services/management/filaments.js index 3e54848..ef89256 100644 --- a/src/services/management/filaments.js +++ b/src/services/management/filaments.js @@ -122,6 +122,7 @@ export const editFilamentRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['costTaxRate', 'material'], }); if (result.error) { diff --git a/src/services/management/filamentskus.js b/src/services/management/filamentskus.js index 6aff350..304da7d 100644 --- a/src/services/management/filamentskus.js +++ b/src/services/management/filamentskus.js @@ -122,6 +122,7 @@ export const editFilamentSkuRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: [{ path: 'filament', populate: 'costTaxRate' }, 'costTaxRate'], }); if (result.error) { diff --git a/src/services/management/hosts.js b/src/services/management/hosts.js index 7a9355c..95827a3 100644 --- a/src/services/management/hosts.js +++ b/src/services/management/hosts.js @@ -114,6 +114,7 @@ export const editHostRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['files'], }); if (result.error) { diff --git a/src/services/management/parts.js b/src/services/management/parts.js index 7ea3016..362af6b 100644 --- a/src/services/management/parts.js +++ b/src/services/management/parts.js @@ -115,6 +115,7 @@ export const editPartRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['costTaxRate', 'priceTaxRate'], }); if (result.error) { diff --git a/src/services/management/partskus.js b/src/services/management/partskus.js index a274496..5e63848 100644 --- a/src/services/management/partskus.js +++ b/src/services/management/partskus.js @@ -16,6 +16,12 @@ import { const logger = log4js.getLogger('Part SKUs'); logger.level = config.server.logLevel; +const PART_SKU_POPULATE = [ + { path: 'part', populate: ['costTaxRate', 'priceTaxRate'] }, + 'priceTaxRate', + 'costTaxRate', +]; + export const listPartSkusRouteHandler = async ( req, res, @@ -87,11 +93,7 @@ export const getPartSkuRouteHandler = async (req, res) => { const result = await getObject({ model: partSkuModel, id, - populate: [ - { path: 'part', populate: ['costTaxRate', 'priceTaxRate'] }, - 'priceTaxRate', - 'costTaxRate', - ], + populate: PART_SKU_POPULATE, }); if (result?.error) { logger.warn(`Part SKU not found with supplied id.`); @@ -132,6 +134,7 @@ export const editPartSkuRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: PART_SKU_POPULATE, }); if (result.error) { diff --git a/src/services/management/products.js b/src/services/management/products.js index 3b63eae..ba07d87 100644 --- a/src/services/management/products.js +++ b/src/services/management/products.js @@ -123,6 +123,7 @@ export const editProductRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['productCategory', 'vendor', 'costTaxRate', 'priceTaxRate'], }); if (result.error) { diff --git a/src/services/management/productskus.js b/src/services/management/productskus.js index 27b1937..f406d19 100644 --- a/src/services/management/productskus.js +++ b/src/services/management/productskus.js @@ -16,6 +16,15 @@ import { const logger = log4js.getLogger('Product SKUs'); logger.level = config.server.logLevel; +const PRODUCT_SKU_POPULATE = [ + { path: 'product', populate: ['costTaxRate', 'priceTaxRate'] }, + 'priceTaxRate', + 'costTaxRate', + 'parts.partSku', + 'parts.part', + 'product', +]; + export const listProductSkusRouteHandler = async ( req, res, @@ -87,14 +96,7 @@ export const getProductSkuRouteHandler = async (req, res) => { const result = await getObject({ model: productSkuModel, id, - populate: [ - { path: 'product', populate: ['costTaxRate', 'priceTaxRate'] }, - 'priceTaxRate', - 'costTaxRate', - 'parts.partSku', - 'parts.part', - 'product', - ], + populate: PRODUCT_SKU_POPULATE, }); if (result?.error) { logger.warn(`Product SKU not found with supplied id.`); @@ -136,6 +138,7 @@ export const editProductSkuRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: PRODUCT_SKU_POPULATE, }); if (result.error) { diff --git a/src/services/misc/notes.js b/src/services/misc/notes.js index b0a8e2e..b635825 100644 --- a/src/services/misc/notes.js +++ b/src/services/misc/notes.js @@ -101,6 +101,7 @@ export const editNoteRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['noteType', 'user', 'parent'], }); if (result.error) { diff --git a/src/services/misc/usernotifiers.js b/src/services/misc/usernotifiers.js index 9e25d7f..c31a7f3 100644 --- a/src/services/misc/usernotifiers.js +++ b/src/services/misc/usernotifiers.js @@ -103,6 +103,7 @@ export const editUserNotifierRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['user', 'object'], }); if (result.error) { diff --git a/src/services/production/gcodefiles.js b/src/services/production/gcodefiles.js index 248542d..7702e78 100644 --- a/src/services/production/gcodefiles.js +++ b/src/services/production/gcodefiles.js @@ -132,6 +132,7 @@ export const editGCodeFileRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['filament', { path: 'filamentSku', populate: 'filament' }, 'parts.partSku'], }); if (result.error) { diff --git a/src/services/production/printers.js b/src/services/production/printers.js index 5d694cc..c6c28fa 100644 --- a/src/services/production/printers.js +++ b/src/services/production/printers.js @@ -10,7 +10,7 @@ import { newObject, getModelStats, getModelHistory, - searchObjects + searchObjects, } from '../../database/database.js'; import mongoose from 'mongoose'; @@ -117,7 +117,7 @@ export const editPrinterRouteHandler = async (req, res) => { id, updateData, user: req.user, - populate: 'vendor', + populate: ['vendor', 'host'], }); if (result.error) { diff --git a/src/services/sales/salesorders.js b/src/services/sales/salesorders.js index 6dfc731..4be0760 100644 --- a/src/services/sales/salesorders.js +++ b/src/services/sales/salesorders.js @@ -133,6 +133,7 @@ export const editSalesOrderRouteHandler = async (req, res) => { id, updateData, user: req.user, + populate: ['client', 'marketplace'], }); if (result.error) {