@zeniai/client-epic-state 5.2.10 → 5.2.11-betaAM1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/entity/jeSchedules/jeScheduleHelper.d.ts +1 -0
- package/lib/entity/jeSchedules/jeScheduleHelper.js +7 -0
- package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +86 -1
- package/lib/entity/jeSchedules/jeSchedulesPayload.js +172 -0
- package/lib/entity/jeSchedules/jeSchedulesReducer.d.ts +4 -2
- package/lib/entity/jeSchedules/jeSchedulesReducer.js +30 -2
- package/lib/entity/jeSchedules/jeSchedulesSelector.d.ts +11 -2
- package/lib/entity/jeSchedules/jeSchedulesSelector.js +38 -3
- package/lib/entity/jeSchedules/jeSchedulesState.d.ts +101 -1
- package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +24 -1
- package/lib/entity/jeSchedules/jeSchedulesTypes.js +88 -1
- package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
- package/lib/entity/snackbar/snackbarTypes.js +3 -0
- package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.d.ts +2 -0
- package/lib/entity/transaction/payloadTypes/scheduleTransactionPayload.js +2 -0
- package/lib/entity/transaction/stateTypes/scheduleTransaction.d.ts +2 -0
- package/lib/epic.d.ts +14 -1
- package/lib/epic.js +26 -0
- package/lib/esm/entity/jeSchedules/jeScheduleHelper.js +6 -0
- package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +172 -1
- package/lib/esm/entity/jeSchedules/jeSchedulesReducer.js +30 -2
- package/lib/esm/entity/jeSchedules/jeSchedulesSelector.js +36 -2
- package/lib/esm/entity/jeSchedules/jeSchedulesTypes.js +78 -0
- package/lib/esm/entity/snackbar/snackbarTypes.js +3 -0
- package/lib/esm/entity/transaction/payloadTypes/scheduleTransactionPayload.js +2 -0
- package/lib/esm/epic.js +26 -0
- package/lib/esm/index.js +19 -9
- package/lib/esm/reducer.js +3 -0
- package/lib/esm/view/companyMonthEndReportView/companyMonthEndReportViewReducer.js +6 -2
- package/lib/esm/view/companyMonthEndReportView/companyMonthEndReportViewState.js +4 -0
- package/lib/esm/view/companyMonthEndReportView/epics/saveCompanyMonthEndReportEpic.js +10 -6
- package/lib/esm/view/companyMonthEndReportView/epics/sendCompanyMonthEndReportEpic.js +9 -5
- package/lib/esm/view/companyMonthEndReportView/monthEndTemplateData.js +32 -0
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.js +46 -0
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingPageEpic.js +7 -0
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/matchAndReverseAccrualsEpic.js +50 -0
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/searchMatchAccrualsEpic.js +44 -0
- package/lib/esm/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.js +44 -0
- package/lib/esm/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +30 -10
- package/lib/esm/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.js +9 -1
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulePageEpic.js +9 -1
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.js +41 -5
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/fetchOneTimeAccrualEpic.js +45 -0
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/ignoreRecommendedJeScheduleEpic.js +14 -2
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/createOneTimeAccrualEpic.js +104 -0
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/initializeNewScheduleEpic.js +25 -0
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/saveNewScheduleEpic.js +136 -0
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/newSchedule/searchTransactionsForNewScheduleEpic.js +79 -0
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/oneTimeAccrualActionsEpic.js +157 -0
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/revertJeScheduleEpic.js +111 -0
- package/lib/esm/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.js +33 -0
- package/lib/esm/view/expenseAutomationView/expenseAutomationViewSelector.js +22 -7
- package/lib/esm/view/expenseAutomationView/helpers/newScheduleLocalDataHelper.js +140 -0
- package/lib/esm/view/expenseAutomationView/payload/actualMatchingPayload.js +35 -0
- package/lib/esm/view/expenseAutomationView/payload/jeSchedulesPayload.js +55 -0
- package/lib/esm/view/expenseAutomationView/reducers/actualMatchingViewReducer.js +260 -0
- package/lib/esm/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +314 -29
- package/lib/esm/view/expenseAutomationView/selectorTypes/actualMatchingViewSelectorTypes.js +1 -0
- package/lib/esm/view/expenseAutomationView/selectorTypes/jeNewScheduleViewSelectorTypes.js +1 -0
- package/lib/esm/view/expenseAutomationView/selectors/actualMatchingViewSelector.js +162 -0
- package/lib/esm/view/expenseAutomationView/selectors/jeAccountSettingsViewSelector.js +1 -0
- package/lib/esm/view/expenseAutomationView/selectors/jeNewScheduleViewSelector.js +106 -0
- package/lib/esm/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +297 -22
- package/lib/esm/view/expenseAutomationView/types/actualMatchingViewState.js +22 -0
- package/lib/esm/view/expenseAutomationView/types/jeSchedulesViewState.js +8 -5
- package/lib/esm/view/scheduleView/scheduleListView/epics/fetchAccruedScheduleListEpic.js +1 -1
- package/lib/esm/view/scheduleView/scheduleListView/epics/fetchDownloadSchedulesEpic.js +7 -2
- package/lib/esm/view/scheduleView/scheduleListView/scheduleListReducer.js +5 -3
- package/lib/index.d.ts +25 -14
- package/lib/index.js +119 -51
- package/lib/reducer.d.ts +1 -0
- package/lib/reducer.js +3 -0
- package/lib/rootStateTypes.d.ts +2 -0
- package/lib/view/companyMonthEndReportView/companyMonthEndReportViewPayload.d.ts +8 -0
- package/lib/view/companyMonthEndReportView/companyMonthEndReportViewReducer.d.ts +6 -2
- package/lib/view/companyMonthEndReportView/companyMonthEndReportViewReducer.js +6 -2
- package/lib/view/companyMonthEndReportView/companyMonthEndReportViewState.d.ts +2 -0
- package/lib/view/companyMonthEndReportView/companyMonthEndReportViewState.js +4 -0
- package/lib/view/companyMonthEndReportView/epics/saveCompanyMonthEndReportEpic.js +10 -6
- package/lib/view/companyMonthEndReportView/epics/sendCompanyMonthEndReportEpic.js +9 -5
- package/lib/view/companyMonthEndReportView/monthEndTemplateData.d.ts +16 -0
- package/lib/view/companyMonthEndReportView/monthEndTemplateData.js +36 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.d.ts +9 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingEpic.js +50 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingPageEpic.d.ts +5 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/fetchActualMatchingPageEpic.js +11 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/matchAndReverseAccrualsEpic.d.ts +8 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/matchAndReverseAccrualsEpic.js +54 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchAccrualsEpic.d.ts +8 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchAccrualsEpic.js +48 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.d.ts +8 -0
- package/lib/view/expenseAutomationView/epics/actualMatching/searchMatchTransactionsEpic.js +48 -0
- package/lib/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.d.ts +2 -1
- package/lib/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +30 -10
- package/lib/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.d.ts +2 -1
- package/lib/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.js +9 -1
- package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulePageEpic.js +9 -1
- package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.d.ts +3 -2
- package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.js +39 -3
- package/lib/view/expenseAutomationView/epics/jeSchedule/fetchOneTimeAccrualEpic.d.ts +21 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/fetchOneTimeAccrualEpic.js +49 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/ignoreRecommendedJeScheduleEpic.js +14 -2
- package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/createOneTimeAccrualEpic.d.ts +9 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/createOneTimeAccrualEpic.js +108 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/initializeNewScheduleEpic.d.ts +8 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/initializeNewScheduleEpic.js +29 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/saveNewScheduleEpic.d.ts +9 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/saveNewScheduleEpic.js +140 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/searchTransactionsForNewScheduleEpic.d.ts +8 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/newSchedule/searchTransactionsForNewScheduleEpic.js +83 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/oneTimeAccrualActionsEpic.d.ts +13 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/oneTimeAccrualActionsEpic.js +164 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/revertJeScheduleEpic.d.ts +65 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/revertJeScheduleEpic.js +115 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.d.ts +7 -0
- package/lib/view/expenseAutomationView/epics/jeSchedule/switchJESchedulesTabEpic.js +37 -0
- package/lib/view/expenseAutomationView/expenseAutomationViewSelector.js +22 -7
- package/lib/view/expenseAutomationView/helpers/newScheduleLocalDataHelper.d.ts +36 -0
- package/lib/view/expenseAutomationView/helpers/newScheduleLocalDataHelper.js +145 -0
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/payload/actualMatchingPayload.d.ts +66 -0
- package/lib/view/expenseAutomationView/payload/actualMatchingPayload.js +40 -0
- package/lib/view/expenseAutomationView/payload/jeSchedulesPayload.d.ts +72 -3
- package/lib/view/expenseAutomationView/payload/jeSchedulesPayload.js +58 -1
- package/lib/view/expenseAutomationView/reducers/actualMatchingViewReducer.d.ts +53 -0
- package/lib/view/expenseAutomationView/reducers/actualMatchingViewReducer.js +264 -0
- package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.d.ts +91 -12
- package/lib/view/expenseAutomationView/reducers/jeSchedulesViewReducer.js +316 -29
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.d.ts +1 -1
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +2 -2
- package/lib/view/expenseAutomationView/selectorTypes/actualMatchingViewSelectorTypes.d.ts +58 -0
- package/lib/view/expenseAutomationView/selectorTypes/actualMatchingViewSelectorTypes.js +2 -0
- package/lib/view/expenseAutomationView/selectorTypes/expenseAutomationViewSelectorTypes.d.ts +2 -0
- package/lib/view/expenseAutomationView/selectorTypes/jeAccountSettingsViewSelectorTypes.d.ts +1 -0
- package/lib/view/expenseAutomationView/selectorTypes/jeNewScheduleViewSelectorTypes.d.ts +42 -0
- package/lib/view/expenseAutomationView/selectorTypes/jeNewScheduleViewSelectorTypes.js +2 -0
- package/lib/view/expenseAutomationView/selectorTypes/jeSchedulesSelectorTypes.d.ts +36 -7
- package/lib/view/expenseAutomationView/selectors/actualMatchingViewSelector.d.ts +9 -0
- package/lib/view/expenseAutomationView/selectors/actualMatchingViewSelector.js +172 -0
- package/lib/view/expenseAutomationView/selectors/jeAccountSettingsViewSelector.js +1 -0
- package/lib/view/expenseAutomationView/selectors/jeNewScheduleViewSelector.d.ts +21 -0
- package/lib/view/expenseAutomationView/selectors/jeNewScheduleViewSelector.js +112 -0
- package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.d.ts +34 -0
- package/lib/view/expenseAutomationView/selectors/jeSchedulesViewSelector.js +305 -21
- package/lib/view/expenseAutomationView/types/actualMatchingViewState.d.ts +76 -0
- package/lib/view/expenseAutomationView/types/actualMatchingViewState.js +27 -0
- package/lib/view/expenseAutomationView/types/completedSubTab.d.ts +1 -1
- package/lib/view/expenseAutomationView/types/jeSchedulesViewState.d.ts +83 -8
- package/lib/view/expenseAutomationView/types/jeSchedulesViewState.js +11 -7
- package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +1 -1
- package/lib/view/scheduleView/scheduleListView/epics/fetchAccruedScheduleListEpic.js +1 -1
- package/lib/view/scheduleView/scheduleListView/epics/fetchDownloadSchedulesEpic.js +7 -2
- package/lib/view/scheduleView/scheduleListView/scheduleListReducer.d.ts +4 -2
- package/lib/view/scheduleView/scheduleListView/scheduleListReducer.js +5 -3
- package/package.json +1 -1
|
@@ -7,6 +7,7 @@ const monthEndCloseChecksSelector_1 = require("../../entity/monthEndCloseChecks/
|
|
|
7
7
|
const tenantSelector_1 = require("../../entity/tenant/tenantSelector");
|
|
8
8
|
const companyMonthEndReportViewSelector_1 = require("../companyMonthEndReportView/companyMonthEndReportViewSelector");
|
|
9
9
|
const monthEndCloseChecksViewSelector_1 = require("../monthEndCloseChecksView/monthEndCloseChecksViewSelector");
|
|
10
|
+
const actualMatchingViewSelector_1 = require("./selectors/actualMatchingViewSelector");
|
|
10
11
|
const fluxAnalysisViewSelector_1 = require("./selectors/fluxAnalysisViewSelector");
|
|
11
12
|
const getAllStepsHelper_1 = require("./selectors/getAllStepsHelper");
|
|
12
13
|
const jeSchedulesViewSelector_1 = require("./selectors/jeSchedulesViewSelector");
|
|
@@ -24,7 +25,7 @@ const isPreviousStepDisabled = (selectedTransactionCategorizationTab, allSteps,
|
|
|
24
25
|
return allSteps[stepIndex - 1].isDisabled;
|
|
25
26
|
};
|
|
26
27
|
function getExpenseAutomationView(state) {
|
|
27
|
-
const { expenseAutomationViewState, tenantState, expenseAutomationMissingReceiptsViewState, expenseAutomationJESchedulesViewState, expenseAutomationTransactionsViewState, expenseAutomationReconciliationViewState, monthEndCloseChecksState, companyState, } = state;
|
|
28
|
+
const { expenseAutomationViewState, tenantState, expenseAutomationMissingReceiptsViewState, expenseAutomationJESchedulesViewState, expenseAutomationActualMatchingViewState, expenseAutomationTransactionsViewState, expenseAutomationReconciliationViewState, monthEndCloseChecksState, companyState, } = state;
|
|
28
29
|
const { loggedInUser, currentTenantId } = tenantState;
|
|
29
30
|
const currentTenant = (0, tenantSelector_1.getCurrentTenant)(state);
|
|
30
31
|
const { currentSelectedView, selectedPeriodByTenantId } = expenseAutomationViewState;
|
|
@@ -45,6 +46,7 @@ function getExpenseAutomationView(state) {
|
|
|
45
46
|
const reconciliation = (0, reconciliationViewSelector_1.getExpenseAutomationReconciliationView)(state);
|
|
46
47
|
const expenseAutomationTransactionsView = (0, transactionCategorizationSelector_1.getExpenseAutomationTransactionView)(state);
|
|
47
48
|
const jeSchedules = (0, jeSchedulesViewSelector_1.getExpenseAutomationJESchedulesView)(state);
|
|
49
|
+
const actualMatching = (0, actualMatchingViewSelector_1.getExpenseAutomationActualMatchingView)(state);
|
|
48
50
|
switch (currentSelectedView) {
|
|
49
51
|
case 'reconciliation':
|
|
50
52
|
currentSelectedViewFetchState = reconciliation.fetchStatus;
|
|
@@ -57,12 +59,23 @@ function getExpenseAutomationView(state) {
|
|
|
57
59
|
fluxAnalysis.refreshStatus;
|
|
58
60
|
break;
|
|
59
61
|
case 'je_schedules':
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
if (expenseAutomationJESchedulesViewState.uiState.selectedPageTab ===
|
|
63
|
+
'actual_matching') {
|
|
64
|
+
currentSelectedViewFetchState = {
|
|
65
|
+
fetchState: actualMatching.fetchState,
|
|
66
|
+
error: actualMatching.error,
|
|
67
|
+
};
|
|
68
|
+
currentSelectedViewBackgroundRefreshFetchState =
|
|
69
|
+
actualMatching.refreshStatus;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
currentSelectedViewFetchState = {
|
|
73
|
+
fetchState: jeSchedules.fetchState,
|
|
74
|
+
error: jeSchedules.error,
|
|
75
|
+
};
|
|
76
|
+
currentSelectedViewBackgroundRefreshFetchState =
|
|
77
|
+
jeSchedules.refreshStatus;
|
|
78
|
+
}
|
|
66
79
|
break;
|
|
67
80
|
case 'missing_receipts':
|
|
68
81
|
currentSelectedViewFetchState = {
|
|
@@ -94,6 +107,7 @@ function getExpenseAutomationView(state) {
|
|
|
94
107
|
const fetchStateVariables = [
|
|
95
108
|
expenseAutomationMissingReceiptsViewState,
|
|
96
109
|
expenseAutomationJESchedulesViewState,
|
|
110
|
+
expenseAutomationActualMatchingViewState,
|
|
97
111
|
expenseAutomationTransactionsView,
|
|
98
112
|
expenseAutomationReconciliationViewState,
|
|
99
113
|
];
|
|
@@ -179,6 +193,7 @@ function getExpenseAutomationView(state) {
|
|
|
179
193
|
]);
|
|
180
194
|
return {
|
|
181
195
|
jeSchedules,
|
|
196
|
+
actualMatching,
|
|
182
197
|
transactionView: expenseAutomationTransactionsView,
|
|
183
198
|
missingReceipts,
|
|
184
199
|
reconciliation,
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Amount } from '../../../commonStateTypes/amount';
|
|
2
|
+
import { ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
|
|
3
|
+
import { ScheduleTransaction } from '../../../entity/transaction/stateTypes/scheduleTransaction';
|
|
4
|
+
import { JESchedulePayload, SaveJESchedulePayload } from '../../scheduleView/scheduleDetailView/scheduleDetailPayload';
|
|
5
|
+
import { NewJeDetailLocalData, NewScheduleLocalData, NewScheduleLocalDataFixedAssets } from '../types/jeSchedulesViewState';
|
|
6
|
+
/**
|
|
7
|
+
* Computes the month-by-month JE schedule breakdown for a brand-new schedule
|
|
8
|
+
* (no linked transaction yet) — replicates createNewSchedulesHelper's math
|
|
9
|
+
* (scheduleDetailLocalDataHelper.ts) exactly: lump-sum total split evenly
|
|
10
|
+
* across months with the rounding remainder absorbed by the last month, and a
|
|
11
|
+
* running balance that decrements each month and is forced to exactly 0 on
|
|
12
|
+
* the last row.
|
|
13
|
+
*/
|
|
14
|
+
export declare const computeNewScheduleJeDetails: (localData: NewScheduleLocalData | NewScheduleLocalDataFixedAssets, totalAmount: Amount, vendorName: string) => NewJeDetailLocalData[];
|
|
15
|
+
export interface NewSchedulePayload {
|
|
16
|
+
je_schedules: JESchedulePayload[];
|
|
17
|
+
scheduled_journal_entries: SaveJESchedulePayload[];
|
|
18
|
+
}
|
|
19
|
+
export type PrepareNewSchedulePayloadFailureReason = 'missing_third_party_id' | 'missing_vendor';
|
|
20
|
+
export type PrepareNewSchedulePayloadResult = {
|
|
21
|
+
ok: true;
|
|
22
|
+
payload: NewSchedulePayload;
|
|
23
|
+
} | {
|
|
24
|
+
ok: false;
|
|
25
|
+
reason: PrepareNewSchedulePayloadFailureReason;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Builds a savable schedule payload directly from a Base Transaction search
|
|
29
|
+
* result and the New Schedule form's local data — bypassing the legacy
|
|
30
|
+
* getJEScheduledTransactionByJEScheduleTransactionKey selector entirely,
|
|
31
|
+
* since that selector throws unless the entity has already round-tripped
|
|
32
|
+
* through a real GET /1.0/schedules/:id. A brand-new schedule has no such
|
|
33
|
+
* history, so this reads only from data already in hand (the selected
|
|
34
|
+
* transaction/line plus what the user filled into the form).
|
|
35
|
+
*/
|
|
36
|
+
export declare const prepareNewSchedulePayload: (transaction: ScheduleTransaction, localData: NewScheduleLocalData | NewScheduleLocalDataFixedAssets, scheduleType: ScheduleTypes) => PrepareNewSchedulePayloadResult;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.prepareNewSchedulePayload = exports.computeNewScheduleJeDetails = void 0;
|
|
4
|
+
const amount_1 = require("../../../commonStateTypes/amount");
|
|
5
|
+
const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
|
|
6
|
+
const formatZeniDateFY_1 = require("../../../commonStateTypes/fiscalYearHelpers/formatZeniDateFY");
|
|
7
|
+
const timePeriod_2 = require("../../../commonStateTypes/timePeriod");
|
|
8
|
+
const scheduleDetailLocalDataHelper_1 = require("../../scheduleView/scheduleDetailView/scheduleDetailLocalDataHelper");
|
|
9
|
+
const scheduleDetailPayload_1 = require("../../scheduleView/scheduleDetailView/scheduleDetailPayload");
|
|
10
|
+
const getNewScheduleMemo = (vendorName, schedulePostingDate, currentPeriod, totalPeriod, assetId) => {
|
|
11
|
+
const addAsset = assetId != null && assetId !== '' ? ` - ${assetId}` : '';
|
|
12
|
+
return `${vendorName} - ${schedulePostingDate.format(formatZeniDateFY_1.MONTH_YEAR_FORMAT)} (${currentPeriod} of ${totalPeriod})${addAsset}`;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Computes the month-by-month JE schedule breakdown for a brand-new schedule
|
|
16
|
+
* (no linked transaction yet) — replicates createNewSchedulesHelper's math
|
|
17
|
+
* (scheduleDetailLocalDataHelper.ts) exactly: lump-sum total split evenly
|
|
18
|
+
* across months with the rounding remainder absorbed by the last month, and a
|
|
19
|
+
* running balance that decrements each month and is forced to exactly 0 on
|
|
20
|
+
* the last row.
|
|
21
|
+
*/
|
|
22
|
+
const computeNewScheduleJeDetails = (localData, totalAmount, vendorName) => {
|
|
23
|
+
const period = localData.selectedMonths;
|
|
24
|
+
const startingMonth = localData.selectedDate;
|
|
25
|
+
if (startingMonth == null || period == null) {
|
|
26
|
+
return [];
|
|
27
|
+
}
|
|
28
|
+
const assetId = 'assetId' in localData ? localData.assetId : undefined;
|
|
29
|
+
const averageAmount = Math.abs(Math.round((totalAmount.amount / period) * 100) / 100);
|
|
30
|
+
const lastMonthAmount = Math.abs(Math.round((Math.abs(totalAmount.amount) - averageAmount * (period - 1)) * 100) / 100);
|
|
31
|
+
let runningBalance = Math.abs(totalAmount.amount);
|
|
32
|
+
const negativeNumbers = totalAmount.amount < 0 || runningBalance < 0;
|
|
33
|
+
const newJeDetails = [];
|
|
34
|
+
for (let index = 0; index < period; index++) {
|
|
35
|
+
if (runningBalance > averageAmount) {
|
|
36
|
+
runningBalance = Math.round((runningBalance - averageAmount) * 100) / 100;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
runningBalance = 0;
|
|
40
|
+
}
|
|
41
|
+
const amount = index === period - 1 ? lastMonthAmount : averageAmount;
|
|
42
|
+
runningBalance = index === period - 1 ? 0 : runningBalance;
|
|
43
|
+
const schedulePostingDate = startingMonth.add(index, 'month');
|
|
44
|
+
const { postingDate, postingStatus } = (0, scheduleDetailLocalDataHelper_1.getPostingDateAndStatusForIndex)(schedulePostingDate.month(), schedulePostingDate.year(), localData.lastDayOfMonth === true
|
|
45
|
+
? undefined
|
|
46
|
+
: localData.selectedDayOfMonth);
|
|
47
|
+
newJeDetails.push({
|
|
48
|
+
postingDate,
|
|
49
|
+
amount: (0, amount_1.toAmount)(negativeNumbers ? -amount : amount, totalAmount.currencyCode, totalAmount.currencySymbol),
|
|
50
|
+
runningBalance: (0, amount_1.toAmount)(negativeNumbers ? -runningBalance : runningBalance, totalAmount.currencyCode, totalAmount.currencySymbol),
|
|
51
|
+
postingStatus,
|
|
52
|
+
memo: getNewScheduleMemo(vendorName, schedulePostingDate, index + 1, period, assetId),
|
|
53
|
+
jeLink: { type: 'unknown' },
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
return newJeDetails;
|
|
57
|
+
};
|
|
58
|
+
exports.computeNewScheduleJeDetails = computeNewScheduleJeDetails;
|
|
59
|
+
const mapNewJeDetailsToScheduledJournalEntryPayload = (jeScheduleDetails) => jeScheduleDetails.map((journalEntry) => ({
|
|
60
|
+
status: {
|
|
61
|
+
code: journalEntry.postingStatus,
|
|
62
|
+
label: journalEntry.postingStatus,
|
|
63
|
+
},
|
|
64
|
+
transaction_memo: journalEntry.memo,
|
|
65
|
+
third_party_id: journalEntry.jeLink.thirdPartyTransactionId ?? null,
|
|
66
|
+
expected_post_date: journalEntry.postingDate.format(timePeriod_1.DEFAULT_DATE_FORMAT),
|
|
67
|
+
amount: journalEntry.amount.amount,
|
|
68
|
+
balance: journalEntry.runningBalance.amount,
|
|
69
|
+
// Brand-new schedule — there is no prior scheduled-journal-entry history
|
|
70
|
+
// to cross-reference (unlike the legacy edit flow's equivalent mapper).
|
|
71
|
+
scheduled_journal_entry_id: null,
|
|
72
|
+
actual_post_date: null,
|
|
73
|
+
is_platform_generated: null,
|
|
74
|
+
je_schedule_id: null,
|
|
75
|
+
update_time: null,
|
|
76
|
+
create_time: null,
|
|
77
|
+
}));
|
|
78
|
+
/**
|
|
79
|
+
* Builds a savable schedule payload directly from a Base Transaction search
|
|
80
|
+
* result and the New Schedule form's local data — bypassing the legacy
|
|
81
|
+
* getJEScheduledTransactionByJEScheduleTransactionKey selector entirely,
|
|
82
|
+
* since that selector throws unless the entity has already round-tripped
|
|
83
|
+
* through a real GET /1.0/schedules/:id. A brand-new schedule has no such
|
|
84
|
+
* history, so this reads only from data already in hand (the selected
|
|
85
|
+
* transaction/line plus what the user filled into the form).
|
|
86
|
+
*/
|
|
87
|
+
const prepareNewSchedulePayload = (transaction, localData, scheduleType) => {
|
|
88
|
+
if (transaction.thirdPartyTransactionId == null ||
|
|
89
|
+
transaction.thirdPartyTransactionId === '') {
|
|
90
|
+
return { ok: false, reason: 'missing_third_party_id' };
|
|
91
|
+
}
|
|
92
|
+
const scheduleTransaction = transaction;
|
|
93
|
+
const vendorId = localData.selectedVendor?.id ?? transaction.vendorId ?? '';
|
|
94
|
+
const vendorName = localData.selectedVendor?.name ?? transaction.vendorName ?? '';
|
|
95
|
+
if (vendorId === '' || vendorName === '') {
|
|
96
|
+
return { ok: false, reason: 'missing_vendor' };
|
|
97
|
+
}
|
|
98
|
+
const vendor = {
|
|
99
|
+
vendor_id: vendorId,
|
|
100
|
+
vendor_name: vendorName,
|
|
101
|
+
};
|
|
102
|
+
const jeScheduleDetails = (0, exports.computeNewScheduleJeDetails)(localData, scheduleTransaction.amount, vendorName);
|
|
103
|
+
const postingDate = localData.selectedDayOfMonth ??
|
|
104
|
+
(localData.lastDayOfMonth === true ? timePeriod_2.LAST_SCHEDULE_DAY_OF_MONTH : null);
|
|
105
|
+
const firstJEScheduleDate = jeScheduleDetails.length > 0
|
|
106
|
+
? jeScheduleDetails[0].postingDate.format(timePeriod_1.DEFAULT_DATE_FORMAT)
|
|
107
|
+
: null;
|
|
108
|
+
const lastJEScheduleDate = jeScheduleDetails.length > 0
|
|
109
|
+
? jeScheduleDetails[jeScheduleDetails.length - 1].postingDate.format(timePeriod_1.DEFAULT_DATE_FORMAT)
|
|
110
|
+
: null;
|
|
111
|
+
const isFixedAssets = scheduleType === 'fixed_assets';
|
|
112
|
+
const assetId = 'assetId' in localData ? localData.assetId : undefined;
|
|
113
|
+
const selectedAccumulatedDepreciationCategory = 'selectedAccumulatedDepreciationCategory' in localData
|
|
114
|
+
? localData.selectedAccumulatedDepreciationCategory
|
|
115
|
+
: undefined;
|
|
116
|
+
const status = { code: 'new', label: 'New' };
|
|
117
|
+
const jeSchedulePayload = {
|
|
118
|
+
status,
|
|
119
|
+
vendor,
|
|
120
|
+
currency_code: scheduleTransaction.currency.currencyCode,
|
|
121
|
+
currency_symbol: scheduleTransaction.currency.currencySymbol,
|
|
122
|
+
period: localData.selectedMonths ?? null,
|
|
123
|
+
je_schedule_type: scheduleType,
|
|
124
|
+
posting_date: postingDate,
|
|
125
|
+
balance: scheduleTransaction.amount.amount,
|
|
126
|
+
start_date: firstJEScheduleDate,
|
|
127
|
+
end_date: lastJEScheduleDate,
|
|
128
|
+
je_credit_accounting_class_id: scheduleTransaction.classBase?.classId ?? null,
|
|
129
|
+
je_credit_account_id: isFixedAssets
|
|
130
|
+
? (selectedAccumulatedDepreciationCategory ?? null)
|
|
131
|
+
: scheduleTransaction.account.accountId,
|
|
132
|
+
je_debit_account_id: localData.selectedAccount ?? null,
|
|
133
|
+
je_debit_accounting_class_id: localData.selectedClass ?? null,
|
|
134
|
+
other_attributes: assetId != null ? { asset_id: assetId } : {},
|
|
135
|
+
base_transaction: (0, scheduleDetailPayload_1.mapScheduleTransactionToBaseScheduleTransactionPayload)(scheduleTransaction),
|
|
136
|
+
};
|
|
137
|
+
return {
|
|
138
|
+
ok: true,
|
|
139
|
+
payload: {
|
|
140
|
+
je_schedules: [jeSchedulePayload],
|
|
141
|
+
scheduled_journal_entries: mapNewJeDetailsToScheduledJournalEntryPayload(jeScheduleDetails),
|
|
142
|
+
},
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
exports.prepareNewSchedulePayload = prepareNewSchedulePayload;
|
package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts
CHANGED
|
@@ -39,7 +39,7 @@ export declare const getLineItemsByTransactionsIdsFromResponse: (transactions: S
|
|
|
39
39
|
export declare const getLineItemsByTransactionIdsFromLocalData: (transactionLocalData: TransactionReviewLocalDataSelectorView[], selectedTab: TransactionsTab) => Record<ID, string[]>;
|
|
40
40
|
export declare const mergeTabSpecificLineItems: (currentTabSpecificLineItems: TabSpecificLineItems, selectedTab: TransactionsTab, newLineItems: TabSpecificLineItems) => TabSpecificLineItems;
|
|
41
41
|
export declare const getSnackbarMessageForTransactionReview: (updatedCount: number, failedCount: number, categorizedCount: number) => {
|
|
42
|
-
messageSection: "common" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_approval_reorder" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_approval_reorder" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "card_policy_created" | "card_policy_updated" | "card_policy_deleted" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "snooze_task" | "unsnooze_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "create_transfer_entry" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update" | "accounting_projects_enabled_update" | "accounting_projects_qbo_not_enabled" | "capitalization_threshold_update" | "account_excluded_from_reconciliation" | "account_included_in_reconciliation" | "confirm_statement_mapping" | "statement_parsing_in_progress" | "statement_parsing_complete" | "ai_accountant_trigger_job" | "oauth_consent_approve" | "oauth_consent_invalid_request" | "credit_agent_update_profile" | "credit_agent_save_macro" | "credit_agent_schedule_cron" | "create_sub_task" | "qbo_connection_already_linked" | "qbo_connection_failed" | "accounting_projects_qbo_reconnect_failed" | "product_services_update" | "qbo_realm_id_update" | "invoicing_dunning_case_resolved" | "invoicing_dunning_retry" | "invoicing_dunning_cancel" | "invoicing_dunning_settings_save" | "invoicing_qbo_backfill" | "invoicing_qbo_sync_health_retry" | "invoicing_qbo_settings_save" | "invoicing_branding_save" | "invoicing_discount_archive" | "invoicing_discount_unarchive" | "invoicing_discount_delete" | "invoicing_invoice_reminder_sent" | "invoicing_invoice_regenerated" | "invoicing_invoice_voided" | "invoicing_catalog_item_saved" | "invoicing_customer_saved" | "invoicing_subscription_saved" | "invoicing_coupon_saved" | "invoicing_invoice_saved" | "invoicing_credit_note_saved" | "invoicing_payment_recorded" | "invoicing_subscription_activated" | "invoicing_subscription_cancellation_removed" | "invoicing_subscription_cancelled" | "invoicing_subscription_non_renewing" | "invoicing_subscription_paused" | "invoicing_subscription_reactivated" | "invoicing_subscription_resumed" | "invoicing_subscription_term_end_changed";
|
|
42
|
+
messageSection: "common" | "transactionDetails_updatingPastTransactions" | "transactionDetails_transactionUpdated" | "cockpit_month_end_email_sent" | "cockpit_month_end_email_save" | "cockpit_month_end_email_attachment_upload" | "je_bill_link" | "je_posted" | "audit_score_updated" | "people_invite_people" | "people_invite_multiple_people" | "people_delete_person" | "people_update_person" | "reimbursement_updated" | "reimbursement_deleted" | "reimbursement_cancelled_deleted" | "reimbursement_cancelled" | "reimbursement_approved" | "reimbursement_rejected" | "reimbursement_sent_for_approval" | "account_added" | "business_verification_save" | "business_verification_submit" | "business_verification_from_bills_submit" | "plaid_connection" | "unlink_deposit_account" | "reimbursement_setup" | "reimbursement_approval_create" | "reimbursement_duplicate_approval_create" | "reimbursement_approval_update" | "reimbursement_duplicate_approval_update" | "reimbursement_approval_delete" | "reimbursement_approval_reorder" | "reimbursement_create_mileage" | "reimbursement_update_mileage" | "reimbursement_accept_term" | "reimbursement_accept_employee_term" | "reimbursement_bulk_submit" | "reimbursement_bulk_processed" | "bill_pay_setup" | "zeni_accounts_setup" | "bill_pay_approval_create" | "bill_pay_duplicate_approval_create" | "bill_pay_approval_update" | "bill_pay_duplicate_approval_update" | "bill_pay_approval_delete" | "bill_pay_approval_reorder" | "bill_pay_updated" | "bill_pay_deleted" | "bill_pay_cancelled_deleted" | "bill_pay_cancelled" | "bill_pay_approved" | "real_time_approver_added" | "bill_pay_rejected" | "bill_pay_sent_for_approval" | "bill_pay_accept_term" | "bill_pay_bulk_submit" | "bill_pay_bulk_processed" | "bill_pay_refund" | "bill_pay_retry" | "bill_pay_marked_as_paid" | "zeni_account_accept_term" | "update_vendor" | "data_refresh_update" | "delete_bank_account" | "create_bank_account" | "create_bank_account_ach" | "create_bank_account_wire" | "create_bank_account_international" | "transfer_money" | "update_zeni_account_nickname" | "create_checking_account" | "deposit_check" | "create_vendor" | "onboarding_customer_view" | "onboarding_customer_view_complete" | "onboarding_customer_identity_verification_save" | "onboarding_customer_identity_verification_submit" | "onboarding_customer_business_verification_save" | "onboarding_customer_business_verification_submit" | "retry_bank_account_connection" | "dashboard_invite_sent" | "onboarding_info_saved" | "approve_original_merchant" | "approve_global_merchant" | "reject_global_merchant" | "create_global_merchant" | "fetch_global_merchant_no_recommendation" | "save_vendor_renamed" | "save_vendor_sent_for_review" | "save_vendor_marked_as_employee" | "save_vendor_marked_as_local_contractor" | "charge_card_setup" | "charge_card_accept_term" | "charge_card_receipt_upload" | "charge_card_resend_invite" | "charge_card_revoke_invite" | "card_policy_created" | "card_policy_updated" | "card_policy_deleted" | "charge_card_update_limit" | "charge_cards_update_limit" | "close_charge_card" | "lock_charge_card" | "lock_charge_card_card_user" | "lock_charge_cards" | "unlock_charge_card" | "unlock_charge_card_card_user" | "unlock_charge_cards" | "close_charge_cards" | "revoke_invite_charge_cards" | "charge_card_express_interest" | "create_schedule" | "save_schedule" | "delete_schedule" | "ignore_schedule" | "revert_schedule" | "ignore_accrual" | "revert_accrual" | "save_task_detail" | "fetch_task_detail" | "delete_task" | "archive_task" | "snooze_task" | "unsnooze_task" | "create_tag" | "delete_tag" | "update_charge_card" | "update_charge_card_name" | "update_charge_card_name_card_user" | "issue_charge_card" | "issue_charge_cards" | "notification_settings_saved" | "referral_invite_sent" | "notification_mark_as_read" | "mark_as_complete_schedule" | "cancel_journal_entry" | "settings_accounting_accounts_updated" | "create_card_setup" | "confirm_card_setup" | "add_card_payment_source" | "fetch_payment_sources" | "task_assigned_toast_notification" | "task_due_tomorrow_toast_notification" | "task_deleted_toast_notification" | "task_archived_toast_notification" | "task_overdue_toast_notification" | "task_overdue_toast_notification_creator" | "task_notification_count" | "task_activities_toast_notification" | "task_created_toast_notification" | "task_group_creation_success" | "task_group_deletion_success" | "task_group_update_success" | "primary_funding_account_updated" | "task_time_spent_validation" | "missing_receipts_attachment" | "flux_analysis_unreviewed" | "flux_analysis_reviewed" | "receipt_match" | "receipts_upload" | "receipts_bulk_match" | "billing_address_view" | "express_pay_submit" | "exclude_transaction" | "reconcile" | "save_reconcile_for_later" | "recon_transaction_categorize" | "recon_transaction_match" | "update_debit_card_pin_attempt" | "set_debit_card_pin" | "ai_cfo_create_session_and_submit" | "ai_cfo_chat_session_deleted" | "charge_card_auto_pay_enable" | "charge_card_auto_pay_disable" | "treasury_setup" | "treasury_accept_term" | "treasury_transfer_money" | "treasury_transfer_money_failed" | "auto_transfer_rule_create" | "auto_transfer_rule_update" | "auto_transfer_rule_delete" | "auto_transfer_rule_pause" | "auto_transfer_rule_resume" | "treasury_update_portfolio_allocation" | "send_email_magic_link_to_user" | "complete_profile_done" | "create_transfer_entry" | "reports_resync" | "invalid_phone_number" | "transactions_categorized_updated_failed" | "transaction_categorized_updated_failed" | "transactionsCategorized_transactionsUpdated" | "transactionsCategorized_transactionUpdated" | "transactionCategorized_transactionsUpdated" | "transactionCategorized_transactionUpdated" | "transactionsCategorized_transactionsFailed" | "transactionsCategorized_transactionFailed" | "transactionCategorized_transactionsFailed" | "transactionCategorized_transactionFailed" | "transactionsUpdated_transactionsFailed" | "transactionsUpdated_transactionFailed" | "transactionUpdated_transactionsFailed" | "transactionUpdated_transactionFailed" | "transactionsCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionsUpdated_transactionFailed" | "transactionsCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionsUpdated_transactionsFailed" | "transactionsCategorized_transactionUpdated_transactionFailed" | "transactionCategorized_transactionsUpdated_transactionFailed" | "transactionCategorized_transactionUpdated_transactionsFailed" | "transactionCategorized_transactionUpdated_transactionFailed" | "accounting_classes_enabled_update" | "accounting_projects_enabled_update" | "accounting_projects_qbo_not_enabled" | "capitalization_threshold_update" | "account_excluded_from_reconciliation" | "account_included_in_reconciliation" | "confirm_statement_mapping" | "statement_parsing_in_progress" | "statement_parsing_complete" | "ai_accountant_trigger_job" | "oauth_consent_approve" | "oauth_consent_invalid_request" | "credit_agent_update_profile" | "credit_agent_save_macro" | "credit_agent_schedule_cron" | "create_sub_task" | "qbo_connection_already_linked" | "qbo_connection_failed" | "accounting_projects_qbo_reconnect_failed" | "product_services_update" | "qbo_realm_id_update" | "invoicing_dunning_case_resolved" | "invoicing_dunning_retry" | "invoicing_dunning_cancel" | "invoicing_dunning_settings_save" | "invoicing_qbo_backfill" | "invoicing_qbo_sync_health_retry" | "invoicing_qbo_settings_save" | "invoicing_branding_save" | "invoicing_discount_archive" | "invoicing_discount_unarchive" | "invoicing_discount_delete" | "invoicing_invoice_reminder_sent" | "invoicing_invoice_regenerated" | "invoicing_invoice_voided" | "invoicing_catalog_item_saved" | "invoicing_customer_saved" | "invoicing_subscription_saved" | "invoicing_coupon_saved" | "invoicing_invoice_saved" | "invoicing_credit_note_saved" | "invoicing_payment_recorded" | "invoicing_subscription_activated" | "invoicing_subscription_cancellation_removed" | "invoicing_subscription_cancelled" | "invoicing_subscription_non_renewing" | "invoicing_subscription_paused" | "invoicing_subscription_reactivated" | "invoicing_subscription_resumed" | "invoicing_subscription_term_end_changed";
|
|
43
43
|
messageText: "notification" | "failed" | "success";
|
|
44
44
|
type: "error" | "success" | "info";
|
|
45
45
|
variables: {
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { ID } from '../../../commonStateTypes/common';
|
|
2
|
+
import { TimePeriod } from '../../../commonStateTypes/timePeriod';
|
|
3
|
+
import { JEOneTimeAccrualPayload } from '../../../entity/jeSchedules/jeSchedulesPayload';
|
|
4
|
+
import { ZeniAPIResponse } from '../../../responsePayload';
|
|
5
|
+
import { ActualMatchingTransactionSearchResult, MatchAndReverseResult } from '../types/actualMatchingViewState';
|
|
6
|
+
export declare function toServiceMonthFromPeriod(period: TimePeriod): string;
|
|
7
|
+
export interface ActualMatchingListResponsePayload {
|
|
8
|
+
accruals: JEOneTimeAccrualPayload[];
|
|
9
|
+
total: number;
|
|
10
|
+
limit?: number | null;
|
|
11
|
+
offset?: number | null;
|
|
12
|
+
}
|
|
13
|
+
export type ActualMatchingListResponse = ZeniAPIResponse<ActualMatchingListResponsePayload>;
|
|
14
|
+
export interface ActualMatchingAccrualSearchResponsePayload {
|
|
15
|
+
accruals: JEOneTimeAccrualPayload[];
|
|
16
|
+
total: number;
|
|
17
|
+
limit?: number | null;
|
|
18
|
+
offset?: number | null;
|
|
19
|
+
}
|
|
20
|
+
export type ActualMatchingAccrualSearchResponse = ZeniAPIResponse<ActualMatchingAccrualSearchResponsePayload>;
|
|
21
|
+
export interface MatchTransactionSearchQueryPayload {
|
|
22
|
+
page_size: number;
|
|
23
|
+
search_text: string;
|
|
24
|
+
page_token?: string | null;
|
|
25
|
+
}
|
|
26
|
+
export interface MatchTransactionSearchResultPayload {
|
|
27
|
+
line_id: string;
|
|
28
|
+
total_amount: number;
|
|
29
|
+
transaction_date: string;
|
|
30
|
+
transaction_id: ID;
|
|
31
|
+
transaction_integration_id: string;
|
|
32
|
+
transaction_type: string;
|
|
33
|
+
account_id?: ID | null;
|
|
34
|
+
account_name?: string | null;
|
|
35
|
+
currency_code?: string | null;
|
|
36
|
+
currency_symbol?: string | null;
|
|
37
|
+
transaction_memo?: string | null;
|
|
38
|
+
vendor_id?: ID | null;
|
|
39
|
+
vendor_name?: string | null;
|
|
40
|
+
}
|
|
41
|
+
export interface MatchTransactionSearchResponsePayload {
|
|
42
|
+
transactions: MatchTransactionSearchResultPayload[];
|
|
43
|
+
next_page_token?: string | null;
|
|
44
|
+
}
|
|
45
|
+
export type MatchTransactionSearchResponse = ZeniAPIResponse<MatchTransactionSearchResponsePayload>;
|
|
46
|
+
export declare function toActualMatchingTransactionSearchResult(payload: MatchTransactionSearchResultPayload): ActualMatchingTransactionSearchResult;
|
|
47
|
+
export interface MatchAndReverseRequestPayload {
|
|
48
|
+
accrual_ids: ID[];
|
|
49
|
+
line_id: string;
|
|
50
|
+
transaction_id: ID;
|
|
51
|
+
transaction_integration_id: string;
|
|
52
|
+
transaction_type: string;
|
|
53
|
+
}
|
|
54
|
+
export interface MatchAndReverseResultPayload {
|
|
55
|
+
accrual_id: ID;
|
|
56
|
+
status: string;
|
|
57
|
+
reason?: string | null;
|
|
58
|
+
}
|
|
59
|
+
export interface MatchAndReverseResponsePayload {
|
|
60
|
+
match_batch_id: string;
|
|
61
|
+
results: MatchAndReverseResultPayload[];
|
|
62
|
+
transaction_id: ID;
|
|
63
|
+
transaction_integration_id: string;
|
|
64
|
+
}
|
|
65
|
+
export type MatchAndReverseResponse = ZeniAPIResponse<MatchAndReverseResponsePayload>;
|
|
66
|
+
export declare function toMatchAndReverseResult(payload: MatchAndReverseResultPayload): MatchAndReverseResult;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toServiceMonthFromPeriod = toServiceMonthFromPeriod;
|
|
4
|
+
exports.toActualMatchingTransactionSearchResult = toActualMatchingTransactionSearchResult;
|
|
5
|
+
exports.toMatchAndReverseResult = toMatchAndReverseResult;
|
|
6
|
+
const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
|
|
7
|
+
const actualMatchingViewState_1 = require("../types/actualMatchingViewState");
|
|
8
|
+
function toServiceMonthFromPeriod(period) {
|
|
9
|
+
return (0, timePeriod_1.toString)(period.start).slice(0, 7);
|
|
10
|
+
}
|
|
11
|
+
const DEFAULT_CURRENCY_CODE = 'USD';
|
|
12
|
+
const DEFAULT_CURRENCY_SYMBOL = '$';
|
|
13
|
+
function toActualMatchingTransactionSearchResult(payload) {
|
|
14
|
+
const currencyCode = payload.currency_code ?? DEFAULT_CURRENCY_CODE;
|
|
15
|
+
return {
|
|
16
|
+
transactionId: payload.transaction_id,
|
|
17
|
+
transactionIntegrationId: payload.transaction_integration_id,
|
|
18
|
+
transactionType: payload.transaction_type,
|
|
19
|
+
lineId: payload.line_id,
|
|
20
|
+
vendorId: payload.vendor_id ?? undefined,
|
|
21
|
+
vendorName: payload.vendor_name ?? '',
|
|
22
|
+
amount: payload.total_amount,
|
|
23
|
+
transactionDate: payload.transaction_date,
|
|
24
|
+
accountId: payload.account_id ?? undefined,
|
|
25
|
+
accountName: payload.account_name ?? undefined,
|
|
26
|
+
currencyCode,
|
|
27
|
+
currencySymbol: payload.currency_symbol ??
|
|
28
|
+
(currencyCode === DEFAULT_CURRENCY_CODE
|
|
29
|
+
? DEFAULT_CURRENCY_SYMBOL
|
|
30
|
+
: currencyCode),
|
|
31
|
+
transactionMemo: payload.transaction_memo ?? undefined,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function toMatchAndReverseResult(payload) {
|
|
35
|
+
return {
|
|
36
|
+
accrualId: payload.accrual_id,
|
|
37
|
+
status: (0, actualMatchingViewState_1.toMatchAndReverseResultStatus)(payload.status),
|
|
38
|
+
reason: payload.reason ?? undefined,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ID } from '../../../commonStateTypes/common';
|
|
2
|
+
import { JEAccruedScheduledTransactionPayload, JEOneTimeAccrualPayload, JEScheduledTransactionPayload, ScheduledJournalEntryPayload } from '../../../entity/jeSchedules/jeSchedulesPayload';
|
|
2
3
|
import { JEScheduledTransaction } from '../../../entity/jeSchedules/jeSchedulesSelector';
|
|
3
|
-
import { ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
|
|
4
|
+
import { OneTimeAccrualIgnoreReasonType, OneTimeAccrualRevertReasonType, ScheduleTypes } from '../../../entity/jeSchedules/jeSchedulesTypes';
|
|
4
5
|
import { ZeniAPIResponse } from '../../../responsePayload';
|
|
5
6
|
import { RootState } from '../../../rootStateTypes';
|
|
7
|
+
import { ZeniDate } from '../../../zeniDayJS';
|
|
6
8
|
import { JESchedulePayload, SaveJESchedulePayload } from '../../scheduleView/scheduleDetailView/scheduleDetailPayload';
|
|
7
|
-
import { JEScheduleLocalData } from '../types/jeSchedulesViewState';
|
|
9
|
+
import { JEScheduleLocalData, NewOneTimeAccrualLocalData } from '../types/jeSchedulesViewState';
|
|
8
10
|
export interface ExpenseAutomationJESchedulesQueryPayload {
|
|
9
11
|
end_date: string;
|
|
12
|
+
include_accrued: boolean;
|
|
10
13
|
start_date: string;
|
|
14
|
+
close_period_start_date?: string;
|
|
11
15
|
}
|
|
12
16
|
interface ExpenseAutomationJESchedulesPayload {
|
|
13
17
|
failed_je_postings: {
|
|
@@ -15,8 +19,73 @@ interface ExpenseAutomationJESchedulesPayload {
|
|
|
15
19
|
scheduled_journal_entries: ScheduledJournalEntryPayload[];
|
|
16
20
|
};
|
|
17
21
|
je_schedules: JEScheduledTransactionPayload[];
|
|
22
|
+
accrued_je_schedules?: {
|
|
23
|
+
je_schedules: JEAccruedScheduledTransactionPayload[];
|
|
24
|
+
scheduled_journal_entries?: ScheduledJournalEntryPayload[];
|
|
25
|
+
};
|
|
26
|
+
one_time_accruals?: JEOneTimeAccrualPayload[];
|
|
18
27
|
}
|
|
19
28
|
export type ExpenseAutomationJESchedulesResponse = ZeniAPIResponse<ExpenseAutomationJESchedulesPayload>;
|
|
29
|
+
export interface CreateOneTimeAccrualPayload {
|
|
30
|
+
amount: number;
|
|
31
|
+
je_credit_account_id: ID;
|
|
32
|
+
je_debit_account_id: ID;
|
|
33
|
+
memo: string;
|
|
34
|
+
service_month: string;
|
|
35
|
+
vendor_id: ID;
|
|
36
|
+
vendor_name: string;
|
|
37
|
+
expected_reversal_date?: string;
|
|
38
|
+
je_credit_account_name?: string;
|
|
39
|
+
je_credit_accounting_class_id?: ID;
|
|
40
|
+
je_credit_accounting_class_name?: string;
|
|
41
|
+
je_debit_account_name?: string;
|
|
42
|
+
je_debit_accounting_class_id?: ID;
|
|
43
|
+
je_debit_accounting_class_name?: string;
|
|
44
|
+
reversal_policy?: string;
|
|
45
|
+
reverse_next_month?: boolean;
|
|
46
|
+
}
|
|
47
|
+
export type CreateOneTimeAccrualResponse = ZeniAPIResponse<{
|
|
48
|
+
accrual: JEOneTimeAccrualPayload;
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* Promote body. `vendor_id`, `vendor_name` and `service_month` are deliberately absent: promote
|
|
52
|
+
* treats them as immutable and takes them from the existing draft, so sending them would imply a
|
|
53
|
+
* reassignment the API silently ignores.
|
|
54
|
+
*/
|
|
55
|
+
export interface PromoteOneTimeAccrualPayload {
|
|
56
|
+
amount: number;
|
|
57
|
+
je_credit_account_id: ID;
|
|
58
|
+
je_debit_account_id: ID;
|
|
59
|
+
memo: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Ignore body. `scope` is deliberately absent — the API returns 400 if it is sent, which is why the
|
|
63
|
+
* design's "Apply to" selector cannot be built yet.
|
|
64
|
+
*/
|
|
65
|
+
/**
|
|
66
|
+
* Revert deletes the accrual's journal entry in QBO and soft-deletes the row. `scope` is rejected
|
|
67
|
+
* with a 400, exactly as on ignore.
|
|
68
|
+
*/
|
|
69
|
+
export interface RevertOneTimeAccrualPayload {
|
|
70
|
+
reason: OneTimeAccrualRevertReasonType;
|
|
71
|
+
note?: string;
|
|
72
|
+
}
|
|
73
|
+
export interface IgnoreOneTimeAccrualPayload {
|
|
74
|
+
reason: OneTimeAccrualIgnoreReasonType;
|
|
75
|
+
note?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The credit line is the accrued liability, which always sits on the balance sheet — the
|
|
79
|
+
* recurring accrued path resolves the same class the same way (see
|
|
80
|
+
* prepareNewScheduleAccruedDetailPayload). Omitted rather than sent empty when the tenant has
|
|
81
|
+
* no balance_sheet class, since the API treats the field as optional.
|
|
82
|
+
*/
|
|
83
|
+
export declare const prepareCreateOneTimeAccrualPayload: (state: RootState, localData: NewOneTimeAccrualLocalData) => CreateOneTimeAccrualPayload;
|
|
84
|
+
/**
|
|
85
|
+
* The API defaults this to the 1st of the month after service_month. We send it explicitly so the
|
|
86
|
+
* date the form promised the user is the date that gets stored.
|
|
87
|
+
*/
|
|
88
|
+
export declare const getExpectedReversalDate: (serviceMonth: ZeniDate) => ZeniDate;
|
|
20
89
|
export interface IgnoreDraftJESchedulePayload {
|
|
21
90
|
je_schedules: JEScheduledTransactionPayload[];
|
|
22
91
|
scheduled_journal_entries: SaveJESchedulePayload[];
|
|
@@ -1,8 +1,65 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.preparePayloadForRetryPosting = exports.prepareIgnoreSchedulePayload = void 0;
|
|
3
|
+
exports.preparePayloadForRetryPosting = exports.prepareIgnoreSchedulePayload = exports.getExpectedReversalDate = exports.prepareCreateOneTimeAccrualPayload = void 0;
|
|
4
4
|
const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
|
|
5
|
+
const classListSelector_1 = require("../../classList/classListSelector");
|
|
5
6
|
const scheduleDetailPayload_1 = require("../../scheduleView/scheduleDetailView/scheduleDetailPayload");
|
|
7
|
+
const BALANCE_SHEET_CLASS_LABEL = 'balance_sheet';
|
|
8
|
+
const SERVICE_MONTH_FORMAT = 'YYYY-MM';
|
|
9
|
+
/**
|
|
10
|
+
* The credit line is the accrued liability, which always sits on the balance sheet — the
|
|
11
|
+
* recurring accrued path resolves the same class the same way (see
|
|
12
|
+
* prepareNewScheduleAccruedDetailPayload). Omitted rather than sent empty when the tenant has
|
|
13
|
+
* no balance_sheet class, since the API treats the field as optional.
|
|
14
|
+
*/
|
|
15
|
+
const prepareCreateOneTimeAccrualPayload = (state, localData) => {
|
|
16
|
+
const { classListState, classState } = state;
|
|
17
|
+
const balanceSheetClass = (0, classListSelector_1.getClassList)(classState, classListState).classes.find((accountingClass) => accountingClass.labels?.includes(BALANCE_SHEET_CLASS_LABEL) === true);
|
|
18
|
+
// reverse_next_month alone decides reversal_policy server-side, so reversal_policy is
|
|
19
|
+
// deliberately not sent — the API documents it only as an alternate way to say on_bill_match,
|
|
20
|
+
// and sending both would be two sources of truth for one toggle.
|
|
21
|
+
const reversalFields = localData.reverseNextMonth
|
|
22
|
+
? {
|
|
23
|
+
reverse_next_month: true,
|
|
24
|
+
expected_reversal_date: (0, exports.getExpectedReversalDate)(localData.serviceMonth).format(timePeriod_1.DEFAULT_DATE_FORMAT),
|
|
25
|
+
}
|
|
26
|
+
: { reverse_next_month: false };
|
|
27
|
+
return {
|
|
28
|
+
vendor_id: localData.vendorId,
|
|
29
|
+
vendor_name: localData.vendorName,
|
|
30
|
+
service_month: localData.serviceMonth.format(SERVICE_MONTH_FORMAT),
|
|
31
|
+
amount: localData.amount,
|
|
32
|
+
memo: localData.memo,
|
|
33
|
+
je_debit_account_id: localData.debitAccountId,
|
|
34
|
+
je_credit_account_id: localData.creditAccountId,
|
|
35
|
+
...(localData.debitAccountName != null
|
|
36
|
+
? { je_debit_account_name: localData.debitAccountName }
|
|
37
|
+
: {}),
|
|
38
|
+
...(localData.creditAccountName != null
|
|
39
|
+
? { je_credit_account_name: localData.creditAccountName }
|
|
40
|
+
: {}),
|
|
41
|
+
...(localData.debitClassId != null
|
|
42
|
+
? { je_debit_accounting_class_id: localData.debitClassId }
|
|
43
|
+
: {}),
|
|
44
|
+
...(localData.debitClassName != null
|
|
45
|
+
? { je_debit_accounting_class_name: localData.debitClassName }
|
|
46
|
+
: {}),
|
|
47
|
+
...(balanceSheetClass != null
|
|
48
|
+
? {
|
|
49
|
+
je_credit_accounting_class_id: balanceSheetClass.classId,
|
|
50
|
+
je_credit_accounting_class_name: balanceSheetClass.className,
|
|
51
|
+
}
|
|
52
|
+
: {}),
|
|
53
|
+
...reversalFields,
|
|
54
|
+
};
|
|
55
|
+
};
|
|
56
|
+
exports.prepareCreateOneTimeAccrualPayload = prepareCreateOneTimeAccrualPayload;
|
|
57
|
+
/**
|
|
58
|
+
* The API defaults this to the 1st of the month after service_month. We send it explicitly so the
|
|
59
|
+
* date the form promised the user is the date that gets stored.
|
|
60
|
+
*/
|
|
61
|
+
const getExpectedReversalDate = (serviceMonth) => serviceMonth.add(1, 'month').startOf('month');
|
|
62
|
+
exports.getExpectedReversalDate = getExpectedReversalDate;
|
|
6
63
|
const prepareIgnoreSchedulePayload = (scheduleType, jeScheduleTransaction, state) => {
|
|
7
64
|
const { vendorState } = state;
|
|
8
65
|
const { vendor, currencyCode, currencySymbol, baseTransaction, status, balanceAsOfToday, period, startDate, endDate, jeCredit, jeDebit, } = jeScheduleTransaction;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { MonthYearPeriod, TimePeriod } from '../../../commonStateTypes/timePeriod';
|
|
2
|
+
import { JEOneTimeAccrualPayload } from '../../../entity/jeSchedules/jeSchedulesPayload';
|
|
3
|
+
import { ZeniAPIStatus } from '../../../responsePayload';
|
|
4
|
+
import { ActualMatchingAccrualSearchState, ActualMatchingMatchModalState, ActualMatchingTransactionSearchResult, ActualMatchingTransactionSearchState, ActualMatchingViewState, ActualMatchingViewUIState, MatchAndReverseAccrualsParams, MatchAndReverseResult } from '../types/actualMatchingViewState';
|
|
5
|
+
export declare const initialTransactionSearchState: ActualMatchingTransactionSearchState;
|
|
6
|
+
export declare const initialAccrualSearchState: ActualMatchingAccrualSearchState;
|
|
7
|
+
export declare const initialMatchModalState: ActualMatchingMatchModalState;
|
|
8
|
+
export declare const initialState: ActualMatchingViewState;
|
|
9
|
+
export declare const clearActualMatchingView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationActualMatchingView/clearActualMatchingView">, clearMatchNewModal: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationActualMatchingView/clearMatchNewModal">, closeMatchNewModal: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationActualMatchingView/closeMatchNewModal">, fetchActualMatching: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[period: TimePeriod, refreshViewInBackground?: any], {
|
|
10
|
+
period: TimePeriod;
|
|
11
|
+
refreshViewInBackground: any;
|
|
12
|
+
}, "expenseAutomationActualMatchingView/fetchActualMatching", never, never>, fetchActualMatchingFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
13
|
+
refreshViewInBackground: boolean;
|
|
14
|
+
selectedPeriod: MonthYearPeriod;
|
|
15
|
+
status: ZeniAPIStatus;
|
|
16
|
+
}, "expenseAutomationActualMatchingView/fetchActualMatchingFailure">, fetchActualMatchingPage: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[period: TimePeriod, refreshViewInBackground?: any], {
|
|
17
|
+
period: TimePeriod;
|
|
18
|
+
refreshViewInBackground: any;
|
|
19
|
+
}, "expenseAutomationActualMatchingView/fetchActualMatchingPage", never, never>, fetchActualMatchingSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
20
|
+
accruals: JEOneTimeAccrualPayload[];
|
|
21
|
+
refreshViewInBackground: boolean;
|
|
22
|
+
selectedPeriod: MonthYearPeriod;
|
|
23
|
+
}, "expenseAutomationActualMatchingView/fetchActualMatchingSuccess">, matchAndReverseAccruals: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[params: MatchAndReverseAccrualsParams], MatchAndReverseAccrualsParams, "expenseAutomationActualMatchingView/matchAndReverseAccruals", never, never>, matchAndReverseAccrualsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
24
|
+
status: ZeniAPIStatus;
|
|
25
|
+
}, "expenseAutomationActualMatchingView/matchAndReverseAccrualsFailure">, matchAndReverseAccrualsSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
26
|
+
results: MatchAndReverseResult[];
|
|
27
|
+
}, "expenseAutomationActualMatchingView/matchAndReverseAccrualsSuccess">, openMatchNewModal: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"expenseAutomationActualMatchingView/openMatchNewModal">, searchMatchAccruals: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[{
|
|
28
|
+
query: string;
|
|
29
|
+
pageToken?: string | null;
|
|
30
|
+
}], {
|
|
31
|
+
query: string;
|
|
32
|
+
pageToken: string | undefined;
|
|
33
|
+
}, "expenseAutomationActualMatchingView/searchMatchAccruals", never, never>, searchMatchAccrualsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
34
|
+
error: ZeniAPIStatus;
|
|
35
|
+
}, "expenseAutomationActualMatchingView/searchMatchAccrualsFailure">, searchMatchAccrualsSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
36
|
+
append: boolean;
|
|
37
|
+
nextPageToken: string | null;
|
|
38
|
+
results: JEOneTimeAccrualPayload[];
|
|
39
|
+
}, "expenseAutomationActualMatchingView/searchMatchAccrualsSuccess">, searchMatchTransactions: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[{
|
|
40
|
+
query: string;
|
|
41
|
+
pageToken?: string | null;
|
|
42
|
+
}], {
|
|
43
|
+
query: string;
|
|
44
|
+
pageToken: string | undefined;
|
|
45
|
+
}, "expenseAutomationActualMatchingView/searchMatchTransactions", never, never>, searchMatchTransactionsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
46
|
+
error: ZeniAPIStatus;
|
|
47
|
+
}, "expenseAutomationActualMatchingView/searchMatchTransactionsFailure">, searchMatchTransactionsSuccess: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
48
|
+
append: boolean;
|
|
49
|
+
nextPageToken: string | null;
|
|
50
|
+
results: ActualMatchingTransactionSearchResult[];
|
|
51
|
+
}, "expenseAutomationActualMatchingView/searchMatchTransactionsSuccess">, updateActualMatchingUIState: import("@reduxjs/toolkit").ActionCreatorWithPayload<Partial<ActualMatchingViewUIState>, "expenseAutomationActualMatchingView/updateActualMatchingUIState">;
|
|
52
|
+
declare const _default: import("redux").Reducer<ActualMatchingViewState>;
|
|
53
|
+
export default _default;
|