payservedb 5.0.1 → 5.0.3

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 (103) hide show
  1. package/.env +2 -2
  2. package/index.js +172 -171
  3. package/package.json +17 -17
  4. package/src/models/account.js +35 -35
  5. package/src/models/analog_water_billing.js +58 -58
  6. package/src/models/apilog.js +18 -18
  7. package/src/models/approvalsWorkflows.js +49 -49
  8. package/src/models/archivedapilog.js +18 -18
  9. package/src/models/archivedauditlog.js +83 -83
  10. package/src/models/asset.js +34 -34
  11. package/src/models/auditlog.js +83 -83
  12. package/src/models/bankdetails.js +40 -40
  13. package/src/models/bookinganalytics.js +63 -63
  14. package/src/models/bookingconfig.js +45 -45
  15. package/src/models/bookingproperty.js +112 -112
  16. package/src/models/bookingreservation.js +192 -192
  17. package/src/models/bookingrevenuerecord.js +84 -84
  18. package/src/models/budget.js +33 -33
  19. package/src/models/budgetCategory.js +19 -19
  20. package/src/models/campaigns.js +72 -72
  21. package/src/models/cashpayment.js +262 -262
  22. package/src/models/combinedUnits.js +62 -62
  23. package/src/models/common_area_electricity.js +38 -38
  24. package/src/models/common_area_generator.js +38 -38
  25. package/src/models/common_area_utility_alert.js +37 -37
  26. package/src/models/common_area_water.js +39 -39
  27. package/src/models/company.js +53 -53
  28. package/src/models/country_tax.js +42 -42
  29. package/src/models/currency_settings.js +39 -39
  30. package/src/models/customer.js +200 -200
  31. package/src/models/default_payment_details.js +17 -17
  32. package/src/models/dutyroster.js +129 -129
  33. package/src/models/email.js +24 -24
  34. package/src/models/entry_exit.js +53 -53
  35. package/src/models/expense.js +55 -55
  36. package/src/models/facility.js +61 -61
  37. package/src/models/facility_payment_details.js +20 -20
  38. package/src/models/facilityasset.js +25 -25
  39. package/src/models/faq.js +18 -18
  40. package/src/models/gl_account_double_entries.js +25 -0
  41. package/src/models/gl_accounts.js +56 -56
  42. package/src/models/gl_entries.js +45 -50
  43. package/src/models/guard.js +47 -47
  44. package/src/models/handover.js +241 -241
  45. package/src/models/invoice.js +291 -291
  46. package/src/models/item_inspection.js +67 -67
  47. package/src/models/leaseagreement.js +168 -168
  48. package/src/models/leasetemplate.js +17 -17
  49. package/src/models/levy.js +84 -84
  50. package/src/models/levy_invoice_settings.js +26 -26
  51. package/src/models/levycontract.js +77 -77
  52. package/src/models/levytype.js +23 -23
  53. package/src/models/maintenance_service_vendor.js +38 -38
  54. package/src/models/maintenance_services.js +17 -17
  55. package/src/models/maintenancerequisition.js +31 -31
  56. package/src/models/message.js +38 -38
  57. package/src/models/module.js +21 -21
  58. package/src/models/notification.js +24 -24
  59. package/src/models/penalty.js +76 -76
  60. package/src/models/purchase_order.js +190 -190
  61. package/src/models/purchase_request.js +65 -65
  62. package/src/models/refresh_token.js +23 -23
  63. package/src/models/reminder.js +161 -161
  64. package/src/models/report.js +13 -13
  65. package/src/models/resident.js +121 -121
  66. package/src/models/rfq_details.js +87 -87
  67. package/src/models/rfq_response.js +109 -109
  68. package/src/models/service_charge_invoice_upload.js +42 -42
  69. package/src/models/service_charge_payments.js +27 -27
  70. package/src/models/servicerequest.js +55 -55
  71. package/src/models/settings.js +62 -62
  72. package/src/models/smart_meter_daily_consumption.js +44 -44
  73. package/src/models/sms_africastalking.js +20 -20
  74. package/src/models/sms_meliora.js +16 -16
  75. package/src/models/staff.js +36 -36
  76. package/src/models/stocksandspare.js +34 -34
  77. package/src/models/suppliers.js +68 -68
  78. package/src/models/tickets.js +109 -109
  79. package/src/models/unitasset.js +25 -25
  80. package/src/models/units.js +86 -86
  81. package/src/models/user.js +187 -187
  82. package/src/models/valueaddedservices.js +36 -36
  83. package/src/models/vas_invoices_upload.js +50 -50
  84. package/src/models/vas_payments.js +24 -24
  85. package/src/models/vasinvoice.js +159 -159
  86. package/src/models/vasvendor.js +57 -57
  87. package/src/models/visitLog.js +86 -86
  88. package/src/models/visitor.js +63 -63
  89. package/src/models/waitlist.js +45 -45
  90. package/src/models/water_invoice.js +192 -192
  91. package/src/models/water_meter_account.js +74 -74
  92. package/src/models/water_meter_communication.js +17 -17
  93. package/src/models/water_meter_concentrator.js +59 -59
  94. package/src/models/water_meter_daily_history.js +31 -31
  95. package/src/models/water_meter_iot_cards.js +34 -34
  96. package/src/models/water_meter_manufacturer.js +35 -35
  97. package/src/models/water_meter_monthly_history.js +37 -37
  98. package/src/models/water_meter_settings.js +88 -88
  99. package/src/models/water_meter_single_day_history.js +31 -31
  100. package/src/models/water_meter_size.js +15 -15
  101. package/src/models/water_meters.js +106 -116
  102. package/src/models/water_meters_delivery.js +76 -76
  103. package/src/models/workorder.js +49 -49
@@ -1,68 +1,68 @@
1
- const mongoose = require('mongoose');
2
-
3
- // Define the schema for inspection items
4
- const inspectionItemSchema = new mongoose.Schema({
5
- name: {
6
- type: String,
7
- required: [true, 'Item name is required'],
8
- trim: true
9
- },
10
- category: {
11
- type: String,
12
- required: [true, 'Category is required'],
13
- trim: true
14
- },
15
- subcategory: {
16
- type: String,
17
- trim: true,
18
- default: null
19
- },
20
- description: {
21
- type: String,
22
- trim: true
23
- },
24
- possibleConditions: {
25
- type: [String],
26
- default: ['Excellent', 'Good', 'Fair', 'Poor', 'Damaged', 'Non-functional'],
27
- validate: {
28
- validator: function(v) {
29
- return v.length > 0;
30
- },
31
- message: 'At least one possible condition is required'
32
- }
33
- },
34
- defaultCondition: {
35
- type: String,
36
- default: 'Good'
37
- },
38
- isRequired: {
39
- type: Boolean,
40
- default: true
41
- },
42
- defaultQuantity: {
43
- type: Number,
44
- default: 1,
45
- min: [1, 'Default quantity must be at least 1']
46
- },
47
- active: {
48
- type: Boolean,
49
- default: true
50
- },
51
- facilityId: {
52
- type: mongoose.Schema.Types.ObjectId,
53
- ref: 'Facility',
54
- required: true
55
- }
56
- }, {
57
- timestamps: true
58
- });
59
-
60
- // Add indexes for common queries
61
- inspectionItemSchema.index({ facilityId: 1 });
62
- inspectionItemSchema.index({ facilityId: 1, category: 1 });
63
- inspectionItemSchema.index({ facilityId: 1, active: 1 });
64
-
65
- // Create InspectionItem model
66
- const InspectionItem = mongoose.model('InspectionItem', inspectionItemSchema);
67
-
1
+ const mongoose = require('mongoose');
2
+
3
+ // Define the schema for inspection items
4
+ const inspectionItemSchema = new mongoose.Schema({
5
+ name: {
6
+ type: String,
7
+ required: [true, 'Item name is required'],
8
+ trim: true
9
+ },
10
+ category: {
11
+ type: String,
12
+ required: [true, 'Category is required'],
13
+ trim: true
14
+ },
15
+ subcategory: {
16
+ type: String,
17
+ trim: true,
18
+ default: null
19
+ },
20
+ description: {
21
+ type: String,
22
+ trim: true
23
+ },
24
+ possibleConditions: {
25
+ type: [String],
26
+ default: ['Excellent', 'Good', 'Fair', 'Poor', 'Damaged', 'Non-functional'],
27
+ validate: {
28
+ validator: function(v) {
29
+ return v.length > 0;
30
+ },
31
+ message: 'At least one possible condition is required'
32
+ }
33
+ },
34
+ defaultCondition: {
35
+ type: String,
36
+ default: 'Good'
37
+ },
38
+ isRequired: {
39
+ type: Boolean,
40
+ default: true
41
+ },
42
+ defaultQuantity: {
43
+ type: Number,
44
+ default: 1,
45
+ min: [1, 'Default quantity must be at least 1']
46
+ },
47
+ active: {
48
+ type: Boolean,
49
+ default: true
50
+ },
51
+ facilityId: {
52
+ type: mongoose.Schema.Types.ObjectId,
53
+ ref: 'Facility',
54
+ required: true
55
+ }
56
+ }, {
57
+ timestamps: true
58
+ });
59
+
60
+ // Add indexes for common queries
61
+ inspectionItemSchema.index({ facilityId: 1 });
62
+ inspectionItemSchema.index({ facilityId: 1, category: 1 });
63
+ inspectionItemSchema.index({ facilityId: 1, active: 1 });
64
+
65
+ // Create InspectionItem model
66
+ const InspectionItem = mongoose.model('InspectionItem', inspectionItemSchema);
67
+
68
68
  module.exports = InspectionItem;
@@ -1,169 +1,169 @@
1
- const mongoose = require('mongoose');
2
-
3
- const leaseAgreementSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true
8
- },
9
- currency: {
10
- type: mongoose.Schema.Types.ObjectId,
11
- ref: 'Currency',
12
- required: true
13
- },
14
- unitNumber: {
15
- type: mongoose.Schema.Types.ObjectId,
16
- ref: 'Unit',
17
- required: true
18
- },
19
- tenant: {
20
- type: mongoose.Schema.Types.ObjectId,
21
- ref: 'Customer',
22
- required: true
23
- },
24
- landlord: {
25
- type: mongoose.Schema.Types.ObjectId,
26
- ref: 'Customer',
27
- required: true
28
- },
29
- leaseTerms: {
30
- startDate: { type: Date, required: true },
31
- endDate: { type: Date, required: true },
32
- duration: { type: Number, required: true },
33
- autoRenewal: { type: Boolean, default: false }
34
- },
35
- financialTerms: {
36
- monthlyRent: { type: Number, required: true },
37
- paymentDueDate: { type: Number, required: true },
38
- paymentMethods: [{
39
- type: {
40
- type: String,
41
- required: true,
42
- enum: ['Bank Transfer', 'Cash', 'Cheque']
43
- },
44
- details: {
45
- bankName: String,
46
- accountName: String,
47
- accountNumber: String,
48
- branch: String,
49
- swiftCode: String,
50
- bankToDraft: String,
51
- chequeAccountNumber: String,
52
- preferredCashLocation: String
53
- },
54
- isPrimary: { type: Boolean, default: false }
55
- }],
56
- securityDeposit: { type: Number, required: true },
57
- balanceBroughtForward: { type: Number, required: true, default: 0 },
58
- penaltyId: {
59
- type: mongoose.Schema.Types.ObjectId,
60
- ref: 'Penalty'
61
- },
62
- mpesaEnabled: {
63
- type: Boolean,
64
- default: false
65
- },
66
- mpesaDetails: {
67
- businessNumber: String,
68
- accountNumber: String,
69
- phoneNumber: String
70
- }
71
- },
72
- billingCycle: {
73
- frequency: {
74
- type: String,
75
- enum: ['Monthly', 'Quarterly', 'Annually'],
76
- required: true
77
- },
78
- nextInvoiceDate: { type: Date },
79
- autoSend: { type: Boolean, default: false }
80
- },
81
- invoices: [
82
- { type: mongoose.Schema.Types.ObjectId, ref: 'Invoice' }
83
- ],
84
- leaseTemplate: {
85
- type: mongoose.Schema.Types.ObjectId,
86
- ref: 'LeaseTemplate',
87
- required: true
88
- },
89
- leaseDocuments: [
90
- {
91
- fileName: { type: String },
92
- fileUrl: { type: String },
93
- uploadedAt: { type: Date, default: Date.now }
94
- }
95
- ],
96
- reminders: [
97
- {
98
- reminderId: {
99
- type: mongoose.Schema.Types.ObjectId,
100
- ref: 'Reminder'
101
- },
102
- status: {
103
- type: String,
104
- enum: ['Pending', 'Sent'],
105
- default: 'Pending'
106
- }
107
- }
108
- ],
109
- status: {
110
- type: String,
111
- enum: ['Active', 'Pending', 'Expired', 'Terminated'],
112
- default: 'Active'
113
- },
114
- payments: [
115
- {
116
- invoiceId: {
117
- type: mongoose.Schema.Types.ObjectId,
118
- ref: 'Invoice',
119
- required: true
120
- },
121
- method: {
122
- type: {
123
- type: String,
124
- enum: ['Bank Transfer', 'Cash', 'Cheque', 'MPESA'],
125
- required: true
126
- },
127
- details: {
128
- bankName: String,
129
- accountNumber: String,
130
- transactionId: String,
131
- chequeNumber: String,
132
- mpesaTransactionId: String,
133
- mpesaPhoneNumber: String
134
- }
135
- },
136
- amount: { type: Number, required: true },
137
- receivedBy: {
138
- type: mongoose.Schema.Types.ObjectId,
139
- ref: 'User',
140
- required: true
141
- },
142
- receivedAt: { type: Date, default: Date.now }
143
- }
144
- ],
145
- // New field to track lease edit history
146
- editHistory: [
147
- {
148
- editedBy: {
149
- type: mongoose.Schema.Types.ObjectId,
150
- ref: 'User'
151
- },
152
- editedAt: { type: Date, default: Date.now },
153
- reason: { type: String, required: true },
154
- changes: { type: Object } // Optional: Store what fields were changed
155
- }
156
- ],
157
- createdBy: {
158
- type: mongoose.Schema.Types.ObjectId,
159
- ref: 'User'
160
- }
161
- }, {
162
- timestamps: true
163
- });
164
-
165
- leaseAgreementSchema.index({ facilityId: 1 });
166
-
167
- const LeaseAgreement = mongoose.model('LeaseAgreement', leaseAgreementSchema);
168
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const leaseAgreementSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true
8
+ },
9
+ currency: {
10
+ type: mongoose.Schema.Types.ObjectId,
11
+ ref: 'Currency',
12
+ required: true
13
+ },
14
+ unitNumber: {
15
+ type: mongoose.Schema.Types.ObjectId,
16
+ ref: 'Unit',
17
+ required: true
18
+ },
19
+ tenant: {
20
+ type: mongoose.Schema.Types.ObjectId,
21
+ ref: 'Customer',
22
+ required: true
23
+ },
24
+ landlord: {
25
+ type: mongoose.Schema.Types.ObjectId,
26
+ ref: 'Customer',
27
+ required: true
28
+ },
29
+ leaseTerms: {
30
+ startDate: { type: Date, required: true },
31
+ endDate: { type: Date, required: true },
32
+ duration: { type: Number, required: true },
33
+ autoRenewal: { type: Boolean, default: false }
34
+ },
35
+ financialTerms: {
36
+ monthlyRent: { type: Number, required: true },
37
+ paymentDueDate: { type: Number, required: true },
38
+ paymentMethods: [{
39
+ type: {
40
+ type: String,
41
+ required: true,
42
+ enum: ['Bank Transfer', 'Cash', 'Cheque']
43
+ },
44
+ details: {
45
+ bankName: String,
46
+ accountName: String,
47
+ accountNumber: String,
48
+ branch: String,
49
+ swiftCode: String,
50
+ bankToDraft: String,
51
+ chequeAccountNumber: String,
52
+ preferredCashLocation: String
53
+ },
54
+ isPrimary: { type: Boolean, default: false }
55
+ }],
56
+ securityDeposit: { type: Number, required: true },
57
+ balanceBroughtForward: { type: Number, required: true, default: 0 },
58
+ penaltyId: {
59
+ type: mongoose.Schema.Types.ObjectId,
60
+ ref: 'Penalty'
61
+ },
62
+ mpesaEnabled: {
63
+ type: Boolean,
64
+ default: false
65
+ },
66
+ mpesaDetails: {
67
+ businessNumber: String,
68
+ accountNumber: String,
69
+ phoneNumber: String
70
+ }
71
+ },
72
+ billingCycle: {
73
+ frequency: {
74
+ type: String,
75
+ enum: ['Monthly', 'Quarterly', 'Annually'],
76
+ required: true
77
+ },
78
+ nextInvoiceDate: { type: Date },
79
+ autoSend: { type: Boolean, default: false }
80
+ },
81
+ invoices: [
82
+ { type: mongoose.Schema.Types.ObjectId, ref: 'Invoice' }
83
+ ],
84
+ leaseTemplate: {
85
+ type: mongoose.Schema.Types.ObjectId,
86
+ ref: 'LeaseTemplate',
87
+ required: true
88
+ },
89
+ leaseDocuments: [
90
+ {
91
+ fileName: { type: String },
92
+ fileUrl: { type: String },
93
+ uploadedAt: { type: Date, default: Date.now }
94
+ }
95
+ ],
96
+ reminders: [
97
+ {
98
+ reminderId: {
99
+ type: mongoose.Schema.Types.ObjectId,
100
+ ref: 'Reminder'
101
+ },
102
+ status: {
103
+ type: String,
104
+ enum: ['Pending', 'Sent'],
105
+ default: 'Pending'
106
+ }
107
+ }
108
+ ],
109
+ status: {
110
+ type: String,
111
+ enum: ['Active', 'Pending', 'Expired', 'Terminated'],
112
+ default: 'Active'
113
+ },
114
+ payments: [
115
+ {
116
+ invoiceId: {
117
+ type: mongoose.Schema.Types.ObjectId,
118
+ ref: 'Invoice',
119
+ required: true
120
+ },
121
+ method: {
122
+ type: {
123
+ type: String,
124
+ enum: ['Bank Transfer', 'Cash', 'Cheque', 'MPESA'],
125
+ required: true
126
+ },
127
+ details: {
128
+ bankName: String,
129
+ accountNumber: String,
130
+ transactionId: String,
131
+ chequeNumber: String,
132
+ mpesaTransactionId: String,
133
+ mpesaPhoneNumber: String
134
+ }
135
+ },
136
+ amount: { type: Number, required: true },
137
+ receivedBy: {
138
+ type: mongoose.Schema.Types.ObjectId,
139
+ ref: 'User',
140
+ required: true
141
+ },
142
+ receivedAt: { type: Date, default: Date.now }
143
+ }
144
+ ],
145
+ // New field to track lease edit history
146
+ editHistory: [
147
+ {
148
+ editedBy: {
149
+ type: mongoose.Schema.Types.ObjectId,
150
+ ref: 'User'
151
+ },
152
+ editedAt: { type: Date, default: Date.now },
153
+ reason: { type: String, required: true },
154
+ changes: { type: Object } // Optional: Store what fields were changed
155
+ }
156
+ ],
157
+ createdBy: {
158
+ type: mongoose.Schema.Types.ObjectId,
159
+ ref: 'User'
160
+ }
161
+ }, {
162
+ timestamps: true
163
+ });
164
+
165
+ leaseAgreementSchema.index({ facilityId: 1 });
166
+
167
+ const LeaseAgreement = mongoose.model('LeaseAgreement', leaseAgreementSchema);
168
+
169
169
  module.exports = LeaseAgreement;
@@ -1,18 +1,18 @@
1
- const mongoose = require("mongoose");
2
-
3
- const LeaseTemplateSchema = new mongoose.Schema({
4
- name: { type: String, required: true },
5
- description: { type: String, required: true },
6
- templateContent: { type: String, required: true },
7
- leaseAgreementId: {
8
- type: mongoose.Schema.Types.ObjectId,
9
- ref: 'LeaseAgreement',
10
- required: false
11
- },
12
- createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
13
- createdAt: { type: Date, default: Date.now },
14
- });
15
-
16
- module.exports = mongoose.model('LeaseTemplate', LeaseTemplateSchema);
17
-
1
+ const mongoose = require("mongoose");
2
+
3
+ const LeaseTemplateSchema = new mongoose.Schema({
4
+ name: { type: String, required: true },
5
+ description: { type: String, required: true },
6
+ templateContent: { type: String, required: true },
7
+ leaseAgreementId: {
8
+ type: mongoose.Schema.Types.ObjectId,
9
+ ref: 'LeaseAgreement',
10
+ required: false
11
+ },
12
+ createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
13
+ createdAt: { type: Date, default: Date.now },
14
+ });
15
+
16
+ module.exports = mongoose.model('LeaseTemplate', LeaseTemplateSchema);
17
+
18
18
 
@@ -1,85 +1,85 @@
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
- // New fields added from levy contract
41
- currency: {
42
- type: mongoose.Schema.Types.ObjectId,
43
- ref: "Currency",
44
- required: false,
45
- },
46
- mobilePayment: {
47
- type: Boolean,
48
- default: false,
49
- required: false,
50
- },
51
- paymentMethodId: {
52
- type: mongoose.Schema.Types.ObjectId,
53
- required: false,
54
- },
55
- disabled: {
56
- type: Boolean,
57
- required: false,
58
- },
59
- facilityId: {
60
- type: mongoose.Schema.Types.ObjectId,
61
- ref: "Facility",
62
- required: true,
63
- },
64
- // Added reminder reference
65
- reminderId: {
66
- type: mongoose.Schema.Types.ObjectId,
67
- ref: 'Reminder',
68
- required: false
69
- },
70
- // Added penalty reference
71
- penaltyId: {
72
- type: mongoose.Schema.Types.ObjectId,
73
- ref: 'Penalty',
74
- required: false
75
- }
76
- },
77
- {
78
- timestamps: true,
79
- }
80
- );
81
-
82
- // Compile the model from the schema
83
- const Levy = mongoose.model("Levy", levySchema);
84
-
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
+ // New fields added from levy contract
41
+ currency: {
42
+ type: mongoose.Schema.Types.ObjectId,
43
+ ref: "Currency",
44
+ required: false,
45
+ },
46
+ mobilePayment: {
47
+ type: Boolean,
48
+ default: false,
49
+ required: false,
50
+ },
51
+ paymentMethodId: {
52
+ type: mongoose.Schema.Types.ObjectId,
53
+ required: false,
54
+ },
55
+ disabled: {
56
+ type: Boolean,
57
+ required: false,
58
+ },
59
+ facilityId: {
60
+ type: mongoose.Schema.Types.ObjectId,
61
+ ref: "Facility",
62
+ required: true,
63
+ },
64
+ // Added reminder reference
65
+ reminderId: {
66
+ type: mongoose.Schema.Types.ObjectId,
67
+ ref: 'Reminder',
68
+ required: false
69
+ },
70
+ // Added penalty reference
71
+ penaltyId: {
72
+ type: mongoose.Schema.Types.ObjectId,
73
+ ref: 'Penalty',
74
+ required: false
75
+ }
76
+ },
77
+ {
78
+ timestamps: true,
79
+ }
80
+ );
81
+
82
+ // Compile the model from the schema
83
+ const Levy = mongoose.model("Levy", levySchema);
84
+
85
85
  module.exports = Levy;