@zeniai/client-epic-state 4.19.54 → 4.19.55

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 (87) hide show
  1. package/lib/commonStateTypes/fileType.d.ts +1 -1
  2. package/lib/entity/chargeCardRepayment/chargeCardRepayment.d.ts +6 -1
  3. package/lib/entity/chargeCardRepayment/chargeCardRepayment.js +4 -1
  4. package/lib/entity/chargeCardRepayment/chargeCardRepaymentPayload.d.ts +8 -3
  5. package/lib/entity/chargeCardRepayment/chargeCardRepaymentPayload.js +5 -2
  6. package/lib/entity/chargeCardTransaction/chargeCardTransaction.d.ts +1 -2
  7. package/lib/entity/chargeCardTransaction/chargeCardTransactionPayload.d.ts +3 -1
  8. package/lib/entity/chargeCardTransaction/chargeCardTransactionPayload.js +26 -3
  9. package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.js +11 -7
  10. package/lib/epic.d.ts +3 -1
  11. package/lib/epic.js +3 -1
  12. package/lib/esm/entity/chargeCardRepayment/chargeCardRepayment.js +2 -0
  13. package/lib/esm/entity/chargeCardRepayment/chargeCardRepaymentPayload.js +6 -3
  14. package/lib/esm/entity/chargeCardTransaction/chargeCardTransactionPayload.js +25 -3
  15. package/lib/esm/entity/chargeCardTransaction/chargeCardTransactionReducer.js +11 -7
  16. package/lib/esm/epic.js +3 -1
  17. package/lib/esm/index.js +11 -5
  18. package/lib/esm/reducer.js +3 -0
  19. package/lib/esm/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.js +1 -1
  20. package/lib/esm/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementEpic.js +3 -1
  21. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer.js +10 -1
  22. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +4 -2
  23. package/lib/esm/view/spendManagement/billPay/billPaySetupApproverView/types/commonPayload.js +5 -2
  24. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistory.js +32 -0
  25. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryDownloadSelector.js +22 -0
  26. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryHelpers.js +79 -0
  27. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryPayload.js +1 -0
  28. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +83 -0
  29. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistorySelector.js +104 -0
  30. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentHistoryEpic.js +31 -0
  31. package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +31 -0
  32. package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailSelector.js +12 -6
  33. package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/fetchChargeCardRepaymentDetailEpic.js +2 -2
  34. package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/initiateChargeCardRepaymentEpic.js +5 -0
  35. package/lib/esm/view/spendManagement/chargeCards/chargeCardSetUp/epic/fetchChargeCardSetupViewEpic.js +1 -1
  36. package/lib/esm/view/spendManagement/commonSetup/setupViewSelector.js +15 -0
  37. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.js +10 -1
  38. package/lib/esm/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelector.js +4 -2
  39. package/lib/esm/view/spendManagement/spendManagementFilterHelpers.js +29 -2
  40. package/lib/esm/view/spendManagement/zeniAccounts/depositAccountList/fetchDepositAccountListEpic.js +5 -3
  41. package/lib/index.d.ts +12 -6
  42. package/lib/index.js +34 -13
  43. package/lib/reducer.d.ts +3 -0
  44. package/lib/reducer.js +3 -0
  45. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  46. package/lib/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.js +1 -1
  47. package/lib/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementEpic.js +3 -1
  48. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer.d.ts +1 -1
  49. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewReducer.js +11 -2
  50. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelector.js +4 -2
  51. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewSelectorTypes.d.ts +2 -0
  52. package/lib/view/spendManagement/billPay/billPaySetupApproverView/billPaySetupApproverViewState.d.ts +1 -0
  53. package/lib/view/spendManagement/billPay/billPaySetupApproverView/types/commonPayload.d.ts +1 -0
  54. package/lib/view/spendManagement/billPay/billPaySetupApproverView/types/commonPayload.js +5 -2
  55. package/lib/view/spendManagement/billPay/billPaySetupApproverView/types/commonState.d.ts +2 -0
  56. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistory.d.ts +50 -0
  57. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistory.js +35 -0
  58. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryDownloadSelector.d.ts +8 -0
  59. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryDownloadSelector.js +26 -0
  60. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryHelpers.d.ts +7 -0
  61. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryHelpers.js +87 -0
  62. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryPayload.d.ts +13 -0
  63. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryPayload.js +2 -0
  64. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.d.ts +19 -0
  65. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +87 -0
  66. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistorySelector.d.ts +24 -0
  67. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistorySelector.js +108 -0
  68. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentHistoryEpic.d.ts +9 -0
  69. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentHistoryEpic.js +35 -0
  70. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.d.ts +7 -0
  71. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +35 -0
  72. package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailSelector.js +10 -4
  73. package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/fetchChargeCardRepaymentDetailEpic.js +2 -2
  74. package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/initiateChargeCardRepaymentEpic.d.ts +2 -1
  75. package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/initiateChargeCardRepaymentEpic.js +5 -0
  76. package/lib/view/spendManagement/chargeCards/chargeCardSetUp/epic/fetchChargeCardSetupViewEpic.js +1 -1
  77. package/lib/view/spendManagement/commonSetup/setupViewSelector.d.ts +2 -1
  78. package/lib/view/spendManagement/commonSetup/setupViewSelector.js +17 -1
  79. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.d.ts +1 -1
  80. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewReducer.js +11 -2
  81. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelector.js +4 -2
  82. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewSelectorTypes.d.ts +2 -0
  83. package/lib/view/spendManagement/reimbursement/remiSetupApproverView/remiSetupApproverViewState.d.ts +1 -0
  84. package/lib/view/spendManagement/spendManagementFilterHelpers.d.ts +6 -4
  85. package/lib/view/spendManagement/spendManagementFilterHelpers.js +29 -2
  86. package/lib/view/spendManagement/zeniAccounts/depositAccountList/fetchDepositAccountListEpic.js +5 -3
  87. package/package.json +1 -1
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getChargeCardPaymentHistoryView = void 0;
4
+ const reduceFetchState_1 = require("../../../../commonStateTypes/reduceFetchState");
5
+ const chargeCardRepaymentSelector_1 = require("../../../../entity/chargeCardRepayment/chargeCardRepaymentSelector");
6
+ const userSelector_1 = require("../../../../entity/user/userSelector");
7
+ const setupViewSelector_1 = require("../../commonSetup/setupViewSelector");
8
+ const depositAccountSelector_1 = require("../../../../entity/depositAccount/depositAccountSelector");
9
+ const paymentAccountSelector_1 = require("../../../../entity/paymentAccount/paymentAccountSelector");
10
+ const depositAccountListSelector_1 = require("../../zeniAccounts/depositAccountList/depositAccountListSelector");
11
+ const paymentAccountListSelector_1 = require("../../zeniAccounts/paymentAccountList/paymentAccountListSelector");
12
+ const chargeCardPaymentHistoryHelpers_1 = require("./chargeCardPaymentHistoryHelpers");
13
+ const getChargeCardPaymentHistoryView = (state) => {
14
+ const { chargeCardPaymentHistoryState, chargeCardRepaymentState, userState, depositAccountState, paymentAccountState, depositAccountListState, paymentAccountListState, } = state;
15
+ const { creditAccountId, currencyCode, currencySymbol, filters, isAutoPayEnabled, repaymentHistoryIds, searchText, totalRepayments, uiState, fetchState, error, } = chargeCardPaymentHistoryState;
16
+ // Get the full repayment details from the entity state
17
+ const repaymentHistory = (0, chargeCardRepaymentSelector_1.getChargeCardRepaymentByIds)(chargeCardRepaymentState, repaymentHistoryIds);
18
+ const repaymentHistoryUserIds = Array.from(new Set(repaymentHistory.map((r) => r.paidById)));
19
+ // Get users first to enrich repayments
20
+ const repaymentHistoryUsers = (0, userSelector_1.getUsersByUserIds)(userState, repaymentHistoryUserIds);
21
+ // Create a map of userId -> User for quick lookup
22
+ const userMap = new Map();
23
+ repaymentHistoryUsers.forEach((user) => {
24
+ userMap.set(user.userId, user);
25
+ });
26
+ // Enrich repayments with paidByUser details
27
+ let repaymentHistoryWithUsers = repaymentHistory.map((repayment) => ({
28
+ ...repayment,
29
+ paidByUser: userMap.get(repayment.paidById),
30
+ }));
31
+ // Get deposit and payment accounts views (used for funding accounts and fetch state)
32
+ const depositAccountsView = (0, depositAccountListSelector_1.getAllDepositAccounts)(depositAccountState, depositAccountListState);
33
+ const paymentAccountsView = (0, paymentAccountListSelector_1.getAllPaymentAccounts)(paymentAccountState, paymentAccountListState);
34
+ // Extract unique funding account IDs from unfiltered repayment history (for accountInfoMap used in filter/sort)
35
+ const repaymentHistoryFundingAccountIdsForMap = Array.from(new Set(repaymentHistory
36
+ .map((repayment) => repayment.paymentAccountId)
37
+ .filter((id) => id !== undefined && id !== null)));
38
+ let fundingAccountsForMap = [];
39
+ if (repaymentHistoryFundingAccountIdsForMap.length > 0) {
40
+ const hasDepositData = depositAccountsView.fetchState === 'Completed';
41
+ const hasPaymentData = paymentAccountsView.fetchState === 'Completed';
42
+ if (hasDepositData || hasPaymentData) {
43
+ const matchingDepositAccountsForMap = hasDepositData
44
+ ? depositAccountsView.depositAccounts.filter((depositAccount) => repaymentHistoryFundingAccountIdsForMap.includes(depositAccount.id))
45
+ : [];
46
+ const matchingPaymentAccountsForMap = hasPaymentData
47
+ ? paymentAccountsView.paymentAccounts.filter((paymentAccount) => repaymentHistoryFundingAccountIdsForMap.includes(paymentAccount.paymentAccountId))
48
+ : [];
49
+ fundingAccountsForMap = (0, setupViewSelector_1.getAllFundingAccounts)(matchingDepositAccountsForMap, matchingPaymentAccountsForMap, paymentAccountListState.paymentAccountBalanceFetchStatus, false);
50
+ // Fallback: look up repayment-referenced accounts directly from entity stores
51
+ // in case they're not in the list state (e.g. race condition, stale list)
52
+ const existingIds = new Set(fundingAccountsForMap.map((fa) => fa.id).filter(Boolean));
53
+ for (const accountId of repaymentHistoryFundingAccountIdsForMap) {
54
+ if (existingIds.has(accountId)) {
55
+ continue;
56
+ }
57
+ const depositAccount = (0, depositAccountSelector_1.getDepositAccountByDepositAccountId)(depositAccountState, accountId);
58
+ if (depositAccount != null) {
59
+ fundingAccountsForMap.push((0, setupViewSelector_1.mapDepositAccToFundingAccount)(depositAccount));
60
+ existingIds.add(accountId);
61
+ continue;
62
+ }
63
+ const paymentAccount = (0, paymentAccountSelector_1.getPaymentAccountByPaymentAccountId)(paymentAccountState, accountId);
64
+ if (paymentAccount != null) {
65
+ fundingAccountsForMap.push((0, setupViewSelector_1.mapPaymentAccToFundingAccount)(paymentAccount, paymentAccountListState.paymentAccountBalanceFetchStatus));
66
+ existingIds.add(accountId);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ const accountInfoByAccountId = {};
72
+ fundingAccountsForMap.forEach((fa) => {
73
+ if (fa.id != null) {
74
+ accountInfoByAccountId[fa.id] = {
75
+ accountId: fa.id,
76
+ accountLogo: fa.logo,
77
+ accountType: fa.accType === 'depositAccount' ? 'depositAccount' : 'paymentAccount',
78
+ depositAccountLast4: fa.accountLast4,
79
+ depositAccountName: fa.label,
80
+ };
81
+ }
82
+ });
83
+ repaymentHistoryWithUsers = (0, chargeCardPaymentHistoryHelpers_1.applyPaymentHistoryFiltersSearchAndSort)(repaymentHistoryWithUsers, filters, searchText, uiState, accountInfoByAccountId);
84
+ const reducedFetchState = (0, reduceFetchState_1.reduceAllFetchState)([
85
+ { fetchState, error },
86
+ depositAccountsView,
87
+ paymentAccountsView,
88
+ ...Object.values(paymentAccountListState.paymentAccountBalanceFetchStatus),
89
+ ]);
90
+ return {
91
+ accountInfoByAccountId,
92
+ creditAccountId,
93
+ currencyCode,
94
+ currencySymbol,
95
+ filters,
96
+ isAutoPayEnabled,
97
+ repaymentHistory: repaymentHistoryWithUsers,
98
+ repaymentHistoryIds,
99
+ repaymentHistoryUsers,
100
+ searchText,
101
+ totalRepayments,
102
+ uiState,
103
+ fetchState: reducedFetchState.fetchState,
104
+ error: reducedFetchState.error,
105
+ version: 0,
106
+ };
107
+ };
108
+ exports.getChargeCardPaymentHistoryView = getChargeCardPaymentHistoryView;
@@ -0,0 +1,9 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { updateChargeCardRepayments } from '../../../../entity/chargeCardRepayment/chargeCardRepaymentReducer';
4
+ import { updateAllUsers } from '../../../../entity/user/userReducer';
5
+ import { RootState } from '../../../../reducer';
6
+ import { ZeniAPI } from '../../../../zeniAPI';
7
+ import { fetchChargeCardPaymentHistory, updateChargeCardPaymentHistory, updateChargeCardPaymentHistoryFailure } from './chargeCardPaymentHistoryReducer';
8
+ export type ActionType = ReturnType<typeof fetchChargeCardPaymentHistory> | ReturnType<typeof updateChargeCardPaymentHistory> | ReturnType<typeof updateChargeCardPaymentHistoryFailure> | ReturnType<typeof updateChargeCardRepayments> | ReturnType<typeof updateAllUsers>;
9
+ export declare const fetchChargeCardPaymentHistoryEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchChargeCardPaymentHistoryEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const chargeCardRepaymentReducer_1 = require("../../../../entity/chargeCardRepayment/chargeCardRepaymentReducer");
7
+ const userReducer_1 = require("../../../../entity/user/userReducer");
8
+ const responsePayload_1 = require("../../../../responsePayload");
9
+ const chargeCardPaymentHistoryReducer_1 = require("./chargeCardPaymentHistoryReducer");
10
+ const fetchChargeCardPaymentHistoryEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(chargeCardPaymentHistoryReducer_1.fetchChargeCardPaymentHistory.match), (0, operators_1.switchMap)(() => {
11
+ const queryParams = { include_history: true };
12
+ const queryString = encodeURIComponent(JSON.stringify(queryParams));
13
+ return zeniAPI
14
+ .getJSON(`${zeniAPI.apiEndPoints.cardMicroServiceBaseUrl}/1.0/cards/repayments?query=${queryString}`)
15
+ .pipe((0, operators_1.mergeMap)((response) => {
16
+ if ((0, responsePayload_1.isSuccessStatus)(response) && response.data != null) {
17
+ return (0, rxjs_1.of)(
18
+ // Store repayments FIRST before marking as completed
19
+ (0, chargeCardRepaymentReducer_1.updateChargeCardRepayments)(response.data.repayment_history), (0, userReducer_1.updateAllUsers)({
20
+ users: response.data.repayment_history
21
+ .map((repayment) => repayment.paid_by_user)
22
+ .filter((user) => user != null),
23
+ }),
24
+ // Mark as completed LAST, after all data is stored
25
+ (0, chargeCardPaymentHistoryReducer_1.updateChargeCardPaymentHistory)(response.data));
26
+ }
27
+ else {
28
+ return (0, rxjs_1.of)((0, chargeCardPaymentHistoryReducer_1.updateChargeCardPaymentHistoryFailure)(response.status));
29
+ }
30
+ }), (0, operators_1.catchError)((error) => {
31
+ return (0, rxjs_1.of)((0, chargeCardPaymentHistoryReducer_1.updateChargeCardPaymentHistoryFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch charge card payment history REST API call errored out' +
32
+ JSON.stringify(error))));
33
+ }));
34
+ }));
35
+ exports.fetchChargeCardPaymentHistoryEpic = fetchChargeCardPaymentHistoryEpic;
@@ -0,0 +1,7 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { RootState } from '../../../../reducer';
4
+ import { fetchChargeCardRepaymentDetail } from '../chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer';
5
+ import { fetchChargeCardPaymentHistory, fetchChargeCardPaymentPage } from './chargeCardPaymentHistoryReducer';
6
+ export type ActionType = ReturnType<typeof fetchChargeCardPaymentPage> | ReturnType<typeof fetchChargeCardPaymentHistory> | ReturnType<typeof fetchChargeCardRepaymentDetail>;
7
+ export declare const fetchChargeCardPaymentPageEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>) => Observable<ActionType>;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchChargeCardPaymentPageEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const chargeCardRepaymentDetailReducer_1 = require("../chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer");
7
+ const chargeCardPaymentHistoryReducer_1 = require("./chargeCardPaymentHistoryReducer");
8
+ const fetchChargeCardPaymentPageEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(chargeCardPaymentHistoryReducer_1.fetchChargeCardPaymentPage.match), (0, operators_1.mergeMap)((action) => {
9
+ const { cacheOverride } = action.payload;
10
+ const chargeCardPaymentPageActions = [];
11
+ const state = state$.value;
12
+ const chargeCardPaymentHistoryState = state.chargeCardPaymentHistoryState;
13
+ if (cacheOverride === true) {
14
+ chargeCardPaymentPageActions.push((0, chargeCardPaymentHistoryReducer_1.fetchChargeCardPaymentHistory)());
15
+ }
16
+ else {
17
+ if (chargeCardPaymentHistoryState.fetchState !== 'Completed' &&
18
+ chargeCardPaymentHistoryState.fetchState !== 'In-Progress') {
19
+ chargeCardPaymentPageActions.push((0, chargeCardPaymentHistoryReducer_1.fetchChargeCardPaymentHistory)());
20
+ }
21
+ }
22
+ // Fetch repayment detail if deposit or payment accounts are not fetched
23
+ //These are needed to get the transfer from accounts for the repayment history
24
+ const depositAccountListState = state.depositAccountListState;
25
+ const paymentAccountListState = state.paymentAccountListState;
26
+ const needsRepaymentDetailFetch = (depositAccountListState.fetchState !== 'Completed' &&
27
+ depositAccountListState.fetchState !== 'In-Progress') ||
28
+ (paymentAccountListState.fetchState !== 'Completed' &&
29
+ paymentAccountListState.fetchState !== 'In-Progress');
30
+ if (needsRepaymentDetailFetch) {
31
+ chargeCardPaymentPageActions.push((0, chargeCardRepaymentDetailReducer_1.fetchChargeCardRepaymentDetail)());
32
+ }
33
+ return (0, rxjs_1.concat)((0, rxjs_1.from)(chargeCardPaymentPageActions));
34
+ }));
35
+ exports.fetchChargeCardPaymentPageEpic = fetchChargeCardPaymentPageEpic;
@@ -11,11 +11,17 @@ const getChargeCardRepaymentDetail = (state) => {
11
11
  const depositAccountsView = (0, depositAccountListSelector_1.getAllDepositAccounts)(depositAccountState, depositAccountListState);
12
12
  const paymentAccountsView = (0, paymentAccountListSelector_1.getAllPaymentAccounts)(paymentAccountState, paymentAccountListState);
13
13
  let transferFromAccounts = [];
14
- if (depositAccountsView.fetchState === 'Completed' &&
15
- paymentAccountsView.fetchState === 'Completed') {
16
- transferFromAccounts = (0, setupViewSelector_1.getAllFundingAccounts)(depositAccountsView.depositAccounts, paymentAccountsView.paymentAccounts, paymentAccountListState.paymentAccountBalanceFetchStatus);
14
+ if (paymentAccountsView.fetchState === 'Completed') {
15
+ if (depositAccountsView.fetchState === 'Completed') {
16
+ transferFromAccounts = (0, setupViewSelector_1.getAllFundingAccounts)(depositAccountsView.depositAccounts, paymentAccountsView.paymentAccounts, paymentAccountListState.paymentAccountBalanceFetchStatus);
17
+ }
18
+ else {
19
+ const depositFundingFromLimit = Object.values(depositAccountState.depositAccountLimitForChargeCardByID ?? {}).map(setupViewSelector_1.mapDepositAccountWithLimitToFundingAccount);
20
+ const paymentFundingAccounts = (0, setupViewSelector_1.getAllFundingAccounts)([], paymentAccountsView.paymentAccounts, paymentAccountListState.paymentAccountBalanceFetchStatus);
21
+ transferFromAccounts = [...depositFundingFromLimit, ...paymentFundingAccounts];
22
+ }
17
23
  }
18
- const reducedFetchState = (0, reduceFetchState_1.reduceAllFetchState)([
24
+ const reducedFetchState = (0, reduceFetchState_1.reduceAnyCompletedFetchState)([
19
25
  depositAccountsView,
20
26
  paymentAccountsView,
21
27
  ...Object.values(paymentAccountListState.paymentAccountBalanceFetchStatus),
@@ -10,8 +10,8 @@ const fetchChargeCardRepaymentDetailEpic = (actions$, state$) => actions$.pipe((
10
10
  const fetchChargeCardRepaymentDetailActions = [];
11
11
  const state = state$.value;
12
12
  const depositAccounts = state.depositAccountListState;
13
- if (depositAccounts.fetchState !== 'In-Progress' &&
14
- depositAccounts.fetchState !== 'Completed') {
13
+ const willFetchDeposit = depositAccounts.fetchState !== 'In-Progress' && depositAccounts.fetchState !== 'Completed';
14
+ if (willFetchDeposit) {
15
15
  fetchChargeCardRepaymentDetailActions.push((0, depositAccountListReducer_1.fetchDepositAccountList)());
16
16
  }
17
17
  const paymentAccounts = state.paymentAccountListState;
@@ -4,7 +4,8 @@ import { updateChargeCardRepayment } from '../../../../entity/chargeCardRepaymen
4
4
  import { updateCompanyPrimaryAccount, updateEnableAutoPayForChargeCard } from '../../../../entity/company/companyReducer';
5
5
  import { RootState } from '../../../../reducer';
6
6
  import { ZeniAPI } from '../../../../zeniAPI';
7
+ import { addRepaymentToChargeCardPaymentHistory } from '../chargeCardPaymentHistory/chargeCardPaymentHistoryReducer';
7
8
  import { updateCreditAccountRepaymentAmountAndDate } from '../chargeCardList/chargeCardListReducer';
8
9
  import { initiateChargeCardRepayment, updateChargeCardRepaymentStatus } from './chargeCardRepaymentDetailReducer';
9
- export type ActionType = ReturnType<typeof initiateChargeCardRepayment> | ReturnType<typeof updateChargeCardRepayment> | ReturnType<typeof updateCreditAccountRepaymentAmountAndDate> | ReturnType<typeof updateChargeCardRepaymentStatus> | ReturnType<typeof updateCompanyPrimaryAccount> | ReturnType<typeof updateEnableAutoPayForChargeCard>;
10
+ export type ActionType = ReturnType<typeof addRepaymentToChargeCardPaymentHistory> | ReturnType<typeof initiateChargeCardRepayment> | ReturnType<typeof updateChargeCardRepayment> | ReturnType<typeof updateCreditAccountRepaymentAmountAndDate> | ReturnType<typeof updateChargeCardRepaymentStatus> | ReturnType<typeof updateCompanyPrimaryAccount> | ReturnType<typeof updateEnableAutoPayForChargeCard>;
10
11
  export declare const initiateChargeCardRepaymentEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -12,6 +12,7 @@ const setupViewSelector_1 = require("../../commonSetup/setupViewSelector");
12
12
  const helpers_1 = require("../../helpers");
13
13
  const depositAccountListSelector_1 = require("../../zeniAccounts/depositAccountList/depositAccountListSelector");
14
14
  const paymentAccountListSelector_1 = require("../../zeniAccounts/paymentAccountList/paymentAccountListSelector");
15
+ const chargeCardPaymentHistoryReducer_1 = require("../chargeCardPaymentHistory/chargeCardPaymentHistoryReducer");
15
16
  const chargeCardListReducer_1 = require("../chargeCardList/chargeCardListReducer");
16
17
  const chargeCardRepaymentDetailReducer_1 = require("./chargeCardRepaymentDetailReducer");
17
18
  const initiateChargeCardRepaymentEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(chargeCardRepaymentDetailReducer_1.initiateChargeCardRepayment.match), (0, operators_1.switchMap)((action) => {
@@ -39,6 +40,10 @@ const initiateChargeCardRepaymentEpic = (actions$, state$, zeniAPI) => actions$.
39
40
  if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
40
41
  const actions = [
41
42
  (0, chargeCardRepaymentReducer_1.updateChargeCardRepayment)(response.data.card_repayment),
43
+ (0, chargeCardPaymentHistoryReducer_1.addRepaymentToChargeCardPaymentHistory)({
44
+ cardRepaymentId: response.data.card_repayment.card_repayment_id,
45
+ zeniCreditAccountId: response.data.card_repayment.zeni_credit_account_id,
46
+ }),
42
47
  (0, chargeCardListReducer_1.updateCreditAccountRepaymentAmountAndDate)({
43
48
  amount: (0, amount_1.toAmount)(response.data.card_repayment.amount, response.data.card_repayment.currency_code, response.data.card_repayment.currency_symbol),
44
49
  date: (0, zeniDayJS_1.date)(response.data.card_repayment.repayment_date),
@@ -51,7 +51,7 @@ const fetchChargeCardSetupViewEpic = (actions$, state$, zeniAPI) => actions$.pip
51
51
  (0, depositAccountReducer_1.updateDepositAccounts)(response.data.deposit_accounts ?? []),
52
52
  (0, depositAccountListReducer_1.updateDepositAccountList)({
53
53
  data: response.data?.deposit_accounts ?? [],
54
- updateType: 'replace',
54
+ updateType: 'merge',
55
55
  }),
56
56
  (0, setupViewReducer_1.updateSetupViewLocalStoreData)({
57
57
  companyId: response.data.companies[0].company_id,
@@ -5,7 +5,7 @@ import { FetchStateAndError, ID } from '../../../commonStateTypes/common';
5
5
  import { AccountBase } from '../../../entity/account/accountState';
6
6
  import { CompanyBillPayInfo } from '../../../entity/company/companyStateTypes';
7
7
  import { Country } from '../../../entity/countryList/countryListState';
8
- import { DepositAccount } from '../../../entity/depositAccount/depositAccount';
8
+ import { DepositAccount, DepositAccountWithLimit } from '../../../entity/depositAccount/depositAccount';
9
9
  import { File } from '../../../entity/file/fileState';
10
10
  import { InstitutionDetails, Logo, PaymentAccount } from '../../../entity/paymentAccount/paymentAccountState';
11
11
  import { RootState } from '../../../reducer';
@@ -94,5 +94,6 @@ export declare function getBusinessVerificationDetails(state: RootState, company
94
94
  export declare const getCompanyAndIdentityDetails: (state: RootState, companyId: ID, companyAndIdentityDetails: CompanyAndIdentityDetails) => CompanyAndOfficerLocalData;
95
95
  export declare const getAllFundingAccounts: (depositAccounts: DepositAccount[], paymentAccounts: PaymentAccount[], paymentAccountBalanceFetchStatus: Record<ID, FetchStateAndError>, includeOnlyVerifiedAccounts?: boolean) => FundingAccount[];
96
96
  export declare const mapDepositAccToFundingAccount: (depositAcc: DepositAccount) => FundingAccount;
97
+ export declare const mapDepositAccountWithLimitToFundingAccount: (depositAcc: DepositAccountWithLimit) => FundingAccount;
97
98
  export declare const mapPaymentAccToFundingAccount: (paymentAcc: PaymentAccount, paymentAccountBalanceFetchStatus: Record<ID, FetchStateAndError>) => FundingAccount;
98
99
  export {};
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mapPaymentAccToFundingAccount = exports.mapDepositAccToFundingAccount = exports.getAllFundingAccounts = exports.getCompanyAndIdentityDetails = void 0;
3
+ exports.mapPaymentAccToFundingAccount = exports.mapDepositAccountWithLimitToFundingAccount = exports.mapDepositAccToFundingAccount = exports.getAllFundingAccounts = exports.getCompanyAndIdentityDetails = void 0;
4
4
  exports.getCommonSetupViewDetails = getCommonSetupViewDetails;
5
5
  exports.getBusinessVerificationDetails = getBusinessVerificationDetails;
6
6
  const accountSelector_1 = require("../../../entity/account/accountSelector");
@@ -227,6 +227,22 @@ const mapDepositAccToFundingAccount = (depositAcc) => ({
227
227
  accountLast4: depositAcc.accountLast4,
228
228
  });
229
229
  exports.mapDepositAccToFundingAccount = mapDepositAccToFundingAccount;
230
+ const mapDepositAccountWithLimitToFundingAccount = (depositAcc) => ({
231
+ id: depositAcc.id,
232
+ accType: 'depositAccount',
233
+ label: depositAcc.accountName,
234
+ maskedAccountNumber: depositAcc.maskedAccountNumber,
235
+ accountBalance: depositAcc.accountBalance,
236
+ logo: undefined,
237
+ zeniAccountId: depositAcc.zeniAccountId,
238
+ balanceFetchStatus: {
239
+ fetchState: 'Completed',
240
+ error: undefined,
241
+ },
242
+ createTime: depositAcc.createTime,
243
+ accountLast4: depositAcc.maskedAccountNumber.match(/(\d{4})$/)?.[1] ?? undefined,
244
+ });
245
+ exports.mapDepositAccountWithLimitToFundingAccount = mapDepositAccountWithLimitToFundingAccount;
230
246
  const mapPaymentAccToFundingAccount = (paymentAcc, paymentAccountBalanceFetchStatus) => ({
231
247
  id: paymentAcc.paymentAccountId,
232
248
  accType: 'paymentAccount',
@@ -40,6 +40,6 @@ export declare const fetchRemiSetupApproverView: import("@reduxjs/toolkit").Acti
40
40
  approvalRuleId: string | undefined;
41
41
  }, "remiSetupApproverView/initializeRemiSetupApproverViewUpdateData", never, never>, saveRemiSetupApproverViewUpdateData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[remiSetupApproverViewUpdateData: Partial<ApprovalRuleUpdateData | ApprovalRuleCreateData>], {
42
42
  remiSetupApproverViewUpdateData: Partial<ApprovalRuleUpdateData | ApprovalRuleCreateData>;
43
- }, "remiSetupApproverView/saveRemiSetupApproverViewUpdateData", never, never>, clearRemiSetupApproverViewUpdateData: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"remiSetupApproverView/clearRemiSetupApproverViewUpdateData">, clearRemiSetupApproverView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"remiSetupApproverView/clearRemiSetupApproverView">;
43
+ }, "remiSetupApproverView/saveRemiSetupApproverViewUpdateData", never, never>, setListeningToPusherEvent: import("@reduxjs/toolkit").ActionCreatorWithPayload<boolean, "remiSetupApproverView/setListeningToPusherEvent">, clearRemiSetupApproverViewUpdateData: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"remiSetupApproverView/clearRemiSetupApproverViewUpdateData">, clearRemiSetupApproverView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"remiSetupApproverView/clearRemiSetupApproverView">;
44
44
  declare const _default: import("redux").Reducer<RemiSetupApproverViewState>;
45
45
  export default _default;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.clearRemiSetupApproverView = exports.clearRemiSetupApproverViewUpdateData = exports.saveRemiSetupApproverViewUpdateData = exports.initializeRemiSetupApproverViewUpdateData = exports.saveRemiSetupApproverViewUpdatesFailure = exports.saveRemiSetupApproverViewUpdatesSuccess = exports.saveRemiSetupApproverViewUpdates = exports.deleteRemiApprovalRuleFailure = exports.deleteRemiApprovalRuleSuccess = exports.deleteRemiApprovalRule = exports.fetchRemiApproversListFailure = exports.fetchRemiApproversListSuccess = exports.fetchRemiApproversList = exports.fetchRemiApproversDetails = exports.fetchRemiSetupApproverViewFailure = exports.fetchRemiSetupApproverViewSuccess = exports.fetchRemiSetupApproverView = exports.initialState = void 0;
4
+ exports.clearRemiSetupApproverView = exports.clearRemiSetupApproverViewUpdateData = exports.setListeningToPusherEvent = exports.saveRemiSetupApproverViewUpdateData = exports.initializeRemiSetupApproverViewUpdateData = exports.saveRemiSetupApproverViewUpdatesFailure = exports.saveRemiSetupApproverViewUpdatesSuccess = exports.saveRemiSetupApproverViewUpdates = exports.deleteRemiApprovalRuleFailure = exports.deleteRemiApprovalRuleSuccess = exports.deleteRemiApprovalRule = exports.fetchRemiApproversListFailure = exports.fetchRemiApproversListSuccess = exports.fetchRemiApproversList = exports.fetchRemiApproversDetails = exports.fetchRemiSetupApproverViewFailure = exports.fetchRemiSetupApproverViewSuccess = exports.fetchRemiSetupApproverView = exports.initialState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
6
  exports.initialState = {
7
7
  fetchState: 'Not-Started',
8
8
  error: undefined,
9
+ listeningToPusherEvent: false,
9
10
  approverListState: {
10
11
  approverIds: [],
11
12
  attributes: [],
@@ -180,6 +181,11 @@ const remiSetupApproverView = (0, toolkit_1.createSlice)({
180
181
  reducer(draft, action) {
181
182
  const { approvalRuleIds } = action.payload;
182
183
  if (draft.remiSetupApproverViewUpdateData != null) {
184
+ if (draft.remiSetupApproverViewUpdateData.type === 'approval_update' &&
185
+ draft.remiSetupApproverViewUpdateData.data
186
+ ?.isApplicableOnPendingApprovalEntity === true) {
187
+ draft.listeningToPusherEvent = true;
188
+ }
183
189
  draft.remiSetupApproverViewUpdateData.updateStatus = {
184
190
  fetchState: 'Completed',
185
191
  error: undefined,
@@ -240,6 +246,9 @@ const remiSetupApproverView = (0, toolkit_1.createSlice)({
240
246
  return { payload: { remiSetupApproverViewUpdateData } };
241
247
  },
242
248
  },
249
+ setListeningToPusherEvent(draft, action) {
250
+ draft.listeningToPusherEvent = action.payload;
251
+ },
243
252
  clearRemiSetupApproverViewUpdateData(draft) {
244
253
  if (draft.remiSetupApproverViewUpdateData != null) {
245
254
  draft.remiSetupApproverViewUpdateData.data = undefined;
@@ -250,5 +259,5 @@ const remiSetupApproverView = (0, toolkit_1.createSlice)({
250
259
  },
251
260
  },
252
261
  });
253
- _a = remiSetupApproverView.actions, exports.fetchRemiSetupApproverView = _a.fetchRemiSetupApproverView, exports.fetchRemiSetupApproverViewSuccess = _a.fetchRemiSetupApproverViewSuccess, exports.fetchRemiSetupApproverViewFailure = _a.fetchRemiSetupApproverViewFailure, exports.fetchRemiApproversDetails = _a.fetchRemiApproversDetails, exports.fetchRemiApproversList = _a.fetchRemiApproversList, exports.fetchRemiApproversListSuccess = _a.fetchRemiApproversListSuccess, exports.fetchRemiApproversListFailure = _a.fetchRemiApproversListFailure, exports.deleteRemiApprovalRule = _a.deleteRemiApprovalRule, exports.deleteRemiApprovalRuleSuccess = _a.deleteRemiApprovalRuleSuccess, exports.deleteRemiApprovalRuleFailure = _a.deleteRemiApprovalRuleFailure, exports.saveRemiSetupApproverViewUpdates = _a.saveRemiSetupApproverViewUpdates, exports.saveRemiSetupApproverViewUpdatesSuccess = _a.saveRemiSetupApproverViewUpdatesSuccess, exports.saveRemiSetupApproverViewUpdatesFailure = _a.saveRemiSetupApproverViewUpdatesFailure, exports.initializeRemiSetupApproverViewUpdateData = _a.initializeRemiSetupApproverViewUpdateData, exports.saveRemiSetupApproverViewUpdateData = _a.saveRemiSetupApproverViewUpdateData, exports.clearRemiSetupApproverViewUpdateData = _a.clearRemiSetupApproverViewUpdateData, exports.clearRemiSetupApproverView = _a.clearRemiSetupApproverView;
262
+ _a = remiSetupApproverView.actions, exports.fetchRemiSetupApproverView = _a.fetchRemiSetupApproverView, exports.fetchRemiSetupApproverViewSuccess = _a.fetchRemiSetupApproverViewSuccess, exports.fetchRemiSetupApproverViewFailure = _a.fetchRemiSetupApproverViewFailure, exports.fetchRemiApproversDetails = _a.fetchRemiApproversDetails, exports.fetchRemiApproversList = _a.fetchRemiApproversList, exports.fetchRemiApproversListSuccess = _a.fetchRemiApproversListSuccess, exports.fetchRemiApproversListFailure = _a.fetchRemiApproversListFailure, exports.deleteRemiApprovalRule = _a.deleteRemiApprovalRule, exports.deleteRemiApprovalRuleSuccess = _a.deleteRemiApprovalRuleSuccess, exports.deleteRemiApprovalRuleFailure = _a.deleteRemiApprovalRuleFailure, exports.saveRemiSetupApproverViewUpdates = _a.saveRemiSetupApproverViewUpdates, exports.saveRemiSetupApproverViewUpdatesSuccess = _a.saveRemiSetupApproverViewUpdatesSuccess, exports.saveRemiSetupApproverViewUpdatesFailure = _a.saveRemiSetupApproverViewUpdatesFailure, exports.initializeRemiSetupApproverViewUpdateData = _a.initializeRemiSetupApproverViewUpdateData, exports.saveRemiSetupApproverViewUpdateData = _a.saveRemiSetupApproverViewUpdateData, exports.setListeningToPusherEvent = _a.setListeningToPusherEvent, exports.clearRemiSetupApproverViewUpdateData = _a.clearRemiSetupApproverViewUpdateData, exports.clearRemiSetupApproverView = _a.clearRemiSetupApproverView;
254
263
  exports.default = remiSetupApproverView.reducer;
@@ -13,7 +13,7 @@ const userSelector_1 = require("../../../../entity/user/userSelector");
13
13
  const userRoleSelector_1 = require("../../../../entity/userRole/userRoleSelector");
14
14
  const getRemiSetupApproverView = (state, filterAdmins = true) => {
15
15
  const { remiSetupApproverViewState, approvalRuleState, userState } = state;
16
- const { approvalRulesDeleteStatusById, approvalRuleIds, fetchState, error } = remiSetupApproverViewState;
16
+ const { approvalRulesDeleteStatusById, approvalRuleIds, fetchState, error, listeningToPusherEvent, } = remiSetupApproverViewState;
17
17
  const deleteStateList = Object.values(approvalRulesDeleteStatusById);
18
18
  const approvalRules = (0, approvalRuleSelector_1.getApprovalRulesByIds)(approvalRuleState, approvalRuleIds);
19
19
  const allApprovalRules = approvalRules.map((approvalRule) => {
@@ -48,11 +48,12 @@ const getRemiSetupApproverView = (state, filterAdmins = true) => {
48
48
  approvalRulesStatus,
49
49
  fetchState,
50
50
  error,
51
+ listeningToPusherEvent,
51
52
  };
52
53
  };
53
54
  exports.getRemiSetupApproverView = getRemiSetupApproverView;
54
55
  exports.getRemiSetupApproverUpdateDataView = (0, toolkit_1.createSelector)((state) => state.remiSetupApproverViewState, (state) => state.approvalRuleState, (state) => state.classState, (state) => state.classListState, (state) => state.userState, (state) => state.userRoleState, (remiSetupApproverViewState, approvalRuleState, classState, classListState, userState, userRoleState) => {
55
- const { approvalRuleIds, approverListState, remiSetupApproverViewUpdateData, fetchState, error, } = remiSetupApproverViewState;
56
+ const { approvalRuleIds, approverListState, remiSetupApproverViewUpdateData, fetchState, error, listeningToPusherEvent, } = remiSetupApproverViewState;
56
57
  const { approverIds, attributes, fetchStatus } = approverListState;
57
58
  const { fetchState: classListFetchState, error: classListFetchStateError, classIds, } = classListState;
58
59
  const allApprovalRules = (0, approvalRuleSelector_1.getApprovalRulesByIds)(approvalRuleState, approvalRuleIds).map((approvalRule) => {
@@ -120,5 +121,6 @@ exports.getRemiSetupApproverUpdateDataView = (0, toolkit_1.createSelector)((stat
120
121
  ]),
121
122
  fetchState,
122
123
  error,
124
+ listeningToPusherEvent,
123
125
  };
124
126
  });
@@ -17,6 +17,7 @@ export interface RemiSetupApproverView extends SelectorView {
17
17
  allApprovalRules: ApprovalRuleWithUser[];
18
18
  approvalRulesStatus: AllowedValueWithCode;
19
19
  deleteStatus: FetchStateAndError;
20
+ listeningToPusherEvent?: boolean;
20
21
  }
21
22
  export interface RemiSetupApproverUpdateDataView extends SelectorView {
22
23
  allAccountingClasses: Class[];
@@ -26,5 +27,6 @@ export interface RemiSetupApproverUpdateDataView extends SelectorView {
26
27
  approversDetailsFetchStatus: FetchStateAndError;
27
28
  filteredApprovers: UserAndRole[];
28
29
  filteredAttributes: AttributeType[];
30
+ listeningToPusherEvent?: boolean;
29
31
  remiSetupApproverViewUpdateData?: ApproverViewUpdateData;
30
32
  }
@@ -10,5 +10,6 @@ export interface RemiSetupApproverViewState extends FetchedState {
10
10
  fetchStatus: FetchStateAndError;
11
11
  attributeSubTypeToUserIdMapping?: Record<AttributeType, ID>;
12
12
  };
13
+ listeningToPusherEvent?: boolean;
13
14
  remiSetupApproverViewUpdateData?: ApproverViewUpdateData;
14
15
  }
@@ -6,10 +6,12 @@ import { TaskListFilterCategoryField, TaskListFilters } from '../taskManager/tas
6
6
  import { TaskWithUserDetails } from '../taskManager/taskListView/taskListSelector';
7
7
  import { BillTransactionView } from './billPay/billList/billListSelector';
8
8
  import { BillListViewFilterCategoryField, BillPayFilters } from './billPay/billList/billListState';
9
+ import { PaymentHistoryFilterCategoryDropdownOption, PaymentHistoryFilters } from './chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistory';
10
+ import { ChargeCardRepaymentWithUser } from './chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistorySelector';
9
11
  import { ReimbursementView } from './reimbursement/remiListView/remiListSelector';
10
12
  import { ReimbursementFilters, RemiListViewFilterCategoryField } from './reimbursement/remiListView/remiListState';
11
- export type SpendManagementFiltersType = BillPayFilters | ReimbursementFilters | TaskListFilters;
12
- export type SpendManagementFilterEntityType = 'bill_pay' | 'reimbursement' | 'task_management';
13
+ export type SpendManagementFiltersType = BillPayFilters | ReimbursementFilters | TaskListFilters | PaymentHistoryFilters;
14
+ export type SpendManagementFilterEntityType = 'bill_pay' | 'reimbursement' | 'task_management' | 'charge_card_payment_history';
13
15
  export type FilterCategoryType = 'searchAutocomplete' | 'user' | 'dateRange' | 'numberRange' | 'dropdown';
14
16
  export interface MatchingOperatorDropdownOption {
15
17
  label: 'is' | 'is not';
@@ -31,9 +33,9 @@ export interface TaskFilterCategoryDropdownOption {
31
33
  multiple?: boolean;
32
34
  type?: FilterCategoryType;
33
35
  }
34
- export type SpendManagementFilterCategoryDropdownOption = BillPayFilterCategoryDropdownOption | ReimbursementFilterCategoryDropdownOption | TaskFilterCategoryDropdownOption;
36
+ export type SpendManagementFilterCategoryDropdownOption = BillPayFilterCategoryDropdownOption | ReimbursementFilterCategoryDropdownOption | TaskFilterCategoryDropdownOption | PaymentHistoryFilterCategoryDropdownOption;
35
37
  export type FilterCategoryValueType = string | number | ZeniDate;
36
- export declare const applyAdvancedFiltersOnList: (entity: SpendManagementFilterEntityType, allItems: BillTransactionView[] | ReimbursementView[] | TaskWithUserDetails[], filters?: BillPayFilters | ReimbursementFilters | TaskListFilters, filteredItems?: (BillTransactionView | ReimbursementView | TaskWithUserDetails)[], index?: number) => (BillTransactionView | ReimbursementView | TaskWithUserDetails)[];
38
+ export declare const applyAdvancedFiltersOnList: (entity: SpendManagementFilterEntityType, allItems: BillTransactionView[] | ReimbursementView[] | TaskWithUserDetails[] | ChargeCardRepaymentWithUser[], filters?: BillPayFilters | ReimbursementFilters | TaskListFilters | PaymentHistoryFilters, filteredItems?: (BillTransactionView | ReimbursementView | TaskWithUserDetails | ChargeCardRepaymentWithUser)[], index?: number) => (BillTransactionView | ReimbursementView | TaskWithUserDetails | ChargeCardRepaymentWithUser)[];
37
39
  export declare const isBillListDownloadable: (state: RootState, currentTimePeriod: TimePeriod) => boolean;
38
40
  export declare const isRemiListDownloadable: (state: RootState, currentTimePeriod: TimePeriod) => boolean;
39
41
  export declare const hideCreatedByFilter: (userRole: UserRoleType[]) => boolean;
@@ -72,10 +72,17 @@ const filterItemOnCategoriesWithMultipleValues = (categoryValue, currentFilter)
72
72
  return true;
73
73
  }
74
74
  };
75
+ const getItemId = (item) => {
76
+ if ('cardRepaymentId' in item) {
77
+ return item.cardRepaymentId;
78
+ }
79
+ return item
80
+ .id;
81
+ };
75
82
  const removeDuplicatesFromList = (list) => {
76
83
  const foundIds = [];
77
84
  return list.filter((item) => {
78
- const itemId = item.id;
85
+ const itemId = getItemId(item);
79
86
  if (foundIds.indexOf(itemId) === -1) {
80
87
  foundIds.push(itemId);
81
88
  return true;
@@ -110,7 +117,9 @@ const applyAdvancedFiltersOnList = (entity, allItems, filters, filteredItems = [
110
117
  ? getCategoryValueForBill(key, item)
111
118
  : entity === 'reimbursement'
112
119
  ? getCategoryValueForReimbursement(key, item)
113
- : getCategoryValueForTaskList(key, item);
120
+ : entity === 'task_management'
121
+ ? getCategoryValueForTaskList(key, item)
122
+ : getCategoryValueForPaymentHistory(key, item);
114
123
  if (categoryValue == null) {
115
124
  if (currentFilter.matchingOperator === 'not-equal') {
116
125
  return true;
@@ -130,6 +139,7 @@ const applyAdvancedFiltersOnList = (entity, allItems, filters, filteredItems = [
130
139
  'dueDate',
131
140
  'creationDate',
132
141
  'receiptDate',
142
+ 'repaymentDate',
133
143
  ]);
134
144
  }
135
145
  });
@@ -231,6 +241,23 @@ const getCategoryValueForReimbursement = (key, reimbursement) => {
231
241
  return undefined;
232
242
  }
233
243
  };
244
+ const getCategoryValueForPaymentHistory = (key, repayment) => {
245
+ switch (key) {
246
+ case 'repaymentDate':
247
+ return repayment.repaymentDate;
248
+ case 'sourceAccount': {
249
+ return repayment.paymentAccountId;
250
+ }
251
+ case 'status':
252
+ return repayment.status;
253
+ case 'initiatedBy':
254
+ return repayment.repaymentType === 'scheduled'
255
+ ? 'autopay'
256
+ : repayment.paidById;
257
+ default:
258
+ return undefined;
259
+ }
260
+ };
234
261
  const isBillListDownloadable = (state, currentTimePeriod) => {
235
262
  const { billListState, billTransactionState, entityApprovalStatusState, userState, } = state;
236
263
  const keys = billListState_1.ALL_BILL_TABS.filter((tab) => tab !== 'draft').map((tab) => (0, billListState_1.getBillListKey)(currentTimePeriod, tab));
@@ -11,11 +11,13 @@ const fetchDepositAccountListEpic = (actions$, _state$, zeniAPI) => actions$.pip
11
11
  return zeniAPI
12
12
  .getJSON(`${zeniAPI.apiEndPoints.bankingMicroServiceBaseUrl}/1.0/deposit-accounts?query=${encodeURIComponent(`{"is_include_deposit_accounts_summary":true}`)}`)
13
13
  .pipe((0, operators_1.mergeMap)((response) => {
14
- if ((0, responsePayload_1.isSuccessResponse)(response)) {
15
- return (0, rxjs_1.of)((0, depositAccountReducer_1.updateDepositAccounts)(response.data?.deposit_accounts ?? []), (0, zeniAccountListReducer_1.updateZeniAccountsSummary)({
14
+ const isSuccess = (0, responsePayload_1.isSuccessResponse)(response);
15
+ if (isSuccess) {
16
+ const depositAccounts = response.data?.deposit_accounts ?? [];
17
+ return (0, rxjs_1.of)((0, depositAccountReducer_1.updateDepositAccounts)(depositAccounts), (0, zeniAccountListReducer_1.updateZeniAccountsSummary)({
16
18
  summaryPayload: response.data?.all_deposit_accounts_summary,
17
19
  }), (0, depositAccountListReducer_1.updateDepositAccountList)({
18
- data: response.data?.deposit_accounts ?? [],
20
+ data: depositAccounts,
19
21
  updateType: 'replace',
20
22
  }));
21
23
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "4.19.54",
3
+ "version": "4.19.55",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",