payservedb 6.8.3 → 6.8.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 (148) hide show
  1. package/.env +2 -2
  2. package/index.js +284 -284
  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/coreBaseSettings.js +16 -16
  31. package/src/models/coreInvoiceSettings.js +100 -100
  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/dailyChecklist.js +312 -312
  36. package/src/models/default_payment_details.js +17 -17
  37. package/src/models/deliveryTimeMarks.js +18 -18
  38. package/src/models/dutyRosterChecklist.js +250 -250
  39. package/src/models/dutyroster.js +136 -136
  40. package/src/models/email.js +37 -37
  41. package/src/models/email_sms_queue.js +61 -61
  42. package/src/models/entry_exit.js +53 -53
  43. package/src/models/expense.js +99 -99
  44. package/src/models/expense_category.js +45 -45
  45. package/src/models/facility.js +62 -62
  46. package/src/models/facilityContractPricing.js +46 -46
  47. package/src/models/facilityInvoice.js +222 -222
  48. package/src/models/facilityInvoiceContract.js +249 -165
  49. package/src/models/facilityWalletTransactionsMetadata.js +236 -236
  50. package/src/models/facility_departements.js +20 -20
  51. package/src/models/facility_payment_details.js +20 -20
  52. package/src/models/facilityasset.js +25 -25
  53. package/src/models/faq.js +18 -18
  54. package/src/models/gl_account_double_entries.js +25 -25
  55. package/src/models/gl_accounts.js +56 -56
  56. package/src/models/gl_entries.js +49 -49
  57. package/src/models/goodsReceivedNotes.js +115 -115
  58. package/src/models/guard.js +47 -47
  59. package/src/models/handover.js +246 -246
  60. package/src/models/invoice.js +336 -336
  61. package/src/models/item_inspection.js +67 -67
  62. package/src/models/leaseagreement.js +226 -226
  63. package/src/models/leasetemplate.js +17 -17
  64. package/src/models/levy.js +206 -206
  65. package/src/models/levy_invoice_settings.js +26 -26
  66. package/src/models/levycontract.js +168 -168
  67. package/src/models/levytype.js +23 -23
  68. package/src/models/maintenance_service_vendor.js +38 -38
  69. package/src/models/maintenance_services.js +17 -17
  70. package/src/models/maintenancerequisition.js +31 -31
  71. package/src/models/master_workplan.js +32 -32
  72. package/src/models/master_workplan_child.js +34 -34
  73. package/src/models/message.js +38 -38
  74. package/src/models/module.js +21 -21
  75. package/src/models/notification.js +44 -44
  76. package/src/models/paymentTermsMarks.js +19 -19
  77. package/src/models/penalty.js +76 -76
  78. package/src/models/pendingCredentials.js +32 -32
  79. package/src/models/powerMeterCommunicationProtocol.js +17 -17
  80. package/src/models/powerMeterCustomerAccount.js +78 -78
  81. package/src/models/powerMeterCustomerBand.js +14 -14
  82. package/src/models/powerMeterDailyReading.js +30 -30
  83. package/src/models/powerMeterGateways.js +37 -37
  84. package/src/models/powerMeterMonthlyReading.js +34 -34
  85. package/src/models/powerMeterPowerCharges.js +53 -53
  86. package/src/models/powerMeterSettings.js +138 -138
  87. package/src/models/powerMeterSingleDayReading.js +32 -32
  88. package/src/models/powerMeters.js +104 -104
  89. package/src/models/powerMetersManufacturer.js +14 -14
  90. package/src/models/power_meter_account.js +81 -81
  91. package/src/models/power_meter_command_logs.js +30 -30
  92. package/src/models/propertyManagerContract.js +556 -556
  93. package/src/models/propertyManagerRevenue.js +195 -195
  94. package/src/models/purchaseOrderInvoice.js +74 -74
  95. package/src/models/purchase_order.js +213 -213
  96. package/src/models/purchase_request.js +110 -110
  97. package/src/models/refresh_token.js +23 -23
  98. package/src/models/reminder.js +197 -197
  99. package/src/models/report.js +13 -13
  100. package/src/models/resident.js +121 -121
  101. package/src/models/rfq_details.js +131 -131
  102. package/src/models/rfq_response.js +153 -153
  103. package/src/models/service_charge_invoice_upload.js +42 -42
  104. package/src/models/service_charge_payments.js +27 -27
  105. package/src/models/servicerequest.js +55 -55
  106. package/src/models/settings.js +62 -62
  107. package/src/models/smart_meter_daily_consumption.js +44 -44
  108. package/src/models/sms_africastalking.js +20 -20
  109. package/src/models/sms_balance_notification.js +26 -26
  110. package/src/models/sms_meliora.js +20 -20
  111. package/src/models/staff.js +36 -36
  112. package/src/models/stocksandspare.js +161 -161
  113. package/src/models/suppliers.js +74 -74
  114. package/src/models/tickets.js +121 -121
  115. package/src/models/unitManagementTemplate.js +44 -44
  116. package/src/models/unitasset.js +25 -25
  117. package/src/models/units.js +117 -117
  118. package/src/models/user.js +186 -186
  119. package/src/models/valueaddedservices.js +79 -79
  120. package/src/models/vas_invoices_upload.js +50 -50
  121. package/src/models/vas_payments.js +24 -24
  122. package/src/models/vasinvoice.js +192 -192
  123. package/src/models/vasvendor.js +57 -57
  124. package/src/models/visitLog.js +95 -95
  125. package/src/models/visitor.js +67 -67
  126. package/src/models/waitlist.js +45 -45
  127. package/src/models/wallet.js +44 -44
  128. package/src/models/wallet_transactions.js +50 -50
  129. package/src/models/water_invoice.js +305 -305
  130. package/src/models/water_meter_Command_Queue.js +33 -33
  131. package/src/models/water_meter_account.js +82 -82
  132. package/src/models/water_meter_billing.js +58 -58
  133. package/src/models/water_meter_communication.js +17 -17
  134. package/src/models/water_meter_communication_logs.js +30 -30
  135. package/src/models/water_meter_concentrator.js +66 -66
  136. package/src/models/water_meter_daily_history.js +32 -32
  137. package/src/models/water_meter_iot_cards.js +34 -34
  138. package/src/models/water_meter_manufacturer.js +35 -35
  139. package/src/models/water_meter_monthly_history.js +36 -36
  140. package/src/models/water_meter_negative_amounts.js +38 -38
  141. package/src/models/water_meter_settings.js +227 -227
  142. package/src/models/water_meter_single_day_history.js +34 -34
  143. package/src/models/water_meter_size.js +15 -15
  144. package/src/models/water_meters.js +134 -134
  145. package/src/models/water_meters_delivery.js +76 -76
  146. package/src/models/water_prepaid_credit.js +47 -47
  147. package/src/models/water_prepaid_debit.js +50 -50
  148. 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;