From f358eaa1d0c20fdf0be85debb18f4a7fa3bdd6b0 Mon Sep 17 00:00:00 2001 From: Tom Butcher Date: Sat, 7 Mar 2026 20:38:00 +0000 Subject: [PATCH] Updated product stock schema to include default state as 'draft', added 'postedAt' field, and introduced rollup configurations for 'draft' and 'posted' states. --- .../schemas/inventory/productstock.schema.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/database/schemas/inventory/productstock.schema.js b/src/database/schemas/inventory/productstock.schema.js index ce3d2e5..88bffe0 100644 --- a/src/database/schemas/inventory/productstock.schema.js +++ b/src/database/schemas/inventory/productstock.schema.js @@ -14,9 +14,10 @@ const productStockSchema = new Schema( { _reference: { type: String, default: () => generateId()() }, state: { - type: { type: String, required: true }, + type: { type: String, required: true, default: 'draft' }, progress: { type: Number, required: false }, }, + postedAt: { type: Date, required: false }, product: { type: mongoose.Schema.Types.ObjectId, ref: 'product', required: true }, currentQuantity: { type: Number, required: true }, partStocks: [partStockUsageSchema], @@ -30,6 +31,16 @@ const rollupConfigs = [ filter: {}, rollups: [{ name: 'totalCurrentQuantity', property: 'currentQuantity', operation: 'sum' }], }, + { + name: 'draft', + filter: { 'state.type': 'draft' }, + rollups: [{ name: 'draft', property: 'state.type', operation: 'count' }], + }, + { + name: 'posted', + filter: { 'state.type': 'posted' }, + rollups: [{ name: 'posted', property: 'state.type', operation: 'count' }], + }, ]; productStockSchema.statics.stats = async function () {