Files
fielderp-server/models/Invoice/model.js
T

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);