api/resources/PosOrders/PosorderModel.js
2024-04-28 11:21:28 +05:30

162 lines
3.4 KiB
JavaScript

import mongoose from "mongoose";
const POSorderSchema = new mongoose.Schema(
{
orderID: {
type: String,
required: true,
unique: true,
},
user: {
type: mongoose.Schema.ObjectId,
ref: "User",
required: true,
},
shippingInfo: {
first_Name: {
type: String,
required: true,
},
last_Name: {
type: String,
required: true,
},
phone_Number: {
type: Number,
required: true,
},
street: {
type: String,
required: true,
},
city: {
type: String,
required: true,
trim: true,
},
state: {
type: String,
required: true,
},
postalCode: {
type: String,
required: true,
trim: true,
// Add a regular expression to enforce a specific postal code format
// For example, assuming a 5-digit format for the United States
match: /^\d{6}$/,
},
country: {
type: String,
required: true,
},
addressId: {
type: mongoose.Schema.ObjectId,
ref: "ShippingAddress",
required: true,
},
},
orderItems: [
{
name: {
type: String,
default: "",
},
price: {
type: Number,
default: "",
},
variant_Name: { type: String, default: "" },
quantity: {
type: Number,
default: "",
default: 1,
},
image: [{}],
product_Subtotal: {
type: Number,
default: "",
},
gst_amount: {
type: Number,
default: "",
},
gst_rate: {
type: Number,
default: "",
},
tax_Name: {
type: String,
default: "",
},
product: {
type: mongoose.Schema.ObjectId,
ref: "Product",
},
},
],
shipping_charge: { type: Number, default: 0 },
tax_amount: { type: Number, default: 0 },
total_amount: { type: Number, default: 0 },
weight: { type: Number, default: 0 },
paymentMode: {
type: String,
enum: ["QRCode", "Cash"],
},
payment_status: {
type: String,
enum: ["pending", "success", "failed"],
},
isPaid: {
type: Boolean,
default: false,
},
paidAt: {
type: Date,
},
orderStatus: {
type: String,
enum: [
"new",
"processing",
"dispatched",
"delivered",
"cancelled",
"returned",
],
default: "new",
},
razorpay_payment_id: { type: String },
razorpay_order_id: { type: String },
razorpay_signature: { type: String },
isDelivered: { type: Boolean, required: true, default: false },
DeliveredDate: { type: String, default: "" },
// deliveredAt: { type: Date },
status_timeline: {
new: { type: Date },
processing: { type: Date },
dispatched: { type: Date },
delivered: { type: Date },
cancelled: { type: Date },
returned: { type: Date },
},
iscancelled: {
type: Boolean,
default: false,
},
order_Cancelled_Reason: {
type: String,
},
courier_name: { type: String },
courier_tracking_id: { type: String },
},
{ timestamps: true }
);
export const POSOrder = mongoose.model("POSOrder", POSorderSchema);