Sindbad~EG File Manager
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _mongoose = _interopRequireDefault(require("mongoose"));
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
var Purchase = new _mongoose["default"].Schema({
date: {
type: Date,
required: true
},
location: {
type: String,
required: false,
"default": ""
},
purchased_type: {
type: String,
required: true,
"enum": ["returned", "purchased"]
},
order_status: {
type: String,
required: true,
"enum": ["received", "pending", "order"]
},
payment_status: {
type: String,
required: false,
"enum": ["paid", "unpaid"]
},
payment_type: {
type: {
type: String,
required: false
},
// e.g., 'cash'
cash: {
type: {
type: String // e.g., 'online' or 'by_hand'
},
by_hand: {
invoice: String
},
online: {
invoice: String,
receipt: String
}
},
credit: {
invoice: String
}
},
grand_total: {
type: Number
},
shipping_charges: {
type: Number,
required: false
},
paid: {
type: Number,
required: false
},
discount_amount: {
type: Number,
required: false
},
due: {
type: Number,
required: false
},
note: {
type: String,
required: false,
"default": ""
},
supplier: {
type: _mongoose["default"].Schema.ObjectId,
ref: "Company",
required: true
},
warehouse: {
type: _mongoose["default"].Schema.ObjectId,
ref: "Warehouse",
required: false
},
added_by: {
type: _mongoose["default"].Schema.ObjectId,
ref: "User",
required: true
},
items: [{
product: {
type: _mongoose["default"].Schema.ObjectId,
ref: "Product",
required: true
},
quantity: {
type: Number,
required: true,
"default": 0,
min: [0, "Ensures quantity is always positive"]
}
}]
}, {
timestamps: true
});
// Middleware to auto-populate refs with specific fields
function autoPopulateRefs(next) {
this.populate({
path: "added_by",
select: "name _id"
}).populate({
path: "supplier",
select: "name _id"
}).populate({
path: "warehouse",
select: "name _id"
}).populate({
path: "items.product",
// Path to populate
select: "_id prod_name sku category purchase_price company unit_profile" // Select specific fields from Product (optional)
});
next();
}
// Apply the middleware
Purchase.pre("find", autoPopulateRefs).pre("findOne", autoPopulateRefs).pre("findOneAndUpdate", autoPopulateRefs);
var _default = exports["default"] = _mongoose["default"].model("Purchase", Purchase);
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists