api/resources/Inventory/InventoryModel.js
Sibunnayak 291eb17238 fixing
2024-10-11 11:02:19 +05:30

69 lines
1.5 KiB
JavaScript

import mongoose from "mongoose";
import crypto from 'crypto';
// 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,
},
Sale: {
type: Number,
required: true,
},
Inventory: {
type: Number,
required: true,
},
});
// Define main Inventory schema
const InventorySchema = new mongoose.Schema(
{
uniqueId: {
type: String,
unique: true,
},
userId: {
type: mongoose.Schema.Types.ObjectId,
refPath: "userType",
required: true,
},
userType: {
type: String,
required: true,
enum: ["SalesCoOrdinator", "TerritoryManager"],
},
addedFor: {
type: String,
required: true,
enum: ["PrincipalDistributor", "RetailDistributor"],
},
addedForId: {
type: mongoose.Schema.Types.ObjectId,
refPath: "addedFor",
required: true,
},
products: [ProductRecordSchema],
},
{ timestamps: true, versionKey: false }
);
InventorySchema.pre("save", function (next) {
if (!this.uniqueId) {
const currentYear = new Date().getFullYear().toString().slice(-2);
const randomChars = crypto.randomBytes(4).toString("hex").toUpperCase();
this.uniqueId = `${currentYear}-${randomChars}`;
}
next();
});
export const Inventory = mongoose.model("Inventory", InventorySchema);