@zeniai/client-epic-state 5.1.42-betaDI4 → 5.1.42
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/snackbar/snackbarTypes.d.ts +1 -1
- package/lib/entity/snackbar/snackbarTypes.js +1 -1
- package/lib/entity/task/taskPayload.d.ts +1 -2
- package/lib/entity/task/taskPayload.js +1 -8
- package/lib/entity/task/taskReducer.d.ts +1 -8
- package/lib/entity/task/taskReducer.js +4 -29
- package/lib/entity/task/taskState.d.ts +0 -1
- package/lib/entity/tenant/epic/saveExternalConnectionEpic.js +15 -11
- package/lib/epic.d.ts +3 -5
- package/lib/epic.js +3 -5
- package/lib/esm/entity/snackbar/snackbarTypes.js +1 -1
- package/lib/esm/entity/task/taskPayload.js +1 -8
- package/lib/esm/entity/task/taskReducer.js +3 -28
- package/lib/esm/entity/tenant/epic/saveExternalConnectionEpic.js +15 -11
- package/lib/esm/epic.js +3 -5
- package/lib/esm/index.js +7 -7
- package/lib/esm/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.js +0 -3
- package/lib/esm/view/companyTaskManagerView/epics/fetchTaskManagerMetricsEpic.js +1 -7
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +7 -0
- package/lib/esm/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +0 -1
- package/lib/esm/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +9 -70
- package/lib/esm/view/taskManager/taskDetailView/taskDetailReducer.js +2 -56
- package/lib/esm/view/taskManager/taskDetailView/taskDetailSelector.js +9 -32
- package/lib/esm/view/taskManager/taskListView/epics/fetchTaskListEpic.js +1 -3
- package/lib/esm/view/taskManager/taskListView/taskList.js +0 -1
- package/lib/esm/view/taskManager/taskListView/taskListReducer.js +12 -240
- package/lib/esm/view/taskManager/taskListView/taskListSelector.js +0 -1
- package/lib/esm/view/taskManager/taskListView/taskListViewHelpers.js +0 -58
- package/lib/esm/view/transactionDetail/epics/saveTransactionHelper.js +22 -0
- package/lib/esm/view/transactionDetail/epics/updateTransactionDetailEpic.js +75 -3
- package/lib/esm/view/transactionDetail/journalEntryLinesViewModel.js +58 -0
- package/lib/esm/view/transactionDetail/transactionDetailLocalDataHelper.js +10 -8
- package/lib/esm/view/transactionDetail/transactionDetailReducer.js +66 -1
- package/lib/index.d.ts +10 -10
- package/lib/index.js +25 -25
- package/lib/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.js +0 -3
- package/lib/view/companyTaskManagerView/epics/fetchTaskManagerMetricsEpic.js +1 -7
- package/lib/view/companyView/types/cockpitTypes.d.ts +0 -3
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +7 -0
- package/lib/view/taskManager/taskDetailView/epics/initializeTaskToLocalStoreEpic.js +0 -1
- package/lib/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.d.ts +2 -2
- package/lib/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +8 -69
- package/lib/view/taskManager/taskDetailView/taskDetail.d.ts +0 -15
- package/lib/view/taskManager/taskDetailView/taskDetailReducer.d.ts +2 -14
- package/lib/view/taskManager/taskDetailView/taskDetailReducer.js +3 -57
- package/lib/view/taskManager/taskDetailView/taskDetailSelector.d.ts +1 -2
- package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +7 -30
- package/lib/view/taskManager/taskListView/epics/fetchTaskListEpic.js +1 -3
- package/lib/view/taskManager/taskListView/taskList.d.ts +1 -1
- package/lib/view/taskManager/taskListView/taskList.js +0 -1
- package/lib/view/taskManager/taskListView/taskListPayload.d.ts +0 -4
- package/lib/view/taskManager/taskListView/taskListReducer.d.ts +2 -6
- package/lib/view/taskManager/taskListView/taskListReducer.js +13 -241
- package/lib/view/taskManager/taskListView/taskListSelector.js +0 -1
- package/lib/view/taskManager/taskListView/taskListViewHelpers.d.ts +0 -11
- package/lib/view/taskManager/taskListView/taskListViewHelpers.js +1 -60
- package/lib/view/transactionDetail/epics/saveTransactionHelper.js +22 -0
- package/lib/view/transactionDetail/epics/updateTransactionDetailEpic.d.ts +5 -1
- package/lib/view/transactionDetail/epics/updateTransactionDetailEpic.js +77 -4
- package/lib/view/transactionDetail/journalEntryLinesViewModel.d.ts +27 -0
- package/lib/view/transactionDetail/journalEntryLinesViewModel.js +61 -1
- package/lib/view/transactionDetail/transactionDetailLocalDataHelper.js +10 -8
- package/lib/view/transactionDetail/transactionDetailReducer.d.ts +11 -2
- package/lib/view/transactionDetail/transactionDetailReducer.js +67 -2
- package/lib/view/transactionDetail/transactionDetailState.d.ts +8 -1
- package/lib/view/transactionDetail/transactionDetailTypes.d.ts +2 -0
- package/package.json +1 -1
- package/lib/esm/view/taskManager/taskDetailView/epics/createSubTaskEpic.js +0 -96
- package/lib/esm/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.js +0 -53
- package/lib/view/taskManager/taskDetailView/epics/createSubTaskEpic.d.ts +0 -9
- package/lib/view/taskManager/taskDetailView/epics/createSubTaskEpic.js +0 -100
- package/lib/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.d.ts +0 -8
- package/lib/view/taskManager/taskDetailView/epics/fetchSubTasksEpic.js +0 -57
|
@@ -58,7 +58,9 @@ export const updateTransactionDetailEpic = (actions$, state$, zeniAPI) => action
|
|
|
58
58
|
if (response.data.vendors != null) {
|
|
59
59
|
actions.push(updateVendors(response.data.vendors, 'merge'));
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
// 'replace' so deleted lines are removed from Redux; 'merge' would
|
|
62
|
+
// keep any line absent from the server response (deletion bug).
|
|
63
|
+
actions.push(updateTransaction(transactionDetailKeyForResponse, response.data.transaction, 'replace'));
|
|
62
64
|
actions.push(initializeTransactionDetailLocalData({
|
|
63
65
|
transactionId: transactionIdResp,
|
|
64
66
|
vendorId: response.data.vendors?.[0]?.vendor_id,
|
|
@@ -159,7 +161,7 @@ function preparePayload(transactionState, vendorState, transactionDetailState, t
|
|
|
159
161
|
};
|
|
160
162
|
}
|
|
161
163
|
if (detail != null) {
|
|
162
|
-
const transUpdates = toTransactionUpdatePayload(saveUpdates.updates, detail, cotTransactionTracking, isAccountingProjectsEnabled, vendorUpdates, customerUpdates, currentSelectedEntity);
|
|
164
|
+
const transUpdates = toTransactionUpdatePayload(saveUpdates.updates, detail, cotTransactionTracking, isAccountingProjectsEnabled, vendorUpdates, customerUpdates, currentSelectedEntity, saveUpdates.deletedLineIds, saveUpdates.addedLines);
|
|
163
165
|
const entityUpdates = toEntityUpdatePayload(saveUpdates.entityRelatedUpdates);
|
|
164
166
|
return {
|
|
165
167
|
entity_related_updates: entityUpdates,
|
|
@@ -169,7 +171,7 @@ function preparePayload(transactionState, vendorState, transactionDetailState, t
|
|
|
169
171
|
}
|
|
170
172
|
return undefined;
|
|
171
173
|
}
|
|
172
|
-
export const toTransactionUpdatePayload = (updates, detail, cotTransactionTracking, isAccountingProjectsEnabled, vendorUpdates, customerUpdates, tranSelectedEntity) => {
|
|
174
|
+
export const toTransactionUpdatePayload = (updates, detail, cotTransactionTracking, isAccountingProjectsEnabled, vendorUpdates, customerUpdates, tranSelectedEntity, deletedLineIds, addedLines) => {
|
|
173
175
|
const transaction = Object.assign({}, detail);
|
|
174
176
|
transaction.memo = updates.memo ?? '';
|
|
175
177
|
// Unlike `memo` (always reset to '' when absent), `documentId` falls back to
|
|
@@ -178,6 +180,11 @@ export const toTransactionUpdatePayload = (updates, detail, cotTransactionTracki
|
|
|
178
180
|
// either the unchanged current value or undefined, and we must not send an
|
|
179
181
|
// empty `document_id` that the server would treat as clearing the number.
|
|
180
182
|
transaction.documentId = updates.documentId ?? transaction.documentId;
|
|
183
|
+
// Remove lines deleted by the user in edit mode before patching or serializing.
|
|
184
|
+
if (deletedLineIds != null && deletedLineIds.length > 0) {
|
|
185
|
+
const deletedSet = new Set(deletedLineIds);
|
|
186
|
+
transaction.lines = transaction.lines?.filter((line) => !deletedSet.has(line.id));
|
|
187
|
+
}
|
|
181
188
|
const recommendationUpdates = {};
|
|
182
189
|
for (const key in updates.updatesByLineId) {
|
|
183
190
|
const lineUpdates = updates.updatesByLineId[key];
|
|
@@ -185,6 +192,9 @@ export const toTransactionUpdatePayload = (updates, detail, cotTransactionTracki
|
|
|
185
192
|
if (line.id === key) {
|
|
186
193
|
const lineTobeUpdated = Object.assign({}, line);
|
|
187
194
|
lineTobeUpdated.lineDescription = lineUpdates.lineDescription ?? '';
|
|
195
|
+
if (lineUpdates.amount != null) {
|
|
196
|
+
lineTobeUpdated.amount = lineUpdates.amount;
|
|
197
|
+
}
|
|
188
198
|
if (lineUpdates.class != null) {
|
|
189
199
|
lineTobeUpdated.class = lineUpdates.class;
|
|
190
200
|
}
|
|
@@ -206,6 +216,16 @@ export const toTransactionUpdatePayload = (updates, detail, cotTransactionTracki
|
|
|
206
216
|
else {
|
|
207
217
|
lineTobeUpdated.vendor = undefined;
|
|
208
218
|
}
|
|
219
|
+
// Persist a debit↔credit flip on an existing JE line. `lineTobeUpdated`
|
|
220
|
+
// is typed as the account-and-class shape, but for a JE the runtime
|
|
221
|
+
// object is a JournalEntryTransactionLine, so cast to set the side.
|
|
222
|
+
if (lineUpdates.postingType != null) {
|
|
223
|
+
const journalEntryLine = lineTobeUpdated;
|
|
224
|
+
journalEntryLine.postingType = lineUpdates.postingType;
|
|
225
|
+
if (lineUpdates.postingTypeName != null) {
|
|
226
|
+
journalEntryLine.postingTypeName = lineUpdates.postingTypeName;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
209
229
|
if (lineUpdates.recommendation != null) {
|
|
210
230
|
recommendationUpdates[line.id] = lineUpdates.recommendation;
|
|
211
231
|
}
|
|
@@ -225,6 +245,12 @@ export const toTransactionUpdatePayload = (updates, detail, cotTransactionTracki
|
|
|
225
245
|
});
|
|
226
246
|
transaction.lines = newLineMap;
|
|
227
247
|
}
|
|
248
|
+
// Append lines added by the user in edit mode. Sending id='' tells the
|
|
249
|
+
// backend to create a new QBO line rather than updating an existing one.
|
|
250
|
+
if (addedLines != null && addedLines.length > 0) {
|
|
251
|
+
const newLines = addedLines.map(toNewTransactionLine);
|
|
252
|
+
transaction.lines = [...(transaction.lines ?? []), ...newLines];
|
|
253
|
+
}
|
|
228
254
|
transaction.recommendations = recommendationUpdates;
|
|
229
255
|
// Convert transaction to payload first
|
|
230
256
|
let basePayload;
|
|
@@ -299,6 +325,52 @@ const checkIfVendorOrCustomerMissingForAnyLineItem = (transactionPayload) => {
|
|
|
299
325
|
}
|
|
300
326
|
return isAnyVendorOrCustomerMissing;
|
|
301
327
|
};
|
|
328
|
+
// Converts a locally-created line item (from edit mode) into the wire shape
|
|
329
|
+
// expected by the categorize endpoint. Sending id='' signals the backend to
|
|
330
|
+
// create a new QBO line rather than update an existing one.
|
|
331
|
+
//
|
|
332
|
+
// Type-dispatched so each transaction family contributes its own new-line
|
|
333
|
+
// shape: journal entries carry debit/credit `postingType`, expenses carry
|
|
334
|
+
// `billable`. Phase 3 types extend this by adding a branch rather than forking
|
|
335
|
+
// the function.
|
|
336
|
+
const EMPTY_ACCOUNT = {
|
|
337
|
+
accountDescription: '',
|
|
338
|
+
accountId: '',
|
|
339
|
+
accountName: '',
|
|
340
|
+
labels: [],
|
|
341
|
+
};
|
|
342
|
+
export const toNewTransactionLine = (item) => {
|
|
343
|
+
if (item.type === 'journal_entry_transaction_line') {
|
|
344
|
+
const journalEntryLine = {
|
|
345
|
+
...item,
|
|
346
|
+
id: '',
|
|
347
|
+
type: 'journal_entry_transaction_line',
|
|
348
|
+
platformLineDetailType: item.platformLineDetailType ?? 'journal_entry_line_detail',
|
|
349
|
+
account: item.account ?? EMPTY_ACCOUNT,
|
|
350
|
+
billable: item.billable ?? 'not_billable',
|
|
351
|
+
isCategoryMiscategorized: false,
|
|
352
|
+
isClassMiscategorized: false,
|
|
353
|
+
lineTransactionType: item.lineTransactionType ?? 'journal_entry',
|
|
354
|
+
postingType: item.postingType ?? 'debit',
|
|
355
|
+
postingTypeName: item.postingTypeName != null && item.postingTypeName !== ''
|
|
356
|
+
? item.postingTypeName
|
|
357
|
+
: (item.postingType ?? 'debit').charAt(0).toUpperCase() +
|
|
358
|
+
(item.postingType ?? 'debit').slice(1),
|
|
359
|
+
};
|
|
360
|
+
return journalEntryLine;
|
|
361
|
+
}
|
|
362
|
+
const accountAndClassLine = {
|
|
363
|
+
...item,
|
|
364
|
+
id: '',
|
|
365
|
+
type: 'transaction_with_account_and_class_line',
|
|
366
|
+
platformLineDetailType: item.platformLineDetailType ?? 'account_based_expense_line_detail',
|
|
367
|
+
account: item.account ?? EMPTY_ACCOUNT,
|
|
368
|
+
billable: item.billable ?? 'not_billable',
|
|
369
|
+
isCategoryMiscategorized: false,
|
|
370
|
+
isClassMiscategorized: false,
|
|
371
|
+
};
|
|
372
|
+
return accountAndClassLine;
|
|
373
|
+
};
|
|
302
374
|
const toEntityUpdatePayload = (entityUpdates) => {
|
|
303
375
|
const entityUpdatesPayload = [];
|
|
304
376
|
let entityKey;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import Big from 'big.js';
|
|
1
2
|
import orderBy from 'lodash/orderBy';
|
|
2
3
|
import { stringToUnion } from '../../commonStateTypes/stringToUnion';
|
|
3
4
|
import { LINE_TYPE_LINKED, } from '../../entity/transaction/stateTypes/transactionLine';
|
|
@@ -101,6 +102,63 @@ export const journalEntryTotalsByPostingSide = (lines) => {
|
|
|
101
102
|
};
|
|
102
103
|
};
|
|
103
104
|
// ---------------------------------------------------------------------------
|
|
105
|
+
// Split reconciliation & validation (Phase 2 — JE split)
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
// Half-cent tolerance for the balance equality checks, matching the expense
|
|
108
|
+
// reconciliation row's epsilon. Sums use big.js so repeated decimal addition
|
|
109
|
+
// doesn't drift before the comparison.
|
|
110
|
+
const JOURNAL_ENTRY_BALANCE_EPSILON = 0.005;
|
|
111
|
+
/**
|
|
112
|
+
* Sums debit and credit sides (big.js-exact) and reports whether the split is
|
|
113
|
+
* balanced: total debits equal total credits AND equal the original
|
|
114
|
+
* transaction total. The original total of a valid JE equals its total debits,
|
|
115
|
+
* so it is passed in by the caller (`transaction.amount.amount`).
|
|
116
|
+
*/
|
|
117
|
+
export const journalEntrySplitReconciliation = (lines, originalTotal) => {
|
|
118
|
+
let debit = new Big(0);
|
|
119
|
+
let credit = new Big(0);
|
|
120
|
+
for (const line of lines) {
|
|
121
|
+
const amount = new Big(line.amount?.amount ?? 0);
|
|
122
|
+
if (line.postingType === 'debit') {
|
|
123
|
+
debit = debit.plus(amount);
|
|
124
|
+
}
|
|
125
|
+
else if (line.postingType === 'credit') {
|
|
126
|
+
credit = credit.plus(amount);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
const balancedToEachOther = debit
|
|
130
|
+
.minus(credit)
|
|
131
|
+
.abs()
|
|
132
|
+
.lt(JOURNAL_ENTRY_BALANCE_EPSILON);
|
|
133
|
+
const balancedToOriginal = debit
|
|
134
|
+
.minus(originalTotal)
|
|
135
|
+
.abs()
|
|
136
|
+
.lt(JOURNAL_ENTRY_BALANCE_EPSILON);
|
|
137
|
+
return {
|
|
138
|
+
debitTotal: debit.toNumber(),
|
|
139
|
+
creditTotal: credit.toNumber(),
|
|
140
|
+
isBalanced: balancedToEachOther && balancedToOriginal,
|
|
141
|
+
};
|
|
142
|
+
};
|
|
143
|
+
/**
|
|
144
|
+
* Save-time validation for a JE split (Figma `4165:33028` / `4165:45379`):
|
|
145
|
+
* 1. every line needs a non-zero debit or credit, and
|
|
146
|
+
* 2. total debits == total credits == original total.
|
|
147
|
+
* Returns the first failing rule's `errorKey` (maps to a strings entry). Does
|
|
148
|
+
* NOT require category/class to be chosen — balance is the only gate.
|
|
149
|
+
*/
|
|
150
|
+
export const validateJournalEntrySplit = (lines, originalTotal) => {
|
|
151
|
+
const everyLineHasSide = lines.every((line) => (line.postingType === 'debit' || line.postingType === 'credit') &&
|
|
152
|
+
Math.abs(line.amount?.amount ?? 0) > JOURNAL_ENTRY_BALANCE_EPSILON);
|
|
153
|
+
if (!everyLineHasSide) {
|
|
154
|
+
return { ok: false, errorKey: 'lineNeedsDebitOrCredit' };
|
|
155
|
+
}
|
|
156
|
+
if (!journalEntrySplitReconciliation(lines, originalTotal).isBalanced) {
|
|
157
|
+
return { ok: false, errorKey: 'totalsMustEqual' };
|
|
158
|
+
}
|
|
159
|
+
return { ok: true };
|
|
160
|
+
};
|
|
161
|
+
// ---------------------------------------------------------------------------
|
|
104
162
|
// Filter
|
|
105
163
|
// ---------------------------------------------------------------------------
|
|
106
164
|
/**
|
|
@@ -823,14 +823,16 @@ export const getChangedLineItemCountFromLocalData = (transaction, transactionLoc
|
|
|
823
823
|
line.type === 'transaction_with_product_or_service_line' ||
|
|
824
824
|
line.type === 'journal_entry_transaction_line') {
|
|
825
825
|
const accountLineLocal = transactionLocalData.lineItemById[lineId];
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
accountLineLocal.account?.
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
826
|
+
if (accountLineLocal != null) {
|
|
827
|
+
const accountLine = line;
|
|
828
|
+
hasCategoryChanged =
|
|
829
|
+
accountLineLocal.account?.qboId !== accountLine.account.qboId &&
|
|
830
|
+
accountLineLocal.account?.accountId !== accountLine.account.accountId;
|
|
831
|
+
hasClassChanged =
|
|
832
|
+
(accountLineLocal.class?.qboId != null ||
|
|
833
|
+
accountLine.class?.qboId != null) &&
|
|
834
|
+
accountLineLocal.class?.qboId !== accountLine.class?.qboId;
|
|
835
|
+
}
|
|
834
836
|
}
|
|
835
837
|
hasDescriptionChanged =
|
|
836
838
|
transactionLocalData.lineItemById[lineId] != null
|
|
@@ -663,6 +663,71 @@ const transactionDetail = createSlice({
|
|
|
663
663
|
};
|
|
664
664
|
},
|
|
665
665
|
},
|
|
666
|
+
// Split transaction — Phase 1 (expense)
|
|
667
|
+
addSplitLine: {
|
|
668
|
+
reducer(draft, action) {
|
|
669
|
+
const key = getTransactionDetailKey(action.payload.transactionId);
|
|
670
|
+
const detail = recordGet(draft.transactionDetailById, key, undefined);
|
|
671
|
+
if (detail != null) {
|
|
672
|
+
draft.transactionDetailById[key] = {
|
|
673
|
+
...detail,
|
|
674
|
+
transactionDetailLocalData: {
|
|
675
|
+
...detail.transactionDetailLocalData,
|
|
676
|
+
lineItemById: {
|
|
677
|
+
...detail.transactionDetailLocalData.lineItemById,
|
|
678
|
+
[action.payload.newLine.id]: action.payload.newLine,
|
|
679
|
+
},
|
|
680
|
+
},
|
|
681
|
+
};
|
|
682
|
+
}
|
|
683
|
+
},
|
|
684
|
+
prepare(transactionId, newLine) {
|
|
685
|
+
return { payload: { transactionId, newLine } };
|
|
686
|
+
},
|
|
687
|
+
},
|
|
688
|
+
deleteSplitLine: {
|
|
689
|
+
reducer(draft, action) {
|
|
690
|
+
const key = getTransactionDetailKey(action.payload.transactionId);
|
|
691
|
+
const detail = recordGet(draft.transactionDetailById, key, undefined);
|
|
692
|
+
if (detail == null) {
|
|
693
|
+
return;
|
|
694
|
+
}
|
|
695
|
+
const { lineItemById, deletedLineIds = [] } = detail.transactionDetailLocalData;
|
|
696
|
+
const updated = { ...lineItemById };
|
|
697
|
+
delete updated[action.payload.lineId];
|
|
698
|
+
draft.transactionDetailById[key] = {
|
|
699
|
+
...detail,
|
|
700
|
+
transactionDetailLocalData: {
|
|
701
|
+
...detail.transactionDetailLocalData,
|
|
702
|
+
lineItemById: updated,
|
|
703
|
+
deletedLineIds: [...deletedLineIds, action.payload.lineId],
|
|
704
|
+
},
|
|
705
|
+
};
|
|
706
|
+
},
|
|
707
|
+
prepare(transactionId, lineId) {
|
|
708
|
+
return { payload: { transactionId, lineId } };
|
|
709
|
+
},
|
|
710
|
+
},
|
|
711
|
+
toggleSplitEditMode: {
|
|
712
|
+
reducer(draft, action) {
|
|
713
|
+
const key = getTransactionDetailKey(action.payload.transactionId);
|
|
714
|
+
const detail = recordGet(draft.transactionDetailById, key, undefined);
|
|
715
|
+
if (detail != null) {
|
|
716
|
+
draft.transactionDetailById[key] = {
|
|
717
|
+
...detail,
|
|
718
|
+
transactionDetailLocalData: {
|
|
719
|
+
...detail.transactionDetailLocalData,
|
|
720
|
+
editMode: action.payload.editMode,
|
|
721
|
+
// Clear delete tracking when exiting edit mode without saving.
|
|
722
|
+
...(!action.payload.editMode && { deletedLineIds: [] }),
|
|
723
|
+
},
|
|
724
|
+
};
|
|
725
|
+
}
|
|
726
|
+
},
|
|
727
|
+
prepare(transactionId, editMode) {
|
|
728
|
+
return { payload: { transactionId, editMode } };
|
|
729
|
+
},
|
|
730
|
+
},
|
|
666
731
|
clearRecommendedVendorsList(draft) {
|
|
667
732
|
Object.assign(draft, initialState);
|
|
668
733
|
},
|
|
@@ -771,7 +836,7 @@ const transactionDetail = createSlice({
|
|
|
771
836
|
},
|
|
772
837
|
},
|
|
773
838
|
});
|
|
774
|
-
export const { downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentSuccess, downloadAccountingProviderAttachmentFailure, fetchTransactionDetail, updateTransactionDetailFetchState, removeTransactionDetail, clearTransactionDetail, uploadMissingAttachmentSuccess, updateTransactionDetail, updateTransactionDetailSaveStatus, clearTransactionDetailSaveStatus, markTransactionAsNotMiscategorized, deleteTransactionAttachment, deleteTransactionAttachmentFailure, deleteTransactionAttachmentSuccess, updateStatusForTransactionNotMiscategorizedUpdate, updateStatusConsolidatedSaveTransactionDetail, updateTransactionStateIfUpdateActionNotAllowed, saveTransactionDetail, initializeTransactionDetailLocalData, saveTransactionDetailLocalData, clearTransactionDetailLocalData, resetLineItemsCategoryClassInLocalData, setAllLineItemsToCategoryClassInLocalData, setAllLineItemsLocalDataIsUpdateAllChecked, setEntityRecommendationForLineIdsForTransactionDetail, markCategoryClassRecommendationsInProgressForTransactionDetail, markCategoryClassRecommendationsCompletedForTransactionDetail, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, updateSelectedVendor, updateSelectedCustomer, resetVendor, resetSelectedCustomer, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateVendorToAllLineItems, resetAllLineItemsToVendor, updateLatestSelectedEntity, updateVendorBulkRecommendationsFetchStatus, setIsVendorUpdateAllChecked, } = transactionDetail.actions;
|
|
839
|
+
export const { downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentSuccess, downloadAccountingProviderAttachmentFailure, fetchTransactionDetail, updateTransactionDetailFetchState, removeTransactionDetail, clearTransactionDetail, uploadMissingAttachmentSuccess, updateTransactionDetail, updateTransactionDetailSaveStatus, clearTransactionDetailSaveStatus, markTransactionAsNotMiscategorized, deleteTransactionAttachment, deleteTransactionAttachmentFailure, deleteTransactionAttachmentSuccess, updateStatusForTransactionNotMiscategorizedUpdate, updateStatusConsolidatedSaveTransactionDetail, updateTransactionStateIfUpdateActionNotAllowed, saveTransactionDetail, initializeTransactionDetailLocalData, saveTransactionDetailLocalData, clearTransactionDetailLocalData, resetLineItemsCategoryClassInLocalData, setAllLineItemsToCategoryClassInLocalData, setAllLineItemsLocalDataIsUpdateAllChecked, setEntityRecommendationForLineIdsForTransactionDetail, markCategoryClassRecommendationsInProgressForTransactionDetail, markCategoryClassRecommendationsCompletedForTransactionDetail, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, updateSelectedVendor, updateSelectedCustomer, resetVendor, resetSelectedCustomer, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateVendorToAllLineItems, resetAllLineItemsToVendor, updateLatestSelectedEntity, updateVendorBulkRecommendationsFetchStatus, setIsVendorUpdateAllChecked, addSplitLine, deleteSplitLine, toggleSplitEditMode, } = transactionDetail.actions;
|
|
775
840
|
export default transactionDetail.reducer;
|
|
776
841
|
function getUpdatedEntityLocalData(detail, updates, entity, resetRecommendations, type) {
|
|
777
842
|
const key = type === 'customer' ? 'customerUpdates' : 'vendorUpdates';
|
package/lib/index.d.ts
CHANGED
|
@@ -256,7 +256,7 @@ import { CompanyPassportLocalStoreDataView, CompanyPassportView, getCompanyPassp
|
|
|
256
256
|
import { CompanyPortfolioView, getCompanyPortfolioView, isInfiniteRunway } from './view/companyView/selector/companyPortfolioViewSelector';
|
|
257
257
|
import { AllCockpitTabsView, getAllCockpitTabsFilterView } from './view/companyView/selector/getAllCockpitTabsFilterView';
|
|
258
258
|
import { ALL_COCKPIT_TABS_FILE_TYPES, ALL_COCKPIT_TABS_IDS, CockpitDownloadTabsID, CockpitTabsFileType, CockpitTabsID, toCockpitTabsFileTypeStrict, toCockpitTabsIDStrict } from './view/companyView/types/cockpitTabsID';
|
|
259
|
-
import { CockpitFilterCategory, CockpitFilters, DownloadCockpitTabOptions, FilterCombinationsByTabs, HealthMonitorViewFilterCategoryField, HealthViewSortKey, ManagementViewFilterCategoryField, ManagementViewSortKey, OnboardingViewSortKey, PortfolioViewFilterCategoryField, PortfolioViewSortKey, SubscriptionViewFilterCategoryField,
|
|
259
|
+
import { CockpitFilterCategory, CockpitFilters, DownloadCockpitTabOptions, FilterCombinationsByTabs, HealthMonitorViewFilterCategoryField, HealthViewSortKey, ManagementViewFilterCategoryField, ManagementViewSortKey, OnboardingViewSortKey, PortfolioViewFilterCategoryField, PortfolioViewSortKey, SubscriptionViewFilterCategoryField, TaskManagerViewFilterCategoryField, TaskManagerViewSortKey, toHealthSortKeyType, toManagementSortKeyType, toOnboardingSortKeyType, toPortfolioSortKeyType, toTaskManagerSortKeyType } from './view/companyView/types/cockpitTypes';
|
|
260
260
|
import { ManagementUIState } from './view/companyView/types/companyManagementViewState';
|
|
261
261
|
import { CompanyDetailsLocalData, CompanyInfoLocalData, IncInfoLocalData, TaxDetailsLocalData } from './view/companyView/types/companyPassport/companyDetailsLocalData';
|
|
262
262
|
import { CompanyPassportLocalData, toCompanyPassportLocalData } from './view/companyView/types/companyPassport/companyPassportLocalData';
|
|
@@ -563,15 +563,15 @@ import { TagViewState } from './view/tagView/tagViewState';
|
|
|
563
563
|
import { CannedResponse, CannedResponsesViewState } from './view/taskManager/cannedResponsesView/cannedResponses';
|
|
564
564
|
import { deleteCannedResponse, fetchCannedResponses, saveCannedResponse } from './view/taskManager/cannedResponsesView/cannedResponsesReducer';
|
|
565
565
|
import { getCannedResponsesView } from './view/taskManager/cannedResponsesView/cannedResponsesSelector';
|
|
566
|
-
import {
|
|
567
|
-
import { archiveTask,
|
|
566
|
+
import { EditTaskLocalData, initialTaskDetail, initialTaskDetailLocalData } from './view/taskManager/taskDetailView/taskDetail';
|
|
567
|
+
import { archiveTask, deleteTask, discardTaskUpdatesInLocalStore, fetchTaskDetailPage, saveTaskDetail, saveTaskUpdatesToLocalStore, snoozeTask, unsnoozeTask } from './view/taskManager/taskDetailView/taskDetailReducer';
|
|
568
568
|
import { TaskDetailSelectorView, allTaskPriority, allTaskStatus, getTaskDetail } from './view/taskManager/taskDetailView/taskDetailSelector';
|
|
569
569
|
import { createTaskFromTaskGroupTemplate } from './view/taskManager/taskGroupTemplateView/taskGroupTemplateViewReducer';
|
|
570
570
|
import { createNewTaskGroup, deleteTaskGroup, fetchAllTaskGroups, updateTaskGroupName } from './view/taskManager/taskGroupView/taskGroupViewReducer';
|
|
571
571
|
import { ALL_TASK_LIST_TABS, DueDateGroupKey, TASK_LIST_FILTER_CATEGORIES, TASK_LIST_GROUP_BY_CATEGORIES, TaskFilterCategory, TaskGroupKey, TaskListFilterCategoryField, TaskListFilters, TaskListLocalData, TaskListTab, TaskListUIState, TaskListViewSortKey, toDueDateGroupKeyType, toTaskListGroupByKeyType, toTaskListGroupByKeyTypeStrict } from './view/taskManager/taskListView/taskList';
|
|
572
572
|
import { bulkUpdateTaskList, dragNDropTasks, fetchTaskListPage, initiateTaskListLocalData, removeTaskFromList, updateTaskFilters, updateTaskFromListView, updateTaskListLocalData, updateTaskListSearchText, updateTaskListTab, updateTaskListUIState } from './view/taskManager/taskListView/taskListReducer';
|
|
573
573
|
import { TaskGroupWithTasksList, TaskListSelectorView, TaskWithUserDetails, getAllTasks } from './view/taskManager/taskListView/taskListSelector';
|
|
574
|
-
import {
|
|
574
|
+
import { getDueDateValueFromDueDateGroupId, getTaskUpdates } from './view/taskManager/taskListView/taskListViewHelpers';
|
|
575
575
|
import { fetchTasksCard } from './view/tasksCard/tasksCardReducer';
|
|
576
576
|
import { TasksCardReport } from './view/tasksCard/tasksCardSelector';
|
|
577
577
|
import { fetchTopEx, updateTopExDownloadState, updateTopExTimeFrame } from './view/topEx/topExReducer';
|
|
@@ -582,9 +582,9 @@ import { TopExAccount, TopExReport, TopExTimePeriodWithMetaData, TopExpenses } f
|
|
|
582
582
|
*/
|
|
583
583
|
import { TOP_EX_TIME_PERIODS, TopExTimePeriod, TopExpense } from './view/topEx/topExState';
|
|
584
584
|
import { AccountingProviderAttachmentSelector, getAccountingProviderAttachment } from './view/transactionDetail/getAccountingProviderAttachmentSelector';
|
|
585
|
-
import { JOURNAL_ENTRY_SORT_KEYS, JournalEntryRowSortConfig, JournalEntrySortAccessors, JournalEntrySortKey, filterJournalEntryLinesExcludingLinked, journalEntryDefaultSortConfig, journalEntryTotalsByPostingSide, sortJournalEntryLines, sumJournalEntryAmounts, toJournalEntrySortKey } from './view/transactionDetail/journalEntryLinesViewModel';
|
|
585
|
+
import { JOURNAL_ENTRY_SORT_KEYS, JournalEntryRowSortConfig, JournalEntrySortAccessors, JournalEntrySortKey, filterJournalEntryLinesExcludingLinked, journalEntryDefaultSortConfig, journalEntrySplitReconciliation, journalEntryTotalsByPostingSide, sortJournalEntryLines, sumJournalEntryAmounts, toJournalEntrySortKey } from './view/transactionDetail/journalEntryLinesViewModel';
|
|
586
586
|
import { getChangedLineItemCountFromLocalData, isAccountUncategorized } from './view/transactionDetail/transactionDetailLocalDataHelper';
|
|
587
|
-
import { clearTransactionDetailSaveStatus, deleteTransactionAttachment, downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentFailure, downloadAccountingProviderAttachmentSuccess, fetchTransactionDetail, initializeTransactionDetailLocalData, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, resetAllLineItemsToVendor, resetLineItemsCategoryClassInLocalData, resetSelectedCustomer, resetVendor, saveTransactionDetail, saveTransactionDetailLocalData, setAllLineItemsLocalDataIsUpdateAllChecked, setAllLineItemsToCategoryClassInLocalData, setIsVendorUpdateAllChecked, updateLatestSelectedEntity, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateSelectedCustomer, updateSelectedVendor, updateTransactionDetail, updateVendorBulkRecommendationsFetchStatus, updateVendorToAllLineItems, uploadMissingAttachmentSuccess } from './view/transactionDetail/transactionDetailReducer';
|
|
587
|
+
import { addSplitLine, clearTransactionDetailSaveStatus, deleteSplitLine, deleteTransactionAttachment, downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentFailure, downloadAccountingProviderAttachmentSuccess, fetchTransactionDetail, initializeTransactionDetailLocalData, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, resetAllLineItemsToVendor, resetLineItemsCategoryClassInLocalData, resetSelectedCustomer, resetVendor, saveTransactionDetail, saveTransactionDetailLocalData, setAllLineItemsLocalDataIsUpdateAllChecked, setAllLineItemsToCategoryClassInLocalData, setIsVendorUpdateAllChecked, toggleSplitEditMode, updateLatestSelectedEntity, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateSelectedCustomer, updateSelectedVendor, updateTransactionDetail, updateVendorBulkRecommendationsFetchStatus, updateVendorToAllLineItems, uploadMissingAttachmentSuccess } from './view/transactionDetail/transactionDetailReducer';
|
|
588
588
|
import { TransactionDetailReport, VendorDetailsView, getInitialUpdatablePeriodsForTransactionRecommendations, getTransactionDetail, getTransactionDetailForTransaction } from './view/transactionDetail/transactionDetailSelector';
|
|
589
589
|
import { TransactionUpdates, getThirdPartyIdFromTransactionId } from './view/transactionDetail/transactionDetailState';
|
|
590
590
|
import { TransactionDetailLineItemData, TransactionDetailLocalData, TransactionVendorUpdates } from './view/transactionDetail/transactionDetailTypes';
|
|
@@ -743,7 +743,7 @@ export { MatchedTransaction };
|
|
|
743
743
|
export { SupportedTransaction, SupportedTransactionWithCOT, SupportedTransactionPayload, getSupportedTransactionById, };
|
|
744
744
|
export { clearTransactionList, updateLatestTransactionId, parallelFetchAccountTransactionList, parallelFetchEntityTransactionList, fetchAccountTransactionList, updateTransactionListByAccount, updateTransactionListByAccountFailure, updateTransactionListByAccountUIState, parallelFetchClassTransactionList, updateTransactionListByClassUIState, updateTransactionListByClass, parallelFetchProjectTransactionList, updateTransactionListByProjectUIState, updateTransactionListByProject, updateTransactionListUIStateByCategoryType, parallelFetchTransactionListByCategoryType, };
|
|
745
745
|
export { TransactionListByAccountReport, getTransactionListByAccount, getTransactionListUIStateByAccountKey, };
|
|
746
|
-
export { fetchEntityTransactionList, updateTransactionListByEntity, saveTransactionDetailLocalData, clearTransactionDetailSaveStatus, updateTransactionListByEntityFailure, resetLineItemsCategoryClassInLocalData, setAllLineItemsToCategoryClassInLocalData, saveTransactionDetail, setAllLineItemsLocalDataIsUpdateAllChecked, initializeTransactionDetailLocalData, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, updateSelectedVendor, updateSelectedCustomer, resetSelectedCustomer, resetVendor, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateVendorToAllLineItems, resetAllLineItemsToVendor, updateLatestSelectedEntity, updateVendorBulkRecommendationsFetchStatus, setIsVendorUpdateAllChecked, };
|
|
746
|
+
export { fetchEntityTransactionList, updateTransactionListByEntity, saveTransactionDetailLocalData, clearTransactionDetailSaveStatus, updateTransactionListByEntityFailure, resetLineItemsCategoryClassInLocalData, setAllLineItemsToCategoryClassInLocalData, saveTransactionDetail, setAllLineItemsLocalDataIsUpdateAllChecked, initializeTransactionDetailLocalData, markCategoryClassRecommendationsFailureForTransactionDetail, removeEntityRecommendationForLineIdForTransactionDetail, updateSelectedVendor, updateSelectedCustomer, resetSelectedCustomer, resetVendor, updateLocalDataWithTransactionsUpdateWithVendorCheckbox, updateVendorToAllLineItems, resetAllLineItemsToVendor, updateLatestSelectedEntity, updateVendorBulkRecommendationsFetchStatus, setIsVendorUpdateAllChecked, addSplitLine, deleteSplitLine, toggleSplitEditMode, };
|
|
747
747
|
export { TransactionUpdates, downloadAccountingProviderAttachment, downloadAccountingProviderAttachmentSuccess, downloadAccountingProviderAttachmentFailure, fetchTransactionDetail, updateTransactionDetail, uploadMissingAttachmentSuccess, deleteTransactionAttachment, getThirdPartyIdFromTransactionId, };
|
|
748
748
|
export { TransactionListByEntityView, getTransactionListByEntity };
|
|
749
749
|
export { TransactionListByClassReport, getTransactionListByClass, getTransactionListUIStateByClassKey, TransactionListByProjectReport, getTransactionListByProject, getTransactionListUIStateByProjectKey, getTransactionListByEntityForSinglePeriod, };
|
|
@@ -784,7 +784,7 @@ export { AllCockpitTabsView, getAllCockpitTabsFilterView };
|
|
|
784
784
|
export { AuditSummaryData, fetchImproveUsingZeniGPT, fetchCompanyMonthEndReportView, sendCompanyMonthEndReport, saveCompanyMonthEndReport, resetCompanyMonthEndReportFetchStatus, resetSendCompanyMonthEndReportFetchStatus, getCompanyMonthEndReportSelectorView, CompanyMonthEndReportSelectorView, fetchCompanyMonthEndReportHistoricDates, fetchCompanyMonthEndReportHistoricData, fetchCompanyMonthEndReportTemplates, getCompanyMonthEndReportHistoricData, CompanyMonthEndReportHistoricDataSelectorView, CompanyMonthEndReportData, TemplatesList, CompanyMonthReportTemplates, };
|
|
785
785
|
export { Runway, AccountingSummary };
|
|
786
786
|
export { newAddressInLocalStore, getAddress, getNewAddress, getAllNewAddresses, getFormattedAddress, fetchAddress, clearAddressView, AddressType, NewAddressData, AddressUpdatableInfo, createAddress, removeNewAddressDataInLocalStore, };
|
|
787
|
-
export { CockpitFilterCategory, CockpitFilters, DownloadCockpitTabOptions, FilterCombinationsByTabs, HealthViewSortKey, ManagementViewFilterCategoryField, ManagementViewSortKey, OnboardingViewSortKey, PortfolioViewFilterCategoryField, HealthMonitorViewFilterCategoryField, TaskManagerViewFilterCategoryField, PortfolioViewSortKey, SubscriptionViewFilterCategoryField, toManagementSortKeyType, toOnboardingSortKeyType, toPortfolioSortKeyType, toHealthSortKeyType,
|
|
787
|
+
export { CockpitFilterCategory, CockpitFilters, DownloadCockpitTabOptions, FilterCombinationsByTabs, HealthViewSortKey, ManagementViewFilterCategoryField, ManagementViewSortKey, OnboardingViewSortKey, PortfolioViewFilterCategoryField, HealthMonitorViewFilterCategoryField, TaskManagerViewFilterCategoryField, PortfolioViewSortKey, SubscriptionViewFilterCategoryField, toManagementSortKeyType, toOnboardingSortKeyType, toPortfolioSortKeyType, toHealthSortKeyType, TaskManagerViewSortKey, toTaskManagerSortKeyType, updateCompanyTaskManagerViewFilters, };
|
|
788
788
|
export { CockpitDownloadTabsID, CockpitTabsFileType, CockpitTabsID, ALL_COCKPIT_TABS_FILE_TYPES, ALL_COCKPIT_TABS_IDS, toCockpitTabsIDStrict, toCockpitTabsFileTypeStrict, };
|
|
789
789
|
export { AllowedValueWithCode, AllowedValue, AllowedValueWithID, isAllowedValueWithCode, isAllowedValueWithID, };
|
|
790
790
|
export { ManagementUIState, PortfolioUIState };
|
|
@@ -843,7 +843,7 @@ export { fetchCompanyOnboardingView, fetchQBOConnectionPool, updateQBOConnection
|
|
|
843
843
|
export { TransactionListByCategoryType, getTransactionsListByCategoryType, getTransactionListUIStateByCategoryType, TransactionCategoryType, };
|
|
844
844
|
export { TransactionDetailLocalData, TransactionDetailLineItemData, TransactionVendorUpdates, };
|
|
845
845
|
export { getChangedLineItemCountFromLocalData, isAccountUncategorized };
|
|
846
|
-
export { JOURNAL_ENTRY_SORT_KEYS, filterJournalEntryLinesExcludingLinked, journalEntryDefaultSortConfig, journalEntryTotalsByPostingSide, sortJournalEntryLines, sumJournalEntryAmounts, toJournalEntrySortKey, };
|
|
846
|
+
export { JOURNAL_ENTRY_SORT_KEYS, filterJournalEntryLinesExcludingLinked, journalEntryDefaultSortConfig, journalEntryTotalsByPostingSide, journalEntrySplitReconciliation, sortJournalEntryLines, sumJournalEntryAmounts, toJournalEntrySortKey, };
|
|
847
847
|
export type { JournalEntryRowSortConfig, JournalEntrySortAccessors, JournalEntrySortKey, };
|
|
848
848
|
export { openSnackbar, closeSnackbar, getSnackbar, SnackbarMessageType, SnackbarMessageSections, SnackbarMessageSectionTexts, SnackbarMessageConfig, };
|
|
849
849
|
export { getSpendManagementEffectiveListPeriod, getSelectedCompanyOfficer, showBillPayPromoPage, showReimbursementPromoPage, getActualPaymentDate, isVerifiedStatusCode, isVerifiedPaymentAccountProviderStatusCode, isBulkProcessing, getBillListUniqueType, getRemiListUniqueType, BulkOperationType, BulkOperationFinishedType, getBulkOperationSuffix, ZeniAccountsPromoConfig, toAccountsPromoConfig, SameDayAchDisablementConfig, toSameDayAchDisablementConfig, isPaymentMethodOutsideZeni, isAwaitingMarkAsPaid, checkIfLowBalance, };
|
|
@@ -893,7 +893,7 @@ export { fetchGlobalMerchantRecommendation, createGlobalMerchant, updateCreateGl
|
|
|
893
893
|
export { approveVendorGlobalReview, rejectVendorGlobalReview, fetchVendorGlobalReviewView, updateSelectedGlobalMerchant, updateVendorGlobalReviewViewUIState, getVendorGlobalReviewView, getTenantMerchantByMerchantId, toVendorGlobalReviewColumnSortKeyType, VendorGlobalReview, VendorGlobalReviewViewUIState, VendorGlobalReviewViewColumnSortKey, VendorGlobalReviewViewSelectorView, VendorGlobalReviewViewState, VendorGlobalReviewViewLocalData, updateVendorGlobalReviewViewLocalData, GlobalReviewPageCurrentSelectionByColumn, GlobalRecommendationFetchSource, };
|
|
894
894
|
export { fetchArAging, updateArAgingUIState, fetchArAgingDetail, updateArAgingDetailUIState, ArAgingReport, ArAgingDetail, NestedAgingBalancesByCustomer, getArAgingReport, getArAgingDetailForCustomer, updateArAgingNodeCollapseState, };
|
|
895
895
|
export { toRecurringBillFrequency, toRecurringBillFrequencyStrict, RecurringBillFrequency, RecurringBillDetail, RecurringBillConfig, RecurringBillStatus, RecurringBillPaymentStatus, };
|
|
896
|
-
export { Task, TaskPayload, TaskListSelectorView, TaskWithUserDetails, TaskListViewSortKey, TaskListUIState, TaskDetailSelectorView, EditTaskLocalData, TaskStatusCodeType, PriorityCodeType, getTaskGroupById, TaskStatus, TaskPriority, TaskCodeType, getAllTasks, fetchTaskListPage, getTaskDetail, fetchTaskDetailPage, saveTaskUpdatesToLocalStore, saveTaskDetail,
|
|
896
|
+
export { Task, TaskPayload, TaskListSelectorView, TaskWithUserDetails, TaskListViewSortKey, TaskListUIState, TaskDetailSelectorView, EditTaskLocalData, TaskStatusCodeType, PriorityCodeType, getTaskGroupById, TaskStatus, TaskPriority, TaskCodeType, getAllTasks, fetchTaskListPage, getTaskDetail, fetchTaskDetailPage, saveTaskUpdatesToLocalStore, saveTaskDetail, archiveTask, CannedResponse, CannedResponsesViewState, fetchCannedResponses, saveCannedResponse, deleteCannedResponse, getCannedResponsesView, updateTaskListSearchText, updateTaskListUIState, allTaskStatus, allTaskPriority, TaskListFilters, updateTaskFilters, TASK_LIST_FILTER_CATEGORIES, TASK_LIST_GROUP_BY_CATEGORIES, TaskListFilterCategoryField, deleteTask, discardTaskUpdatesInLocalStore, TaskFilterCategory, TaskType, TaskGroupWithTasksList, TaskListLocalData, bulkUpdateTaskList, createNewTaskGroup, initiateTaskListLocalData, deleteTaskGroup, updateTaskListLocalData, dragNDropTasks, updateTaskGroupName, TaskGroupState, TaskGroupKey, toTaskListGroupByKeyType, toTaskListGroupByKeyTypeStrict, getTaskUpdates, fetchAllTaskGroups, initialTaskDetail, getDueDateValueFromDueDateGroupId, toPriorityCodeType, toTaskStatusCodeType, DueDateGroupKey, toDueDateGroupKeyType, updateTaskFromListView, updateTaskListTab, removeTaskFromList, snoozeTask, unsnoozeTask, convertHHMMStrToMinutes, initialTaskDetailLocalData, TaskListTab, ALL_TASK_LIST_TABS, };
|
|
897
897
|
export { Tag, TagState, TagViewState, getAllTags, TagViewSelectorView, fetchTagList, createTag, deleteTag, };
|
|
898
898
|
export { CardPayment, CardPaymentViewState, SetupIntentData, CardPaymentSelectorView, getAllCardsAndBankPaymentMethods, createCardSetupIntent, confirmCardSetupIntent, addCardPaymentSource, fetchPaymentSources, resetCardPaymentErrorStatuses, clearCardPaymentView, AddCardPaymentSourceType, };
|
|
899
899
|
export { getAuditReportGroupViewSelectorView, getAuditRuleGroupViewSelectorView, getUserFromAllUsers, AuditReportGroupSelectorView, AuditReportGroupViewSelectorView, AuditRuleGroupViewSelectorView, fetchAuditRuleGroupView, fetchAuditReportGroupView, saveReasonForAuditRule, AuditRuleGroup, AuditRuleGroupReport, AuditReportRule, AuditRuleEntityType, AuditRuleEntityIdType, AuditRuleBypassReason, clearAuditReportGroupViewByCompanyId, };
|