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