@zeniai/client-epic-state 5.1.58 → 5.1.60
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/accountRecon/accountReconPayload.d.ts +1 -1
- package/lib/entity/accountRecon/accountReconReducer.js +15 -1
- package/lib/esm/entity/accountRecon/accountReconReducer.js +15 -1
- package/lib/esm/index.js +1 -2
- package/lib/esm/view/commonVendorView/transactionVendorView/epics/saveTransactionVendorEpic.js +0 -1
- package/lib/esm/view/commonVendorView/transactionVendorView/transactionVendorViewReducer.js +1 -2
- package/lib/esm/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +3 -3
- package/lib/esm/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.js +2 -3
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +1 -1
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +4 -4
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/initializeTransactionCategorizationLocalDataEpic.js +2 -4
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/markTransactionAsNotMiscategorizedEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/saveTransactionCategorizationEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/updateTransactionCategorizationEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/expenseAutomationViewReducer.js +3 -4
- package/lib/esm/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +14 -25
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +21 -32
- package/lib/esm/view/expenseAutomationView/selectors/statementParseViewSelector.js +0 -224
- package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewSelector.js +2 -1
- package/lib/esm/view/recommendation/fetchEntityRecommendationsByTransactionIdEpic.js +2 -2
- package/lib/esm/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.js +2 -2
- package/lib/esm/view/recommendation/recommendationReducer.js +1 -2
- package/lib/esm/view/transactionDetail/epics/saveTransactionDetailEpic.js +2 -2
- package/lib/esm/view/transactionDetail/epics/updateTransactionDetailEpic.js +2 -2
- package/lib/esm/view/transactionDetail/transactionDetailReducer.js +1 -2
- package/lib/index.d.ts +2 -3
- package/lib/index.js +38 -42
- package/lib/view/commonVendorView/transactionVendorView/epics/saveTransactionVendorEpic.js +0 -1
- package/lib/view/commonVendorView/transactionVendorView/transactionVendorViewReducer.d.ts +1 -2
- package/lib/view/commonVendorView/transactionVendorView/transactionVendorViewReducer.js +1 -2
- package/lib/view/expenseAutomationView/epics/common/fetchAllExpenseAutomationTabsEpic.js +3 -3
- package/lib/view/expenseAutomationView/epics/common/refreshExpenseAutomationCurrentTabEpic.js +2 -3
- package/lib/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +1 -1
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationViewEpic.js +4 -4
- package/lib/view/expenseAutomationView/epics/transactionCategorization/initializeTransactionCategorizationLocalDataEpic.js +2 -4
- package/lib/view/expenseAutomationView/epics/transactionCategorization/markTransactionAsNotMiscategorizedEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/saveTransactionCategorizationEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/updateTransactionCategorizationEpic.js +2 -2
- package/lib/view/expenseAutomationView/expenseAutomationViewReducer.d.ts +2 -5
- package/lib/view/expenseAutomationView/expenseAutomationViewReducer.js +3 -4
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +5 -5
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +14 -25
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +10 -23
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +21 -32
- package/lib/view/expenseAutomationView/selectors/statementParseViewSelector.d.ts +1 -15
- package/lib/view/expenseAutomationView/selectors/statementParseViewSelector.js +1 -233
- package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +7 -44
- package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.d.ts +1 -0
- package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.js +2 -1
- package/lib/view/recommendation/fetchEntityRecommendationsByTransactionIdEpic.js +2 -2
- package/lib/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.js +2 -2
- package/lib/view/recommendation/recommendationReducer.d.ts +1 -3
- package/lib/view/recommendation/recommendationReducer.js +1 -2
- package/lib/view/transactionDetail/epics/saveTransactionDetailEpic.js +2 -2
- package/lib/view/transactionDetail/epics/updateTransactionDetailEpic.js +2 -2
- package/lib/view/transactionDetail/transactionDetailReducer.d.ts +1 -3
- package/lib/view/transactionDetail/transactionDetailReducer.js +1 -2
- package/package.json +1 -1
|
@@ -128,7 +128,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
128
128
|
reducers: {
|
|
129
129
|
fetchTransactionCategorizationView: {
|
|
130
130
|
prepare(selectedTab, period, cacheOverride = false, keepExistingListItems = false, searchString, // when this is defined the output should go to search result IDs
|
|
131
|
-
pageToken, refreshViewInBackground = false, resetListItems = false
|
|
131
|
+
pageToken, refreshViewInBackground = false, resetListItems = false) {
|
|
132
132
|
return {
|
|
133
133
|
payload: {
|
|
134
134
|
selectedTab,
|
|
@@ -139,7 +139,6 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
139
139
|
cacheOverride,
|
|
140
140
|
refreshViewInBackground,
|
|
141
141
|
resetListItems,
|
|
142
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
143
142
|
},
|
|
144
143
|
};
|
|
145
144
|
},
|
|
@@ -207,7 +206,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
207
206
|
}
|
|
208
207
|
},
|
|
209
208
|
prepare(selectedTab, period, cacheOverride = false, keepExistingListItems = false, searchString, // when this is defined the output should go to search result IDs
|
|
210
|
-
pageToken, refreshViewInBackground = false, resetListItems
|
|
209
|
+
pageToken, refreshViewInBackground = false, resetListItems) {
|
|
211
210
|
return {
|
|
212
211
|
payload: {
|
|
213
212
|
selectedTab,
|
|
@@ -218,13 +217,12 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
218
217
|
cacheOverride,
|
|
219
218
|
refreshViewInBackground,
|
|
220
219
|
resetListItems,
|
|
221
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
222
220
|
},
|
|
223
221
|
};
|
|
224
222
|
},
|
|
225
223
|
},
|
|
226
224
|
initializeTransactionCategorizationViewLocalData: {
|
|
227
|
-
prepare(selectedTab, transactionIds, selectedPeriod, keepExistingListItems = false, pageToken, totalCount, lineItemsByTransactionIds, refreshViewInBackground = false
|
|
225
|
+
prepare(selectedTab, transactionIds, selectedPeriod, keepExistingListItems = false, pageToken, totalCount, lineItemsByTransactionIds, refreshViewInBackground = false) {
|
|
228
226
|
return {
|
|
229
227
|
payload: {
|
|
230
228
|
selectedTab,
|
|
@@ -235,7 +233,6 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
235
233
|
totalCount,
|
|
236
234
|
lineItemsByTransactionIds,
|
|
237
235
|
refreshViewInBackground,
|
|
238
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
239
236
|
},
|
|
240
237
|
};
|
|
241
238
|
},
|
|
@@ -339,13 +336,12 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
339
336
|
});
|
|
340
337
|
},
|
|
341
338
|
saveTransactionCategorization: {
|
|
342
|
-
prepare(selectedTab, transactionIds, cotTrackingByTransactionId
|
|
339
|
+
prepare(selectedTab, transactionIds, cotTrackingByTransactionId) {
|
|
343
340
|
return {
|
|
344
341
|
payload: {
|
|
345
342
|
selectedTab,
|
|
346
343
|
transactionIds,
|
|
347
344
|
cotTrackingByTransactionId,
|
|
348
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
349
345
|
},
|
|
350
346
|
};
|
|
351
347
|
},
|
|
@@ -419,21 +415,20 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
419
415
|
fetchState: 'In-Progress',
|
|
420
416
|
};
|
|
421
417
|
},
|
|
422
|
-
prepare(selectedTab, transactionIds, transactionSaveUpdates, cotTrackingByTransactionId
|
|
418
|
+
prepare(selectedTab, transactionIds, transactionSaveUpdates, cotTrackingByTransactionId) {
|
|
423
419
|
return {
|
|
424
420
|
payload: {
|
|
425
421
|
selectedTab,
|
|
426
422
|
transactionIds,
|
|
427
423
|
transactionSaveUpdates,
|
|
428
424
|
cotTrackingByTransactionId,
|
|
429
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
430
425
|
},
|
|
431
426
|
};
|
|
432
427
|
},
|
|
433
428
|
},
|
|
434
429
|
setAllItemsToCategoryClassInLocalDataForCategorization: {
|
|
435
430
|
reducer(draft, action) {
|
|
436
|
-
const { vendorId, customerId, selectedAccount, selectedClassBase, selectedProjectBase, transactions, transactionId, lineId, selectedTab,
|
|
431
|
+
const { vendorId, customerId, selectedAccount, selectedClassBase, selectedProjectBase, transactions, transactionId, lineId, selectedTab, isAccountingClassesEnabled, } = action.payload;
|
|
437
432
|
const transactionLocalData = (0, get_1.default)(draft.transactionCategorizationView[selectedTab]
|
|
438
433
|
.transactionReviewLocalDataById, transactionId, undefined);
|
|
439
434
|
const existingAccount = transactionLocalData?.transactionReviewLocalData.lineItemById[lineId]
|
|
@@ -459,7 +454,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
459
454
|
const selectedCheckBoxTransactionIds = draft.transactionCategorizationView[selectedTab]
|
|
460
455
|
.selectedCheckBoxTransactionIds;
|
|
461
456
|
if (selectedTransaction != null &&
|
|
462
|
-
(0, transactionCategorizationLocalDataHelper_1.shouldAutoSelectAndAdd)(selectedTransaction, newTransactionLocalData, selectedCheckBoxTransactionIds,
|
|
457
|
+
(0, transactionCategorizationLocalDataHelper_1.shouldAutoSelectAndAdd)(selectedTransaction, newTransactionLocalData, selectedCheckBoxTransactionIds, isAccountingClassesEnabled)) {
|
|
463
458
|
draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds = [
|
|
464
459
|
...selectedCheckBoxTransactionIds,
|
|
465
460
|
transactionId,
|
|
@@ -482,7 +477,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
482
477
|
: existingProjectId !== selectedProjectBase?.projectId
|
|
483
478
|
? 'project'
|
|
484
479
|
: 'class';
|
|
485
|
-
const { localData, similarTransactionUpdated } = (0, transactionCategorizationLocalDataHelper_1.toSetAllLineItemsToCategoryClass)(draft.transactionCategorizationView[selectedTab], transaction, transactionId, lineId, transactionLocalData.transactionReviewLocalData, updatedItem,
|
|
480
|
+
const { localData, similarTransactionUpdated } = (0, transactionCategorizationLocalDataHelper_1.toSetAllLineItemsToCategoryClass)(draft.transactionCategorizationView[selectedTab], transaction, transactionId, lineId, transactionLocalData.transactionReviewLocalData, updatedItem, selectedTab, vendorId, customerId, selectedAccount, selectedClassBase, selectedProjectBase, isAccountingClassesEnabled);
|
|
486
481
|
draft.transactionCategorizationView[selectedTab].transactionReviewLocalDataById[transaction.id] = {
|
|
487
482
|
transactionId: transaction.id,
|
|
488
483
|
transactionReviewLocalData: localData,
|
|
@@ -501,7 +496,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
501
496
|
...dirtyIds,
|
|
502
497
|
]);
|
|
503
498
|
},
|
|
504
|
-
prepare(selectedTab, transactionId, lineId, transactions, uncategorizedAccounts, vendorId, customerId, selectedAccount, selectedClassBase, lineEntity, recommendations,
|
|
499
|
+
prepare(selectedTab, transactionId, lineId, transactions, uncategorizedAccounts, vendorId, customerId, selectedAccount, selectedClassBase, lineEntity, recommendations, isAccountingClassesEnabled, selectedProjectBase) {
|
|
505
500
|
return {
|
|
506
501
|
payload: {
|
|
507
502
|
selectedTab,
|
|
@@ -517,13 +512,12 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
517
512
|
recommendations,
|
|
518
513
|
uncategorizedAccounts,
|
|
519
514
|
isAccountingClassesEnabled,
|
|
520
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
521
515
|
},
|
|
522
516
|
};
|
|
523
517
|
},
|
|
524
518
|
},
|
|
525
519
|
setEntityRecommendationForLineIdsForCategorization: {
|
|
526
|
-
prepare(selectedTab, transactionId, transaction, lineIds, entity, amount, recommendationWithCOTByLineId, uncategorizedAccounts,
|
|
520
|
+
prepare(selectedTab, transactionId, transaction, lineIds, entity, amount, recommendationWithCOTByLineId, uncategorizedAccounts, isAccountingClassesEnabled) {
|
|
527
521
|
return {
|
|
528
522
|
payload: {
|
|
529
523
|
selectedTab,
|
|
@@ -535,16 +529,15 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
535
529
|
recommendationWithCOTByLineId,
|
|
536
530
|
uncategorizedAccounts,
|
|
537
531
|
isAccountingClassesEnabled,
|
|
538
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
539
532
|
},
|
|
540
533
|
};
|
|
541
534
|
},
|
|
542
535
|
reducer(draft, action) {
|
|
543
|
-
const { entity, transaction, transactionId, selectedTab, lineIds,
|
|
536
|
+
const { entity, transaction, transactionId, selectedTab, lineIds, isAccountingClassesEnabled, } = action.payload;
|
|
544
537
|
const transactionLocalData = (0, get_1.default)(draft.transactionCategorizationView[selectedTab]
|
|
545
538
|
.transactionReviewLocalDataById, transactionId.id, undefined);
|
|
546
539
|
if (transactionLocalData != null) {
|
|
547
|
-
const newLocalData = (0, transactionCategorizationLocalDataHelper_1.setEntityRecommendationForLineIdInLocalData)(draft.transactionCategorizationView[selectedTab], transaction, transactionLocalData.transactionReviewLocalData, entity, lineIds,
|
|
540
|
+
const newLocalData = (0, transactionCategorizationLocalDataHelper_1.setEntityRecommendationForLineIdInLocalData)(draft.transactionCategorizationView[selectedTab], transaction, transactionLocalData.transactionReviewLocalData, entity, lineIds, action.payload.recommendationWithCOTByLineId, isAccountingClassesEnabled);
|
|
548
541
|
// Release the per-line fetch flag for every line this fetch
|
|
549
542
|
// covered. Done in-place on the freshly returned local data
|
|
550
543
|
// (the helper produces a new mutable object), before we write
|
|
@@ -717,7 +710,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
717
710
|
action.payload.status;
|
|
718
711
|
},
|
|
719
712
|
updateSelectedCustomerForTransaction(draft, action) {
|
|
720
|
-
const { transactionId, lineId, updatedCustomer, selectedTransaction, selectedTab,
|
|
713
|
+
const { transactionId, lineId, updatedCustomer, selectedTransaction, selectedTab, isAccountingClassesEnabled, } = action.payload;
|
|
721
714
|
const transactionLocalData = (0, get_1.default)(draft.transactionCategorizationView[selectedTab]
|
|
722
715
|
.transactionReviewLocalDataById, transactionId, undefined);
|
|
723
716
|
if (transactionLocalData != null) {
|
|
@@ -770,7 +763,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
770
763
|
.selectedCheckBoxTransactionIds;
|
|
771
764
|
if (newTransactionLocalData.customer != null &&
|
|
772
765
|
newTransactionLocalData.customer.id != null &&
|
|
773
|
-
(0, transactionCategorizationLocalDataHelper_1.shouldAutoSelectAndAdd)(selectedTransaction, newTransactionLocalData, selectedCheckBoxTransactionIds,
|
|
766
|
+
(0, transactionCategorizationLocalDataHelper_1.shouldAutoSelectAndAdd)(selectedTransaction, newTransactionLocalData, selectedCheckBoxTransactionIds, isAccountingClassesEnabled)) {
|
|
774
767
|
draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds = [
|
|
775
768
|
...selectedCheckBoxTransactionIds,
|
|
776
769
|
transactionId,
|
|
@@ -787,7 +780,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
787
780
|
}
|
|
788
781
|
},
|
|
789
782
|
updateSelectedVendorForTransaction(draft, action) {
|
|
790
|
-
const { transactionId, lineId, updatedVendor, selectedTransaction, selectedTab,
|
|
783
|
+
const { transactionId, lineId, updatedVendor, selectedTransaction, selectedTab, isAccountingClassesEnabled, } = action.payload;
|
|
791
784
|
const transactionLocalData = (0, get_1.default)(draft.transactionCategorizationView[selectedTab]
|
|
792
785
|
.transactionReviewLocalDataById, transactionId, undefined);
|
|
793
786
|
if (transactionLocalData != null) {
|
|
@@ -844,7 +837,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
844
837
|
.selectedCheckBoxTransactionIds;
|
|
845
838
|
if (newTransactionLocalData.vendor != null &&
|
|
846
839
|
newTransactionLocalData.vendor.id != null &&
|
|
847
|
-
(0, transactionCategorizationLocalDataHelper_1.shouldAutoSelectAndAdd)(selectedTransaction, newTransactionLocalData, selectedCheckBoxTransactionIds,
|
|
840
|
+
(0, transactionCategorizationLocalDataHelper_1.shouldAutoSelectAndAdd)(selectedTransaction, newTransactionLocalData, selectedCheckBoxTransactionIds, isAccountingClassesEnabled)) {
|
|
848
841
|
draft.transactionCategorizationView[selectedTab].selectedCheckBoxTransactionIds = [
|
|
849
842
|
...selectedCheckBoxTransactionIds,
|
|
850
843
|
transactionId,
|
|
@@ -892,12 +885,11 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
892
885
|
error: undefined,
|
|
893
886
|
};
|
|
894
887
|
},
|
|
895
|
-
prepare(selectedTab, transactionsInReview
|
|
888
|
+
prepare(selectedTab, transactionsInReview) {
|
|
896
889
|
return {
|
|
897
890
|
payload: {
|
|
898
891
|
selectedTab,
|
|
899
892
|
transactionsInReview,
|
|
900
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
901
893
|
},
|
|
902
894
|
};
|
|
903
895
|
},
|
|
@@ -1007,19 +999,17 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
1007
999
|
},
|
|
1008
1000
|
},
|
|
1009
1001
|
syncTransactionCategorizationFromDetailSave: {
|
|
1010
|
-
prepare(transactionId, updatedTransaction, pendingReviewLineIds
|
|
1002
|
+
prepare(transactionId, updatedTransaction, pendingReviewLineIds) {
|
|
1011
1003
|
return {
|
|
1012
1004
|
payload: {
|
|
1013
1005
|
transactionId,
|
|
1014
1006
|
updatedTransaction,
|
|
1015
1007
|
pendingReviewLineIds,
|
|
1016
|
-
uncategorizedIncomeExpense,
|
|
1017
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
1018
1008
|
},
|
|
1019
1009
|
};
|
|
1020
1010
|
},
|
|
1021
1011
|
reducer(draft, action) {
|
|
1022
|
-
const { transactionId, updatedTransaction, pendingReviewLineIds,
|
|
1012
|
+
const { transactionId, updatedTransaction, pendingReviewLineIds, } = action.payload;
|
|
1023
1013
|
const txnId = transactionId.id;
|
|
1024
1014
|
const reviewTabView = draft.transactionCategorizationView.review;
|
|
1025
1015
|
const autoTabView = draft.transactionCategorizationView.autoCategorized;
|
|
@@ -1041,7 +1031,7 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
1041
1031
|
}
|
|
1042
1032
|
// Partially reviewed: rebuild review tab local data with pending review lines
|
|
1043
1033
|
if (existsInReview) {
|
|
1044
|
-
const newLocalData = (0, transactionCategorizationLocalDataHelper_1.toTransactionDetailLocalData)(updatedTransaction, 'review', pendingReviewLineIds
|
|
1034
|
+
const newLocalData = (0, transactionCategorizationLocalDataHelper_1.toTransactionDetailLocalData)(updatedTransaction, 'review', pendingReviewLineIds);
|
|
1045
1035
|
reviewTabView.transactionReviewLocalDataById[txnId] = {
|
|
1046
1036
|
transactionId: txnId,
|
|
1047
1037
|
transactionReviewLocalData: {
|
|
@@ -1060,11 +1050,10 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
|
|
|
1060
1050
|
},
|
|
1061
1051
|
},
|
|
1062
1052
|
backgroundRefetchReviewTab: {
|
|
1063
|
-
prepare(period
|
|
1053
|
+
prepare(period) {
|
|
1064
1054
|
return {
|
|
1065
1055
|
payload: {
|
|
1066
1056
|
period,
|
|
1067
|
-
isUncategorizedExpenseCategoryEnabled,
|
|
1068
1057
|
},
|
|
1069
1058
|
};
|
|
1070
1059
|
},
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { ApplyStatementParseFormChangeInput, ApplyStatementParseFormChangeResult, GetStatementParseFormViewInput, ParsedStatementData, StatementMeta, StatementParseFormView, StatementParseManualBalanceField, StatementTransaction, StatementUpdateLocalData, ToStatementUpdateLocalDataFromFormViewInput } from '../types/reconciliationViewState';
|
|
1
|
+
import { ParsedStatementData, StatementMeta, StatementTransaction, StatementUpdateLocalData } from '../types/reconciliationViewState';
|
|
3
2
|
export interface StatementPeriod {
|
|
4
3
|
statementEndDate: string;
|
|
5
4
|
statementStartDate: string;
|
|
@@ -10,17 +9,4 @@ export declare const filterStatementTransactionsByPeriod: (transactions: Stateme
|
|
|
10
9
|
export declare const getParsedStatementDataForView: (parsedStatementData: ParsedStatementData | undefined, statementUpdateLocalData: StatementUpdateLocalData | undefined) => ParsedStatementData | undefined;
|
|
11
10
|
export declare const getStatementTransactionPeriodById: (allParsedTransactions: StatementTransaction[], parsedMeta: StatementMeta, localMeta: StatementMeta | undefined) => Record<string, boolean>;
|
|
12
11
|
export declare const getDateFilteredDeletedTransactionIds: (allParsedTransactions: StatementTransaction[], statementPeriod: StatementPeriod) => string[];
|
|
13
|
-
export declare const isStatementParseTransactionFieldChange: (changedField: string | undefined) => boolean;
|
|
14
|
-
export declare const isStatementParseManualBalanceField: (field: string | undefined) => field is StatementParseManualBalanceField;
|
|
15
|
-
export declare const shouldRecalculateStatementParseBalances: (changedField: string | undefined) => boolean;
|
|
16
|
-
export declare const resolveStatementParseBalanceFields: (formView: StatementParseFormView, changedField: string | undefined, accountType?: AccountType) => {
|
|
17
|
-
closingBalance: number;
|
|
18
|
-
openingBalance: number;
|
|
19
|
-
totalDeposits: number;
|
|
20
|
-
totalPayments: number;
|
|
21
|
-
};
|
|
22
|
-
export declare const areStatementParseBalancesConsistent: (formView: StatementParseFormView, accountType?: AccountType) => boolean;
|
|
23
12
|
export declare const mergeStatementParseDeletedTransactionIds: (originalTransactions: StatementTransaction[], statementPeriod: StatementPeriod, currentTransactionIds: Set<string>) => string[];
|
|
24
|
-
export declare const getStatementParseFormView: ({ accountType, parsedStatementMeta, originalTransactions, statementUpdateLocalData, }: GetStatementParseFormViewInput) => StatementParseFormView;
|
|
25
|
-
export declare const toStatementUpdateLocalDataFromFormView: ({ accountType, formView, parsedStatementMeta, originalTransactions, changedField, }: ToStatementUpdateLocalDataFromFormViewInput) => StatementUpdateLocalData;
|
|
26
|
-
export declare const applyStatementParseFormChange: ({ accountType, formView, changedField, parsedStatementMeta, originalTransactions, }: ApplyStatementParseFormChangeInput) => ApplyStatementParseFormChangeResult;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.mergeStatementParseDeletedTransactionIds = exports.getDateFilteredDeletedTransactionIds = exports.getStatementTransactionPeriodById = exports.getParsedStatementDataForView = exports.filterStatementTransactionsByPeriod = exports.isStatementTransactionInPeriod = exports.getEffectiveStatementPeriod = void 0;
|
|
4
4
|
const zeniDayJS_1 = require("../../../zeniDayJS");
|
|
5
5
|
const getEffectiveStatementPeriod = (parsedMeta, localMeta) => ({
|
|
6
6
|
statementStartDate: localMeta?.statementStartDate != null && localMeta.statementStartDate !== ''
|
|
@@ -73,122 +73,6 @@ const getDateFilteredDeletedTransactionIds = (allParsedTransactions, statementPe
|
|
|
73
73
|
.map((transaction) => transaction.statementTransactionId);
|
|
74
74
|
};
|
|
75
75
|
exports.getDateFilteredDeletedTransactionIds = getDateFilteredDeletedTransactionIds;
|
|
76
|
-
const roundCurrency = (value) => Math.round(value * 100) / 100;
|
|
77
|
-
const toApiDateString = (value) => {
|
|
78
|
-
if (value == null || value === '') {
|
|
79
|
-
return '';
|
|
80
|
-
}
|
|
81
|
-
return (0, zeniDayJS_1.date)(value).format('YYYY-MM-DD');
|
|
82
|
-
};
|
|
83
|
-
const computeStatementTransactionTotals = (transactions) => {
|
|
84
|
-
const totalDeposits = roundCurrency(transactions
|
|
85
|
-
.filter((txn) => txn.transactionDirection === 'credit')
|
|
86
|
-
.reduce((sum, txn) => sum + Math.abs(txn.amount ?? 0), 0));
|
|
87
|
-
const totalPayments = roundCurrency(transactions
|
|
88
|
-
.filter((txn) => txn.transactionDirection === 'debit')
|
|
89
|
-
.reduce((sum, txn) => sum + Math.abs(txn.amount ?? 0), 0));
|
|
90
|
-
return { totalDeposits, totalPayments };
|
|
91
|
-
};
|
|
92
|
-
const computeStatementClosingBalance = (openingBalance, totalDeposits, totalPayments, accountType) => roundCurrency(accountType === 'credit_card'
|
|
93
|
-
? openingBalance + totalPayments - totalDeposits
|
|
94
|
-
: openingBalance + totalDeposits - totalPayments);
|
|
95
|
-
const filterFormTransactionsInPeriod = (transactions, statementStartDate, statementEndDate) => {
|
|
96
|
-
if (statementStartDate === '' || statementEndDate === '') {
|
|
97
|
-
return transactions;
|
|
98
|
-
}
|
|
99
|
-
const periodStart = (0, zeniDayJS_1.date)(statementStartDate).startOf('day');
|
|
100
|
-
const periodEnd = (0, zeniDayJS_1.date)(statementEndDate).startOf('day');
|
|
101
|
-
return transactions.filter((txn) => {
|
|
102
|
-
if (txn.transactionDate === '') {
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
const txnDate = (0, zeniDayJS_1.date)(txn.transactionDate).startOf('day');
|
|
106
|
-
return (txnDate.isSameOrAfter(periodStart, 'day') &&
|
|
107
|
-
txnDate.isSameOrBefore(periodEnd, 'day'));
|
|
108
|
-
});
|
|
109
|
-
};
|
|
110
|
-
const isStatementParseTransactionFieldChange = (changedField) => changedField === 'transactions' ||
|
|
111
|
-
changedField?.startsWith('transactions.') === true;
|
|
112
|
-
exports.isStatementParseTransactionFieldChange = isStatementParseTransactionFieldChange;
|
|
113
|
-
const isStatementParseBalanceAffectingTransactionFieldChange = (changedField) => {
|
|
114
|
-
if (changedField === 'transactions') {
|
|
115
|
-
return true;
|
|
116
|
-
}
|
|
117
|
-
if (changedField?.startsWith('transactions.') !== true) {
|
|
118
|
-
return false;
|
|
119
|
-
}
|
|
120
|
-
return !changedField.endsWith('.transactionMemo');
|
|
121
|
-
};
|
|
122
|
-
const isStatementParseManualBalanceField = (field) => field === 'totalDeposits' ||
|
|
123
|
-
field === 'totalPayments' ||
|
|
124
|
-
field === 'closingBalance';
|
|
125
|
-
exports.isStatementParseManualBalanceField = isStatementParseManualBalanceField;
|
|
126
|
-
const shouldRecalculateStatementParseBalances = (changedField) => isStatementParseBalanceAffectingTransactionFieldChange(changedField) ||
|
|
127
|
-
changedField === 'statementStartDate' ||
|
|
128
|
-
changedField === 'statementEndDate';
|
|
129
|
-
exports.shouldRecalculateStatementParseBalances = shouldRecalculateStatementParseBalances;
|
|
130
|
-
const resolveStatementParseBalanceFields = (formView, changedField, accountType) => {
|
|
131
|
-
const inPeriodTransactions = filterFormTransactionsInPeriod(formView.transactions, formView.statementStartDate, formView.statementEndDate);
|
|
132
|
-
const { totalDeposits, totalPayments } = computeStatementTransactionTotals(inPeriodTransactions);
|
|
133
|
-
if (!(0, exports.shouldRecalculateStatementParseBalances)(changedField)) {
|
|
134
|
-
return {
|
|
135
|
-
openingBalance: formView.openingBalance,
|
|
136
|
-
closingBalance: formView.closingBalance,
|
|
137
|
-
totalDeposits: formView.totalDeposits,
|
|
138
|
-
totalPayments: formView.totalPayments,
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
return {
|
|
142
|
-
openingBalance: formView.openingBalance,
|
|
143
|
-
totalDeposits,
|
|
144
|
-
totalPayments,
|
|
145
|
-
closingBalance: computeStatementClosingBalance(formView.openingBalance, totalDeposits, totalPayments, accountType),
|
|
146
|
-
};
|
|
147
|
-
};
|
|
148
|
-
exports.resolveStatementParseBalanceFields = resolveStatementParseBalanceFields;
|
|
149
|
-
const areStatementParseBalancesConsistent = (formView, accountType) => {
|
|
150
|
-
// Validate the four balance fields against each other (what the user sees),
|
|
151
|
-
// not against recomputed transaction totals. Manual deposits/payments edits
|
|
152
|
-
// are allowed as long as closing matches the account-type formula.
|
|
153
|
-
return (roundCurrency(formView.closingBalance) ===
|
|
154
|
-
computeStatementClosingBalance(formView.openingBalance, formView.totalDeposits, formView.totalPayments, accountType));
|
|
155
|
-
};
|
|
156
|
-
exports.areStatementParseBalancesConsistent = areStatementParseBalancesConsistent;
|
|
157
|
-
const mapParsedTransactionToFormRow = (transaction, index) => ({
|
|
158
|
-
id: transaction.statementTransactionId || `parsed-${index}`,
|
|
159
|
-
transactionDate: toApiDateString(transaction.transactionDate),
|
|
160
|
-
transactionMemo: transaction.transactionMemo,
|
|
161
|
-
amount: transaction.amount,
|
|
162
|
-
transactionDirection: transaction.transactionDirection,
|
|
163
|
-
statementTransactionId: transaction.statementTransactionId,
|
|
164
|
-
});
|
|
165
|
-
const mapLocalTransactionToFormRow = (transaction, id) => ({
|
|
166
|
-
id,
|
|
167
|
-
transactionDate: toApiDateString(transaction.transactionDate),
|
|
168
|
-
transactionMemo: transaction.transactionMemo,
|
|
169
|
-
amount: transaction.amount,
|
|
170
|
-
transactionDirection: transaction.transactionDirection,
|
|
171
|
-
statementTransactionId: transaction.statementTransactionId,
|
|
172
|
-
});
|
|
173
|
-
const buildStatementParseFormTransactions = (originalTransactions, localData) => {
|
|
174
|
-
const deletedIdSet = new Set(localData.statementTransactions?.deletedIds ?? []);
|
|
175
|
-
const updatedById = new Map((localData.statementTransactions?.updated ?? [])
|
|
176
|
-
.filter((transaction) => transaction.statementTransactionId != null)
|
|
177
|
-
.map((transaction) => [
|
|
178
|
-
transaction.statementTransactionId,
|
|
179
|
-
transaction,
|
|
180
|
-
]));
|
|
181
|
-
const persistedTransactions = originalTransactions
|
|
182
|
-
.filter((transaction) => !deletedIdSet.has(transaction.statementTransactionId))
|
|
183
|
-
.map((transaction, index) => {
|
|
184
|
-
const updated = updatedById.get(transaction.statementTransactionId);
|
|
185
|
-
return updated != null
|
|
186
|
-
? mapLocalTransactionToFormRow(updated, transaction.statementTransactionId)
|
|
187
|
-
: mapParsedTransactionToFormRow(transaction, index);
|
|
188
|
-
});
|
|
189
|
-
const addedTransactions = (localData.statementTransactions?.added ?? []).map((transaction, index) => mapLocalTransactionToFormRow(transaction, `added-${index}`));
|
|
190
|
-
return [...persistedTransactions, ...addedTransactions];
|
|
191
|
-
};
|
|
192
76
|
const mergeStatementParseDeletedTransactionIds = (originalTransactions, statementPeriod, currentTransactionIds) => {
|
|
193
77
|
const dateFilteredDeletedIds = (0, exports.getDateFilteredDeletedTransactionIds)(originalTransactions, statementPeriod);
|
|
194
78
|
const dateFilteredDeletedIdSet = new Set(dateFilteredDeletedIds);
|
|
@@ -200,119 +84,3 @@ const mergeStatementParseDeletedTransactionIds = (originalTransactions, statemen
|
|
|
200
84
|
return [...new Set([...userDeletedIds, ...dateFilteredDeletedIds])];
|
|
201
85
|
};
|
|
202
86
|
exports.mergeStatementParseDeletedTransactionIds = mergeStatementParseDeletedTransactionIds;
|
|
203
|
-
const resolveStatementMetaDates = (parsedStatementMeta, localMeta) => ({
|
|
204
|
-
statementStartDate: localMeta?.statementStartDate != null && localMeta.statementStartDate !== ''
|
|
205
|
-
? localMeta.statementStartDate
|
|
206
|
-
: (parsedStatementMeta?.statementStartDate ?? ''),
|
|
207
|
-
statementEndDate: localMeta?.statementEndDate != null && localMeta.statementEndDate !== ''
|
|
208
|
-
? localMeta.statementEndDate
|
|
209
|
-
: (parsedStatementMeta?.statementEndDate ?? ''),
|
|
210
|
-
});
|
|
211
|
-
const getStatementParseFormView = ({ accountType, parsedStatementMeta, originalTransactions, statementUpdateLocalData, }) => {
|
|
212
|
-
const transactions = statementUpdateLocalData != null
|
|
213
|
-
? buildStatementParseFormTransactions(originalTransactions, statementUpdateLocalData)
|
|
214
|
-
: originalTransactions.map(mapParsedTransactionToFormRow);
|
|
215
|
-
const localMeta = statementUpdateLocalData?.statementMeta;
|
|
216
|
-
const { statementStartDate, statementEndDate } = resolveStatementMetaDates(parsedStatementMeta, localMeta);
|
|
217
|
-
const { totalDeposits, totalPayments } = computeStatementTransactionTotals(filterFormTransactionsInPeriod(transactions, statementStartDate, statementEndDate));
|
|
218
|
-
const openingBalance = localMeta?.openingBalance ?? parsedStatementMeta?.openingBalance ?? 0;
|
|
219
|
-
const computedClosingBalance = computeStatementClosingBalance(openingBalance, totalDeposits, totalPayments, accountType);
|
|
220
|
-
return {
|
|
221
|
-
statementStartDate,
|
|
222
|
-
statementEndDate,
|
|
223
|
-
openingBalance,
|
|
224
|
-
closingBalance: localMeta?.closingBalance ?? computedClosingBalance,
|
|
225
|
-
totalDeposits: localMeta?.totalDeposits ?? totalDeposits,
|
|
226
|
-
totalPayments: localMeta?.totalPayments ?? totalPayments,
|
|
227
|
-
transactions: filterFormTransactionsInPeriod(transactions, statementStartDate, statementEndDate),
|
|
228
|
-
};
|
|
229
|
-
};
|
|
230
|
-
exports.getStatementParseFormView = getStatementParseFormView;
|
|
231
|
-
const toStatementUpdateLocalDataFromFormView = ({ accountType, formView, parsedStatementMeta, originalTransactions, changedField, }) => {
|
|
232
|
-
const balanceFields = (0, exports.resolveStatementParseBalanceFields)(formView, changedField, accountType);
|
|
233
|
-
const currentTransactionIds = new Set(formView.transactions
|
|
234
|
-
.map((transaction) => transaction.statementTransactionId)
|
|
235
|
-
.filter((id) => id != null && id !== ''));
|
|
236
|
-
const added = [];
|
|
237
|
-
const updated = [];
|
|
238
|
-
formView.transactions.forEach((transaction) => {
|
|
239
|
-
const transactionDate = toApiDateString(transaction.transactionDate);
|
|
240
|
-
if (transaction.statementTransactionId == null) {
|
|
241
|
-
if (transaction.transactionDirection != null) {
|
|
242
|
-
added.push({
|
|
243
|
-
amount: transaction.amount,
|
|
244
|
-
transactionDate,
|
|
245
|
-
transactionDirection: transaction.transactionDirection,
|
|
246
|
-
transactionMemo: transaction.transactionMemo,
|
|
247
|
-
});
|
|
248
|
-
}
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
const original = originalTransactions.find((candidate) => candidate.statementTransactionId === transaction.statementTransactionId);
|
|
252
|
-
if (original != null &&
|
|
253
|
-
(original.amount !== transaction.amount ||
|
|
254
|
-
toApiDateString(original.transactionDate) !== transactionDate ||
|
|
255
|
-
original.transactionMemo !== transaction.transactionMemo)) {
|
|
256
|
-
updated.push({
|
|
257
|
-
amount: transaction.amount,
|
|
258
|
-
transactionDate,
|
|
259
|
-
transactionDirection: transaction.transactionDirection,
|
|
260
|
-
transactionMemo: transaction.transactionMemo,
|
|
261
|
-
statementTransactionId: transaction.statementTransactionId,
|
|
262
|
-
});
|
|
263
|
-
}
|
|
264
|
-
});
|
|
265
|
-
const statementPeriod = {
|
|
266
|
-
statementStartDate: toApiDateString(formView.statementStartDate),
|
|
267
|
-
statementEndDate: toApiDateString(formView.statementEndDate),
|
|
268
|
-
};
|
|
269
|
-
const deletedIds = (0, exports.mergeStatementParseDeletedTransactionIds)(originalTransactions, statementPeriod, currentTransactionIds);
|
|
270
|
-
const deletedIdSet = new Set(deletedIds);
|
|
271
|
-
const inPeriodAdded = filterFormTransactionsInPeriod(added, statementPeriod.statementStartDate, statementPeriod.statementEndDate);
|
|
272
|
-
const inPeriodUpdated = updated.filter((transaction) => transaction.statementTransactionId != null &&
|
|
273
|
-
!deletedIdSet.has(transaction.statementTransactionId));
|
|
274
|
-
return {
|
|
275
|
-
statementMeta: {
|
|
276
|
-
closingBalance: balanceFields.closingBalance,
|
|
277
|
-
openingBalance: balanceFields.openingBalance,
|
|
278
|
-
statementDataStatus: parsedStatementMeta?.statementDataStatus ?? {
|
|
279
|
-
code: '',
|
|
280
|
-
label: '',
|
|
281
|
-
},
|
|
282
|
-
statementEndDate: statementPeriod.statementEndDate,
|
|
283
|
-
statementStartDate: statementPeriod.statementStartDate,
|
|
284
|
-
statementStatus: parsedStatementMeta?.statementStatus ?? {
|
|
285
|
-
code: '',
|
|
286
|
-
label: '',
|
|
287
|
-
},
|
|
288
|
-
statementUploadId: parsedStatementMeta?.statementUploadId ?? '',
|
|
289
|
-
totalDeposits: balanceFields.totalDeposits,
|
|
290
|
-
totalPayments: balanceFields.totalPayments,
|
|
291
|
-
},
|
|
292
|
-
statementTransactions: {
|
|
293
|
-
added: inPeriodAdded,
|
|
294
|
-
deletedIds,
|
|
295
|
-
updated: inPeriodUpdated,
|
|
296
|
-
},
|
|
297
|
-
};
|
|
298
|
-
};
|
|
299
|
-
exports.toStatementUpdateLocalDataFromFormView = toStatementUpdateLocalDataFromFormView;
|
|
300
|
-
const applyStatementParseFormChange = ({ accountType, formView, changedField, parsedStatementMeta, originalTransactions, }) => {
|
|
301
|
-
const balanceFields = (0, exports.resolveStatementParseBalanceFields)(formView, changedField, accountType);
|
|
302
|
-
const shouldRecalculate = (0, exports.shouldRecalculateStatementParseBalances)(changedField);
|
|
303
|
-
const mergedFormView = shouldRecalculate
|
|
304
|
-
? { ...formView, ...balanceFields }
|
|
305
|
-
: formView;
|
|
306
|
-
return {
|
|
307
|
-
didRecalculateBalances: shouldRecalculate,
|
|
308
|
-
formView: mergedFormView,
|
|
309
|
-
localData: (0, exports.toStatementUpdateLocalDataFromFormView)({
|
|
310
|
-
accountType,
|
|
311
|
-
formView: mergedFormView,
|
|
312
|
-
parsedStatementMeta,
|
|
313
|
-
originalTransactions,
|
|
314
|
-
changedField,
|
|
315
|
-
}),
|
|
316
|
-
};
|
|
317
|
-
};
|
|
318
|
-
exports.applyStatementParseFormChange = applyStatementParseFormChange;
|
|
@@ -2,7 +2,7 @@ import { Amount } from '../../../commonStateTypes/amount';
|
|
|
2
2
|
import { FetchStateAndError, ID } from '../../../commonStateTypes/common';
|
|
3
3
|
import { SortOrder } from '../../../commonStateTypes/selectorTypes/sortOrderTypes';
|
|
4
4
|
import { MonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
|
|
5
|
-
import {
|
|
5
|
+
import { ReconciliationAccountSourceType } from '../../../entity/account/accountState';
|
|
6
6
|
import { BankStatusCodeType } from '../../../entity/accountRecon/accountReconState';
|
|
7
7
|
import { CustomerBase } from '../../../entity/customer/customerState';
|
|
8
8
|
import { VendorBase } from '../../../entity/vendor/vendorState';
|
|
@@ -251,6 +251,12 @@ export interface StatementTransactionForUpdate {
|
|
|
251
251
|
transactionDate: string;
|
|
252
252
|
transactionDirection: 'debit' | 'credit';
|
|
253
253
|
transactionMemo: string;
|
|
254
|
+
/**
|
|
255
|
+
* Client-only stable id for unsaved added rows. Preserved across local-data
|
|
256
|
+
* rebuilds so form rows survive add/delete without index remapping. Not sent
|
|
257
|
+
* to the API.
|
|
258
|
+
*/
|
|
259
|
+
id?: string;
|
|
254
260
|
statementTransactionId?: string;
|
|
255
261
|
}
|
|
256
262
|
export interface StatementTransactionsUpdate {
|
|
@@ -258,49 +264,6 @@ export interface StatementTransactionsUpdate {
|
|
|
258
264
|
deletedIds: string[];
|
|
259
265
|
updated: StatementTransactionForUpdate[];
|
|
260
266
|
}
|
|
261
|
-
export type StatementParseManualBalanceField = 'totalDeposits' | 'totalPayments' | 'closingBalance';
|
|
262
|
-
export interface StatementParseFormTransaction {
|
|
263
|
-
amount: number;
|
|
264
|
-
id: string;
|
|
265
|
-
transactionDate: string;
|
|
266
|
-
transactionDirection: 'debit' | 'credit';
|
|
267
|
-
transactionMemo: string;
|
|
268
|
-
statementTransactionId?: string;
|
|
269
|
-
}
|
|
270
|
-
export interface StatementParseFormView {
|
|
271
|
-
closingBalance: number;
|
|
272
|
-
openingBalance: number;
|
|
273
|
-
statementEndDate: string;
|
|
274
|
-
statementStartDate: string;
|
|
275
|
-
totalDeposits: number;
|
|
276
|
-
totalPayments: number;
|
|
277
|
-
transactions: StatementParseFormTransaction[];
|
|
278
|
-
}
|
|
279
|
-
export interface GetStatementParseFormViewInput {
|
|
280
|
-
originalTransactions: StatementTransaction[];
|
|
281
|
-
parsedStatementMeta: StatementMeta | undefined;
|
|
282
|
-
statementUpdateLocalData: StatementUpdateLocalData | undefined;
|
|
283
|
-
accountType?: AccountType;
|
|
284
|
-
}
|
|
285
|
-
export interface ToStatementUpdateLocalDataFromFormViewInput {
|
|
286
|
-
formView: StatementParseFormView;
|
|
287
|
-
originalTransactions: StatementTransaction[];
|
|
288
|
-
parsedStatementMeta: StatementMeta | undefined;
|
|
289
|
-
accountType?: AccountType;
|
|
290
|
-
changedField?: string;
|
|
291
|
-
}
|
|
292
|
-
export interface ApplyStatementParseFormChangeInput {
|
|
293
|
-
formView: StatementParseFormView;
|
|
294
|
-
originalTransactions: StatementTransaction[];
|
|
295
|
-
parsedStatementMeta: StatementMeta | undefined;
|
|
296
|
-
accountType?: AccountType;
|
|
297
|
-
changedField?: string;
|
|
298
|
-
}
|
|
299
|
-
export interface ApplyStatementParseFormChangeResult {
|
|
300
|
-
didRecalculateBalances: boolean;
|
|
301
|
-
formView: StatementParseFormView;
|
|
302
|
-
localData: StatementUpdateLocalData;
|
|
303
|
-
}
|
|
304
267
|
export interface StatementUpdateLocalData {
|
|
305
268
|
statementMeta: StatementMeta;
|
|
306
269
|
statementTransactions: StatementTransactionsUpdate;
|
|
@@ -41,6 +41,7 @@ export interface OnboardingCustomerView {
|
|
|
41
41
|
saveStatus: FetchStateAndError;
|
|
42
42
|
uiState: OnboardingCustomerViewUIState;
|
|
43
43
|
updateStatus: FetchStateAndError;
|
|
44
|
+
aiFinanceTeamAcknowledgementStatus?: FetchStateAndError;
|
|
44
45
|
companyDetailsLocalData?: CompanyDetails;
|
|
45
46
|
companyView?: CompanyView;
|
|
46
47
|
externalConnections?: TenantExternalConnections;
|
|
@@ -17,7 +17,7 @@ const setupViewSelector_1 = require("../../spendManagement/commonSetup/setupView
|
|
|
17
17
|
const onboardingCustomerViewState_1 = require("./onboardingCustomerViewState");
|
|
18
18
|
function getOnboardingCustomerView(state, companyId) {
|
|
19
19
|
const { fileState, paymentAccountState, onboardingCustomerViewState, userState, userRoleState, subscriptionPaymentAccountState, companyConfigState, cardPaymentViewState, countryListState, addressViewState, } = state;
|
|
20
|
-
const { companyDetails, companyOfficerUpdateStatus, primaryContactDetails, subscriptionPaymentAccountIds, paymentAccountDetails, plaidConnectionDetails, parsingDocumentFileIds, updateStatus, saveStatus, currentStep, currentSubStep, uiState, fetchState, error, } = onboardingCustomerViewState;
|
|
20
|
+
const { companyDetails, companyOfficerUpdateStatus, primaryContactDetails, subscriptionPaymentAccountIds, paymentAccountDetails, plaidConnectionDetails, parsingDocumentFileIds, updateStatus, saveStatus, aiFinanceTeamAcknowledgementStatus, currentStep, currentSubStep, uiState, fetchState, error, } = onboardingCustomerViewState;
|
|
21
21
|
const { paymentAccountIds } = paymentAccountDetails;
|
|
22
22
|
let subscriptionPaymentAccount;
|
|
23
23
|
let paymentAccount;
|
|
@@ -154,6 +154,7 @@ function getOnboardingCustomerView(state, companyId) {
|
|
|
154
154
|
fetchStatus,
|
|
155
155
|
saveStatus,
|
|
156
156
|
updateStatus,
|
|
157
|
+
aiFinanceTeamAcknowledgementStatus,
|
|
157
158
|
qboConnected: onboardingInfo?.qboLinked.completed ?? false,
|
|
158
159
|
isInterimEmailSent: onboardingInfo?.isInterimEmailSent ?? false,
|
|
159
160
|
};
|
|
@@ -13,7 +13,7 @@ const transactionDetailState_1 = require("../transactionDetail/transactionDetail
|
|
|
13
13
|
const recommendationHelper_1 = require("./recommendationHelper");
|
|
14
14
|
const recommendationReducer_1 = require("./recommendationReducer");
|
|
15
15
|
const fetchEntityRecommendationsByTransactionIdEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(recommendationReducer_1.fetchEntityRecommendationsByTransactionId.match), (0, operators_1.switchMap)((action) => {
|
|
16
|
-
const { entity, amount, transactionDetails, isBulkFetch, isTransactionCategorizationFlow, isFetchCOT,
|
|
16
|
+
const { entity, amount, transactionDetails, isBulkFetch, isTransactionCategorizationFlow, isFetchCOT, } = action.payload;
|
|
17
17
|
const { expenseAutomationTransactionsViewState: { selectedTransactionCategorizationTab, }, } = state$.value;
|
|
18
18
|
const query = {
|
|
19
19
|
amount,
|
|
@@ -55,7 +55,7 @@ const fetchEntityRecommendationsByTransactionIdEpic = (actions$, state$, zeniAPI
|
|
|
55
55
|
if (recommendationWithCOTByLineId != null) {
|
|
56
56
|
const uncategorizedIncomeExpense = (0, accountListSelector_1.getUncategorizedAccounts)(state$.value.accountState, state$.value.accountListState, 'accountList');
|
|
57
57
|
if (isTransactionCategorizationFlow === true) {
|
|
58
|
-
actions.push((0, transactionsViewReducer_1.setEntityRecommendationForLineIdsForCategorization)(selectedTransactionCategorizationTab, transactionId, transactionWithCOT, lineIds, entity, amount, recommendationWithCOTByLineId, uncategorizedIncomeExpense,
|
|
58
|
+
actions.push((0, transactionsViewReducer_1.setEntityRecommendationForLineIdsForCategorization)(selectedTransactionCategorizationTab, transactionId, transactionWithCOT, lineIds, entity, amount, recommendationWithCOTByLineId, uncategorizedIncomeExpense, (0, tenantSelector_1.getIsAccountingClassesEnabled)(state$.value)));
|
|
59
59
|
}
|
|
60
60
|
else {
|
|
61
61
|
actions.push((0, transactionDetailReducer_1.setEntityRecommendationForLineIdsForTransactionDetail)(transactionId, transactionWithCOT, lineIds, entity, amount, recommendationWithCOTByLineId, uncategorizedIncomeExpense));
|