@zeniai/client-epic-state 5.1.91 → 5.1.92-beta0NB
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/accountReconReducer.js +4 -0
- package/lib/entity/accountRecon/accountReconState.d.ts +4 -1
- package/lib/entity/accountRecon/accountReconState.js +1 -0
- package/lib/entity/snackbar/snackbarApiError.d.ts +8 -0
- package/lib/entity/snackbar/snackbarApiError.js +15 -0
- package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
- package/lib/entity/snackbar/snackbarTypes.js +1 -0
- package/lib/epic.d.ts +4 -1
- package/lib/epic.js +4 -1
- package/lib/esm/entity/accountRecon/accountReconReducer.js +4 -0
- package/lib/esm/entity/accountRecon/accountReconState.js +1 -0
- package/lib/esm/entity/snackbar/snackbarApiError.js +11 -0
- package/lib/esm/entity/snackbar/snackbarTypes.js +1 -0
- package/lib/esm/epic.js +4 -1
- package/lib/esm/index.js +4 -4
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/confirmStatementMappingEpic.js +43 -0
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/parseCombinedStatementEpic.js +31 -0
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.js +15 -18
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/updateCombinedStatementInfoEpic.js +68 -0
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +10 -10
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.js +12 -4
- package/lib/esm/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementEpic.js +8 -2
- package/lib/esm/view/expenseAutomationView/helpers/mapStatementUpdateLocalDataToRequestBody.js +20 -5
- package/lib/esm/view/expenseAutomationView/payload/reconciliationPayload.js +135 -0
- package/lib/esm/view/expenseAutomationView/reducers/reconciliationViewReducer.js +119 -16
- package/lib/esm/view/expenseAutomationView/selectors/reconciliationViewSelector.js +28 -7
- package/lib/esm/view/expenseAutomationView/selectors/statementParseViewSelector.js +43 -10
- package/lib/esm/view/expenseAutomationView/types/reconciliationViewState.js +15 -1
- package/lib/esm/view/invoicing/createCreditNote/createCreditNoteEpic.js +2 -0
- package/lib/esm/view/invoicing/createInvoice/createInvoiceEpic.js +2 -0
- package/lib/esm/view/invoicing/discountAction/discountActionEpic.js +6 -3
- package/lib/esm/view/invoicing/dunningAction/dunningActionEpic.js +6 -3
- package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +5 -4
- package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/saveInvoicingCatalogItemEpic.js +3 -0
- package/lib/esm/view/invoicing/editInvoicingCouponDetailView/saveInvoicingCouponEpic.js +2 -0
- package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/saveInvoicingCustomerEpic.js +2 -0
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js +2 -0
- package/lib/esm/view/invoicing/invoiceAction/invoiceActionEpic.js +7 -3
- package/lib/esm/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +2 -0
- package/lib/esm/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +2 -0
- package/lib/esm/view/invoicing/issueCreditNote/issueCreditNoteEpic.js +2 -0
- package/lib/esm/view/invoicing/recordPayment/recordPaymentEpic.js +3 -0
- package/lib/esm/view/invoicing/settingsView/settingsViewEpics.js +6 -3
- package/lib/esm/view/invoicing/settingsView/settingsViewSelector.js +52 -0
- package/lib/esm/view/invoicing/subscriptionAction/subscriptionActionEpic.js +6 -3
- package/lib/esm/view/vendorTabView/vendorTabViewReducer.js +1 -1
- package/lib/index.d.ts +7 -7
- package/lib/index.js +51 -46
- package/lib/view/expenseAutomationView/epics/accountRecon/confirmStatementMappingEpic.d.ts +34 -0
- package/lib/view/expenseAutomationView/epics/accountRecon/confirmStatementMappingEpic.js +47 -0
- package/lib/view/expenseAutomationView/epics/accountRecon/parseCombinedStatementEpic.d.ts +26 -0
- package/lib/view/expenseAutomationView/epics/accountRecon/parseCombinedStatementEpic.js +35 -0
- package/lib/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.d.ts +21 -1
- package/lib/view/expenseAutomationView/epics/accountRecon/parseStatementEpic.js +15 -18
- package/lib/view/expenseAutomationView/epics/accountRecon/updateCombinedStatementInfoEpic.d.ts +27 -0
- package/lib/view/expenseAutomationView/epics/accountRecon/updateCombinedStatementInfoEpic.js +72 -0
- package/lib/view/expenseAutomationView/epics/accountRecon/updateStatementInfoEpic.js +10 -10
- package/lib/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementDocumentAIHelper.js +12 -4
- package/lib/view/expenseAutomationView/epics/accountRecon/uploadAccountStatementEpic.js +7 -1
- package/lib/view/expenseAutomationView/helpers/mapStatementUpdateLocalDataToRequestBody.d.ts +1 -0
- package/lib/view/expenseAutomationView/helpers/mapStatementUpdateLocalDataToRequestBody.js +20 -4
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/payload/reconciliationPayload.d.ts +109 -4
- package/lib/view/expenseAutomationView/payload/reconciliationPayload.js +143 -0
- package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.d.ts +32 -4
- package/lib/view/expenseAutomationView/reducers/reconciliationViewReducer.js +121 -18
- package/lib/view/expenseAutomationView/selectorTypes/reconciliationViewSelectorTypes.d.ts +5 -1
- package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.d.ts +3 -1
- package/lib/view/expenseAutomationView/selectors/reconciliationViewSelector.js +29 -7
- package/lib/view/expenseAutomationView/selectors/statementParseViewSelector.d.ts +3 -2
- package/lib/view/expenseAutomationView/selectors/statementParseViewSelector.js +44 -10
- package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +74 -1
- package/lib/view/expenseAutomationView/types/reconciliationViewState.js +19 -1
- package/lib/view/invoicing/createCreditNote/createCreditNoteEpic.js +2 -0
- package/lib/view/invoicing/createInvoice/createInvoiceEpic.js +2 -0
- package/lib/view/invoicing/discountAction/discountActionEpic.js +5 -2
- package/lib/view/invoicing/dunningAction/dunningActionEpic.js +5 -2
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +5 -4
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/saveInvoicingCatalogItemEpic.js +3 -0
- package/lib/view/invoicing/editInvoicingCouponDetailView/saveInvoicingCouponEpic.js +2 -0
- package/lib/view/invoicing/editInvoicingCustomerDetailView/saveInvoicingCustomerEpic.js +2 -0
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js +2 -0
- package/lib/view/invoicing/invoiceAction/invoiceActionEpic.js +6 -2
- package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +2 -0
- package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +2 -0
- package/lib/view/invoicing/issueCreditNote/issueCreditNoteEpic.js +2 -0
- package/lib/view/invoicing/recordPayment/recordPaymentEpic.js +3 -0
- package/lib/view/invoicing/settingsView/settingsViewEpics.js +5 -2
- package/lib/view/invoicing/settingsView/settingsViewSelector.d.ts +41 -1
- package/lib/view/invoicing/settingsView/settingsViewSelector.js +55 -1
- package/lib/view/invoicing/subscriptionAction/subscriptionActionEpic.js +5 -2
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.
|
|
5
|
-
exports.updateNodeCollapseState = exports.updateStatementUploadChosen = exports.clearStatementDateConflict = exports.submitStatementUpdateFailure = exports.submitStatementUpdateSuccess = exports.submitStatementUpdate = exports.updateStatementUpdateLocalData = void 0;
|
|
4
|
+
exports.resetReparseStatementStatus = exports.reparseStatementFailure = exports.reparseStatementSuccess = exports.reparseStatement = exports.parseStatementFailure = exports.parseStatementSuccess = exports.parseCombinedStatement = exports.parseStatement = exports.uploadAccountStatementFailure = exports.uploadAccountStatementSuccess = exports.uploadAccountStatement = exports.includeAccountInReconciliationFailure = exports.includeAccountInReconciliationSuccess = exports.includeAccountInReconciliation = exports.excludeAccountFromReconciliationFailure = exports.excludeAccountFromReconciliationSuccess = exports.excludeAccountFromReconciliation = exports.deleteAccountStatementFailure = exports.deleteAccountStatementSuccess = exports.deleteAccountStatement = exports.updateAccountReconciliationLocalData = exports.updateReconListScrollPosition = exports.updateSaveReconciliationReviewFetchStatus = exports.saveReconciliationReview = exports.updateReviewTabLocalData = exports.initializeReconciliationReviewTabLocalData = exports.updateReviewTabSortState = exports.updateStatementProcessingFailed = exports.updateSelectedDrawerAccountId = exports.clearExpenseAutomationReconciliationView = exports.initialiseLocalDataForSelectedAccountId = exports.updateBalancesLocalData = exports.updateSelectedTab = exports.saveReconciliationDetailSuccess = exports.updateReconcileTabListScrollState = exports.updateReconcileTabListSortState = exports.updateReconcileTabLocalData = exports.updateStatementProcessingBackgroundCompletedSteps = exports.setStatementProcessingDismissedToBackground = exports.setStatementParseInProgress = exports.setConnectionInProgressForAccount = exports.updateSelectedAccountId = exports.saveReconciliationDetailFailure = exports.saveReconciliationDetail = exports.fetchReconciliationSuccess = exports.fetchReconciliationFailure = exports.fetchReconciliation = exports.initialState = exports.initialActionFetchState = exports.initialReconciliationTabsState = void 0;
|
|
5
|
+
exports.updateNodeCollapseState = exports.updateStatementUploadChosen = exports.confirmStatementMappingFailure = exports.confirmStatementMappingSuccess = exports.confirmStatementMapping = exports.clearStatementDateConflict = exports.submitStatementUpdateFailure = exports.submitStatementUpdateSuccess = exports.submitCombinedStatementUpdate = exports.submitStatementUpdate = exports.updateStatementUpdateLocalData = exports.updateParsedStatementData = void 0;
|
|
6
6
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
7
7
|
const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
|
|
8
8
|
const accountState_1 = require("../../../entity/account/accountState");
|
|
@@ -435,7 +435,7 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
|
|
|
435
435
|
}
|
|
436
436
|
},
|
|
437
437
|
uploadAccountStatement: (draft, action) => {
|
|
438
|
-
const { accountId, selectedPeriod } = action.payload;
|
|
438
|
+
const { accountId, selectedPeriod, statementAccountScope } = action.payload;
|
|
439
439
|
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
440
440
|
if (accountRecon != null) {
|
|
441
441
|
accountRecon.statementUploadStatus = {
|
|
@@ -460,6 +460,22 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
|
|
|
460
460
|
fetchState: 'Not-Started',
|
|
461
461
|
error: undefined,
|
|
462
462
|
};
|
|
463
|
+
accountRecon.combinedStatementGroupId = undefined;
|
|
464
|
+
accountRecon.confirmedCombinedStatementUploads = undefined;
|
|
465
|
+
accountRecon.confirmStatementMappingStatus = {
|
|
466
|
+
fetchState: 'Not-Started',
|
|
467
|
+
error: undefined,
|
|
468
|
+
};
|
|
469
|
+
accountRecon.confirmStatementMappingConflict = null;
|
|
470
|
+
if (accountRecon.localData != null) {
|
|
471
|
+
accountRecon.localData.statementUpdateLocalDataByUploadId = undefined;
|
|
472
|
+
}
|
|
473
|
+
if (statementAccountScope != null) {
|
|
474
|
+
accountRecon.localData = {
|
|
475
|
+
...accountRecon.localData,
|
|
476
|
+
statementAccountScope,
|
|
477
|
+
};
|
|
478
|
+
}
|
|
463
479
|
}
|
|
464
480
|
},
|
|
465
481
|
uploadAccountStatementSuccess: (draft, action) => {
|
|
@@ -522,8 +538,15 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
|
|
|
522
538
|
fetchState: 'Not-Started',
|
|
523
539
|
error: undefined,
|
|
524
540
|
};
|
|
541
|
+
accountRecon.combinedStatementGroupId = undefined;
|
|
542
|
+
accountRecon.confirmedCombinedStatementUploads = undefined;
|
|
543
|
+
accountRecon.confirmStatementMappingStatus = {
|
|
544
|
+
fetchState: 'Not-Started',
|
|
545
|
+
error: undefined,
|
|
546
|
+
};
|
|
547
|
+
accountRecon.confirmStatementMappingConflict = null;
|
|
525
548
|
if (accountRecon.localData != null) {
|
|
526
|
-
accountRecon.localData.
|
|
549
|
+
accountRecon.localData.statementUpdateLocalDataByUploadId = undefined;
|
|
527
550
|
}
|
|
528
551
|
}
|
|
529
552
|
},
|
|
@@ -549,6 +572,17 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
|
|
|
549
572
|
};
|
|
550
573
|
}
|
|
551
574
|
},
|
|
575
|
+
parseCombinedStatement: (draft, action) => {
|
|
576
|
+
const { accountId, selectedPeriod } = action.payload;
|
|
577
|
+
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
578
|
+
if (accountRecon != null) {
|
|
579
|
+
accountRecon.parsedStatementData = undefined;
|
|
580
|
+
accountRecon.statementParseStatus = {
|
|
581
|
+
fetchState: 'In-Progress',
|
|
582
|
+
error: undefined,
|
|
583
|
+
};
|
|
584
|
+
}
|
|
585
|
+
},
|
|
552
586
|
parseStatementSuccess: (draft, action) => {
|
|
553
587
|
const { accountId, selectedPeriod } = action.payload;
|
|
554
588
|
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
@@ -603,7 +637,7 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
|
|
|
603
637
|
accountRecon.statementProcessingFailed = false;
|
|
604
638
|
accountRecon.statementParseInProgress = true;
|
|
605
639
|
if (accountRecon.localData != null) {
|
|
606
|
-
accountRecon.localData.
|
|
640
|
+
accountRecon.localData.statementUpdateLocalDataByUploadId = undefined;
|
|
607
641
|
}
|
|
608
642
|
}
|
|
609
643
|
},
|
|
@@ -649,19 +683,18 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
|
|
|
649
683
|
parsedStatementData;
|
|
650
684
|
},
|
|
651
685
|
updateStatementUpdateLocalData: (draft, action) => {
|
|
652
|
-
const { accountId, selectedPeriod, statementUpdateLocalData } = action.payload;
|
|
686
|
+
const { accountId, selectedPeriod, statementUpdateLocalData, statementUploadId, } = action.payload;
|
|
653
687
|
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
654
|
-
if (accountRecon
|
|
655
|
-
|
|
656
|
-
accountRecon.localData = {
|
|
657
|
-
statementUpdateLocalData,
|
|
658
|
-
};
|
|
659
|
-
}
|
|
660
|
-
else {
|
|
661
|
-
accountRecon.localData.statementUpdateLocalData =
|
|
662
|
-
statementUpdateLocalData;
|
|
663
|
-
}
|
|
688
|
+
if (accountRecon == null || statementUploadId === '') {
|
|
689
|
+
return;
|
|
664
690
|
}
|
|
691
|
+
if (accountRecon.localData == null) {
|
|
692
|
+
accountRecon.localData = {};
|
|
693
|
+
}
|
|
694
|
+
accountRecon.localData.statementUpdateLocalDataByUploadId = {
|
|
695
|
+
...accountRecon.localData.statementUpdateLocalDataByUploadId,
|
|
696
|
+
[statementUploadId]: statementUpdateLocalData,
|
|
697
|
+
};
|
|
665
698
|
},
|
|
666
699
|
submitStatementUpdate: (draft, action) => {
|
|
667
700
|
const { accountId, selectedPeriod } = action.payload;
|
|
@@ -675,6 +708,17 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
|
|
|
675
708
|
accountRecon.statementDateConflict = null;
|
|
676
709
|
}
|
|
677
710
|
},
|
|
711
|
+
submitCombinedStatementUpdate: (draft, action) => {
|
|
712
|
+
const { accountId, selectedPeriod } = action.payload;
|
|
713
|
+
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
714
|
+
if (accountRecon != null) {
|
|
715
|
+
accountRecon.statementUpdateStatus = {
|
|
716
|
+
fetchState: 'In-Progress',
|
|
717
|
+
error: undefined,
|
|
718
|
+
};
|
|
719
|
+
accountRecon.statementDateConflict = null;
|
|
720
|
+
}
|
|
721
|
+
},
|
|
678
722
|
submitStatementUpdateSuccess: (draft, action) => {
|
|
679
723
|
const { accountId, selectedPeriod } = action.payload;
|
|
680
724
|
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
@@ -689,7 +733,7 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
|
|
|
689
733
|
accountRecon.statementProcessingStartedAtMs = undefined;
|
|
690
734
|
accountRecon.statementProcessingTotalDurationSeconds = undefined;
|
|
691
735
|
if (accountRecon.localData != null) {
|
|
692
|
-
accountRecon.localData.
|
|
736
|
+
accountRecon.localData.statementUpdateLocalDataByUploadId = undefined;
|
|
693
737
|
}
|
|
694
738
|
}
|
|
695
739
|
},
|
|
@@ -711,6 +755,52 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
|
|
|
711
755
|
accountRecon.statementDateConflict = null;
|
|
712
756
|
}
|
|
713
757
|
},
|
|
758
|
+
confirmStatementMapping: (draft, action) => {
|
|
759
|
+
const { accountId, selectedPeriod } = action.payload;
|
|
760
|
+
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
761
|
+
if (accountRecon != null) {
|
|
762
|
+
accountRecon.confirmStatementMappingStatus = {
|
|
763
|
+
fetchState: 'In-Progress',
|
|
764
|
+
error: undefined,
|
|
765
|
+
};
|
|
766
|
+
accountRecon.confirmStatementMappingConflict = null;
|
|
767
|
+
}
|
|
768
|
+
},
|
|
769
|
+
confirmStatementMappingSuccess: (draft, action) => {
|
|
770
|
+
const { accountId, selectedPeriod, statementUploads } = action.payload;
|
|
771
|
+
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
772
|
+
if (accountRecon != null) {
|
|
773
|
+
accountRecon.confirmStatementMappingStatus = {
|
|
774
|
+
fetchState: 'Completed',
|
|
775
|
+
error: undefined,
|
|
776
|
+
};
|
|
777
|
+
accountRecon.confirmStatementMappingConflict = null;
|
|
778
|
+
accountRecon.confirmedCombinedStatementUploads = statementUploads;
|
|
779
|
+
const combinedStatementDetails = accountRecon.parsedStatementData?.statementUpload
|
|
780
|
+
.combinedStatementDetails;
|
|
781
|
+
if (combinedStatementDetails != null) {
|
|
782
|
+
combinedStatementDetails.isMappingConfirmed = true;
|
|
783
|
+
}
|
|
784
|
+
const combinedStatementGroupId = combinedStatementDetails?.combinedStatementGroupId ??
|
|
785
|
+
accountRecon.parsedStatementData?.statementUpload.statementMeta
|
|
786
|
+
.combinedStatementGroupId;
|
|
787
|
+
if (combinedStatementGroupId != null &&
|
|
788
|
+
combinedStatementGroupId !== '') {
|
|
789
|
+
accountRecon.combinedStatementGroupId = combinedStatementGroupId;
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
},
|
|
793
|
+
confirmStatementMappingFailure: (draft, action) => {
|
|
794
|
+
const { accountId, selectedPeriod, mappingConflict } = action.payload;
|
|
795
|
+
const accountRecon = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)]?.reconciliationByAccountID[accountId];
|
|
796
|
+
if (accountRecon != null) {
|
|
797
|
+
accountRecon.confirmStatementMappingStatus = {
|
|
798
|
+
fetchState: 'Error',
|
|
799
|
+
error: action.payload.error,
|
|
800
|
+
};
|
|
801
|
+
accountRecon.confirmStatementMappingConflict = mappingConflict ?? null;
|
|
802
|
+
}
|
|
803
|
+
},
|
|
714
804
|
updateAccountReconciliationLocalData: (draft, action) => {
|
|
715
805
|
const { accountId, selectedPeriod, localData } = action.payload;
|
|
716
806
|
const oldLocalData = draft.accountReconciliationRecordsBySelectedPeriod[(0, timePeriod_1.toMonthYearPeriodId)(selectedPeriod)].reconciliationByAccountID[accountId].localData;
|
|
@@ -821,7 +911,7 @@ const expenseAutomationReconciliationView = (0, toolkit_1.createSlice)({
|
|
|
821
911
|
},
|
|
822
912
|
});
|
|
823
913
|
// Export actions
|
|
824
|
-
_a = expenseAutomationReconciliationView.actions, exports.fetchReconciliation = _a.fetchReconciliation, exports.fetchReconciliationFailure = _a.fetchReconciliationFailure, exports.fetchReconciliationSuccess = _a.fetchReconciliationSuccess, exports.saveReconciliationDetail = _a.saveReconciliationDetail, exports.saveReconciliationDetailFailure = _a.saveReconciliationDetailFailure, exports.updateSelectedAccountId = _a.updateSelectedAccountId, exports.setConnectionInProgressForAccount = _a.setConnectionInProgressForAccount, exports.setStatementParseInProgress = _a.setStatementParseInProgress, exports.setStatementProcessingDismissedToBackground = _a.setStatementProcessingDismissedToBackground, exports.updateStatementProcessingBackgroundCompletedSteps = _a.updateStatementProcessingBackgroundCompletedSteps, exports.updateReconcileTabLocalData = _a.updateReconcileTabLocalData, exports.updateReconcileTabListSortState = _a.updateReconcileTabListSortState, exports.updateReconcileTabListScrollState = _a.updateReconcileTabListScrollState, exports.saveReconciliationDetailSuccess = _a.saveReconciliationDetailSuccess, exports.updateSelectedTab = _a.updateSelectedTab, exports.updateBalancesLocalData = _a.updateBalancesLocalData, exports.initialiseLocalDataForSelectedAccountId = _a.initialiseLocalDataForSelectedAccountId, exports.clearExpenseAutomationReconciliationView = _a.clearExpenseAutomationReconciliationView, exports.updateSelectedDrawerAccountId = _a.updateSelectedDrawerAccountId, exports.updateStatementProcessingFailed = _a.updateStatementProcessingFailed, exports.updateReviewTabSortState = _a.updateReviewTabSortState, exports.initializeReconciliationReviewTabLocalData = _a.initializeReconciliationReviewTabLocalData, exports.updateReviewTabLocalData = _a.updateReviewTabLocalData, exports.saveReconciliationReview = _a.saveReconciliationReview, exports.updateSaveReconciliationReviewFetchStatus = _a.updateSaveReconciliationReviewFetchStatus, exports.updateReconListScrollPosition = _a.updateReconListScrollPosition, exports.updateAccountReconciliationLocalData = _a.updateAccountReconciliationLocalData, exports.deleteAccountStatement = _a.deleteAccountStatement, exports.deleteAccountStatementSuccess = _a.deleteAccountStatementSuccess, exports.deleteAccountStatementFailure = _a.deleteAccountStatementFailure, exports.excludeAccountFromReconciliation = _a.excludeAccountFromReconciliation, exports.excludeAccountFromReconciliationSuccess = _a.excludeAccountFromReconciliationSuccess, exports.excludeAccountFromReconciliationFailure = _a.excludeAccountFromReconciliationFailure, exports.includeAccountInReconciliation = _a.includeAccountInReconciliation, exports.includeAccountInReconciliationSuccess = _a.includeAccountInReconciliationSuccess, exports.includeAccountInReconciliationFailure = _a.includeAccountInReconciliationFailure, exports.uploadAccountStatement = _a.uploadAccountStatement, exports.uploadAccountStatementSuccess = _a.uploadAccountStatementSuccess, exports.uploadAccountStatementFailure = _a.uploadAccountStatementFailure, exports.parseStatement = _a.parseStatement, exports.parseStatementSuccess = _a.parseStatementSuccess, exports.parseStatementFailure = _a.parseStatementFailure, exports.reparseStatement = _a.reparseStatement, exports.reparseStatementSuccess = _a.reparseStatementSuccess, exports.reparseStatementFailure = _a.reparseStatementFailure, exports.resetReparseStatementStatus = _a.resetReparseStatementStatus, exports.updateParsedStatementData = _a.updateParsedStatementData, exports.updateStatementUpdateLocalData = _a.updateStatementUpdateLocalData, exports.submitStatementUpdate = _a.submitStatementUpdate, exports.submitStatementUpdateSuccess = _a.submitStatementUpdateSuccess, exports.submitStatementUpdateFailure = _a.submitStatementUpdateFailure, exports.clearStatementDateConflict = _a.clearStatementDateConflict, exports.updateStatementUploadChosen = _a.updateStatementUploadChosen, exports.updateNodeCollapseState = _a.updateNodeCollapseState;
|
|
914
|
+
_a = expenseAutomationReconciliationView.actions, exports.fetchReconciliation = _a.fetchReconciliation, exports.fetchReconciliationFailure = _a.fetchReconciliationFailure, exports.fetchReconciliationSuccess = _a.fetchReconciliationSuccess, exports.saveReconciliationDetail = _a.saveReconciliationDetail, exports.saveReconciliationDetailFailure = _a.saveReconciliationDetailFailure, exports.updateSelectedAccountId = _a.updateSelectedAccountId, exports.setConnectionInProgressForAccount = _a.setConnectionInProgressForAccount, exports.setStatementParseInProgress = _a.setStatementParseInProgress, exports.setStatementProcessingDismissedToBackground = _a.setStatementProcessingDismissedToBackground, exports.updateStatementProcessingBackgroundCompletedSteps = _a.updateStatementProcessingBackgroundCompletedSteps, exports.updateReconcileTabLocalData = _a.updateReconcileTabLocalData, exports.updateReconcileTabListSortState = _a.updateReconcileTabListSortState, exports.updateReconcileTabListScrollState = _a.updateReconcileTabListScrollState, exports.saveReconciliationDetailSuccess = _a.saveReconciliationDetailSuccess, exports.updateSelectedTab = _a.updateSelectedTab, exports.updateBalancesLocalData = _a.updateBalancesLocalData, exports.initialiseLocalDataForSelectedAccountId = _a.initialiseLocalDataForSelectedAccountId, exports.clearExpenseAutomationReconciliationView = _a.clearExpenseAutomationReconciliationView, exports.updateSelectedDrawerAccountId = _a.updateSelectedDrawerAccountId, exports.updateStatementProcessingFailed = _a.updateStatementProcessingFailed, exports.updateReviewTabSortState = _a.updateReviewTabSortState, exports.initializeReconciliationReviewTabLocalData = _a.initializeReconciliationReviewTabLocalData, exports.updateReviewTabLocalData = _a.updateReviewTabLocalData, exports.saveReconciliationReview = _a.saveReconciliationReview, exports.updateSaveReconciliationReviewFetchStatus = _a.updateSaveReconciliationReviewFetchStatus, exports.updateReconListScrollPosition = _a.updateReconListScrollPosition, exports.updateAccountReconciliationLocalData = _a.updateAccountReconciliationLocalData, exports.deleteAccountStatement = _a.deleteAccountStatement, exports.deleteAccountStatementSuccess = _a.deleteAccountStatementSuccess, exports.deleteAccountStatementFailure = _a.deleteAccountStatementFailure, exports.excludeAccountFromReconciliation = _a.excludeAccountFromReconciliation, exports.excludeAccountFromReconciliationSuccess = _a.excludeAccountFromReconciliationSuccess, exports.excludeAccountFromReconciliationFailure = _a.excludeAccountFromReconciliationFailure, exports.includeAccountInReconciliation = _a.includeAccountInReconciliation, exports.includeAccountInReconciliationSuccess = _a.includeAccountInReconciliationSuccess, exports.includeAccountInReconciliationFailure = _a.includeAccountInReconciliationFailure, exports.uploadAccountStatement = _a.uploadAccountStatement, exports.uploadAccountStatementSuccess = _a.uploadAccountStatementSuccess, exports.uploadAccountStatementFailure = _a.uploadAccountStatementFailure, exports.parseStatement = _a.parseStatement, exports.parseCombinedStatement = _a.parseCombinedStatement, exports.parseStatementSuccess = _a.parseStatementSuccess, exports.parseStatementFailure = _a.parseStatementFailure, exports.reparseStatement = _a.reparseStatement, exports.reparseStatementSuccess = _a.reparseStatementSuccess, exports.reparseStatementFailure = _a.reparseStatementFailure, exports.resetReparseStatementStatus = _a.resetReparseStatementStatus, exports.updateParsedStatementData = _a.updateParsedStatementData, exports.updateStatementUpdateLocalData = _a.updateStatementUpdateLocalData, exports.submitStatementUpdate = _a.submitStatementUpdate, exports.submitCombinedStatementUpdate = _a.submitCombinedStatementUpdate, exports.submitStatementUpdateSuccess = _a.submitStatementUpdateSuccess, exports.submitStatementUpdateFailure = _a.submitStatementUpdateFailure, exports.clearStatementDateConflict = _a.clearStatementDateConflict, exports.confirmStatementMapping = _a.confirmStatementMapping, exports.confirmStatementMappingSuccess = _a.confirmStatementMappingSuccess, exports.confirmStatementMappingFailure = _a.confirmStatementMappingFailure, exports.updateStatementUploadChosen = _a.updateStatementUploadChosen, exports.updateNodeCollapseState = _a.updateNodeCollapseState;
|
|
825
915
|
// Export reducer
|
|
826
916
|
exports.default = expenseAutomationReconciliationView.reducer;
|
|
827
917
|
function isEntityStatementParsing(reconciliation) {
|
|
@@ -835,6 +925,7 @@ function isEntityStatementParseTerminal(reconciliation) {
|
|
|
835
925
|
statusCode === 'parsing_failed' ||
|
|
836
926
|
statusCode === 'validation_failed' ||
|
|
837
927
|
statusCode === 'processing_failed' ||
|
|
928
|
+
statusCode === 'parsed_awaiting_mapping' ||
|
|
838
929
|
statusCode === 'deleting' ||
|
|
839
930
|
statusCode === 'deleted');
|
|
840
931
|
}
|
|
@@ -970,6 +1061,13 @@ function updateAllReconciliation(draft, accounts, selectedPeriod, reconciliation
|
|
|
970
1061
|
error: undefined,
|
|
971
1062
|
},
|
|
972
1063
|
statementDateConflict: oldRecord?.statementDateConflict ?? null,
|
|
1064
|
+
confirmStatementMappingStatus: oldRecord?.confirmStatementMappingStatus ?? {
|
|
1065
|
+
fetchState: 'Not-Started',
|
|
1066
|
+
error: undefined,
|
|
1067
|
+
},
|
|
1068
|
+
confirmStatementMappingConflict: oldRecord?.confirmStatementMappingConflict ?? null,
|
|
1069
|
+
confirmedCombinedStatementUploads: oldRecord?.confirmedCombinedStatementUploads,
|
|
1070
|
+
combinedStatementGroupId: oldRecord?.combinedStatementGroupId,
|
|
973
1071
|
localData: {
|
|
974
1072
|
...oldRecord?.localData,
|
|
975
1073
|
accountSource: account?.reconciliation_source != null
|
|
@@ -1068,6 +1166,11 @@ const updateReconciliationByAccountIDOnIncludeAccount = (draft, accountId, recon
|
|
|
1068
1166
|
statementParseStatus: { fetchState: 'Not-Started', error: undefined },
|
|
1069
1167
|
reparseStatementStatus: { fetchState: 'Not-Started', error: undefined },
|
|
1070
1168
|
statementDateConflict: null,
|
|
1169
|
+
confirmStatementMappingStatus: {
|
|
1170
|
+
fetchState: 'Not-Started',
|
|
1171
|
+
error: undefined,
|
|
1172
|
+
},
|
|
1173
|
+
confirmStatementMappingConflict: null,
|
|
1071
1174
|
localData: {},
|
|
1072
1175
|
accountDetectionReason: undefined,
|
|
1073
1176
|
};
|
|
@@ -9,7 +9,7 @@ import { BankStatusCodeType } from '../../../entity/accountRecon/accountReconSta
|
|
|
9
9
|
import { ClassBase } from '../../../entity/class/classState';
|
|
10
10
|
import { Vendor } from '../../../entity/vendor/vendorState';
|
|
11
11
|
import { PlaidConnectionDetails } from '../../spendManagement/plaidAccount/plaidAccountViewState';
|
|
12
|
-
import { AccountReconciliationLocalData, ActionFetchStates, ParsedStatementData, ReconListUIState, ReconciliationTabsState, ReconciliationViewSummary, ReconciliationViewTabType, StatementDateConflict, StatementTransaction } from '../types/reconciliationViewState';
|
|
12
|
+
import { AccountReconciliationLocalData, ActionFetchStates, ConfirmStatementMappingConflict, ConfirmedCombinedStatementUpload, ParsedStatementData, ReconListUIState, ReconciliationTabsState, ReconciliationViewSummary, ReconciliationViewTabType, StatementDateConflict, StatementTransaction } from '../types/reconciliationViewState';
|
|
13
13
|
export declare const ALL_ACCOUNT_RECON_SECTION_IDS: readonly ["assets", "liabilities"];
|
|
14
14
|
export declare const toAccountReconSectionID: (v: string) => "assets" | "liabilities";
|
|
15
15
|
export type AccountReconSectionID = ReturnType<typeof toAccountReconSectionID>;
|
|
@@ -55,6 +55,8 @@ export interface AccountReconciliationBySection {
|
|
|
55
55
|
export interface AccountReconciliationByAccount {
|
|
56
56
|
accountConnectionStatus: BankStatusCodeType;
|
|
57
57
|
accountReconEntity: AccountReconciliationEntity;
|
|
58
|
+
confirmStatementMappingConflict: ConfirmStatementMappingConflict | null;
|
|
59
|
+
confirmStatementMappingStatus: FetchStateAndError;
|
|
58
60
|
connectionInProgress: boolean;
|
|
59
61
|
localData: AccountReconciliationLocalData;
|
|
60
62
|
refreshStatus: FetchStateAndError;
|
|
@@ -72,6 +74,8 @@ export interface AccountReconciliationByAccount {
|
|
|
72
74
|
accountDetectionReason?: string;
|
|
73
75
|
/** Unfiltered parsed transactions for PDF citation highlights. */
|
|
74
76
|
allCitationTransactions?: StatementTransaction[];
|
|
77
|
+
combinedStatementGroupId?: string;
|
|
78
|
+
confirmedCombinedStatementUploads?: ConfirmedCombinedStatementUpload[];
|
|
75
79
|
parsedStatementData?: ParsedStatementData;
|
|
76
80
|
paymentAccountId?: ID;
|
|
77
81
|
statementProcessingStartedAtMs?: number;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { ID } from '../../../commonStateTypes/common';
|
|
2
2
|
import { ReportIDPlusForecastID } from '../../../commonStateTypes/viewAndReport/viewAndReport';
|
|
3
|
+
import { AccountBase } from '../../../entity/account/accountState';
|
|
3
4
|
import { RootState } from '../../../reducer';
|
|
4
|
-
import { ExpenseAutomationReconciliationViewSelector } from '../selectorTypes/reconciliationViewSelectorTypes';
|
|
5
|
+
import { AccountReconciliationByAccount, ExpenseAutomationReconciliationViewSelector } from '../selectorTypes/reconciliationViewSelectorTypes';
|
|
5
6
|
export declare const getExpenseAutomationReconciliationView: (state: RootState) => ExpenseAutomationReconciliationViewSelector;
|
|
6
7
|
export declare const getReparseStatementStatusByAccountId: (state: RootState, accountId: ID) => import("../../../commonStateTypes/common").FetchStateAndError;
|
|
8
|
+
export declare function getLedgerAccountsForCombinedStatementMapping(accountReconciliationsByAccountID: Record<ID, AccountReconciliationByAccount>): AccountBase[];
|
|
7
9
|
export declare const isAccountReconReport: (reportId: ReportIDPlusForecastID) => boolean;
|
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.isAccountReconReport = exports.getReparseStatementStatusByAccountId = exports.getExpenseAutomationReconciliationView = void 0;
|
|
7
|
+
exports.getLedgerAccountsForCombinedStatementMapping = getLedgerAccountsForCombinedStatementMapping;
|
|
7
8
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
8
9
|
const big_js_1 = __importDefault(require("big.js"));
|
|
9
10
|
const keys_1 = __importDefault(require("lodash/keys"));
|
|
@@ -251,8 +252,23 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
|
|
|
251
252
|
}
|
|
252
253
|
const accountReconState = accountReconForMonthYearPeriod.reconciliationByAccountID[accountID];
|
|
253
254
|
const rawParsedStatementData = accountReconState.parsedStatementData;
|
|
254
|
-
const
|
|
255
|
-
const
|
|
255
|
+
const statementUpdateLocalDataByUploadId = accountReconState.localData?.statementUpdateLocalDataByUploadId;
|
|
256
|
+
const statementAccountScope = accountReconState.localData?.statementAccountScope;
|
|
257
|
+
const parsedStatementDataForView = (0, statementParseViewSelector_1.getParsedStatementDataForView)(rawParsedStatementData, statementUpdateLocalDataByUploadId, statementAccountScope);
|
|
258
|
+
const rawStatementUploads = rawParsedStatementData?.statementUploads != null &&
|
|
259
|
+
rawParsedStatementData.statementUploads.length > 0
|
|
260
|
+
? rawParsedStatementData.statementUploads
|
|
261
|
+
: rawParsedStatementData?.statementUpload != null
|
|
262
|
+
? [rawParsedStatementData.statementUpload]
|
|
263
|
+
: [];
|
|
264
|
+
const allCitationTransactions = rawStatementUploads.flatMap((statementUpload) => statementUpload.statementTransactions);
|
|
265
|
+
const statementTransactionPeriodById = rawStatementUploads.length > 0
|
|
266
|
+
? Object.assign({}, ...rawStatementUploads.map((statementUpload) => {
|
|
267
|
+
const uploadId = statementUpload.statementMeta.statementUploadId;
|
|
268
|
+
const localMeta = statementUpdateLocalDataByUploadId?.[uploadId]?.statementMeta;
|
|
269
|
+
return (0, statementParseViewSelector_1.getStatementTransactionPeriodById)(statementUpload.statementTransactions, statementUpload.statementMeta, localMeta);
|
|
270
|
+
}))
|
|
271
|
+
: undefined;
|
|
256
272
|
reconList[accountID] = {
|
|
257
273
|
accountConnectionStatus: accountConnectionStatus.status,
|
|
258
274
|
paymentAccountId: accountConnectionStatus.paymentAccountId,
|
|
@@ -263,6 +279,10 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
|
|
|
263
279
|
statementParseStatus: accountReconState.statementParseStatus,
|
|
264
280
|
reparseStatementStatus: accountReconState.reparseStatementStatus,
|
|
265
281
|
statementDateConflict: accountReconState.statementDateConflict,
|
|
282
|
+
confirmStatementMappingStatus: accountReconState.confirmStatementMappingStatus,
|
|
283
|
+
confirmStatementMappingConflict: accountReconState.confirmStatementMappingConflict,
|
|
284
|
+
confirmedCombinedStatementUploads: accountReconState.confirmedCombinedStatementUploads,
|
|
285
|
+
combinedStatementGroupId: accountReconState.combinedStatementGroupId,
|
|
266
286
|
statementUpdateStatus: accountReconState.statementUpdateStatus,
|
|
267
287
|
statementUploadStatus: accountReconState.statementUploadStatus,
|
|
268
288
|
localData: accountReconState.localData,
|
|
@@ -273,11 +293,8 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
|
|
|
273
293
|
statementProcessingTotalDurationSeconds: accountReconState.statementProcessingTotalDurationSeconds,
|
|
274
294
|
statementProcessingFailed: accountReconState.statementProcessingFailed,
|
|
275
295
|
parsedStatementData: parsedStatementDataForView,
|
|
276
|
-
allCitationTransactions
|
|
277
|
-
statementTransactionPeriodById
|
|
278
|
-
? (0, statementParseViewSelector_1.getStatementTransactionPeriodById)(rawParsedStatementData.statementUpload.statementTransactions, rawParsedStatementData.statementUpload.statementMeta, accountReconState.localData?.statementUpdateLocalData
|
|
279
|
-
?.statementMeta)
|
|
280
|
-
: undefined,
|
|
296
|
+
allCitationTransactions,
|
|
297
|
+
statementTransactionPeriodById,
|
|
281
298
|
transactionFetchState: (0, reduceFetchState_1.reduceAnyFetchState)([
|
|
282
299
|
accountReconState.transactionFetchState,
|
|
283
300
|
accountListState.byReportId.accountList,
|
|
@@ -347,6 +364,8 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
|
|
|
347
364
|
statementParseStatus: { fetchState: 'Not-Started' },
|
|
348
365
|
reparseStatementStatus: { fetchState: 'Not-Started' },
|
|
349
366
|
statementDateConflict: null,
|
|
367
|
+
confirmStatementMappingStatus: { fetchState: 'Not-Started' },
|
|
368
|
+
confirmStatementMappingConflict: null,
|
|
350
369
|
localData: {},
|
|
351
370
|
connectionInProgress: false,
|
|
352
371
|
statementParseInProgress: false,
|
|
@@ -464,6 +483,9 @@ exports.getExpenseAutomationReconciliationView = (0, toolkit_1.createSelector)((
|
|
|
464
483
|
const getReparseStatementStatusByAccountId = (state, accountId) => (0, exports.getExpenseAutomationReconciliationView)(state)
|
|
465
484
|
.accountReconciliationsByAccountID[accountId]?.reparseStatementStatus;
|
|
466
485
|
exports.getReparseStatementStatusByAccountId = getReparseStatementStatusByAccountId;
|
|
486
|
+
function getLedgerAccountsForCombinedStatementMapping(accountReconciliationsByAccountID) {
|
|
487
|
+
return Object.values(accountReconciliationsByAccountID).map((accountReconciliation) => accountReconciliation.accountReconEntity.account);
|
|
488
|
+
}
|
|
467
489
|
const isAccountReconReport = (reportId) => {
|
|
468
490
|
return reportId.endsWith('reconciliation');
|
|
469
491
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ParsedStatementData, StatementMeta, StatementTransaction, StatementUpdateLocalData } from '../types/reconciliationViewState';
|
|
1
|
+
import { ParsedStatementData, StatementAccountScope, StatementMeta, StatementTransaction, StatementUpdateLocalData, StatementUpload } from '../types/reconciliationViewState';
|
|
2
|
+
export declare function getStatementUploadsFromParsedData(parsedStatementData: ParsedStatementData | undefined): StatementUpload[];
|
|
2
3
|
export interface StatementPeriod {
|
|
3
4
|
statementEndDate: string;
|
|
4
5
|
statementStartDate: string;
|
|
@@ -6,7 +7,7 @@ export interface StatementPeriod {
|
|
|
6
7
|
export declare const getEffectiveStatementPeriod: (parsedMeta: StatementMeta, localMeta: StatementMeta | undefined) => StatementPeriod;
|
|
7
8
|
export declare const isStatementTransactionInPeriod: (transactionDate: string, statementStartDate: string, statementEndDate: string) => boolean;
|
|
8
9
|
export declare const filterStatementTransactionsByPeriod: (transactions: StatementTransaction[], statementPeriod: StatementPeriod) => StatementTransaction[];
|
|
9
|
-
export declare const getParsedStatementDataForView: (parsedStatementData: ParsedStatementData | undefined,
|
|
10
|
+
export declare const getParsedStatementDataForView: (parsedStatementData: ParsedStatementData | undefined, statementUpdateLocalDataByUploadId?: Record<string, StatementUpdateLocalData>, statementAccountScope?: StatementAccountScope) => ParsedStatementData | undefined;
|
|
10
11
|
export declare const getStatementTransactionPeriodById: (allParsedTransactions: StatementTransaction[], parsedMeta: StatementMeta, localMeta: StatementMeta | undefined) => Record<string, boolean>;
|
|
11
12
|
export declare const getDateFilteredDeletedTransactionIds: (allParsedTransactions: StatementTransaction[], statementPeriod: StatementPeriod) => string[];
|
|
12
13
|
export declare const mergeStatementParseDeletedTransactionIds: (originalTransactions: StatementTransaction[], statementPeriod: StatementPeriod, currentTransactionIds: Set<string>) => string[];
|
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergeStatementParseDeletedTransactionIds = exports.getDateFilteredDeletedTransactionIds = exports.getStatementTransactionPeriodById = exports.getParsedStatementDataForView = exports.filterStatementTransactionsByPeriod = exports.isStatementTransactionInPeriod = exports.getEffectiveStatementPeriod = void 0;
|
|
4
|
+
exports.getStatementUploadsFromParsedData = getStatementUploadsFromParsedData;
|
|
4
5
|
const zeniDayJS_1 = require("../../../zeniDayJS");
|
|
6
|
+
function getStatementUploadsFromParsedData(parsedStatementData) {
|
|
7
|
+
if (parsedStatementData == null) {
|
|
8
|
+
return [];
|
|
9
|
+
}
|
|
10
|
+
if (parsedStatementData.statementUploads != null &&
|
|
11
|
+
parsedStatementData.statementUploads.length > 0) {
|
|
12
|
+
return parsedStatementData.statementUploads;
|
|
13
|
+
}
|
|
14
|
+
if (parsedStatementData.statementUpload != null) {
|
|
15
|
+
return [parsedStatementData.statementUpload];
|
|
16
|
+
}
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
5
19
|
const getEffectiveStatementPeriod = (parsedMeta, localMeta) => ({
|
|
6
20
|
statementStartDate: localMeta?.statementStartDate != null && localMeta.statementStartDate !== ''
|
|
7
21
|
? localMeta.statementStartDate
|
|
@@ -31,24 +45,44 @@ const filterStatementTransactionsByPeriod = (transactions, statementPeriod) => {
|
|
|
31
45
|
return transactions.filter((transaction) => (0, exports.isStatementTransactionInPeriod)(transaction.transactionDate, statementStartDate, statementEndDate));
|
|
32
46
|
};
|
|
33
47
|
exports.filterStatementTransactionsByPeriod = filterStatementTransactionsByPeriod;
|
|
34
|
-
const
|
|
48
|
+
const getStatementUploadForView = (statementUpload, statementUpdateLocalData) => {
|
|
49
|
+
const parsedMeta = statementUpload.statementMeta;
|
|
50
|
+
const localMeta = statementUpdateLocalData?.statementMeta;
|
|
51
|
+
const effectiveMeta = localMeta ?? parsedMeta;
|
|
52
|
+
const statementPeriod = (0, exports.getEffectiveStatementPeriod)(parsedMeta, localMeta);
|
|
53
|
+
return {
|
|
54
|
+
...statementUpload,
|
|
55
|
+
statementMeta: effectiveMeta,
|
|
56
|
+
statementTransactions: (0, exports.filterStatementTransactionsByPeriod)(statementUpload.statementTransactions, statementPeriod),
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
const getParsedStatementDataForView = (parsedStatementData, statementUpdateLocalDataByUploadId, statementAccountScope) => {
|
|
35
60
|
if (parsedStatementData == null) {
|
|
36
61
|
return undefined;
|
|
37
62
|
}
|
|
63
|
+
const statementUploads = getStatementUploadsFromParsedData(parsedStatementData);
|
|
64
|
+
if (statementUploads.length === 0) {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
if (statementAccountScope === 'multi_account') {
|
|
68
|
+
const viewedUploads = statementUploads.map((statementUpload) => {
|
|
69
|
+
const uploadId = statementUpload.statementMeta.statementUploadId;
|
|
70
|
+
return getStatementUploadForView(statementUpload, statementUpdateLocalDataByUploadId?.[uploadId]);
|
|
71
|
+
});
|
|
72
|
+
const anchorUploadId = parsedStatementData.statementUpload.statementMeta.statementUploadId;
|
|
73
|
+
const viewedAnchor = viewedUploads.find((upload) => upload.statementMeta.statementUploadId === anchorUploadId) ?? viewedUploads[0];
|
|
74
|
+
return {
|
|
75
|
+
statementUpload: viewedAnchor,
|
|
76
|
+
statementUploads: viewedUploads,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
38
79
|
const statementUpload = parsedStatementData.statementUpload;
|
|
39
80
|
if (statementUpload == null) {
|
|
40
81
|
return undefined;
|
|
41
82
|
}
|
|
42
|
-
const
|
|
43
|
-
const localMeta = statementUpdateLocalData?.statementMeta;
|
|
44
|
-
const effectiveMeta = localMeta ?? parsedMeta;
|
|
45
|
-
const statementPeriod = (0, exports.getEffectiveStatementPeriod)(parsedMeta, localMeta);
|
|
83
|
+
const uploadId = statementUpload.statementMeta.statementUploadId;
|
|
46
84
|
return {
|
|
47
|
-
statementUpload:
|
|
48
|
-
...statementUpload,
|
|
49
|
-
statementMeta: effectiveMeta,
|
|
50
|
-
statementTransactions: (0, exports.filterStatementTransactionsByPeriod)(statementUpload.statementTransactions, statementPeriod),
|
|
51
|
-
},
|
|
85
|
+
statementUpload: getStatementUploadForView(statementUpload, statementUpdateLocalDataByUploadId?.[uploadId]),
|
|
52
86
|
};
|
|
53
87
|
};
|
|
54
88
|
exports.getParsedStatementDataForView = getParsedStatementDataForView;
|
|
@@ -29,6 +29,9 @@ export interface StatementTransaction {
|
|
|
29
29
|
transactionDirection: 'debit' | 'credit';
|
|
30
30
|
transactionMemo: string;
|
|
31
31
|
}
|
|
32
|
+
export declare const toStatementBalanceSource: (v: string) => "ocr" | "prior_recon" | "default_zero";
|
|
33
|
+
export type StatementBalanceSource = ReturnType<typeof toStatementBalanceSource>;
|
|
34
|
+
export declare const toStatementBalanceSourceStrict: (v: string | null | undefined) => StatementBalanceSource | undefined;
|
|
32
35
|
export interface StatementMeta {
|
|
33
36
|
closingBalance: number;
|
|
34
37
|
openingBalance: number;
|
|
@@ -45,6 +48,10 @@ export interface StatementMeta {
|
|
|
45
48
|
statementUploadId: string;
|
|
46
49
|
totalDeposits: number;
|
|
47
50
|
totalPayments: number;
|
|
51
|
+
balanceSource?: StatementBalanceSource;
|
|
52
|
+
combinedStatementGroupId?: string;
|
|
53
|
+
isCombinedStatement?: boolean;
|
|
54
|
+
isCombinedStatementAnchor?: boolean;
|
|
48
55
|
}
|
|
49
56
|
export interface AccountInfo {
|
|
50
57
|
accountId: string;
|
|
@@ -92,15 +99,63 @@ export interface AiSummary {
|
|
|
92
99
|
fieldsCaptured: AiSummaryField[];
|
|
93
100
|
transactionsExtracted: number;
|
|
94
101
|
}
|
|
102
|
+
export interface CombinedStatementAccountSuggestion {
|
|
103
|
+
accountId: ID;
|
|
104
|
+
accountName: string;
|
|
105
|
+
matchConfidence: number;
|
|
106
|
+
matchedBy: string;
|
|
107
|
+
}
|
|
108
|
+
export interface CombinedStatementAccount {
|
|
109
|
+
accountName: string;
|
|
110
|
+
accountType: string;
|
|
111
|
+
closingBalance: number;
|
|
112
|
+
isUploadContext: boolean;
|
|
113
|
+
ledgerIdentifier: string;
|
|
114
|
+
maskedAccountNumber: string;
|
|
115
|
+
openingBalance: number;
|
|
116
|
+
transactionCount: number;
|
|
117
|
+
existingStatementStatus?: {
|
|
118
|
+
code: string;
|
|
119
|
+
label: string;
|
|
120
|
+
} | null;
|
|
121
|
+
suggestion?: CombinedStatementAccountSuggestion | null;
|
|
122
|
+
}
|
|
123
|
+
export interface CombinedStatementDetails {
|
|
124
|
+
accounts: CombinedStatementAccount[];
|
|
125
|
+
combinedStatementGroupId: string;
|
|
126
|
+
isMappingConfirmed: boolean;
|
|
127
|
+
statementUploads: ConfirmedCombinedStatementUpload[];
|
|
128
|
+
}
|
|
129
|
+
export interface ConfirmedCombinedStatementUpload {
|
|
130
|
+
accountId: ID;
|
|
131
|
+
isCombinedStatementAnchor: boolean;
|
|
132
|
+
ledgerIdentifiers: string[];
|
|
133
|
+
statementUploadId: ID;
|
|
134
|
+
}
|
|
135
|
+
export interface ConfirmStatementMappingConflict {
|
|
136
|
+
collidingLedgerIdentifiers: string[];
|
|
137
|
+
collidingAccountId?: ID;
|
|
138
|
+
previousReconciliationInfo?: PreviousReconciliationInfo | null;
|
|
139
|
+
}
|
|
95
140
|
export interface StatementUpload {
|
|
96
141
|
account: AccountInfo;
|
|
97
142
|
file: FileInfo | null;
|
|
98
143
|
statementMeta: StatementMeta;
|
|
99
144
|
statementTransactions: StatementTransaction[];
|
|
100
145
|
aiSummary?: AiSummary | null;
|
|
146
|
+
combinedStatementDetails?: CombinedStatementDetails;
|
|
101
147
|
}
|
|
102
148
|
export interface ParsedStatementData {
|
|
149
|
+
/**
|
|
150
|
+
* Single-account parse: the only upload.
|
|
151
|
+
* Combined-account parse: the anchor / PDF-owning upload (also in statementUploads).
|
|
152
|
+
*/
|
|
103
153
|
statementUpload: StatementUpload;
|
|
154
|
+
/**
|
|
155
|
+
* Present only for combined multi-account parse responses after mapping.
|
|
156
|
+
* When set, ParseInfo renders one section per upload.
|
|
157
|
+
*/
|
|
158
|
+
statementUploads?: StatementUpload[];
|
|
104
159
|
}
|
|
105
160
|
export interface ReconciliationSummaryAccounts {
|
|
106
161
|
done: number;
|
|
@@ -264,9 +319,16 @@ export interface StatementTransactionsUpdate {
|
|
|
264
319
|
deletedIds: string[];
|
|
265
320
|
updated: StatementTransactionForUpdate[];
|
|
266
321
|
}
|
|
322
|
+
/** Client-only totals derived from in-period transactions; not sent on PUT. */
|
|
323
|
+
export interface StatementBalancesFromTransactions {
|
|
324
|
+
closingBalance: number;
|
|
325
|
+
totalDeposits: number;
|
|
326
|
+
totalPayments: number;
|
|
327
|
+
}
|
|
267
328
|
export interface StatementUpdateLocalData {
|
|
268
329
|
statementMeta: StatementMeta;
|
|
269
330
|
statementTransactions: StatementTransactionsUpdate;
|
|
331
|
+
balancesFromTransactions?: StatementBalancesFromTransactions;
|
|
270
332
|
}
|
|
271
333
|
export interface StatementUpdateLocalDataPayload {
|
|
272
334
|
statement_meta: {
|
|
@@ -294,12 +356,20 @@ export interface StatementUpdateLocalDataPayload {
|
|
|
294
356
|
}>;
|
|
295
357
|
};
|
|
296
358
|
}
|
|
359
|
+
export declare const toStatementAccountScope: (v: string) => "single_account" | "multi_account";
|
|
360
|
+
export type StatementAccountScope = ReturnType<typeof toStatementAccountScope>;
|
|
361
|
+
export declare const toStatementAccountScopeStrict: (v: string | null | undefined) => StatementAccountScope | undefined;
|
|
362
|
+
export declare const STATEMENT_ACCOUNT_SCOPES: readonly StatementAccountScope[];
|
|
297
363
|
export interface AccountReconciliationLocalData {
|
|
298
364
|
accountSource?: ReconciliationAccountSourceType;
|
|
299
|
-
|
|
365
|
+
statementAccountScope?: StatementAccountScope;
|
|
366
|
+
/** Confirm & Save drafts keyed by statementUploadId (single and combined). */
|
|
367
|
+
statementUpdateLocalDataByUploadId?: Record<string, StatementUpdateLocalData>;
|
|
300
368
|
}
|
|
301
369
|
export interface AccountReconciliationDataWithTransactionFetchState {
|
|
302
370
|
accountId: ID;
|
|
371
|
+
confirmStatementMappingConflict: ConfirmStatementMappingConflict | null;
|
|
372
|
+
confirmStatementMappingStatus: FetchStateAndError;
|
|
303
373
|
localData: AccountReconciliationLocalData;
|
|
304
374
|
refreshStatus: FetchStateAndError;
|
|
305
375
|
reparseStatementStatus: FetchStateAndError;
|
|
@@ -319,6 +389,9 @@ export interface AccountReconciliationDataWithTransactionFetchState {
|
|
|
319
389
|
statementUploadStatus: FetchStateAndError;
|
|
320
390
|
transactionFetchState: FetchStateAndError;
|
|
321
391
|
accountDetectionReason?: string;
|
|
392
|
+
/** Persisted after mapping confirm for batch GET / group pusher resolution. */
|
|
393
|
+
combinedStatementGroupId?: string;
|
|
394
|
+
confirmedCombinedStatementUploads?: ConfirmedCombinedStatementUpload[];
|
|
322
395
|
parsedStatementData?: ParsedStatementData;
|
|
323
396
|
reconciliationId?: ID;
|
|
324
397
|
/** Wall-clock start used to recompute UI step progress after backgrounding. */
|
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toReconciliationTabsType = exports.toReconcileActions = exports.RECONCILE_ACTIONS = void 0;
|
|
3
|
+
exports.STATEMENT_ACCOUNT_SCOPES = exports.toStatementAccountScopeStrict = exports.toStatementAccountScope = exports.toReconciliationTabsType = exports.toReconcileActions = exports.RECONCILE_ACTIONS = exports.toStatementBalanceSourceStrict = exports.toStatementBalanceSource = void 0;
|
|
4
4
|
exports.toReconciliationViewSummary = toReconciliationViewSummary;
|
|
5
5
|
const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
|
|
6
|
+
const ALL_STATEMENT_BALANCE_SOURCES = [
|
|
7
|
+
'ocr',
|
|
8
|
+
'prior_recon',
|
|
9
|
+
'default_zero',
|
|
10
|
+
];
|
|
11
|
+
const toStatementBalanceSource = (v) => (0, stringToUnion_1.stringToUnion)(v, ALL_STATEMENT_BALANCE_SOURCES);
|
|
12
|
+
exports.toStatementBalanceSource = toStatementBalanceSource;
|
|
13
|
+
const toStatementBalanceSourceStrict = (v) => (0, stringToUnion_1.stringToUnionStrict)(v ?? '', ALL_STATEMENT_BALANCE_SOURCES);
|
|
14
|
+
exports.toStatementBalanceSourceStrict = toStatementBalanceSourceStrict;
|
|
6
15
|
function toReconciliationViewSummary(payload) {
|
|
7
16
|
return {
|
|
8
17
|
accounts: {
|
|
@@ -65,3 +74,12 @@ const RECON_REVIEW_SORT_KEYS = [
|
|
|
65
74
|
];
|
|
66
75
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
67
76
|
const toReconReviewSortKey = (v) => (0, stringToUnion_1.stringToUnion)(v, RECON_REVIEW_SORT_KEYS);
|
|
77
|
+
const ALL_STATEMENT_ACCOUNT_SCOPES = [
|
|
78
|
+
'single_account',
|
|
79
|
+
'multi_account',
|
|
80
|
+
];
|
|
81
|
+
const toStatementAccountScope = (v) => (0, stringToUnion_1.stringToUnion)(v, ALL_STATEMENT_ACCOUNT_SCOPES);
|
|
82
|
+
exports.toStatementAccountScope = toStatementAccountScope;
|
|
83
|
+
const toStatementAccountScopeStrict = (v) => (0, stringToUnion_1.stringToUnionStrict)(v ?? '', ALL_STATEMENT_ACCOUNT_SCOPES);
|
|
84
|
+
exports.toStatementAccountScopeStrict = toStatementAccountScopeStrict;
|
|
85
|
+
exports.STATEMENT_ACCOUNT_SCOPES = ALL_STATEMENT_ACCOUNT_SCOPES;
|