payservedb 6.6.3 → 6.6.5

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 (142) hide show
  1. package/.env +2 -2
  2. package/index.js +278 -276
  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 +346 -346
  12. package/src/models/bankdetails.js +40 -40
  13. package/src/models/billerAddress.js +119 -119
  14. package/src/models/booking_invoice.js +151 -151
  15. package/src/models/bookinganalytics.js +63 -63
  16. package/src/models/bookingconfig.js +45 -45
  17. package/src/models/bookingproperty.js +122 -122
  18. package/src/models/bookingreservation.js +192 -192
  19. package/src/models/bookingrevenuerecord.js +84 -84
  20. package/src/models/budget.js +95 -95
  21. package/src/models/budgetCategory.js +19 -19
  22. package/src/models/campaigns.js +94 -94
  23. package/src/models/cashpayment.js +264 -264
  24. package/src/models/combinedUnits.js +62 -62
  25. package/src/models/common_area_electricity.js +38 -38
  26. package/src/models/common_area_generator.js +41 -41
  27. package/src/models/common_area_utility_alert.js +37 -37
  28. package/src/models/common_area_water.js +39 -39
  29. package/src/models/communication_status.js +33 -33
  30. package/src/models/company.js +53 -53
  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 +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/powerMeterCommunicationProtocol.js +18 -0
  76. package/src/models/powerMeterCustomerAccount.js +78 -78
  77. package/src/models/powerMeterCustomerBand.js +14 -14
  78. package/src/models/powerMeterDailyReading.js +30 -30
  79. package/src/models/powerMeterGateways.js +37 -0
  80. package/src/models/powerMeterMonthlyReading.js +34 -34
  81. package/src/models/powerMeterPowerCharges.js +53 -53
  82. package/src/models/powerMeterSettings.js +138 -138
  83. package/src/models/powerMeterSingleDayReading.js +32 -32
  84. package/src/models/powerMeters.js +97 -65
  85. package/src/models/powerMetersManufacturer.js +14 -14
  86. package/src/models/propertyManagerContract.js +556 -556
  87. package/src/models/propertyManagerRevenue.js +195 -195
  88. package/src/models/purchaseOrderInvoice.js +74 -74
  89. package/src/models/purchase_order.js +213 -213
  90. package/src/models/purchase_request.js +110 -110
  91. package/src/models/refresh_token.js +23 -23
  92. package/src/models/reminder.js +197 -197
  93. package/src/models/report.js +13 -13
  94. package/src/models/resident.js +121 -121
  95. package/src/models/rfq_details.js +131 -131
  96. package/src/models/rfq_response.js +153 -153
  97. package/src/models/service_charge_invoice_upload.js +42 -42
  98. package/src/models/service_charge_payments.js +27 -27
  99. package/src/models/servicerequest.js +55 -55
  100. package/src/models/settings.js +62 -62
  101. package/src/models/smart_meter_daily_consumption.js +44 -44
  102. package/src/models/sms_africastalking.js +20 -20
  103. package/src/models/sms_balance_notification.js +26 -26
  104. package/src/models/sms_meliora.js +20 -20
  105. package/src/models/staff.js +36 -36
  106. package/src/models/stocksandspare.js +161 -161
  107. package/src/models/suppliers.js +74 -74
  108. package/src/models/tickets.js +121 -121
  109. package/src/models/unitManagementTemplate.js +44 -44
  110. package/src/models/unitasset.js +25 -25
  111. package/src/models/units.js +117 -117
  112. package/src/models/user.js +186 -186
  113. package/src/models/valueaddedservices.js +79 -79
  114. package/src/models/vas_invoices_upload.js +50 -50
  115. package/src/models/vas_payments.js +24 -24
  116. package/src/models/vasinvoice.js +192 -192
  117. package/src/models/vasvendor.js +57 -57
  118. package/src/models/visitLog.js +86 -86
  119. package/src/models/visitor.js +67 -67
  120. package/src/models/waitlist.js +45 -45
  121. package/src/models/wallet.js +44 -44
  122. package/src/models/wallet_transactions.js +50 -50
  123. package/src/models/water_invoice.js +305 -305
  124. package/src/models/water_meter_Command_Queue.js +33 -33
  125. package/src/models/water_meter_account.js +78 -78
  126. package/src/models/water_meter_billing.js +58 -58
  127. package/src/models/water_meter_communication.js +17 -17
  128. package/src/models/water_meter_communication_logs.js +30 -30
  129. package/src/models/water_meter_concentrator.js +66 -66
  130. package/src/models/water_meter_daily_history.js +32 -32
  131. package/src/models/water_meter_iot_cards.js +34 -34
  132. package/src/models/water_meter_manufacturer.js +35 -35
  133. package/src/models/water_meter_monthly_history.js +36 -36
  134. package/src/models/water_meter_negative_amounts.js +38 -38
  135. package/src/models/water_meter_settings.js +180 -180
  136. package/src/models/water_meter_single_day_history.js +34 -34
  137. package/src/models/water_meter_size.js +15 -15
  138. package/src/models/water_meters.js +134 -134
  139. package/src/models/water_meters_delivery.js +76 -76
  140. package/src/models/water_prepaid_credit.js +47 -47
  141. package/src/models/water_prepaid_debit.js +50 -50
  142. package/src/models/workorder.js +49 -49
@@ -1,207 +1,207 @@
1
- const mongoose = require("mongoose");
2
-
3
- // Define the schema for Levy
4
- const levySchema = new mongoose.Schema(
5
- {
6
- levyName: {
7
- type: String,
8
- required: true,
9
- trim: true,
10
- minlength: [1, "Levy name must be at least 1 character long"],
11
- },
12
- levyType: {
13
- type: mongoose.Schema.Types.ObjectId,
14
- ref: "LevyType",
15
- required: true,
16
- },
17
- amount: {
18
- type: Number,
19
- required: true,
20
- min: [0, "Amount must be a positive number"],
21
- },
22
- dueDate: {
23
- type: String,
24
- required: true,
25
- },
26
- levyApplicant: {
27
- type: String,
28
- required: true,
29
- trim: true,
30
- },
31
- collectionFrequency: {
32
- type: String,
33
- required: true,
34
- trim: true,
35
- },
36
- invoiceDay: {
37
- type: String,
38
- required: true,
39
- },
40
- billingType: {
41
- type: String,
42
- enum: ['Prepaid', 'Postpaid'],
43
- required: true,
44
- default: 'Postpaid'
45
- },
46
- currency: {
47
- type: mongoose.Schema.Types.ObjectId,
48
- ref: "Currency",
49
- required: true,
50
- },
51
- mobilePayment: {
52
- type: Boolean,
53
- default: false,
54
- required: false,
55
- },
56
- paymentMethodId: {
57
- type: mongoose.Schema.Types.ObjectId,
58
- ref: "FacilityPaymentDetails",
59
- required: false,
60
- },
61
- bankPayment: {
62
- type: Boolean,
63
- default: false,
64
- required: false,
65
- },
66
- // Reference to BankDetails document
67
- bankAccountId: {
68
- type: mongoose.Schema.Types.ObjectId,
69
- ref: "BankDetails",
70
- required: false,
71
- },
72
- // Reference to BillerAddress document
73
- billerAddressId: {
74
- type: mongoose.Schema.Types.ObjectId,
75
- ref: "BillerAddress",
76
- required: true,
77
- },
78
- // GL Account Configuration
79
- glAccounts: {
80
- invoice: {
81
- debit: {
82
- type: mongoose.Schema.Types.ObjectId,
83
- ref: "GLAccount",
84
- required: true,
85
- },
86
- credit: {
87
- type: mongoose.Schema.Types.ObjectId,
88
- ref: "GLAccount",
89
- required: true,
90
- }
91
- },
92
- payment: {
93
- debit: {
94
- type: mongoose.Schema.Types.ObjectId,
95
- ref: "GLAccount",
96
- required: true,
97
- },
98
- credit: {
99
- type: mongoose.Schema.Types.ObjectId,
100
- ref: "GLAccount",
101
- required: true,
102
- }
103
- }
104
- },
105
- disabled: {
106
- type: Boolean,
107
- default: false,
108
- required: false,
109
- },
110
- facilityId: {
111
- type: mongoose.Schema.Types.ObjectId,
112
- ref: "Facility",
113
- required: true,
114
- },
115
- // Reminder reference
116
- reminderId: {
117
- type: mongoose.Schema.Types.ObjectId,
118
- ref: 'Reminder',
119
- required: false
120
- },
121
- // Penalty reference
122
- penaltyId: {
123
- type: mongoose.Schema.Types.ObjectId,
124
- ref: 'Penalty',
125
- required: false
126
- }
127
- },
128
- {
129
- timestamps: true,
130
- }
131
- );
132
-
133
- // Add virtuals for populated references
134
- levySchema.virtual('bankAccount', {
135
- ref: 'BankDetails',
136
- localField: 'bankAccountId',
137
- foreignField: '_id',
138
- justOne: true
139
- });
140
-
141
- levySchema.virtual('billerAddress', {
142
- ref: 'BillerAddress',
143
- localField: 'billerAddressId',
144
- foreignField: '_id',
145
- justOne: true
146
- });
147
-
148
- levySchema.virtual('reminder', {
149
- ref: 'Reminder',
150
- localField: 'reminderId',
151
- foreignField: '_id',
152
- justOne: true
153
- });
154
-
155
- levySchema.virtual('penalty', {
156
- ref: 'Penalty',
157
- localField: 'penaltyId',
158
- foreignField: '_id',
159
- justOne: true
160
- });
161
-
162
- // Pre-save validation middleware
163
- levySchema.pre('save', function (next) {
164
- // Validate bank payment requirements
165
- if (this.bankPayment && !this.bankAccountId) {
166
- const error = new Error('Bank account is required when bank payment is enabled');
167
- return next(error);
168
- }
169
-
170
- // Validate mobile payment requirements
171
- if (this.mobilePayment && !this.paymentMethodId) {
172
- const error = new Error('Payment method is required when mobile payment is enabled');
173
- return next(error);
174
- }
175
-
176
- // Validate GL accounts
177
- if (!this.glAccounts?.invoice?.debit || !this.glAccounts?.invoice?.credit ||
178
- !this.glAccounts?.payment?.debit || !this.glAccounts?.payment?.credit) {
179
- const error = new Error('All GL accounts (invoice and payment, debit and credit) are required');
180
- return next(error);
181
- }
182
-
183
- next();
184
- });
185
-
186
- // Add indexes for better performance
187
- levySchema.index({ facilityId: 1 });
188
- levySchema.index({ levyType: 1 });
189
- levySchema.index({ disabled: 1 });
190
- levySchema.index({ bankAccountId: 1 });
191
- levySchema.index({ billerAddressId: 1 });
192
- levySchema.index({ reminderId: 1 });
193
- levySchema.index({ penaltyId: 1 });
194
- levySchema.index({ createdAt: -1 });
195
-
196
- // Compound indexes
197
- levySchema.index({ facilityId: 1, disabled: 1 });
198
- levySchema.index({ facilityId: 1, levyType: 1 });
199
-
200
- // Ensure virtual fields are serialized
201
- levySchema.set('toJSON', { virtuals: true });
202
- levySchema.set('toObject', { virtuals: true });
203
-
204
- // Compile the model from the schema
205
- const Levy = mongoose.model("Levy", levySchema);
206
-
1
+ const mongoose = require("mongoose");
2
+
3
+ // Define the schema for Levy
4
+ const levySchema = new mongoose.Schema(
5
+ {
6
+ levyName: {
7
+ type: String,
8
+ required: true,
9
+ trim: true,
10
+ minlength: [1, "Levy name must be at least 1 character long"],
11
+ },
12
+ levyType: {
13
+ type: mongoose.Schema.Types.ObjectId,
14
+ ref: "LevyType",
15
+ required: true,
16
+ },
17
+ amount: {
18
+ type: Number,
19
+ required: true,
20
+ min: [0, "Amount must be a positive number"],
21
+ },
22
+ dueDate: {
23
+ type: String,
24
+ required: true,
25
+ },
26
+ levyApplicant: {
27
+ type: String,
28
+ required: true,
29
+ trim: true,
30
+ },
31
+ collectionFrequency: {
32
+ type: String,
33
+ required: true,
34
+ trim: true,
35
+ },
36
+ invoiceDay: {
37
+ type: String,
38
+ required: true,
39
+ },
40
+ billingType: {
41
+ type: String,
42
+ enum: ['Prepaid', 'Postpaid'],
43
+ required: true,
44
+ default: 'Postpaid'
45
+ },
46
+ currency: {
47
+ type: mongoose.Schema.Types.ObjectId,
48
+ ref: "Currency",
49
+ required: true,
50
+ },
51
+ mobilePayment: {
52
+ type: Boolean,
53
+ default: false,
54
+ required: false,
55
+ },
56
+ paymentMethodId: {
57
+ type: mongoose.Schema.Types.ObjectId,
58
+ ref: "FacilityPaymentDetails",
59
+ required: false,
60
+ },
61
+ bankPayment: {
62
+ type: Boolean,
63
+ default: false,
64
+ required: false,
65
+ },
66
+ // Reference to BankDetails document
67
+ bankAccountId: {
68
+ type: mongoose.Schema.Types.ObjectId,
69
+ ref: "BankDetails",
70
+ required: false,
71
+ },
72
+ // Reference to BillerAddress document
73
+ billerAddressId: {
74
+ type: mongoose.Schema.Types.ObjectId,
75
+ ref: "BillerAddress",
76
+ required: true,
77
+ },
78
+ // GL Account Configuration
79
+ glAccounts: {
80
+ invoice: {
81
+ debit: {
82
+ type: mongoose.Schema.Types.ObjectId,
83
+ ref: "GLAccount",
84
+ required: true,
85
+ },
86
+ credit: {
87
+ type: mongoose.Schema.Types.ObjectId,
88
+ ref: "GLAccount",
89
+ required: true,
90
+ }
91
+ },
92
+ payment: {
93
+ debit: {
94
+ type: mongoose.Schema.Types.ObjectId,
95
+ ref: "GLAccount",
96
+ required: true,
97
+ },
98
+ credit: {
99
+ type: mongoose.Schema.Types.ObjectId,
100
+ ref: "GLAccount",
101
+ required: true,
102
+ }
103
+ }
104
+ },
105
+ disabled: {
106
+ type: Boolean,
107
+ default: false,
108
+ required: false,
109
+ },
110
+ facilityId: {
111
+ type: mongoose.Schema.Types.ObjectId,
112
+ ref: "Facility",
113
+ required: true,
114
+ },
115
+ // Reminder reference
116
+ reminderId: {
117
+ type: mongoose.Schema.Types.ObjectId,
118
+ ref: 'Reminder',
119
+ required: false
120
+ },
121
+ // Penalty reference
122
+ penaltyId: {
123
+ type: mongoose.Schema.Types.ObjectId,
124
+ ref: 'Penalty',
125
+ required: false
126
+ }
127
+ },
128
+ {
129
+ timestamps: true,
130
+ }
131
+ );
132
+
133
+ // Add virtuals for populated references
134
+ levySchema.virtual('bankAccount', {
135
+ ref: 'BankDetails',
136
+ localField: 'bankAccountId',
137
+ foreignField: '_id',
138
+ justOne: true
139
+ });
140
+
141
+ levySchema.virtual('billerAddress', {
142
+ ref: 'BillerAddress',
143
+ localField: 'billerAddressId',
144
+ foreignField: '_id',
145
+ justOne: true
146
+ });
147
+
148
+ levySchema.virtual('reminder', {
149
+ ref: 'Reminder',
150
+ localField: 'reminderId',
151
+ foreignField: '_id',
152
+ justOne: true
153
+ });
154
+
155
+ levySchema.virtual('penalty', {
156
+ ref: 'Penalty',
157
+ localField: 'penaltyId',
158
+ foreignField: '_id',
159
+ justOne: true
160
+ });
161
+
162
+ // Pre-save validation middleware
163
+ levySchema.pre('save', function (next) {
164
+ // Validate bank payment requirements
165
+ if (this.bankPayment && !this.bankAccountId) {
166
+ const error = new Error('Bank account is required when bank payment is enabled');
167
+ return next(error);
168
+ }
169
+
170
+ // Validate mobile payment requirements
171
+ if (this.mobilePayment && !this.paymentMethodId) {
172
+ const error = new Error('Payment method is required when mobile payment is enabled');
173
+ return next(error);
174
+ }
175
+
176
+ // Validate GL accounts
177
+ if (!this.glAccounts?.invoice?.debit || !this.glAccounts?.invoice?.credit ||
178
+ !this.glAccounts?.payment?.debit || !this.glAccounts?.payment?.credit) {
179
+ const error = new Error('All GL accounts (invoice and payment, debit and credit) are required');
180
+ return next(error);
181
+ }
182
+
183
+ next();
184
+ });
185
+
186
+ // Add indexes for better performance
187
+ levySchema.index({ facilityId: 1 });
188
+ levySchema.index({ levyType: 1 });
189
+ levySchema.index({ disabled: 1 });
190
+ levySchema.index({ bankAccountId: 1 });
191
+ levySchema.index({ billerAddressId: 1 });
192
+ levySchema.index({ reminderId: 1 });
193
+ levySchema.index({ penaltyId: 1 });
194
+ levySchema.index({ createdAt: -1 });
195
+
196
+ // Compound indexes
197
+ levySchema.index({ facilityId: 1, disabled: 1 });
198
+ levySchema.index({ facilityId: 1, levyType: 1 });
199
+
200
+ // Ensure virtual fields are serialized
201
+ levySchema.set('toJSON', { virtuals: true });
202
+ levySchema.set('toObject', { virtuals: true });
203
+
204
+ // Compile the model from the schema
205
+ const Levy = mongoose.model("Levy", levySchema);
206
+
207
207
  module.exports = Levy;
@@ -1,27 +1,27 @@
1
- const mongoose = require('mongoose');
2
-
3
- const InvoiceSettingsSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: [true, 'Facility ID is required']
8
- },
9
- termsAndConditions: {
10
- type: String,
11
- default: 'Payment is due within 15 days'
12
- },
13
- bankName: {
14
- type: String,
15
- required: [true, 'Bank name is required']
16
- },
17
- accountNumber: {
18
- type: String,
19
- required: [true, 'Account number is required']
20
- }
21
- }, {
22
- timestamps: true
23
- });
24
-
25
- const InvoiceSettings = mongoose.model('InvoiceSettings', InvoiceSettingsSchema);
26
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const InvoiceSettingsSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: [true, 'Facility ID is required']
8
+ },
9
+ termsAndConditions: {
10
+ type: String,
11
+ default: 'Payment is due within 15 days'
12
+ },
13
+ bankName: {
14
+ type: String,
15
+ required: [true, 'Bank name is required']
16
+ },
17
+ accountNumber: {
18
+ type: String,
19
+ required: [true, 'Account number is required']
20
+ }
21
+ }, {
22
+ timestamps: true
23
+ });
24
+
25
+ const InvoiceSettings = mongoose.model('InvoiceSettings', InvoiceSettingsSchema);
26
+
27
27
  module.exports = InvoiceSettings;