payservedb 4.3.9 → 4.4.2

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 +185 -185
  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 +181 -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 +58 -58
  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 +252 -210
  33. package/src/models/item_inspection.js +67 -67
  34. package/src/models/leaseagreement.js +156 -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 +73 -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 +101 -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,73 +1,73 @@
1
- const mongoose = require('mongoose');
2
-
3
- const CampaignSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- },
9
- name: {
10
- type: String,
11
- required: true,
12
- trim: true,
13
- maxlength: 100
14
- },
15
- objective: {
16
- type: String,
17
- enum: ['Brand Awareness', 'Lead Generation', 'Sales', 'Engagement'],
18
- required: true
19
- },
20
- startDate: {
21
- type: Date,
22
- required: true
23
- },
24
- endDate: {
25
- type: Date,
26
- required: true,
27
- validate: {
28
- validator: function (value) {
29
- return this.startDate <= value;
30
- },
31
- message: 'End date must be after or equal to start date'
32
- }
33
- },
34
- targetAudience: {
35
- type: String,
36
- required: true,
37
- trim: true,
38
- maxlength: 200
39
- },
40
- channels: [{
41
- type: String,
42
- enum: ['Email', 'Social Media', 'SMS', 'Ads'],
43
- required: true
44
- }],
45
- status: {
46
- type: String,
47
- enum: ['Draft', 'Ongoing', 'Completed'],
48
- default: 'Draft'
49
- }, description: {
50
- type: String,
51
- trim: true,
52
- maxlength: 500
53
- },
54
- createdAt: {
55
- type: Date,
56
- default: Date.now
57
- },
58
- updatedAt: {
59
- type: Date,
60
- default: Date.now
61
- }
62
- }, {
63
- timestamps: true
64
- });
65
-
66
- // Ensure at least one channel is selected
67
- CampaignSchema.path('channels').validate(function (value) {
68
- return value.length > 0;
69
- }, 'At least one channel must be selected');
70
-
71
- const Campaign = mongoose.model('Campaign', CampaignSchema);
72
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const CampaignSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ },
9
+ name: {
10
+ type: String,
11
+ required: true,
12
+ trim: true,
13
+ maxlength: 100
14
+ },
15
+ objective: {
16
+ type: String,
17
+ enum: ['Brand Awareness', 'Lead Generation', 'Sales', 'Engagement'],
18
+ required: true
19
+ },
20
+ startDate: {
21
+ type: Date,
22
+ required: true
23
+ },
24
+ endDate: {
25
+ type: Date,
26
+ required: true,
27
+ validate: {
28
+ validator: function (value) {
29
+ return this.startDate <= value;
30
+ },
31
+ message: 'End date must be after or equal to start date'
32
+ }
33
+ },
34
+ targetAudience: {
35
+ type: String,
36
+ required: true,
37
+ trim: true,
38
+ maxlength: 200
39
+ },
40
+ channels: {
41
+ type: [String],
42
+ enum: ['Email', 'Social Media', 'SMS', 'Ads'],
43
+ required: true
44
+ },
45
+ status: {
46
+ type: String,
47
+ enum: ['Draft', 'Ongoing', 'Completed'],
48
+ default: 'Draft'
49
+ }, description: {
50
+ type: String,
51
+ trim: true,
52
+ maxlength: 500
53
+ },
54
+ createdAt: {
55
+ type: Date,
56
+ default: Date.now
57
+ },
58
+ updatedAt: {
59
+ type: Date,
60
+ default: Date.now
61
+ }
62
+ }, {
63
+ timestamps: true
64
+ });
65
+
66
+ // Ensure at least one channel is selected
67
+ CampaignSchema.path('channels').validate(function (value) {
68
+ return value.length > 0;
69
+ }, 'At least one channel must be selected');
70
+
71
+ const Campaign = mongoose.model('Campaign', CampaignSchema);
72
+
73
73
  module.exports =Campaign;
@@ -1,186 +1,186 @@
1
- // File: models/CashPayment.js
2
- const mongoose = require('mongoose');
3
-
4
- // Define the schema for Cash Payments
5
- const cashPaymentSchema = new mongoose.Schema({
6
- // Payment reference details
7
- paymentReference: {
8
- type: String,
9
- required: true,
10
- unique: true,
11
- trim: true
12
- },
13
- facilityId: {
14
- type: mongoose.Schema.Types.ObjectId,
15
- ref: 'Facility',
16
- required: true
17
- },
18
- // Invoice details
19
- invoice: {
20
- invoiceId: {
21
- type: mongoose.Schema.Types.ObjectId,
22
- ref: 'Invoice',
23
- required: true
24
- },
25
- invoiceNumber: {
26
- type: String,
27
- required: true,
28
- trim: true
29
- },
30
- accountNumber: {
31
- type: String,
32
- required: true,
33
- trim: true
34
- },
35
- totalAmount: {
36
- type: Number,
37
- required: true,
38
- min: 0
39
- }
40
- },
41
- // Client details
42
- client: {
43
- clientId: {
44
- type: mongoose.Schema.Types.ObjectId,
45
- ref: 'Customer',
46
- required: true
47
- },
48
- firstName: {
49
- type: String,
50
- required: true
51
- },
52
- lastName: {
53
- type: String,
54
- required: true
55
- }
56
- },
57
- // Payment details
58
- paymentAmount: {
59
- type: Number,
60
- required: true,
61
- min: 0
62
- },
63
- currency: {
64
- id: {
65
- type: mongoose.Schema.Types.ObjectId,
66
- ref: 'Currency',
67
- required: true
68
- },
69
- name: {
70
- type: String,
71
- required: true
72
- },
73
- code: {
74
- type: String,
75
- required: true,
76
- uppercase: true,
77
- minlength: 3,
78
- maxlength: 3
79
- }
80
- },
81
- paymentDate: {
82
- type: Date,
83
- required: true,
84
- default: Date.now
85
- },
86
- receivedBy: {
87
- type: mongoose.Schema.Types.ObjectId,
88
- ref: 'User',
89
- required: true
90
- },
91
- receiptNumber: {
92
- type: String,
93
- required: true,
94
- unique: true
95
- },
96
- paymentMethod: {
97
- type: String,
98
- enum: ['Cash', 'Check', 'Bank Transfer'],
99
- default: 'Cash'
100
- },
101
- paymentDetails: {
102
- checkNumber: String,
103
- bankName: String,
104
- transferReference: String,
105
- notes: String
106
- },
107
- // Reconciliation status
108
- reconciliationStatus: {
109
- type: String,
110
- enum: ['Pending', 'Matched', 'Partial', 'Overpaid', 'Voided'],
111
- default: 'Pending'
112
- },
113
- // Approval details
114
- approvalStatus: {
115
- type: String,
116
- enum: ['Pending', 'Approved', 'Rejected'],
117
- default: 'Pending'
118
- },
119
- approvedBy: {
120
- userId: {
121
- type: mongoose.Schema.Types.ObjectId,
122
- ref: 'User'
123
- },
124
- name: String,
125
- approvalDate: Date,
126
- comments: String
127
- },
128
- // Reconciliation details
129
- reconciliationDetails: {
130
- appliedAmount: {
131
- type: Number,
132
- default: 0
133
- },
134
- overpayAmount: {
135
- type: Number,
136
- default: 0
137
- },
138
- reconciliationDate: Date,
139
- reconciledBy: {
140
- type: mongoose.Schema.Types.ObjectId,
141
- ref: 'User'
142
- }
143
- },
144
- // Exchange rate (for payments in different currencies)
145
- exchangeRate: {
146
- rate: {
147
- type: Number,
148
- default: 1
149
- },
150
- originalCurrency: {
151
- code: String,
152
- amount: Number
153
- }
154
- },
155
- // Additional fields
156
- isVoided: {
157
- type: Boolean,
158
- default: false
159
- },
160
- voidReason: {
161
- type: String
162
- },
163
- voidedBy: {
164
- type: mongoose.Schema.Types.ObjectId,
165
- ref: 'User'
166
- },
167
- voidDate: Date,
168
- attachments: [{
169
- fileName: String,
170
- fileUrl: String,
171
- uploadDate: {
172
- type: Date,
173
- default: Date.now
174
- },
175
- uploadedBy: {
176
- type: mongoose.Schema.Types.ObjectId,
177
- ref: 'User'
178
- }
179
- }]
180
- }, {
181
- timestamps: true
182
- });
183
-
184
- const CashPayment = mongoose.model('CashPayment', cashPaymentSchema);
185
-
1
+ // File: models/CashPayment.js
2
+ const mongoose = require('mongoose');
3
+
4
+ // Define the schema for Cash Payments
5
+ const cashPaymentSchema = new mongoose.Schema({
6
+ // Payment reference details
7
+ paymentReference: {
8
+ type: String,
9
+ required: true,
10
+ unique: true,
11
+ trim: true
12
+ },
13
+ facilityId: {
14
+ type: mongoose.Schema.Types.ObjectId,
15
+ ref: 'Facility',
16
+ required: true
17
+ },
18
+ // Invoice details
19
+ invoice: {
20
+ invoiceId: {
21
+ type: mongoose.Schema.Types.ObjectId,
22
+ ref: 'Invoice',
23
+ required: true
24
+ },
25
+ invoiceNumber: {
26
+ type: String,
27
+ required: true,
28
+ trim: true
29
+ },
30
+ accountNumber: {
31
+ type: String,
32
+ required: true,
33
+ trim: true
34
+ },
35
+ totalAmount: {
36
+ type: Number,
37
+ required: true,
38
+ min: 0
39
+ }
40
+ },
41
+ // Client details
42
+ client: {
43
+ clientId: {
44
+ type: mongoose.Schema.Types.ObjectId,
45
+ ref: 'Customer',
46
+ required: true
47
+ },
48
+ firstName: {
49
+ type: String,
50
+ required: true
51
+ },
52
+ lastName: {
53
+ type: String,
54
+ required: true
55
+ }
56
+ },
57
+ // Payment details
58
+ paymentAmount: {
59
+ type: Number,
60
+ required: true,
61
+ min: 0
62
+ },
63
+ currency: {
64
+ id: {
65
+ type: mongoose.Schema.Types.ObjectId,
66
+ ref: 'Currency',
67
+ required: true
68
+ },
69
+ name: {
70
+ type: String,
71
+ required: true
72
+ },
73
+ code: {
74
+ type: String,
75
+ required: true,
76
+ uppercase: true,
77
+ minlength: 3,
78
+ maxlength: 3
79
+ }
80
+ },
81
+ paymentDate: {
82
+ type: Date,
83
+ required: true,
84
+ default: Date.now
85
+ },
86
+ receivedBy: {
87
+ type: mongoose.Schema.Types.ObjectId,
88
+ ref: 'User',
89
+ required: true
90
+ },
91
+ receiptNumber: {
92
+ type: String,
93
+ required: true,
94
+ unique: true
95
+ },
96
+ paymentMethod: {
97
+ type: String,
98
+ enum: ['Cash', 'Check', 'Bank Transfer'],
99
+ default: 'Cash'
100
+ },
101
+ paymentDetails: {
102
+ checkNumber: String,
103
+ bankName: String,
104
+ transferReference: String,
105
+ notes: String
106
+ },
107
+ // Reconciliation status
108
+ reconciliationStatus: {
109
+ type: String,
110
+ enum: ['Pending', 'Matched', 'Partial', 'Overpaid', 'Voided'],
111
+ default: 'Pending'
112
+ },
113
+ // Approval details
114
+ approvalStatus: {
115
+ type: String,
116
+ enum: ['Pending', 'Approved', 'Rejected'],
117
+ default: 'Pending'
118
+ },
119
+ approvedBy: {
120
+ userId: {
121
+ type: mongoose.Schema.Types.ObjectId,
122
+ ref: 'User'
123
+ },
124
+ name: String,
125
+ approvalDate: Date,
126
+ comments: String
127
+ },
128
+ // Reconciliation details
129
+ reconciliationDetails: {
130
+ appliedAmount: {
131
+ type: Number,
132
+ default: 0
133
+ },
134
+ overpayAmount: {
135
+ type: Number,
136
+ default: 0
137
+ },
138
+ reconciliationDate: Date,
139
+ reconciledBy: {
140
+ type: mongoose.Schema.Types.ObjectId,
141
+ ref: 'User'
142
+ }
143
+ },
144
+ // Exchange rate (for payments in different currencies)
145
+ exchangeRate: {
146
+ rate: {
147
+ type: Number,
148
+ default: 1
149
+ },
150
+ originalCurrency: {
151
+ code: String,
152
+ amount: Number
153
+ }
154
+ },
155
+ // Additional fields
156
+ isVoided: {
157
+ type: Boolean,
158
+ default: false
159
+ },
160
+ voidReason: {
161
+ type: String
162
+ },
163
+ voidedBy: {
164
+ type: mongoose.Schema.Types.ObjectId,
165
+ ref: 'User'
166
+ },
167
+ voidDate: Date,
168
+ attachments: [{
169
+ fileName: String,
170
+ fileUrl: String,
171
+ uploadDate: {
172
+ type: Date,
173
+ default: Date.now
174
+ },
175
+ uploadedBy: {
176
+ type: mongoose.Schema.Types.ObjectId,
177
+ ref: 'User'
178
+ }
179
+ }]
180
+ }, {
181
+ timestamps: true
182
+ });
183
+
184
+ const CashPayment = mongoose.model('CashPayment', cashPaymentSchema);
185
+
186
186
  module.exports = CashPayment;
@@ -1,62 +1,62 @@
1
- const mongoose = require('mongoose');
2
-
3
- // Define the schema for companies
4
- const combinedUnitSchema = new mongoose.Schema({
5
- combinedUnitName: {
6
- type: String,
7
- required: true
8
- },
9
- combinedDivision:{
10
- type:String,
11
- required:true
12
- },
13
- combinedUnitType:{
14
- type:String,
15
- required:true
16
- },
17
- combinedFloorUnit:{
18
- type:String,
19
- required:true
20
- },
21
- combinedLettableFloorArea:{
22
- type:String,
23
- required:false
24
- },
25
- combinedLRNumber:{
26
- type:String,
27
- required:true
28
- },
29
- combinedGrossArea:{
30
- type:Number,
31
- required:false
32
- },
33
- combinedNetLettableArea:{
34
- type:Number,
35
- required:false
36
- },
37
- combinedReason:{
38
- type:String,
39
- required:false
40
- },
41
- status:{
42
- type:String,
43
- required:true
44
- },
45
- selectedCombinedUnits:[],
46
- facilityId:{
47
- type: mongoose.Schema.Types.ObjectId,
48
- ref: 'Facility',
49
- }
50
-
51
-
52
- }, {
53
- timestamps: true // Automatically add createdAt and updatedAt fields
54
- });
55
-
56
- // Indexes for improved performance
57
- combinedUnitSchema.index({ name: 1 });
58
-
59
- // Compile the model from the schema
60
- const CombinedUnit = mongoose.model('CombinedUnit', combinedUnitSchema);
61
-
62
- module.exports = CombinedUnit;
1
+ const mongoose = require('mongoose');
2
+
3
+ // Define the schema for companies
4
+ const combinedUnitSchema = new mongoose.Schema({
5
+ combinedUnitName: {
6
+ type: String,
7
+ required: true
8
+ },
9
+ combinedDivision:{
10
+ type:String,
11
+ required:true
12
+ },
13
+ combinedUnitType:{
14
+ type:String,
15
+ required:true
16
+ },
17
+ combinedFloorUnit:{
18
+ type:String,
19
+ required:true
20
+ },
21
+ combinedLettableFloorArea:{
22
+ type:String,
23
+ required:false
24
+ },
25
+ combinedLRNumber:{
26
+ type:String,
27
+ required:true
28
+ },
29
+ combinedGrossArea:{
30
+ type:Number,
31
+ required:false
32
+ },
33
+ combinedNetLettableArea:{
34
+ type:Number,
35
+ required:false
36
+ },
37
+ combinedReason:{
38
+ type:String,
39
+ required:false
40
+ },
41
+ status:{
42
+ type:String,
43
+ required:true
44
+ },
45
+ selectedCombinedUnits:[],
46
+ facilityId:{
47
+ type: mongoose.Schema.Types.ObjectId,
48
+ ref: 'Facility',
49
+ }
50
+
51
+
52
+ }, {
53
+ timestamps: true // Automatically add createdAt and updatedAt fields
54
+ });
55
+
56
+ // Indexes for improved performance
57
+ combinedUnitSchema.index({ name: 1 });
58
+
59
+ // Compile the model from the schema
60
+ const CombinedUnit = mongoose.model('CombinedUnit', combinedUnitSchema);
61
+
62
+ module.exports = CombinedUnit;