law-common 13.0.1-beta.2 → 13.0.1-beta.21

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 (76) hide show
  1. package/dist/src/api/interface/client_affiliate.create.dto.interface.d.ts +1 -1
  2. package/dist/src/api/interface/client_quote_rate.create.dto.interface.d.ts +2 -1
  3. package/dist/src/api/interface/document_upload.create.dto.interface.d.ts +2 -1
  4. package/dist/src/api/interface/intermediary_bank.create.dto.interface.d.ts +2 -1
  5. package/dist/src/api/interface/intermediary_bank.update.dto.interface.d.ts +1 -1
  6. package/dist/src/api/interface/office_location.create.dto.interface.d.ts +3 -1
  7. package/dist/src/api/interface/office_location.update.dto.interface.d.ts +2 -1
  8. package/dist/src/api/interface/timesheet.entity.response.interface.d.ts +7 -13
  9. package/dist/src/api/interface/to_do_list.create.dto.interface.d.ts +3 -1
  10. package/dist/src/api/interface/to_do_list.update.dto.interface.d.ts +2 -1
  11. package/dist/src/entities/enums/billing_profile_status_enum.d.ts +5 -0
  12. package/dist/src/entities/enums/billing_profile_status_enum.js +9 -0
  13. package/dist/src/entities/enums/client_affiliate_status_enum.d.ts +5 -0
  14. package/dist/src/entities/enums/client_affiliate_status_enum.js +9 -0
  15. package/dist/src/entities/enums/client_quote_rate_status_enum.d.ts +5 -0
  16. package/dist/src/entities/enums/client_quote_rate_status_enum.js +9 -0
  17. package/dist/src/entities/enums/document_upload_status_enum.d.ts +5 -0
  18. package/dist/src/entities/enums/document_upload_status_enum.js +9 -0
  19. package/dist/src/entities/enums/expense_type_status_enum.d.ts +5 -0
  20. package/dist/src/entities/enums/expense_type_status_enum.js +9 -0
  21. package/dist/src/entities/enums/intermediary_bank_status_enum.d.ts +5 -0
  22. package/dist/src/entities/enums/intermediary_bank_status_enum.js +9 -0
  23. package/dist/src/entities/enums/office_location_status_enum.d.ts +5 -0
  24. package/dist/src/entities/enums/office_location_status_enum.js +9 -0
  25. package/dist/src/entities/enums/to_do_list_status_enum.d.ts +5 -0
  26. package/dist/src/entities/enums/to_do_list_status_enum.js +9 -0
  27. package/dist/src/entities/flow-configs/base-flow-config.factory.d.ts +20 -1
  28. package/dist/src/entities/flow-configs/base-flow-config.factory.js +1 -16
  29. package/dist/src/entities/flow-configs/{billing.flow.config.d.ts → billing_flow.config.d.ts} +1 -1
  30. package/dist/src/entities/flow-configs/billing_flow.config.js +305 -0
  31. package/dist/src/entities/flow-configs/billing_transaction_flow.config.d.ts +24 -0
  32. package/dist/src/entities/flow-configs/billing_transaction_flow.config.js +111 -0
  33. package/dist/src/entities/flow-configs/flow-config.type.d.ts +14 -0
  34. package/dist/src/entities/flow-configs/leave_flow.config.d.ts +7 -0
  35. package/dist/src/entities/flow-configs/leave_flow.config.js +117 -65
  36. package/dist/src/entities/flow-configs/moving_timesheet_flow.config.js +21 -8
  37. package/dist/src/entities/flow-configs/timesheet_flow.config.d.ts +5 -0
  38. package/dist/src/entities/flow-configs/timesheet_flow.config.js +420 -0
  39. package/dist/src/entities/flow-configs/vendor_flow.config.js +74 -60
  40. package/dist/src/entities/index.d.ts +11 -2
  41. package/dist/src/entities/index.js +11 -2
  42. package/dist/src/entities/interface/billing_profile.entity.interface.d.ts +2 -0
  43. package/dist/src/entities/interface/client_affiliate.entity.interface.d.ts +2 -0
  44. package/dist/src/entities/interface/client_quote_rate.entity.interface.d.ts +2 -0
  45. package/dist/src/entities/interface/document_upload.entity.interface.d.ts +2 -0
  46. package/dist/src/entities/interface/expense_type.entity.interface.d.ts +2 -0
  47. package/dist/src/entities/interface/field-constraint/billing_profile_field_constraints.interface.d.ts +2 -2
  48. package/dist/src/entities/interface/field-constraint/client_affiliate_field_constraints.interface.d.ts +1 -1
  49. package/dist/src/entities/interface/field-constraint/client_quote_rate_field_constraints.interface.d.ts +1 -1
  50. package/dist/src/entities/interface/field-constraint/document_upload_field_constraints.interface.d.ts +1 -1
  51. package/dist/src/entities/interface/field-constraint/expense_type_field_constraints.interface.d.ts +2 -2
  52. package/dist/src/entities/interface/field-constraint/office_location_field_constraints.interface.d.ts +3 -1
  53. package/dist/src/entities/interface/field-constraint/to_do_list_field_constraints.interface.d.ts +1 -1
  54. package/dist/src/entities/interface/intermediary_bank.entity.interface.d.ts +2 -0
  55. package/dist/src/entities/interface/office_location.entity.interface.d.ts +2 -0
  56. package/dist/src/entities/interface/to_do_list.entity.interface.d.ts +2 -0
  57. package/dist/src/entities/model/billing_profile.entity.model.d.ts +2 -0
  58. package/dist/src/entities/model/billing_profile.entity.model.js +2 -0
  59. package/dist/src/entities/model/client_affiliate.entity.model.d.ts +2 -1
  60. package/dist/src/entities/model/client_affiliate.entity.model.js +1 -0
  61. package/dist/src/entities/model/client_quote_rate.entity.model.d.ts +2 -0
  62. package/dist/src/entities/model/client_quote_rate.entity.model.js +2 -0
  63. package/dist/src/entities/model/document_upload.entity.model.d.ts +2 -0
  64. package/dist/src/entities/model/document_upload.entity.model.js +2 -0
  65. package/dist/src/entities/model/expense_type.entity.model.d.ts +2 -0
  66. package/dist/src/entities/model/expense_type.entity.model.js +2 -0
  67. package/dist/src/entities/model/intermediary_bank.entity.model.d.ts +2 -0
  68. package/dist/src/entities/model/intermediary_bank.entity.model.js +2 -0
  69. package/dist/src/entities/model/office_location.entity.model.d.ts +2 -0
  70. package/dist/src/entities/model/office_location.entity.model.js +2 -0
  71. package/dist/src/entities/model/to_do_list.entity.model.d.ts +2 -0
  72. package/dist/src/entities/model/to_do_list.entity.model.js +2 -0
  73. package/package.json +1 -1
  74. package/dist/src/entities/flow-configs/billing.flow.config.js +0 -209
  75. package/dist/src/entities/flow-configs/billing_transaction.flow.config.d.ts +0 -19
  76. package/dist/src/entities/flow-configs/billing_transaction.flow.config.js +0 -83
@@ -3,6 +3,110 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.leaveFlowConfig = void 0;
4
4
  const leave_action_enum_1 = require("../enums/leave_action_enum");
5
5
  const leave_status_enum_1 = require("../enums/leave_status_enum");
6
+ const base_flow_config_factory_1 = require("./base-flow-config.factory");
7
+ const LEAVE_APPROVER_PERMISSION = ["LEAVE_APPROVER_ORG"];
8
+ const LEAVE_DELETE_PERMISSION = ["LEAVE_DELETE_SELF"];
9
+ const LEAVE_UPDATE_PERMISSION = ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"];
10
+ /**
11
+ * The two LEAVE_APPROVAL_* actions delegate to `LeaveEntityModel.getOverallStatusByLeaveApprovals()`,
12
+ * which returns APPROVED once every approval row is approved, REJECTED if any is rejected,
13
+ * CREATE_APPROVAL_PENDING if any is escalated, and otherwise the leave's own current status. The
14
+ * transitions then fall back to `context.leaveEntity!.status` as well, so between the two the honest
15
+ * reachable set for both actions is the full status enum.
16
+ */
17
+ const ALL_LEAVE_STATUSES = [
18
+ leave_status_enum_1.LeaveStatusEnum.CREATE_APPROVAL_PENDING,
19
+ leave_status_enum_1.LeaveStatusEnum.UPDATE_APPROVAL_PENDING,
20
+ leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL_PENDING,
21
+ leave_status_enum_1.LeaveStatusEnum.RESOLVED_REJECTED,
22
+ leave_status_enum_1.LeaveStatusEnum.APPROVED,
23
+ leave_status_enum_1.LeaveStatusEnum.REJECTED,
24
+ leave_status_enum_1.LeaveStatusEnum.DELETED,
25
+ ];
26
+ const ACTION_MAP = {
27
+ // READ has no transition in this flow — every READ entry was already commented out in the legacy
28
+ // config. Declared so the map covers every enum member; the empty reachable set makes
29
+ // createActionConfig uncallable for it.
30
+ [leave_action_enum_1.LeaveActionEnum.READ]: {
31
+ reachableStatues: [],
32
+ permissions: [],
33
+ },
34
+ [leave_action_enum_1.LeaveActionEnum.APPROVE]: {
35
+ reachableStatues: [leave_status_enum_1.LeaveStatusEnum.APPROVED, leave_status_enum_1.LeaveStatusEnum.DELETED],
36
+ permissions: LEAVE_APPROVER_PERMISSION,
37
+ },
38
+ [leave_action_enum_1.LeaveActionEnum.REJECT]: {
39
+ reachableStatues: [leave_status_enum_1.LeaveStatusEnum.REJECTED, leave_status_enum_1.LeaveStatusEnum.RESOLVED_REJECTED],
40
+ permissions: LEAVE_APPROVER_PERMISSION,
41
+ },
42
+ [leave_action_enum_1.LeaveActionEnum.DELETE]: {
43
+ reachableStatues: [leave_status_enum_1.LeaveStatusEnum.DELETED, leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL_PENDING],
44
+ permissions: LEAVE_DELETE_PERMISSION,
45
+ },
46
+ [leave_action_enum_1.LeaveActionEnum.RECALL]: {
47
+ reachableStatues: [leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL_PENDING, leave_status_enum_1.LeaveStatusEnum.DELETED],
48
+ permissions: LEAVE_UPDATE_PERMISSION,
49
+ },
50
+ [leave_action_enum_1.LeaveActionEnum.LEAVE_APPROVAL_APPROVE]: {
51
+ reachableStatues: ALL_LEAVE_STATUSES,
52
+ permissions: LEAVE_APPROVER_PERMISSION,
53
+ },
54
+ [leave_action_enum_1.LeaveActionEnum.LEAVE_APPROVAL_REJECT]: {
55
+ reachableStatues: ALL_LEAVE_STATUSES,
56
+ permissions: LEAVE_APPROVER_PERMISSION,
57
+ },
58
+ };
59
+ const { createActionConfig } = (0, base_flow_config_factory_1.createFlowConfigFactory)()(ACTION_MAP);
60
+ const overallStatusFromApprovals = (context) => { var _a; return ((_a = context.leaveEntity) === null || _a === void 0 ? void 0 : _a.getOverallStatusByLeaveApprovals()) || context.leaveEntity.status; };
61
+ // CREATE_APPROVAL_PENDING status transitions
62
+ const transitionCreateApprovalPendingStatusApproveAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.APPROVE, leave_status_enum_1.LeaveStatusEnum.APPROVED, undefined, {
63
+ description: "Approves the leave request. The employee's leave will be marked as approved.",
64
+ });
65
+ const transitionCreateApprovalPendingStatusRejectAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.REJECT, leave_status_enum_1.LeaveStatusEnum.REJECTED, undefined, {
66
+ description: "Rejects the leave request. The employee will be notified of the rejection.",
67
+ });
68
+ const transitionCreateApprovalPendingStatusDeleteAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.DELETE, leave_status_enum_1.LeaveStatusEnum.DELETED, undefined, {
69
+ description: "Deletes the leave request entirely before it has been approved.",
70
+ });
71
+ const transitionCreateApprovalPendingStatusLeaveApprovalApproveAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.LEAVE_APPROVAL_APPROVE, overallStatusFromApprovals, undefined, { description: "Approves the leave request. The employee's leave will be marked as approved." });
72
+ const transitionCreateApprovalPendingStatusLeaveApprovalRejectAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.LEAVE_APPROVAL_REJECT, overallStatusFromApprovals, undefined, { description: "Rejects the leave request. The employee will be notified of the rejection." });
73
+ // UPDATE_APPROVAL_PENDING status transitions
74
+ // RECALL rolls back to the previous state
75
+ const transitionUpdateApprovalPendingStatusRecallAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.RECALL, leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL_PENDING, undefined, {
76
+ description: "Recalls the edit request, rolling back the leave to its previous approved state.",
77
+ });
78
+ const transitionUpdateApprovalPendingStatusRejectAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.REJECT, leave_status_enum_1.LeaveStatusEnum.RESOLVED_REJECTED, undefined, {
79
+ description: "Rejects the requested edit. The leave is moved to a resolve-rejected state for further action.",
80
+ });
81
+ const transitionUpdateApprovalPendingStatusApproveAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.APPROVE, leave_status_enum_1.LeaveStatusEnum.APPROVED, undefined, {
82
+ description: "Approves the edited leave request. The updated leave details will be applied.",
83
+ });
84
+ // DELETE_APPROVAL_PENDING status transitions
85
+ // RECALL rolls back to the previous state
86
+ const transitionDeleteApprovalPendingStatusRecallAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.RECALL, leave_status_enum_1.LeaveStatusEnum.DELETED, undefined, {
87
+ description: "Recalls the deletion request, cancelling the leave entirely.",
88
+ });
89
+ const transitionDeleteApprovalPendingStatusRejectAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.REJECT, leave_status_enum_1.LeaveStatusEnum.RESOLVED_REJECTED, undefined, {
90
+ description: "Rejects the deletion request. The leave is moved to a resolve-rejected state.",
91
+ });
92
+ const transitionDeleteApprovalPendingStatusApproveAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.APPROVE, leave_status_enum_1.LeaveStatusEnum.DELETED, undefined, {
93
+ description: "Approves the deletion request. The leave record will be permanently deleted.",
94
+ });
95
+ // APPROVED status transitions
96
+ const transitionApprovedStatusDeleteAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.DELETE, leave_status_enum_1.LeaveStatusEnum.DELETED, undefined, {
97
+ description: "Requests deletion of an approved leave. The deletion will require approver confirmation.",
98
+ });
99
+ // RESOLVED_REJECTED status transitions
100
+ const transitionResolvedRejectedStatusDeleteAction = createActionConfig(leave_action_enum_1.LeaveActionEnum.DELETE, leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL_PENDING, undefined, {
101
+ description: "Requests deletion of the rejected leave record.",
102
+ });
103
+ /**
104
+ * The commented-out entries below are kept verbatim from the legacy config, in the old inline
105
+ * `{ permissions, next }` shape, rather than converted. There are eight of them across five status
106
+ * blocks plus two whole commented status blocks (DELETED, REJECTED); rewriting all of them would add
107
+ * a lot of dead consts for transitions nobody has decided to revive. Reviving any of them means
108
+ * writing a `transition…Action` const and, for READ, giving it a real reachable set in ACTION_MAP.
109
+ */
6
110
  exports.leaveFlowConfig = {
7
111
  [leave_status_enum_1.LeaveStatusEnum.CREATE_APPROVAL_PENDING]: {
8
112
  description: "The leave request has been submitted and is awaiting approval from the approver.",
@@ -16,31 +120,11 @@ exports.leaveFlowConfig = {
16
120
  // next: () => LeaveStatusEnum.CREATE_APPROVAL_PENDING,
17
121
  // description: "Allows the employee to edit the leave request while it is still awaiting approval.",
18
122
  // },
19
- [leave_action_enum_1.LeaveActionEnum.APPROVE]: {
20
- permissions: ["LEAVE_APPROVER_ORG"],
21
- next: () => leave_status_enum_1.LeaveStatusEnum.APPROVED,
22
- description: "Approves the leave request. The employee's leave will be marked as approved.",
23
- },
24
- [leave_action_enum_1.LeaveActionEnum.REJECT]: {
25
- permissions: ["LEAVE_APPROVER_ORG"],
26
- next: () => leave_status_enum_1.LeaveStatusEnum.REJECTED,
27
- description: "Rejects the leave request. The employee will be notified of the rejection.",
28
- },
29
- [leave_action_enum_1.LeaveActionEnum.DELETE]: {
30
- permissions: ["LEAVE_DELETE_SELF"],
31
- next: () => leave_status_enum_1.LeaveStatusEnum.DELETED,
32
- description: "Deletes the leave request entirely before it has been approved.",
33
- },
34
- [leave_action_enum_1.LeaveActionEnum.LEAVE_APPROVAL_APPROVE]: {
35
- permissions: ["LEAVE_APPROVER_ORG"],
36
- next: (context) => { var _a; return ((_a = context.leaveEntity) === null || _a === void 0 ? void 0 : _a.getOverallStatusByLeaveApprovals()) || context.leaveEntity.status; },
37
- description: "Approves the leave request. The employee's leave will be marked as approved.",
38
- },
39
- [leave_action_enum_1.LeaveActionEnum.LEAVE_APPROVAL_REJECT]: {
40
- permissions: ["LEAVE_APPROVER_ORG"],
41
- next: (context) => { var _a; return ((_a = context.leaveEntity) === null || _a === void 0 ? void 0 : _a.getOverallStatusByLeaveApprovals()) || context.leaveEntity.status; },
42
- description: "Rejects the leave request. The employee will be notified of the rejection.",
43
- },
123
+ [leave_action_enum_1.LeaveActionEnum.APPROVE]: transitionCreateApprovalPendingStatusApproveAction,
124
+ [leave_action_enum_1.LeaveActionEnum.REJECT]: transitionCreateApprovalPendingStatusRejectAction,
125
+ [leave_action_enum_1.LeaveActionEnum.DELETE]: transitionCreateApprovalPendingStatusDeleteAction,
126
+ [leave_action_enum_1.LeaveActionEnum.LEAVE_APPROVAL_APPROVE]: transitionCreateApprovalPendingStatusLeaveApprovalApproveAction,
127
+ [leave_action_enum_1.LeaveActionEnum.LEAVE_APPROVAL_REJECT]: transitionCreateApprovalPendingStatusLeaveApprovalRejectAction,
44
128
  },
45
129
  },
46
130
  [leave_status_enum_1.LeaveStatusEnum.UPDATE_APPROVAL_PENDING]: {
@@ -55,21 +139,9 @@ exports.leaveFlowConfig = {
55
139
  // next: () => LeaveStatusEnum.UPDATE_APPROVAL_PENDING,
56
140
  // description: "Allows further edits to the leave request while the edit is pending approval.",
57
141
  // },
58
- [leave_action_enum_1.LeaveActionEnum.RECALL]: {
59
- permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
60
- next: () => leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL_PENDING, // Rolls back to previous state
61
- description: "Recalls the edit request, rolling back the leave to its previous approved state.",
62
- },
63
- [leave_action_enum_1.LeaveActionEnum.REJECT]: {
64
- permissions: ["LEAVE_APPROVER_ORG"],
65
- next: () => leave_status_enum_1.LeaveStatusEnum.RESOLVED_REJECTED,
66
- description: "Rejects the requested edit. The leave is moved to a resolve-rejected state for further action.",
67
- },
68
- [leave_action_enum_1.LeaveActionEnum.APPROVE]: {
69
- permissions: ["LEAVE_APPROVER_ORG"],
70
- next: () => leave_status_enum_1.LeaveStatusEnum.APPROVED,
71
- description: "Approves the edited leave request. The updated leave details will be applied.",
72
- },
142
+ [leave_action_enum_1.LeaveActionEnum.RECALL]: transitionUpdateApprovalPendingStatusRecallAction,
143
+ [leave_action_enum_1.LeaveActionEnum.REJECT]: transitionUpdateApprovalPendingStatusRejectAction,
144
+ [leave_action_enum_1.LeaveActionEnum.APPROVE]: transitionUpdateApprovalPendingStatusApproveAction,
73
145
  },
74
146
  },
75
147
  [leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL_PENDING]: {
@@ -84,21 +156,9 @@ exports.leaveFlowConfig = {
84
156
  // next: () => LeaveStatusEnum.DELETE_APPROVAL_PENDING,
85
157
  // description: "Allows editing the leave request while the deletion is pending approval.",
86
158
  // },
87
- [leave_action_enum_1.LeaveActionEnum.RECALL]: {
88
- permissions: ["LEAVE_UPDATE_SELF", "LEAVE_UPDATE_ORG"],
89
- next: () => leave_status_enum_1.LeaveStatusEnum.DELETED, // Rolls back to previous state
90
- description: "Recalls the deletion request, cancelling the leave entirely.",
91
- },
92
- [leave_action_enum_1.LeaveActionEnum.REJECT]: {
93
- permissions: ["LEAVE_APPROVER_ORG"],
94
- next: () => leave_status_enum_1.LeaveStatusEnum.RESOLVED_REJECTED,
95
- description: "Rejects the deletion request. The leave is moved to a resolve-rejected state.",
96
- },
97
- [leave_action_enum_1.LeaveActionEnum.APPROVE]: {
98
- permissions: ["LEAVE_APPROVER_ORG"],
99
- next: () => leave_status_enum_1.LeaveStatusEnum.DELETED,
100
- description: "Approves the deletion request. The leave record will be permanently deleted.",
101
- },
159
+ [leave_action_enum_1.LeaveActionEnum.RECALL]: transitionDeleteApprovalPendingStatusRecallAction,
160
+ [leave_action_enum_1.LeaveActionEnum.REJECT]: transitionDeleteApprovalPendingStatusRejectAction,
161
+ [leave_action_enum_1.LeaveActionEnum.APPROVE]: transitionDeleteApprovalPendingStatusApproveAction,
102
162
  },
103
163
  },
104
164
  [leave_status_enum_1.LeaveStatusEnum.APPROVED]: {
@@ -113,11 +173,7 @@ exports.leaveFlowConfig = {
113
173
  // next: () => LeaveStatusEnum.UPDATE_APPROVAL_PENDING,
114
174
  // description: "Requests an edit to an already approved leave. The change will require re-approval.",
115
175
  // },
116
- [leave_action_enum_1.LeaveActionEnum.DELETE]: {
117
- permissions: ["LEAVE_DELETE_SELF"],
118
- next: () => leave_status_enum_1.LeaveStatusEnum.DELETED,
119
- description: "Requests deletion of an approved leave. The deletion will require approver confirmation.",
120
- },
176
+ [leave_action_enum_1.LeaveActionEnum.DELETE]: transitionApprovedStatusDeleteAction,
121
177
  // [LeaveActionEnum.APPROVE]: {
122
178
  // permissions: ["LEAVE_APPROVER_ORG"],
123
179
  // next: () => LeaveStatusEnum.APPROVED,
@@ -145,11 +201,7 @@ exports.leaveFlowConfig = {
145
201
  // next: () => LeaveStatusEnum.UPDATE_APPROVAL_PENDING,
146
202
  // description: "Allows the employee to edit and resubmit the leave request after it was rejected.",
147
203
  // },
148
- [leave_action_enum_1.LeaveActionEnum.DELETE]: {
149
- permissions: ["LEAVE_DELETE_SELF"],
150
- next: () => leave_status_enum_1.LeaveStatusEnum.DELETE_APPROVAL_PENDING,
151
- description: "Requests deletion of the rejected leave record.",
152
- },
204
+ [leave_action_enum_1.LeaveActionEnum.DELETE]: transitionResolvedRejectedStatusDeleteAction,
153
205
  },
154
206
  },
155
207
  // [LeaveStatusEnum.REJECTED]: {
@@ -3,19 +3,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.movingTimesheetFlowConfig = void 0;
4
4
  const moving_timesheet_action_enum_1 = require("../enums/moving_timesheet_action_enum");
5
5
  const moving_timesheet_status_enum_1 = require("../enums/moving_timesheet_status_enum");
6
+ const base_flow_config_factory_1 = require("./base-flow-config.factory");
7
+ const MOVING_TIMESHEET_APPROVE_PERMISSION = ["MOVING_TIMESHEET_APPROVE_ORG", "MOVING_TIMESHEET_APPROVE_PROJECT"];
8
+ const ACTION_MAP = {
9
+ [moving_timesheet_action_enum_1.MovingTimesheetActionEnum.APPROVE]: {
10
+ reachableStatues: [moving_timesheet_status_enum_1.MovingTimesheetStatusEnum.APPROVED],
11
+ permissions: MOVING_TIMESHEET_APPROVE_PERMISSION,
12
+ },
13
+ [moving_timesheet_action_enum_1.MovingTimesheetActionEnum.REJECT]: {
14
+ reachableStatues: [moving_timesheet_status_enum_1.MovingTimesheetStatusEnum.REJECTED],
15
+ permissions: MOVING_TIMESHEET_APPROVE_PERMISSION,
16
+ },
17
+ };
18
+ const { createActionConfig } = (0, base_flow_config_factory_1.createFlowConfigFactory)()(ACTION_MAP);
19
+ // PENDING_APPROVAL status transitions
20
+ const transitionPendingApprovalStatusApproveAction = createActionConfig(moving_timesheet_action_enum_1.MovingTimesheetActionEnum.APPROVE, moving_timesheet_status_enum_1.MovingTimesheetStatusEnum.APPROVED);
21
+ const transitionPendingApprovalStatusRejectAction = createActionConfig(moving_timesheet_action_enum_1.MovingTimesheetActionEnum.REJECT, moving_timesheet_status_enum_1.MovingTimesheetStatusEnum.REJECTED);
6
22
  exports.movingTimesheetFlowConfig = {
7
23
  [moving_timesheet_status_enum_1.MovingTimesheetStatusEnum.PENDING_APPROVAL]: {
8
24
  actions: {
9
- [moving_timesheet_action_enum_1.MovingTimesheetActionEnum.APPROVE]: {
10
- permissions: ["MOVING_TIMESHEET_APPROVE_ORG", "MOVING_TIMESHEET_APPROVE_PROJECT"],
11
- next: () => moving_timesheet_status_enum_1.MovingTimesheetStatusEnum.APPROVED,
12
- },
13
- [moving_timesheet_action_enum_1.MovingTimesheetActionEnum.REJECT]: {
14
- permissions: ["MOVING_TIMESHEET_APPROVE_ORG", "MOVING_TIMESHEET_APPROVE_PROJECT"],
15
- next: () => moving_timesheet_status_enum_1.MovingTimesheetStatusEnum.REJECTED,
16
- },
25
+ [moving_timesheet_action_enum_1.MovingTimesheetActionEnum.APPROVE]: transitionPendingApprovalStatusApproveAction,
26
+ [moving_timesheet_action_enum_1.MovingTimesheetActionEnum.REJECT]: transitionPendingApprovalStatusRejectAction,
17
27
  },
18
28
  },
29
+ // APPROVED and REJECTED are terminal. They are declared with an empty action set rather than omitted,
30
+ // which is how the legacy config had them — a consumer that looks up either status finds a block with
31
+ // no available actions instead of undefined.
19
32
  [moving_timesheet_status_enum_1.MovingTimesheetStatusEnum.APPROVED]: {
20
33
  actions: {},
21
34
  },
@@ -0,0 +1,5 @@
1
+ import { ITimesheetFlowContextData } from "../../api";
2
+ import { TimesheetActionEnum } from "../enums/timesheet_action_enum";
3
+ import { TimesheetStatusEnum } from "../enums/timesheet_status_enum";
4
+ import { FlowConfig } from "./flow-config.type";
5
+ export declare const timesheetFlowConfig: FlowConfig<TimesheetStatusEnum, TimesheetActionEnum, ITimesheetFlowContextData>;