payservedb 6.7.6 → 6.7.8

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 (144) hide show
  1. package/.env +2 -2
  2. package/index.js +280 -279
  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/asset.js +92 -92
  9. package/src/models/assetsAssignment.js +64 -64
  10. package/src/models/auditTrail.js +346 -346
  11. package/src/models/bankdetails.js +40 -40
  12. package/src/models/billerAddress.js +119 -119
  13. package/src/models/booking_invoice.js +151 -151
  14. package/src/models/bookinganalytics.js +63 -63
  15. package/src/models/bookingconfig.js +45 -45
  16. package/src/models/bookingproperty.js +122 -122
  17. package/src/models/bookingreservation.js +192 -192
  18. package/src/models/bookingrevenuerecord.js +84 -84
  19. package/src/models/budget.js +95 -95
  20. package/src/models/budgetCategory.js +19 -19
  21. package/src/models/campaigns.js +94 -94
  22. package/src/models/cashpayment.js +264 -264
  23. package/src/models/combinedUnits.js +62 -62
  24. package/src/models/common_area_electricity.js +38 -38
  25. package/src/models/common_area_generator.js +41 -41
  26. package/src/models/common_area_utility_alert.js +37 -37
  27. package/src/models/common_area_water.js +39 -39
  28. package/src/models/communication_status.js +33 -33
  29. package/src/models/company.js +53 -53
  30. package/src/models/coreInvoiceSettings.js +100 -100
  31. package/src/models/country_tax.js +42 -42
  32. package/src/models/currency_settings.js +39 -39
  33. package/src/models/customer.js +208 -208
  34. package/src/models/dailyChecklist.js +312 -312
  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 +62 -62
  45. package/src/models/facilityInvoice.js +154 -0
  46. package/src/models/facilityWalletTransactionsMetadata.js +236 -236
  47. package/src/models/facility_departements.js +20 -20
  48. package/src/models/facility_payment_details.js +20 -20
  49. package/src/models/facilityasset.js +25 -25
  50. package/src/models/faq.js +18 -18
  51. package/src/models/gl_account_double_entries.js +25 -25
  52. package/src/models/gl_accounts.js +56 -56
  53. package/src/models/gl_entries.js +49 -49
  54. package/src/models/goodsReceivedNotes.js +115 -115
  55. package/src/models/guard.js +47 -47
  56. package/src/models/handover.js +246 -246
  57. package/src/models/invoice.js +336 -336
  58. package/src/models/item_inspection.js +67 -67
  59. package/src/models/leaseagreement.js +226 -226
  60. package/src/models/leasetemplate.js +17 -17
  61. package/src/models/levy.js +206 -206
  62. package/src/models/levy_invoice_settings.js +26 -26
  63. package/src/models/levycontract.js +168 -168
  64. package/src/models/levytype.js +23 -23
  65. package/src/models/maintenance_service_vendor.js +38 -38
  66. package/src/models/maintenance_services.js +17 -17
  67. package/src/models/maintenancerequisition.js +31 -31
  68. package/src/models/master_workplan.js +32 -32
  69. package/src/models/master_workplan_child.js +34 -34
  70. package/src/models/message.js +38 -38
  71. package/src/models/module.js +21 -21
  72. package/src/models/notification.js +44 -44
  73. package/src/models/paymentTermsMarks.js +19 -19
  74. package/src/models/penalty.js +76 -76
  75. package/src/models/pendingCredentials.js +32 -32
  76. package/src/models/powerMeterCommunicationProtocol.js +17 -17
  77. package/src/models/powerMeterCustomerAccount.js +78 -78
  78. package/src/models/powerMeterCustomerBand.js +14 -14
  79. package/src/models/powerMeterDailyReading.js +30 -30
  80. package/src/models/powerMeterGateways.js +37 -37
  81. package/src/models/powerMeterMonthlyReading.js +34 -34
  82. package/src/models/powerMeterPowerCharges.js +53 -53
  83. package/src/models/powerMeterSettings.js +138 -138
  84. package/src/models/powerMeterSingleDayReading.js +32 -32
  85. package/src/models/powerMeters.js +104 -104
  86. package/src/models/powerMetersManufacturer.js +14 -14
  87. package/src/models/propertyManagerContract.js +556 -556
  88. package/src/models/propertyManagerRevenue.js +195 -195
  89. package/src/models/purchaseOrderInvoice.js +74 -74
  90. package/src/models/purchase_order.js +213 -213
  91. package/src/models/purchase_request.js +110 -110
  92. package/src/models/refresh_token.js +23 -23
  93. package/src/models/reminder.js +197 -197
  94. package/src/models/report.js +13 -13
  95. package/src/models/resident.js +121 -121
  96. package/src/models/rfq_details.js +131 -131
  97. package/src/models/rfq_response.js +153 -153
  98. package/src/models/service_charge_invoice_upload.js +42 -42
  99. package/src/models/service_charge_payments.js +27 -27
  100. package/src/models/servicerequest.js +55 -55
  101. package/src/models/settings.js +62 -62
  102. package/src/models/smart_meter_daily_consumption.js +44 -44
  103. package/src/models/sms_africastalking.js +20 -20
  104. package/src/models/sms_balance_notification.js +26 -26
  105. package/src/models/sms_meliora.js +20 -20
  106. package/src/models/staff.js +36 -36
  107. package/src/models/stocksandspare.js +161 -161
  108. package/src/models/suppliers.js +74 -74
  109. package/src/models/tickets.js +121 -121
  110. package/src/models/unitManagementTemplate.js +44 -44
  111. package/src/models/unitasset.js +25 -25
  112. package/src/models/units.js +117 -117
  113. package/src/models/user.js +186 -186
  114. package/src/models/valueaddedservices.js +79 -79
  115. package/src/models/vas_invoices_upload.js +50 -50
  116. package/src/models/vas_payments.js +24 -24
  117. package/src/models/vasinvoice.js +192 -192
  118. package/src/models/vasvendor.js +57 -57
  119. package/src/models/visitLog.js +95 -95
  120. package/src/models/visitor.js +67 -67
  121. package/src/models/waitlist.js +45 -45
  122. package/src/models/wallet.js +44 -44
  123. package/src/models/wallet_transactions.js +50 -50
  124. package/src/models/water_invoice.js +305 -305
  125. package/src/models/water_meter_Command_Queue.js +33 -33
  126. package/src/models/water_meter_account.js +82 -82
  127. package/src/models/water_meter_billing.js +58 -58
  128. package/src/models/water_meter_communication.js +17 -17
  129. package/src/models/water_meter_communication_logs.js +30 -30
  130. package/src/models/water_meter_concentrator.js +66 -66
  131. package/src/models/water_meter_daily_history.js +32 -32
  132. package/src/models/water_meter_iot_cards.js +34 -34
  133. package/src/models/water_meter_manufacturer.js +35 -35
  134. package/src/models/water_meter_monthly_history.js +36 -36
  135. package/src/models/water_meter_negative_amounts.js +38 -38
  136. package/src/models/water_meter_settings.js +227 -227
  137. package/src/models/water_meter_single_day_history.js +34 -34
  138. package/src/models/water_meter_size.js +15 -15
  139. package/src/models/water_meters.js +134 -134
  140. package/src/models/water_meters_delivery.js +76 -76
  141. package/src/models/water_prepaid_credit.js +47 -47
  142. package/src/models/water_prepaid_debit.js +50 -50
  143. package/src/models/workorder.js +49 -49
  144. package/src/models/archivedauditlog.js +0 -83
@@ -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;