@zeniai/client-epic-state 5.0.82-betaAR8 → 5.0.82-betaAS1

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 (84) hide show
  1. package/lib/entity/approvalRule/approvalRulePayload.d.ts +5 -34
  2. package/lib/entity/approvalRule/approvalRulePayload.js +10 -130
  3. package/lib/entity/approvalRule/approvalRuleSelector.d.ts +1 -25
  4. package/lib/entity/approvalRule/approvalRuleSelector.js +0 -40
  5. package/lib/entity/approvalRule/approvalRuleState.d.ts +7 -59
  6. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  7. package/lib/entity/snackbar/snackbarTypes.js +0 -2
  8. package/lib/entity/tenant/tenantPayload.d.ts +3 -0
  9. package/lib/entity/tenant/tenantReducer.d.ts +1 -1
  10. package/lib/entity/tenant/tenantReducer.js +23 -3
  11. package/lib/entity/tenant/tenantState.d.ts +3 -0
  12. package/lib/epic.d.ts +3 -3
  13. package/lib/epic.js +3 -3
  14. package/lib/esm/entity/approvalRule/approvalRulePayload.js +10 -130
  15. package/lib/esm/entity/approvalRule/approvalRuleSelector.js +0 -35
  16. package/lib/esm/entity/snackbar/snackbarTypes.js +0 -2
  17. package/lib/esm/entity/tenant/tenantReducer.js +22 -2
  18. package/lib/esm/epic.js +3 -3
  19. package/lib/esm/index.js +10 -12
  20. package/lib/esm/view/dashboard/dashboardReducer.js +1 -5
  21. package/lib/esm/view/dashboard/dashboardSelector.js +1 -2
  22. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer.js +12 -74
  23. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/epic/deleteBillPayApprovalRuleEpic.js +2 -11
  24. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/epic/fetchBillPaySetupApproverViewEpic.js +4 -9
  25. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/epic/initializeBillPaySetupApproverViewUpdateDataEpic.js +7 -11
  26. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/epic/saveBillPaySetupApproverViewUpdatesEpic.js +4 -14
  27. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/types/commonPayload.js +16 -122
  28. package/lib/esm/view/spendManagement/billPay/editBillView/editBillViewSelector.js +2 -7
  29. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/epic/deleteRemiApprovalRuleEpic.js +2 -11
  30. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/epic/fetchRemiSetupApproverViewEpic.js +2 -9
  31. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/epic/initializeRemiSetupApproverViewUpdateDataEpic.js +7 -11
  32. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/epic/saveRemiSetupApproverViewUpdatesEpic.js +4 -14
  33. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.js +11 -63
  34. package/lib/esm/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoIntroClosedByOutsideClickEpic.js +18 -0
  35. package/lib/esm/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoRemindMeLaterClickedEpic.js +18 -0
  36. package/lib/esm/view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer.js +45 -1
  37. package/lib/index.d.ts +11 -13
  38. package/lib/index.js +32 -41
  39. package/lib/view/companyTaskManagerView/companyTaskManagerViewReducer.d.ts +2 -2
  40. package/lib/view/companyView/types/cockpitTypes.d.ts +1 -1
  41. package/lib/view/dashboard/dashboardReducer.d.ts +1 -1
  42. package/lib/view/dashboard/dashboardReducer.js +2 -6
  43. package/lib/view/dashboard/dashboardSelector.d.ts +0 -1
  44. package/lib/view/dashboard/dashboardSelector.js +1 -2
  45. package/lib/view/dashboard/dashboardState.d.ts +0 -1
  46. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  47. package/lib/view/people/peopleTypes.d.ts +1 -1
  48. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer.d.ts +3 -14
  49. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer.js +13 -75
  50. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewState.d.ts +0 -8
  51. package/lib/view/spendManagement/billPay/billPaySetupApproverView/epic/deleteBillPayApprovalRuleEpic.js +2 -11
  52. package/lib/view/spendManagement/billPay/billPaySetupApproverView/epic/fetchBillPaySetupApproverViewEpic.js +4 -9
  53. package/lib/view/spendManagement/billPay/billPaySetupApproverView/epic/initializeBillPaySetupApproverViewUpdateDataEpic.js +6 -10
  54. package/lib/view/spendManagement/billPay/billPaySetupApproverView/epic/saveBillPaySetupApproverViewUpdatesEpic.js +3 -13
  55. package/lib/view/spendManagement/billPay/billPaySetupApproverView/types/commonPayload.d.ts +1 -50
  56. package/lib/view/spendManagement/billPay/billPaySetupApproverView/types/commonPayload.js +17 -124
  57. package/lib/view/spendManagement/billPay/billPaySetupApproverView/types/commonState.d.ts +5 -31
  58. package/lib/view/spendManagement/billPay/editBillView/editBillViewSelector.js +2 -7
  59. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
  60. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/epic/deleteRemiApprovalRuleEpic.js +2 -11
  61. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/epic/fetchRemiSetupApproverViewEpic.js +2 -9
  62. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/epic/initializeRemiSetupApproverViewUpdateDataEpic.js +6 -10
  63. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/epic/saveRemiSetupApproverViewUpdatesEpic.js +3 -13
  64. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.d.ts +3 -14
  65. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.js +12 -64
  66. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewState.d.ts +0 -5
  67. package/lib/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoIntroClosedByOutsideClickEpic.d.ts +8 -0
  68. package/lib/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoIntroClosedByOutsideClickEpic.js +22 -0
  69. package/lib/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoRemindMeLaterClickedEpic.d.ts +8 -0
  70. package/lib/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoRemindMeLaterClickedEpic.js +22 -0
  71. package/lib/view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer.d.ts +1 -1
  72. package/lib/view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer.js +46 -2
  73. package/lib/view/spendManagement/treasury/treasurySetUp/treasurySetupViewState.d.ts +2 -0
  74. package/lib/view/taskManager/taskListView/taskList.d.ts +3 -3
  75. package/package.json +1 -1
  76. package/lib/entity/approvalRule/approvalRuleConflict.d.ts +0 -56
  77. package/lib/entity/approvalRule/approvalRuleConflict.js +0 -77
  78. package/lib/esm/entity/approvalRule/approvalRuleConflict.js +0 -74
  79. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/epic/reorderBillPayApprovalRulesEpic.js +0 -57
  80. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/epic/reorderRemiApprovalRulesEpic.js +0 -52
  81. package/lib/view/spendManagement/billPay/billPaySetupApproverView/epic/reorderBillPayApprovalRulesEpic.d.ts +0 -23
  82. package/lib/view/spendManagement/billPay/billPaySetupApproverView/epic/reorderBillPayApprovalRulesEpic.js +0 -61
  83. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/epic/reorderRemiApprovalRulesEpic.d.ts +0 -14
  84. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/epic/reorderRemiApprovalRulesEpic.js +0 -56
@@ -1,48 +1,20 @@
1
1
  export const toApprovalChangableInfoPayload = (approverViewUpdateData) => {
2
- // Form-side criteria is a structured object with optional slots for
3
- // amount / vendor / department; flatten it into the wire format's
4
- // `conditions[]` array.
5
- let criteriaPayload;
2
+ let criteriaPayload = [];
6
3
  if (approverViewUpdateData.criteria != null) {
7
- const { amount, vendor, department } = approverViewUpdateData.criteria;
8
- const conditions = [];
9
- if (amount?.min != null) {
10
- conditions.push({
11
- field: 'amount',
12
- type: 'gte',
13
- value: amount.min.amount,
14
- });
15
- }
16
- if (amount?.max != null) {
17
- conditions.push({
18
- field: 'amount',
19
- type: 'lte',
20
- value: amount.max.amount,
21
- });
22
- }
23
- if (vendor != null && vendor.vendorIds.length > 0) {
24
- conditions.push({
25
- field: 'vendor_id',
26
- type: vendor.operator === 'is_not' ? 'not_in' : 'in',
27
- value: vendor.vendorIds,
28
- });
29
- }
30
- if (department != null && department.departmentIds.length > 0) {
31
- conditions.push({
32
- field: 'department_id',
33
- type: department.operator === 'is_not' ? 'not_in' : 'in',
34
- value: department.departmentIds,
35
- });
36
- }
37
- if (conditions.length > 0) {
38
- const currency = amount?.min ?? amount?.max ?? null;
39
- criteriaPayload = {
40
- conditions,
41
- criteria_operator: 'and',
42
- currency_code: currency?.currencyCode ?? 'USD',
43
- currency_symbol: currency?.currencySymbol ?? '$',
44
- };
45
- }
4
+ const criteria = approverViewUpdateData.criteria;
5
+ const { rangeType, rangeEntity, range } = criteria;
6
+ const { min, max } = range;
7
+ const { currencyCode, currencySymbol } = min;
8
+ criteriaPayload = [
9
+ {
10
+ type: rangeType,
11
+ range_entity: rangeEntity,
12
+ min: min.amount,
13
+ max: max?.amount ?? null,
14
+ currency_code: currencyCode,
15
+ currency_symbol: currencySymbol,
16
+ },
17
+ ];
46
18
  }
47
19
  const steps = approverViewUpdateData.steps.map((step) => {
48
20
  return {
@@ -63,88 +35,10 @@ export const toApprovalChangableInfoPayload = (approverViewUpdateData) => {
63
35
  });
64
36
  const isUpdate = approverViewUpdateData.approvalRuleId != null;
65
37
  const payload = {
38
+ criteria: criteriaPayload,
66
39
  steps,
67
40
  is_applicable_on_pending_approval_entity: approverViewUpdateData.isApplicableOnPendingApprovalEntity ?? true,
68
41
  };
69
- if (criteriaPayload != null) {
70
- payload.criteria = criteriaPayload;
71
- }
72
- // Approval Rules 3.0 — surface rule-level fields when the form set them.
73
- // Send only what the user actually entered: an undefined value means
74
- // "no opinion" and stays off the wire.
75
- if (approverViewUpdateData.name != null) {
76
- payload.name = approverViewUpdateData.name;
77
- }
78
- if (approverViewUpdateData.description != null) {
79
- payload.description = approverViewUpdateData.description;
80
- }
81
- if (approverViewUpdateData.separationOfDuties != null) {
82
- payload.is_separation_of_duty_enabled =
83
- approverViewUpdateData.separationOfDuties;
84
- }
85
- if (approverViewUpdateData.isFallback != null) {
86
- payload.is_fallback = approverViewUpdateData.isFallback;
87
- }
88
- if (isUpdate) {
89
- payload.approval_rule_id = approverViewUpdateData.approvalRuleId;
90
- }
91
- return payload;
92
- };
93
- /**
94
- * V1 wire mapper — used when `approval_rule_v3_config` resolves to OFF
95
- * for the current tenant. Translates the form-side amount criteria into
96
- * the legacy `{rangeType, rangeEntity, range: {min, max}}` shape. The
97
- * V1 backend does not understand vendor / department criteria or the
98
- * rule-level 3.0 fields, so those are dropped on the wire.
99
- *
100
- * The form-side amount slot is always read as a `range`-style criteria
101
- * here: V1 schemas only supported ranges, so an absent `min` or `max`
102
- * falls back to `0` / `Number.MAX_SAFE_INTEGER`.
103
- */
104
- export const toApprovalChangableInfoPayloadV1 = (approverViewUpdateData) => {
105
- const amount = approverViewUpdateData.criteria?.amount;
106
- const minAmount = amount?.min;
107
- const maxAmount = amount?.max;
108
- const currencyCode = minAmount?.currencyCode ?? maxAmount?.currencyCode ?? 'USD';
109
- const currencySymbol = minAmount?.currencySymbol ?? maxAmount?.currencySymbol ?? '$';
110
- const steps = approverViewUpdateData.steps.map((step) => {
111
- return {
112
- action: step.action,
113
- operator: step.operator,
114
- actors: step.actors
115
- .filter((actor) => actor.subType !== 'admin')
116
- .map((actor) => {
117
- return {
118
- type: actor.type,
119
- id: actor.userId ?? null,
120
- sub_type: actor.subType ?? null,
121
- id_type: actor.idType ?? null,
122
- is_implicit_actor: actor.isImplicitActor ?? false,
123
- };
124
- }),
125
- };
126
- });
127
- const isUpdate = approverViewUpdateData.approvalRuleId != null;
128
- const payload = {
129
- steps,
130
- is_applicable_on_pending_approval_entity: approverViewUpdateData.isApplicableOnPendingApprovalEntity ?? true,
131
- criteria: {
132
- rangeType: 'range',
133
- rangeEntity: 'currency',
134
- range: {
135
- min: {
136
- amount: minAmount?.amount ?? 0,
137
- currencyCode,
138
- currencySymbol,
139
- },
140
- max: {
141
- amount: maxAmount?.amount ?? Number.MAX_SAFE_INTEGER,
142
- currencyCode,
143
- currencySymbol,
144
- },
145
- },
146
- },
147
- };
148
42
  if (isUpdate) {
149
43
  payload.approval_rule_id = approverViewUpdateData.approvalRuleId;
150
44
  }
@@ -1,6 +1,5 @@
1
1
  import recordGet from 'lodash/get';
2
2
  import has from 'lodash/has';
3
- import { getAmountCriteria } from '../../../../entity/approvalRule/approvalRuleSelector';
4
3
  import { reduceFetchState } from '../../../../commonStateTypes/reduceFetchState';
5
4
  import { getBankAccountByBankAccountId, getBankAccountsByBankAccountIds, } from '../../../../entity/bankAccount/bankAccountSelector';
6
5
  import { getContactById, getContactsByIds, } from '../../../../entity/billPay/contact/contactSelector';
@@ -682,13 +681,9 @@ export const getDefaultWithdrawFromAccount = (state, depositAccounts, companyId,
682
681
  export const checkIfCreatorIsApprover = (billAmount, approvalRules, signedInUser) => {
683
682
  let isCreatorAlsoApprover = false;
684
683
  const approvalRule = approvalRules.find((rule) => {
685
- const amountCriteria = getAmountCriteria(rule.criteria);
686
- if (amountCriteria?.min == null) {
687
- return false;
688
- }
689
- const { min, max } = amountCriteria;
684
+ const { max, min } = rule.criteria[0].range;
690
685
  return (billAmount > min.amount &&
691
- (max?.amount != null ? billAmount <= max.amount : true));
686
+ (max?.amount != null ? billAmount <= max?.amount : true));
692
687
  });
693
688
  if (approvalRule != null) {
694
689
  const requireApprovalSteps = approvalRule.steps.filter((step) => step.action === 'require_approval');
@@ -6,18 +6,9 @@ import { updateAllUsers } from '../../../../../entity/user/userReducer';
6
6
  import { createZeniAPIStatus, isSuccessResponse, } from '../../../../../responsePayload';
7
7
  import { deleteRemiApprovalRule, deleteRemiApprovalRuleFailure, deleteRemiApprovalRuleSuccess, } from '../remiSetupApproverViewReducer';
8
8
  export const deleteRemiApprovalRuleEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(deleteRemiApprovalRule.match), switchMap((action) => {
9
- const { approvalRuleId, useV3 } = action.payload;
10
- // Approval Rules 3.0 — flag-gated endpoint selection.
11
- // Explicit `=== true` keeps `strict-boolean-expressions` happy
12
- // when RTK's payload type widens to `any` in some configs.
13
- const endpoint = useV3 === true
14
- ? // `https://dev.api.zeni.ai/version/approval/tarun/1.0/reimbursements/approval-rules-v2`
15
- `${zeniAPI.apiEndPoints.approvalMicroServiceBaseUrl}/1.0/reimbursements/approval-rules-v2`
16
- : `${zeniAPI.apiEndPoints.approvalMicroServiceBaseUrl}/1.0/reimbursements/approval-rules`;
9
+ const { approvalRuleId } = action.payload;
17
10
  return zeniAPI
18
- .deleteAndGetJSON(endpoint, {
19
- approval_rule_id: approvalRuleId,
20
- })
11
+ .deleteAndGetJSON(`${zeniAPI.apiEndPoints.approvalMicroServiceBaseUrl}/1.0/reimbursements/approval-rules`, { approval_rule_id: approvalRuleId })
21
12
  .pipe(mergeMap((response) => {
22
13
  if (isSuccessResponse(response) && response.data != null) {
23
14
  const approvalRuleIds = response.data.approval_rules.map((approvalRule) => approvalRule.approval_rule_id);
@@ -6,7 +6,7 @@ import { updateAllUsers } from '../../../../../entity/user/userReducer';
6
6
  import { createZeniAPIStatus, isSuccessResponse, } from '../../../../../responsePayload';
7
7
  import { fetchRemiSetupApproverView, fetchRemiSetupApproverViewFailure, fetchRemiSetupApproverViewSuccess, } from '../remiSetupApproverViewReducer';
8
8
  export const fetchRemiSetupApproverViewEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(fetchRemiSetupApproverView.match), switchMap((action) => {
9
- const { cacheOverride, resolveAttributeToUser, includeImplicitActors, useV3, } = action.payload;
9
+ const { cacheOverride, resolveAttributeToUser, includeImplicitActors } = action.payload;
10
10
  const { remiSetupApproverViewState, approvalRuleState } = state$.value;
11
11
  const approvalRules = getApprovalRulesByIds(approvalRuleState, remiSetupApproverViewState.approvalRuleIds);
12
12
  if (cacheOverride === true ||
@@ -14,15 +14,8 @@ export const fetchRemiSetupApproverViewEpic = (actions$, state$, zeniAPI) => act
14
14
  remiSetupApproverViewState.approvalRuleIds.length ||
15
15
  (remiSetupApproverViewState.hasValidState() === false &&
16
16
  remiSetupApproverViewState.fetchState !== 'In-Progress')) {
17
- // Approval Rules 3.0 — flag-gated endpoint selection.
18
- // Explicit `=== true` keeps `strict-boolean-expressions` happy
19
- // when RTK's payload type widens to `any` in some configs.
20
- const basePath = useV3 === true
21
- ? // `https://dev.api.zeni.ai/version/approval/tarun/1.0/reimbursements/approval-rules-v2`
22
- `${zeniAPI.apiEndPoints.approvalMicroServiceBaseUrl}/1.0/reimbursements/approval-rules-v2`
23
- : `${zeniAPI.apiEndPoints.approvalMicroServiceBaseUrl}/1.0/reimbursements/approval-rules`;
24
17
  return zeniAPI
25
- .getJSON(`${basePath}?query={"is_include_implicit_actors": ${includeImplicitActors}, "is_resolve_attribute_to_user":${resolveAttributeToUser}}`)
18
+ .getJSON(`${zeniAPI.apiEndPoints.approvalMicroServiceBaseUrl}/1.0/reimbursements/approval-rules?query={"is_include_implicit_actors": ${includeImplicitActors}, "is_resolve_attribute_to_user":${resolveAttributeToUser}}`)
26
19
  .pipe(mergeMap((response) => {
27
20
  if (isSuccessResponse(response) && response.data != null) {
28
21
  const approvalRuleIds = response.data.approval_rules.map((approvalRule) => approvalRule.approval_rule_id);
@@ -1,6 +1,6 @@
1
1
  import { from } from 'rxjs';
2
2
  import { filter, mergeMap } from 'rxjs/operators';
3
- import { getAmountCriteria, getApprovalRuleById, getDepartmentCriteria, getVendorCriteria, } from '../../../../../entity/approvalRule/approvalRuleSelector';
3
+ import { getApprovalRuleById } from '../../../../../entity/approvalRule/approvalRuleSelector';
4
4
  import { clearRemiSetupApproverViewUpdateData, initializeRemiSetupApproverViewUpdateData, saveRemiSetupApproverViewUpdateData, } from '../remiSetupApproverViewReducer';
5
5
  export const initializeRemiSetupApproverViewUpdateDataEpic = (actions$, state$) => actions$.pipe(filter(initializeRemiSetupApproverViewUpdateData.match), mergeMap((action) => {
6
6
  const { approvalRuleId } = action.payload;
@@ -8,20 +8,16 @@ export const initializeRemiSetupApproverViewUpdateDataEpic = (actions$, state$)
8
8
  if (approvalRuleId != null) {
9
9
  const approvalRule = getApprovalRuleById(state$.value.approvalRuleState, approvalRuleId);
10
10
  if (approvalRule != null) {
11
+ const criteria = approvalRule.criteria[0];
12
+ const range = criteria?.range;
11
13
  const remiSetupApproverViewUpdateData = {
12
14
  approvalRuleId,
13
15
  steps: approvalRule.steps,
14
16
  criteria: {
15
- amount: getAmountCriteria(approvalRule.criteria),
16
- vendor: getVendorCriteria(approvalRule.criteria),
17
- department: getDepartmentCriteria(approvalRule.criteria),
17
+ rangeType: criteria?.rangeType,
18
+ rangeEntity: criteria?.rangeEntity,
19
+ range,
18
20
  },
19
- // Approval Rules 3.0 — seed rule-level fields so the form can
20
- // round-trip them on edit. Each may be undefined on legacy rules.
21
- name: approvalRule.name,
22
- description: approvalRule.description,
23
- separationOfDuties: approvalRule.separationOfDuties,
24
- isFallback: approvalRule.isFallback,
25
21
  };
26
22
  fetchActions.push(clearRemiSetupApproverViewUpdateData(), saveRemiSetupApproverViewUpdateData(remiSetupApproverViewUpdateData));
27
23
  }
@@ -29,7 +25,7 @@ export const initializeRemiSetupApproverViewUpdateDataEpic = (actions$, state$)
29
25
  else {
30
26
  const remiSetupApproverViewCreateData = {
31
27
  steps: [],
32
- criteria: {},
28
+ criteria: undefined,
33
29
  };
34
30
  fetchActions.push(clearRemiSetupApproverViewUpdateData(), saveRemiSetupApproverViewUpdateData(remiSetupApproverViewCreateData));
35
31
  }
@@ -4,26 +4,16 @@ import { updateApprovalRules } from '../../../../../entity/approvalRule/approval
4
4
  import { openSnackbar } from '../../../../../entity/snackbar/snackbarReducer';
5
5
  import { updateAllUsers } from '../../../../../entity/user/userReducer';
6
6
  import { createZeniAPIStatus, isSuccessResponse, } from '../../../../../responsePayload';
7
- import { toApprovalChangableInfoPayload, toApprovalChangableInfoPayloadV1, } from '../../../billPay/billPaySetupApproverView/types/commonPayload';
7
+ import { toApprovalChangableInfoPayload } from '../../../billPay/billPaySetupApproverView/types/commonPayload';
8
8
  import { saveRemiSetupApproverViewUpdates, saveRemiSetupApproverViewUpdatesFailure, saveRemiSetupApproverViewUpdatesSuccess, } from '../remiSetupApproverViewReducer';
9
- export const saveRemiSetupApproverViewUpdatesEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(saveRemiSetupApproverViewUpdates.match), switchMap((action) => {
9
+ export const saveRemiSetupApproverViewUpdatesEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(saveRemiSetupApproverViewUpdates.match), switchMap(() => {
10
10
  const { remiSetupApproverViewState } = state$.value;
11
11
  const remiSetupApproverViewUpdateData = remiSetupApproverViewState.remiSetupApproverViewUpdateData;
12
12
  if (remiSetupApproverViewUpdateData != null &&
13
13
  remiSetupApproverViewUpdateData.data != null) {
14
- // Approval Rules 3.0 — gate URL + write-side payload mapper on
15
- // the `approval_rule_v3_config` dynamic config. `useV3` arrives
16
- // on the action payload from the screen connector.
17
- const { useV3 } = action.payload;
18
- const payload = useV3
19
- ? toApprovalChangableInfoPayload(remiSetupApproverViewUpdateData.data)
20
- : toApprovalChangableInfoPayloadV1(remiSetupApproverViewUpdateData.data);
21
- const endpoint = useV3
22
- ? // `https://dev.api.zeni.ai/version/approval/tarun/1.0/reimbursements/approval-rules-v2`
23
- `${zeniAPI.apiEndPoints.approvalMicroServiceBaseUrl}/1.0/reimbursements/approval-rules-v2`
24
- : `${zeniAPI.apiEndPoints.approvalMicroServiceBaseUrl}/1.0/reimbursements/approval-rules`;
14
+ const payload = toApprovalChangableInfoPayload(remiSetupApproverViewUpdateData.data);
25
15
  return zeniAPI
26
- .postAndGetJSON(endpoint, payload)
16
+ .postAndGetJSON(`${zeniAPI.apiEndPoints.approvalMicroServiceBaseUrl}/1.0/reimbursements/approval-rules`, payload)
27
17
  .pipe(mergeMap((response) => {
28
18
  if (isSuccessResponse(response) && response.data != null) {
29
19
  const approvalRuleIds = response.data.approval_rules.map((approvalRule) => approvalRule.approval_rule_id);
@@ -13,7 +13,6 @@ export const initialState = {
13
13
  newApprovalRuleId: undefined,
14
14
  approvalRulesDeleteStatusById: {},
15
15
  remiSetupApproverViewUpdateData: undefined,
16
- reorderStatus: { fetchState: 'Not-Started', error: undefined },
17
16
  hasValidState() {
18
17
  return this.fetchState === 'Completed';
19
18
  },
@@ -27,16 +26,12 @@ const remiSetupApproverView = createSlice({
27
26
  draft.fetchState = 'In-Progress';
28
27
  draft.error = undefined;
29
28
  },
30
- // Approval Rules 3.0 `useV3` arrives from the screen connector
31
- // (`approval_rule_v3_config` dynamic config) and picks v1 vs v2
32
- // endpoint in the fetch epic.
33
- prepare(cacheOverride = false, resolveAttributeToUser = false, includeImplicitActors = false, useV3 = false) {
29
+ prepare(cacheOverride = false, resolveAttributeToUser = false, includeImplicitActors = false) {
34
30
  return {
35
31
  payload: {
36
32
  cacheOverride,
37
33
  resolveAttributeToUser,
38
34
  includeImplicitActors,
39
- useV3,
40
35
  },
41
36
  };
42
37
  },
@@ -139,11 +134,8 @@ const remiSetupApproverView = createSlice({
139
134
  error: undefined,
140
135
  };
141
136
  },
142
- // Approval Rules 3.0 — `useV3` flows from the screen connector
143
- // (`approval_rule_v3_config` dynamic config) so the delete epic
144
- // can pick the v1 vs v2 endpoint.
145
- prepare(approvalRuleId, useV3 = false) {
146
- return { payload: { approvalRuleId, useV3 } };
137
+ prepare(approvalRuleId) {
138
+ return { payload: { approvalRuleId } };
147
139
  },
148
140
  },
149
141
  deleteRemiApprovalRuleSuccess: {
@@ -175,57 +167,13 @@ const remiSetupApproverView = createSlice({
175
167
  };
176
168
  },
177
169
  },
178
- /**
179
- * Approval Rules 3.0 list-page drag-and-drop reorder.
180
- * See BillPay equivalent for the longer rationale.
181
- */
182
- reorderRemiApprovalRules: {
183
- reducer(draft, action) {
184
- const { approvalRuleIds } = action.payload;
185
- draft.reorderStatus = { fetchState: 'In-Progress', error: undefined };
186
- draft.approvalRuleIds = approvalRuleIds;
187
- },
188
- prepare(approvalRuleIds, useV3 = false) {
189
- return { payload: { approvalRuleIds, useV3 } };
190
- },
191
- },
192
- reorderRemiApprovalRulesSuccess: {
193
- reducer(draft, action) {
194
- const { approvalRuleIds } = action.payload;
195
- draft.reorderStatus = { fetchState: 'Completed', error: undefined };
196
- draft.approvalRuleIds = approvalRuleIds;
197
- },
198
- prepare(approvalRuleIds) {
199
- return { payload: { approvalRuleIds } };
200
- },
201
- },
202
- reorderRemiApprovalRulesFailure: {
203
- reducer(draft, action) {
204
- const { status } = action.payload;
205
- draft.reorderStatus = { fetchState: 'Error', error: status };
206
- },
207
- prepare(status) {
208
- return { payload: { status } };
209
- },
210
- },
211
- saveRemiSetupApproverViewUpdates: {
212
- // Approval Rules 3.0 — `useV3` sourced from
213
- // `approval_rule_v3_config` dynamic config in the screen
214
- // connector; epic uses it to pick v1 vs v2 URL + mapper. The
215
- // reducer doesn't read the action but the parameter must be
216
- // declared so the action payload type carries downstream.
217
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
218
- reducer(draft, _action) {
219
- if (draft.remiSetupApproverViewUpdateData != null) {
220
- draft.remiSetupApproverViewUpdateData.updateStatus = {
221
- fetchState: 'In-Progress',
222
- error: undefined,
223
- };
224
- }
225
- },
226
- prepare(useV3) {
227
- return { payload: { useV3 } };
228
- },
170
+ saveRemiSetupApproverViewUpdates(draft) {
171
+ if (draft.remiSetupApproverViewUpdateData != null) {
172
+ draft.remiSetupApproverViewUpdateData.updateStatus = {
173
+ fetchState: 'In-Progress',
174
+ error: undefined,
175
+ };
176
+ }
229
177
  },
230
178
  saveRemiSetupApproverViewUpdatesSuccess: {
231
179
  reducer(draft, action) {
@@ -314,5 +262,5 @@ const remiSetupApproverView = createSlice({
314
262
  },
315
263
  },
316
264
  });
317
- export const { fetchRemiSetupApproverView, fetchRemiSetupApproverViewSuccess, fetchRemiSetupApproverViewFailure, fetchRemiApproversDetails, fetchRemiApproversList, fetchRemiApproversListSuccess, fetchRemiApproversListFailure, deleteRemiApprovalRule, deleteRemiApprovalRuleSuccess, deleteRemiApprovalRuleFailure, reorderRemiApprovalRules, reorderRemiApprovalRulesSuccess, reorderRemiApprovalRulesFailure, saveRemiSetupApproverViewUpdates, saveRemiSetupApproverViewUpdatesSuccess, saveRemiSetupApproverViewUpdatesFailure, initializeRemiSetupApproverViewUpdateData, saveRemiSetupApproverViewUpdateData, setListeningToPusherEvent, clearRemiSetupApproverViewUpdateData, clearRemiSetupApproverView, } = remiSetupApproverView.actions;
265
+ export const { fetchRemiSetupApproverView, fetchRemiSetupApproverViewSuccess, fetchRemiSetupApproverViewFailure, fetchRemiApproversDetails, fetchRemiApproversList, fetchRemiApproversListSuccess, fetchRemiApproversListFailure, deleteRemiApprovalRule, deleteRemiApprovalRuleSuccess, deleteRemiApprovalRuleFailure, saveRemiSetupApproverViewUpdates, saveRemiSetupApproverViewUpdatesSuccess, saveRemiSetupApproverViewUpdatesFailure, initializeRemiSetupApproverViewUpdateData, saveRemiSetupApproverViewUpdateData, setListeningToPusherEvent, clearRemiSetupApproverViewUpdateData, clearRemiSetupApproverView, } = remiSetupApproverView.actions;
318
266
  export default remiSetupApproverView.reducer;
@@ -0,0 +1,18 @@
1
+ import { of } from 'rxjs';
2
+ import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
+ import { updateTreasuryPromoIntroClosedByOutsideClickForLoggedInUser } from '../../../../../entity/tenant/tenantReducer';
4
+ import { createZeniAPIStatus, isSuccessStatus, } from '../../../../../responsePayload';
5
+ import { updateTreasuryPromoIntroClosedByOutsideClick, updateTreasuryPromoIntroClosedByOutsideClickFailure, updateTreasuryPromoIntroClosedByOutsideClickSuccess, } from '../treasurySetupViewReducer';
6
+ export const updateTreasuryPromoIntroClosedByOutsideClickEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(updateTreasuryPromoIntroClosedByOutsideClick.match), switchMap(() => {
7
+ return zeniAPI
8
+ .putAndGetJSON(`${zeniAPI.apiEndPoints.tenantMicroServiceBaseUrl}/1.0/user/self`, { is_treasury_promo_intro_closed_by_outside_click: true })
9
+ .pipe(mergeMap((response) => {
10
+ if (isSuccessStatus(response)) {
11
+ return of(updateTreasuryPromoIntroClosedByOutsideClickForLoggedInUser(), updateTreasuryPromoIntroClosedByOutsideClickSuccess());
12
+ }
13
+ else {
14
+ return of(updateTreasuryPromoIntroClosedByOutsideClickFailure(response.status));
15
+ }
16
+ }), catchError((error) => of(updateTreasuryPromoIntroClosedByOutsideClickFailure(createZeniAPIStatus('Unexpected error', 'Update treasury promo intro closed by outside click REST API call errored out' +
17
+ JSON.stringify(error))))));
18
+ }));
@@ -0,0 +1,18 @@
1
+ import { of } from 'rxjs';
2
+ import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
+ import { updateTreasuryPromoRemindMeLaterClickedForLoggedInUser } from '../../../../../entity/tenant/tenantReducer';
4
+ import { createZeniAPIStatus, isSuccessStatus, } from '../../../../../responsePayload';
5
+ import { updateTreasuryPromoRemindMeLaterClicked, updateTreasuryPromoRemindMeLaterClickedFailure, updateTreasuryPromoRemindMeLaterClickedSuccess, } from '../treasurySetupViewReducer';
6
+ export const updateTreasuryPromoRemindMeLaterClickedEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(updateTreasuryPromoRemindMeLaterClicked.match), switchMap(() => {
7
+ return zeniAPI
8
+ .putAndGetJSON(`${zeniAPI.apiEndPoints.tenantMicroServiceBaseUrl}/1.0/user/self`, { is_treasury_promo_video_remind_me_later_clicked: true })
9
+ .pipe(mergeMap((response) => {
10
+ if (isSuccessStatus(response)) {
11
+ return of(updateTreasuryPromoRemindMeLaterClickedForLoggedInUser(), updateTreasuryPromoRemindMeLaterClickedSuccess());
12
+ }
13
+ else {
14
+ return of(updateTreasuryPromoRemindMeLaterClickedFailure(response.status));
15
+ }
16
+ }), catchError((error) => of(updateTreasuryPromoRemindMeLaterClickedFailure(createZeniAPIStatus('Unexpected error', 'Update treasury promo remind me later REST API call errored out' +
17
+ JSON.stringify(error))))));
18
+ }));
@@ -33,6 +33,14 @@ export const initialState = {
33
33
  fetchState: 'Not-Started',
34
34
  error: undefined,
35
35
  },
36
+ updateTreasuryPromoIntroClosedByOutsideClickStatus: {
37
+ fetchState: 'Not-Started',
38
+ error: undefined,
39
+ },
40
+ updateTreasuryPromoRemindMeLaterClickedStatus: {
41
+ fetchState: 'Not-Started',
42
+ error: undefined,
43
+ },
36
44
  updateTreasuryVideoViewedStatus: {
37
45
  fetchState: 'Not-Started',
38
46
  error: undefined,
@@ -290,12 +298,48 @@ const treasurySetupView = createSlice({
290
298
  error: action.payload,
291
299
  };
292
300
  },
301
+ updateTreasuryPromoRemindMeLaterClicked(draft) {
302
+ draft.updateTreasuryPromoRemindMeLaterClickedStatus = {
303
+ fetchState: 'In-Progress',
304
+ error: undefined,
305
+ };
306
+ },
307
+ updateTreasuryPromoRemindMeLaterClickedSuccess(draft) {
308
+ draft.updateTreasuryPromoRemindMeLaterClickedStatus = {
309
+ fetchState: 'Completed',
310
+ error: undefined,
311
+ };
312
+ },
313
+ updateTreasuryPromoRemindMeLaterClickedFailure(draft, action) {
314
+ draft.updateTreasuryPromoRemindMeLaterClickedStatus = {
315
+ fetchState: 'Error',
316
+ error: action.payload,
317
+ };
318
+ },
319
+ updateTreasuryPromoIntroClosedByOutsideClick(draft) {
320
+ draft.updateTreasuryPromoIntroClosedByOutsideClickStatus = {
321
+ fetchState: 'In-Progress',
322
+ error: undefined,
323
+ };
324
+ },
325
+ updateTreasuryPromoIntroClosedByOutsideClickSuccess(draft) {
326
+ draft.updateTreasuryPromoIntroClosedByOutsideClickStatus = {
327
+ fetchState: 'Completed',
328
+ error: undefined,
329
+ };
330
+ },
331
+ updateTreasuryPromoIntroClosedByOutsideClickFailure(draft, action) {
332
+ draft.updateTreasuryPromoIntroClosedByOutsideClickStatus = {
333
+ fetchState: 'Error',
334
+ error: action.payload,
335
+ };
336
+ },
293
337
  clearTreasurySetupView(draft) {
294
338
  Object.assign(draft, initialState);
295
339
  },
296
340
  },
297
341
  });
298
- export const { fetchTreasuryFunds, fetchTreasurySetupView, fetchTreasurySetupViewSuccess, fetchTreasurySetupViewFailure, acceptTreasuryTerms, acceptTreasuryTermsSuccess, acceptTreasuryTermsFailure, clearTreasurySetupView, updateTreasuryFundsSuccess, updateTreasuryFundsFailure, updatePortfolioAllocation, updatePortfolioAllocationSuccess, updatePortfolioAllocationFailure, fetchPortfolioAllocation, fetchPortfolioAllocationSuccess, fetchPortfolioAllocationFailure, updateFundAllocationLocalData, updateTreasuryVideoViewed, updateTreasuryVideoViewedSuccess, updateTreasuryVideoViewedFailure, } = treasurySetupView.actions;
342
+ export const { fetchTreasuryFunds, fetchTreasurySetupView, fetchTreasurySetupViewSuccess, fetchTreasurySetupViewFailure, acceptTreasuryTerms, acceptTreasuryTermsSuccess, acceptTreasuryTermsFailure, clearTreasurySetupView, updateTreasuryFundsSuccess, updateTreasuryFundsFailure, updatePortfolioAllocation, updatePortfolioAllocationSuccess, updatePortfolioAllocationFailure, fetchPortfolioAllocation, fetchPortfolioAllocationSuccess, fetchPortfolioAllocationFailure, updateFundAllocationLocalData, updateTreasuryPromoIntroClosedByOutsideClick, updateTreasuryPromoIntroClosedByOutsideClickFailure, updateTreasuryPromoIntroClosedByOutsideClickSuccess, updateTreasuryPromoRemindMeLaterClicked, updateTreasuryPromoRemindMeLaterClickedFailure, updateTreasuryPromoRemindMeLaterClickedSuccess, updateTreasuryVideoViewed, updateTreasuryVideoViewedFailure, updateTreasuryVideoViewedSuccess, } = treasurySetupView.actions;
299
343
  export default treasurySetupView.reducer;
300
344
  function mapTreasuryFundsPayloadToFundData(fundsPayload) {
301
345
  return fundsPayload.funds.map((fund) => ({
package/lib/index.d.ts CHANGED
@@ -52,9 +52,7 @@ import { AccountReconciliationEntity, getAccountReconByAccountIdAndSelectedPerio
52
52
  import { BalanceDataStatusCodeType, BankStatusCodeType, RecommendedActionCodeType, ReconciliationStatusCodeType, StatementDataStatusCodeType, StatementStatusCodeType, TransactionsToReview } from './entity/accountRecon/accountReconState';
53
53
  import { getAddressByAddressId } from './entity/address/addressSelector';
54
54
  import { Address } from './entity/address/addressState';
55
- import { Actor, ActorType, AmountComparator, AmountCriteria, ApprovalActionType, ApprovalRule, ApprovalRuleState, Approvers, AttributeType, ConditionType, Criteria, DepartmentCriteria, RoleType, Step, StepOperatorType, VendorCriteria, toAttributeOrRoleTypeStrict, toAttributeTypeStrict, toRoleTypeStrict } from './entity/approvalRule/approvalRuleState';
56
- import { getAmountCriteria, getApprovalRulesByEntityType, getDepartmentCriteria, getFallbackApprovalRule, getVendorCriteria } from './entity/approvalRule/approvalRuleSelector';
57
- import { DetectRuleOverlapInput, RuleForOverlapCheck, RuleOverlap, detectRuleOverlap } from './entity/approvalRule/approvalRuleConflict';
55
+ import { Actor, ActorType, ApprovalActionType, ApprovalRule, ApprovalRuleState, Approvers, AttributeType, RoleType, Step, StepOperatorType, toAttributeOrRoleTypeStrict, toAttributeTypeStrict, toRoleTypeStrict } from './entity/approvalRule/approvalRuleState';
58
56
  import { BankAccount } from './entity/bankAccount/bankAccount';
59
57
  import { BillPayInfo, BillPaymentRefundStatus, BillPaymentRefundStatusCodeType, BillPaymentStatus, BillPaymentStatusCodeType, BillStage, BillStageCodeType, BillStatus, BillStatusCodeType, BillTransaction, DeletionSourceType, InternationalTransferFeeBearerPaymentMethod, toOutsideZeniPaymentModeType } from './entity/billPay/billTransaction/billTransactionState';
60
58
  import { Contact } from './entity/billPay/contact/contact';
@@ -263,7 +261,7 @@ import { PortfolioUIState } from './view/companyView/types/companyPortfolioViewS
263
261
  import { CompanyView } from './view/companyView/types/companyView';
264
262
  import { UserAndRole } from './view/companyView/types/userAndRole';
265
263
  import { clearTransferEntryRouteReplacement, createTransferEntry, createTransferEntryFailure, createTransferEntryReplacedTransaction, createTransferEntrySuccess, fetchAccountsForTransferFlow, resetCreateTransferEntryStatus } from './view/createTransferEntry/createTransferEntryReducer';
266
- import { fetchDashboard, updateTreasuryVideoClosed } from './view/dashboard/dashboardReducer';
264
+ import { fetchDashboard } from './view/dashboard/dashboardReducer';
267
265
  import { DashboardReport, getDashboard } from './view/dashboard/dashboardSelector';
268
266
  import { updateDashboardLayout } from './view/dashboardLayout/dashboardLayoutReducer';
269
267
  import uploadAccountStatementIntoDocumentAI from './view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper';
@@ -290,6 +288,7 @@ import { getExpenseAutomationFluxAnalysisView } from './view/expenseAutomationVi
290
288
  import { JEScheduledTransactionWithFailedEntries } from './view/expenseAutomationView/selectors/jeSchedulesViewSelector';
291
289
  import { getExpenseAutomationReconciliationView, isAccountReconReport } from './view/expenseAutomationView/selectors/reconciliationViewSelector';
292
290
  import { getExpenseAutomationTransactionView, getLastTransferEntryReplacement } from './view/expenseAutomationView/selectors/transactionCategorizationSelector';
291
+ import { TRANSACTION_FILTER_CATEGORIES, TransactionFilterAmountMatchingOperator, TransactionFilterCategory, TransactionFilterCategoryDropdownOption, TransactionFilterCategoryField, TransactionFilterEntityType, TransactionFilters, applyTransactionFilters } from './view/expenseAutomationView/transactionFilterHelpers';
293
292
  import { CompletedSubTab, DEFAULT_COMPLETED_SUB_TAB, toCompletedSubTab } from './view/expenseAutomationView/types/completedSubTab';
294
293
  import { FluxAnalysisActionType, FluxAnalysisReviewStatus, FluxAnalysisSortKey, FluxAnalysisViewUIState, FluxBalancesByMonth } from './view/expenseAutomationView/types/fluxAnalysisViewState';
295
294
  import { AccountSettingsLocalData, JEScheduleMainTab as ExpenseAutomationJEScheduleMainTab, JEScheduleSortKey as ExpenseAutomationJEScheduleSortKey, JESchedulesViewUIState as ExpenseAutomationJESchedulesViewUIState, JEScheduleLocalData, toJEScheduleMainTab as toExpenseAutomationJEScheduleMainTab, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey } from './view/expenseAutomationView/types/jeSchedulesViewState';
@@ -421,7 +420,7 @@ import { getInternationalSubConfigCodeKey } from './view/spendManagement/billPay
421
420
  import { AccountTypeSubConfigCodeKeyType, BILL_NEW_PAYMENT_METHODS, BillPayConfig, BillPaymentConfigCodeType, BillPaymentSubConfigCodeType, InternationalSubConfigCodeType, LOCAL_CURRENCY_INTERNATIONAL_METHOD_SUBTEXT, NEW_INTERNATIONAL_METHOD_SUBTEXT, SWIFT_OUR_INTERNATIONAL_METHOD_SUBTEXT, VendorCurrency } from './view/spendManagement/billPay/billPayConfig/billPayConfigState';
422
421
  import { clearBillPayReview, fetchDuplicateBill } from './view/spendManagement/billPay/billPayReview/billPayReviewReducer';
423
422
  import { BillPayReviewSelectorView, DuplicateBillsSelectorView, getReviewPageBillDetail } from './view/spendManagement/billPay/billPayReview/billPayReviewSelector';
424
- import { clearBillPaySetupApproverView, clearBillPaySetupApproverViewUpdateData, deleteBillPayApprovalRule, fetchBillPayApproversDetails, fetchBillPayApproversList, fetchBillPaySetupApproverView, initializeBillPaySetupApproverViewUpdateData, reorderBillPayApprovalRules, saveBillPaySetupApproverViewUpdateData, saveBillPaySetupApproverViewUpdates, setListeningToPusherEvent as setBillsSetupApproverViewListeningToPusherEvent } from './view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer';
423
+ import { clearBillPaySetupApproverView, clearBillPaySetupApproverViewUpdateData, deleteBillPayApprovalRule, fetchBillPayApproversDetails, fetchBillPayApproversList, fetchBillPaySetupApproverView, initializeBillPaySetupApproverViewUpdateData, saveBillPaySetupApproverViewUpdateData, saveBillPaySetupApproverViewUpdates, setListeningToPusherEvent as setBillsSetupApproverViewListeningToPusherEvent } from './view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer';
425
424
  import { getBillPaySetupApproverUpdateDataView, getBillPaySetupApproverView } from './view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector';
426
425
  import { ApprovalRuleWithUser as BillPayApprovalRuleWithUser, BillPaySetupApproverUpdateDataView, BillPaySetupApproverView } from './view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelectorTypes';
427
426
  import { BillPaySetupApproverViewState } from './view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewState';
@@ -501,7 +500,7 @@ import { RemiListDownloadReport, getRemiDownloadList } from './view/spendManagem
501
500
  import { fetchRemiList, fetchRemiListPerTab, updateRemiDetailSaveRemiCode, updateRemiListDownloadUIState, updateFilterResult as updateRemiListFilterResult, updateSearchResult as updateRemiListSearchResult, updateSubTab as updateRemiListSubTab, updateTab as updateRemiListTab, updateRemiListUIState } from './view/spendManagement/reimbursement/remiListView/remiListReducer';
502
501
  import { ReimbursementView, RemiListReport, getRemiList } from './view/spendManagement/reimbursement/remiListView/remiListSelector';
503
502
  import { REIMBURSEMENT_FILTER_CATEGORIES, REIMBURSEMENT_FILTER_CATEGORIES_RESTRICTED, ReimbursementFilterCategory, ReimbursementFilters, ReimbursementViewSortKey, RemiBulkSelectExceptionInfoType, RemiListUIState, RemiListViewFilterCategoryField, RemiSubTabType, RemiTabType, toRemiSubTabType, toRemiSubTabTypeStrict, toRemiTabType, toRemiTabTypeStrict } from './view/spendManagement/reimbursement/remiListView/remiListState';
504
- import { clearRemiSetupApproverView, clearRemiSetupApproverViewUpdateData, deleteRemiApprovalRule, fetchRemiApproversDetails, fetchRemiApproversList, fetchRemiSetupApproverView, initializeRemiSetupApproverViewUpdateData, reorderRemiApprovalRules, saveRemiSetupApproverViewUpdateData, saveRemiSetupApproverViewUpdates, setListeningToPusherEvent as setRemiSetupApproverViewListeningToPusherEvent } from './view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer';
503
+ import { clearRemiSetupApproverView, clearRemiSetupApproverViewUpdateData, deleteRemiApprovalRule, fetchRemiApproversDetails, fetchRemiApproversList, fetchRemiSetupApproverView, initializeRemiSetupApproverViewUpdateData, saveRemiSetupApproverViewUpdateData, saveRemiSetupApproverViewUpdates, setListeningToPusherEvent as setRemiSetupApproverViewListeningToPusherEvent } from './view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer';
505
504
  import { getRemiSetupApproverUpdateDataView, getRemiSetupApproverView } from './view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelector';
506
505
  import { ApprovalRuleWithUser as RemiApprovalRuleWithUser, RemiSetupApproverUpdateDataView, RemiSetupApproverView } from './view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelectorTypes';
507
506
  import { RemiSetupApproverViewState } from './view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewState';
@@ -511,8 +510,7 @@ import { MileageDenomination, MileageDetailsLocalData, RemiSetupViewLocalData, R
511
510
  import { approveOrRejectRemisBulkAction, autoReviewPendingApprovalRemis, cancelOrDeleteRemisBulkAction, clearAllRemisFromBulkActionList, clearRemiBulkActionView, incrementRemiBulkActionProcessedCount, removeRemiFromBulkActionList, reviewDraftRemisBulkAction, submitDraftRemisBulkAction, updateRemisBulkActionList } from './view/spendManagement/reimbursement/remisBulkActionView/remisBulkActionViewReducer';
512
511
  import { RemisBulkReviewView, getRemisBulkOperationProgress, getRemisBulkReviewView } from './view/spendManagement/reimbursement/remisBulkActionView/remisBulkActionViewSelector';
513
512
  import { BillPayFilterCategoryDropdownOption, CategoryCombinationOperator, FilterCategoryType, MatchingOperatorDropdownOption, ReimbursementFilterCategoryDropdownOption, SpendManagementFilterCategoryDropdownOption, SpendManagementFilterEntityType, SpendManagementFiltersType, TaskFilterCategoryDropdownOption, hideCreatedByFilter } from './view/spendManagement/spendManagementFilterHelpers';
514
- import { TRANSACTION_FILTER_CATEGORIES, TransactionFilterAmountMatchingOperator, TransactionFilterCategory, TransactionFilterCategoryDropdownOption, TransactionFilterCategoryField, TransactionFilterEntityType, TransactionFilters, applyTransactionFilters } from './view/expenseAutomationView/transactionFilterHelpers';
515
- import { acceptTreasuryTerms, clearTreasurySetupView, fetchPortfolioAllocation, fetchTreasuryFunds, fetchTreasurySetupView, updateFundAllocationLocalData, updatePortfolioAllocation, updateTreasuryVideoViewed } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer';
513
+ import { acceptTreasuryTerms, clearTreasurySetupView, fetchPortfolioAllocation, fetchTreasuryFunds, fetchTreasurySetupView, updateFundAllocationLocalData, updatePortfolioAllocation, updateTreasuryPromoIntroClosedByOutsideClick, updateTreasuryPromoRemindMeLaterClicked, updateTreasuryVideoViewed } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer';
516
514
  import { TreasuryBusinessVerificationDetails, TreasurySetupView, getTreasuryBusinessVerificationDetails, getTreasurySetupViewDetails } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewSelector';
517
515
  import { FundAllocationOption, FundComposition, FundData, getTreasuryFundsMaximumYield } from './view/spendManagement/treasury/treasurySetUp/treasurySetupViewState';
518
516
  import { clearCheckDeposit, depositCheck, updateLocalStore as updateCheckDepositLocalData, updateDepositToLocalData } from './view/spendManagement/zeniAccounts/checkDeposit/checkDepositReducer';
@@ -702,7 +700,7 @@ export { fetchRevenueClassesView, updateRevenueAccountViewMode, updateRevenueCla
702
700
  export { fetchCashPosition, updateCashPositionCOABalancesRange, updateCashPositionDownloadState, updateCashPositionUIState, getCashPosition, getCashPositionUIState, getCashPositionForSelectedRange, getCashPositionForHighlightedRange, CashPositionReport, CashPositionUIStateSelectorView, };
703
701
  export { fetchCashInCashOut, getCashInCashOut, getCashInCashOutUIState, getCashInCashOutForSelectedRange, getCashInCashOutForHighlightedRange, updateCashInCashOutCOABalancesRange, updateCashInCashOutDownloadState, updateCashInCashOutUIState, CashInCashOutReport, CashInCashOutUIStateSelectorView, CashInCashOutCalculatedSectionID, CashInCashOutSectionID, };
704
702
  export { fetchTopEx, updateTopExTimeFrame, updateTopExDownloadState, getTopExpenses, getTop6Expenses, getAllTopExpenses, TopExpenses, TopExReport, TopExAccount, TopExTimePeriodWithMetaData, };
705
- export { fetchDashboard, getDashboard, DashboardReport, updateTreasuryVideoClosed, };
703
+ export { fetchDashboard, getDashboard, DashboardReport };
706
704
  export { updateDashboardLayout };
707
705
  export { PandLWithForecastView, getPandLWithForecast, } from './view/profitAndLoss/pAndLWithForecast/pAndLWithForecastSelector';
708
706
  export { fetchProfitAndLoss, resetProfitAndLossNodeCollapseState, updateProfitAndLossUIState, ProfitAndLossState, ProfitAndLossUIState, getProfitAndLossReport, ProfitAndLossReport, getPandLReportFetchState, fetchProfitAndLossForTimeframe, };
@@ -811,9 +809,9 @@ export { RemiSetupViewState, RemiSetupViewLocalData, MileageDetailsLocalData, Mi
811
809
  export { PaymentAccount, Logo, VERIFIED_PAYMENT_ACCOUNT_PROVIDER_VERIFICATION_STATUS, };
812
810
  export { SubscriptionPaymentAccount };
813
811
  export { PreviousBillsSelectorView, InvoiceProcessingPayload, InvoiceProcessingResponse, isSuccessResponse, isInvalidSessionError, isAccessDeniedError, };
814
- export { Step, Actor as ApprovalRuleActor, ActorType, ApprovalActionType, StepOperatorType, ApprovalRuleState, ApprovalRule, AmountComparator, AmountCriteria, ConditionType, Criteria, DepartmentCriteria, VendorCriteria, AttributeType, Approvers, RoleType, EntityApprovalStatusState, EntityApprovalStatus, SpendManagementEntityType, SpendManagementEntityTypeWithOtherConnection, getAmountCriteria, getApprovalRulesByEntityType, getDepartmentCriteria, getFallbackApprovalRule, getVendorCriteria, toAttributeTypeStrict, toAttributeOrRoleTypeStrict, toRoleTypeStrict, DetectRuleOverlapInput, RuleForOverlapCheck, RuleOverlap, detectRuleOverlap, };
815
- export { ApprovalRuleUpdateData, ApprovalRuleCreateData, BillPayApprovalRuleWithUser, ApprovalUpdateActionType, ApproverViewUpdateData, BillPaySetupApproverViewState, BillPaySetupApproverView, BillPaySetupApproverUpdateDataView, getBillPaySetupApproverView, getBillPaySetupApproverUpdateDataView, fetchBillPaySetupApproverView, fetchBillPayApproversDetails, fetchBillPayApproversList, deleteBillPayApprovalRule, reorderBillPayApprovalRules, saveBillPaySetupApproverViewUpdateData, saveBillPaySetupApproverViewUpdates, setBillsSetupApproverViewListeningToPusherEvent, initializeBillPaySetupApproverViewUpdateData, clearBillPaySetupApproverViewUpdateData, clearBillPaySetupApproverView, };
816
- export { RemiApprovalRuleWithUser, RemiSetupApproverViewState, RemiSetupApproverView, RemiSetupApproverUpdateDataView, getRemiSetupApproverView, getRemiSetupApproverUpdateDataView, fetchRemiSetupApproverView, fetchRemiApproversList, fetchRemiApproversDetails, deleteRemiApprovalRule, reorderRemiApprovalRules, saveRemiSetupApproverViewUpdateData, saveRemiSetupApproverViewUpdates, initializeRemiSetupApproverViewUpdateData, setRemiSetupApproverViewListeningToPusherEvent, clearRemiSetupApproverViewUpdateData, clearRemiSetupApproverView, };
812
+ export { Step, Actor as ApprovalRuleActor, ActorType, ApprovalActionType, StepOperatorType, ApprovalRuleState, ApprovalRule, AttributeType, Approvers, RoleType, EntityApprovalStatusState, EntityApprovalStatus, SpendManagementEntityType, SpendManagementEntityTypeWithOtherConnection, toAttributeTypeStrict, toAttributeOrRoleTypeStrict, toRoleTypeStrict, };
813
+ export { ApprovalRuleUpdateData, ApprovalRuleCreateData, BillPayApprovalRuleWithUser, ApprovalUpdateActionType, ApproverViewUpdateData, BillPaySetupApproverViewState, BillPaySetupApproverView, BillPaySetupApproverUpdateDataView, getBillPaySetupApproverView, getBillPaySetupApproverUpdateDataView, fetchBillPaySetupApproverView, fetchBillPayApproversDetails, fetchBillPayApproversList, deleteBillPayApprovalRule, saveBillPaySetupApproverViewUpdateData, saveBillPaySetupApproverViewUpdates, setBillsSetupApproverViewListeningToPusherEvent, initializeBillPaySetupApproverViewUpdateData, clearBillPaySetupApproverViewUpdateData, clearBillPaySetupApproverView, };
814
+ export { RemiApprovalRuleWithUser, RemiSetupApproverViewState, RemiSetupApproverView, RemiSetupApproverUpdateDataView, getRemiSetupApproverView, getRemiSetupApproverUpdateDataView, fetchRemiSetupApproverView, fetchRemiApproversList, fetchRemiApproversDetails, deleteRemiApprovalRule, saveRemiSetupApproverViewUpdateData, saveRemiSetupApproverViewUpdates, initializeRemiSetupApproverViewUpdateData, setRemiSetupApproverViewListeningToPusherEvent, clearRemiSetupApproverViewUpdateData, clearRemiSetupApproverView, };
817
815
  export { RemiDetailViewSelector, getRemiDetailView, RemiActivity, RemiDetails, checkApproveRejectBtnShowForRemi, };
818
816
  export { RemiApprovalType, RemiDetailView, DuplicateLine };
819
817
  export { saveRealTimeApproval, updateIsEditModeRealTimeApprovals, RealTimeApprovalDetailLocalData, RealTimeStepsData, };
@@ -897,7 +895,7 @@ export { fetchCompanyTaskManagerView, fetchTaskManagerMetrics, CompanyTaskManage
897
895
  export { Country };
898
896
  export { InternationalWireVerificationState, VerificationFormField, VerificationFormLocalData, FieldValueType, fetchInternationalVerificationForm, submitInternationalVerificationForm, updateVerificationFormLocalData, getIntlWireVerificationView, InternationalWireVerificationView, };
899
897
  export { fetchExpressPayInitialDetails, updateExpressPayFormLocalData, submitExpressPay, resetExpressPayLocalData, ExpressPayFormLocalData, ExpressPayView, getExpressPayView, };
900
- export { acceptTreasuryTerms, fetchTreasurySetupView, clearTreasurySetupView, fetchTreasuryFunds, updatePortfolioAllocation, fetchPortfolioAllocation, updateFundAllocationLocalData, updateTreasuryVideoViewed, FundAllocationOption, FundComposition, FundData, TreasurySetupView, getTreasurySetupViewDetails, getTreasuryFundsMaximumYield, };
898
+ export { acceptTreasuryTerms, fetchTreasurySetupView, clearTreasurySetupView, fetchTreasuryFunds, updatePortfolioAllocation, fetchPortfolioAllocation, updateFundAllocationLocalData, updateTreasuryPromoIntroClosedByOutsideClick, updateTreasuryPromoRemindMeLaterClicked, updateTreasuryVideoViewed, FundAllocationOption, FundComposition, FundData, TreasurySetupView, getTreasurySetupViewDetails, getTreasuryFundsMaximumYield, };
901
899
  export { AiAccountantCustomer, AiAccountantCustomerState, AiAccountantEnrollment, AiAccountantEnrollmentStatus, AiAccountantJob, AiAccountantJobStatus, AiAccountantOperationType, getAllowedOperationsForStatus, toAiAccountantEnrollmentStatus, toAiAccountantJobStatus, toAiAccountantOperationType, } from './entity/aiAccountantCustomer/aiAccountantCustomerState';
902
900
  export { AiAccountantCustomerPayload, AiAccountantEnrollmentPayload, AiAccountantJobPayload, toAiAccountantCustomer, toAiAccountantEnrollment, toAiAccountantJob, } from './entity/aiAccountantCustomer/aiAccountantCustomerPayload';
903
901
  export { AiAccountantCancelOnboardingResponse, AiAccountantCancelOnboardingResponseData, AiAccountantCustomersResponse, AiAccountantCustomersResponseData, AiAccountantJobsResponse, AiAccountantJobsResponseData, AiAccountantTriggerJobResponse, AiAccountantTriggerJobResponseData, } from './view/aiAccountantView/aiAccountantViewPayload';