import { model, Schema, Types } from "mongoose"; const paymentHistorySchema = new Schema({ amount: { type: Number, required: true, }, paymentDate: { type: Date, required: true, }, paymentMethod: { type: String, required: true, }, transactionId: { type: String, required: true, }, createdOn: { type: Date, required: true, }, createdBy: { type: Types.ObjectId, ref: "user", required: true, }, }); const itemSchema = new Schema({ id: { type: Types.ObjectId, required: true, }, unitCostPrice: { type: Number, required: true, }, unitSellingPrice: { type: Number, required: true, }, qty: { type: Number, required: true, }, taxPercent: { type: Number, required: true, }, taxAmount: { type: Number, required: true, }, discount: { type: Number, required: true, }, total: { type: Number, required: true, }, }); const schema = new Schema({ customer: { type: Types.ObjectId, ref: "partner", required: true, }, items: { type: [itemSchema], required: true, }, netTotal: { type: Number, required: true, }, total: { type: Number, required: true, }, status: { type: String, enum: ["PENDING", "COMPLETED", "PARTIAL"], default: "PENDING", }, dueDate: { type: Date, required: true, }, createdOn: { type: Date, required: true, }, createdBy: { type: Types.ObjectId, ref: "user", required: true, }, paymentHistory: { type: [paymentHistorySchema], default: [], }, }); export default model("invoice", schema);