@zeniai/client-epic-state 5.3.12 → 5.3.13
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/commonStateTypes/animations.d.ts +1 -1
- package/lib/commonStateTypes/animations.js +1 -0
- package/lib/epic.d.ts +2 -1
- package/lib/epic.js +2 -0
- package/lib/esm/commonStateTypes/animations.js +1 -0
- package/lib/esm/epic.js +2 -0
- package/lib/esm/index.js +4 -4
- package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +65 -3
- package/lib/esm/view/aiCfoView/aiCfoViewSelector.js +25 -0
- package/lib/esm/view/aiCfoView/epics/transcribeAudioEpic.js +60 -0
- package/lib/esm/view/expenseAutomationView/types/transactionGroup.js +10 -5
- package/lib/esm/view/transactionDetail/createTransaction/createTransactionPayload.js +19 -3
- package/lib/esm/view/transactionDetail/createTransaction/createTransactionState.js +2 -0
- package/lib/index.d.ts +5 -5
- package/lib/index.js +28 -22
- package/lib/view/aiCfoView/aiCfoViewPayload.d.ts +20 -0
- package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +2 -2
- package/lib/view/aiCfoView/aiCfoViewReducer.js +66 -4
- package/lib/view/aiCfoView/aiCfoViewSelector.d.ts +8 -1
- package/lib/view/aiCfoView/aiCfoViewSelector.js +27 -0
- package/lib/view/aiCfoView/aiCfoViewState.d.ts +9 -0
- package/lib/view/aiCfoView/epics/transcribeAudioEpic.d.ts +19 -0
- package/lib/view/aiCfoView/epics/transcribeAudioEpic.js +64 -0
- package/lib/view/expenseAutomationView/payload/transactionCategorizationPayload.d.ts +2 -2
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +2 -2
- package/lib/view/expenseAutomationView/types/transactionGroup.d.ts +6 -6
- package/lib/view/expenseAutomationView/types/transactionGroup.js +10 -5
- package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +2 -2
- package/lib/view/transactionDetail/createTransaction/createTransactionPayload.d.ts +6 -3
- package/lib/view/transactionDetail/createTransaction/createTransactionPayload.js +19 -3
- package/lib/view/transactionDetail/createTransaction/createTransactionState.d.ts +7 -2
- package/lib/view/transactionDetail/createTransaction/createTransactionState.js +2 -0
- package/lib/view/transactionDetail/transactionDetailReducer.d.ts +20 -20
- package/package.json +1 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transcribeAudioEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const responsePayload_1 = require("../../../responsePayload");
|
|
7
|
+
const rootActions_1 = require("../../../rootActions");
|
|
8
|
+
const aiCfoViewReducer_1 = require("../aiCfoViewReducer");
|
|
9
|
+
const AUDIO_FIELD = 'audio';
|
|
10
|
+
const LANGUAGE_FIELD = 'language';
|
|
11
|
+
/** Extension only has to match the recorded format; the server reads the part's MIME type. */
|
|
12
|
+
const AUDIO_FILE_NAME = 'dictation.wav';
|
|
13
|
+
/**
|
|
14
|
+
* A hung request would otherwise pin `isTranscribing` true forever, and the composer
|
|
15
|
+
* gates both submit and the mic on it — leaving the user unable to send even typed
|
|
16
|
+
* text until something else resolved it.
|
|
17
|
+
*/
|
|
18
|
+
const TRANSCRIPTION_TIMEOUT_MS = 30000;
|
|
19
|
+
/**
|
|
20
|
+
* Voice dictation for the AI CFO composer. Dispatch `transcribeAudio(blob, language)` with a
|
|
21
|
+
* finished recording to POST it to the AI CFO micro-service `/1.0/transcriptions` endpoint;
|
|
22
|
+
* on success the transcript is appended to the composer input for the user to edit and send.
|
|
23
|
+
*
|
|
24
|
+
* `switchMap` (not `mergeMap`): a newer recording supersedes an older in-flight one, so a
|
|
25
|
+
* slow response can never append a stale transcript after a fresh one has already landed.
|
|
26
|
+
* The AbortController makes that cancellation real — `fetch` wrapped in a promise ignores
|
|
27
|
+
* an RxJS unsubscribe, so without the signal the superseded request would run to completion
|
|
28
|
+
* and still bill a transcription call whose result nothing wants.
|
|
29
|
+
*/
|
|
30
|
+
const transcribeAudioEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(aiCfoViewReducer_1.transcribeAudio.match), (0, operators_1.switchMap)((action) => {
|
|
31
|
+
const { audio, chatSessionId, language } = action.payload;
|
|
32
|
+
const abortController = new AbortController();
|
|
33
|
+
const formData = new FormData();
|
|
34
|
+
formData.append(AUDIO_FIELD, audio, AUDIO_FILE_NAME);
|
|
35
|
+
if (language != null && language !== '') {
|
|
36
|
+
formData.append(LANGUAGE_FIELD, language);
|
|
37
|
+
}
|
|
38
|
+
return zeniAPI
|
|
39
|
+
.postFormData(`${zeniAPI.apiEndPoints.aiCfoMicroServiceBaseUrl}/1.0/transcriptions`, formData, abortController.signal)
|
|
40
|
+
.pipe((0, operators_1.timeout)(TRANSCRIPTION_TIMEOUT_MS),
|
|
41
|
+
// A tenant switch clears the store; a transcript still in flight must not
|
|
42
|
+
// land in the next tenant's composer (both sessions can be `undefined`, so
|
|
43
|
+
// the reducer's session guard would let it through).
|
|
44
|
+
(0, operators_1.takeUntil)(actions$.pipe((0, operators_1.filter)(rootActions_1.clearAll.match))), (0, operators_1.map)((response) => {
|
|
45
|
+
if (!(0, responsePayload_1.isSuccessResponse)(response)) {
|
|
46
|
+
return (0, aiCfoViewReducer_1.transcribeAudioFailure)(response.status);
|
|
47
|
+
}
|
|
48
|
+
// An EMPTY transcript is a success (the mic caught silence) and the
|
|
49
|
+
// reducer leaves the composer alone. A MISSING one breaks the response
|
|
50
|
+
// contract, so it surfaces as an error rather than being coerced to
|
|
51
|
+
// silence the user cannot distinguish from a quiet room.
|
|
52
|
+
if (response.data?.transcript == null) {
|
|
53
|
+
return (0, aiCfoViewReducer_1.transcribeAudioFailure)((0, responsePayload_1.createZeniAPIStatus)('Transcription succeeded but the response carried no transcript', 'Unexpected Error'));
|
|
54
|
+
}
|
|
55
|
+
// The session id rides along so a transcript that lands after the user
|
|
56
|
+
// switched sessions is dropped rather than misfiled.
|
|
57
|
+
return (0, aiCfoViewReducer_1.transcribeAudioSuccess)(response.data.transcript, chatSessionId);
|
|
58
|
+
}), (0, operators_1.finalize)(() => abortController.abort()), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, aiCfoViewReducer_1.transcribeAudioFailure)((0, responsePayload_1.createZeniAPIStatus)(
|
|
59
|
+
// message (detailed) first, then the short title — per createZeniAPIStatus(message, title).
|
|
60
|
+
// JSON.stringify(Error) drops the (non-enumerable) message — extract it explicitly.
|
|
61
|
+
'Transcription REST API call errored out: ' +
|
|
62
|
+
(error instanceof Error ? error.message : String(error)), 'Unexpected Error')))));
|
|
63
|
+
}));
|
|
64
|
+
exports.transcribeAudioEpic = transcribeAudioEpic;
|
|
@@ -28,8 +28,8 @@ export interface TransactionCategorizationQueryPayload {
|
|
|
28
28
|
*/
|
|
29
29
|
search_all_statuses?: boolean;
|
|
30
30
|
/**
|
|
31
|
-
* Statement-level scope (`'expense' | 'income' | 'all'`). Always
|
|
32
|
-
* list epics. The backend `is_revenue_automation_enabled` gate is
|
|
31
|
+
* Statement-level scope (`'expense' | 'income' | 'other' | 'all'`). Always
|
|
32
|
+
* sent by the list epics. The backend `is_revenue_automation_enabled` gate is
|
|
33
33
|
* authoritative: when it is off the backend ignores this and returns the
|
|
34
34
|
* legacy expense scope regardless of the value, so there is no need to gate
|
|
35
35
|
* the send on the client (the gate isn't available to the redux epics anyway
|
|
@@ -70,8 +70,8 @@ export declare const fetchTransactionCategorization: import("@reduxjs/toolkit").
|
|
|
70
70
|
newSelectedTab: "review" | "autoCategorized";
|
|
71
71
|
}, "expenseAutomationTransactionsView/updateCurrentSelectedTransactionCategorizationTab", never, never>, updateTransactionCategorizationCompletedSubTab: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newSubTab: "manual" | "all" | "ai_accountant"], {
|
|
72
72
|
newSubTab: "manual" | "all" | "ai_accountant";
|
|
73
|
-
}, "expenseAutomationTransactionsView/updateTransactionCategorizationCompletedSubTab", never, never>, updateTransactionGroup: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newGroup: "income" | "expense" | "all"], {
|
|
74
|
-
newGroup: "income" | "expense" | "all";
|
|
73
|
+
}, "expenseAutomationTransactionsView/updateTransactionCategorizationCompletedSubTab", never, never>, updateTransactionGroup: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newGroup: "income" | "expense" | "other" | "all"], {
|
|
74
|
+
newGroup: "income" | "expense" | "other" | "all";
|
|
75
75
|
}, "expenseAutomationTransactionsView/updateTransactionGroup", never, never>, updateTransactionCategorizationSaveStatus: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", fetchState: FetchState, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
|
|
76
76
|
selectedTab: "review" | "autoCategorized";
|
|
77
77
|
fetchState: FetchState;
|
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
* verbatim to the listing API as `transaction_group`. When revenue automation is
|
|
4
4
|
* enabled for the tenant the backend scopes the whole view by the line
|
|
5
5
|
* account_type: `'expense'` -> expense accounts, `'income'` -> income accounts,
|
|
6
|
-
* `'
|
|
7
|
-
*
|
|
6
|
+
* `'other'` -> balance-sheet accounts other than bank/credit card (plus lines
|
|
7
|
+
* with no account type), `'all'` -> all three. The list epics always send it;
|
|
8
|
+
* when the gate is off the backend ignores it and returns the legacy expense
|
|
9
|
+
* scope.
|
|
8
10
|
*
|
|
9
11
|
* The wire value for expenses is the singular `'expense'` (matches the backend
|
|
10
12
|
* `TransactionGroup` enum) even though the picker labels it "Expenses".
|
|
11
|
-
* Balance-sheet groups (assets, liability) are reserved for later and are not
|
|
12
|
-
* part of this union yet.
|
|
13
13
|
*/
|
|
14
|
-
export declare const TRANSACTION_GROUPS: readonly ["all", "income", "expense"];
|
|
15
|
-
export declare const toTransactionGroup: (v: string | null | undefined) => "income" | "expense" | "all";
|
|
14
|
+
export declare const TRANSACTION_GROUPS: readonly ["all", "income", "expense", "other"];
|
|
15
|
+
export declare const toTransactionGroup: (v: string | null | undefined) => "income" | "expense" | "other" | "all";
|
|
16
16
|
export type TransactionGroup = ReturnType<typeof toTransactionGroup>;
|
|
17
17
|
/**
|
|
18
18
|
* Default group for the listing — matches the picker's default selection ("All").
|
|
@@ -7,15 +7,20 @@ const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
|
|
|
7
7
|
* verbatim to the listing API as `transaction_group`. When revenue automation is
|
|
8
8
|
* enabled for the tenant the backend scopes the whole view by the line
|
|
9
9
|
* account_type: `'expense'` -> expense accounts, `'income'` -> income accounts,
|
|
10
|
-
* `'
|
|
11
|
-
*
|
|
10
|
+
* `'other'` -> balance-sheet accounts other than bank/credit card (plus lines
|
|
11
|
+
* with no account type), `'all'` -> all three. The list epics always send it;
|
|
12
|
+
* when the gate is off the backend ignores it and returns the legacy expense
|
|
13
|
+
* scope.
|
|
12
14
|
*
|
|
13
15
|
* The wire value for expenses is the singular `'expense'` (matches the backend
|
|
14
16
|
* `TransactionGroup` enum) even though the picker labels it "Expenses".
|
|
15
|
-
* Balance-sheet groups (assets, liability) are reserved for later and are not
|
|
16
|
-
* part of this union yet.
|
|
17
17
|
*/
|
|
18
|
-
exports.TRANSACTION_GROUPS = [
|
|
18
|
+
exports.TRANSACTION_GROUPS = [
|
|
19
|
+
'all',
|
|
20
|
+
'income',
|
|
21
|
+
'expense',
|
|
22
|
+
'other',
|
|
23
|
+
];
|
|
19
24
|
const toTransactionGroup = (v) => (0, stringToUnion_1.stringToUnion)(v != null ? v.trim().toLowerCase() : '', exports.TRANSACTION_GROUPS);
|
|
20
25
|
exports.toTransactionGroup = toTransactionGroup;
|
|
21
26
|
/**
|
|
@@ -152,8 +152,8 @@ export type TransactionsViewState = {
|
|
|
152
152
|
selectedTransactionCategorizationCompletedSubTab: CompletedSubTab;
|
|
153
153
|
selectedTransactionCategorizationTab: TransactionsTab;
|
|
154
154
|
/**
|
|
155
|
-
* Statement-level scope (`'expense' | 'income' | 'all'`) forwarded
|
|
156
|
-
* listing API as `transaction_group`. Unlike the in-memory {@link
|
|
155
|
+
* Statement-level scope (`'expense' | 'income' | 'other' | 'all'`) forwarded
|
|
156
|
+
* to the listing API as `transaction_group`. Unlike the in-memory {@link
|
|
157
157
|
* TransactionsTabViewState.filters}, a change here invalidates every tab /
|
|
158
158
|
* sub-tab / count and drives a server refetch (the backend re-scopes the
|
|
159
159
|
* whole dataset by account_type). Only surfaced in the UI when the
|
|
@@ -13,8 +13,9 @@ import { CreateTransactionLocalData } from './createTransactionState';
|
|
|
13
13
|
* constant NAMES; ZENI_LINE_DETAIL_TYPE_TO_QBO_LINE_DETAIL_TYPE_MAP converts them for the
|
|
14
14
|
* body the backend sends on to QuickBooks, never for ours.
|
|
15
15
|
* 2. The QBO Purchases (check, credit_card_credit) send their reference number as
|
|
16
|
-
* `document_number`; a journal entry sends its entry name
|
|
17
|
-
*
|
|
16
|
+
* `document_number`; a journal entry sends its entry name, a bill its bill number and a
|
|
17
|
+
* vendor credit its reference number as `document_id`. All land on QBO's DocNumber, but
|
|
18
|
+
* QBOJournalEntry reads only `document_id`.
|
|
18
19
|
*/
|
|
19
20
|
export interface CreateTransactionAccountPayload {
|
|
20
21
|
qbo_id: ID;
|
|
@@ -53,10 +54,12 @@ export interface CreateTransactionRemitToAddressPayload {
|
|
|
53
54
|
export interface CreateTransactionRequest extends Record<string, unknown> {
|
|
54
55
|
transaction_date: string;
|
|
55
56
|
transaction_type: string;
|
|
56
|
-
/** journal_entry entry name (QBO DocNumber). */
|
|
57
|
+
/** journal_entry entry name, bill number or vendor_credit reference number (QBO DocNumber). */
|
|
57
58
|
document_id?: string;
|
|
58
59
|
/** check / credit_card_credit reference number (QBO Purchase). */
|
|
59
60
|
document_number?: string;
|
|
61
|
+
/** bill only. */
|
|
62
|
+
due_date?: string;
|
|
60
63
|
from_account_id?: ID;
|
|
61
64
|
/** credit_card_credit is modelled as a Purchase with Credit: true. */
|
|
62
65
|
is_credit?: boolean;
|
|
@@ -135,13 +135,29 @@ const prepareCreateTransactionPayload = (state, localData) => {
|
|
|
135
135
|
};
|
|
136
136
|
}
|
|
137
137
|
const lines = localData.lines.map((line) => toLinePayload(state, line, transactionType));
|
|
138
|
+
const documentIdField = localData.documentNumber != null && localData.documentNumber !== ''
|
|
139
|
+
? { document_id: localData.documentNumber }
|
|
140
|
+
: {};
|
|
138
141
|
if (transactionType === 'journal_entry') {
|
|
142
|
+
return { ...base, ...documentIdField, lines };
|
|
143
|
+
}
|
|
144
|
+
// Both post to accounts payable, so they carry no header account or payment type.
|
|
145
|
+
if (transactionType === 'vendor_credit') {
|
|
146
|
+
return {
|
|
147
|
+
...base,
|
|
148
|
+
vendor_id: toQboVendorId(state, localData.vendorId),
|
|
149
|
+
...documentIdField,
|
|
150
|
+
lines,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
if (transactionType === 'bill') {
|
|
139
154
|
return {
|
|
140
155
|
...base,
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
156
|
+
vendor_id: toQboVendorId(state, localData.vendorId),
|
|
157
|
+
...(localData.dueDate != null && {
|
|
158
|
+
due_date: localData.dueDate.format(timePeriod_1.DEFAULT_DATE_FORMAT),
|
|
144
159
|
}),
|
|
160
|
+
...documentIdField,
|
|
145
161
|
lines,
|
|
146
162
|
};
|
|
147
163
|
}
|
|
@@ -9,7 +9,7 @@ import { ZeniDate } from '../../../zeniDayJS';
|
|
|
9
9
|
* The transaction types the Create Transaction flow can originate. A narrow subset of
|
|
10
10
|
* TransactionType -- everything else is read-only and arrives via sync.
|
|
11
11
|
*/
|
|
12
|
-
export declare const ALL_CREATABLE_TRANSACTION_TYPES: readonly ["expense", "check", "credit_card_credit", "transfer", "journal_entry"];
|
|
12
|
+
export declare const ALL_CREATABLE_TRANSACTION_TYPES: readonly ["expense", "check", "credit_card_credit", "transfer", "journal_entry", "bill", "vendor_credit"];
|
|
13
13
|
export type CreatableTransactionType = (typeof ALL_CREATABLE_TRANSACTION_TYPES)[number];
|
|
14
14
|
/**
|
|
15
15
|
* The wire shape the create endpoint expects for a check's remit-to address. Deliberately not
|
|
@@ -54,8 +54,13 @@ export interface CreateTransactionLocalData {
|
|
|
54
54
|
/** Empty for transfer, which has no lines at all. */
|
|
55
55
|
lines: CreateTransactionLineLocalData[];
|
|
56
56
|
transactionType: CreatableTransactionType;
|
|
57
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* check / credit_card_credit / vendor_credit reference number, journal_entry entry name, or
|
|
59
|
+
* bill number.
|
|
60
|
+
*/
|
|
58
61
|
documentNumber?: string;
|
|
62
|
+
/** bill only. */
|
|
63
|
+
dueDate?: ZeniDate;
|
|
59
64
|
/** transfer */
|
|
60
65
|
fromAccountId?: ID;
|
|
61
66
|
paymentType?: PaymentType;
|
|
@@ -177,39 +177,39 @@ export declare const downloadAccountingProviderAttachment: import("@reduxjs/tool
|
|
|
177
177
|
}, "transactionDetail/deleteSplitLine", never, never>, toggleSplitEditMode: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionId: TransactionID, editMode: boolean], {
|
|
178
178
|
transactionId: TransactionID;
|
|
179
179
|
editMode: boolean;
|
|
180
|
-
}, "transactionDetail/toggleSplitEditMode", never, never>, initializeCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry"], {
|
|
181
|
-
transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
182
|
-
}, "transactionDetail/initializeCreateTransactionLocalData", never, never>, updateCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", localData: Partial<CreateTransactionLocalData>], {
|
|
183
|
-
transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
180
|
+
}, "transactionDetail/toggleSplitEditMode", never, never>, initializeCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry"], {
|
|
181
|
+
transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
182
|
+
}, "transactionDetail/initializeCreateTransactionLocalData", never, never>, updateCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", localData: Partial<CreateTransactionLocalData>], {
|
|
183
|
+
transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
184
184
|
localData: Partial<CreateTransactionLocalData>;
|
|
185
|
-
}, "transactionDetail/updateCreateTransactionLocalData", never, never>, updateCreateTransactionLineLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineId: string, lineUpdates: Partial<CreateTransactionLineLocalData>], {
|
|
186
|
-
transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
185
|
+
}, "transactionDetail/updateCreateTransactionLocalData", never, never>, updateCreateTransactionLineLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", lineId: string, lineUpdates: Partial<CreateTransactionLineLocalData>], {
|
|
186
|
+
transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
187
187
|
lineId: string;
|
|
188
188
|
lineUpdates: Partial<CreateTransactionLineLocalData>;
|
|
189
|
-
}, "transactionDetail/updateCreateTransactionLineLocalData", never, never>, addCreateTransactionLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", line?: Partial<CreateTransactionLineLocalData> | undefined], {
|
|
190
|
-
transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
189
|
+
}, "transactionDetail/updateCreateTransactionLineLocalData", never, never>, addCreateTransactionLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", line?: Partial<CreateTransactionLineLocalData> | undefined], {
|
|
190
|
+
transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
191
191
|
line: Partial<CreateTransactionLineLocalData> | undefined;
|
|
192
|
-
}, "transactionDetail/addCreateTransactionLine", never, never>, removeCreateTransactionLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineId: string], {
|
|
193
|
-
transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
192
|
+
}, "transactionDetail/addCreateTransactionLine", never, never>, removeCreateTransactionLine: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", lineId: string], {
|
|
193
|
+
transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
194
194
|
lineId: string;
|
|
195
|
-
}, "transactionDetail/removeCreateTransactionLine", never, never>, resetCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry"], {
|
|
196
|
-
transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
197
|
-
}, "transactionDetail/resetCreateTransactionLocalData", never, never>, createTransaction: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry"], {
|
|
198
|
-
transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
195
|
+
}, "transactionDetail/removeCreateTransactionLine", never, never>, resetCreateTransactionLocalData: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry"], {
|
|
196
|
+
transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
197
|
+
}, "transactionDetail/resetCreateTransactionLocalData", never, never>, createTransaction: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry"], {
|
|
198
|
+
transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
199
199
|
}, "transactionDetail/createTransaction", never, never>, createTransactionSuccessOrFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[fetchState: FetchState, createdTransactionId?: TransactionID | undefined, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
|
|
200
200
|
fetchState: FetchState;
|
|
201
201
|
createdTransactionId: TransactionID | undefined;
|
|
202
202
|
error: ZeniAPIStatus<Record<string, unknown>> | undefined;
|
|
203
|
-
}, "transactionDetail/createTransactionSuccessOrFailure", never, never>, setRecommendationsForCreateTransactionLines: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[], recommendations: Recommendation[], isAccountingClassesEnabled: boolean], {
|
|
204
|
-
transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
203
|
+
}, "transactionDetail/createTransactionSuccessOrFailure", never, never>, setRecommendationsForCreateTransactionLines: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[], recommendations: Recommendation[], isAccountingClassesEnabled: boolean], {
|
|
204
|
+
transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
205
205
|
lineIds: string[];
|
|
206
206
|
recommendations: Recommendation[];
|
|
207
207
|
isAccountingClassesEnabled: boolean;
|
|
208
|
-
}, "transactionDetail/setRecommendationsForCreateTransactionLines", never, never>, clearRecommendationsForCreateTransactionLines: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[]], {
|
|
209
|
-
transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
208
|
+
}, "transactionDetail/setRecommendationsForCreateTransactionLines", never, never>, clearRecommendationsForCreateTransactionLines: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[]], {
|
|
209
|
+
transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
210
210
|
lineIds: string[];
|
|
211
|
-
}, "transactionDetail/clearRecommendationsForCreateTransactionLines", never, never>, fetchVendorRecommendationsForCreateTransaction: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[], entity?: Entity | undefined], {
|
|
212
|
-
transactionType: "expense" | "check" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
211
|
+
}, "transactionDetail/clearRecommendationsForCreateTransactionLines", never, never>, fetchVendorRecommendationsForCreateTransaction: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry", lineIds: string[], entity?: Entity | undefined], {
|
|
212
|
+
transactionType: "expense" | "check" | "bill" | "vendor_credit" | "credit_card_credit" | "transfer" | "journal_entry";
|
|
213
213
|
lineIds: string[];
|
|
214
214
|
entity: Entity | undefined;
|
|
215
215
|
}, "transactionDetail/fetchVendorRecommendationsForCreateTransaction", never, never>, createTransactionAttachmentUploadFailure: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[failedAttachmentFileNames: string[]], {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.13",
|
|
4
4
|
"description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "lib/esm/index.js",
|