payservedb 4.8.2 → 4.8.4

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 (102) hide show
  1. package/.env +2 -2
  2. package/index.js +170 -168
  3. package/package.json +17 -17
  4. package/src/models/account.js +35 -35
  5. package/src/models/analog_water_billing.js +58 -58
  6. package/src/models/apilog.js +18 -18
  7. package/src/models/approvalsWorkflows.js +49 -49
  8. package/src/models/archivedapilog.js +18 -18
  9. package/src/models/archivedauditlog.js +83 -83
  10. package/src/models/asset.js +34 -34
  11. package/src/models/auditlog.js +83 -83
  12. package/src/models/bankdetails.js +40 -40
  13. package/src/models/bookinganalytics.js +63 -63
  14. package/src/models/bookingconfig.js +45 -45
  15. package/src/models/bookingproperty.js +112 -112
  16. package/src/models/bookingreservation.js +192 -192
  17. package/src/models/bookingrevenuerecord.js +84 -84
  18. package/src/models/budget.js +33 -33
  19. package/src/models/budgetCategory.js +19 -19
  20. package/src/models/campaigns.js +72 -72
  21. package/src/models/cashpayment.js +262 -262
  22. package/src/models/combinedUnits.js +62 -62
  23. package/src/models/common_area_electricity.js +38 -38
  24. package/src/models/common_area_generator.js +38 -38
  25. package/src/models/common_area_utility_alert.js +37 -37
  26. package/src/models/common_area_water.js +39 -39
  27. package/src/models/company.js +53 -53
  28. package/src/models/country_tax.js +42 -42
  29. package/src/models/currency_settings.js +39 -39
  30. package/src/models/customer.js +200 -200
  31. package/src/models/default_payment_details.js +17 -17
  32. package/src/models/dutyroster.js +129 -129
  33. package/src/models/email.js +24 -24
  34. package/src/models/entry_exit.js +53 -53
  35. package/src/models/expense.js +55 -55
  36. package/src/models/facility.js +61 -61
  37. package/src/models/facility_payment_details.js +20 -20
  38. package/src/models/facilityasset.js +25 -25
  39. package/src/models/faq.js +18 -18
  40. package/src/models/gl_accounts.js +52 -52
  41. package/src/models/guard.js +47 -47
  42. package/src/models/handover.js +241 -241
  43. package/src/models/invoice.js +276 -276
  44. package/src/models/item_inspection.js +67 -67
  45. package/src/models/leaseagreement.js +168 -168
  46. package/src/models/leasetemplate.js +17 -17
  47. package/src/models/levy.js +84 -84
  48. package/src/models/levy_invoice_settings.js +26 -26
  49. package/src/models/levycontract.js +77 -77
  50. package/src/models/levytype.js +23 -23
  51. package/src/models/maintenance_service_vendor.js +38 -38
  52. package/src/models/maintenance_services.js +17 -17
  53. package/src/models/maintenancerequisition.js +31 -31
  54. package/src/models/message.js +38 -38
  55. package/src/models/module.js +21 -21
  56. package/src/models/notification.js +24 -24
  57. package/src/models/penalty.js +76 -76
  58. package/src/models/purchase_order.js +191 -191
  59. package/src/models/purchase_request.js +65 -65
  60. package/src/models/refresh_token.js +23 -23
  61. package/src/models/reminder.js +161 -161
  62. package/src/models/report.js +13 -13
  63. package/src/models/resident.js +121 -121
  64. package/src/models/rfq_details.js +82 -0
  65. package/src/models/rfq_response.js +109 -0
  66. package/src/models/service_charge_invoice_upload.js +42 -42
  67. package/src/models/service_charge_payments.js +27 -27
  68. package/src/models/servicerequest.js +55 -55
  69. package/src/models/settings.js +62 -62
  70. package/src/models/smart_meter_daily_consumption.js +44 -44
  71. package/src/models/sms_africastalking.js +20 -20
  72. package/src/models/sms_meliora.js +16 -16
  73. package/src/models/staff.js +36 -36
  74. package/src/models/stocksandspare.js +34 -34
  75. package/src/models/suppliers.js +68 -68
  76. package/src/models/tickets.js +109 -109
  77. package/src/models/unitasset.js +25 -25
  78. package/src/models/units.js +86 -86
  79. package/src/models/user.js +94 -94
  80. package/src/models/valueaddedservices.js +36 -36
  81. package/src/models/vas_invoices_upload.js +50 -50
  82. package/src/models/vas_payments.js +24 -24
  83. package/src/models/vasinvoice.js +159 -159
  84. package/src/models/vasvendor.js +57 -57
  85. package/src/models/visitLog.js +86 -86
  86. package/src/models/visitor.js +63 -63
  87. package/src/models/waitlist.js +45 -45
  88. package/src/models/water_invoice.js +192 -192
  89. package/src/models/water_meter_account.js +74 -74
  90. package/src/models/water_meter_communication.js +17 -17
  91. package/src/models/water_meter_concentrator.js +59 -59
  92. package/src/models/water_meter_daily_history.js +31 -31
  93. package/src/models/water_meter_iot_cards.js +34 -34
  94. package/src/models/water_meter_manufacturer.js +35 -35
  95. package/src/models/water_meter_monthly_history.js +37 -37
  96. package/src/models/water_meter_settings.js +88 -88
  97. package/src/models/water_meter_single_day_history.js +31 -31
  98. package/src/models/water_meter_size.js +15 -15
  99. package/src/models/water_meters.js +103 -103
  100. package/src/models/water_meters_delivery.js +76 -76
  101. package/src/models/workorder.js +49 -49
  102. package/src/models/quotation.js +0 -268
@@ -1,49 +1,49 @@
1
- const mongoose = require('mongoose');
2
-
3
- const workOrderSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- },
9
- requester: {
10
- type: mongoose.Schema.Types.ObjectId,
11
- ref: 'User',
12
- required: true,
13
- },
14
- assigneeName: {
15
- type: String,
16
- trim: true,
17
- },
18
- description: {
19
- type: String,
20
- required: true,
21
- trim: true,
22
- },
23
- pricing: {
24
- type: Number,
25
- required: true,
26
- min: 0,
27
- },
28
- status: {
29
- type: String,
30
- enum: ['in progress', 'completed', 'suspended', 'pending', 'cancelled'],
31
- default: 'pending',
32
- },
33
- type: {
34
- type: String,
35
- enum: ['scheduled', 'unscheduled'],
36
- required: true,
37
- },
38
- orderNumber: {
39
- type: Number,
40
- unique: true,
41
- required: true,
42
- },
43
- }, {
44
- timestamps: true,
45
- });
46
-
47
- const WorkOrder = mongoose.model('WorkOrder', workOrderSchema);
48
-
49
- module.exports = WorkOrder;
1
+ const mongoose = require('mongoose');
2
+
3
+ const workOrderSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ },
9
+ requester: {
10
+ type: mongoose.Schema.Types.ObjectId,
11
+ ref: 'User',
12
+ required: true,
13
+ },
14
+ assigneeName: {
15
+ type: String,
16
+ trim: true,
17
+ },
18
+ description: {
19
+ type: String,
20
+ required: true,
21
+ trim: true,
22
+ },
23
+ pricing: {
24
+ type: Number,
25
+ required: true,
26
+ min: 0,
27
+ },
28
+ status: {
29
+ type: String,
30
+ enum: ['in progress', 'completed', 'suspended', 'pending', 'cancelled'],
31
+ default: 'pending',
32
+ },
33
+ type: {
34
+ type: String,
35
+ enum: ['scheduled', 'unscheduled'],
36
+ required: true,
37
+ },
38
+ orderNumber: {
39
+ type: Number,
40
+ unique: true,
41
+ required: true,
42
+ },
43
+ }, {
44
+ timestamps: true,
45
+ });
46
+
47
+ const WorkOrder = mongoose.model('WorkOrder', workOrderSchema);
48
+
49
+ module.exports = WorkOrder;
@@ -1,268 +0,0 @@
1
- const mongoose = require('mongoose');
2
-
3
- const rfqSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- index: true
9
- },
10
- name: {
11
- type: String,
12
- required: true,
13
- trim: true,
14
- index: true
15
- },
16
- rfqNumber: {
17
- type: String,
18
- required: true,
19
- unique: true,
20
- trim: true,
21
- index: true
22
- },
23
- startDate: {
24
- type: Date,
25
- required: true
26
- },
27
- closingDate: {
28
- type: Date,
29
- required: true
30
- },
31
- currency: {
32
- type: String,
33
- required: true,
34
- default: 'KES',
35
- trim: true
36
- },
37
- rfqType: {
38
- type: String,
39
- required: true,
40
- enum: ['open', 'closed'],
41
- default: 'closed'
42
- },
43
- rfqFee: {
44
- type: Number,
45
- default: 0
46
- },
47
- rfqEvaluationType: {
48
- type: String,
49
- required: true,
50
- enum: ['automatic', 'approvers'],
51
- default: 'approvers'
52
- },
53
- notes: {
54
- type: String,
55
- trim: true
56
- },
57
- status: {
58
- type: String,
59
- enum: ['open','closed', 'awarded', 'canceled'],
60
- default: 'open',
61
- index: true
62
- },
63
- // RFQ Categories (Products or Services)
64
- categories: [{
65
- name: {
66
- type: String,
67
- required: true,
68
- trim: true
69
- },
70
- // For Product type
71
- products: [{
72
- productName: {
73
- type: String,
74
- trim: true,
75
- required: function() {
76
- return this.parent().categoryType === 'product';
77
- }
78
- },
79
- sku: {
80
- type: String,
81
- trim: true
82
- },
83
- quantity: {
84
- type: Number,
85
- required: function() {
86
- return this.parent().categoryType === 'product';
87
- }
88
- },
89
- unitOfMeasure: {
90
- type: String,
91
- trim: true
92
- },
93
- estimatedUnitPrice: {
94
- type: Number
95
- }
96
- }],
97
- // For Service type
98
- services: [{
99
- serviceDescription: {
100
- type: String,
101
- trim: true,
102
- required: function() {
103
- return this.parent().categoryType === 'service';
104
- }
105
- },
106
- quantity: {
107
- type: Number,
108
- required: function() {
109
- return this.parent().categoryType === 'service';
110
- }
111
- },
112
- unitOfMeasure: {
113
- type: String,
114
- trim: true
115
- },
116
- estimatedUnitPrice: {
117
- type: Number
118
- }
119
- }]
120
- }],
121
-
122
- // Suppliers invited to respond to the RFQ
123
- suppliers: [{
124
- supplierId: {
125
- type: mongoose.Schema.Types.ObjectId,
126
- ref: 'Supplier',
127
- required: true
128
- },
129
- supplierName: {
130
- type: String,
131
- required: true,
132
- trim: true
133
- },
134
- invitationStatus: {
135
- type: String,
136
- enum: ['pending', 'accepted', 'declined', 'no-response'],
137
- default: 'pending'
138
- },
139
- invitationDate: {
140
- type: Date,
141
- default: Date.now
142
- },
143
- responseDate: {
144
- type: Date
145
- },
146
- quotationSubmitted: {
147
- type: Boolean,
148
- default: false
149
- },
150
- quotationDetails: {
151
- submissionDate: {
152
- type: Date
153
- },
154
- totalAmount: {
155
- type: Number
156
- },
157
- items: [{
158
- categoryId: {
159
- type: mongoose.Schema.Types.ObjectId,
160
- required: true
161
- },
162
- itemId: {
163
- type: mongoose.Schema.Types.ObjectId,
164
- required: true
165
- },
166
- unitPrice: {
167
- type: Number,
168
- required: true
169
- },
170
- quantity: {
171
- type: Number,
172
- required: true
173
- },
174
- totalPrice: {
175
- type: Number,
176
- required: true
177
- },
178
- notes: {
179
- type: String,
180
- trim: true
181
- }
182
- }],
183
- attachments: [{
184
- name: {
185
- type: String,
186
- required: true
187
- },
188
- fileType: {
189
- type: String,
190
- required: true
191
- },
192
- filePath: {
193
- type: String,
194
- required: true
195
- },
196
- uploadDate: {
197
- type: Date,
198
- default: Date.now
199
- }
200
- }],
201
- notes: {
202
- type: String,
203
- trim: true
204
- }
205
- },
206
- evaluationScore: {
207
- type: Number,
208
- min: 0,
209
- max: 100
210
- },
211
- evaluationNotes: {
212
- type: String,
213
- trim: true
214
- }
215
- }],
216
-
217
-
218
- // Award details after RFQ is closed
219
- awardDetails: {
220
- awarded: {
221
- type: Boolean,
222
- default: false
223
- },
224
- awardedSupplierId: {
225
- type: mongoose.Schema.Types.ObjectId,
226
- ref: 'Supplier'
227
- },
228
- awardedSupplierName: {
229
- type: String,
230
- trim: true
231
- },
232
- awardDate: {
233
- type: Date
234
- },
235
- awardNotes: {
236
- type: String,
237
- trim: true
238
- },
239
- purchaseOrderCreated: {
240
- type: Boolean,
241
- default: false
242
- },
243
- purchaseOrderId: {
244
- type: mongoose.Schema.Types.ObjectId,
245
- ref: 'PurchaseOrder'
246
- }
247
- }
248
- }, {
249
- timestamps: true
250
- });
251
-
252
- // Virtual for tracking participation rate
253
- rfqSchema.virtual('participationRate').get(function() {
254
- if (!this.suppliers || this.suppliers.length === 0) return 0;
255
-
256
- const respondedCount = this.suppliers.filter(
257
- supplier => supplier.quotationSubmitted === true
258
- ).length;
259
-
260
- return (respondedCount / this.suppliers.length) * 100;
261
- });
262
-
263
- // Index for efficient querying by date ranges
264
- rfqSchema.index({ startDate: 1, closingDate: 1 });
265
-
266
- const RFQ = mongoose.model('RFQ', rfqSchema);
267
-
268
- module.exports = RFQ;