payservedb 5.2.5 → 5.2.7

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 -172
  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 +41 -41
  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 +107 -107
  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 -25
  41. package/src/models/gl_accounts.js +56 -56
  42. package/src/models/gl_entries.js +49 -49
  43. package/src/models/guard.js +47 -47
  44. package/src/models/handover.js +241 -241
  45. package/src/models/invoice.js +336 -336
  46. package/src/models/item_inspection.js +67 -67
  47. package/src/models/leaseagreement.js +221 -221
  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 +158 -158
  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 +197 -197
  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 +99 -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 +74 -74
  78. package/src/models/tickets.js +109 -109
  79. package/src/models/unitasset.js +25 -25
  80. package/src/models/units.js +94 -94
  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 +67 -67
  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 +73 -73
  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 +36 -36
  98. package/src/models/water_meter_settings.js +88 -88
  99. package/src/models/water_meter_single_day_history.js +29 -29
  100. package/src/models/water_meter_size.js +15 -15
  101. package/src/models/water_meters.js +106 -106
  102. package/src/models/water_meters_delivery.js +76 -76
  103. package/src/models/workorder.js +49 -49
@@ -1,87 +1,87 @@
1
- const mongoose = require('mongoose');
2
-
3
- const rfqDetailsSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- index: true,
9
- },
10
- name: {
11
- type: String,
12
- required: true,
13
- trim: true,
14
- index: true,
15
- },
16
- rfqNumber: {
17
- type: String,
18
- required: true,
19
- unique: true,
20
- trim: true,
21
- index: true,
22
- },
23
-
24
- startDate: {
25
- type: Date,
26
- required: true,
27
- },
28
- closingDate: {
29
- type: Date,
30
- required: true,
31
- },
32
-
33
- currency: {
34
- type: String,
35
- required: true,
36
- enum: ['KES', 'USD', 'EUR', 'GBP'],
37
- default: 'KES',
38
- },
39
- rfqType: {
40
- type: String,
41
- required: true,
42
- enum: ['open', 'closed'],
43
- default: 'closed',
44
- },
45
- rfqFee: {
46
- type: Number,
47
- default: 0,
48
- },
49
- rfqEvaluationType: {
50
- type: String,
51
- required: true,
52
- enum: ['automatic', 'approvers'],
53
- default: 'automatic',
54
- },
55
- notes: {
56
- type: String,
57
- trim: true,
58
- },
59
- category: {
60
- type: String,
61
- trim: true,
62
- },
63
- status: {
64
- type: String,
65
- enum: ['Pending', 'Active', 'Closed'],
66
- default: 'Pending',
67
- trim: true,
68
- },
69
- suppliers: [{
70
- type: mongoose.Schema.Types.ObjectId,
71
- ref: 'Supplier',
72
- }],
73
- items: [{
74
- itemName: { type: String, required: true, trim: true },
75
- description: { type: String, trim: true },
76
- quantity: { type: Number, required: true, min: 1 },
77
- unitOfMeasure: { type: String, trim: true },
78
- specifications: { type: String, trim: true },
79
- }],
80
-
81
- }, {
82
- timestamps: true,
83
- });
84
-
85
- const RFQDetails = mongoose.model('RFQDetails', rfqDetailsSchema);
86
-
87
- module.exports = RFQDetails;
1
+ const mongoose = require('mongoose');
2
+
3
+ const rfqDetailsSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ index: true,
9
+ },
10
+ name: {
11
+ type: String,
12
+ required: true,
13
+ trim: true,
14
+ index: true,
15
+ },
16
+ rfqNumber: {
17
+ type: String,
18
+ required: true,
19
+ unique: true,
20
+ trim: true,
21
+ index: true,
22
+ },
23
+
24
+ startDate: {
25
+ type: Date,
26
+ required: true,
27
+ },
28
+ closingDate: {
29
+ type: Date,
30
+ required: true,
31
+ },
32
+
33
+ currency: {
34
+ type: String,
35
+ required: true,
36
+ enum: ['KES', 'USD', 'EUR', 'GBP'],
37
+ default: 'KES',
38
+ },
39
+ rfqType: {
40
+ type: String,
41
+ required: true,
42
+ enum: ['open', 'closed'],
43
+ default: 'closed',
44
+ },
45
+ rfqFee: {
46
+ type: Number,
47
+ default: 0,
48
+ },
49
+ rfqEvaluationType: {
50
+ type: String,
51
+ required: true,
52
+ enum: ['automatic', 'approvers'],
53
+ default: 'automatic',
54
+ },
55
+ notes: {
56
+ type: String,
57
+ trim: true,
58
+ },
59
+ category: {
60
+ type: String,
61
+ trim: true,
62
+ },
63
+ status: {
64
+ type: String,
65
+ enum: ['Pending', 'Active', 'Closed'],
66
+ default: 'Pending',
67
+ trim: true,
68
+ },
69
+ suppliers: [{
70
+ type: mongoose.Schema.Types.ObjectId,
71
+ ref: 'Supplier',
72
+ }],
73
+ items: [{
74
+ itemName: { type: String, required: true, trim: true },
75
+ description: { type: String, trim: true },
76
+ quantity: { type: Number, required: true, min: 1 },
77
+ unitOfMeasure: { type: String, trim: true },
78
+ specifications: { type: String, trim: true },
79
+ }],
80
+
81
+ }, {
82
+ timestamps: true,
83
+ });
84
+
85
+ const RFQDetails = mongoose.model('RFQDetails', rfqDetailsSchema);
86
+
87
+ module.exports = RFQDetails;
@@ -1,109 +1,99 @@
1
- const mongoose = require('mongoose');
2
-
3
- const rfqResponseSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- index: true,
9
- },
10
- rfqId: {
11
- type: mongoose.Schema.Types.ObjectId,
12
- ref: 'RFQDetails',
13
- required: true,
14
- unique: true,
15
- index: true,
16
- },
17
-
18
- // track each supplier’s progress & quotation
19
- suppliers: [{
20
- supplierId: {
21
- type: mongoose.Schema.Types.ObjectId,
22
- ref: 'Supplier',
23
- required: true,
24
- },
25
- invitationStatus: {
26
- type: String,
27
- enum: ['pending', 'accepted', 'declined', 'no-response'],
28
- default: 'pending',
29
- },
30
- invitationDate: {
31
- type: Date,
32
- default: Date.now,
33
- },
34
- responseDate: Date,
35
- quotationSubmitted: {
36
- type: Boolean,
37
- default: false,
38
- },
39
- quotationDetails: {
40
- submissionDate: Date,
41
- totalAmount: Number,
42
- items: [{
43
- // tie back to the Details’ item index or category
44
- categoryId: { type: mongoose.Schema.Types.ObjectId, required: true },
45
- itemId: { type: mongoose.Schema.Types.ObjectId, required: true },
46
- unitPrice: { type: Number, required: true },
47
- quantity: { type: Number, required: true },
48
- totalPrice: { type: Number, required: true },
49
- notes: { type: String, trim: true },
50
- }],
51
- attachments: [{
52
- name: { type: String, required: true },
53
- fileType: { type: String, required: true },
54
- filePath: { type: String, required: true },
55
- uploadDate: { type: Date, default: Date.now },
56
- }],
57
- notes: { type: String, trim: true },
58
- },
59
- evaluationScore: { type: Number, min: 0, max: 100 },
60
- evaluationNotes: { type: String, trim: true },
61
- }],
62
-
63
- // overall lifecycle & award
64
- status: {
65
- type: String,
66
- enum: ['open', 'closed', 'awarded', 'canceled'],
67
- default: 'open',
68
- index: true,
69
- },
70
- awardDetails: {
71
- awarded: {
72
- type: Boolean,
73
- default: false,
74
- },
75
- awardedSupplierId: {
76
- type: mongoose.Schema.Types.ObjectId,
77
- ref: 'Supplier',
78
- },
79
- awardedSupplierName: {
80
- type: String,
81
- trim: true,
82
- },
83
- awardDate: Date,
84
- awardNotes: { type: String, trim: true },
85
-
86
- purchaseOrderCreated: {
87
- type: Boolean,
88
- default: false,
89
- },
90
- purchaseOrderId: {
91
- type: mongoose.Schema.Types.ObjectId,
92
- ref: 'PurchaseOrder',
93
- },
94
- },
95
-
96
- }, {
97
- timestamps: true,
98
- });
99
-
100
- // participation rate virtual
101
- rfqResponseSchema.virtual('participationRate').get(function () {
102
- if (!this.suppliers.length) return 0;
103
- const responded = this.suppliers.filter(s => s.quotationSubmitted).length;
104
- return (responded / this.suppliers.length) * 100;
105
- });
106
-
107
- const RFQResponse = mongoose.model('RFQResponse', rfqResponseSchema);
108
-
109
- module.exports = RFQResponse;
1
+ const mongoose = require('mongoose');
2
+
3
+ const rfqResponseSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ index: true,
9
+ },
10
+ rfqId: {
11
+ type: mongoose.Schema.Types.ObjectId,
12
+ ref: 'RFQDetails',
13
+ required: true,
14
+ index: true,
15
+ },
16
+ supplierId: {
17
+ type: mongoose.Schema.Types.ObjectId,
18
+ ref: 'Supplier',
19
+ required: true,
20
+ index: true,
21
+ },
22
+
23
+ items: [{
24
+ itemId: {
25
+ type: mongoose.Schema.Types.ObjectId,
26
+ required: true,
27
+ },
28
+ unitPrice: {
29
+ type: Number,
30
+ required: true,
31
+ min: 0,
32
+ },
33
+ quantity: {
34
+ type: Number,
35
+ required: true,
36
+ min: 1,
37
+ },
38
+ totalPrice: {
39
+ type: Number,
40
+ required: true,
41
+ min: 0,
42
+ },
43
+ notes: {
44
+ type: String,
45
+ trim: true,
46
+ default: '',
47
+ }
48
+ }],
49
+
50
+ notes: {
51
+ type: String,
52
+ trim: true,
53
+ default: '',
54
+ },
55
+
56
+ attachments: [{
57
+ fileName: {
58
+ type: String,
59
+ required: true,
60
+ trim: true,
61
+ },
62
+ filePath: {
63
+ type: String,
64
+ required: true,
65
+ },
66
+ uploadedAt: {
67
+ type: Date,
68
+ default: Date.now,
69
+ }
70
+ }],
71
+
72
+ status: {
73
+ type: String,
74
+ enum: ['pending', 'submitted', 'evaluated', 'awarded'],
75
+ default: 'pending',
76
+ index: true,
77
+ },
78
+
79
+ evaluation: {
80
+ score: {
81
+ type: Number,
82
+ min: 0,
83
+ max: 100,
84
+ default: null,
85
+ },
86
+ notes: {
87
+ type: String,
88
+ trim: true,
89
+ default: ''
90
+ },
91
+ },
92
+ }, {
93
+ timestamps: true,
94
+ });
95
+
96
+ // Unique response per supplier per RFQ
97
+ rfqResponseSchema.index({ rfqId: 1, supplierId: 1 }, { unique: true });
98
+
99
+ module.exports = mongoose.model('RFQResponse', rfqResponseSchema);
@@ -1,43 +1,43 @@
1
- const mongoose = require("mongoose")
2
-
3
- const ServiceChargeInvoiceUploadSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- },
9
- customerId: {
10
- type: String,
11
- required: true,
12
- },
13
- item: {
14
- type: String,
15
- required: true,
16
- },
17
- description: {
18
- type: String,
19
- required: true,
20
- },
21
- quantity: {
22
- type: Number,
23
- required: true,
24
- },
25
- rate: {
26
- type: Number,
27
- required: true,
28
- },
29
- vat: {
30
- type: Number,
31
- required: true,
32
- },
33
- account: {
34
- type: String,
35
- required: true,
36
- }
37
- })
38
-
39
- const ServiceChargeInvoiceUpload = mongoose.model(
40
- "ServiceChargeInvoiceUpload",
41
- ServiceChargeInvoiceUploadSchema
42
- )
1
+ const mongoose = require("mongoose")
2
+
3
+ const ServiceChargeInvoiceUploadSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ },
9
+ customerId: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ item: {
14
+ type: String,
15
+ required: true,
16
+ },
17
+ description: {
18
+ type: String,
19
+ required: true,
20
+ },
21
+ quantity: {
22
+ type: Number,
23
+ required: true,
24
+ },
25
+ rate: {
26
+ type: Number,
27
+ required: true,
28
+ },
29
+ vat: {
30
+ type: Number,
31
+ required: true,
32
+ },
33
+ account: {
34
+ type: String,
35
+ required: true,
36
+ }
37
+ })
38
+
39
+ const ServiceChargeInvoiceUpload = mongoose.model(
40
+ "ServiceChargeInvoiceUpload",
41
+ ServiceChargeInvoiceUploadSchema
42
+ )
43
43
  module.exports = ServiceChargeInvoiceUpload
@@ -1,28 +1,28 @@
1
- const mongoose = require("mongoose");
2
-
3
- const ServiceChargePaymentSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- },
9
- customerId: {
10
- type: String,
11
- required: true,
12
- },
13
- amount: {
14
- type: Number,
15
- required: true,
16
- },
17
- account: {
18
- type: String,
19
- required: true,
20
- },
21
- });
22
-
23
- const ServiceChargePayment = mongoose.model(
24
- "ServiceChargePayment",
25
- ServiceChargePaymentSchema
26
- );
27
-
1
+ const mongoose = require("mongoose");
2
+
3
+ const ServiceChargePaymentSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ },
9
+ customerId: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ amount: {
14
+ type: Number,
15
+ required: true,
16
+ },
17
+ account: {
18
+ type: String,
19
+ required: true,
20
+ },
21
+ });
22
+
23
+ const ServiceChargePayment = mongoose.model(
24
+ "ServiceChargePayment",
25
+ ServiceChargePaymentSchema
26
+ );
27
+
28
28
  module.exports = ServiceChargePayment;
@@ -1,56 +1,56 @@
1
- const mongoose = require('mongoose');
2
-
3
- const serviceRequestSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- required: true,
7
- ref: 'Facility'
8
- },
9
- date: {
10
- type: Date,
11
- },
12
- time: {
13
- type: String,
14
- },
15
- serviceId: {
16
- type: mongoose.Schema.Types.ObjectId,
17
- required: true,
18
- ref: 'Service'
19
- },
20
- status: {
21
- type: String,
22
- required: true,
23
- enum: ['Pending', 'Awaiting', 'In Progress', 'Completed', 'Cancelled'],
24
- },
25
- customerId: {
26
- type: mongoose.Schema.Types.ObjectId,
27
- required: true,
28
- ref: 'Customer'
29
- },
30
- assigneeId: {
31
- type: mongoose.Schema.Types.ObjectId,
32
- ref: 'VasVendor'
33
- },
34
- unit: {
35
- type: String,
36
- },
37
- frequency: {
38
- type: String,
39
- },
40
- amount: {
41
- type: Number,
42
- },
43
- percentage: {
44
- type: Number,
45
- },
46
- isCommissionSelected: {
47
- type: Boolean,
48
- default: false
49
- }
50
- }, {
51
- timestamps: true
52
- });
53
-
54
- const ServiceRequest = mongoose.model('ServiceRequest', serviceRequestSchema);
55
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const serviceRequestSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ required: true,
7
+ ref: 'Facility'
8
+ },
9
+ date: {
10
+ type: Date,
11
+ },
12
+ time: {
13
+ type: String,
14
+ },
15
+ serviceId: {
16
+ type: mongoose.Schema.Types.ObjectId,
17
+ required: true,
18
+ ref: 'Service'
19
+ },
20
+ status: {
21
+ type: String,
22
+ required: true,
23
+ enum: ['Pending', 'Awaiting', 'In Progress', 'Completed', 'Cancelled'],
24
+ },
25
+ customerId: {
26
+ type: mongoose.Schema.Types.ObjectId,
27
+ required: true,
28
+ ref: 'Customer'
29
+ },
30
+ assigneeId: {
31
+ type: mongoose.Schema.Types.ObjectId,
32
+ ref: 'VasVendor'
33
+ },
34
+ unit: {
35
+ type: String,
36
+ },
37
+ frequency: {
38
+ type: String,
39
+ },
40
+ amount: {
41
+ type: Number,
42
+ },
43
+ percentage: {
44
+ type: Number,
45
+ },
46
+ isCommissionSelected: {
47
+ type: Boolean,
48
+ default: false
49
+ }
50
+ }, {
51
+ timestamps: true
52
+ });
53
+
54
+ const ServiceRequest = mongoose.model('ServiceRequest', serviceRequestSchema);
55
+
56
56
  module.exports = ServiceRequest;