payservedb 2.6.8 → 2.7.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payservedb",
3
- "version": "2.6.8",
3
+ "version": "2.7.0",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -7,85 +7,80 @@ const leaseAgreementSchema = new mongoose.Schema({
7
7
  ref: 'Facility',
8
8
  required: true
9
9
  },
10
- propertyType: {
11
- type: String,
12
- enum: ['Residential', 'Commercial'],
13
- required: true
14
- },
15
- propertyAddress: {
16
- type: String,
17
- required: true
18
- },
19
10
  unitNumber: {
20
11
  type: mongoose.Schema.Types.ObjectId,
21
12
  ref: 'Unit',
22
13
  required: true
23
14
  },
24
- landReferenceNumber: {
25
- type: String
26
- },
27
-
28
- // Parties Information
29
- landlord: {
30
- name: { type: String, required: true },
31
- identificationNumber: { type: String },
32
- address: { type: String },
33
- contactPhone: { type: String },
34
- contactEmail: { type: String }
35
- },
36
15
  tenant: {
37
16
  type: mongoose.Schema.Types.ObjectId,
38
17
  ref: 'Customer',
39
18
  required: true
40
19
  },
41
-
42
- // Lease Terms
20
+ landlord: {
21
+ type: mongoose.Schema.Types.ObjectId,
22
+ ref: 'User',
23
+ required: true
24
+ },
43
25
  leaseTerms: {
44
26
  startDate: { type: Date, required: true },
45
27
  endDate: { type: Date, required: true },
46
- duration: { type: Number, required: true }, // in months
28
+ duration: { type: Number, required: true },
47
29
  autoRenewal: { type: Boolean, default: false }
48
30
  },
49
-
50
31
  financialTerms: {
51
32
  monthlyRent: { type: Number, required: true },
52
- paymentDueDate: { type: Number, required: true }, // Day of month
53
- paymentMethod: {
54
- type: String,
55
- enum: ['Bank Transfer', 'Mobile Money', 'Cheque', 'Cash']
56
- },
57
- securityDeposit: { type: Number, required: true },
58
- annualRentEscalation: { type: Number, default: 0 }
33
+ paymentDueDate: { type: Number, required: true },
34
+ paymentMethod: { type: String, enum: ['Bank Transfer', 'Mobile Money', 'Cheque', 'Cash'] },
35
+ securityDeposit: { type: Number, required: true }
59
36
  },
60
-
61
- serviceCharge: {
62
- amount: { type: Number },
63
- description: { type: String }
37
+ billingCycle: {
38
+ frequency: { type: String, enum: ['Monthly', 'Quarterly', 'Annually'], required: true },
39
+ nextInvoiceDate: { type: Date },
40
+ autoSend: { type: Boolean, default: false }
64
41
  },
65
-
66
- maintenanceTerms: {
67
- tenantResponsibilities: [String],
68
- landlordResponsibilities: [String]
69
- },
70
-
71
- utilities: {
72
- electricity: { type: String, enum: ['Tenant', 'Landlord'] },
73
- water: { type: String, enum: ['Tenant', 'Landlord'] },
74
- gas: { type: String, enum: ['Tenant', 'Landlord'] },
75
- internet: { type: String, enum: ['Tenant', 'Landlord'] }
42
+ invoices: [
43
+ { type: mongoose.Schema.Types.ObjectId, ref: 'Invoice' }
44
+ ],
45
+ leaseTemplate: {
46
+ type: mongoose.Schema.Types.ObjectId,
47
+ ref: 'LeaseTemplate',
48
+ required: true // Ensures that every lease uses a valid template
76
49
  },
77
-
50
+ leaseDocuments: [
51
+ {
52
+ fileName: { type: String },
53
+ fileUrl: { type: String },
54
+ uploadedAt: { type: Date, default: Date.now }
55
+ }
56
+ ],
57
+ reminders: [
58
+ {
59
+ type: { type: String, enum: ['SMS', 'Email', 'WhatsApp'], required: true },
60
+ scheduledDate: { type: Date, required: true },
61
+ status: { type: String, enum: ['Pending', 'Sent'], default: 'Pending' }
62
+ }
63
+ ],
78
64
  status: {
79
65
  type: String,
80
66
  enum: ['Active', 'Pending', 'Expired', 'Terminated'],
81
- default: 'Pending'
67
+ default: 'Active'
82
68
  },
69
+ payments: [
70
+ {
71
+ invoiceId: { type: mongoose.Schema.Types.ObjectId, ref: 'Invoice', required: true },
72
+ method: { type: String, enum: ['Cash', 'Bank Transfer'], required: true },
73
+ amount: { type: Number, required: true },
74
+ receivedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
75
+ receivedAt: { type: Date, default: Date.now }
76
+ }
77
+ ],
83
78
  createdBy: {
84
79
  type: mongoose.Schema.Types.ObjectId,
85
80
  ref: 'User'
86
81
  }
87
82
  }, {
88
- timestamps: true
83
+ timestamps: true
89
84
  });
90
85
 
91
86
  const LeaseAgreement = mongoose.model('LeaseAgreement', leaseAgreementSchema);
@@ -1,13 +1,21 @@
1
1
  const mongoose = require("mongoose");
2
2
 
3
3
 
4
+ const mongoose = require("mongoose");
5
+
4
6
  const LeaseTemplateSchema = new mongoose.Schema({
5
7
  name: { type: String, required: true },
6
8
  description: { type: String, required: true },
7
9
  templateContent: { type: String, required: true },
8
- createdBy: { type: String, required: true },
10
+ leaseAgreementId: {
11
+ type: mongoose.Schema.Types.ObjectId,
12
+ ref: 'LeaseAgreement',
13
+ required: false
14
+ },
15
+ createdBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
9
16
  createdAt: { type: Date, default: Date.now },
10
- });
11
-
12
- module.exports = mongoose.model('LeaseTemplate', LeaseTemplateSchema);
17
+ });
18
+
19
+ module.exports = mongoose.model('LeaseTemplate', LeaseTemplateSchema);
20
+
13
21
 
@@ -6,6 +6,13 @@ const stockAndSparesSchema = new mongoose.Schema({
6
6
  ref: 'Facility',
7
7
  required: true,
8
8
  },
9
+ name: {
10
+ type: String,
11
+ required: true,
12
+ },
13
+ description: {
14
+ type: String,
15
+ },
9
16
  skuDetails: {
10
17
  type: String,
11
18
  required: true,