payservedb 5.6.7 → 5.6.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 (113) hide show
  1. package/.env +2 -2
  2. package/index.js +194 -193
  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/auditlog.js +83 -83
  11. package/src/models/bankdetails.js +40 -40
  12. package/src/models/billerAddress.js +120 -0
  13. package/src/models/booking_invoice.js +151 -151
  14. package/src/models/bookinganalytics.js +63 -63
  15. package/src/models/bookingconfig.js +45 -45
  16. package/src/models/bookingproperty.js +112 -112
  17. package/src/models/bookingreservation.js +192 -192
  18. package/src/models/bookingrevenuerecord.js +84 -84
  19. package/src/models/budget.js +91 -91
  20. package/src/models/budgetCategory.js +19 -19
  21. package/src/models/campaigns.js +72 -72
  22. package/src/models/cashpayment.js +262 -262
  23. package/src/models/combinedUnits.js +62 -62
  24. package/src/models/common_area_electricity.js +38 -38
  25. package/src/models/common_area_generator.js +41 -41
  26. package/src/models/common_area_utility_alert.js +37 -37
  27. package/src/models/common_area_water.js +39 -39
  28. package/src/models/company.js +53 -53
  29. package/src/models/country_tax.js +42 -42
  30. package/src/models/currency_settings.js +39 -39
  31. package/src/models/customer.js +200 -200
  32. package/src/models/default_payment_details.js +17 -17
  33. package/src/models/dutyroster.js +107 -107
  34. package/src/models/email.js +37 -37
  35. package/src/models/entry_exit.js +53 -53
  36. package/src/models/expense.js +99 -99
  37. package/src/models/expense_category.js +45 -19
  38. package/src/models/facility.js +61 -61
  39. package/src/models/facility_payment_details.js +20 -20
  40. package/src/models/facilityasset.js +25 -25
  41. package/src/models/faq.js +18 -18
  42. package/src/models/gl_account_double_entries.js +25 -25
  43. package/src/models/gl_accounts.js +56 -56
  44. package/src/models/gl_entries.js +49 -49
  45. package/src/models/guard.js +47 -47
  46. package/src/models/handover.js +246 -246
  47. package/src/models/invoice.js +336 -336
  48. package/src/models/item_inspection.js +67 -67
  49. package/src/models/leaseagreement.js +221 -221
  50. package/src/models/leasetemplate.js +17 -17
  51. package/src/models/levy.js +152 -152
  52. package/src/models/levy_invoice_settings.js +26 -26
  53. package/src/models/levycontract.js +117 -117
  54. package/src/models/levytype.js +23 -23
  55. package/src/models/maintenance_service_vendor.js +38 -38
  56. package/src/models/maintenance_services.js +17 -17
  57. package/src/models/maintenancerequisition.js +31 -31
  58. package/src/models/message.js +38 -38
  59. package/src/models/module.js +21 -21
  60. package/src/models/notification.js +44 -44
  61. package/src/models/penalty.js +76 -76
  62. package/src/models/pendingCredentials.js +32 -32
  63. package/src/models/propertyManagerContract.js +358 -358
  64. package/src/models/propertyManagerRevenue.js +100 -100
  65. package/src/models/purchase_order.js +194 -194
  66. package/src/models/purchase_request.js +110 -110
  67. package/src/models/refresh_token.js +23 -23
  68. package/src/models/reminder.js +197 -197
  69. package/src/models/report.js +13 -13
  70. package/src/models/resident.js +121 -121
  71. package/src/models/rfq_details.js +131 -131
  72. package/src/models/rfq_response.js +105 -105
  73. package/src/models/service_charge_invoice_upload.js +42 -42
  74. package/src/models/service_charge_payments.js +27 -27
  75. package/src/models/servicerequest.js +55 -55
  76. package/src/models/settings.js +62 -62
  77. package/src/models/smart_meter_daily_consumption.js +44 -44
  78. package/src/models/sms_africastalking.js +20 -20
  79. package/src/models/sms_meliora.js +20 -20
  80. package/src/models/staff.js +36 -36
  81. package/src/models/stocksandspare.js +34 -34
  82. package/src/models/suppliers.js +74 -74
  83. package/src/models/tickets.js +109 -109
  84. package/src/models/unitManagementTemplate.js +44 -44
  85. package/src/models/unitasset.js +25 -25
  86. package/src/models/units.js +112 -112
  87. package/src/models/user.js +187 -187
  88. package/src/models/valueaddedservices.js +79 -79
  89. package/src/models/vas_invoices_upload.js +50 -50
  90. package/src/models/vas_payments.js +24 -24
  91. package/src/models/vasinvoice.js +192 -192
  92. package/src/models/vasvendor.js +57 -57
  93. package/src/models/visitLog.js +86 -86
  94. package/src/models/visitor.js +67 -67
  95. package/src/models/waitlist.js +45 -45
  96. package/src/models/water_invoice.js +193 -193
  97. package/src/models/water_meter_account.js +78 -78
  98. package/src/models/water_meter_billing.js +58 -58
  99. package/src/models/water_meter_communication.js +17 -17
  100. package/src/models/water_meter_communication_logs.js +30 -30
  101. package/src/models/water_meter_concentrator.js +59 -59
  102. package/src/models/water_meter_daily_history.js +32 -32
  103. package/src/models/water_meter_iot_cards.js +34 -34
  104. package/src/models/water_meter_manufacturer.js +35 -35
  105. package/src/models/water_meter_monthly_history.js +36 -36
  106. package/src/models/water_meter_settings.js +114 -88
  107. package/src/models/water_meter_single_day_history.js +34 -34
  108. package/src/models/water_meter_size.js +15 -15
  109. package/src/models/water_meters.js +117 -117
  110. package/src/models/water_meters_delivery.js +76 -76
  111. package/src/models/water_prepaid_credit.js +43 -43
  112. package/src/models/water_prepaid_debit.js +50 -50
  113. package/src/models/workorder.js +49 -49
@@ -1,101 +1,101 @@
1
- const mongoose = require('mongoose');
2
-
3
- const propertyManagerRevenue = new mongoose.Schema({
4
- facility: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- index: true
9
- },
10
- calculationDate: {
11
- type: Date,
12
- required: true,
13
- index: true
14
- },
15
- dateRange: {
16
- startDate: Date,
17
- endDate: Date
18
- },
19
- totalRevenue: {
20
- type: Number,
21
- required: true,
22
- default: 0
23
- },
24
- totalOwnerAmount: {
25
- type: Number,
26
- required: true,
27
- default: 0
28
- },
29
- totalPaidAmount: {
30
- type: Number,
31
- required: true,
32
- default: 0
33
- },
34
- unitsProcessed: {
35
- type: Number,
36
- default: 0
37
- },
38
- invoicesProcessed: {
39
- type: Number,
40
- default: 0
41
- },
42
- unitBreakdown: [{
43
- unit: {
44
- type: mongoose.Schema.Types.ObjectId,
45
- ref: 'Unit',
46
- required: true
47
- },
48
- unitName: String, // Denormalized for easier access
49
- propertyManagementFee: Number,
50
- totalPaid: Number,
51
- managerRevenue: Number,
52
- ownerAmount: Number,
53
- invoiceCount: Number,
54
- invoices: [{
55
- invoice: {
56
- type: mongoose.Schema.Types.ObjectId,
57
- ref: 'Invoice',
58
- required: true
59
- },
60
- invoiceNumber: String, // Denormalized for easier access
61
- invoiceType: String,
62
- totalAmount: Number,
63
- paidAmount: Number,
64
- managerCommission: Number,
65
- ownerAmount: Number,
66
- paymentDate: Date,
67
- managementFeePercent: Number
68
- }]
69
- }],
70
- summary: {
71
- totalUnits: Number,
72
- totalInvoicesProcessed: Number,
73
- includesHistoricalRevenue: Boolean,
74
- calculationNote: String
75
- },
76
- status: {
77
- type: String,
78
- enum: ['calculated', 'paid', 'partially_paid', 'cancelled'],
79
- default: 'calculated'
80
- },
81
- notes: String,
82
- createdBy: {
83
- type: mongoose.Schema.Types.ObjectId,
84
- ref: 'User' // Reference to User who created this record
85
- },
86
- createdAt: {
87
- type: Date,
88
- default: Date.now,
89
- index: true
90
- },
91
- updatedAt: {
92
- type: Date,
93
- default: Date.now
94
- }
95
- }, {
96
- timestamps: true
97
- });
98
-
99
- const PropertyManagerRevenue = mongoose.model('PropertyManagerRevenue', propertyManagerRevenue);
100
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const propertyManagerRevenue = new mongoose.Schema({
4
+ facility: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ index: true
9
+ },
10
+ calculationDate: {
11
+ type: Date,
12
+ required: true,
13
+ index: true
14
+ },
15
+ dateRange: {
16
+ startDate: Date,
17
+ endDate: Date
18
+ },
19
+ totalRevenue: {
20
+ type: Number,
21
+ required: true,
22
+ default: 0
23
+ },
24
+ totalOwnerAmount: {
25
+ type: Number,
26
+ required: true,
27
+ default: 0
28
+ },
29
+ totalPaidAmount: {
30
+ type: Number,
31
+ required: true,
32
+ default: 0
33
+ },
34
+ unitsProcessed: {
35
+ type: Number,
36
+ default: 0
37
+ },
38
+ invoicesProcessed: {
39
+ type: Number,
40
+ default: 0
41
+ },
42
+ unitBreakdown: [{
43
+ unit: {
44
+ type: mongoose.Schema.Types.ObjectId,
45
+ ref: 'Unit',
46
+ required: true
47
+ },
48
+ unitName: String, // Denormalized for easier access
49
+ propertyManagementFee: Number,
50
+ totalPaid: Number,
51
+ managerRevenue: Number,
52
+ ownerAmount: Number,
53
+ invoiceCount: Number,
54
+ invoices: [{
55
+ invoice: {
56
+ type: mongoose.Schema.Types.ObjectId,
57
+ ref: 'Invoice',
58
+ required: true
59
+ },
60
+ invoiceNumber: String, // Denormalized for easier access
61
+ invoiceType: String,
62
+ totalAmount: Number,
63
+ paidAmount: Number,
64
+ managerCommission: Number,
65
+ ownerAmount: Number,
66
+ paymentDate: Date,
67
+ managementFeePercent: Number
68
+ }]
69
+ }],
70
+ summary: {
71
+ totalUnits: Number,
72
+ totalInvoicesProcessed: Number,
73
+ includesHistoricalRevenue: Boolean,
74
+ calculationNote: String
75
+ },
76
+ status: {
77
+ type: String,
78
+ enum: ['calculated', 'paid', 'partially_paid', 'cancelled'],
79
+ default: 'calculated'
80
+ },
81
+ notes: String,
82
+ createdBy: {
83
+ type: mongoose.Schema.Types.ObjectId,
84
+ ref: 'User' // Reference to User who created this record
85
+ },
86
+ createdAt: {
87
+ type: Date,
88
+ default: Date.now,
89
+ index: true
90
+ },
91
+ updatedAt: {
92
+ type: Date,
93
+ default: Date.now
94
+ }
95
+ }, {
96
+ timestamps: true
97
+ });
98
+
99
+ const PropertyManagerRevenue = mongoose.model('PropertyManagerRevenue', propertyManagerRevenue);
100
+
101
101
  module.exports = PropertyManagerRevenue;
@@ -1,195 +1,195 @@
1
- const mongoose = require('mongoose');
2
-
3
- const purchaseOrderSchema = new mongoose.Schema({
4
- // Main Purchase Order Information
5
- facilityId: {
6
- type: mongoose.Schema.Types.ObjectId,
7
- ref: 'Facility',
8
- required: true,
9
- index: true
10
- },
11
- poNumber: {
12
- type: String,
13
- required: true,
14
- unique: true,
15
- trim: true,
16
- index: true
17
- },
18
- prNumber: {
19
- type: String,
20
- trim: true,
21
- index: true,
22
- ref: 'PurchaseRequest'
23
- },
24
- supplier: {
25
- type: mongoose.Schema.Types.ObjectId,
26
- ref: 'Supplier',
27
- required: true
28
- },
29
- department: {
30
- type: String,
31
- required: true,
32
- trim: true
33
- },
34
- currency: {
35
- type: String,
36
- required: true,
37
- trim: true,
38
- default: 'KES'
39
- },
40
- date: {
41
- type: Date,
42
- required: true,
43
- default: Date.now
44
- },
45
- internalNotes: {
46
- type: String,
47
- trim: true
48
- },
49
- supplierNotes: {
50
- type: String,
51
- trim: true
52
- },
53
- budget: {
54
- type: String,
55
- trim: true
56
- },
57
- status: {
58
- type: String,
59
- enum: ['pending approval', 'approved', 'rejected', 'sent', 'received', 'completed', 'canceled'],
60
- default: 'pending approval',
61
- index: true
62
- },
63
-
64
- // Items Details
65
- items: [{
66
- itemDescription: {
67
- type: String,
68
- required: true,
69
- trim: true
70
- },
71
- quantity: {
72
- type: Number,
73
- required: true
74
- },
75
- unitOfMeasure: {
76
- type: String,
77
- required: true,
78
- trim: true
79
- },
80
- unitPrice: {
81
- type: Number,
82
- required: true
83
- },
84
- taxRate: {
85
- type: Number,
86
- default: 0
87
- },
88
- totalPrice: {
89
- type: Number,
90
- required: true
91
- }
92
- }],
93
-
94
- // Calculated Totals
95
- subtotal: {
96
- type: Number,
97
- required: true
98
- },
99
- taxTotal: {
100
- type: Number,
101
- required: true,
102
- default: 0
103
- },
104
- grandTotal: {
105
- type: Number,
106
- required: true
107
- },
108
- // Document attachments
109
- attachments: [{
110
- name: {
111
- type: String,
112
- required: true
113
- },
114
- fileType: {
115
- type: String,
116
- required: true
117
- },
118
- filePath: {
119
- type: String,
120
- required: true
121
- },
122
- uploadDate: {
123
- type: Date,
124
- default: Date.now
125
- }
126
- }],
127
- approvalWorkflowId: {
128
- type: mongoose.Schema.Types.ObjectId,
129
- ref: 'ApprovalWorkflow',
130
- required: true
131
- },
132
- approvalStatus: {
133
- type: String,
134
- enum: ['pending', 'in_progress', 'approved', 'rejected'],
135
- default: 'pending',
136
- index: true
137
- },
138
- currentStep: {
139
- type: Number,
140
- default: 1,
141
- min: 1
142
- },
143
- approvals: [{
144
- stepNumber: {
145
- type: Number,
146
- required: true
147
- },
148
- stepName: {
149
- type: String,
150
- required: true
151
- },
152
- approvers: [{
153
- userId: {
154
- type: mongoose.Schema.Types.ObjectId,
155
- ref: 'User',
156
- required: true
157
- },
158
- status: {
159
- type: String,
160
- enum: ['pending', 'approved', 'rejected'],
161
- default: 'pending'
162
- },
163
- actionDate: {
164
- type: Date
165
- },
166
- comments: {
167
- type: String,
168
- trim: true
169
- }
170
- }]
171
- }]
172
- }, {
173
- timestamps: true
174
- });
175
-
176
- // Pre-save middleware to calculate totals
177
- purchaseOrderSchema.pre('save', function (next) {
178
- // Calculate subtotal
179
- this.subtotal = this.items.reduce((sum, item) => sum + (item.unitPrice * item.quantity), 0);
180
-
181
- // Calculate tax total
182
- this.taxTotal = this.items.reduce((sum, item) => {
183
- const itemTax = (item.unitPrice * item.quantity) * (item.taxRate / 100);
184
- return sum + itemTax;
185
- }, 0);
186
-
187
- // Calculate grand total
188
- this.grandTotal = this.subtotal + this.taxTotal;
189
-
190
- next();
191
- });
192
-
193
- const PurchaseOrder = mongoose.model('PurchaseOrder', purchaseOrderSchema);
194
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const purchaseOrderSchema = new mongoose.Schema({
4
+ // Main Purchase Order Information
5
+ facilityId: {
6
+ type: mongoose.Schema.Types.ObjectId,
7
+ ref: 'Facility',
8
+ required: true,
9
+ index: true
10
+ },
11
+ poNumber: {
12
+ type: String,
13
+ required: true,
14
+ unique: true,
15
+ trim: true,
16
+ index: true
17
+ },
18
+ prNumber: {
19
+ type: String,
20
+ trim: true,
21
+ index: true,
22
+ ref: 'PurchaseRequest'
23
+ },
24
+ supplier: {
25
+ type: mongoose.Schema.Types.ObjectId,
26
+ ref: 'Supplier',
27
+ required: true
28
+ },
29
+ department: {
30
+ type: String,
31
+ required: true,
32
+ trim: true
33
+ },
34
+ currency: {
35
+ type: String,
36
+ required: true,
37
+ trim: true,
38
+ default: 'KES'
39
+ },
40
+ date: {
41
+ type: Date,
42
+ required: true,
43
+ default: Date.now
44
+ },
45
+ internalNotes: {
46
+ type: String,
47
+ trim: true
48
+ },
49
+ supplierNotes: {
50
+ type: String,
51
+ trim: true
52
+ },
53
+ budget: {
54
+ type: String,
55
+ trim: true
56
+ },
57
+ status: {
58
+ type: String,
59
+ enum: ['pending approval', 'approved', 'rejected', 'sent', 'received', 'completed', 'canceled'],
60
+ default: 'pending approval',
61
+ index: true
62
+ },
63
+
64
+ // Items Details
65
+ items: [{
66
+ itemDescription: {
67
+ type: String,
68
+ required: true,
69
+ trim: true
70
+ },
71
+ quantity: {
72
+ type: Number,
73
+ required: true
74
+ },
75
+ unitOfMeasure: {
76
+ type: String,
77
+ required: true,
78
+ trim: true
79
+ },
80
+ unitPrice: {
81
+ type: Number,
82
+ required: true
83
+ },
84
+ taxRate: {
85
+ type: Number,
86
+ default: 0
87
+ },
88
+ totalPrice: {
89
+ type: Number,
90
+ required: true
91
+ }
92
+ }],
93
+
94
+ // Calculated Totals
95
+ subtotal: {
96
+ type: Number,
97
+ required: true
98
+ },
99
+ taxTotal: {
100
+ type: Number,
101
+ required: true,
102
+ default: 0
103
+ },
104
+ grandTotal: {
105
+ type: Number,
106
+ required: true
107
+ },
108
+ // Document attachments
109
+ attachments: [{
110
+ name: {
111
+ type: String,
112
+ required: true
113
+ },
114
+ fileType: {
115
+ type: String,
116
+ required: true
117
+ },
118
+ filePath: {
119
+ type: String,
120
+ required: true
121
+ },
122
+ uploadDate: {
123
+ type: Date,
124
+ default: Date.now
125
+ }
126
+ }],
127
+ approvalWorkflowId: {
128
+ type: mongoose.Schema.Types.ObjectId,
129
+ ref: 'ApprovalWorkflow',
130
+ required: true
131
+ },
132
+ approvalStatus: {
133
+ type: String,
134
+ enum: ['pending', 'in_progress', 'approved', 'rejected'],
135
+ default: 'pending',
136
+ index: true
137
+ },
138
+ currentStep: {
139
+ type: Number,
140
+ default: 1,
141
+ min: 1
142
+ },
143
+ approvals: [{
144
+ stepNumber: {
145
+ type: Number,
146
+ required: true
147
+ },
148
+ stepName: {
149
+ type: String,
150
+ required: true
151
+ },
152
+ approvers: [{
153
+ userId: {
154
+ type: mongoose.Schema.Types.ObjectId,
155
+ ref: 'User',
156
+ required: true
157
+ },
158
+ status: {
159
+ type: String,
160
+ enum: ['pending', 'approved', 'rejected'],
161
+ default: 'pending'
162
+ },
163
+ actionDate: {
164
+ type: Date
165
+ },
166
+ comments: {
167
+ type: String,
168
+ trim: true
169
+ }
170
+ }]
171
+ }]
172
+ }, {
173
+ timestamps: true
174
+ });
175
+
176
+ // Pre-save middleware to calculate totals
177
+ purchaseOrderSchema.pre('save', function (next) {
178
+ // Calculate subtotal
179
+ this.subtotal = this.items.reduce((sum, item) => sum + (item.unitPrice * item.quantity), 0);
180
+
181
+ // Calculate tax total
182
+ this.taxTotal = this.items.reduce((sum, item) => {
183
+ const itemTax = (item.unitPrice * item.quantity) * (item.taxRate / 100);
184
+ return sum + itemTax;
185
+ }, 0);
186
+
187
+ // Calculate grand total
188
+ this.grandTotal = this.subtotal + this.taxTotal;
189
+
190
+ next();
191
+ });
192
+
193
+ const PurchaseOrder = mongoose.model('PurchaseOrder', purchaseOrderSchema);
194
+
195
195
  module.exports = PurchaseOrder;