payservedb 4.5.0 → 4.5.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 (86) 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 -194
  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 +77 -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/purchase_orders.js +0 -0
  48. package/src/models/purchase_requests.js +0 -0
  49. package/src/models/quotations.js +0 -0
  50. package/src/models/refresh_token.js +23 -23
  51. package/src/models/reminder.js +161 -161
  52. package/src/models/report.js +13 -13
  53. package/src/models/resident.js +121 -121
  54. package/src/models/service_charge_invoice_upload.js +42 -42
  55. package/src/models/service_charge_payments.js +27 -27
  56. package/src/models/servicerequest.js +55 -55
  57. package/src/models/settings.js +62 -62
  58. package/src/models/smart_meter_daily_consumption.js +44 -44
  59. package/src/models/sms_africastalking.js +20 -20
  60. package/src/models/sms_meliora.js +16 -16
  61. package/src/models/staff.js +36 -36
  62. package/src/models/stocksandspare.js +34 -34
  63. package/src/models/suppliers.js +110 -0
  64. package/src/models/tickets.js +109 -109
  65. package/src/models/unitasset.js +25 -25
  66. package/src/models/units.js +70 -70
  67. package/src/models/user.js +94 -94
  68. package/src/models/valueaddedservices.js +36 -36
  69. package/src/models/vas_invoices_upload.js +50 -50
  70. package/src/models/vas_payments.js +24 -24
  71. package/src/models/vasinvoice.js +159 -159
  72. package/src/models/vasvendor.js +57 -57
  73. package/src/models/visitLog.js +86 -86
  74. package/src/models/visitor.js +63 -63
  75. package/src/models/waitlist.js +45 -45
  76. package/src/models/water_invoice.js +192 -192
  77. package/src/models/water_meter_account.js +74 -74
  78. package/src/models/water_meter_communication.js +17 -17
  79. package/src/models/water_meter_concentrator.js +59 -59
  80. package/src/models/water_meter_iot_cards.js +34 -34
  81. package/src/models/water_meter_manufacturer.js +35 -35
  82. package/src/models/water_meter_settings.js +88 -88
  83. package/src/models/water_meter_size.js +15 -15
  84. package/src/models/water_meters.js +110 -110
  85. package/src/models/water_meters_delivery.js +76 -76
  86. package/src/models/workorder.js +49 -49
@@ -1,45 +1,45 @@
1
- const mongoose = require('mongoose');
2
-
3
- const dailyConsumptionSchema = new mongoose.Schema({
4
- meterId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Meter',
7
- required: true,
8
- },
9
- date: {
10
- type: Date,
11
- required: true,
12
- },
13
- totalConsumption: {
14
- type: Number,
15
- default: 0,
16
- },
17
-
18
- updates: [{
19
- timestamp: {
20
- type: Date,
21
- default: Date.now
22
- },
23
- previousReading: {
24
- type: Number,
25
- required: true
26
- },
27
- currentReading: {
28
- type: Number,
29
- required: true
30
- },
31
- // Delta can be computed as (currentReading - previousReading)
32
- delta: {
33
- type: Number,
34
- required: true
35
- },
36
- }],
37
- }, {
38
- timestamps: true,
39
- });
40
-
41
- dailyConsumptionSchema.index({ meterId: 1, date: 1 }, { unique: true });
42
-
43
- const DailyConsumption = mongoose.model('DailyConsumption', dailyConsumptionSchema);
44
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const dailyConsumptionSchema = new mongoose.Schema({
4
+ meterId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Meter',
7
+ required: true,
8
+ },
9
+ date: {
10
+ type: Date,
11
+ required: true,
12
+ },
13
+ totalConsumption: {
14
+ type: Number,
15
+ default: 0,
16
+ },
17
+
18
+ updates: [{
19
+ timestamp: {
20
+ type: Date,
21
+ default: Date.now
22
+ },
23
+ previousReading: {
24
+ type: Number,
25
+ required: true
26
+ },
27
+ currentReading: {
28
+ type: Number,
29
+ required: true
30
+ },
31
+ // Delta can be computed as (currentReading - previousReading)
32
+ delta: {
33
+ type: Number,
34
+ required: true
35
+ },
36
+ }],
37
+ }, {
38
+ timestamps: true,
39
+ });
40
+
41
+ dailyConsumptionSchema.index({ meterId: 1, date: 1 }, { unique: true });
42
+
43
+ const DailyConsumption = mongoose.model('DailyConsumption', dailyConsumptionSchema);
44
+
45
45
  module.exports = DailyConsumption;
@@ -1,21 +1,21 @@
1
- const mongoose = require('mongoose');
2
- const SMSAfricastalkingSchema = mongoose.Schema({
3
- user: {
4
- type: String,
5
- required: true
6
- },
7
- senderId: {
8
- type: String,
9
- required: true
10
- },
11
- userName: {
12
- type: String,
13
- required: true,
14
- },
15
- apiKey: {
16
- type: String,
17
- required: true
18
- }
19
- })
20
- const SMSAfricastalking = mongoose.model('SMSAfricastalking', SMSAfricastalkingSchema);
1
+ const mongoose = require('mongoose');
2
+ const SMSAfricastalkingSchema = mongoose.Schema({
3
+ user: {
4
+ type: String,
5
+ required: true
6
+ },
7
+ senderId: {
8
+ type: String,
9
+ required: true
10
+ },
11
+ userName: {
12
+ type: String,
13
+ required: true,
14
+ },
15
+ apiKey: {
16
+ type: String,
17
+ required: true
18
+ }
19
+ })
20
+ const SMSAfricastalking = mongoose.model('SMSAfricastalking', SMSAfricastalkingSchema);
21
21
  module.exports = SMSAfricastalking
@@ -1,17 +1,17 @@
1
- const mongoose = require('mongoose');
2
- const SMSMelioraSchema = mongoose.Schema({
3
- user: {
4
- type: String,
5
- required: true
6
- },
7
- senderId: {
8
- type: String,
9
- required: true
10
- },
11
- apiKey: {
12
- type: String,
13
- required: true
14
- }
15
- })
16
- const SMSMeliora = mongoose.model('SMSMeliora', SMSMelioraSchema);
1
+ const mongoose = require('mongoose');
2
+ const SMSMelioraSchema = mongoose.Schema({
3
+ user: {
4
+ type: String,
5
+ required: true
6
+ },
7
+ senderId: {
8
+ type: String,
9
+ required: true
10
+ },
11
+ apiKey: {
12
+ type: String,
13
+ required: true
14
+ }
15
+ })
16
+ const SMSMeliora = mongoose.model('SMSMeliora', SMSMelioraSchema);
17
17
  module.exports = SMSMeliora
@@ -1,36 +1,36 @@
1
- const mongoose = require("mongoose");
2
-
3
- // Define the Staff schema
4
- const staffSchema = new mongoose.Schema(
5
- {
6
- facilityId: {
7
- type: mongoose.Schema.Types.ObjectId,
8
- ref: 'Facility',
9
- required: true,
10
- },
11
- name: {
12
- type: String,
13
- required: true,
14
- },
15
- contact: {
16
- type: String,
17
- required: true,
18
- },
19
- phoneNumber: {
20
- type: String,
21
- required: true,
22
- },
23
- service: [{
24
- type: mongoose.Schema.Types.ObjectId,
25
- ref: 'ValueAddedService',
26
- required: true,
27
- }],
28
- },
29
- {
30
- timestamps: true,
31
- }
32
- );
33
-
34
- const Staff = mongoose.model('Staff', staffSchema);
35
-
36
- module.exports = Staff;
1
+ const mongoose = require("mongoose");
2
+
3
+ // Define the Staff schema
4
+ const staffSchema = new mongoose.Schema(
5
+ {
6
+ facilityId: {
7
+ type: mongoose.Schema.Types.ObjectId,
8
+ ref: 'Facility',
9
+ required: true,
10
+ },
11
+ name: {
12
+ type: String,
13
+ required: true,
14
+ },
15
+ contact: {
16
+ type: String,
17
+ required: true,
18
+ },
19
+ phoneNumber: {
20
+ type: String,
21
+ required: true,
22
+ },
23
+ service: [{
24
+ type: mongoose.Schema.Types.ObjectId,
25
+ ref: 'ValueAddedService',
26
+ required: true,
27
+ }],
28
+ },
29
+ {
30
+ timestamps: true,
31
+ }
32
+ );
33
+
34
+ const Staff = mongoose.model('Staff', staffSchema);
35
+
36
+ module.exports = Staff;
@@ -1,34 +1,34 @@
1
- const mongoose = require('mongoose');
2
-
3
- const stockAndSparesSchema = 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
- },
13
- description: {
14
- type: String,
15
- },
16
- skuDetails: {
17
- type: String,
18
- required: true,
19
- },
20
- quantityInStock: {
21
- type: Number,
22
- required: true,
23
- min: 0,
24
- },
25
- reOrderLevel: {
26
- type: Number,
27
- required: true,
28
- min: 0,
29
- },
30
- }, {
31
- timestamps: true,
32
- });
33
-
34
- module.exports = mongoose.model('Stocksandspare', stockAndSparesSchema);
1
+ const mongoose = require('mongoose');
2
+
3
+ const stockAndSparesSchema = 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
+ },
13
+ description: {
14
+ type: String,
15
+ },
16
+ skuDetails: {
17
+ type: String,
18
+ required: true,
19
+ },
20
+ quantityInStock: {
21
+ type: Number,
22
+ required: true,
23
+ min: 0,
24
+ },
25
+ reOrderLevel: {
26
+ type: Number,
27
+ required: true,
28
+ min: 0,
29
+ },
30
+ }, {
31
+ timestamps: true,
32
+ });
33
+
34
+ module.exports = mongoose.model('Stocksandspare', stockAndSparesSchema);
@@ -0,0 +1,110 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const supplierSchema = 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
+ email: {
17
+ type: String,
18
+ required: true,
19
+ trim: true,
20
+ lowercase: true
21
+ },
22
+ phone: {
23
+ type: String,
24
+ required: true,
25
+ trim: true
26
+ },
27
+ address: {
28
+ street: String,
29
+ city: String,
30
+ state: String,
31
+ country: String,
32
+ postalCode: String
33
+ },
34
+ contactPerson: {
35
+ name: String,
36
+ email: String,
37
+ phone: String,
38
+ position: String
39
+ },
40
+ taxIdentificationNumber: {
41
+ type: String,
42
+ trim: true
43
+ },
44
+ supplierType: {
45
+ type: String,
46
+ enum: ['product', 'service', 'both'],
47
+ default: 'both'
48
+ },
49
+ preferredCurrency: {
50
+ type: String,
51
+ default: 'KES'
52
+ },
53
+ paymentTerms: {
54
+ type: String,
55
+ default: 'net30'
56
+ },
57
+ bankDetails: {
58
+ bankName: String,
59
+ accountName: String,
60
+ accountNumber: String,
61
+ branchCode: String,
62
+ swiftCode: String
63
+ },
64
+ documents: [{
65
+ name: String,
66
+ fileUrl: String,
67
+ fileType: String,
68
+ uploadDate: {
69
+ type: Date,
70
+ default: Date.now
71
+ }
72
+ }],
73
+ status: {
74
+ type: String,
75
+ enum: ['active', 'inactive', 'blacklisted'],
76
+ default: 'active',
77
+ index: true
78
+ },
79
+ rating: {
80
+ type: Number,
81
+ min: 0,
82
+ max: 5,
83
+ default: 0
84
+ },
85
+ categories: [{
86
+ type: mongoose.Schema.Types.ObjectId,
87
+ ref: 'SupplierCategory'
88
+ }],
89
+ notes: String,
90
+ purchaseHistory: [{
91
+ poNumber: String,
92
+ poDate: Date,
93
+ amount: Number,
94
+ currency: String,
95
+ status: {
96
+ type: String,
97
+ enum: ['pending', 'completed', 'cancelled'],
98
+ default: 'pending'
99
+ }
100
+ }]
101
+ }, {
102
+ timestamps: true
103
+ });
104
+
105
+ supplierSchema.index({ name: 1, status: 1 });
106
+ supplierSchema.index({ supplierType: 1 });
107
+
108
+ const Supplier = mongoose.model('Supplier', supplierSchema);
109
+
110
+ module.exports = Supplier;
@@ -1,110 +1,110 @@
1
- const mongoose = require('mongoose');
2
-
3
- const ticketSchema = new mongoose.Schema({
4
- facilityId: {
5
- type: mongoose.Schema.Types.ObjectId,
6
- ref: 'Facility',
7
- required: true,
8
- },
9
- ticketType: {
10
- type: String,
11
- required: true,
12
- },
13
- userId: {
14
- type: mongoose.Schema.Types.ObjectId,
15
- ref: 'User',
16
- },
17
- subject: {
18
- type: String,
19
- },
20
- description: {
21
- type: String,
22
- },
23
- priority: {
24
- type: String,
25
- },
26
- image: {
27
- type: String,
28
- },
29
- date: {
30
- type: Date,
31
- },
32
- time: {
33
- type: String,
34
- },
35
- extras: {
36
- type: String,
37
- },
38
- status: {
39
- type: String,
40
- enum: ['open', 'on hold', 'ongoing', 'resolved', 'cancelled', 'closed'],
41
- required: true,
42
- default: 'open',
43
- },
44
- customerId: {
45
- type: mongoose.Schema.Types.ObjectId,
46
- ref: 'Customer',
47
- },
48
- ticketNumber: {
49
- type: Number,
50
- },
51
- needsFix: {
52
- type: String,
53
- required: false,
54
- },
55
- byWho: {
56
- type: String,
57
- required: false,
58
- },
59
- selectedEmployee: {
60
- type: String,
61
- required: false,
62
- },
63
- selectedVendor: {
64
- type: String,
65
- required: false,
66
- },
67
- assessImage: {
68
- type: String,
69
- },
70
- closingReason: {
71
- type: String,
72
- required: false,
73
- },
74
- reviewText: {
75
- type: String,
76
- required: false,
77
- },
78
- services: [
79
- {
80
- description: {
81
- type: String,
82
- required: false,
83
- },
84
- amount: {
85
- type: Number,
86
- required: true,
87
- },
88
- },
89
- ],
90
- totalAmount: {
91
- type: Number,
92
- required: false
93
- },
94
- payer: {
95
- type: String,
96
- required: false,
97
- },
98
- reviewed: {
99
- type: Boolean,
100
- default: false,
101
- },
102
- costAttachment: {
103
- type: String,
104
- required: false,
105
- },
106
- }, {
107
- timestamps: true,
108
- });
109
-
1
+ const mongoose = require('mongoose');
2
+
3
+ const ticketSchema = new mongoose.Schema({
4
+ facilityId: {
5
+ type: mongoose.Schema.Types.ObjectId,
6
+ ref: 'Facility',
7
+ required: true,
8
+ },
9
+ ticketType: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ userId: {
14
+ type: mongoose.Schema.Types.ObjectId,
15
+ ref: 'User',
16
+ },
17
+ subject: {
18
+ type: String,
19
+ },
20
+ description: {
21
+ type: String,
22
+ },
23
+ priority: {
24
+ type: String,
25
+ },
26
+ image: {
27
+ type: String,
28
+ },
29
+ date: {
30
+ type: Date,
31
+ },
32
+ time: {
33
+ type: String,
34
+ },
35
+ extras: {
36
+ type: String,
37
+ },
38
+ status: {
39
+ type: String,
40
+ enum: ['open', 'on hold', 'ongoing', 'resolved', 'cancelled', 'closed'],
41
+ required: true,
42
+ default: 'open',
43
+ },
44
+ customerId: {
45
+ type: mongoose.Schema.Types.ObjectId,
46
+ ref: 'Customer',
47
+ },
48
+ ticketNumber: {
49
+ type: Number,
50
+ },
51
+ needsFix: {
52
+ type: String,
53
+ required: false,
54
+ },
55
+ byWho: {
56
+ type: String,
57
+ required: false,
58
+ },
59
+ selectedEmployee: {
60
+ type: String,
61
+ required: false,
62
+ },
63
+ selectedVendor: {
64
+ type: String,
65
+ required: false,
66
+ },
67
+ assessImage: {
68
+ type: String,
69
+ },
70
+ closingReason: {
71
+ type: String,
72
+ required: false,
73
+ },
74
+ reviewText: {
75
+ type: String,
76
+ required: false,
77
+ },
78
+ services: [
79
+ {
80
+ description: {
81
+ type: String,
82
+ required: false,
83
+ },
84
+ amount: {
85
+ type: Number,
86
+ required: true,
87
+ },
88
+ },
89
+ ],
90
+ totalAmount: {
91
+ type: Number,
92
+ required: false
93
+ },
94
+ payer: {
95
+ type: String,
96
+ required: false,
97
+ },
98
+ reviewed: {
99
+ type: Boolean,
100
+ default: false,
101
+ },
102
+ costAttachment: {
103
+ type: String,
104
+ required: false,
105
+ },
106
+ }, {
107
+ timestamps: true,
108
+ });
109
+
110
110
  module.exports = mongoose.model('Ticket', ticketSchema);
@@ -1,25 +1,25 @@
1
- const mongoose = require('mongoose');
2
-
3
- // Define the schema for companies
4
- const unitassetSchema = new mongoose.Schema({
5
- name: {
6
- type: String,
7
- required:true
8
- },
9
- unitId:{
10
- type: mongoose.Schema.Types.ObjectId,
11
- ref: 'Unit',
12
- }
13
-
14
-
15
- }, {
16
- timestamps: true // Automatically add createdAt and updatedAt fields
17
- });
18
-
19
- // Indexes for improved performance
20
- unitassetSchema.index({ name: 1 });
21
-
22
- // Compile the model from the schema
23
- const UnitAsset = mongoose.model('UnitAsset', unitassetSchema);
24
-
25
- module.exports = UnitAsset;
1
+ const mongoose = require('mongoose');
2
+
3
+ // Define the schema for companies
4
+ const unitassetSchema = new mongoose.Schema({
5
+ name: {
6
+ type: String,
7
+ required:true
8
+ },
9
+ unitId:{
10
+ type: mongoose.Schema.Types.ObjectId,
11
+ ref: 'Unit',
12
+ }
13
+
14
+
15
+ }, {
16
+ timestamps: true // Automatically add createdAt and updatedAt fields
17
+ });
18
+
19
+ // Indexes for improved performance
20
+ unitassetSchema.index({ name: 1 });
21
+
22
+ // Compile the model from the schema
23
+ const UnitAsset = mongoose.model('UnitAsset', unitassetSchema);
24
+
25
+ module.exports = UnitAsset;