payservedb 4.4.9 → 4.5.1

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 (82) hide show
  1. package/.env +2 -2
  2. package/index.js +152 -152
  3. package/package.json +17 -17
  4. package/src/models/account.js +36 -36
  5. package/src/models/analog_water_billing.js +58 -58
  6. package/src/models/apilog.js +18 -18
  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/auditlog.js +83 -83
  11. package/src/models/bankdetails.js +40 -40
  12. package/src/models/budget.js +33 -33
  13. package/src/models/budgetCategory.js +19 -19
  14. package/src/models/campaigns.js +72 -72
  15. package/src/models/cashpayment.js +262 -262
  16. package/src/models/combinedUnits.js +62 -62
  17. package/src/models/company.js +53 -53
  18. package/src/models/country_tax.js +42 -42
  19. package/src/models/currency_settings.js +39 -39
  20. package/src/models/customer.js +194 -178
  21. package/src/models/default_payment_details.js +17 -17
  22. package/src/models/dutyroster.js +39 -39
  23. package/src/models/email.js +24 -24
  24. package/src/models/entry_exit.js +53 -53
  25. package/src/models/expense.js +55 -55
  26. package/src/models/facility.js +60 -60
  27. package/src/models/facility_payment_details.js +20 -20
  28. package/src/models/facilityasset.js +25 -25
  29. package/src/models/faq.js +18 -18
  30. package/src/models/guard.js +47 -47
  31. package/src/models/handover.js +241 -241
  32. package/src/models/invoice.js +251 -251
  33. package/src/models/item_inspection.js +67 -67
  34. package/src/models/leaseagreement.js +168 -156
  35. package/src/models/leasetemplate.js +17 -17
  36. package/src/models/levy.js +72 -72
  37. package/src/models/levy_invoice_settings.js +26 -26
  38. package/src/models/levycontract.js +65 -65
  39. package/src/models/levytype.js +23 -23
  40. package/src/models/maintenance_service_vendor.js +38 -38
  41. package/src/models/maintenance_services.js +17 -17
  42. package/src/models/maintenancerequisition.js +31 -31
  43. package/src/models/message.js +38 -38
  44. package/src/models/module.js +21 -21
  45. package/src/models/notification.js +24 -24
  46. package/src/models/penalty.js +76 -76
  47. package/src/models/refresh_token.js +23 -23
  48. package/src/models/reminder.js +161 -161
  49. package/src/models/report.js +13 -13
  50. package/src/models/resident.js +121 -121
  51. package/src/models/service_charge_invoice_upload.js +42 -42
  52. package/src/models/service_charge_payments.js +27 -27
  53. package/src/models/servicerequest.js +55 -55
  54. package/src/models/settings.js +62 -62
  55. package/src/models/smart_meter_daily_consumption.js +44 -44
  56. package/src/models/sms_africastalking.js +20 -20
  57. package/src/models/sms_meliora.js +16 -16
  58. package/src/models/staff.js +36 -36
  59. package/src/models/stocksandspare.js +34 -34
  60. package/src/models/tickets.js +109 -109
  61. package/src/models/unitasset.js +25 -25
  62. package/src/models/units.js +70 -70
  63. package/src/models/user.js +94 -94
  64. package/src/models/valueaddedservices.js +36 -36
  65. package/src/models/vas_invoices_upload.js +50 -50
  66. package/src/models/vas_payments.js +24 -24
  67. package/src/models/vasinvoice.js +159 -159
  68. package/src/models/vasvendor.js +57 -57
  69. package/src/models/visitLog.js +86 -86
  70. package/src/models/visitor.js +63 -63
  71. package/src/models/waitlist.js +45 -45
  72. package/src/models/water_invoice.js +192 -192
  73. package/src/models/water_meter_account.js +74 -74
  74. package/src/models/water_meter_communication.js +17 -17
  75. package/src/models/water_meter_concentrator.js +59 -59
  76. package/src/models/water_meter_iot_cards.js +34 -34
  77. package/src/models/water_meter_manufacturer.js +35 -35
  78. package/src/models/water_meter_settings.js +88 -88
  79. package/src/models/water_meter_size.js +15 -15
  80. package/src/models/water_meters.js +110 -110
  81. package/src/models/water_meters_delivery.js +76 -76
  82. package/src/models/workorder.js +49 -49
@@ -1,157 +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
- createdBy: {
146
- type: mongoose.Schema.Types.ObjectId,
147
- ref: 'User'
148
- }
149
- }, {
150
- timestamps: true
151
- });
152
-
153
- leaseAgreementSchema.index({ facilityId: 1 });
154
-
155
- const LeaseAgreement = mongoose.model('LeaseAgreement', leaseAgreementSchema);
156
-
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
+
157
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,73 +1,73 @@
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
- },
65
- {
66
- timestamps: true,
67
- }
68
- );
69
-
70
- // Compile the model from the schema
71
- const Levy = mongoose.model("Levy", levySchema);
72
-
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
+ },
65
+ {
66
+ timestamps: true,
67
+ }
68
+ );
69
+
70
+ // Compile the model from the schema
71
+ const Levy = mongoose.model("Levy", levySchema);
72
+
73
73
  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;