payservedb 5.4.8 → 5.5.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/index.js CHANGED
@@ -130,6 +130,7 @@ const models = {
130
130
  Budget: require('./src/models/budget'),
131
131
  BudgetCategory: require('./src/models/budgetCategory'),
132
132
  Expense: require('./src/models/expense'),
133
+ ExpenseCategory: require('./src/models/expense_category'),
133
134
  InvoiceSettings: require('./src/models/levy_invoice_settings'),
134
135
  Account: require('./src/models/account'),
135
136
  FacilityPaymentDetails: require('./src/models/facility_payment_details'),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payservedb",
3
- "version": "5.4.8",
3
+ "version": "5.5.0",
4
4
  "main": "index.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
@@ -4,31 +4,88 @@ const budgetSchema = new mongoose.Schema({
4
4
  facilityId: {
5
5
  type: mongoose.Schema.Types.ObjectId,
6
6
  ref: 'Facility',
7
+ required: true,
8
+ index: true
9
+ },
10
+ budgetName: {
11
+ type: String,
12
+ required: true,
13
+ trim: true
14
+ },
15
+ allocation: {
16
+ type: Number,
17
+ required: true
18
+ },
19
+ userName: {
20
+ type: String,
21
+ required: true
22
+ },
23
+ startDate: {
24
+ type: Date,
7
25
  required: true
8
26
  },
9
- categoryId: {
27
+ endDate: {
28
+ type: Date,
29
+ required: true
30
+ },
31
+ department: {
32
+ type: String,
33
+ required: true,
34
+ trim: true
35
+ },
36
+ overruns: {
37
+ type: Boolean,
38
+ default: false
39
+ },
40
+ approvalWorkflowId: {
10
41
  type: mongoose.Schema.Types.ObjectId,
11
- ref: 'BudgetCategory',
42
+ ref: 'ApprovalWorkflow',
12
43
  required: true
13
44
  },
14
- amount: {
45
+ approvalStatus: {
46
+ type: String,
47
+ enum: ['pending', 'in_progress', 'approved', 'rejected'],
48
+ default: 'pending',
49
+ index: true
50
+ },
51
+ currentStep: {
15
52
  type: Number,
16
- required: true
53
+ default: 1,
54
+ min: 1
17
55
  },
18
- period: {
19
- startDate: {
20
- type: Date,
56
+ approvals: [{
57
+ stepNumber: {
58
+ type: Number,
21
59
  required: true
22
60
  },
23
- endDate: {
24
- type: Date,
61
+ stepName: {
62
+ type: String,
25
63
  required: true
26
- }
27
- }
64
+ },
65
+ approvers: [{
66
+ userId: {
67
+ type: mongoose.Schema.Types.ObjectId,
68
+ ref: 'User',
69
+ required: true
70
+ },
71
+ status: {
72
+ type: String,
73
+ enum: ['pending', 'approved', 'rejected'],
74
+ default: 'pending'
75
+ },
76
+ actionDate: {
77
+ type: Date
78
+ },
79
+ comments: {
80
+ type: String,
81
+ trim: true
82
+ }
83
+ }]
84
+ }]
28
85
  }, {
29
86
  timestamps: true
30
87
  });
31
88
 
32
89
  const Budget = mongoose.model('Budget', budgetSchema);
33
90
 
34
- module.exports = Budget;
91
+ module.exports = Budget;
@@ -6,16 +6,19 @@ const expenseSchema = new mongoose.Schema({
6
6
  ref: 'Facility',
7
7
  required: true
8
8
  },
9
- categoryId: {
9
+ budgetId: {
10
10
  type: mongoose.Schema.Types.ObjectId,
11
- ref: 'BudgetCategory',
12
- required: true
11
+ ref: 'Budget'
13
12
  },
14
13
  name: {
15
14
  type: String,
16
15
  required: true,
17
16
  trim: true
18
17
  },
18
+ categoryId: {
19
+ type: mongoose.Schema.Types.ObjectId,
20
+ ref: 'ExpenseCategory'
21
+ },
19
22
  amount: {
20
23
  type: Number,
21
24
  required: true
@@ -35,10 +38,6 @@ const expenseSchema = new mongoose.Schema({
35
38
  enum: ['PAID', 'UNPAID'],
36
39
  default: 'UNPAID'
37
40
  },
38
- approval: {
39
- type: Boolean,
40
- default: false
41
- },
42
41
  description: {
43
42
  type: String,
44
43
  trim: true
@@ -46,7 +45,52 @@ const expenseSchema = new mongoose.Schema({
46
45
  receiptUrl: {
47
46
  type: String,
48
47
  trim: true
49
- }
48
+ },
49
+ approvalWorkflowId: {
50
+ type: mongoose.Schema.Types.ObjectId,
51
+ ref: 'ApprovalWorkflow',
52
+ required: true
53
+ },
54
+ approvalStatus: {
55
+ type: String,
56
+ enum: ['pending', 'in_progress', 'approved', 'rejected'],
57
+ default: 'pending',
58
+ index: true
59
+ },
60
+ currentStep: {
61
+ type: Number,
62
+ default: 1,
63
+ min: 1
64
+ },
65
+ approvals: [{
66
+ stepNumber: {
67
+ type: Number,
68
+ required: true
69
+ },
70
+ stepName: {
71
+ type: String,
72
+ required: true
73
+ },
74
+ approvers: [{
75
+ userId: {
76
+ type: mongoose.Schema.Types.ObjectId,
77
+ ref: 'User',
78
+ required: true
79
+ },
80
+ status: {
81
+ type: String,
82
+ enum: ['pending', 'approved', 'rejected'],
83
+ default: 'pending'
84
+ },
85
+ actionDate: {
86
+ type: Date
87
+ },
88
+ comments: {
89
+ type: String,
90
+ trim: true
91
+ }
92
+ }]
93
+ }]
50
94
  }, {
51
95
  timestamps: true
52
96
  });
@@ -0,0 +1,20 @@
1
+ const mongoose = require('mongoose');
2
+
3
+ const expenseCategorySchema = 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
+ trim: true
13
+ }
14
+ }, {
15
+ timestamps: true
16
+ });
17
+
18
+ const ExpenseCategory = mongoose.model('ExpenseCategory', expenseCategorySchema);
19
+
20
+ module.exports = ExpenseCategory;