payservedb 3.4.6 → 3.4.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payservedb",
3
- "version": "3.4.6",
3
+ "version": "3.4.8",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -31,7 +31,7 @@ const leaseAgreementSchema = new mongoose.Schema({
31
31
  financialTerms: {
32
32
  monthlyRent: { type: Number, required: true },
33
33
  paymentDueDate: { type: Number, required: true },
34
- paymentMethod: {
34
+ paymentMethods: [{
35
35
  type: {
36
36
  type: String,
37
37
  required: true,
@@ -47,16 +47,37 @@ const leaseAgreementSchema = new mongoose.Schema({
47
47
  // For Mobile Money
48
48
  phoneNumber: String,
49
49
  provider: String,
50
- accountName: String,
51
- // For Cash/Cheque, no additional details needed
52
- }
53
- },
54
- securityDeposit: { type: Number, required: true }
50
+ mobileAccountName: String,
51
+ // For Cheque
52
+ bankToDraft: String,
53
+ chequeAccountNumber: String,
54
+ // For Cash
55
+ preferredCashLocation: String
56
+ },
57
+ isPrimary: { type: Boolean, default: false }
58
+ }],
59
+ securityDeposit: { type: Number, required: true },
60
+ penalty: {
61
+ type: {
62
+ amount: { type: Number },
63
+ percentage: { type: Number },
64
+ appliesAfter: { type: Number, default: 7 } // Days after due date
65
+ },
66
+ default: null
67
+ }
55
68
  },
56
69
  billingCycle: {
57
70
  frequency: { type: String, enum: ['Monthly', 'Quarterly', 'Annually'], required: true },
58
71
  nextInvoiceDate: { type: Date },
59
- autoSend: { type: Boolean, default: false }
72
+ autoSend: { type: Boolean, default: false },
73
+ overdue: {
74
+ reminderDays: {
75
+ type: Number,
76
+ default: 7,
77
+ min: 0,
78
+ max: 30 // Reasonable limit for overdue reminders
79
+ }
80
+ }
60
81
  },
61
82
  invoices: [
62
83
  { type: mongoose.Schema.Types.ObjectId, ref: 'Invoice' }
@@ -64,7 +85,7 @@ const leaseAgreementSchema = new mongoose.Schema({
64
85
  leaseTemplate: {
65
86
  type: mongoose.Schema.Types.ObjectId,
66
87
  ref: 'LeaseTemplate',
67
- required: true // Ensures that every lease uses a valid template
88
+ required: true
68
89
  },
69
90
  leaseDocuments: [
70
91
  {
@@ -88,7 +109,21 @@ const leaseAgreementSchema = new mongoose.Schema({
88
109
  payments: [
89
110
  {
90
111
  invoiceId: { type: mongoose.Schema.Types.ObjectId, ref: 'Invoice', required: true },
91
- method: { type: String, enum: ['Cash', 'Bank Transfer'], required: true },
112
+ method: {
113
+ type: {
114
+ type: String,
115
+ enum: ['Bank Transfer', 'Mobile Money', 'Cash', 'Cheque'],
116
+ required: true
117
+ },
118
+ details: {
119
+ // Capture specific details of the payment method used
120
+ bankName: String,
121
+ accountNumber: String,
122
+ transactionId: String,
123
+ mobileNumber: String,
124
+ chequeNumber: String
125
+ }
126
+ },
92
127
  amount: { type: Number, required: true },
93
128
  receivedBy: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
94
129
  receivedAt: { type: Date, default: Date.now }
@@ -104,4 +139,4 @@ const leaseAgreementSchema = new mongoose.Schema({
104
139
 
105
140
  const LeaseAgreement = mongoose.model('LeaseAgreement', leaseAgreementSchema);
106
141
 
107
- module.exports = LeaseAgreement;
142
+ module.exports = LeaseAgreement;