payservedb 6.0.7 → 6.0.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 (132) hide show
  1. package/.env +2 -2
  2. package/index.js +214 -215
  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 +34 -34
  10. package/src/models/assetsAssignment.js +64 -64
  11. package/src/models/auditlog.js +83 -83
  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 +112 -112
  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 +72 -72
  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 +204 -204
  34. package/src/models/default_payment_details.js +17 -17
  35. package/src/models/deliveryTimeMarks.js +18 -18
  36. package/src/models/dutyroster.js +107 -107
  37. package/src/models/email.js +37 -37
  38. package/src/models/email_sms_queue.js +61 -61
  39. package/src/models/entry_exit.js +53 -53
  40. package/src/models/expense.js +99 -99
  41. package/src/models/expense_category.js +45 -45
  42. package/src/models/facility.js +61 -61
  43. package/src/models/facility_departements.js +20 -20
  44. package/src/models/facility_payment_details.js +20 -20
  45. package/src/models/facilityasset.js +25 -25
  46. package/src/models/faq.js +18 -18
  47. package/src/models/gl_account_double_entries.js +25 -25
  48. package/src/models/gl_accounts.js +56 -56
  49. package/src/models/gl_entries.js +49 -49
  50. package/src/models/goodsReceivedNotes.js +115 -115
  51. package/src/models/guard.js +47 -47
  52. package/src/models/handover.js +246 -246
  53. package/src/models/invoice.js +336 -336
  54. package/src/models/item_inspection.js +67 -67
  55. package/src/models/leaseagreement.js +221 -221
  56. package/src/models/leasetemplate.js +17 -17
  57. package/src/models/levy.js +206 -206
  58. package/src/models/levy_invoice_settings.js +26 -26
  59. package/src/models/levycontract.js +117 -117
  60. package/src/models/levytype.js +23 -23
  61. package/src/models/maintenance_service_vendor.js +38 -38
  62. package/src/models/maintenance_services.js +17 -17
  63. package/src/models/maintenancerequisition.js +31 -31
  64. package/src/models/message.js +38 -38
  65. package/src/models/module.js +21 -21
  66. package/src/models/notification.js +44 -44
  67. package/src/models/paymentTermsMarks.js +19 -19
  68. package/src/models/penalty.js +76 -76
  69. package/src/models/pendingCredentials.js +32 -32
  70. package/src/models/powerMeterCustomerBand.js +45 -45
  71. package/src/models/powerMeterDailyReading.js +49 -49
  72. package/src/models/powerMeterMonthlyReading.js +49 -49
  73. package/src/models/powerMeterPowerCharges.js +49 -49
  74. package/src/models/powerMeterSingleDayReading.js +49 -49
  75. package/src/models/powerMeterTariffs.js +49 -49
  76. package/src/models/powerMeters.js +49 -49
  77. package/src/models/powerMetersManufacturer.js +14 -14
  78. package/src/models/propertyManagerContract.js +463 -463
  79. package/src/models/propertyManagerRevenue.js +100 -100
  80. package/src/models/purchaseOrderInvoice.js +74 -74
  81. package/src/models/purchase_order.js +202 -202
  82. package/src/models/purchase_request.js +110 -110
  83. package/src/models/refresh_token.js +23 -23
  84. package/src/models/reminder.js +197 -197
  85. package/src/models/report.js +13 -13
  86. package/src/models/resident.js +121 -121
  87. package/src/models/rfq_details.js +131 -131
  88. package/src/models/rfq_response.js +153 -153
  89. package/src/models/service_charge_invoice_upload.js +42 -42
  90. package/src/models/service_charge_payments.js +27 -27
  91. package/src/models/servicerequest.js +55 -55
  92. package/src/models/settings.js +62 -62
  93. package/src/models/smart_meter_daily_consumption.js +44 -44
  94. package/src/models/sms_africastalking.js +20 -20
  95. package/src/models/sms_meliora.js +20 -20
  96. package/src/models/staff.js +36 -36
  97. package/src/models/stocksandspare.js +34 -34
  98. package/src/models/suppliers.js +74 -74
  99. package/src/models/tickets.js +121 -121
  100. package/src/models/unitManagementTemplate.js +44 -44
  101. package/src/models/unitasset.js +25 -25
  102. package/src/models/units.js +112 -112
  103. package/src/models/user.js +186 -186
  104. package/src/models/valueaddedservices.js +79 -79
  105. package/src/models/vas_invoices_upload.js +50 -50
  106. package/src/models/vas_payments.js +24 -24
  107. package/src/models/vasinvoice.js +192 -192
  108. package/src/models/vasvendor.js +57 -57
  109. package/src/models/visitLog.js +86 -86
  110. package/src/models/visitor.js +67 -67
  111. package/src/models/waitlist.js +45 -45
  112. package/src/models/wallet.js +39 -39
  113. package/src/models/wallet_transactions.js +50 -50
  114. package/src/models/water_invoice.js +193 -193
  115. package/src/models/water_meter_Command_Queue.js +33 -33
  116. package/src/models/water_meter_account.js +78 -78
  117. package/src/models/water_meter_billing.js +58 -58
  118. package/src/models/water_meter_communication.js +17 -17
  119. package/src/models/water_meter_communication_logs.js +30 -30
  120. package/src/models/water_meter_concentrator.js +63 -63
  121. package/src/models/water_meter_daily_history.js +32 -32
  122. package/src/models/water_meter_iot_cards.js +34 -34
  123. package/src/models/water_meter_manufacturer.js +35 -35
  124. package/src/models/water_meter_monthly_history.js +36 -36
  125. package/src/models/water_meter_settings.js +114 -114
  126. package/src/models/water_meter_single_day_history.js +34 -34
  127. package/src/models/water_meter_size.js +15 -15
  128. package/src/models/water_meters.js +117 -117
  129. package/src/models/water_meters_delivery.js +76 -76
  130. package/src/models/water_prepaid_credit.js +43 -43
  131. package/src/models/water_prepaid_debit.js +50 -50
  132. 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;