api/resources/Stock/PdStockModel.js
2025-01-11 14:15:23 +05:30

79 lines
1.7 KiB
JavaScript

import mongoose from "mongoose";
// Define Product record schema
const ProductRecordSchema = new mongoose.Schema({
productid: {
type: mongoose.Schema.Types.ObjectId,
ref: "Product",
required: true,
},
SKU: {
type: String,
required: true,
},
productName: {
type: String,
required: true,
},
openingInventory: {
type: Number,
default: 0,
set: (value) => {
if (typeof value === "string") {
// Convert to number and remove leading zeros
return Number(value.replace(/^0+/, "")) || undefined;
}
return value;
},
},
Stock: {
type: Number,
default: 0,
},
monthstartstock: {
type: Number,
default: 0,
},
liquidation: {
type: Number,
default: 0,
},
monthlyorderquantity: {
type: Number,
default: 0,
},
});
// Define main Stock schema
const StockSchema = new mongoose.Schema(
{
userId: {
type: mongoose.Schema.Types.ObjectId,
refPath: "User",
required: true,
unique: true,
},
products: [ProductRecordSchema],
},
{ timestamps: true, versionKey: false }
);
// Static method to reset monthly fields
StockSchema.statics.resetMonthlyFields = async function () {
try {
const stocks = await this.find();
for (const stock of stocks) {
for (const product of stock.products) {
product.liquidation = 0;
product.monthstartstock = product.Stock;
product.monthlyorderquantity = 0;
}
await stock.save();
}
console.log("Monthly reset completed successfully!");
} catch (error) {
console.error("Error during monthly reset:", error);
}
};
export const PDStock = mongoose.model("PDStock", StockSchema);