Sindbad~EG File Manager

Current Path : /home/infinitibizsol/irfarms.infinitibizsol.com/models/
Upload File :
Current File : /home/infinitibizsol/irfarms.infinitibizsol.com/models/purchaseModel.js

"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