109 lines
1.6 KiB
JavaScript
109 lines
1.6 KiB
JavaScript
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);
|