payservedb 6.5.5 → 6.5.7

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 (140) hide show
  1. package/.env +2 -2
  2. package/index.js +277 -277
  3. package/package.json +17 -17
  4. package/src/models/account.js +35 -35
  5. package/src/models/apilog.js +18 -18
  6. package/src/models/approvalsWorkflows.js +49 -49
  7. package/src/models/archivedapilog.js +18 -18
  8. package/src/models/archivedauditlog.js +83 -83
  9. package/src/models/asset.js +92 -92
  10. package/src/models/assetsAssignment.js +64 -64
  11. package/src/models/auditTrail.js +319 -319
  12. package/src/models/auditlog.js +83 -83
  13. package/src/models/bankdetails.js +40 -40
  14. package/src/models/billerAddress.js +119 -119
  15. package/src/models/booking_invoice.js +151 -151
  16. package/src/models/bookinganalytics.js +63 -63
  17. package/src/models/bookingconfig.js +45 -45
  18. package/src/models/bookingproperty.js +122 -122
  19. package/src/models/bookingreservation.js +192 -192
  20. package/src/models/bookingrevenuerecord.js +84 -84
  21. package/src/models/budget.js +95 -95
  22. package/src/models/budgetCategory.js +19 -19
  23. package/src/models/campaigns.js +94 -94
  24. package/src/models/cashpayment.js +264 -264
  25. package/src/models/combinedUnits.js +62 -62
  26. package/src/models/common_area_electricity.js +38 -38
  27. package/src/models/common_area_generator.js +41 -41
  28. package/src/models/common_area_utility_alert.js +37 -37
  29. package/src/models/common_area_water.js +39 -39
  30. package/src/models/communication_status.js +33 -33
  31. package/src/models/company.js +53 -53
  32. package/src/models/country_tax.js +42 -42
  33. package/src/models/currency_settings.js +39 -39
  34. package/src/models/customer.js +208 -208
  35. package/src/models/default_payment_details.js +17 -17
  36. package/src/models/deliveryTimeMarks.js +18 -18
  37. package/src/models/dutyRosterChecklist.js +250 -250
  38. package/src/models/dutyroster.js +136 -136
  39. package/src/models/email.js +37 -37
  40. package/src/models/email_sms_queue.js +61 -61
  41. package/src/models/entry_exit.js +53 -53
  42. package/src/models/expense.js +99 -99
  43. package/src/models/expense_category.js +45 -45
  44. package/src/models/facility.js +61 -61
  45. package/src/models/facilityWalletTransactionsMetadata.js +236 -236
  46. package/src/models/facility_departements.js +20 -20
  47. package/src/models/facility_payment_details.js +20 -20
  48. package/src/models/facilityasset.js +25 -25
  49. package/src/models/faq.js +18 -18
  50. package/src/models/gl_account_double_entries.js +25 -25
  51. package/src/models/gl_accounts.js +56 -56
  52. package/src/models/gl_entries.js +49 -49
  53. package/src/models/goodsReceivedNotes.js +115 -115
  54. package/src/models/guard.js +47 -47
  55. package/src/models/handover.js +246 -246
  56. package/src/models/invoice.js +336 -336
  57. package/src/models/item_inspection.js +67 -67
  58. package/src/models/leaseagreement.js +226 -226
  59. package/src/models/leasetemplate.js +17 -17
  60. package/src/models/levy.js +206 -206
  61. package/src/models/levy_invoice_settings.js +26 -26
  62. package/src/models/levycontract.js +117 -117
  63. package/src/models/levytype.js +23 -23
  64. package/src/models/maintenance_service_vendor.js +38 -38
  65. package/src/models/maintenance_services.js +17 -17
  66. package/src/models/maintenancerequisition.js +31 -31
  67. package/src/models/master_workplan.js +32 -32
  68. package/src/models/master_workplan_child.js +34 -34
  69. package/src/models/message.js +38 -38
  70. package/src/models/module.js +21 -21
  71. package/src/models/notification.js +44 -44
  72. package/src/models/paymentTermsMarks.js +19 -19
  73. package/src/models/penalty.js +76 -76
  74. package/src/models/pendingCredentials.js +32 -32
  75. package/src/models/powerMeterCustomerAccount.js +78 -78
  76. package/src/models/powerMeterCustomerBand.js +14 -14
  77. package/src/models/powerMeterDailyReading.js +30 -30
  78. package/src/models/powerMeterMonthlyReading.js +34 -34
  79. package/src/models/powerMeterPowerCharges.js +53 -53
  80. package/src/models/powerMeterSettings.js +138 -138
  81. package/src/models/powerMeterSingleDayReading.js +32 -32
  82. package/src/models/powerMeters.js +65 -65
  83. package/src/models/powerMetersManufacturer.js +14 -14
  84. package/src/models/propertyManagerContract.js +556 -556
  85. package/src/models/propertyManagerRevenue.js +195 -195
  86. package/src/models/purchaseOrderInvoice.js +74 -74
  87. package/src/models/purchase_order.js +213 -213
  88. package/src/models/purchase_request.js +110 -110
  89. package/src/models/refresh_token.js +23 -23
  90. package/src/models/reminder.js +197 -197
  91. package/src/models/report.js +13 -13
  92. package/src/models/resident.js +121 -121
  93. package/src/models/rfq_details.js +131 -131
  94. package/src/models/rfq_response.js +153 -153
  95. package/src/models/service_charge_invoice_upload.js +42 -42
  96. package/src/models/service_charge_payments.js +27 -27
  97. package/src/models/servicerequest.js +55 -55
  98. package/src/models/settings.js +62 -62
  99. package/src/models/smart_meter_daily_consumption.js +44 -44
  100. package/src/models/sms_africastalking.js +20 -20
  101. package/src/models/sms_balance_notification.js +26 -26
  102. package/src/models/sms_meliora.js +20 -20
  103. package/src/models/staff.js +36 -36
  104. package/src/models/stocksandspare.js +161 -161
  105. package/src/models/suppliers.js +74 -74
  106. package/src/models/tickets.js +121 -121
  107. package/src/models/unitManagementTemplate.js +44 -44
  108. package/src/models/unitasset.js +25 -25
  109. package/src/models/units.js +117 -117
  110. package/src/models/user.js +186 -186
  111. package/src/models/valueaddedservices.js +79 -79
  112. package/src/models/vas_invoices_upload.js +50 -50
  113. package/src/models/vas_payments.js +24 -24
  114. package/src/models/vasinvoice.js +192 -192
  115. package/src/models/vasvendor.js +57 -57
  116. package/src/models/visitLog.js +86 -86
  117. package/src/models/visitor.js +67 -67
  118. package/src/models/waitlist.js +45 -45
  119. package/src/models/wallet.js +44 -44
  120. package/src/models/wallet_transactions.js +50 -50
  121. package/src/models/water_invoice.js +305 -305
  122. package/src/models/water_meter_Command_Queue.js +33 -33
  123. package/src/models/water_meter_account.js +78 -78
  124. package/src/models/water_meter_billing.js +58 -58
  125. package/src/models/water_meter_communication.js +17 -17
  126. package/src/models/water_meter_communication_logs.js +30 -30
  127. package/src/models/water_meter_concentrator.js +66 -66
  128. package/src/models/water_meter_daily_history.js +32 -32
  129. package/src/models/water_meter_iot_cards.js +34 -34
  130. package/src/models/water_meter_manufacturer.js +35 -35
  131. package/src/models/water_meter_monthly_history.js +36 -36
  132. package/src/models/water_meter_negative_amounts.js +38 -38
  133. package/src/models/water_meter_settings.js +180 -180
  134. package/src/models/water_meter_single_day_history.js +34 -34
  135. package/src/models/water_meter_size.js +15 -15
  136. package/src/models/water_meters.js +134 -123
  137. package/src/models/water_meters_delivery.js +76 -76
  138. package/src/models/water_prepaid_credit.js +47 -47
  139. package/src/models/water_prepaid_debit.js +50 -50
  140. package/src/models/workorder.js +49 -49
@@ -1,306 +1,306 @@
1
- const mongoose = require('mongoose');
2
-
3
- const waterInvoiceSchema = new mongoose.Schema(
4
- {
5
- // Basic identifiers
6
- invoiceNumber: {
7
- type: String,
8
- required: true,
9
- unique: true
10
- },
11
- accountNumber: {
12
- type: String,
13
- required: true
14
- },
15
- unitName: {
16
- type: String,
17
- required: true,
18
- },
19
- yearMonth: {
20
- type: String,
21
- required: true,
22
- },
23
- facilityId: {
24
- type: mongoose.Schema.Types.ObjectId,
25
- required: true
26
- },
27
- customerId: {
28
- type: mongoose.Schema.Types.ObjectId,
29
- required: true
30
- },
31
- billingType: {
32
- type: String,
33
- enum: ['postpaid'],
34
- },
35
- balanceBroughtForward: {
36
- type: Number,
37
- default: 0
38
- },
39
-
40
- // PAYMENTS
41
- paymentMethods: {
42
- mobilePayment: {
43
- status: {
44
- type: Boolean,
45
- default: false
46
- },
47
- paymentId: {
48
- type: mongoose.Schema.Types.ObjectId,
49
- ref: 'FacilityPaymentDetails'
50
- }
51
- },
52
- bankPayment: {
53
- status: {
54
- type: Boolean,
55
- default: false
56
- },
57
- paymentId: {
58
- type: mongoose.Schema.Types.ObjectId,
59
- ref: 'BankDetails'
60
- }
61
- }
62
- },
63
-
64
- // Biller Address Information (added from WaterMeterSettings)
65
- billerAddress: {
66
- name: {
67
- type: String,
68
- required: [true, "Biller name is required"],
69
- trim: true,
70
- minlength: [1, "Biller name must be at least 1 character long"],
71
- },
72
- email: {
73
- type: String,
74
- required: [true, "Biller email is required"],
75
- trim: true,
76
- lowercase: true,
77
- validate: {
78
- validator: function (v) {
79
- return /^\w+([\.-]?\w+)@\w+([\.-]?\w+)(\.\w{2,3})+$/.test(v);
80
- },
81
- message: "Please enter a valid email address"
82
- }
83
- },
84
- phone: {
85
- type: String,
86
- required: [true, "Biller phone is required"],
87
- trim: true,
88
- },
89
- address: {
90
- type: String,
91
- required: [true, "Biller address is required"],
92
- trim: true,
93
- },
94
- city: {
95
- type: String,
96
- required: [true, "Biller city is required"],
97
- trim: true,
98
- }
99
- },
100
-
101
- // Dates
102
- dateIssued: {
103
- type: Date,
104
- default: Date.now
105
- },
106
- dueDate: {
107
- type: Date,
108
- required: true
109
- },
110
-
111
- // Meter & Consumption Details
112
- meterNumber: {
113
- type: String,
114
- required: true
115
- },
116
- meterReadings: {
117
- previousReading: {
118
- type: Number,
119
- required: true
120
- },
121
- currentReading: {
122
- type: Number,
123
- required: true
124
- },
125
- usage: {
126
- type: Number,
127
- required: true,
128
- }
129
- },
130
- consumptionPeriod: {
131
- startDate: {
132
- type: Date,
133
- required: true
134
- },
135
- endDate: {
136
- type: Date,
137
- required: true
138
- }
139
- },
140
-
141
- // Charges
142
- charges: {
143
- waterCharge: {
144
- type: Number,
145
- required: true
146
- },
147
- sewerCharge: {
148
- type: Number,
149
- default: 0
150
- },
151
- tax: {
152
- type: Number,
153
- default: 0
154
- },
155
- fixedCharge: {
156
- type: Number,
157
- default: 0
158
- },
159
- totalMonthlyBill: {
160
- type: Number,
161
- required: true
162
- }
163
- },
164
- amountPaid: {
165
- type: Number,
166
- default: 0
167
- },
168
- imageUrl: { type: String, trim: true },
169
-
170
- // Invoice Note & Status
171
- invoiceNote: {
172
- type: String,
173
- default: 'Payment is due within 10 days'
174
- },
175
- status: {
176
- type: String,
177
- required: true,
178
- enum: ['Pending', 'Paid', 'Partially Paid', 'Cancelled', 'Overdue', 'Unpaid'],
179
- default: 'Pending'
180
- },
181
-
182
- // Currency Info
183
- currency: {
184
- id: {
185
- type: mongoose.Schema.Types.ObjectId
186
- },
187
- name: {
188
- type: String,
189
- default: 'Kenyan Shilling'
190
- },
191
- code: {
192
- type: String,
193
- default: 'KES'
194
- },
195
- symbol: {
196
- type: String,
197
- default: 'KSh'
198
- }
199
- },
200
- notificationsSent: {
201
- type: {
202
- sms: {
203
- type: Boolean,
204
- default: false
205
- },
206
- email: {
207
- type: Boolean,
208
- default: false
209
- },
210
- sentAt: {
211
- type: Date,
212
- default: null
213
- },
214
- lastAttempt: {
215
- type: Date,
216
- default: null
217
- },
218
- attempts: {
219
- type: Number,
220
- default: 0
221
- },
222
- smsDetails: {
223
- type: {
224
- success: Boolean,
225
- error: String,
226
- sentAt: Date,
227
- phoneNumber: String
228
- },
229
- default: null
230
- },
231
- emailDetails: {
232
- type: {
233
- success: Boolean,
234
- error: String,
235
- sentAt: Date,
236
- emailAddress: String
237
- },
238
- default: null
239
- }
240
- },
241
- default: {
242
- sms: false,
243
- email: false,
244
- sentAt: null,
245
- lastAttempt: null,
246
- attempts: 0,
247
- smsDetails: null,
248
- emailDetails: null
249
- }
250
- },
251
-
252
- // Payment & Reconciliation
253
- reconciliationHistory: [
254
- {
255
- date: {
256
- type: Date,
257
- default: Date.now
258
- },
259
- amount: {
260
- type: Number,
261
- required: true
262
- },
263
- type: {
264
- type: String,
265
- default: 'Manual'
266
- },
267
- paymentReference: {
268
- type: String
269
- },
270
- paymentCompletion: {
271
- type: String,
272
- default: 'Completed'
273
- },
274
- sourceInvoice: {
275
- type: String
276
- },
277
- destinationInvoice: {
278
- type: String
279
- },
280
- notes: {
281
- type: String
282
- },
283
- remainingBalance: {
284
- type: Number
285
- }
286
- }
287
- ],
288
- },
289
- {
290
- timestamps: true
291
- }
292
- );
293
-
294
- waterInvoiceSchema.pre('save', function (next) {
295
- if (this.isModified('dueDate') || this.isNew) {
296
- const today = new Date();
297
- if (this.dueDate < today && this.status === 'Pending') {
298
- this.status = 'Overdue';
299
- }
300
- }
301
- next();
302
- });
303
-
304
- const WaterInvoice = mongoose.model('WaterInvoice', waterInvoiceSchema);
305
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const waterInvoiceSchema = new mongoose.Schema(
4
+ {
5
+ // Basic identifiers
6
+ invoiceNumber: {
7
+ type: String,
8
+ required: true,
9
+ unique: true
10
+ },
11
+ accountNumber: {
12
+ type: String,
13
+ required: true
14
+ },
15
+ unitName: {
16
+ type: String,
17
+ required: true,
18
+ },
19
+ yearMonth: {
20
+ type: String,
21
+ required: true,
22
+ },
23
+ facilityId: {
24
+ type: mongoose.Schema.Types.ObjectId,
25
+ required: true
26
+ },
27
+ customerId: {
28
+ type: mongoose.Schema.Types.ObjectId,
29
+ required: true
30
+ },
31
+ billingType: {
32
+ type: String,
33
+ enum: ['postpaid'],
34
+ },
35
+ balanceBroughtForward: {
36
+ type: Number,
37
+ default: 0
38
+ },
39
+
40
+ // PAYMENTS
41
+ paymentMethods: {
42
+ mobilePayment: {
43
+ status: {
44
+ type: Boolean,
45
+ default: false
46
+ },
47
+ paymentId: {
48
+ type: mongoose.Schema.Types.ObjectId,
49
+ ref: 'FacilityPaymentDetails'
50
+ }
51
+ },
52
+ bankPayment: {
53
+ status: {
54
+ type: Boolean,
55
+ default: false
56
+ },
57
+ paymentId: {
58
+ type: mongoose.Schema.Types.ObjectId,
59
+ ref: 'BankDetails'
60
+ }
61
+ }
62
+ },
63
+
64
+ // Biller Address Information (added from WaterMeterSettings)
65
+ billerAddress: {
66
+ name: {
67
+ type: String,
68
+ required: [true, "Biller name is required"],
69
+ trim: true,
70
+ minlength: [1, "Biller name must be at least 1 character long"],
71
+ },
72
+ email: {
73
+ type: String,
74
+ required: [true, "Biller email is required"],
75
+ trim: true,
76
+ lowercase: true,
77
+ validate: {
78
+ validator: function (v) {
79
+ return /^\w+([\.-]?\w+)@\w+([\.-]?\w+)(\.\w{2,3})+$/.test(v);
80
+ },
81
+ message: "Please enter a valid email address"
82
+ }
83
+ },
84
+ phone: {
85
+ type: String,
86
+ required: [true, "Biller phone is required"],
87
+ trim: true,
88
+ },
89
+ address: {
90
+ type: String,
91
+ required: [true, "Biller address is required"],
92
+ trim: true,
93
+ },
94
+ city: {
95
+ type: String,
96
+ required: [true, "Biller city is required"],
97
+ trim: true,
98
+ }
99
+ },
100
+
101
+ // Dates
102
+ dateIssued: {
103
+ type: Date,
104
+ default: Date.now
105
+ },
106
+ dueDate: {
107
+ type: Date,
108
+ required: true
109
+ },
110
+
111
+ // Meter & Consumption Details
112
+ meterNumber: {
113
+ type: String,
114
+ required: true
115
+ },
116
+ meterReadings: {
117
+ previousReading: {
118
+ type: Number,
119
+ required: true
120
+ },
121
+ currentReading: {
122
+ type: Number,
123
+ required: true
124
+ },
125
+ usage: {
126
+ type: Number,
127
+ required: true,
128
+ }
129
+ },
130
+ consumptionPeriod: {
131
+ startDate: {
132
+ type: Date,
133
+ required: true
134
+ },
135
+ endDate: {
136
+ type: Date,
137
+ required: true
138
+ }
139
+ },
140
+
141
+ // Charges
142
+ charges: {
143
+ waterCharge: {
144
+ type: Number,
145
+ required: true
146
+ },
147
+ sewerCharge: {
148
+ type: Number,
149
+ default: 0
150
+ },
151
+ tax: {
152
+ type: Number,
153
+ default: 0
154
+ },
155
+ fixedCharge: {
156
+ type: Number,
157
+ default: 0
158
+ },
159
+ totalMonthlyBill: {
160
+ type: Number,
161
+ required: true
162
+ }
163
+ },
164
+ amountPaid: {
165
+ type: Number,
166
+ default: 0
167
+ },
168
+ imageUrl: { type: String, trim: true },
169
+
170
+ // Invoice Note & Status
171
+ invoiceNote: {
172
+ type: String,
173
+ default: 'Payment is due within 10 days'
174
+ },
175
+ status: {
176
+ type: String,
177
+ required: true,
178
+ enum: ['Pending', 'Paid', 'Partially Paid', 'Cancelled', 'Overdue', 'Unpaid'],
179
+ default: 'Pending'
180
+ },
181
+
182
+ // Currency Info
183
+ currency: {
184
+ id: {
185
+ type: mongoose.Schema.Types.ObjectId
186
+ },
187
+ name: {
188
+ type: String,
189
+ default: 'Kenyan Shilling'
190
+ },
191
+ code: {
192
+ type: String,
193
+ default: 'KES'
194
+ },
195
+ symbol: {
196
+ type: String,
197
+ default: 'KSh'
198
+ }
199
+ },
200
+ notificationsSent: {
201
+ type: {
202
+ sms: {
203
+ type: Boolean,
204
+ default: false
205
+ },
206
+ email: {
207
+ type: Boolean,
208
+ default: false
209
+ },
210
+ sentAt: {
211
+ type: Date,
212
+ default: null
213
+ },
214
+ lastAttempt: {
215
+ type: Date,
216
+ default: null
217
+ },
218
+ attempts: {
219
+ type: Number,
220
+ default: 0
221
+ },
222
+ smsDetails: {
223
+ type: {
224
+ success: Boolean,
225
+ error: String,
226
+ sentAt: Date,
227
+ phoneNumber: String
228
+ },
229
+ default: null
230
+ },
231
+ emailDetails: {
232
+ type: {
233
+ success: Boolean,
234
+ error: String,
235
+ sentAt: Date,
236
+ emailAddress: String
237
+ },
238
+ default: null
239
+ }
240
+ },
241
+ default: {
242
+ sms: false,
243
+ email: false,
244
+ sentAt: null,
245
+ lastAttempt: null,
246
+ attempts: 0,
247
+ smsDetails: null,
248
+ emailDetails: null
249
+ }
250
+ },
251
+
252
+ // Payment & Reconciliation
253
+ reconciliationHistory: [
254
+ {
255
+ date: {
256
+ type: Date,
257
+ default: Date.now
258
+ },
259
+ amount: {
260
+ type: Number,
261
+ required: true
262
+ },
263
+ type: {
264
+ type: String,
265
+ default: 'Manual'
266
+ },
267
+ paymentReference: {
268
+ type: String
269
+ },
270
+ paymentCompletion: {
271
+ type: String,
272
+ default: 'Completed'
273
+ },
274
+ sourceInvoice: {
275
+ type: String
276
+ },
277
+ destinationInvoice: {
278
+ type: String
279
+ },
280
+ notes: {
281
+ type: String
282
+ },
283
+ remainingBalance: {
284
+ type: Number
285
+ }
286
+ }
287
+ ],
288
+ },
289
+ {
290
+ timestamps: true
291
+ }
292
+ );
293
+
294
+ waterInvoiceSchema.pre('save', function (next) {
295
+ if (this.isModified('dueDate') || this.isNew) {
296
+ const today = new Date();
297
+ if (this.dueDate < today && this.status === 'Pending') {
298
+ this.status = 'Overdue';
299
+ }
300
+ }
301
+ next();
302
+ });
303
+
304
+ const WaterInvoice = mongoose.model('WaterInvoice', waterInvoiceSchema);
305
+
306
306
  module.exports = WaterInvoice;
@@ -1,33 +1,33 @@
1
- const mongoose = require('mongoose');
2
-
3
- const meterCommandQueueSchema = new mongoose.Schema({
4
- meterNumber: {
5
- type: String,
6
- required: true
7
- },
8
- concentratorSerialNumber: {
9
- type: String,
10
- required: true
11
- },
12
- commandType: {
13
- type: String,
14
- enum: ['open', 'close', 'read'],
15
- required: true
16
- },
17
- status: {
18
- type: String,
19
- enum: ['pending', 'sent', 'acknowledged', 'failed'],
20
- default: 'pending'
21
- },
22
- retryCount: {
23
- type: Number,
24
- default: 0
25
- },
26
- sentAt: {
27
- type: Date
28
- }
29
- }, { timestamps: true });
30
-
31
- const MeterCommandQueue = mongoose.model('MeterCommandQueue', meterCommandQueueSchema);
32
-
33
- module.exports = MeterCommandQueue;
1
+ const mongoose = require('mongoose');
2
+
3
+ const meterCommandQueueSchema = new mongoose.Schema({
4
+ meterNumber: {
5
+ type: String,
6
+ required: true
7
+ },
8
+ concentratorSerialNumber: {
9
+ type: String,
10
+ required: true
11
+ },
12
+ commandType: {
13
+ type: String,
14
+ enum: ['open', 'close', 'read'],
15
+ required: true
16
+ },
17
+ status: {
18
+ type: String,
19
+ enum: ['pending', 'sent', 'acknowledged', 'failed'],
20
+ default: 'pending'
21
+ },
22
+ retryCount: {
23
+ type: Number,
24
+ default: 0
25
+ },
26
+ sentAt: {
27
+ type: Date
28
+ }
29
+ }, { timestamps: true });
30
+
31
+ const MeterCommandQueue = mongoose.model('MeterCommandQueue', meterCommandQueueSchema);
32
+
33
+ module.exports = MeterCommandQueue;