payservedb 5.0.9 → 5.1.1

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": "5.0.9",
3
+ "version": "5.1.1",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -26,6 +26,11 @@ const leaseAgreementSchema = new mongoose.Schema({
26
26
  ref: 'Customer',
27
27
  required: true
28
28
  },
29
+ doubleEntryAccount: {
30
+ type: mongoose.Schema.Types.ObjectId,
31
+ ref: 'GLAccountDoubleEntries',
32
+ required: true
33
+ },
29
34
  leaseTerms: {
30
35
  startDate: { type: Date, required: true },
31
36
  endDate: { type: Date, required: true },
@@ -1,78 +1,86 @@
1
1
  const mongoose = require('mongoose');
2
+ const Schema = mongoose.Schema;
2
3
 
3
- // Define the schema for LevyContract
4
- const levyContractSchema = new mongoose.Schema({
5
- contractName: {
6
- type: String,
7
- required: true,
8
- trim: true
9
- },
10
- levyId: {
11
- type: mongoose.Schema.Types.ObjectId,
12
- ref: 'Levy',
13
- required: true
14
- },
15
- customerId: {
16
- type: mongoose.Schema.Types.ObjectId,
17
- ref: 'Customer',
18
- required: true
19
- },
20
- unitId: {
21
- type: mongoose.Schema.Types.ObjectId,
22
- ref: 'Unit',
23
- required: true
24
- },
25
- amount: {
26
- type: Number,
27
- required: true,
28
- min: [0, 'Amount must be a positive number']
29
- },
30
- startDate: {
31
- type: Date,
32
- required: true
33
- },
34
- endDate: {
35
- type: Date,
36
- required: true
37
- },
38
- status: {
39
- type: String,
40
- required: true,
41
- enum: ['Active', 'Inactive']
42
- },
43
- // We keep paymentFrequency in the schema for backward compatibility
44
- // But it will now be populated from the levy's collectionFrequency
45
- paymentFrequency: {
46
- type: String,
47
- required: true,
48
- trim: true
49
- },
50
- // New field for balance brought forward
51
- balanceBroughtForward: {
52
- type: Number,
53
- default: 0,
54
- },
55
- facilityId: {
56
- type: mongoose.Schema.Types.ObjectId,
57
- ref: 'Facility',
58
- required: true
59
- },
60
- // New field to track edit history
61
- editHistory: [
62
- {
63
- editedBy: {
64
- type: mongoose.Schema.Types.ObjectId,
65
- ref: 'User'
66
- },
67
- editedAt: { type: Date, default: Date.now },
68
- reason: { type: String, required: true },
69
- changes: { type: Object } // Store what fields were changed
4
+ const LevyContractSchema = new Schema(
5
+ {
6
+ contractName: {
7
+ type: String,
8
+ required: [true, 'Contract name is required']
9
+ },
10
+ levyId: {
11
+ type: mongoose.Schema.Types.ObjectId,
12
+ ref: 'Levy',
13
+ required: [true, 'Levy ID is required']
14
+ },
15
+ customerId: {
16
+ type: mongoose.Schema.Types.ObjectId,
17
+ ref: 'Customer',
18
+ required: [true, 'Customer ID is required']
19
+ },
20
+ unitId: {
21
+ type: mongoose.Schema.Types.ObjectId,
22
+ ref: 'Unit',
23
+ required: [true, 'Unit ID is required']
24
+ },
25
+ amount: {
26
+ type: Number,
27
+ required: [true, 'Amount is required'],
28
+ min: [0, 'Amount cannot be negative']
29
+ },
30
+ startDate: {
31
+ type: Date,
32
+ required: [true, 'Start date is required']
33
+ },
34
+ endDate: {
35
+ type: Date,
36
+ required: [true, 'End date is required']
37
+ },
38
+ status: {
39
+ type: String,
40
+ enum: ['Active', 'Inactive', 'Completed', 'Suspended', 'Terminated'],
41
+ default: 'Active',
42
+ required: [true, 'Status is required']
43
+ },
44
+ // Replace single doubleEntryAccount with two separate accounts
45
+ invoiceDoubleEntryAccount: {
46
+ type: mongoose.Schema.Types.ObjectId,
47
+ ref: 'GLAccountDoubleEntries',
48
+ required: [true, 'Invoice double entry account is required']
49
+ },
50
+ paymentDoubleEntryAccount: {
51
+ type: mongoose.Schema.Types.ObjectId,
52
+ ref: 'GLAccountDoubleEntries',
53
+ required: [true, 'Payment double entry account is required']
54
+ },
55
+ balanceBroughtForward: {
56
+ type: Number,
57
+ default: 0
58
+ },
59
+ paymentFrequency: {
60
+ type: String,
61
+ enum: ['Daily', 'Weekly', 'Bi-Weekly', 'Monthly', 'Quarterly', 'Semi-Annually', 'Annually'],
62
+ default: 'Monthly'
63
+ },
64
+ facilityId: {
65
+ type: mongoose.Schema.Types.ObjectId,
66
+ ref: 'Facility',
67
+ required: [true, 'Facility ID is required']
68
+ },
69
+ createdBy: {
70
+ type: mongoose.Schema.Types.ObjectId,
71
+ ref: 'User'
72
+ },
73
+ updatedBy: {
74
+ type: mongoose.Schema.Types.ObjectId,
75
+ ref: 'User'
70
76
  }
71
- ]
72
- }, {
73
- timestamps: true
74
- });
75
-
76
- const LevyContract = mongoose.model('LevyContract', levyContractSchema);
77
+ },
78
+ {
79
+ timestamps: true,
80
+ }
81
+ );
77
82
 
78
- module.exports = LevyContract;
83
+ module.exports = {
84
+ schema: LevyContractSchema,
85
+ name: 'LevyContract'
86
+ };
@@ -25,7 +25,7 @@ const userSchema = new mongoose.Schema({
25
25
  type: {
26
26
  type: String,
27
27
  required: [true, 'Type is required'],
28
- enum: ['Company', 'Project Manager', 'Universal', 'Core', 'Resident', 'Landlord'],
28
+ enum: ['Company', 'Project Manager', 'Universal', 'Core', 'Resident', 'Landlord', 'Supplier'],
29
29
  },
30
30
  department: {
31
31
  type: String,
@@ -34,7 +34,7 @@ const userSchema = new mongoose.Schema({
34
34
  role: {
35
35
  type: String,
36
36
  required: [true, 'Role is required'],
37
- enum: ['admin', 'editor', 'user', 'guard', 'family','Staff'],
37
+ enum: ['admin', 'editor', 'user', 'guard', 'family','Staff', 'supplier'],
38
38
  },
39
39
  permissions: {
40
40
  type: Object,