payservedb 4.3.8 → 4.4.1

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 (82) hide show
  1. package/.env +2 -2
  2. package/index.js +152 -152
  3. package/package.json +17 -17
  4. package/src/models/account.js +36 -36
  5. package/src/models/analog_water_billing.js +58 -58
  6. package/src/models/apilog.js +18 -18
  7. package/src/models/archivedapilog.js +18 -18
  8. package/src/models/archivedauditlog.js +83 -83
  9. package/src/models/asset.js +34 -34
  10. package/src/models/auditlog.js +83 -83
  11. package/src/models/bankdetails.js +40 -40
  12. package/src/models/budget.js +33 -33
  13. package/src/models/budgetCategory.js +19 -19
  14. package/src/models/campaigns.js +72 -72
  15. package/src/models/cashpayment.js +185 -185
  16. package/src/models/combinedUnits.js +62 -62
  17. package/src/models/company.js +53 -53
  18. package/src/models/country_tax.js +42 -42
  19. package/src/models/currency_settings.js +39 -39
  20. package/src/models/customer.js +178 -178
  21. package/src/models/default_payment_details.js +17 -17
  22. package/src/models/dutyroster.js +39 -39
  23. package/src/models/email.js +24 -24
  24. package/src/models/entry_exit.js +53 -53
  25. package/src/models/expense.js +55 -55
  26. package/src/models/facility.js +58 -58
  27. package/src/models/facility_payment_details.js +20 -20
  28. package/src/models/facilityasset.js +25 -25
  29. package/src/models/faq.js +18 -18
  30. package/src/models/guard.js +47 -47
  31. package/src/models/handover.js +241 -241
  32. package/src/models/invoice.js +252 -210
  33. package/src/models/item_inspection.js +67 -67
  34. package/src/models/leaseagreement.js +156 -156
  35. package/src/models/leasetemplate.js +17 -17
  36. package/src/models/levy.js +72 -72
  37. package/src/models/levy_invoice_settings.js +26 -26
  38. package/src/models/levycontract.js +65 -65
  39. package/src/models/levytype.js +23 -23
  40. package/src/models/maintenance_service_vendor.js +38 -38
  41. package/src/models/maintenance_services.js +17 -17
  42. package/src/models/maintenancerequisition.js +31 -31
  43. package/src/models/message.js +38 -38
  44. package/src/models/module.js +21 -21
  45. package/src/models/notification.js +24 -24
  46. package/src/models/penalty.js +76 -76
  47. package/src/models/refresh_token.js +23 -23
  48. package/src/models/reminder.js +161 -161
  49. package/src/models/report.js +13 -13
  50. package/src/models/resident.js +121 -121
  51. package/src/models/service_charge_invoice_upload.js +42 -42
  52. package/src/models/service_charge_payments.js +27 -27
  53. package/src/models/servicerequest.js +55 -55
  54. package/src/models/settings.js +62 -62
  55. package/src/models/smart_meter_daily_consumption.js +44 -44
  56. package/src/models/sms_africastalking.js +20 -20
  57. package/src/models/sms_meliora.js +16 -16
  58. package/src/models/staff.js +36 -36
  59. package/src/models/stocksandspare.js +34 -34
  60. package/src/models/tickets.js +109 -109
  61. package/src/models/unitasset.js +25 -25
  62. package/src/models/units.js +70 -70
  63. package/src/models/user.js +94 -94
  64. package/src/models/valueaddedservices.js +36 -36
  65. package/src/models/vas_invoices_upload.js +50 -50
  66. package/src/models/vas_payments.js +24 -24
  67. package/src/models/vasinvoice.js +159 -159
  68. package/src/models/vasvendor.js +57 -57
  69. package/src/models/visitLog.js +86 -86
  70. package/src/models/visitor.js +63 -63
  71. package/src/models/waitlist.js +45 -45
  72. package/src/models/water_invoice.js +192 -192
  73. package/src/models/water_meter_account.js +73 -74
  74. package/src/models/water_meter_communication.js +17 -17
  75. package/src/models/water_meter_concentrator.js +59 -59
  76. package/src/models/water_meter_iot_cards.js +34 -34
  77. package/src/models/water_meter_manufacturer.js +35 -35
  78. package/src/models/water_meter_settings.js +101 -88
  79. package/src/models/water_meter_size.js +15 -15
  80. package/src/models/water_meters.js +110 -110
  81. package/src/models/water_meters_delivery.js +76 -76
  82. package/src/models/workorder.js +49 -49
@@ -1,192 +1,192 @@
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', 'prepaid'],
34
- },
35
- balanceBroughtForward: {
36
- type: Number,
37
- default: 0
38
- },
39
- // Dates
40
- dateIssued: {
41
- type: Date,
42
- default: Date.now
43
- },
44
- dueDate: {
45
- type: Date,
46
- required: true
47
- },
48
-
49
- // Meter & Consumption Details
50
- meterNumber: {
51
- type: String,
52
- required: true
53
- },
54
- meterReadings: {
55
- previousReading: {
56
- type: Number,
57
- required: true
58
- },
59
- currentReading: {
60
- type: Number,
61
- required: true
62
- },
63
- usage: {
64
- type: Number,
65
- required: true,
66
- }
67
- },
68
- consumptionPeriod: {
69
- startDate: {
70
- type: Date,
71
- required: true
72
- },
73
- endDate: {
74
- type: Date,
75
- required: true
76
- }
77
- },
78
-
79
- // Charges
80
- charges: {
81
- waterCharge: {
82
- type: Number,
83
- required: true
84
- },
85
- sewerCharge: {
86
- type: Number,
87
- default: 0
88
- },
89
- tax: {
90
- type: Number,
91
- default: 0
92
- },
93
- fixedCharge: {
94
- type: Number,
95
- default: 0
96
- },
97
- totalMonthlyBill: {
98
- type: Number,
99
- required: true
100
- }
101
- },
102
- amountPaid: {
103
- type: Number,
104
- default: 0
105
- },
106
-
107
- // Invoice Note & Status
108
- invoiceNote: {
109
- type: String,
110
- default: 'Payment is due within 10 days'
111
- },
112
- status: {
113
- type: String,
114
- required: true,
115
- enum: ['Pending', 'Paid', 'Partially Paid', 'Cancelled', 'Overdue', 'Unpaid'],
116
- default: 'Pending'
117
- },
118
-
119
- // Currency Info
120
- currency: {
121
- id: {
122
- type: mongoose.Schema.Types.ObjectId
123
- },
124
- name: {
125
- type: String,
126
- default: 'Kenyan Shilling'
127
- },
128
- code: {
129
- type: String,
130
- default: 'KES'
131
- },
132
- symbol: {
133
- type: String,
134
- default: 'KSh'
135
- }
136
- },
137
-
138
- // Payment & Reconciliation
139
- reconciliationHistory: [
140
- {
141
- date: {
142
- type: Date,
143
- default: Date.now
144
- },
145
- amount: {
146
- type: Number,
147
- required: true
148
- },
149
- type: {
150
- type: String,
151
- default: 'Manual'
152
- },
153
- paymentReference: {
154
- type: String
155
- },
156
- paymentCompletion: {
157
- type: String,
158
- default: 'Completed'
159
- },
160
- sourceInvoice: {
161
- type: String
162
- },
163
- destinationInvoice: {
164
- type: String
165
- },
166
- notes: {
167
- type: String
168
- },
169
- remainingBalance: {
170
- type: Number
171
- }
172
- }
173
- ],
174
- },
175
- {
176
- timestamps: true
177
- }
178
- );
179
-
180
- waterInvoiceSchema.pre('save', function (next) {
181
- if (this.isModified('dueDate') || this.isNew) {
182
- const today = new Date();
183
- if (this.dueDate < today && this.status === 'Pending') {
184
- this.status = 'Overdue';
185
- }
186
- }
187
- next();
188
- });
189
-
190
- const WaterInvoice = mongoose.model('WaterInvoice', waterInvoiceSchema);
191
-
192
- module.exports = WaterInvoice;
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', 'prepaid'],
34
+ },
35
+ balanceBroughtForward: {
36
+ type: Number,
37
+ default: 0
38
+ },
39
+ // Dates
40
+ dateIssued: {
41
+ type: Date,
42
+ default: Date.now
43
+ },
44
+ dueDate: {
45
+ type: Date,
46
+ required: true
47
+ },
48
+
49
+ // Meter & Consumption Details
50
+ meterNumber: {
51
+ type: String,
52
+ required: true
53
+ },
54
+ meterReadings: {
55
+ previousReading: {
56
+ type: Number,
57
+ required: true
58
+ },
59
+ currentReading: {
60
+ type: Number,
61
+ required: true
62
+ },
63
+ usage: {
64
+ type: Number,
65
+ required: true,
66
+ }
67
+ },
68
+ consumptionPeriod: {
69
+ startDate: {
70
+ type: Date,
71
+ required: true
72
+ },
73
+ endDate: {
74
+ type: Date,
75
+ required: true
76
+ }
77
+ },
78
+
79
+ // Charges
80
+ charges: {
81
+ waterCharge: {
82
+ type: Number,
83
+ required: true
84
+ },
85
+ sewerCharge: {
86
+ type: Number,
87
+ default: 0
88
+ },
89
+ tax: {
90
+ type: Number,
91
+ default: 0
92
+ },
93
+ fixedCharge: {
94
+ type: Number,
95
+ default: 0
96
+ },
97
+ totalMonthlyBill: {
98
+ type: Number,
99
+ required: true
100
+ }
101
+ },
102
+ amountPaid: {
103
+ type: Number,
104
+ default: 0
105
+ },
106
+
107
+ // Invoice Note & Status
108
+ invoiceNote: {
109
+ type: String,
110
+ default: 'Payment is due within 10 days'
111
+ },
112
+ status: {
113
+ type: String,
114
+ required: true,
115
+ enum: ['Pending', 'Paid', 'Partially Paid', 'Cancelled', 'Overdue', 'Unpaid'],
116
+ default: 'Pending'
117
+ },
118
+
119
+ // Currency Info
120
+ currency: {
121
+ id: {
122
+ type: mongoose.Schema.Types.ObjectId
123
+ },
124
+ name: {
125
+ type: String,
126
+ default: 'Kenyan Shilling'
127
+ },
128
+ code: {
129
+ type: String,
130
+ default: 'KES'
131
+ },
132
+ symbol: {
133
+ type: String,
134
+ default: 'KSh'
135
+ }
136
+ },
137
+
138
+ // Payment & Reconciliation
139
+ reconciliationHistory: [
140
+ {
141
+ date: {
142
+ type: Date,
143
+ default: Date.now
144
+ },
145
+ amount: {
146
+ type: Number,
147
+ required: true
148
+ },
149
+ type: {
150
+ type: String,
151
+ default: 'Manual'
152
+ },
153
+ paymentReference: {
154
+ type: String
155
+ },
156
+ paymentCompletion: {
157
+ type: String,
158
+ default: 'Completed'
159
+ },
160
+ sourceInvoice: {
161
+ type: String
162
+ },
163
+ destinationInvoice: {
164
+ type: String
165
+ },
166
+ notes: {
167
+ type: String
168
+ },
169
+ remainingBalance: {
170
+ type: Number
171
+ }
172
+ }
173
+ ],
174
+ },
175
+ {
176
+ timestamps: true
177
+ }
178
+ );
179
+
180
+ waterInvoiceSchema.pre('save', function (next) {
181
+ if (this.isModified('dueDate') || this.isNew) {
182
+ const today = new Date();
183
+ if (this.dueDate < today && this.status === 'Pending') {
184
+ this.status = 'Overdue';
185
+ }
186
+ }
187
+ next();
188
+ });
189
+
190
+ const WaterInvoice = mongoose.model('WaterInvoice', waterInvoiceSchema);
191
+
192
+ module.exports = WaterInvoice;
@@ -1,74 +1,73 @@
1
- const mongoose = require('mongoose');
2
-
3
- const waterMeterAccountSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- },
9
- account_no: {
10
- type: String,
11
- required: true,
12
- unique: true,
13
- trim: true
14
- },
15
- customerId: {
16
- type: mongoose.Schema.Types.ObjectId,
17
- ref: 'Customer',
18
- },
19
- customerName: {
20
- type: String,
21
- required: true,
22
- trim: true
23
- },
24
- phoneNumber: {
25
- type: String,
26
- required: true,
27
- trim: true
28
- },
29
- meterNumber: {
30
- type: String,
31
- required: true,
32
- unique: true,
33
- trim: true
34
- },
35
- unitId: {
36
- type: mongoose.Schema.Types.ObjectId,
37
- ref: 'Unit',
38
- },
39
- payment_type: {
40
- type: String,
41
- required: true,
42
- enum: ['Postpaid', 'Prepaid']
43
- },
44
- previousReading: {
45
- type: Number,
46
- required: true,
47
- default: 0
48
- },
49
- currentReading: {
50
- type: Number,
51
- required: true
52
- },
53
- status: {
54
- type: String,
55
- required: true,
56
- enum: ['Active', 'Inactive'],
57
- default: 'Active'
58
- },
59
- created_on: {
60
- type: Date,
61
- required: true,
62
- default: Date.now
63
- },
64
- meter_id: {
65
- type: mongoose.Schema.Types.ObjectId,
66
- ref: 'Meter',
67
- }
68
- }, {
69
- timestamps: true
70
- });
71
-
72
- const WaterMeterAccount = mongoose.model('WaterMeterAccount', waterMeterAccountSchema);
73
-
74
- module.exports = WaterMeterAccount;
1
+ const mongoose = require('mongoose');
2
+
3
+ const waterMeterAccountSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ },
9
+ account_no: {
10
+ type: String,
11
+ required: true,
12
+ trim: true
13
+ },
14
+ customerId: {
15
+ type: mongoose.Schema.Types.ObjectId,
16
+ ref: 'Customer',
17
+ },
18
+ customerName: {
19
+ type: String,
20
+ required: true,
21
+ trim: true
22
+ },
23
+ phoneNumber: {
24
+ type: String,
25
+ required: true,
26
+ trim: true
27
+ },
28
+ meterNumber: {
29
+ type: String,
30
+ required: true,
31
+ unique: true,
32
+ trim: true
33
+ },
34
+ unitId: {
35
+ type: mongoose.Schema.Types.ObjectId,
36
+ ref: 'Unit',
37
+ },
38
+ payment_type: {
39
+ type: String,
40
+ required: true,
41
+ enum: ['Postpaid', 'Prepaid']
42
+ },
43
+ previousReading: {
44
+ type: Number,
45
+ required: true,
46
+ default: 0
47
+ },
48
+ currentReading: {
49
+ type: Number,
50
+ required: true
51
+ },
52
+ status: {
53
+ type: String,
54
+ required: true,
55
+ enum: ['Active', 'Inactive'],
56
+ default: 'Active'
57
+ },
58
+ created_on: {
59
+ type: Date,
60
+ required: true,
61
+ default: Date.now
62
+ },
63
+ meter_id: {
64
+ type: mongoose.Schema.Types.ObjectId,
65
+ ref: 'Meter',
66
+ }
67
+ }, {
68
+ timestamps: true
69
+ });
70
+
71
+ const WaterMeterAccount = mongoose.model('WaterMeterAccount', waterMeterAccountSchema);
72
+
73
+ module.exports = WaterMeterAccount;
@@ -1,18 +1,18 @@
1
- const mongoose = require('mongoose');
2
-
3
- const protocolSchema = new mongoose.Schema({
4
- name: {
5
- type: String,
6
- required: true,
7
- unique: true,
8
- trim: true,
9
- uppercase: true,
10
- // Example: TCP, GPRS, API, etc.
11
- }
12
- }, {
13
- timestamps: true
14
- });
15
-
16
- const MeterProtocol = mongoose.model('MeterProtocol', protocolSchema);
17
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const protocolSchema = new mongoose.Schema({
4
+ name: {
5
+ type: String,
6
+ required: true,
7
+ unique: true,
8
+ trim: true,
9
+ uppercase: true,
10
+ // Example: TCP, GPRS, API, etc.
11
+ }
12
+ }, {
13
+ timestamps: true
14
+ });
15
+
16
+ const MeterProtocol = mongoose.model('MeterProtocol', protocolSchema);
17
+
18
18
  module.exports = MeterProtocol;
@@ -1,60 +1,60 @@
1
- const mongoose = require('mongoose');
2
- const concentratorSchema = new mongoose.Schema({
3
- serialNumber: {
4
- type: String,
5
- required: true,
6
- trim: true,
7
- unique: true
8
- },
9
- manufacturer: {
10
- type: mongoose.Schema.Types.ObjectId,
11
- ref: 'MeterManufacturer',
12
- },
13
- range: {
14
- type: Number,
15
- min: 0
16
- },
17
- isInstalled: {
18
- type: Boolean,
19
- default: false
20
- },
21
- isFaulty: {
22
- type: Boolean,
23
- default: false
24
- },
25
- inStock: {
26
- type: Boolean,
27
- default: true
28
- },
29
- status: {
30
- type: String,
31
- required: true,
32
- enum: ['Online', 'Offline', 'Maintenance'],
33
- default: 'Offline'
34
- },
35
- facilityId: [{
36
- type: mongoose.Schema.Types.ObjectId,
37
- ref: 'Facility',
38
- }],
39
- location: {
40
- city: {
41
- type: String,
42
- trim: true
43
- },
44
- latitude: {
45
- type: Number,
46
- min: -90,
47
- max: 90
48
- },
49
- longitude: {
50
- type: Number,
51
- min: -180,
52
- max: 180
53
- }
54
- }
55
- }, {
56
- timestamps: true
57
- });
58
-
59
- const Concentrator = mongoose.model('Concentrator', concentratorSchema);
1
+ const mongoose = require('mongoose');
2
+ const concentratorSchema = new mongoose.Schema({
3
+ serialNumber: {
4
+ type: String,
5
+ required: true,
6
+ trim: true,
7
+ unique: true
8
+ },
9
+ manufacturer: {
10
+ type: mongoose.Schema.Types.ObjectId,
11
+ ref: 'MeterManufacturer',
12
+ },
13
+ range: {
14
+ type: Number,
15
+ min: 0
16
+ },
17
+ isInstalled: {
18
+ type: Boolean,
19
+ default: false
20
+ },
21
+ isFaulty: {
22
+ type: Boolean,
23
+ default: false
24
+ },
25
+ inStock: {
26
+ type: Boolean,
27
+ default: true
28
+ },
29
+ status: {
30
+ type: String,
31
+ required: true,
32
+ enum: ['Online', 'Offline', 'Maintenance'],
33
+ default: 'Offline'
34
+ },
35
+ facilityId: [{
36
+ type: mongoose.Schema.Types.ObjectId,
37
+ ref: 'Facility',
38
+ }],
39
+ location: {
40
+ city: {
41
+ type: String,
42
+ trim: true
43
+ },
44
+ latitude: {
45
+ type: Number,
46
+ min: -90,
47
+ max: 90
48
+ },
49
+ longitude: {
50
+ type: Number,
51
+ min: -180,
52
+ max: 180
53
+ }
54
+ }
55
+ }, {
56
+ timestamps: true
57
+ });
58
+
59
+ const Concentrator = mongoose.model('Concentrator', concentratorSchema);
60
60
  module.exports = Concentrator;