@zeniai/client-epic-state 5.0.66-betaAK3 → 5.0.66-betaAR2

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 (86) hide show
  1. package/lib/commonStateTypes/amount.d.ts +0 -1
  2. package/lib/commonStateTypes/amount.js +1 -3
  3. package/lib/entity/account/accountSelector.d.ts +20 -1
  4. package/lib/entity/account/accountSelector.js +35 -1
  5. package/lib/entity/account/accountState.d.ts +5 -0
  6. package/lib/entity/account/accountState.js +11 -4
  7. package/lib/entity/class/classSelector.d.ts +5 -0
  8. package/lib/entity/class/classSelector.js +8 -0
  9. package/lib/epic.d.ts +1 -4
  10. package/lib/epic.js +1 -4
  11. package/lib/esm/commonStateTypes/amount.js +0 -1
  12. package/lib/esm/entity/account/accountSelector.js +33 -1
  13. package/lib/esm/entity/account/accountState.js +7 -1
  14. package/lib/esm/entity/class/classSelector.js +7 -0
  15. package/lib/esm/epic.js +1 -4
  16. package/lib/esm/index.js +10 -6
  17. package/lib/esm/reducer.js +0 -6
  18. package/lib/esm/view/companyHealthMetricView/companyHealthMetricViewSelector.js +1 -1
  19. package/lib/esm/view/companyView/helpers/cockpitHelpers.js +1 -1
  20. package/lib/esm/view/companyView/selector/companyManagementViewSelector.js +1 -1
  21. package/lib/esm/view/companyView/selector/companyPortfolioViewSelector.js +1 -1
  22. package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +11 -1
  23. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +58 -8
  24. package/lib/esm/view/expenseAutomationView/transactionFilterHelpers.js +193 -0
  25. package/lib/esm/view/spendManagement/spendManagementFilterHelpers.js +4 -2
  26. package/lib/esm/view/subscriptionView/subscriptionViewSelector.js +1 -1
  27. package/lib/esm/view/taskManager/taskListView/taskListReducer.js +1 -1
  28. package/lib/index.d.ts +7 -8
  29. package/lib/index.js +40 -37
  30. package/lib/reducer.d.ts +0 -6
  31. package/lib/reducer.js +0 -6
  32. package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
  33. package/lib/view/companyHealthMetricView/companyHealthMetricViewSelector.js +1 -1
  34. package/lib/view/companyView/helpers/cockpitHelpers.js +1 -1
  35. package/lib/view/companyView/selector/companyManagementViewSelector.js +1 -1
  36. package/lib/view/companyView/selector/companyPortfolioViewSelector.js +1 -1
  37. package/lib/view/companyView/types/cockpitTypes.d.ts +1 -1
  38. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +5 -1
  39. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +12 -2
  40. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.d.ts +4 -1
  41. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +60 -8
  42. package/lib/view/expenseAutomationView/transactionFilterHelpers.d.ts +65 -0
  43. package/lib/view/expenseAutomationView/transactionFilterHelpers.js +197 -0
  44. package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +2 -0
  45. package/lib/view/spendManagement/billPay/billList/billListState.d.ts +1 -1
  46. package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistory.d.ts +1 -1
  47. package/lib/view/spendManagement/reimbursement/remiListView/remiListState.d.ts +1 -1
  48. package/lib/view/spendManagement/spendManagementFilterHelpers.d.ts +1 -1
  49. package/lib/view/spendManagement/spendManagementFilterHelpers.js +4 -2
  50. package/lib/view/subscriptionView/subscriptionViewSelector.js +1 -1
  51. package/lib/view/taskManager/taskListView/taskList.d.ts +1 -1
  52. package/lib/view/taskManager/taskListView/taskListReducer.js +1 -1
  53. package/package.json +1 -1
  54. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.d.ts +0 -11
  55. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.js +0 -23
  56. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.d.ts +0 -6
  57. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.js +0 -31
  58. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.d.ts +0 -4
  59. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.js +0 -16
  60. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventState.d.ts +0 -13
  61. package/lib/entity/upcomingPaymentEvent/upcomingPaymentEventState.js +0 -2
  62. package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventPayload.js +0 -19
  63. package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventReducer.js +0 -27
  64. package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventSelector.js +0 -11
  65. package/lib/esm/entity/upcomingPaymentEvent/upcomingPaymentEventState.js +0 -1
  66. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +0 -1
  67. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +0 -88
  68. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +0 -93
  69. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +0 -14
  70. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +0 -6
  71. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +0 -35
  72. package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.js +0 -22
  73. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.d.ts +0 -10
  74. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +0 -2
  75. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.d.ts +0 -20
  76. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +0 -92
  77. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.d.ts +0 -20
  78. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +0 -98
  79. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.d.ts +0 -21
  80. package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +0 -17
  81. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.d.ts +0 -5
  82. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +0 -10
  83. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.d.ts +0 -8
  84. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +0 -39
  85. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.d.ts +0 -8
  86. package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchUpcomingPaymentEventsEpic.js +0 -26
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.0.66-betaAK3",
3
+ "version": "5.0.66-betaAR2",
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",
@@ -1,11 +0,0 @@
1
- import { UpcomingPaymentEvent } from './upcomingPaymentEventState';
2
- export interface UpcomingPaymentEventPayload {
3
- amount: number;
4
- currency_code: string;
5
- id: string;
6
- payment_date: string;
7
- type: 'reimbursement' | 'bill';
8
- report_title?: string;
9
- vendor_name?: string;
10
- }
11
- export declare const toUpcomingPaymentEvent: (payload: UpcomingPaymentEventPayload) => UpcomingPaymentEvent;
@@ -1,23 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.toUpcomingPaymentEvent = void 0;
4
- const amount_1 = require("../../commonStateTypes/amount");
5
- const zeniDayJS_1 = require("../../zeniDayJS");
6
- const getTitle = (payload) => {
7
- switch (payload.type) {
8
- case 'bill':
9
- return payload.vendor_name ?? '';
10
- case 'reimbursement':
11
- return payload.report_title ?? '';
12
- default:
13
- return '';
14
- }
15
- };
16
- const toUpcomingPaymentEvent = (payload) => ({
17
- amount: (0, amount_1.toAmount)(payload.amount, payload.currency_code, payload.currency_code),
18
- id: payload.id,
19
- paymentDate: (0, zeniDayJS_1.date)(payload.payment_date),
20
- title: getTitle(payload),
21
- type: payload.type,
22
- });
23
- exports.toUpcomingPaymentEvent = toUpcomingPaymentEvent;
@@ -1,6 +0,0 @@
1
- import { UpcomingPaymentEventPayload } from './upcomingPaymentEventPayload';
2
- import { UpcomingPaymentEventState } from './upcomingPaymentEventState';
3
- export declare const initialState: UpcomingPaymentEventState;
4
- export declare const updateUpcomingPaymentEvents: import("@reduxjs/toolkit").ActionCreatorWithPayload<UpcomingPaymentEventPayload[], "upcomingPaymentEvent/updateUpcomingPaymentEvents">, removeUpcomingPaymentEvent: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "upcomingPaymentEvent/removeUpcomingPaymentEvent">, clearAllUpcomingPaymentEvents: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"upcomingPaymentEvent/clearAllUpcomingPaymentEvents">;
5
- declare const _default: import("redux").Reducer<UpcomingPaymentEventState>;
6
- export default _default;
@@ -1,31 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.clearAllUpcomingPaymentEvents = exports.removeUpcomingPaymentEvent = exports.updateUpcomingPaymentEvents = exports.initialState = void 0;
5
- const toolkit_1 = require("@reduxjs/toolkit");
6
- const upcomingPaymentEventPayload_1 = require("./upcomingPaymentEventPayload");
7
- exports.initialState = {
8
- eventsById: {},
9
- };
10
- const upcomingPaymentEvent = (0, toolkit_1.createSlice)({
11
- name: 'upcomingPaymentEvent',
12
- initialState: exports.initialState,
13
- reducers: {
14
- updateUpcomingPaymentEvents(draft, action) {
15
- action.payload.forEach((payload) => {
16
- const event = (0, upcomingPaymentEventPayload_1.toUpcomingPaymentEvent)(payload);
17
- if (event != null) {
18
- draft.eventsById[event.id] = event;
19
- }
20
- });
21
- },
22
- removeUpcomingPaymentEvent(draft, action) {
23
- delete draft.eventsById[action.payload];
24
- },
25
- clearAllUpcomingPaymentEvents(draft) {
26
- draft.eventsById = {};
27
- },
28
- },
29
- });
30
- _a = upcomingPaymentEvent.actions, exports.updateUpcomingPaymentEvents = _a.updateUpcomingPaymentEvents, exports.removeUpcomingPaymentEvent = _a.removeUpcomingPaymentEvent, exports.clearAllUpcomingPaymentEvents = _a.clearAllUpcomingPaymentEvents;
31
- exports.default = upcomingPaymentEvent.reducer;
@@ -1,4 +0,0 @@
1
- import { ID } from '../../commonStateTypes/common';
2
- import { UpcomingPaymentEvent, UpcomingPaymentEventState } from './upcomingPaymentEventState';
3
- export declare const getUpcomingPaymentEventById: (state: UpcomingPaymentEventState, id: ID) => UpcomingPaymentEvent | undefined;
4
- export declare const getUpcomingPaymentEventsByIds: (state: UpcomingPaymentEventState, ids: ID[]) => UpcomingPaymentEvent[];
@@ -1,16 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getUpcomingPaymentEventsByIds = exports.getUpcomingPaymentEventById = void 0;
4
- const getUpcomingPaymentEventById = (state, id) => state.eventsById[id];
5
- exports.getUpcomingPaymentEventById = getUpcomingPaymentEventById;
6
- const getUpcomingPaymentEventsByIds = (state, ids) => {
7
- const events = [];
8
- ids.forEach((id) => {
9
- const event = state.eventsById[id];
10
- if (event != null) {
11
- events.push(event);
12
- }
13
- });
14
- return events;
15
- };
16
- exports.getUpcomingPaymentEventsByIds = getUpcomingPaymentEventsByIds;
@@ -1,13 +0,0 @@
1
- import { Amount } from '../../commonStateTypes/amount';
2
- import { ID } from '../../commonStateTypes/common';
3
- import { ZeniDate } from '../../zeniDayJS';
4
- export interface UpcomingPaymentEvent {
5
- amount: Amount;
6
- id: ID;
7
- paymentDate: ZeniDate;
8
- title: string;
9
- type: 'reimbursement' | 'bill';
10
- }
11
- export interface UpcomingPaymentEventState {
12
- eventsById: Record<ID, UpcomingPaymentEvent>;
13
- }
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,19 +0,0 @@
1
- import { toAmount } from '../../commonStateTypes/amount';
2
- import { date } from '../../zeniDayJS';
3
- const getTitle = (payload) => {
4
- switch (payload.type) {
5
- case 'bill':
6
- return payload.vendor_name ?? '';
7
- case 'reimbursement':
8
- return payload.report_title ?? '';
9
- default:
10
- return '';
11
- }
12
- };
13
- export const toUpcomingPaymentEvent = (payload) => ({
14
- amount: toAmount(payload.amount, payload.currency_code, payload.currency_code),
15
- id: payload.id,
16
- paymentDate: date(payload.payment_date),
17
- title: getTitle(payload),
18
- type: payload.type,
19
- });
@@ -1,27 +0,0 @@
1
- import { createSlice } from '@reduxjs/toolkit';
2
- import { toUpcomingPaymentEvent, } from './upcomingPaymentEventPayload';
3
- export const initialState = {
4
- eventsById: {},
5
- };
6
- const upcomingPaymentEvent = createSlice({
7
- name: 'upcomingPaymentEvent',
8
- initialState,
9
- reducers: {
10
- updateUpcomingPaymentEvents(draft, action) {
11
- action.payload.forEach((payload) => {
12
- const event = toUpcomingPaymentEvent(payload);
13
- if (event != null) {
14
- draft.eventsById[event.id] = event;
15
- }
16
- });
17
- },
18
- removeUpcomingPaymentEvent(draft, action) {
19
- delete draft.eventsById[action.payload];
20
- },
21
- clearAllUpcomingPaymentEvents(draft) {
22
- draft.eventsById = {};
23
- },
24
- },
25
- });
26
- export const { updateUpcomingPaymentEvents, removeUpcomingPaymentEvent, clearAllUpcomingPaymentEvents, } = upcomingPaymentEvent.actions;
27
- export default upcomingPaymentEvent.reducer;
@@ -1,11 +0,0 @@
1
- export const getUpcomingPaymentEventById = (state, id) => state.eventsById[id];
2
- export const getUpcomingPaymentEventsByIds = (state, ids) => {
3
- const events = [];
4
- ids.forEach((id) => {
5
- const event = state.eventsById[id];
6
- if (event != null) {
7
- events.push(event);
8
- }
9
- });
10
- return events;
11
- };
@@ -1,88 +0,0 @@
1
- import { createSlice } from '@reduxjs/toolkit';
2
- import { initialCashManagementBannerState, initialUpcomingPaymentEventsListState, } from './cashManagementOverviewState';
3
- export const initialState = {
4
- banner: initialCashManagementBannerState,
5
- upcomingPaymentEvents: initialUpcomingPaymentEventsListState,
6
- fetchState: 'Not-Started',
7
- error: undefined,
8
- hasValidState() {
9
- return this.fetchState == 'Completed';
10
- },
11
- };
12
- const cashManagementOverview = createSlice({
13
- name: 'cashManagementOverview',
14
- initialState,
15
- reducers: {
16
- fetchCashManagementOverviewPage: {
17
- reducer(
18
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
19
- _draft,
20
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
21
- _action) {
22
- // do nothing - the corresponding epic listens to this action and fans out
23
- },
24
- prepare(cacheOverride) {
25
- return { payload: { cacheOverride } };
26
- },
27
- },
28
- fetchUpcomingPaymentEvents(draft) {
29
- draft.upcomingPaymentEvents = {
30
- ...draft.upcomingPaymentEvents,
31
- fetchState: 'In-Progress',
32
- error: undefined,
33
- };
34
- },
35
- updateUpcomingPaymentEventsList(draft, action) {
36
- const { data } = action.payload;
37
- const eventIds = [];
38
- data.events.forEach((payload) => {
39
- if (payload.id != null) {
40
- eventIds.push(payload.id);
41
- }
42
- });
43
- draft.upcomingPaymentEvents = {
44
- fetchState: 'Completed',
45
- error: undefined,
46
- billStages: (data.bill_stages ?? []),
47
- eventIds,
48
- horizonDays: data.horizon_days,
49
- reimbursementStages: (data.reimbursement_stages ??
50
- []),
51
- tenantNamespace: data.tenant_namespace,
52
- };
53
- },
54
- updateUpcomingPaymentEventsListFetchStatus(draft, action) {
55
- draft.upcomingPaymentEvents = {
56
- ...draft.upcomingPaymentEvents,
57
- fetchState: action.payload.fetchState,
58
- error: action.payload.error,
59
- };
60
- },
61
- fetchCashManagementBanner(draft) {
62
- draft.banner = {
63
- ...initialCashManagementBannerState,
64
- fetchState: 'In-Progress',
65
- error: undefined,
66
- };
67
- },
68
- updateCashManagementBanner(draft, action) {
69
- draft.banner = {
70
- fetchState: 'Completed',
71
- error: undefined,
72
- data: action.payload.data,
73
- };
74
- },
75
- updateCashManagementBannerFetchStatus(draft, action) {
76
- draft.banner = {
77
- ...draft.banner,
78
- fetchState: action.payload.fetchState,
79
- error: action.payload.error,
80
- };
81
- },
82
- clearCashManagementOverview(draft) {
83
- Object.assign(draft, initialState);
84
- },
85
- },
86
- });
87
- export const { fetchCashManagementOverviewPage, fetchUpcomingPaymentEvents, updateUpcomingPaymentEventsList, updateUpcomingPaymentEventsListFetchStatus, fetchCashManagementBanner, updateCashManagementBanner, updateCashManagementBannerFetchStatus, clearCashManagementOverview, } = cashManagementOverview.actions;
88
- export default cashManagementOverview.reducer;
@@ -1,93 +0,0 @@
1
- import { zeroAmount } from '../../../../commonStateTypes/amount';
2
- import { reduceAllFetchState } from '../../../../commonStateTypes/reduceFetchState';
3
- import { getUpcomingPaymentEventsByIds } from '../../../../entity/upcomingPaymentEvent/upcomingPaymentEventSelector';
4
- export const getCashManagementOverviewBanner = (state) => {
5
- const { banner } = state.cashManagementOverviewState;
6
- return {
7
- fetchState: banner.fetchState,
8
- error: banner.error,
9
- data: banner.data,
10
- version: 0,
11
- };
12
- };
13
- export const getCashManagementOverview = (state) => {
14
- const { cashManagementOverviewState, depositAccountListState, depositAccountState, paymentAccountListState, paymentAccountState, treasuryDetailState, } = state;
15
- const outflowEventsFetchState = {
16
- fetchState: cashManagementOverviewState.upcomingPaymentEvents.fetchState,
17
- error: cashManagementOverviewState.upcomingPaymentEvents.error,
18
- };
19
- const bannerFetchState = {
20
- fetchState: cashManagementOverviewState.banner.fetchState,
21
- error: cashManagementOverviewState.banner.error,
22
- };
23
- const aggregate = reduceAllFetchState([
24
- {
25
- fetchState: paymentAccountListState.fetchState,
26
- error: paymentAccountListState.error,
27
- },
28
- {
29
- fetchState: depositAccountListState.fetchState,
30
- error: depositAccountListState.error,
31
- },
32
- {
33
- fetchState: treasuryDetailState.fetchState,
34
- error: treasuryDetailState.error,
35
- },
36
- outflowEventsFetchState,
37
- bannerFetchState,
38
- ]);
39
- const treasuryBalance = treasuryDetailState.accountSummary?.totalBalance ?? zeroAmount();
40
- const cashBalance = sumCashBalances(paymentAccountListState.paymentAccountIds, paymentAccountState, depositAccountListState.accountIds, depositAccountState);
41
- const totalCash = addAmounts(treasuryBalance, cashBalance);
42
- return {
43
- bannerFetchState,
44
- cashBalance,
45
- horizonDays: cashManagementOverviewState.upcomingPaymentEvents.horizonDays,
46
- outflowEvents: getUpcomingPaymentEventsByIds(state.upcomingPaymentEventState, cashManagementOverviewState.upcomingPaymentEvents.eventIds),
47
- outflowEventsFetchState,
48
- totalCash,
49
- treasuryBalance,
50
- fetchState: aggregate.fetchState,
51
- error: aggregate.error,
52
- version: 0,
53
- };
54
- };
55
- const isZeroAmount = (a) => a.amount === 0 && a.currencyCode === 'USD' && a.currencySymbol === '$';
56
- /**
57
- * Adds two Amounts. Currencies must match (the seeded zeroAmount() counts as
58
- * "no currency yet" and adopts `b`'s currency). Mismatches return `a`
59
- * unchanged and warn — mixing currencies in a total is a bug, not silent
60
- * conversion.
61
- */
62
- const addAmounts = (a, b) => {
63
- if (isZeroAmount(a)) {
64
- return { ...b };
65
- }
66
- if (a.currencyCode !== b.currencyCode ||
67
- a.currencySymbol !== b.currencySymbol) {
68
- console.warn(`cashManagementOverview: skipping balance with mismatched currency. Expected ${a.currencyCode} (${a.currencySymbol}), got ${b.currencyCode} (${b.currencySymbol}).`);
69
- return a;
70
- }
71
- return {
72
- amount: a.amount + b.amount,
73
- currencyCode: a.currencyCode,
74
- currencySymbol: a.currencySymbol,
75
- };
76
- };
77
- const sumCashBalances = (paymentAccountIds, paymentAccountState, depositAccountIds, depositAccountState) => {
78
- let total = zeroAmount();
79
- paymentAccountIds.forEach((id) => {
80
- const balance = paymentAccountState.paymentAccountByID[id]?.balances
81
- ?.available;
82
- if (balance != null) {
83
- total = addAmounts(total, balance);
84
- }
85
- });
86
- depositAccountIds.forEach((id) => {
87
- const balance = depositAccountState.depositAccountByID[id]?.accountBalance?.available;
88
- if (balance != null) {
89
- total = addAmounts(total, balance);
90
- }
91
- });
92
- return total;
93
- };
@@ -1,14 +0,0 @@
1
- export const initialCashManagementBannerState = {
2
- fetchState: 'Not-Started',
3
- error: undefined,
4
- data: undefined,
5
- };
6
- export const initialUpcomingPaymentEventsListState = {
7
- fetchState: 'Not-Started',
8
- error: undefined,
9
- billStages: [],
10
- eventIds: [],
11
- horizonDays: 0,
12
- reimbursementStages: [],
13
- tenantNamespace: undefined,
14
- };
@@ -1,6 +0,0 @@
1
- import { EMPTY } from 'rxjs';
2
- import { filter, mergeMap } from 'rxjs/operators';
3
- import { fetchCashManagementBanner, } from '../cashManagementOverviewReducer';
4
- // TODO: replace EMPTY with an actual API call once the banner endpoint is finalized.
5
- // Figma: https://www.figma.com/design/FUg2pv7edRAidx9X56VnZT/Cash-Management?node-id=2265-63443
6
- export const fetchCashManagementBannerEpic = (actions$) => actions$.pipe(filter(fetchCashManagementBanner.match), mergeMap(() => EMPTY));
@@ -1,35 +0,0 @@
1
- import { concat, from } from 'rxjs';
2
- import { filter, mergeMap } from 'rxjs/operators';
3
- import { fetchTreasuryOverviewDetail } from '../../../treasury/treasuryList/treasuryDetailReducer';
4
- import { fetchZeniAccountList } from '../../../zeniAccounts/zeniAccountList/zeniAccountListReducer';
5
- import { fetchCashManagementBanner, fetchCashManagementOverviewPage, fetchUpcomingPaymentEvents, } from '../cashManagementOverviewReducer';
6
- export const fetchCashManagementOverviewPageEpic = (actions$, state$) => actions$.pipe(filter(fetchCashManagementOverviewPage.match), mergeMap((action) => {
7
- const { cacheOverride } = action.payload;
8
- const state = state$.value;
9
- const pageActions = [];
10
- if (cacheOverride === true) {
11
- pageActions.push(fetchTreasuryOverviewDetail(true));
12
- pageActions.push(fetchZeniAccountList(true));
13
- pageActions.push(fetchUpcomingPaymentEvents());
14
- pageActions.push(fetchCashManagementBanner());
15
- }
16
- else {
17
- const treasuryDetailState = state.treasuryDetailState;
18
- if (treasuryDetailState.hasValidState() === false &&
19
- treasuryDetailState.fetchState !== 'In-Progress') {
20
- pageActions.push(fetchTreasuryOverviewDetail(false));
21
- }
22
- pageActions.push(fetchZeniAccountList(false));
23
- const upcomingEvents = state.cashManagementOverviewState.upcomingPaymentEvents;
24
- if (upcomingEvents.fetchState !== 'Completed' &&
25
- upcomingEvents.fetchState !== 'In-Progress') {
26
- pageActions.push(fetchUpcomingPaymentEvents());
27
- }
28
- const banner = state.cashManagementOverviewState.banner;
29
- if (banner.fetchState !== 'Completed' &&
30
- banner.fetchState !== 'In-Progress') {
31
- pageActions.push(fetchCashManagementBanner());
32
- }
33
- }
34
- return concat(from(pageActions));
35
- }));
@@ -1,22 +0,0 @@
1
- import { of } from 'rxjs';
2
- import { catchError, filter, mergeMap, switchMap } from 'rxjs/operators';
3
- import { createZeniAPIStatus, isSuccessResponse, } from '../../../../../responsePayload';
4
- import { updateUpcomingPaymentEvents } from '../../../../../entity/upcomingPaymentEvent/upcomingPaymentEventReducer';
5
- import { fetchUpcomingPaymentEvents, updateUpcomingPaymentEventsList, updateUpcomingPaymentEventsListFetchStatus, } from '../cashManagementOverviewReducer';
6
- export const fetchUpcomingPaymentEventsEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchUpcomingPaymentEvents.match), switchMap(() => zeniAPI
7
- .getJSON(
8
- // TODO: drop /rajat/ once the prod endpoint lands. `${zeniAPI.apiEndPoints.spendManagementMicroServiceBaseUrl}/1.0/upcoming-payment-events`
9
- `https://dev.api.zeni.ai/version/spend-management/rajat/1.0/upcoming-payment-events`)
10
- .pipe(mergeMap((response) => {
11
- if (isSuccessResponse(response) && response.data != null) {
12
- return of(updateUpcomingPaymentEvents(response.data.events), updateUpcomingPaymentEventsList({ data: response.data }));
13
- }
14
- return of(updateUpcomingPaymentEventsListFetchStatus({
15
- fetchState: 'Error',
16
- error: response.status,
17
- }));
18
- }), catchError((error) => of(updateUpcomingPaymentEventsListFetchStatus({
19
- fetchState: 'Error',
20
- error: createZeniAPIStatus('Unexpected Error', 'Fetch upcoming payment events REST API call errored out' +
21
- JSON.stringify(error)),
22
- }))))));
@@ -1,10 +0,0 @@
1
- import { UpcomingPaymentEventPayload } from '../../../../entity/upcomingPaymentEvent/upcomingPaymentEventPayload';
2
- import { ZeniAPIResponse } from '../../../../responsePayload';
3
- export interface FetchUpcomingPaymentEventsPayload {
4
- bill_stages: string[];
5
- events: UpcomingPaymentEventPayload[];
6
- horizon_days: number;
7
- reimbursement_stages: string[];
8
- tenant_namespace: string;
9
- }
10
- export type FetchUpcomingPaymentEventsResponse = ZeniAPIResponse<FetchUpcomingPaymentEventsPayload>;
@@ -1,2 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,20 +0,0 @@
1
- import { FetchState } from '../../../../commonStateTypes/common';
2
- import { FetchUpcomingPaymentEventsPayload } from './cashManagementOverviewPayload';
3
- import { ZeniAPIStatus } from '../../../../responsePayload';
4
- import { CashManagementBannerData, CashManagementOverviewState } from './cashManagementOverviewState';
5
- export declare const initialState: CashManagementOverviewState;
6
- export declare const fetchCashManagementOverviewPage: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[cacheOverride: boolean], {
7
- cacheOverride: boolean;
8
- }, "cashManagementOverview/fetchCashManagementOverviewPage", never, never>, fetchUpcomingPaymentEvents: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"cashManagementOverview/fetchUpcomingPaymentEvents">, updateUpcomingPaymentEventsList: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
9
- data: FetchUpcomingPaymentEventsPayload;
10
- }, "cashManagementOverview/updateUpcomingPaymentEventsList">, updateUpcomingPaymentEventsListFetchStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
11
- fetchState: FetchState;
12
- error?: ZeniAPIStatus;
13
- }, "cashManagementOverview/updateUpcomingPaymentEventsListFetchStatus">, fetchCashManagementBanner: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"cashManagementOverview/fetchCashManagementBanner">, updateCashManagementBanner: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
14
- data: CashManagementBannerData;
15
- }, "cashManagementOverview/updateCashManagementBanner">, updateCashManagementBannerFetchStatus: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
16
- fetchState: FetchState;
17
- error?: ZeniAPIStatus;
18
- }, "cashManagementOverview/updateCashManagementBannerFetchStatus">, clearCashManagementOverview: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"cashManagementOverview/clearCashManagementOverview">;
19
- declare const _default: import("redux").Reducer<CashManagementOverviewState>;
20
- export default _default;
@@ -1,92 +0,0 @@
1
- "use strict";
2
- var _a;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.clearCashManagementOverview = exports.updateCashManagementBannerFetchStatus = exports.updateCashManagementBanner = exports.fetchCashManagementBanner = exports.updateUpcomingPaymentEventsListFetchStatus = exports.updateUpcomingPaymentEventsList = exports.fetchUpcomingPaymentEvents = exports.fetchCashManagementOverviewPage = exports.initialState = void 0;
5
- const toolkit_1 = require("@reduxjs/toolkit");
6
- const cashManagementOverviewState_1 = require("./cashManagementOverviewState");
7
- exports.initialState = {
8
- banner: cashManagementOverviewState_1.initialCashManagementBannerState,
9
- upcomingPaymentEvents: cashManagementOverviewState_1.initialUpcomingPaymentEventsListState,
10
- fetchState: 'Not-Started',
11
- error: undefined,
12
- hasValidState() {
13
- return this.fetchState == 'Completed';
14
- },
15
- };
16
- const cashManagementOverview = (0, toolkit_1.createSlice)({
17
- name: 'cashManagementOverview',
18
- initialState: exports.initialState,
19
- reducers: {
20
- fetchCashManagementOverviewPage: {
21
- reducer(
22
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
- _draft,
24
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
25
- _action) {
26
- // do nothing - the corresponding epic listens to this action and fans out
27
- },
28
- prepare(cacheOverride) {
29
- return { payload: { cacheOverride } };
30
- },
31
- },
32
- fetchUpcomingPaymentEvents(draft) {
33
- draft.upcomingPaymentEvents = {
34
- ...draft.upcomingPaymentEvents,
35
- fetchState: 'In-Progress',
36
- error: undefined,
37
- };
38
- },
39
- updateUpcomingPaymentEventsList(draft, action) {
40
- const { data } = action.payload;
41
- const eventIds = [];
42
- data.events.forEach((payload) => {
43
- if (payload.id != null) {
44
- eventIds.push(payload.id);
45
- }
46
- });
47
- draft.upcomingPaymentEvents = {
48
- fetchState: 'Completed',
49
- error: undefined,
50
- billStages: (data.bill_stages ?? []),
51
- eventIds,
52
- horizonDays: data.horizon_days,
53
- reimbursementStages: (data.reimbursement_stages ??
54
- []),
55
- tenantNamespace: data.tenant_namespace,
56
- };
57
- },
58
- updateUpcomingPaymentEventsListFetchStatus(draft, action) {
59
- draft.upcomingPaymentEvents = {
60
- ...draft.upcomingPaymentEvents,
61
- fetchState: action.payload.fetchState,
62
- error: action.payload.error,
63
- };
64
- },
65
- fetchCashManagementBanner(draft) {
66
- draft.banner = {
67
- ...cashManagementOverviewState_1.initialCashManagementBannerState,
68
- fetchState: 'In-Progress',
69
- error: undefined,
70
- };
71
- },
72
- updateCashManagementBanner(draft, action) {
73
- draft.banner = {
74
- fetchState: 'Completed',
75
- error: undefined,
76
- data: action.payload.data,
77
- };
78
- },
79
- updateCashManagementBannerFetchStatus(draft, action) {
80
- draft.banner = {
81
- ...draft.banner,
82
- fetchState: action.payload.fetchState,
83
- error: action.payload.error,
84
- };
85
- },
86
- clearCashManagementOverview(draft) {
87
- Object.assign(draft, exports.initialState);
88
- },
89
- },
90
- });
91
- _a = cashManagementOverview.actions, exports.fetchCashManagementOverviewPage = _a.fetchCashManagementOverviewPage, exports.fetchUpcomingPaymentEvents = _a.fetchUpcomingPaymentEvents, exports.updateUpcomingPaymentEventsList = _a.updateUpcomingPaymentEventsList, exports.updateUpcomingPaymentEventsListFetchStatus = _a.updateUpcomingPaymentEventsListFetchStatus, exports.fetchCashManagementBanner = _a.fetchCashManagementBanner, exports.updateCashManagementBanner = _a.updateCashManagementBanner, exports.updateCashManagementBannerFetchStatus = _a.updateCashManagementBannerFetchStatus, exports.clearCashManagementOverview = _a.clearCashManagementOverview;
92
- exports.default = cashManagementOverview.reducer;
@@ -1,20 +0,0 @@
1
- import { Amount } from '../../../../commonStateTypes/amount';
2
- import { FetchStateAndError } from '../../../../commonStateTypes/common';
3
- import { SelectorView } from '../../../../commonStateTypes/viewAndReport/viewAndReport';
4
- import { UpcomingPaymentEvent } from '../../../../entity/upcomingPaymentEvent/upcomingPaymentEventState';
5
- import { RootState } from '../../../../reducer';
6
- import { CashManagementBannerData } from './cashManagementOverviewState';
7
- export interface CashManagementOverviewBannerSelectorView extends SelectorView {
8
- data?: CashManagementBannerData;
9
- }
10
- export interface CashManagementOverviewSelectorView extends SelectorView {
11
- bannerFetchState: FetchStateAndError;
12
- cashBalance: Amount;
13
- horizonDays: number;
14
- outflowEvents: UpcomingPaymentEvent[];
15
- outflowEventsFetchState: FetchStateAndError;
16
- totalCash: Amount;
17
- treasuryBalance: Amount;
18
- }
19
- export declare const getCashManagementOverviewBanner: (state: RootState) => CashManagementOverviewBannerSelectorView;
20
- export declare const getCashManagementOverview: (state: RootState) => CashManagementOverviewSelectorView;