other
This commit is contained in:
69
backend/models/Product.model.js
Normal file
69
backend/models/Product.model.js
Normal file
@@ -0,0 +1,69 @@
|
||||
import mongoose from "mongoose";
|
||||
|
||||
const ProductSchema = new mongoose.Schema({
|
||||
storeId: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
ref: "Store",
|
||||
required: true,
|
||||
},
|
||||
category: {
|
||||
type: mongoose.Schema.Types.ObjectId,
|
||||
required: true,
|
||||
ref: "Store.categories"
|
||||
},
|
||||
|
||||
name: { type: String, required: true },
|
||||
description: { type: String },
|
||||
|
||||
unitType: {
|
||||
type: String,
|
||||
enum: ["pcs", "gr", "kg"],
|
||||
required: true,
|
||||
},
|
||||
|
||||
// Add inventory tracking fields
|
||||
stockTracking: { type: Boolean, default: true },
|
||||
currentStock: {
|
||||
type: Number,
|
||||
default: 0,
|
||||
validate: {
|
||||
validator: function(value) {
|
||||
return !this.stockTracking || value >= 0;
|
||||
},
|
||||
message: "Stock cannot be negative"
|
||||
}
|
||||
},
|
||||
lowStockThreshold: { type: Number, default: 10 },
|
||||
stockStatus: {
|
||||
type: String,
|
||||
enum: ["in_stock", "low_stock", "out_of_stock"],
|
||||
default: "out_of_stock"
|
||||
},
|
||||
|
||||
pricing: [
|
||||
{
|
||||
minQuantity: {
|
||||
type: Number,
|
||||
required: true,
|
||||
validate: {
|
||||
validator: function(value) {
|
||||
if (this.parent().unitType === "gr") {
|
||||
return value >= 0.1;
|
||||
}
|
||||
return value >= 1;
|
||||
},
|
||||
message: "Invalid minQuantity for unitType"
|
||||
}
|
||||
},
|
||||
pricePerUnit: {
|
||||
type: Number,
|
||||
required: true,
|
||||
min: 0.01
|
||||
},
|
||||
},
|
||||
],
|
||||
|
||||
image: { type: String },
|
||||
});
|
||||
|
||||
export default mongoose.model("Product", ProductSchema);
|
||||
Reference in New Issue
Block a user