flykup_model_development 3.1.75 → 3.1.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/.gitattributes +2 -0
  2. package/.github/workflows/publish.yml +31 -0
  3. package/auth.js +14 -14
  4. package/config.js +1 -1
  5. package/db_connection.js +23 -23
  6. package/index.js +140 -140
  7. package/models/AadhaarVerification.js +131 -131
  8. package/models/AdminEmail.model.js +39 -38
  9. package/models/BankVerification.js +92 -92
  10. package/models/GSTVerification.js +89 -89
  11. package/models/LiveStreamInteraction.model.js +101 -101
  12. package/models/ProductInteraction.model.js +108 -108
  13. package/models/Review.model.js +121 -121
  14. package/models/SearchAnalytics.js +23 -23
  15. package/models/ShoppableInteraction.model.js +106 -106
  16. package/models/Wishlist.model.js +29 -29
  17. package/models/admin.model.js +42 -42
  18. package/models/appUpdate.model.js +19 -19
  19. package/models/assets.model.js +32 -32
  20. package/models/blockedRegion.models.js +27 -27
  21. package/models/chat.model.js +511 -511
  22. package/models/coHostInvitation.model.js +60 -60
  23. package/models/follow.model.js +38 -38
  24. package/models/loginlogs.model.js +26 -26
  25. package/models/notification.model.js +129 -129
  26. package/models/order.modal.js +386 -386
  27. package/models/orderPayment.model.js +234 -218
  28. package/models/productListing.model.js +322 -322
  29. package/models/profileInteractions.model.js +44 -44
  30. package/models/registerShow.model.js +29 -29
  31. package/models/sellerDraft.model.js +27 -27
  32. package/models/shipper.model.js +126 -126
  33. package/models/shoppableVideo.model.js +237 -237
  34. package/models/shoppableVideoComment.model.js +57 -57
  35. package/models/shoppableVideoLike.model.js +29 -29
  36. package/models/shoppableVideoSave.model.js +27 -27
  37. package/models/shows.model.js +604 -604
  38. package/models/stock.model.js +105 -105
  39. package/models/ticket.model.js +115 -115
  40. package/package.json +19 -19
  41. package/test.html +11 -11
  42. package/models/seller_settlements_2025-11-18 (1).csv +0 -4
  43. package/models/seller_settlements_2025-11-18.csv +0 -4
@@ -1,386 +1,386 @@
1
-
2
- // order.modal.js
3
- import mongoose from 'mongoose';
4
- import { nanoid } from 'nanoid';
5
-
6
- const orderSchema = new mongoose.Schema(
7
- {
8
- orderId: {
9
- type: String,
10
- required: true,
11
- unique: true,
12
- default: () => `FLY-ORD-${nanoid(8)}`
13
- },
14
- userId: {
15
- type: mongoose.Schema.Types.ObjectId,
16
- ref: 'users',
17
- required: true,
18
- index: true
19
- },
20
- notificationSent: {
21
- orderPlaced: { type: Boolean, default: false },
22
- orderConfirmed: { type: Boolean, default: false }
23
- },
24
- products: [{
25
- productId: {
26
- type: mongoose.Schema.Types.ObjectId,
27
- ref: 'productlistings',
28
- required: true
29
- },
30
- sellerUserId: {
31
- type: mongoose.Schema.Types.ObjectId,
32
- ref: 'users',
33
- required: true
34
- },
35
- quantity: {
36
- type: Number,
37
- required: true,
38
- min: 1
39
- },
40
- basePrice: {
41
- type: Number,
42
- required: true
43
- },
44
- gstRate: {
45
- type: Number,
46
- required: true
47
- },
48
- gstAmount: {
49
- type: Number,
50
- required: true
51
- },
52
- gstType: {
53
- type: String,
54
- enum: ['CGST+SGST', 'IGST',"NON-GST"],
55
- required: true
56
- },
57
- isFlashSale: {
58
- type: Boolean,
59
- default: false
60
- },
61
- flashPrice: {
62
- type: Number,
63
- default: null // Store the specific flash price used for this item
64
- }
65
- }],
66
- totalBaseAmount: {
67
- type: Number,
68
- required: true
69
- },
70
- totalGstAmount: {
71
- type: Number,
72
- required: true
73
- },
74
- totalAmount: {
75
- type: Number,
76
- required: true
77
- },
78
- gstSplit: {
79
- cgst: {
80
- rate: Number,
81
- amount: Number
82
- },
83
- sgst: {
84
- rate: Number,
85
- amount: Number
86
- },
87
- igst: {
88
- rate: Number,
89
- amount: Number
90
- }
91
- },
92
- deliveryAddress: {
93
- name: { type: String, maxLength: 50, trim: true, required: true },
94
- mobile: { type: String, trim: true, maxLength: 15, required: true },
95
- alternateMobile: { type: String, trim: true, maxLength: 15, default: null },
96
- line1: { type: String, trim: true, maxLength: 100, required: true },
97
- line2: { type: String, trim: true, maxLength: 100, default: "" },
98
- city: { type: String, trim: true, maxLength: 50, required: true },
99
- state: { type: String, trim: true, maxLength: 50, required: true },
100
- pincode: { type: String, maxLength: 6, trim: true, required: true },
101
- addressType: {
102
- type: String,
103
- enum: ['home', 'work', 'other'],
104
- default: 'home'
105
- },
106
- // --- ADD THESE FIELDS INSIDE deliveryAddress ---
107
- addressModified: {
108
- type: Boolean,
109
- default: false
110
- },
111
- addressModifiedAt: {
112
- type: Date,
113
- default: null
114
- }
115
- },
116
- logisticsDetails: {
117
- shipmentMethod: {
118
- type: String,
119
- enum: ['self_shipment', 'flykup_logistics'],
120
- default: 'flykup_logistics'
121
- },
122
- awbNumber: String,
123
- carrier: String,
124
- carrierId: String,
125
- trackingNumber: String,
126
- trackingUrl: String,
127
- expectedDeliveryDate: Date,
128
- shipmentBookedAt: Date,
129
- logisticsResponse: mongoose.Schema.Types.Mixed,
130
- shipmentBookingStatus: {
131
- type: String,
132
- enum: ['pending', 'booked', 'failed', 'cancelled', 'cancellation_failed'], // Add the new value here
133
- default: 'pending'
134
- },
135
- shipmentBookingError: String,
136
- multipleSellers: {
137
- type: Boolean,
138
- default: false
139
- },
140
- selectedCourier: {
141
- courierId: String,
142
- courierName: String,
143
- deliveryCharges: Number,
144
- estimatedDays: Number,
145
- deliveryDate: String
146
- },
147
- cancellationAttemptedAt: Date,
148
- cancellationResult: {
149
- success: Boolean,
150
- message: String,
151
- error: String,
152
- responseData: mongoose.Schema.Types.Mixed
153
- },
154
- cancellationEligibility: {
155
- eligible: Boolean,
156
- reason: String
157
- },
158
- tracking: {
159
- lastSyncedAt: Date,
160
- currentStatus: String,
161
- statusCode: String,
162
- progressPercentage: Number,
163
- currentLocation: String,
164
- estimatedDelivery: Date,
165
- trackingTimeline: [{
166
- date: Date,
167
- status: String,
168
- location: String,
169
- icon: String
170
- }]
171
- },
172
- },
173
- packageDetails: {
174
- totalWeight: Number,
175
- weightUnit: {
176
- type: String,
177
- default: 'grams'
178
- },
179
- dimensions: {
180
- length: Number,
181
- width: Number,
182
- height: Number
183
- },
184
-
185
- volumetricWeight: Number
186
- },
187
- pickupAddresses: [{
188
- sellerUserId: {
189
- type: mongoose.Schema.Types.ObjectId,
190
- ref: 'users',
191
- required: true
192
- },
193
- name: String,
194
- mobile: String,
195
- addressLine1: {
196
- type: String,
197
- trim: true,
198
- maxLength: 150,
199
- },
200
- addressLine2: {
201
- type: String,
202
- trim: true,
203
- maxLength: 150,
204
- },
205
- city: {
206
- type: String,
207
- trim: true,
208
- maxLength: 50,
209
- },
210
- state: {
211
- type: String,
212
- trim: true,
213
- maxLength: 50,
214
- },
215
- pincode: {
216
- type: String,
217
- trim: true,
218
- maxLength: 6,
219
- },
220
- }],
221
- paymentMethod: {
222
- type: String,
223
- enum: ['CARD', 'UPI', 'NETBANKING', 'WALLET', 'COD', "PENDING_PAYMENT", "CASHFREE","RAZORPAY", "Online"],
224
- required: true
225
- },
226
- paymentStatus: {
227
- type: String,
228
- enum: ['PENDING', 'PAID', 'FAILED', 'REFUNDED'],
229
- default: 'PENDING',
230
- required: true
231
- },
232
- orderStatus: {
233
- type: String,
234
- enum: [
235
- 'PENDING_PAYMENT',
236
- 'ORDERED',
237
- 'PACKED',
238
- 'SHIPPED',
239
- 'OUT_FOR_DELIVERY',
240
- 'DELIVERED',
241
- 'CANCELLED',
242
- 'RETURN_REQUESTED',
243
- 'RETURN_APPROVED',
244
- 'RETURN_SHIPPED',
245
- 'RETURN_RECEIVED',
246
- 'REFUNDED',
247
- 'REPLACEMENT_SHIPPED',
248
- 'REPLACEMENT_DELIVERED',
249
- 'PAYMENT_FAILED'
250
- ],
251
- // default: 'ORDERED', // Default should be the initial state
252
- required: true
253
- },
254
- sourceType: {
255
- type: String,
256
- enum: ['static', 'shoppable_video', 'livestream', 'auction', 'flash_sale', 'giveaway','bundle_sale','bundle_flash_sale'],
257
- required: true
258
- },
259
- sourceRefId: String,
260
- deliveryCharge: {
261
- type: Number,
262
- default: 40
263
- },
264
- statusTimeline: {
265
- ordered: Date,
266
- paid: Date,
267
- packed: Date,
268
- shipped: Date,
269
- outForDelivery: Date,
270
- delivered: Date,
271
- cancelled: Date,
272
- returnRequested: Date,
273
- returnApproved: Date,
274
- returnShipped: Date,
275
- returnReceived: Date,
276
- refunded: Date,
277
- replacementShipped: Date,
278
- replacementDelivered: Date
279
- },
280
- courierDetails: {
281
- carrier: String,
282
- trackingNumber: String,
283
- estimatedDelivery: Date
284
- },
285
- returnDetails: {
286
- reason: String,
287
- type: {
288
- type: String,
289
- enum: ['REFUND', 'REPLACE']
290
- },
291
- items: [{
292
- productId: mongoose.Schema.Types.ObjectId,
293
- quantity: Number
294
- }]
295
- },
296
- refundDetails: {
297
- amount: Number,
298
- method: String,
299
- transactionId: String
300
- },
301
- replacementDetails: {
302
- trackingNumber: String,
303
- replacementOrderId: mongoose.Schema.Types.ObjectId
304
- },
305
- returnRequests: [{
306
- _id: { type: mongoose.Schema.Types.ObjectId, auto: true },
307
- orderItemId: { // Reference to the specific item in the order
308
- type: mongoose.Schema.Types.ObjectId,
309
- required: true
310
- },
311
- reason: String,
312
- additionalNotes: String,
313
- images: [String],
314
- status: {
315
- type: String,
316
- enum: ['PENDING',
317
- 'APPROVED',
318
- 'REJECTED',
319
- 'RETURN_SHIPPED',
320
- 'RETURN_RECEIVED',
321
- 'REFUNDED'],
322
- default: 'PENDING'
323
- },
324
- shipmentDetails: {
325
- carrier: String,
326
- trackingNumber: String,
327
- receiptImage: String, // S3 key for uploaded image
328
- shippedAt: Date
329
- },
330
- receivedAt: Date,
331
- refundProcessedAt: Date,
332
- sellerResponse: String,
333
- requestedAt: Date,
334
- processedAt: Date
335
- }],
336
- cancelReason: String,
337
- cancelSource: {
338
- type: String,
339
- enum: ['user', 'seller', 'system'],
340
- default: 'user'
341
- },
342
- flashSaleItems: [{
343
- productId: {
344
- type: mongoose.Schema.Types.ObjectId,
345
- ref: 'productlistings'
346
- },
347
- flashSaleId: {
348
- type: mongoose.Schema.Types.ObjectId,
349
- ref: 'FlashSale'
350
- },
351
- quantity: Number,
352
- flashPrice: Number,
353
- originalPrice: Number
354
- }],
355
- labelPrinted: {
356
- type: Boolean,
357
- default: false
358
- },
359
- payment: {
360
- type: mongoose.Schema.Types.ObjectId,
361
- ref: 'orderPayment'
362
- },
363
- invoiceKey: {
364
- type: String,
365
- default: null
366
- },
367
- invoiceStatus: {
368
- type: String,
369
- enum: ['pending', 'processing', 'completed', 'failed'],
370
- default: 'pending'
371
- },
372
- invoiceRetries: {
373
- type: Number,
374
- default: 0
375
- },
376
- invoiceError: String
377
- },
378
-
379
- { timestamps: true }
380
- );
381
-
382
-
383
-
384
-
385
- const Order = mongoose.models.Order || mongoose.model('Order', orderSchema);
386
- export default Order;
1
+
2
+ // order.modal.js
3
+ import mongoose from 'mongoose';
4
+ import { nanoid } from 'nanoid';
5
+
6
+ const orderSchema = new mongoose.Schema(
7
+ {
8
+ orderId: {
9
+ type: String,
10
+ required: true,
11
+ unique: true,
12
+ default: () => `FLY-ORD-${nanoid(8)}`
13
+ },
14
+ userId: {
15
+ type: mongoose.Schema.Types.ObjectId,
16
+ ref: 'users',
17
+ required: true,
18
+ index: true
19
+ },
20
+ notificationSent: {
21
+ orderPlaced: { type: Boolean, default: false },
22
+ orderConfirmed: { type: Boolean, default: false }
23
+ },
24
+ products: [{
25
+ productId: {
26
+ type: mongoose.Schema.Types.ObjectId,
27
+ ref: 'productlistings',
28
+ required: true
29
+ },
30
+ sellerUserId: {
31
+ type: mongoose.Schema.Types.ObjectId,
32
+ ref: 'users',
33
+ required: true
34
+ },
35
+ quantity: {
36
+ type: Number,
37
+ required: true,
38
+ min: 1
39
+ },
40
+ basePrice: {
41
+ type: Number,
42
+ required: true
43
+ },
44
+ gstRate: {
45
+ type: Number,
46
+ required: true
47
+ },
48
+ gstAmount: {
49
+ type: Number,
50
+ required: true
51
+ },
52
+ gstType: {
53
+ type: String,
54
+ enum: ['CGST+SGST', 'IGST',"NON-GST"],
55
+ required: true
56
+ },
57
+ isFlashSale: {
58
+ type: Boolean,
59
+ default: false
60
+ },
61
+ flashPrice: {
62
+ type: Number,
63
+ default: null // Store the specific flash price used for this item
64
+ }
65
+ }],
66
+ totalBaseAmount: {
67
+ type: Number,
68
+ required: true
69
+ },
70
+ totalGstAmount: {
71
+ type: Number,
72
+ required: true
73
+ },
74
+ totalAmount: {
75
+ type: Number,
76
+ required: true
77
+ },
78
+ gstSplit: {
79
+ cgst: {
80
+ rate: Number,
81
+ amount: Number
82
+ },
83
+ sgst: {
84
+ rate: Number,
85
+ amount: Number
86
+ },
87
+ igst: {
88
+ rate: Number,
89
+ amount: Number
90
+ }
91
+ },
92
+ deliveryAddress: {
93
+ name: { type: String, maxLength: 50, trim: true, required: true },
94
+ mobile: { type: String, trim: true, maxLength: 15, required: true },
95
+ alternateMobile: { type: String, trim: true, maxLength: 15, default: null },
96
+ line1: { type: String, trim: true, maxLength: 100, required: true },
97
+ line2: { type: String, trim: true, maxLength: 100, default: "" },
98
+ city: { type: String, trim: true, maxLength: 50, required: true },
99
+ state: { type: String, trim: true, maxLength: 50, required: true },
100
+ pincode: { type: String, maxLength: 6, trim: true, required: true },
101
+ addressType: {
102
+ type: String,
103
+ enum: ['home', 'work', 'other'],
104
+ default: 'home'
105
+ },
106
+ // --- ADD THESE FIELDS INSIDE deliveryAddress ---
107
+ addressModified: {
108
+ type: Boolean,
109
+ default: false
110
+ },
111
+ addressModifiedAt: {
112
+ type: Date,
113
+ default: null
114
+ }
115
+ },
116
+ logisticsDetails: {
117
+ shipmentMethod: {
118
+ type: String,
119
+ enum: ['self_shipment', 'flykup_logistics'],
120
+ default: 'flykup_logistics'
121
+ },
122
+ awbNumber: String,
123
+ carrier: String,
124
+ carrierId: String,
125
+ trackingNumber: String,
126
+ trackingUrl: String,
127
+ expectedDeliveryDate: Date,
128
+ shipmentBookedAt: Date,
129
+ logisticsResponse: mongoose.Schema.Types.Mixed,
130
+ shipmentBookingStatus: {
131
+ type: String,
132
+ enum: ['pending', 'booked', 'failed', 'cancelled', 'cancellation_failed'], // Add the new value here
133
+ default: 'pending'
134
+ },
135
+ shipmentBookingError: String,
136
+ multipleSellers: {
137
+ type: Boolean,
138
+ default: false
139
+ },
140
+ selectedCourier: {
141
+ courierId: String,
142
+ courierName: String,
143
+ deliveryCharges: Number,
144
+ estimatedDays: Number,
145
+ deliveryDate: String
146
+ },
147
+ cancellationAttemptedAt: Date,
148
+ cancellationResult: {
149
+ success: Boolean,
150
+ message: String,
151
+ error: String,
152
+ responseData: mongoose.Schema.Types.Mixed
153
+ },
154
+ cancellationEligibility: {
155
+ eligible: Boolean,
156
+ reason: String
157
+ },
158
+ tracking: {
159
+ lastSyncedAt: Date,
160
+ currentStatus: String,
161
+ statusCode: String,
162
+ progressPercentage: Number,
163
+ currentLocation: String,
164
+ estimatedDelivery: Date,
165
+ trackingTimeline: [{
166
+ date: Date,
167
+ status: String,
168
+ location: String,
169
+ icon: String
170
+ }]
171
+ },
172
+ },
173
+ packageDetails: {
174
+ totalWeight: Number,
175
+ weightUnit: {
176
+ type: String,
177
+ default: 'grams'
178
+ },
179
+ dimensions: {
180
+ length: Number,
181
+ width: Number,
182
+ height: Number
183
+ },
184
+
185
+ volumetricWeight: Number
186
+ },
187
+ pickupAddresses: [{
188
+ sellerUserId: {
189
+ type: mongoose.Schema.Types.ObjectId,
190
+ ref: 'users',
191
+ required: true
192
+ },
193
+ name: String,
194
+ mobile: String,
195
+ addressLine1: {
196
+ type: String,
197
+ trim: true,
198
+ maxLength: 150,
199
+ },
200
+ addressLine2: {
201
+ type: String,
202
+ trim: true,
203
+ maxLength: 150,
204
+ },
205
+ city: {
206
+ type: String,
207
+ trim: true,
208
+ maxLength: 50,
209
+ },
210
+ state: {
211
+ type: String,
212
+ trim: true,
213
+ maxLength: 50,
214
+ },
215
+ pincode: {
216
+ type: String,
217
+ trim: true,
218
+ maxLength: 6,
219
+ },
220
+ }],
221
+ paymentMethod: {
222
+ type: String,
223
+ enum: ['CARD', 'UPI', 'NETBANKING', 'WALLET', 'COD', "PENDING_PAYMENT", "CASHFREE","RAZORPAY", "Online"],
224
+ required: true
225
+ },
226
+ paymentStatus: {
227
+ type: String,
228
+ enum: ['PENDING', 'PAID', 'FAILED', 'REFUNDED'],
229
+ default: 'PENDING',
230
+ required: true
231
+ },
232
+ orderStatus: {
233
+ type: String,
234
+ enum: [
235
+ 'PENDING_PAYMENT',
236
+ 'ORDERED',
237
+ 'PACKED',
238
+ 'SHIPPED',
239
+ 'OUT_FOR_DELIVERY',
240
+ 'DELIVERED',
241
+ 'CANCELLED',
242
+ 'RETURN_REQUESTED',
243
+ 'RETURN_APPROVED',
244
+ 'RETURN_SHIPPED',
245
+ 'RETURN_RECEIVED',
246
+ 'REFUNDED',
247
+ 'REPLACEMENT_SHIPPED',
248
+ 'REPLACEMENT_DELIVERED',
249
+ 'PAYMENT_FAILED'
250
+ ],
251
+ // default: 'ORDERED', // Default should be the initial state
252
+ required: true
253
+ },
254
+ sourceType: {
255
+ type: String,
256
+ enum: ['static', 'shoppable_video', 'livestream', 'auction', 'flash_sale', 'giveaway','bundle_sale','bundle_flash_sale'],
257
+ required: true
258
+ },
259
+ sourceRefId: String,
260
+ deliveryCharge: {
261
+ type: Number,
262
+ default: 40
263
+ },
264
+ statusTimeline: {
265
+ ordered: Date,
266
+ paid: Date,
267
+ packed: Date,
268
+ shipped: Date,
269
+ outForDelivery: Date,
270
+ delivered: Date,
271
+ cancelled: Date,
272
+ returnRequested: Date,
273
+ returnApproved: Date,
274
+ returnShipped: Date,
275
+ returnReceived: Date,
276
+ refunded: Date,
277
+ replacementShipped: Date,
278
+ replacementDelivered: Date
279
+ },
280
+ courierDetails: {
281
+ carrier: String,
282
+ trackingNumber: String,
283
+ estimatedDelivery: Date
284
+ },
285
+ returnDetails: {
286
+ reason: String,
287
+ type: {
288
+ type: String,
289
+ enum: ['REFUND', 'REPLACE']
290
+ },
291
+ items: [{
292
+ productId: mongoose.Schema.Types.ObjectId,
293
+ quantity: Number
294
+ }]
295
+ },
296
+ refundDetails: {
297
+ amount: Number,
298
+ method: String,
299
+ transactionId: String
300
+ },
301
+ replacementDetails: {
302
+ trackingNumber: String,
303
+ replacementOrderId: mongoose.Schema.Types.ObjectId
304
+ },
305
+ returnRequests: [{
306
+ _id: { type: mongoose.Schema.Types.ObjectId, auto: true },
307
+ orderItemId: { // Reference to the specific item in the order
308
+ type: mongoose.Schema.Types.ObjectId,
309
+ required: true
310
+ },
311
+ reason: String,
312
+ additionalNotes: String,
313
+ images: [String],
314
+ status: {
315
+ type: String,
316
+ enum: ['PENDING',
317
+ 'APPROVED',
318
+ 'REJECTED',
319
+ 'RETURN_SHIPPED',
320
+ 'RETURN_RECEIVED',
321
+ 'REFUNDED'],
322
+ default: 'PENDING'
323
+ },
324
+ shipmentDetails: {
325
+ carrier: String,
326
+ trackingNumber: String,
327
+ receiptImage: String, // S3 key for uploaded image
328
+ shippedAt: Date
329
+ },
330
+ receivedAt: Date,
331
+ refundProcessedAt: Date,
332
+ sellerResponse: String,
333
+ requestedAt: Date,
334
+ processedAt: Date
335
+ }],
336
+ cancelReason: String,
337
+ cancelSource: {
338
+ type: String,
339
+ enum: ['user', 'seller', 'system'],
340
+ default: 'user'
341
+ },
342
+ flashSaleItems: [{
343
+ productId: {
344
+ type: mongoose.Schema.Types.ObjectId,
345
+ ref: 'productlistings'
346
+ },
347
+ flashSaleId: {
348
+ type: mongoose.Schema.Types.ObjectId,
349
+ ref: 'FlashSale'
350
+ },
351
+ quantity: Number,
352
+ flashPrice: Number,
353
+ originalPrice: Number
354
+ }],
355
+ labelPrinted: {
356
+ type: Boolean,
357
+ default: false
358
+ },
359
+ payment: {
360
+ type: mongoose.Schema.Types.ObjectId,
361
+ ref: 'orderPayment'
362
+ },
363
+ invoiceKey: {
364
+ type: String,
365
+ default: null
366
+ },
367
+ invoiceStatus: {
368
+ type: String,
369
+ enum: ['pending', 'processing', 'completed', 'failed'],
370
+ default: 'pending'
371
+ },
372
+ invoiceRetries: {
373
+ type: Number,
374
+ default: 0
375
+ },
376
+ invoiceError: String
377
+ },
378
+
379
+ { timestamps: true }
380
+ );
381
+
382
+
383
+
384
+
385
+ const Order = mongoose.models.Order || mongoose.model('Order', orderSchema);
386
+ export default Order;