@zeniai/client-epic-state 5.2.10 → 5.2.11-beta0ND
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/invoicing/invoicingCommonPayload.d.ts +27 -29
- package/lib/entity/invoicing/invoicingCommonPayload.js +37 -75
- package/lib/entity/invoicing/product/productPayload.d.ts +10 -0
- package/lib/entity/invoicing/product/productPayload.js +14 -2
- package/lib/epic.d.ts +3 -2
- package/lib/epic.js +12 -5
- package/lib/esm/entity/invoicing/invoicingCommonPayload.js +33 -73
- package/lib/esm/entity/invoicing/product/productPayload.js +14 -2
- package/lib/esm/epic.js +8 -1
- package/lib/esm/index.js +7 -6
- 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/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +25 -9
- package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/saveInvoicingCatalogItemEpic.js +6 -1
- package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +40 -0
- package/lib/esm/view/invoicing/settingsView/epics/connectInvoicingStripeEpic.js +27 -0
- package/lib/esm/view/invoicing/settingsView/epics/disconnectInvoicingStripeEpic.js +19 -0
- package/lib/esm/view/invoicing/settingsView/epics/fetchInvoicingSettingsEpic.js +19 -0
- package/lib/esm/view/invoicing/settingsView/epics/saveInvoicingSettingsEpic.js +39 -0
- package/lib/esm/view/invoicing/settingsView/epics/settingsViewActionType.js +1 -0
- package/lib/esm/view/invoicing/settingsView/epics/submitInvoicingQboSettingsEpic.js +25 -0
- package/lib/esm/view/invoicing/settingsView/invoicingQboSettingsFormConfig.js +48 -0
- package/lib/esm/view/invoicing/settingsView/settingsViewReducer.js +25 -1
- package/lib/esm/view/invoicing/settingsView/settingsViewSelector.js +41 -0
- package/lib/esm/view/recommendation/recommendationReducer.js +16 -1
- package/lib/esm/view/recommendation/submitRecommendationFeedbackEpic.js +52 -0
- package/lib/index.d.ts +12 -8
- package/lib/index.js +36 -28
- 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/types/reconciliationViewState.d.ts +1 -1
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.d.ts +12 -1
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +25 -9
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/saveInvoicingCatalogItemEpic.js +6 -1
- package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.d.ts +10 -1
- package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +43 -1
- package/lib/view/invoicing/settingsView/epics/connectInvoicingStripeEpic.d.ts +6 -0
- package/lib/view/invoicing/settingsView/epics/connectInvoicingStripeEpic.js +31 -0
- package/lib/view/invoicing/settingsView/epics/disconnectInvoicingStripeEpic.d.ts +6 -0
- package/lib/view/invoicing/settingsView/epics/disconnectInvoicingStripeEpic.js +23 -0
- package/lib/view/invoicing/settingsView/epics/fetchInvoicingSettingsEpic.d.ts +6 -0
- package/lib/view/invoicing/settingsView/epics/fetchInvoicingSettingsEpic.js +23 -0
- package/lib/view/invoicing/settingsView/epics/saveInvoicingSettingsEpic.d.ts +6 -0
- package/lib/view/invoicing/settingsView/epics/saveInvoicingSettingsEpic.js +43 -0
- package/lib/view/invoicing/settingsView/epics/settingsViewActionType.d.ts +5 -0
- package/lib/view/invoicing/settingsView/epics/settingsViewActionType.js +2 -0
- package/lib/view/invoicing/settingsView/epics/submitInvoicingQboSettingsEpic.d.ts +11 -0
- package/lib/view/invoicing/settingsView/epics/submitInvoicingQboSettingsEpic.js +29 -0
- package/lib/view/invoicing/settingsView/invoicingQboSettingsFormConfig.d.ts +34 -0
- package/lib/view/invoicing/settingsView/invoicingQboSettingsFormConfig.js +53 -0
- package/lib/view/invoicing/settingsView/settingsViewReducer.d.ts +4 -1
- package/lib/view/invoicing/settingsView/settingsViewReducer.js +26 -2
- package/lib/view/invoicing/settingsView/settingsViewSelector.d.ts +35 -0
- package/lib/view/invoicing/settingsView/settingsViewSelector.js +43 -1
- package/lib/view/invoicing/settingsView/settingsViewState.d.ts +8 -0
- package/lib/view/recommendation/recommendationPayload.d.ts +34 -0
- package/lib/view/recommendation/recommendationReducer.d.ts +2 -1
- package/lib/view/recommendation/recommendationReducer.js +17 -2
- package/lib/view/recommendation/submitRecommendationFeedbackEpic.d.ts +7 -0
- package/lib/view/recommendation/submitRecommendationFeedbackEpic.js +56 -0
- package/package.json +1 -1
- package/lib/esm/view/invoicing/settingsView/settingsViewEpics.js +0 -92
- package/lib/view/invoicing/settingsView/settingsViewEpics.d.ts +0 -12
- package/lib/view/invoicing/settingsView/settingsViewEpics.js +0 -99
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { createSlice } from '@reduxjs/toolkit';
|
|
2
2
|
import { clearAll } from '../../../rootActions';
|
|
3
|
+
import { entityToInvoicingQboSettingsLocalData, } from './invoicingQboSettingsFormConfig';
|
|
3
4
|
export const initialState = {
|
|
4
5
|
fetchState: 'Not-Started',
|
|
5
6
|
error: undefined,
|
|
6
7
|
saveFetchState: { fetchState: 'Not-Started', error: undefined },
|
|
7
8
|
stripeFetchState: { fetchState: 'Not-Started', error: undefined },
|
|
8
9
|
settings: undefined,
|
|
10
|
+
// Listed so `clearAll` resets them: an in-progress draft left behind by a
|
|
11
|
+
// tenant switch would be shown and saved against the tenant switched to.
|
|
12
|
+
brandingDraft: undefined,
|
|
13
|
+
qboDraft: undefined,
|
|
9
14
|
hasValidState() {
|
|
10
15
|
return this.fetchState === 'Completed' && this.settings != null;
|
|
11
16
|
},
|
|
@@ -22,6 +27,11 @@ const settingsView = createSlice({
|
|
|
22
27
|
draft.settings = action.payload;
|
|
23
28
|
draft.fetchState = 'Completed';
|
|
24
29
|
draft.error = undefined;
|
|
30
|
+
// Seed the QBO page's local data from the response. An edit already in
|
|
31
|
+
// progress wins: a refetch behind the user must not discard it.
|
|
32
|
+
if (draft.qboDraft == null) {
|
|
33
|
+
draft.qboDraft = entityToInvoicingQboSettingsLocalData(action.payload.qbo);
|
|
34
|
+
}
|
|
25
35
|
},
|
|
26
36
|
updateInvoicingSettingsFailure(draft, action) {
|
|
27
37
|
draft.fetchState = 'Error';
|
|
@@ -36,6 +46,9 @@ const settingsView = createSlice({
|
|
|
36
46
|
saveInvoicingSettingsSuccess(draft, action) {
|
|
37
47
|
draft.settings = action.payload;
|
|
38
48
|
draft.saveFetchState = { fetchState: 'Completed', error: undefined };
|
|
49
|
+
// Re-seeded from what was just persisted, so the page keeps working off
|
|
50
|
+
// local data while showing the server's version of it.
|
|
51
|
+
draft.qboDraft = entityToInvoicingQboSettingsLocalData(action.payload.qbo);
|
|
39
52
|
},
|
|
40
53
|
saveInvoicingSettingsFailure(draft, action) {
|
|
41
54
|
draft.saveFetchState = { fetchState: 'Error', error: action.payload };
|
|
@@ -54,6 +67,17 @@ const settingsView = createSlice({
|
|
|
54
67
|
resetInvoicingBrandingFormDraft(draft) {
|
|
55
68
|
draft.brandingDraft = undefined;
|
|
56
69
|
},
|
|
70
|
+
updateInvoicingQboSettingsDraft(draft, action) {
|
|
71
|
+
draft.qboDraft = action.payload.localData;
|
|
72
|
+
},
|
|
73
|
+
// Trigger only — handled by submitInvoicingQboSettingsEpic, which reads the
|
|
74
|
+
// local data and converts it to the request body.
|
|
75
|
+
submitInvoicingQboSettings(draft) {
|
|
76
|
+
draft.saveFetchState = { fetchState: 'In-Progress', error: undefined };
|
|
77
|
+
},
|
|
78
|
+
resetInvoicingQboSettingsDraft(draft) {
|
|
79
|
+
draft.qboDraft = undefined;
|
|
80
|
+
},
|
|
57
81
|
connectInvoicingStripe: {
|
|
58
82
|
reducer(draft) {
|
|
59
83
|
draft.stripeFetchState = { fetchState: 'In-Progress', error: undefined };
|
|
@@ -85,5 +109,5 @@ const settingsView = createSlice({
|
|
|
85
109
|
});
|
|
86
110
|
},
|
|
87
111
|
});
|
|
88
|
-
export const { fetchInvoicingSettings, updateInvoicingSettings, updateInvoicingSettingsFailure, saveInvoicingSettings, saveInvoicingSettingsSuccess, saveInvoicingSettingsFailure, resetSaveInvoicingSettings, updateInvoicingBrandingFormDraft, submitInvoicingBrandingForm, resetInvoicingBrandingFormDraft, connectInvoicingStripe, disconnectInvoicingStripe, updateInvoicingStripeConnection, invoicingStripeConnectionFailure, } = settingsView.actions;
|
|
112
|
+
export const { fetchInvoicingSettings, updateInvoicingSettings, updateInvoicingSettingsFailure, saveInvoicingSettings, saveInvoicingSettingsSuccess, saveInvoicingSettingsFailure, resetSaveInvoicingSettings, updateInvoicingBrandingFormDraft, submitInvoicingBrandingForm, resetInvoicingBrandingFormDraft, updateInvoicingQboSettingsDraft, submitInvoicingQboSettings, resetInvoicingQboSettingsDraft, connectInvoicingStripe, disconnectInvoicingStripe, updateInvoicingStripeConnection, invoicingStripeConnectionFailure, } = settingsView.actions;
|
|
89
113
|
export default settingsView.reducer;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { getInvoicingQboAccountMappingId, } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
2
2
|
import { getFormattedAddress } from '../../addressView/addressViewSelector';
|
|
3
3
|
import { getInvoicingConfigView } from '../invoicingConfigView/invoicingConfigViewSelector';
|
|
4
|
+
import { getInvoicingQboView, isInvoicingAccountingPickerDataLoading, } from '../invoicingQboView/invoicingQboViewSelector';
|
|
4
5
|
import { INVOICING_BUSINESS_ADDRESS_TYPE, entityToInvoicingBrandingFormLocalData, } from './invoicingBrandingFormConfig';
|
|
6
|
+
import { initialInvoicingQboSettingsLocalData, } from './invoicingQboSettingsFormConfig';
|
|
5
7
|
/**
|
|
6
8
|
* Shared primitive: the raw invoicing settings. Consumed internally by other
|
|
7
9
|
* CES selectors (create-invoice, customer-detail, overview) and by non-settings
|
|
@@ -92,6 +94,45 @@ export const getInvoicingSettingsHubView = (state) => {
|
|
|
92
94
|
status,
|
|
93
95
|
};
|
|
94
96
|
};
|
|
97
|
+
/**
|
|
98
|
+
* Bundled view for the QBO configuration page: the draft it edits, the accounts
|
|
99
|
+
* and option lists its dropdowns render, the connection and sync health it
|
|
100
|
+
* reports, and the fetch states that decide between skeleton, form and error.
|
|
101
|
+
*
|
|
102
|
+
* `localData` is the draft once the user has edited, and the settings response
|
|
103
|
+
* before that — so the page has one field to read and CES owns when it becomes
|
|
104
|
+
* available, rather than the page copying settings into local state.
|
|
105
|
+
*/
|
|
106
|
+
export const getInvoicingQboSettingsFormView = (state) => {
|
|
107
|
+
const { error, fetchState, qboDraft, saveFetchState, settings } = state.invoicingSettingsViewState;
|
|
108
|
+
const { fetchState: configFetchState, qboAccountMappingKindOptions, qboCustomerMatchingOptions, qboSyncStatusOptions, } = getInvoicingConfigView(state);
|
|
109
|
+
const qboView = getInvoicingQboView(state);
|
|
110
|
+
return {
|
|
111
|
+
accountMappingKindOptions: qboAccountMappingKindOptions,
|
|
112
|
+
accounts: qboView.accounts,
|
|
113
|
+
backfillState: qboView.backfillState,
|
|
114
|
+
connection: qboView.connection,
|
|
115
|
+
configFetchState,
|
|
116
|
+
customerMatchingOptions: qboCustomerMatchingOptions,
|
|
117
|
+
// The dropdowns cannot be built before both the settings and the accounts
|
|
118
|
+
// land, so the page waits on either rather than rendering empty pickers.
|
|
119
|
+
isLoading: fetchState === 'Not-Started' ||
|
|
120
|
+
fetchState === 'In-Progress' ||
|
|
121
|
+
isInvoicingAccountingPickerDataLoading(state),
|
|
122
|
+
isSyncEnabledSaved: settings?.qbo?.enabled === true,
|
|
123
|
+
// Seeded in the reducer when the settings response lands, so this is a plain
|
|
124
|
+
// read rather than a second place that decides what the page starts from.
|
|
125
|
+
localData: qboDraft ?? initialInvoicingQboSettingsLocalData,
|
|
126
|
+
nestedAccountHierarchy: qboView.nestedAccountHierarchy,
|
|
127
|
+
retryFetchStateByTaskId: qboView.retryFetchStateByTaskId,
|
|
128
|
+
saveState: saveFetchState.fetchState === 'Not-Started' && error != null
|
|
129
|
+
? { fetchState, error }
|
|
130
|
+
: saveFetchState,
|
|
131
|
+
settingsFetchState: fetchState,
|
|
132
|
+
syncHealth: qboView.syncHealth,
|
|
133
|
+
syncStatusOptions: qboSyncStatusOptions,
|
|
134
|
+
};
|
|
135
|
+
};
|
|
95
136
|
/**
|
|
96
137
|
* Bundled view for the branding settings form: the draft `localData` (seeded
|
|
97
138
|
* from the existing settings until the user edits), the business-address label
|
|
@@ -131,6 +131,21 @@ const recommendation = createSlice({
|
|
|
131
131
|
};
|
|
132
132
|
},
|
|
133
133
|
},
|
|
134
|
+
clearRecommendation(draft) {
|
|
135
|
+
Object.assign(draft, initialState);
|
|
136
|
+
},
|
|
137
|
+
// Fire-and-forget human feedback on a recommendation (accept, ranked
|
|
138
|
+
// override or outside override). Handled by submitRecommendationFeedbackEpic
|
|
139
|
+
// which POSTs to the accounting recommendation-feedback endpoint. No state
|
|
140
|
+
// mutation: the categorization UX must not depend on the feedback round-trip.
|
|
141
|
+
submitRecommendationFeedback: {
|
|
142
|
+
reducer() {
|
|
143
|
+
// Fire-and-forget: no state mutation; the epic performs the POST.
|
|
144
|
+
},
|
|
145
|
+
prepare(args) {
|
|
146
|
+
return { payload: args };
|
|
147
|
+
},
|
|
148
|
+
},
|
|
134
149
|
},
|
|
135
150
|
extraReducers: (builder) => {
|
|
136
151
|
builder.addCase(clearAll, (draft) => {
|
|
@@ -138,7 +153,7 @@ const recommendation = createSlice({
|
|
|
138
153
|
});
|
|
139
154
|
},
|
|
140
155
|
});
|
|
141
|
-
export const { fetchEntityRecommendationsByTransactionId, fetchEntityRecommendationsForLineUpdate, fetchRecommendationByEntityName, fetchRecommendationByEntityId, updateRecommendationForEntity, updateRecommendationForEntityFailure, indicateReadyToInitializeRecommendation, } = recommendation.actions;
|
|
156
|
+
export const { fetchEntityRecommendationsByTransactionId, fetchEntityRecommendationsForLineUpdate, fetchRecommendationByEntityName, fetchRecommendationByEntityId, updateRecommendationForEntity, updateRecommendationForEntityFailure, indicateReadyToInitializeRecommendation, clearRecommendation, submitRecommendationFeedback, } = recommendation.actions;
|
|
142
157
|
export default recommendation.reducer;
|
|
143
158
|
const doUpdateRecommendationForEntity = (draft, entityId, entityType, payload) => {
|
|
144
159
|
const key = getEntityRecommendationKey(entityType, entityId);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { EMPTY } from 'rxjs';
|
|
2
|
+
import { catchError, filter, mergeMap } from 'rxjs/operators';
|
|
3
|
+
import { isSuccessStatus } from '../../responsePayload';
|
|
4
|
+
import { submitRecommendationFeedback } from './recommendationReducer';
|
|
5
|
+
const toRequestBody = (payload) => ({
|
|
6
|
+
line_id: payload.lineId ?? null,
|
|
7
|
+
dimension: payload.dimension,
|
|
8
|
+
recommendation_set_id: payload.recommendationSetId ?? null,
|
|
9
|
+
top_pick_source: payload.topPickSource ?? null,
|
|
10
|
+
shown_recommendations: (payload.shownRecommendations ?? []).map((recommendation) => ({
|
|
11
|
+
source: recommendation.source,
|
|
12
|
+
rank: recommendation.rank,
|
|
13
|
+
value: {
|
|
14
|
+
name: recommendation.value.name,
|
|
15
|
+
id: recommendation.value.id ?? null,
|
|
16
|
+
integration_id: recommendation.value.integrationId ?? null,
|
|
17
|
+
},
|
|
18
|
+
confidence: recommendation.confidence ?? null,
|
|
19
|
+
reasoning: recommendation.reasoning ?? null,
|
|
20
|
+
cot: recommendation.cot ?? [],
|
|
21
|
+
})),
|
|
22
|
+
selected: {
|
|
23
|
+
name: payload.selected.name,
|
|
24
|
+
id: payload.selected.id ?? null,
|
|
25
|
+
integration_id: payload.selected.integrationId ?? null,
|
|
26
|
+
is_new_entity: payload.selected.isNewEntity ?? false,
|
|
27
|
+
},
|
|
28
|
+
matched_source: payload.matchedSource ?? null,
|
|
29
|
+
matched_rank: payload.matchedRank ?? null,
|
|
30
|
+
outcome: payload.outcome,
|
|
31
|
+
reason_text: payload.reasonText ?? null,
|
|
32
|
+
skipped: payload.skipped ?? false,
|
|
33
|
+
retracts_feedback_id: payload.retractsFeedbackId ?? null,
|
|
34
|
+
features: payload.features ?? null,
|
|
35
|
+
});
|
|
36
|
+
// Fire-and-forget: the epic never re-emits an action. Feedback delivery is a
|
|
37
|
+
// side-effect that must not disrupt the categorization UX, so both the
|
|
38
|
+
// success and error paths complete silently (errors are logged for debugging).
|
|
39
|
+
export const submitRecommendationFeedbackEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(submitRecommendationFeedback.match), mergeMap((action) => {
|
|
40
|
+
const { transactionId } = action.payload;
|
|
41
|
+
return zeniAPI
|
|
42
|
+
.postAndGetJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/transactions/${transactionId}/recommendation-feedback`, toRequestBody(action.payload))
|
|
43
|
+
.pipe(mergeMap((response) => {
|
|
44
|
+
if (!isSuccessStatus(response)) {
|
|
45
|
+
console.error('submitRecommendationFeedbackEpic: recommendation feedback was not recorded', response.status);
|
|
46
|
+
}
|
|
47
|
+
return EMPTY;
|
|
48
|
+
}), catchError((error) => {
|
|
49
|
+
console.error('submitRecommendationFeedbackEpic: failed to submit recommendation feedback', error);
|
|
50
|
+
return EMPTY;
|
|
51
|
+
}));
|
|
52
|
+
}));
|
package/lib/index.d.ts
CHANGED
|
@@ -267,6 +267,7 @@ import { CompanyHealthMetricsLocalData, CompanyHealthViewUIState } from './view/
|
|
|
267
267
|
import { fetchCompanyHealthMetricView, initializeCompanyHealthMetricViewLocalData, removeSelectedCompanyId, saveCompanyHealthMetricById, updateLocalStore as updateCompanyHealthMetricLocalStore, updateCompanyHealthMetricViewErrorStatus, updateCompanyHealthMetricViewSuccessStatus, updateCompanyHealthViewUIState } from './view/companyHealthMetricView/companyHealthMetricViewReducer';
|
|
268
268
|
import { CompanyDetailWithHealthMetric, CompanyHealthMetricDropDownOption, CompanyHealthMetricViewSelector, ProductServiceKey, ProductServices, companyHealthMetricDropDownOptions, getCompanyHealthMetricView, hasCompanyHealthMetricFormFieldChanged, isCompanyRunwayInfinite } from './view/companyHealthMetricView/companyHealthMetricViewSelector';
|
|
269
269
|
import { fetchCompanyMonthEndReportHistoricData, fetchCompanyMonthEndReportHistoricDates, fetchCompanyMonthEndReportTemplates, fetchCompanyMonthEndReportView, fetchImproveUsingZeniGPT, resetCompanyMonthEndReportFetchStatus, resetSendCompanyMonthEndReportFetchStatus, saveCompanyMonthEndReport, sendCompanyMonthEndReport } from './view/companyMonthEndReportView/companyMonthEndReportViewReducer';
|
|
270
|
+
import { AgentInsightEdits, MonthEndTemplateData } from './view/companyMonthEndReportView/companyMonthEndReportViewPayload';
|
|
270
271
|
import { CompanyMonthEndReportHistoricDataSelectorView, CompanyMonthEndReportSelectorView, getCompanyMonthEndReportHistoricData, getCompanyMonthEndReportSelectorView } from './view/companyMonthEndReportView/companyMonthEndReportViewSelector';
|
|
271
272
|
import { AuditSummaryData, CompanyMonthEndReportData, CompanyMonthReportTemplates, TemplatesList } from './view/companyMonthEndReportView/companyMonthEndReportViewState';
|
|
272
273
|
import { fetchCockpitContext, fetchCompanyTaskManagerView, fetchTaskManagerMetrics, updateCompanyTaskManagerViewFilters } from './view/companyTaskManagerView/companyTaskManagerViewReducer';
|
|
@@ -320,12 +321,12 @@ import { getExpenseAutomationTransactionView, getLastTransferEntryReplacement }
|
|
|
320
321
|
import { applyTransactionFilters } from './view/expenseAutomationView/transactionFilterHelpers';
|
|
321
322
|
import { TRANSACTION_FILTER_CATEGORIES, TransactionFilterAmountMatchingOperator, TransactionFilterCategory, TransactionFilterCategoryDropdownOption, TransactionFilterCategoryField, TransactionFilterEntityType, TransactionFilters } from './view/expenseAutomationView/transactionFilterTypes';
|
|
322
323
|
import { CompletedSubTab, DEFAULT_COMPLETED_SUB_TAB, toCompletedSubTab } from './view/expenseAutomationView/types/completedSubTab';
|
|
323
|
-
import { DEFAULT_TRANSACTION_GROUP, TRANSACTION_GROUPS, TransactionGroup, toTransactionGroup } from './view/expenseAutomationView/types/transactionGroup';
|
|
324
324
|
import { FluxAnalysisActionType, FluxAnalysisReviewStatus, FluxAnalysisSectionType, FluxAnalysisSortKey, FluxAnalysisViewUIState, FluxBalancesByMonth } from './view/expenseAutomationView/types/fluxAnalysisViewState';
|
|
325
325
|
import { AccountSettingsLocalData, JEScheduleMainTab as ExpenseAutomationJEScheduleMainTab, JEScheduleSortKey as ExpenseAutomationJEScheduleSortKey, JESchedulesViewUIState as ExpenseAutomationJESchedulesViewUIState, JEScheduleLocalData, toJEScheduleMainTab as toExpenseAutomationJEScheduleMainTab, toJEScheduleSortKey as toExpenseAutomationJEScheduleSortKey } from './view/expenseAutomationView/types/jeSchedulesViewState';
|
|
326
326
|
import { BATCH_FILE_STATUSES, BatchDetails, BatchFile, BatchFileStatus, BatchListItem, BatchStatus, BatchStatusValue, BatchSummary, BulkUploadPhase, BulkUploadResultsTab, BulkUploadSortKey, BulkUploadState, CandidateRef, MatchCandidate, MatchSource, MissingReceiptsTab, isUnmatchedTabFileStatus, toBatchFileStatus, toBatchStatusValue, toBulkUploadPhase, toBulkUploadResultsTab, toBulkUploadSortKey, toMatchSource, toMissingReceiptsTab } from './view/expenseAutomationView/types/missingReceiptsViewState';
|
|
327
327
|
import { MissingReceiptsSortKey as ExpenseAutomationMissingReceiptsSortKey, MissingReceiptsViewState as ExpenseAutomationMissingReceiptsViewState, MissingReceiptsViewUIState as ExpenseAutomationMissingReceiptsViewUIState, toMissingReceiptsSortKey as toExpenseAutomationMissingReceiptsSortKey } from './view/expenseAutomationView/types/missingReceiptsViewState';
|
|
328
328
|
import { AccountReconciliationLocalData, CombinedStatementAccount, ExcludeAccountFromReconciliationPayload, ReconciliationViewTabType as ExpenseAutomationReconciliationViewTab, ParsedStatementData, ReconReconcileSortKey, ReconReviewSortKey, ReconciliationReconcileTabLocalData, ReconciliationReviewTabLocalData, SaveReconcileDetailActionPayload as SaveExpenseAutomationReconciliationActionType, StatementAccountScope, StatementDateConflict, StatementMeta, StatementTransaction, StatementTransactionForUpdate, StatementTransactionsUpdate, StatementUpdateLocalData, toReconciliationTabsType } from './view/expenseAutomationView/types/reconciliationViewState';
|
|
329
|
+
import { DEFAULT_TRANSACTION_GROUP, TRANSACTION_GROUPS, TransactionGroup, toTransactionGroup } from './view/expenseAutomationView/types/transactionGroup';
|
|
329
330
|
import { TransactionsTab as ExpenseAutomationTransactionsTab, TransactionsViewState as ExpenseAutomationTransactionsViewState, TransactionsViewUIState as ExpenseAutomationTransactionsViewUIState, SupportedTransactionCategorization, TransactionCategorizationLineItemData, TransactionReviewLocalData, TransactionsSortKey, TransactionsTab, toTransactionsTabKey as toExpenseAutomationTransactionsTabKey, toTransactionsSortKey } from './view/expenseAutomationView/types/transactionsViewState';
|
|
330
331
|
import { fetchRegisteredInterests, notifyMeForFeature } from './view/featureNotificationView/featureNotificationViewReducer';
|
|
331
332
|
import { getFeatureNotificationView, getRegisteredInterests, getRegisteredInterestsByFeature, isFeatureInterestRegistered } from './view/featureNotificationView/featureNotificationViewSelector';
|
|
@@ -415,7 +416,7 @@ import { ProfitAndLossProjectViewReport } from './view/profitAndLossProjectView/
|
|
|
415
416
|
import { ProfitAndLossProjectViewUIState } from './view/profitAndLossProjectView/profitAndLossProjectViewState';
|
|
416
417
|
import { fetchProjectList } from './view/projectList/projectListReducer';
|
|
417
418
|
import { ProjectListSelectorView, getProjectList } from './view/projectList/projectListSelector';
|
|
418
|
-
import { fetchEntityRecommendationsByTransactionId, fetchEntityRecommendationsForLineUpdate, fetchRecommendationByEntityId, fetchRecommendationByEntityName } from './view/recommendation/recommendationReducer';
|
|
419
|
+
import { fetchEntityRecommendationsByTransactionId, fetchEntityRecommendationsForLineUpdate, fetchRecommendationByEntityId, fetchRecommendationByEntityName, submitRecommendationFeedback } from './view/recommendation/recommendationReducer';
|
|
419
420
|
import { DEFAULT_REFERRER_AMOUNT, clearReferrals, fetchReferrals, fetchRewardsPlan, resendReferralInvite, saveReferralFormDataInLocalStore, sendReferralInvite, updateReferViewed, updateReferralListSortUiState } from './view/referralView/referralReducer';
|
|
420
421
|
import { ReferralListSelectorView, RewardsPlanCardReport, getInviteFormView, getReferralListView, getRewardsPlanCard } from './view/referralView/referralSelector';
|
|
421
422
|
import { AmountStatusTypes, InviteCompanyLocalData, ReferralAmountStatus, ReferralInvitation, ReferralListViewSortKey, ReferralStatus, ReferralViewState, ReferralViewUIState, RewardsPlanData, StatusTypes, toReferralListViewSortKeyType } from './view/referralView/referralState';
|
|
@@ -830,7 +831,7 @@ export { companyManagementSaveUpdates, fetchAllCockpitViews, fetchCompanyManagem
|
|
|
830
831
|
export { fetchReviewCompanyView, updateReviewCompanyListUIState, ReviewCompanyListUIState, ReviewCompanyView, ReviewCompanyColumnKey, ReviewTransactionsType, ReviewCompanySelectorView, getReviewCompanySelectorView, getReviewCompanyListCount, toReviewColumnKeyType, retryBankAccountConnection, AuditSummary, getAuditWarningsCount, };
|
|
831
832
|
export { CompanyPortfolioView, getCompanyPortfolioView, isInfiniteRunway };
|
|
832
833
|
export { AllCockpitTabsView, getAllCockpitTabsFilterView };
|
|
833
|
-
export { AuditSummaryData, fetchImproveUsingZeniGPT, fetchCompanyMonthEndReportView, sendCompanyMonthEndReport, saveCompanyMonthEndReport, resetCompanyMonthEndReportFetchStatus, resetSendCompanyMonthEndReportFetchStatus, getCompanyMonthEndReportSelectorView, CompanyMonthEndReportSelectorView, fetchCompanyMonthEndReportHistoricDates, fetchCompanyMonthEndReportHistoricData, fetchCompanyMonthEndReportTemplates, getCompanyMonthEndReportHistoricData, CompanyMonthEndReportHistoricDataSelectorView, CompanyMonthEndReportData, TemplatesList, CompanyMonthReportTemplates, };
|
|
834
|
+
export { AuditSummaryData, fetchImproveUsingZeniGPT, fetchCompanyMonthEndReportView, sendCompanyMonthEndReport, saveCompanyMonthEndReport, resetCompanyMonthEndReportFetchStatus, resetSendCompanyMonthEndReportFetchStatus, getCompanyMonthEndReportSelectorView, CompanyMonthEndReportSelectorView, AgentInsightEdits, MonthEndTemplateData, fetchCompanyMonthEndReportHistoricDates, fetchCompanyMonthEndReportHistoricData, fetchCompanyMonthEndReportTemplates, getCompanyMonthEndReportHistoricData, CompanyMonthEndReportHistoricDataSelectorView, CompanyMonthEndReportData, TemplatesList, CompanyMonthReportTemplates, };
|
|
834
835
|
export { Runway, AccountingSummary };
|
|
835
836
|
export { newAddressInLocalStore, getAddress, getNewAddress, getAllNewAddresses, getFormattedAddress, fetchAddress, AddressType, NewAddressData, AddressUpdatableInfo, createAddress, removeNewAddressDataInLocalStore, };
|
|
836
837
|
export { CockpitFilterCategory, CockpitFilters, DownloadCockpitTabOptions, FilterCombinationsByTabs, HealthViewSortKey, ManagementViewFilterCategoryField, ManagementViewSortKey, OnboardingViewSortKey, PortfolioViewFilterCategoryField, HealthMonitorViewFilterCategoryField, TaskManagerViewFilterCategoryField, PortfolioViewSortKey, SubscriptionViewFilterCategoryField, toManagementSortKeyType, toOnboardingSortKeyType, toPortfolioSortKeyType, toHealthSortKeyType, TaskGroupScope, TaskManagerViewSortKey, toTaskManagerSortKeyType, updateCompanyTaskManagerViewFilters, };
|
|
@@ -903,8 +904,9 @@ export { Filing1099TinType };
|
|
|
903
904
|
export { BillPayCardReport };
|
|
904
905
|
export { ReimbursementCardReport };
|
|
905
906
|
export { VendorListViewSortKey, VendorViewUIState, VendorListSelectorView, VendorListQuery, getVendorList, VendorListView, updateSortUiState, updatePageToken, updateYTDSelectionUIState, VendorListViewYTDSpendSortKey, isColumnYTDSpend, isVendorsTabVisible, VendorViewType, VendorReportIDType, toVendorReportIDType, VendorFiling1099ListSelectorView, getVendorFiling1099List, VendorFiling1099ListViewSortKey, VendorFiling1099ViewUIState, VendorFiling1099DownloadData, fetchVendorsFiling1099Download, Type1099Download, VendorFiling1099DownloadDataForType, };
|
|
906
|
-
export { fetchEntityRecommendationsByTransactionId, fetchEntityRecommendationsForLineUpdate, fetchRecommendationByEntityId, fetchRecommendationByEntityName, };
|
|
907
|
+
export { fetchEntityRecommendationsByTransactionId, fetchEntityRecommendationsForLineUpdate, fetchRecommendationByEntityId, fetchRecommendationByEntityName, submitRecommendationFeedback, };
|
|
907
908
|
export type { FetchEntityRecommendationsForLineUpdatePayload, RecommendationLineUpdateFlowType, } from './view/recommendation/recommendationReducer';
|
|
909
|
+
export type { RecommendationFeedbackDimension, RecommendationFeedbackOutcome, RecommendationFeedbackSource, RecommendationFeedbackValue, ShownRecommendationForFeedback, SubmitRecommendationFeedbackPayload, } from './view/recommendation/recommendationPayload';
|
|
908
910
|
export { fetchOwnerList };
|
|
909
911
|
export { ZeniAccountsConfigSelectorView, getZeniAccountsConfigDetail, ZeniAccountListSelectorView, getZeniAccountList, fetchZeniAccountList, fetchAccountList, DepositAccount, createCheckingAccount, fetchPaymentAccountList, unlinkPaymentAccount, getDepositAccountDetail, DepositAccountDetailSelectorView, DepositAccountListSelectorView, getAllDepositAccounts, getDepositAccountDetailForPDF, DepositAccountDetailForPDF, fetchDepositAccount, fetchZeniAccountsConfig, AccountHistoryWithBalances, TransferDetailLocalData, ReviewTransferDetail, updateTransferMoneyLocalData, updateTransferToLocalData, updateDepositToLocalData, transferMoney, getTransferDetail, TransferDetailSelectorView, clearTransferDetail, clearReviewTransferDetail, fetchReviewTransferDetail, fetchDepositAccountDetail, DepositAccountTransaction, DepositAccountWithAutoTransferRules, DepositTransactionStatusCode, DepositTransactionStatus, CheckDepositLocalData, depositCheck, updateCheckDepositLocalData, clearCheckDeposit, CheckDepositSelectorView, getCheckDepositDetail, updateDepositAccount, fetchDepositAccountHistorySuccess, fetchDepositAccountHistoryFailure, DepositAccountUpdateType, ZeniAccountSummaryWithBalance, fetchZeniAccStatementPage, getZeniAccStatements, ZeniAccStatementsSelectorView, ZeniAccountPaymentMethod, };
|
|
910
912
|
export { CommonHistoryView, HistoricEvent, HistoricEventUpdate, ActivityHistorySelectorView, };
|
|
@@ -1235,10 +1237,12 @@ export { getInvoicingCatalogItemDetail } from './view/invoicing/invoicingCatalog
|
|
|
1235
1237
|
export { getInvoicingPlanById } from './entity/invoicing/plan/planSelector';
|
|
1236
1238
|
export { getInvoicingProductById } from './entity/invoicing/product/productSelector';
|
|
1237
1239
|
export type { InvoicingCatalogItemDetailView } from './view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector';
|
|
1238
|
-
export { connectInvoicingStripe, disconnectInvoicingStripe, fetchInvoicingSettings, resetInvoicingBrandingFormDraft, resetSaveInvoicingSettings, saveInvoicingSettings, submitInvoicingBrandingForm, updateInvoicingBrandingFormDraft, updateInvoicingSettings, } from './view/invoicing/settingsView/settingsViewReducer';
|
|
1239
|
-
export { getInvoicingBrandingFormView, getInvoicingSettings, getInvoicingSettingsFetchState, getInvoicingSettingsHubView, getInvoicingSettingsView, } from './view/invoicing/settingsView/settingsViewSelector';
|
|
1240
|
-
export type { InvoicingBrandingFormView, InvoicingSettingsHubView, InvoicingSettingsView, } from './view/invoicing/settingsView/settingsViewSelector';
|
|
1240
|
+
export { connectInvoicingStripe, disconnectInvoicingStripe, fetchInvoicingSettings, resetInvoicingBrandingFormDraft, resetInvoicingQboSettingsDraft, resetSaveInvoicingSettings, saveInvoicingSettings, submitInvoicingBrandingForm, submitInvoicingQboSettings, updateInvoicingBrandingFormDraft, updateInvoicingQboSettingsDraft, updateInvoicingSettings, } from './view/invoicing/settingsView/settingsViewReducer';
|
|
1241
|
+
export { getInvoicingBrandingFormView, getInvoicingQboSettingsFormView, getInvoicingSettings, getInvoicingSettingsFetchState, getInvoicingSettingsHubView, getInvoicingSettingsView, } from './view/invoicing/settingsView/settingsViewSelector';
|
|
1242
|
+
export type { InvoicingBrandingFormView, InvoicingQboSettingsFormView, InvoicingSettingsHubView, InvoicingSettingsView, } from './view/invoicing/settingsView/settingsViewSelector';
|
|
1241
1243
|
export type { InvoicingBrandingFormLocalData } from './view/invoicing/settingsView/invoicingBrandingFormConfig';
|
|
1244
|
+
export type { InvoicingQboSettingsLocalData } from './view/invoicing/settingsView/invoicingQboSettingsFormConfig';
|
|
1245
|
+
export { entityToInvoicingQboSettingsLocalData, initialInvoicingQboSettingsLocalData, invoicingQboSettingsLocalDataToPayload, } from './view/invoicing/settingsView/invoicingQboSettingsFormConfig';
|
|
1242
1246
|
export { INVOICING_BUSINESS_ADDRESS_TYPE, entityToInvoicingBrandingFormLocalData, initialInvoicingBrandingFormLocalData, } from './view/invoicing/settingsView/invoicingBrandingFormConfig';
|
|
1243
1247
|
export { isStripeConnectedFromSettings } from './view/invoicing/settingsView/invoicingSettingsHelpers';
|
|
1244
1248
|
export { fetchInvoicingAccountingPickers, fetchInvoicingQboConnection, fetchInvoicingQboSyncHealth, retryInvoicingQboSyncTask, startInvoicingQboBackfill, } from './view/invoicing/invoicingQboView/invoicingQboViewReducer';
|
|
@@ -1247,7 +1251,7 @@ export type { InvoicingAccountingOption } from './view/invoicing/invoicingQboVie
|
|
|
1247
1251
|
export { getInvoicingQboView } from './view/invoicing/invoicingQboView/invoicingQboViewSelector';
|
|
1248
1252
|
export type { InvoicingQboView } from './view/invoicing/invoicingQboView/invoicingQboViewSelector';
|
|
1249
1253
|
export type { InvoicingQboConnection, InvoicingQboFailedTask, InvoicingQboSyncHealth, } from './view/invoicing/invoicingQboView/invoicingQboViewPayload';
|
|
1250
|
-
export { INVOICING_QBO_CUSTOMER_MATCHING_MODES, getInvoicingQboAccountMappingId, toInvoicingNamedOptionsByKey, toInvoicingQboCustomerMatchingMode,
|
|
1254
|
+
export { INVOICING_QBO_CUSTOMER_MATCHING_MODES, getInvoicingQboAccountMappingId, toInvoicingNamedOptionsByKey, toInvoicingQboCustomerMatchingMode, } from './entity/invoicing/invoicingCommonPayload';
|
|
1251
1255
|
export type { InvoicingNamedOption, InvoicingFieldHelp, InvoicingFieldHelpByCode, InvoicingFieldHelpGroup, InvoicingNamedOptionsByKey, InvoicingQboAccountMappingKindOption, InvoicingQboAccountMappingsPayload, InvoicingQboCustomerMatchingMode, InvoicingQboSettingsPayload, } from './entity/invoicing/invoicingCommonPayload';
|
|
1252
1256
|
export { acceptInvoicingTerms, enableInvoicing, fetchInvoicingConfig, resetInvoicingConfigActionStates, updateInvoicingConfig, } from './view/invoicing/invoicingConfigView/invoicingConfigViewReducer';
|
|
1253
1257
|
export { getInvoicingConfigView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
|