@zeniai/client-epic-state 5.0.78 → 5.0.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonStateTypes/cacheOverrideFetchReducer.d.ts +17 -0
- package/lib/commonStateTypes/cacheOverrideFetchReducer.js +20 -0
- package/lib/commonStateTypes/filterPrimitives.d.ts +23 -0
- package/lib/commonStateTypes/filterPrimitives.js +21 -0
- package/lib/commonStateTypes/pusherActions.d.ts +11 -0
- package/lib/commonStateTypes/pusherActions.js +6 -0
- package/lib/coreEpics.js +1 -1
- package/lib/entity/account/accountSelector.d.ts +27 -1
- package/lib/entity/account/accountSelector.js +47 -1
- package/lib/entity/account/accountState.d.ts +6 -1
- package/lib/entity/account/accountState.js +11 -4
- package/lib/entity/account/subAccountSelector.d.ts +1 -1
- package/lib/entity/aiAccountantCustomer/aiAccountantCustomerPayload.js +1 -3
- package/lib/entity/aiAccountantCustomer/aiAccountantCustomerReducer.js +1 -2
- package/lib/entity/aiAccountantCustomer/aiAccountantCustomerSelector.d.ts +1 -1
- package/lib/entity/chargeCard/chargeCardReducer.d.ts +19 -2
- package/lib/entity/chargeCard/chargeCardReducer.js +35 -2
- package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.d.ts +14 -1
- package/lib/entity/chargeCardTransaction/chargeCardTransactionReducer.js +36 -2
- package/lib/entity/class/classSelector.d.ts +35 -0
- package/lib/entity/class/classSelector.js +50 -0
- package/lib/entity/sectionProjectView/sectionProjectViewReducer.d.ts +1 -1
- package/lib/entity/sectionProjectView/sectionProjectViewSelector.js +1 -1
- package/lib/entity/tenant/SessionManager.js +6 -3
- package/lib/entity/tenant/clearAllEpic.d.ts +2 -2
- package/lib/entity/tenant/clearAllEpic.js +2 -2
- package/lib/entity/tenant/epic/saveAPIKeyConnectionEpic.js +6 -2
- package/lib/entity/tenant/epic/saveOAuthConnectionEpic.js +6 -2
- package/lib/entity/tenant/tenantReducer.js +6 -1
- package/lib/entity/transaction/payloadTypes/transactionLinePayload.js +3 -1
- package/lib/epic.d.ts +11 -11
- package/lib/epic.js +12 -12
- package/lib/esm/commonStateTypes/cacheOverrideFetchReducer.js +16 -0
- package/lib/esm/commonStateTypes/filterPrimitives.js +20 -0
- package/lib/esm/commonStateTypes/pusherActions.js +3 -0
- package/lib/esm/coreEpics.js +1 -1
- package/lib/esm/entity/account/accountSelector.js +46 -1
- package/lib/esm/entity/account/accountState.js +7 -1
- package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerPayload.js +1 -3
- package/lib/esm/entity/aiAccountantCustomer/aiAccountantCustomerReducer.js +1 -2
- package/lib/esm/entity/chargeCard/chargeCardReducer.js +34 -1
- package/lib/esm/entity/chargeCardTransaction/chargeCardTransactionReducer.js +35 -1
- package/lib/esm/entity/class/classSelector.js +48 -0
- package/lib/esm/entity/sectionProjectView/sectionProjectViewSelector.js +1 -1
- package/lib/esm/entity/tenant/SessionManager.js +4 -1
- package/lib/esm/entity/tenant/clearAllEpic.js +2 -2
- package/lib/esm/entity/tenant/epic/saveAPIKeyConnectionEpic.js +6 -2
- package/lib/esm/entity/tenant/epic/saveOAuthConnectionEpic.js +6 -2
- package/lib/esm/entity/tenant/tenantReducer.js +6 -1
- package/lib/esm/entity/transaction/payloadTypes/transactionLinePayload.js +3 -1
- package/lib/esm/epic.js +12 -12
- package/lib/esm/index.js +31 -21
- package/lib/esm/reducer.js +2 -2
- package/lib/esm/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.js +2 -5
- package/lib/esm/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.js +2 -5
- package/lib/esm/view/aiAccountantView/epics/triggerAiAccountantJobEpic.js +4 -1
- package/lib/esm/view/companyHealthMetricView/companyHealthMetricViewSelector.js +1 -1
- package/lib/esm/view/companyTaskManagerView/companyTaskManagerViewSelector.js +1 -1
- package/lib/esm/view/companyTaskManagerView/epics/fetchTaskManagerMetricsEpic.js +1 -1
- package/lib/esm/view/companyView/helpers/cockpitHelpers.js +1 -1
- package/lib/esm/view/companyView/selector/companyManagementViewSelector.js +1 -1
- package/lib/esm/view/companyView/selector/companyPortfolioViewSelector.js +1 -1
- package/lib/esm/view/creditAgentView/creditAgentViewReducer.js +1 -16
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchBulkUploadBatchesEpic.js +2 -2
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js +2 -1
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/restoreBulkUploadAutomatchingOnMountEpic.js +8 -6
- package/lib/esm/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +7 -1
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +11 -1
- package/lib/esm/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +21 -1
- package/lib/esm/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +2 -1
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +253 -14
- package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +147 -13
- package/lib/esm/view/expenseAutomationView/transactionFilterHelpers.js +258 -0
- package/lib/esm/view/expenseAutomationView/types/completedSubTab.js +17 -0
- package/lib/esm/view/expenseAutomationView/types/missingReceiptsViewState.js +0 -2
- package/lib/esm/view/financeStatement/financeStatementSelector.js +1 -1
- package/lib/esm/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.js +87 -0
- package/lib/esm/view/recommendation/recommendationHelper.js +29 -0
- package/lib/esm/view/recommendation/recommendationReducer.js +26 -1
- package/lib/esm/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.js +3 -2
- package/lib/esm/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.js +3 -2
- package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.js +55 -18
- package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailEpic.js +16 -2
- package/lib/esm/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailPageEpic.js +5 -4
- package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.js +26 -9
- package/lib/esm/view/spendManagement/chargeCards/chargeCardList/fetchChargeCardListPageEpic.js +9 -6
- package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +3 -2
- package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +1 -1
- package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.js +7 -3
- package/lib/esm/view/spendManagement/commonHistoryView/commonHistoryPayload.js +8 -3
- package/lib/esm/view/spendManagement/commonHistoryView/commonHistoryReducer.js +3 -2
- package/lib/esm/view/spendManagement/commonHistoryView/fetchEntityHistoryEpic.js +2 -0
- package/lib/esm/view/spendManagement/spendManagementFilterHelpers.js +4 -2
- package/lib/esm/view/subscriptionView/subscriptionViewSelector.js +1 -1
- package/lib/esm/view/taskManager/cannedResponsesView/epics/fetchCannedResponsesEpic.js +1 -1
- package/lib/esm/view/taskManager/cannedResponsesView/epics/saveCannedResponseEpic.js +1 -1
- package/lib/esm/view/taskManager/taskDetailView/epics/unsnoozeTaskEpic.js +1 -1
- package/lib/esm/view/taskManager/taskListView/taskListReducer.js +1 -1
- package/lib/esm/view/transactionDetail/transactionDetailReducer.js +121 -6
- package/lib/esm/view/transactionDetail/transactionDetailSelector.js +29 -1
- package/lib/index.d.ts +31 -24
- package/lib/index.js +84 -60
- package/lib/reducer.d.ts +2 -2
- package/lib/reducer.js +2 -2
- package/lib/view/aiAccountantView/aiAccountantViewPayload.d.ts +2 -2
- package/lib/view/aiAccountantView/aiAccountantViewReducer.d.ts +1 -1
- package/lib/view/aiAccountantView/epics/fetchAiAccountantCustomersEpic.js +2 -5
- package/lib/view/aiAccountantView/epics/fetchAiAccountantJobsEpic.js +2 -5
- package/lib/view/aiAccountantView/epics/triggerAiAccountantJobEpic.js +4 -1
- package/lib/view/companyHealthMetricView/companyHealthMetricViewSelector.js +1 -1
- package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.d.ts +1 -1
- package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.js +1 -1
- package/lib/view/companyView/helpers/cockpitHelpers.js +1 -1
- package/lib/view/companyView/selector/companyManagementViewSelector.js +1 -1
- package/lib/view/companyView/selector/companyPortfolioViewSelector.js +1 -1
- package/lib/view/companyView/types/cockpitTypes.d.ts +1 -1
- package/lib/view/creditAgentView/creditAgentViewPayload.d.ts +0 -3
- package/lib/view/creditAgentView/creditAgentViewReducer.d.ts +1 -1
- package/lib/view/creditAgentView/creditAgentViewReducer.js +2 -17
- package/lib/view/creditAgentView/creditAgentViewState.d.ts +0 -5
- package/lib/view/expenseAutomationView/epics/missingReceipts/fetchBulkUploadBatchesEpic.js +2 -2
- package/lib/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js +2 -1
- package/lib/view/expenseAutomationView/epics/missingReceipts/restoreBulkUploadAutomatchingOnMountEpic.js +8 -6
- package/lib/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js +7 -1
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.d.ts +2 -2
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +10 -0
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +2 -1
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +23 -2
- package/lib/view/expenseAutomationView/payload/transactionCategorizationPayload.d.ts +21 -0
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.d.ts +2 -1
- package/lib/view/expenseAutomationView/reducers/missingReceiptsViewReducer.js +2 -1
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +28 -5
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +253 -14
- package/lib/view/expenseAutomationView/selectorTypes/missingReceiptsSelectorTypes.d.ts +2 -1
- package/lib/view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes.d.ts +16 -0
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.d.ts +7 -1
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +150 -13
- package/lib/view/expenseAutomationView/transactionFilterHelpers.d.ts +66 -0
- package/lib/view/expenseAutomationView/transactionFilterHelpers.js +262 -0
- package/lib/view/expenseAutomationView/types/completedSubTab.d.ts +10 -0
- package/lib/view/expenseAutomationView/types/completedSubTab.js +21 -0
- package/lib/view/expenseAutomationView/types/missingReceiptsViewState.d.ts +1 -2
- package/lib/view/expenseAutomationView/types/missingReceiptsViewState.js +1 -4
- package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +44 -2
- package/lib/view/financeStatement/financeStatementSelector.js +1 -1
- package/lib/view/profitAndLossProjectView/profitAndLossProjectViewSelectorTypes.d.ts +1 -1
- package/lib/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.d.ts +9 -0
- package/lib/view/recommendation/fetchEntityRecommendationsForLineUpdateEpic.js +91 -0
- package/lib/view/recommendation/recommendationHelper.d.ts +9 -0
- package/lib/view/recommendation/recommendationHelper.js +31 -1
- package/lib/view/recommendation/recommendationReducer.d.ts +20 -1
- package/lib/view/recommendation/recommendationReducer.js +27 -2
- package/lib/view/spendManagement/billPay/billList/billListState.d.ts +1 -1
- package/lib/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.d.ts +3 -1
- package/lib/view/spendManagement/chargeCards/cashbackDetail/cashbackDetailReducer.js +3 -2
- package/lib/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.d.ts +3 -1
- package/lib/view/spendManagement/chargeCards/chargeCardConfig/chargeCardConfigReducer.js +3 -2
- package/lib/view/spendManagement/chargeCards/chargeCardDetail/chargeCardDetailReducer.js +55 -18
- package/lib/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailEpic.js +16 -2
- package/lib/view/spendManagement/chargeCards/chargeCardDetail/fetchChargeCardDetailPageEpic.js +5 -4
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.d.ts +18 -3
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListReducer.js +27 -10
- package/lib/view/spendManagement/chargeCards/chargeCardList/fetchChargeCardListPageEpic.js +9 -6
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistory.d.ts +1 -1
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.d.ts +3 -1
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryReducer.js +3 -2
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/fetchChargeCardPaymentPageEpic.js +1 -1
- package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.d.ts +3 -1
- package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailReducer.js +7 -3
- package/lib/view/spendManagement/commonHistoryView/commonHistoryPayload.d.ts +1 -1
- package/lib/view/spendManagement/commonHistoryView/commonHistoryPayload.js +7 -2
- package/lib/view/spendManagement/commonHistoryView/commonHistoryReducer.d.ts +1 -0
- package/lib/view/spendManagement/commonHistoryView/commonHistoryReducer.js +3 -2
- package/lib/view/spendManagement/commonHistoryView/fetchEntityHistoryEpic.js +2 -0
- package/lib/view/spendManagement/reimbursement/remiListView/remiListState.d.ts +1 -1
- package/lib/view/spendManagement/spendManagementFilterHelpers.d.ts +12 -3
- package/lib/view/spendManagement/spendManagementFilterHelpers.js +4 -2
- package/lib/view/subscriptionView/subscriptionViewSelector.js +1 -1
- package/lib/view/taskManager/taskListView/taskList.d.ts +1 -1
- package/lib/view/taskManager/taskListView/taskListReducer.js +1 -1
- package/lib/view/transactionDetail/transactionDetailReducer.d.ts +11 -1
- package/lib/view/transactionDetail/transactionDetailReducer.js +122 -7
- package/lib/view/transactionDetail/transactionDetailSelector.d.ts +2 -0
- package/lib/view/transactionDetail/transactionDetailSelector.js +31 -2
- package/lib/view/transactionDetail/transactionDetailTypes.d.ts +1 -0
- package/lib/view/zeniOAuthView/zeniOAuthSelector.d.ts +1 -1
- package/package.json +9 -4
- package/lib/esm/view/creditAgentView/epics/fetchCreditAgentAccessEpic.js +0 -13
- package/lib/view/creditAgentView/epics/fetchCreditAgentAccessEpic.d.ts +0 -11
- package/lib/view/creditAgentView/epics/fetchCreditAgentAccessEpic.js +0 -17
package/lib/reducer.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { AccountGroupState } from './entity/accountGroup/accountGroupState';
|
|
|
3
3
|
import { AccountReconState } from './entity/accountRecon/accountReconState';
|
|
4
4
|
import { AddressState } from './entity/address/addressState';
|
|
5
5
|
import { AiAccountantCustomerState } from './entity/aiAccountantCustomer/aiAccountantCustomerState';
|
|
6
|
-
import { CreditAgentEntityState } from './entity/creditAgent/creditAgentState';
|
|
7
6
|
import { AiCfoState } from './entity/aiCfo/aiCfoState';
|
|
8
7
|
import { ApprovalRuleState } from './entity/approvalRule/approvalRuleState';
|
|
9
8
|
import { BankAccountState } from './entity/bankAccount/bankAccount';
|
|
@@ -19,6 +18,7 @@ import { CompanyState } from './entity/company/companyState';
|
|
|
19
18
|
import { CompanyHealthState } from './entity/companyHealthMetric/companyHealthMetricState';
|
|
20
19
|
import { ConnectedAccountState } from './entity/connectedAccount/connectedAccount';
|
|
21
20
|
import { CountryListState } from './entity/countryList/countryListState';
|
|
21
|
+
import { CreditAgentEntityState } from './entity/creditAgent/creditAgentState';
|
|
22
22
|
import { CurrencyState } from './entity/currency/currency';
|
|
23
23
|
import { CustomerState } from './entity/customer/customerState';
|
|
24
24
|
import { CustomerIncomeState } from './entity/customerIncome/customerIncomeTrendState';
|
|
@@ -106,8 +106,8 @@ import { JESchedulesViewState as ExpenseAutomationJESchedulesViewState } from '.
|
|
|
106
106
|
import { MissingReceiptsViewState as ExpenseAutomationMissingReceiptsViewState } from './view/expenseAutomationView/types/missingReceiptsViewState';
|
|
107
107
|
import { ReconciliationViewState as ExpenseAutomationReconciliationViewState } from './view/expenseAutomationView/types/reconciliationViewState';
|
|
108
108
|
import { TransactionsViewState as ExpenseAutomationTransactionsViewState } from './view/expenseAutomationView/types/transactionsViewState';
|
|
109
|
-
import { FileViewState } from './view/fileView/fileViewState';
|
|
110
109
|
import { FeatureNotificationViewState } from './view/featureNotificationView/featureNotificationViewState';
|
|
110
|
+
import { FileViewState } from './view/fileView/fileViewState';
|
|
111
111
|
import { FinanceStatementState } from './view/financeStatement/financeStatementState';
|
|
112
112
|
import { ForecastListState } from './view/forecastList/forecastListState';
|
|
113
113
|
import { GlobalMerchantAutoCompleteState } from './view/globalMerchantView/globalMerchantAutoCompleteView/globalMerchantAutoCompleteViewState';
|
package/lib/reducer.js
CHANGED
|
@@ -43,7 +43,6 @@ const accountGroupReducer_1 = __importStar(require("./entity/accountGroup/accoun
|
|
|
43
43
|
const accountReconReducer_1 = __importStar(require("./entity/accountRecon/accountReconReducer"));
|
|
44
44
|
const addressReducer_1 = __importStar(require("./entity/address/addressReducer"));
|
|
45
45
|
const aiAccountantCustomerReducer_1 = __importStar(require("./entity/aiAccountantCustomer/aiAccountantCustomerReducer"));
|
|
46
|
-
const creditAgentReducer_1 = __importStar(require("./entity/creditAgent/creditAgentReducer"));
|
|
47
46
|
const aiCfoReducer_1 = __importStar(require("./entity/aiCfo/aiCfoReducer"));
|
|
48
47
|
const approvalRuleReducer_1 = __importStar(require("./entity/approvalRule/approvalRuleReducer"));
|
|
49
48
|
const bankAccountReducer_1 = __importStar(require("./entity/bankAccount/bankAccountReducer"));
|
|
@@ -59,6 +58,7 @@ const companyReducer_1 = __importStar(require("./entity/company/companyReducer")
|
|
|
59
58
|
const companyHealthMetricReducer_1 = __importStar(require("./entity/companyHealthMetric/companyHealthMetricReducer"));
|
|
60
59
|
const connectedAccountReducer_1 = __importStar(require("./entity/connectedAccount/connectedAccountReducer"));
|
|
61
60
|
const countryListReducer_1 = __importStar(require("./entity/countryList/countryListReducer"));
|
|
61
|
+
const creditAgentReducer_1 = __importStar(require("./entity/creditAgent/creditAgentReducer"));
|
|
62
62
|
const currencyReducer_1 = __importStar(require("./entity/currency/currencyReducer"));
|
|
63
63
|
const customerReducer_1 = __importStar(require("./entity/customer/customerReducer"));
|
|
64
64
|
const customerIncomeTrendReducer_1 = __importStar(require("./entity/customerIncome/customerIncomeTrendReducer"));
|
|
@@ -146,9 +146,9 @@ const jeSchedulesViewReducer_1 = __importStar(require("./view/expenseAutomationV
|
|
|
146
146
|
const missingReceiptsViewReducer_1 = __importStar(require("./view/expenseAutomationView/reducers/missingReceiptsViewReducer"));
|
|
147
147
|
const reconciliationViewReducer_1 = __importStar(require("./view/expenseAutomationView/reducers/reconciliationViewReducer"));
|
|
148
148
|
const transactionsViewReducer_1 = __importStar(require("./view/expenseAutomationView/reducers/transactionsViewReducer"));
|
|
149
|
+
const featureNotificationViewReducer_1 = __importStar(require("./view/featureNotificationView/featureNotificationViewReducer"));
|
|
149
150
|
const fileViewReducer_1 = __importDefault(require("./view/fileView/fileViewReducer"));
|
|
150
151
|
const fileViewState_1 = require("./view/fileView/fileViewState");
|
|
151
|
-
const featureNotificationViewReducer_1 = __importStar(require("./view/featureNotificationView/featureNotificationViewReducer"));
|
|
152
152
|
const financeStatementReducer_1 = __importStar(require("./view/financeStatement/financeStatementReducer"));
|
|
153
153
|
const forecastListReducer_1 = __importStar(require("./view/forecastList/forecastListReducer"));
|
|
154
154
|
const globalMerchantAutoCompleteViewReducer_1 = __importStar(require("./view/globalMerchantView/globalMerchantAutoCompleteView/globalMerchantAutoCompleteViewReducer"));
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ZeniAPIResponse } from '../../responsePayload';
|
|
2
|
-
export { AiAccountantCustomerPayload, AiAccountantEnrollmentPayload, AiAccountantJobPayload, toAiAccountantCustomer, toAiAccountantEnrollment, toAiAccountantJob, } from '../../entity/aiAccountantCustomer/aiAccountantCustomerPayload';
|
|
3
1
|
import type { AiAccountantCustomerPayload, AiAccountantJobPayload } from '../../entity/aiAccountantCustomer/aiAccountantCustomerPayload';
|
|
4
2
|
import { UserPayload } from '../../entity/user/userPayload';
|
|
3
|
+
import { ZeniAPIResponse } from '../../responsePayload';
|
|
4
|
+
export { AiAccountantCustomerPayload, AiAccountantEnrollmentPayload, AiAccountantJobPayload, toAiAccountantCustomer, toAiAccountantEnrollment, toAiAccountantJob, } from '../../entity/aiAccountantCustomer/aiAccountantCustomerPayload';
|
|
5
5
|
export interface AiAccountantCustomersResponseData {
|
|
6
6
|
customers: AiAccountantCustomerPayload[];
|
|
7
7
|
users: UserPayload[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { AiAccountantCustomerPayload } from '../../entity/aiAccountantCustomer/aiAccountantCustomerPayload';
|
|
2
1
|
import { ID } from '../../commonStateTypes/common';
|
|
2
|
+
import { AiAccountantCustomerPayload } from '../../entity/aiAccountantCustomer/aiAccountantCustomerPayload';
|
|
3
3
|
import { ZeniAPIStatus } from '../../responsePayload';
|
|
4
4
|
import { AiAccountantUIState, AiAccountantViewState } from './aiAccountantViewState';
|
|
5
5
|
export declare const initialAiAccountantViewState: AiAccountantViewState;
|
|
@@ -10,9 +10,7 @@ const aiAccountantViewReducer_1 = require("../aiAccountantViewReducer");
|
|
|
10
10
|
const fetchAiAccountantCustomersEpic = (actions$, _, zeniAPI) => actions$.pipe((0, operators_1.filter)(aiAccountantViewReducer_1.fetchAiAccountantCustomers.match), (0, operators_1.switchMap)(() => {
|
|
11
11
|
const base = `${zeniAPI.apiEndPoints.tenantMicroServiceBaseUrl}/1.0/cockpit-panels`;
|
|
12
12
|
const url = `${base}/ai-accountant/customers`;
|
|
13
|
-
return zeniAPI
|
|
14
|
-
.getJSON(url)
|
|
15
|
-
.pipe((0, operators_1.mergeMap)((response) => {
|
|
13
|
+
return zeniAPI.getJSON(url).pipe((0, operators_1.mergeMap)((response) => {
|
|
16
14
|
if ((0, responsePayload_1.isSuccessResponse)(response)) {
|
|
17
15
|
const customers = response.data?.customers ?? [];
|
|
18
16
|
const users = response.data?.users ?? [];
|
|
@@ -25,7 +23,6 @@ const fetchAiAccountantCustomersEpic = (actions$, _, zeniAPI) => actions$.pipe((
|
|
|
25
23
|
else {
|
|
26
24
|
return (0, rxjs_1.of)((0, aiAccountantViewReducer_1.updateAiAccountantCustomersFailure)(response.status));
|
|
27
25
|
}
|
|
28
|
-
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, aiAccountantViewReducer_1.updateAiAccountantCustomersFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected error', 'AI Accountant customers fetch failed: ' +
|
|
29
|
-
JSON.stringify(error))))));
|
|
26
|
+
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, aiAccountantViewReducer_1.updateAiAccountantCustomersFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected error', 'AI Accountant customers fetch failed: ' + JSON.stringify(error))))));
|
|
30
27
|
}));
|
|
31
28
|
exports.fetchAiAccountantCustomersEpic = fetchAiAccountantCustomersEpic;
|
|
@@ -23,9 +23,7 @@ const fetchAiAccountantJobsEpic = (actions$, state$, zeniAPI) => actions$.pipe((
|
|
|
23
23
|
}
|
|
24
24
|
const base = `${zeniAPI.apiEndPoints.tenantMicroServiceBaseUrl}/1.0/cockpit-panels`;
|
|
25
25
|
const url = `${base}/ai-accountant/jobs?${params.toString()}`;
|
|
26
|
-
return zeniAPI
|
|
27
|
-
.getJSON(url)
|
|
28
|
-
.pipe((0, operators_1.mergeMap)((response) => {
|
|
26
|
+
return zeniAPI.getJSON(url).pipe((0, operators_1.mergeMap)((response) => {
|
|
29
27
|
if ((0, responsePayload_1.isSuccessResponse)(response)) {
|
|
30
28
|
const jobs = response.data?.jobs ?? [];
|
|
31
29
|
const users = response.data?.users ?? [];
|
|
@@ -44,8 +42,7 @@ const fetchAiAccountantJobsEpic = (actions$, state$, zeniAPI) => actions$.pipe((
|
|
|
44
42
|
}
|
|
45
43
|
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, aiAccountantViewReducer_1.updateAiAccountantJobsFailure)({
|
|
46
44
|
tenantId,
|
|
47
|
-
error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected error', 'AI Accountant jobs fetch failed: ' +
|
|
48
|
-
JSON.stringify(error)),
|
|
45
|
+
error: (0, responsePayload_1.createZeniAPIStatus)('Unexpected error', 'AI Accountant jobs fetch failed: ' + JSON.stringify(error)),
|
|
49
46
|
}))));
|
|
50
47
|
}));
|
|
51
48
|
exports.fetchAiAccountantJobsEpic = fetchAiAccountantJobsEpic;
|
|
@@ -54,7 +54,10 @@ const triggerAiAccountantJobEpic = (actions$, state$, zeniAPI) => actions$.pipe(
|
|
|
54
54
|
messageText: 'failed',
|
|
55
55
|
type: 'error',
|
|
56
56
|
variables: [
|
|
57
|
-
{
|
|
57
|
+
{
|
|
58
|
+
variableName: '__reason__',
|
|
59
|
+
variableValue: 'Unexpected error',
|
|
60
|
+
},
|
|
58
61
|
],
|
|
59
62
|
}),
|
|
60
63
|
])));
|
|
@@ -299,7 +299,7 @@ const applyAdvancedFiltersOnCompaniesList = (allCompanies, filters, filteredComp
|
|
|
299
299
|
const key = currentFilter.field;
|
|
300
300
|
const categoryValue = getCategoryValueForCompany(key, company);
|
|
301
301
|
if (categoryValue == null) {
|
|
302
|
-
if (currentFilter.matchingOperator === '
|
|
302
|
+
if (currentFilter.matchingOperator === 'not_equal') {
|
|
303
303
|
return true;
|
|
304
304
|
}
|
|
305
305
|
return false;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { FetchState } from '../../commonStateTypes/common';
|
|
1
2
|
import { SelectorView } from '../../commonStateTypes/viewAndReport/viewAndReport';
|
|
2
3
|
import { Company } from '../../entity/company/companyStateTypes';
|
|
3
4
|
import { Tag } from '../../entity/tag/tagState';
|
|
@@ -5,7 +6,6 @@ import { Task } from '../../entity/task/taskState';
|
|
|
5
6
|
import { User } from '../../entity/user/userState';
|
|
6
7
|
import { RootState } from '../../reducer';
|
|
7
8
|
import { CompanyTaskManagerViewUIState, TaskManagerMetrics } from './companyTaskManagerViewState';
|
|
8
|
-
import { FetchState } from '../../commonStateTypes/common';
|
|
9
9
|
export interface TaskWithCompanyDetail {
|
|
10
10
|
assignees: User[];
|
|
11
11
|
company: Company;
|
|
@@ -7,7 +7,7 @@ const tagSelector_1 = require("../../entity/tag/tagSelector");
|
|
|
7
7
|
const taskSelector_1 = require("../../entity/task/taskSelector");
|
|
8
8
|
const userSelector_1 = require("../../entity/user/userSelector");
|
|
9
9
|
exports.getCompanyTaskManagerView = (0, toolkit_1.createSelector)((state) => state.companyTaskManagerViewState, (state) => state.companyState, (state) => state.userState, (state) => state.taskState, (state) => state.tagState, (companyTaskManagerViewState, companyState, userState, taskState, tagState) => {
|
|
10
|
-
const { taskIds, uiState, fetchState, error, totalTaskCount, metrics, metricsFetchState } = companyTaskManagerViewState;
|
|
10
|
+
const { taskIds, uiState, fetchState, error, totalTaskCount, metrics, metricsFetchState, } = companyTaskManagerViewState;
|
|
11
11
|
const tasksList = [];
|
|
12
12
|
taskIds.forEach((taskId) => {
|
|
13
13
|
const task = (0, taskSelector_1.getTaskById)(taskState, taskId);
|
|
@@ -51,7 +51,7 @@ const filterCompanyOnCategoriesWithSingleValue = (categoryValue, currentFilter,
|
|
|
51
51
|
return filterCompanyOnRangeCategoryType(categoryValue, currentFilter);
|
|
52
52
|
}
|
|
53
53
|
// if filter category is not annualRecurringRevenue OR monthlyRecurringRevenue
|
|
54
|
-
if (currentFilter.matchingOperator === '
|
|
54
|
+
if (currentFilter.matchingOperator === 'not_equal') {
|
|
55
55
|
return currentFilter.values.indexOf(categoryValue) === -1;
|
|
56
56
|
}
|
|
57
57
|
return currentFilter.values.indexOf(categoryValue) > -1;
|
|
@@ -159,7 +159,7 @@ const applyAdvancedFiltersOnCompaniesList = (allCompanies, filters, filteredComp
|
|
|
159
159
|
const key = currentFilter.field;
|
|
160
160
|
const categoryValue = getCategoryValueForCompany(key, company);
|
|
161
161
|
if (categoryValue == null) {
|
|
162
|
-
if (currentFilter.matchingOperator === '
|
|
162
|
+
if (currentFilter.matchingOperator === 'not_equal') {
|
|
163
163
|
return true;
|
|
164
164
|
}
|
|
165
165
|
return false;
|
|
@@ -122,7 +122,7 @@ const applyAdvancedFiltersOnCompaniesList = (allCompanies, filters, filteredComp
|
|
|
122
122
|
const key = currentFilter.field;
|
|
123
123
|
const categoryValue = getCategoryValueForCompany(key, company);
|
|
124
124
|
if (categoryValue == null) {
|
|
125
|
-
if (currentFilter.matchingOperator === '
|
|
125
|
+
if (currentFilter.matchingOperator === 'not_equal') {
|
|
126
126
|
return true;
|
|
127
127
|
}
|
|
128
128
|
return false;
|
|
@@ -19,7 +19,7 @@ export type SubscriptionViewFilterCategoryField = 'controllerUserIds' | 'statusC
|
|
|
19
19
|
export type PortfolioViewFilterCategoryField = 'netBurnOrIncome' | 'cashPosition' | 'income' | 'expenses' | 'runway';
|
|
20
20
|
export type HealthMonitorViewFilterCategoryField = 'verticalProductServices' | 'runway' | 'netPromoterScore' | 'customerSatisfactionScore' | 'churnProbabilityPercentage' | 'controller' | 'customerSuccessManager' | 'lastReportSent' | 'subscriptionStartDate' | 'subscriptionRenewalDate' | 'externalProductServiceExposure' | 'companyEngagementMetricsUpdatedAt' | 'companyGroupId' | 'monthlyRecurringRevenue';
|
|
21
21
|
export interface CockpitFilterCategory {
|
|
22
|
-
matchingOperator: 'equal' | '
|
|
22
|
+
matchingOperator: 'equal' | 'not_equal';
|
|
23
23
|
values: FilterCategoryValueType[];
|
|
24
24
|
valuesCombinationOperator: 'ANY' | 'ALL';
|
|
25
25
|
field?: AiAccountantFilterCategoryField | ManagementViewFilterCategoryField | SubscriptionViewFilterCategoryField | PortfolioViewFilterCategoryField | HealthMonitorViewFilterCategoryField;
|
|
@@ -2,8 +2,5 @@ import type { CardTenantProfileUpdatePayload, CardTenantProfilesPayload, MacroPa
|
|
|
2
2
|
import { ZeniAPIResponse } from '../../responsePayload';
|
|
3
3
|
export { CardTenantProfileRowPayload, CardTenantProfilesPayload, CardTenantProfileUpdatePayload, MacroPayload, toCardTenantProfileRow, toMacro, } from '../../entity/creditAgent/creditAgentPayload';
|
|
4
4
|
export type CardTenantProfilesResponse = ZeniAPIResponse<CardTenantProfilesPayload>;
|
|
5
|
-
export type CreditAgentAccessResponse = ZeniAPIResponse<{
|
|
6
|
-
is_allowed: boolean;
|
|
7
|
-
}>;
|
|
8
5
|
export type CardTenantProfileUpdateResponse = ZeniAPIResponse<CardTenantProfileUpdatePayload>;
|
|
9
6
|
export type MacroResponse = ZeniAPIResponse<MacroPayload>;
|
|
@@ -3,7 +3,7 @@ import { CardStatus } from '../../entity/creditAgent/creditAgentState';
|
|
|
3
3
|
import { ZeniAPIStatus } from '../../responsePayload';
|
|
4
4
|
import { CreditAgentUIState, CreditAgentViewState } from './creditAgentViewState';
|
|
5
5
|
export declare const initialCreditAgentViewState: CreditAgentViewState;
|
|
6
|
-
export declare const
|
|
6
|
+
export declare const scheduleTenantCreditScoreCron: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[tenantId?: string | undefined], {
|
|
7
7
|
tenantId: string | undefined;
|
|
8
8
|
}, "creditAgentView/scheduleTenantCreditScoreCron", never, never>, scheduleTenantCreditScoreCronSuccess: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[tenantId?: string | undefined], {
|
|
9
9
|
tenantId: string | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.initialState = exports.clearCreditAgentView = exports.updateCreditAgentUIState = exports.updateCardProfileFailure = exports.updateCardProfileSuccess = exports.updateCardProfile = exports.fetchCardProfilesFailure = exports.fetchCardProfilesSuccess = exports.fetchCardProfiles = exports.resetSaveMacroState = exports.saveCreditAgentMacroFailure = exports.saveCreditAgentMacroSuccess = exports.saveCreditAgentMacro = exports.fetchCreditAgentMacroFailure = exports.fetchCreditAgentMacroSuccess = exports.fetchCreditAgentMacro = exports.scheduleTenantCreditScoreCronFailure = exports.scheduleTenantCreditScoreCronSuccess = exports.scheduleTenantCreditScoreCron = exports.
|
|
4
|
+
exports.initialState = exports.clearCreditAgentView = exports.updateCreditAgentUIState = exports.updateCardProfileFailure = exports.updateCardProfileSuccess = exports.updateCardProfile = exports.fetchCardProfilesFailure = exports.fetchCardProfilesSuccess = exports.fetchCardProfiles = exports.resetSaveMacroState = exports.saveCreditAgentMacroFailure = exports.saveCreditAgentMacroSuccess = exports.saveCreditAgentMacro = exports.fetchCreditAgentMacroFailure = exports.fetchCreditAgentMacroSuccess = exports.fetchCreditAgentMacro = exports.scheduleTenantCreditScoreCronFailure = exports.scheduleTenantCreditScoreCronSuccess = exports.scheduleTenantCreditScoreCron = exports.initialCreditAgentViewState = void 0;
|
|
5
5
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
6
6
|
const initialTenantView = {
|
|
7
7
|
analyzeStatus: { fetchState: 'Not-Started' },
|
|
@@ -17,10 +17,6 @@ function getOrCreateTenantView(draft, tenantId) {
|
|
|
17
17
|
return draft.tenantViewByTenantId[tenantId];
|
|
18
18
|
}
|
|
19
19
|
exports.initialCreditAgentViewState = {
|
|
20
|
-
access: {
|
|
21
|
-
fetchStatus: { fetchState: 'Not-Started' },
|
|
22
|
-
isAllowed: false,
|
|
23
|
-
},
|
|
24
20
|
macro: {
|
|
25
21
|
fetchStatus: { fetchState: 'Not-Started' },
|
|
26
22
|
updateStatus: { fetchState: 'Not-Started' },
|
|
@@ -40,17 +36,6 @@ const creditAgentView = (0, toolkit_1.createSlice)({
|
|
|
40
36
|
name: 'creditAgentView',
|
|
41
37
|
initialState: exports.initialCreditAgentViewState,
|
|
42
38
|
reducers: {
|
|
43
|
-
// ── Access ──
|
|
44
|
-
fetchCreditAgentAccess(draft) {
|
|
45
|
-
draft.access.fetchStatus = { fetchState: 'In-Progress' };
|
|
46
|
-
},
|
|
47
|
-
fetchCreditAgentAccessSuccess(draft, action) {
|
|
48
|
-
draft.access.fetchStatus = { fetchState: 'Completed' };
|
|
49
|
-
draft.access.isAllowed = action.payload;
|
|
50
|
-
},
|
|
51
|
-
fetchCreditAgentAccessFailure(draft, action) {
|
|
52
|
-
draft.access.fetchStatus = { fetchState: 'Error', error: action.payload };
|
|
53
|
-
},
|
|
54
39
|
// ── Card Profiles (list-level fetch) ──
|
|
55
40
|
fetchCardProfiles(draft) {
|
|
56
41
|
draft.profilesFetchStatus = { fetchState: 'In-Progress' };
|
|
@@ -169,7 +154,7 @@ const creditAgentView = (0, toolkit_1.createSlice)({
|
|
|
169
154
|
},
|
|
170
155
|
},
|
|
171
156
|
});
|
|
172
|
-
_a = creditAgentView.actions, exports.
|
|
157
|
+
_a = creditAgentView.actions, exports.scheduleTenantCreditScoreCron = _a.scheduleTenantCreditScoreCron, exports.scheduleTenantCreditScoreCronSuccess = _a.scheduleTenantCreditScoreCronSuccess, exports.scheduleTenantCreditScoreCronFailure = _a.scheduleTenantCreditScoreCronFailure, exports.fetchCreditAgentMacro = _a.fetchCreditAgentMacro, exports.fetchCreditAgentMacroSuccess = _a.fetchCreditAgentMacroSuccess, exports.fetchCreditAgentMacroFailure = _a.fetchCreditAgentMacroFailure, exports.saveCreditAgentMacro = _a.saveCreditAgentMacro, exports.saveCreditAgentMacroSuccess = _a.saveCreditAgentMacroSuccess, exports.saveCreditAgentMacroFailure = _a.saveCreditAgentMacroFailure, exports.resetSaveMacroState = _a.resetSaveMacroState, exports.fetchCardProfiles = _a.fetchCardProfiles, exports.fetchCardProfilesSuccess = _a.fetchCardProfilesSuccess, exports.fetchCardProfilesFailure = _a.fetchCardProfilesFailure, exports.updateCardProfile = _a.updateCardProfile, exports.updateCardProfileSuccess = _a.updateCardProfileSuccess, exports.updateCardProfileFailure = _a.updateCardProfileFailure, exports.updateCreditAgentUIState = _a.updateCreditAgentUIState, exports.clearCreditAgentView = _a.clearCreditAgentView;
|
|
173
158
|
exports.default = creditAgentView.reducer;
|
|
174
159
|
// ── Helpers ──
|
|
175
160
|
const toTenantViewByTenantId = (rows, existing) => {
|
|
@@ -12,10 +12,6 @@ export interface CreditAgentUIState {
|
|
|
12
12
|
sortDir: CreditAgentSortDir;
|
|
13
13
|
sortKey?: CreditAgentSortKey;
|
|
14
14
|
}
|
|
15
|
-
export interface CreditAgentAccessState {
|
|
16
|
-
fetchStatus: FetchStateAndError;
|
|
17
|
-
isAllowed: boolean;
|
|
18
|
-
}
|
|
19
15
|
export interface CreditAgentTenantView {
|
|
20
16
|
analyzeStatus: FetchStateAndError;
|
|
21
17
|
tenantId: ID;
|
|
@@ -26,7 +22,6 @@ export interface CreditAgentMacroState {
|
|
|
26
22
|
updateStatus: FetchStateAndError;
|
|
27
23
|
}
|
|
28
24
|
export interface CreditAgentViewState {
|
|
29
|
-
access: CreditAgentAccessState;
|
|
30
25
|
macro: CreditAgentMacroState;
|
|
31
26
|
profilesFetchStatus: FetchStateAndError;
|
|
32
27
|
tenantViewByTenantId: Record<ID, CreditAgentTenantView>;
|
|
@@ -6,10 +6,10 @@ const operators_1 = require("rxjs/operators");
|
|
|
6
6
|
const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
|
|
7
7
|
const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
|
|
8
8
|
const responsePayload_1 = require("../../../../responsePayload");
|
|
9
|
-
const missingReceiptsPayload_1 = require("../../payload/missingReceiptsPayload");
|
|
10
|
-
const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
|
|
11
9
|
const bulkUploadTiming_1 = require("../../helpers/bulkUploadTiming");
|
|
12
10
|
const rollingCalendarDateRangeInclusive_1 = require("../../helpers/rollingCalendarDateRangeInclusive");
|
|
11
|
+
const missingReceiptsPayload_1 = require("../../payload/missingReceiptsPayload");
|
|
12
|
+
const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
|
|
13
13
|
const fetchBulkUploadBatchesEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.fetchBulkUploadBatches.match), (0, operators_1.switchMap)((action) => {
|
|
14
14
|
const { cacheOverride } = action.payload;
|
|
15
15
|
const state = state$.value;
|
package/lib/view/expenseAutomationView/epics/missingReceipts/fetchCompletedTransactionsEpic.js
CHANGED
|
@@ -8,6 +8,7 @@ const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
|
|
|
8
8
|
const transactionReducer_1 = require("../../../../entity/transaction/transactionReducer");
|
|
9
9
|
const responsePayload_1 = require("../../../../responsePayload");
|
|
10
10
|
const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
|
|
11
|
+
const completedSubTab_1 = require("../../types/completedSubTab");
|
|
11
12
|
const fetchCompletedTransactionsEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(missingReceiptsViewReducer_1.fetchCompletedTransactions.match), (0, operators_1.switchMap)((action) => {
|
|
12
13
|
const state = state$.value;
|
|
13
14
|
const { expenseAutomationViewState: { selectedPeriodByTenantId }, expenseAutomationMissingReceiptsViewState: { bulkUpload }, } = state;
|
|
@@ -42,7 +43,7 @@ const fetchCompletedTransactionsEpic = (actions$, state$, zeniAPI) => actions$.p
|
|
|
42
43
|
if (sortOrder != null) {
|
|
43
44
|
queryPayload.sort_order = sortOrder === 'ascending' ? 'asc' : 'desc';
|
|
44
45
|
}
|
|
45
|
-
if (completedSubTab !==
|
|
46
|
+
if (completedSubTab !== completedSubTab_1.DEFAULT_COMPLETED_SUB_TAB) {
|
|
46
47
|
queryPayload.match_type = completedSubTab;
|
|
47
48
|
}
|
|
48
49
|
const encodedQuery = encodeURIComponent(JSON.stringify(queryPayload));
|
|
@@ -3,13 +3,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.restoreBulkUploadAutomatchingOnMountEpic = void 0;
|
|
4
4
|
const rxjs_1 = require("rxjs");
|
|
5
5
|
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
|
|
7
|
+
const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
|
|
6
8
|
const responsePayload_1 = require("../../../../responsePayload");
|
|
7
|
-
const missingReceiptsPayload_1 = require("../../payload/missingReceiptsPayload");
|
|
8
|
-
const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
|
|
9
9
|
const bulkUploadTiming_1 = require("../../helpers/bulkUploadTiming");
|
|
10
10
|
const rollingCalendarDateRangeInclusive_1 = require("../../helpers/rollingCalendarDateRangeInclusive");
|
|
11
|
-
const
|
|
12
|
-
const
|
|
11
|
+
const missingReceiptsPayload_1 = require("../../payload/missingReceiptsPayload");
|
|
12
|
+
const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
|
|
13
13
|
/**
|
|
14
14
|
* On missing-receipts entry / period switch, hydrate the automatching banner for the logged-in
|
|
15
15
|
* user without relying on UI-driven list fetches (the Missing tab does not fetch the batch list
|
|
@@ -52,10 +52,12 @@ const restoreBulkUploadAutomatchingOnMountEpic = (actions$, state$, zeniAPI) =>
|
|
|
52
52
|
bulkUpload.batchListFetchState.fetchState === 'Completed';
|
|
53
53
|
const listSource = alreadyCached
|
|
54
54
|
? (0, rxjs_1.of)(null)
|
|
55
|
-
: zeniAPI
|
|
55
|
+
: zeniAPI
|
|
56
|
+
.getJSON(listUrl)
|
|
57
|
+
.pipe((0, operators_1.catchError)(() => (0, rxjs_1.of)(null)));
|
|
56
58
|
return listSource.pipe((0, operators_1.mergeMap)((listResponse) => {
|
|
57
59
|
const batchList = alreadyCached
|
|
58
|
-
? bulkUpload.batchListByPeriod[periodId] ?? []
|
|
60
|
+
? (bulkUpload.batchListByPeriod[periodId] ?? [])
|
|
59
61
|
: listResponse != null &&
|
|
60
62
|
(0, responsePayload_1.isSuccessResponse)(listResponse) &&
|
|
61
63
|
listResponse.data != null
|
package/lib/view/expenseAutomationView/epics/missingReceipts/searchTransactionsForManualMatchEpic.js
CHANGED
|
@@ -5,10 +5,11 @@ const rxjs_1 = require("rxjs");
|
|
|
5
5
|
const operators_1 = require("rxjs/operators");
|
|
6
6
|
const transactionReducer_1 = require("../../../../entity/transaction/transactionReducer");
|
|
7
7
|
const responsePayload_1 = require("../../../../responsePayload");
|
|
8
|
+
const rollingCalendarDateRangeInclusive_1 = require("../../helpers/rollingCalendarDateRangeInclusive");
|
|
8
9
|
const missingReceiptsPayload_1 = require("../../payload/missingReceiptsPayload");
|
|
9
10
|
const missingReceiptsViewReducer_1 = require("../../reducers/missingReceiptsViewReducer");
|
|
11
|
+
const completedSubTab_1 = require("../../types/completedSubTab");
|
|
10
12
|
const transactionsViewState_1 = require("../../types/transactionsViewState");
|
|
11
|
-
const rollingCalendarDateRangeInclusive_1 = require("../../helpers/rollingCalendarDateRangeInclusive");
|
|
12
13
|
/**
|
|
13
14
|
* `auto_categorized` for manual transaction search (Unmatched).
|
|
14
15
|
* Backend contract TBD — align with `fetchTransactionCategorizationEpic` (`selectedTab === 'autoCategorized'`)
|
|
@@ -49,6 +50,11 @@ const searchTransactionsForManualMatchEpic = (actions$, state$, zeniAPI) => {
|
|
|
49
50
|
page_token: pageToken ?? null,
|
|
50
51
|
page_size: manualSearch.pageSize,
|
|
51
52
|
search_text: query,
|
|
53
|
+
// Manual search ignores the Completed sub-tab axis — always span the
|
|
54
|
+
// default sentinel so the receipt-matching UX returns results
|
|
55
|
+
// regardless of where the transaction would otherwise be bucketed on
|
|
56
|
+
// the Completed tab.
|
|
57
|
+
sub_tab: completedSubTab_1.DEFAULT_COMPLETED_SUB_TAB,
|
|
52
58
|
};
|
|
53
59
|
return zeniAPI
|
|
54
60
|
.getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/transactions?query=${encodeURIComponent(JSON.stringify(queryParam))}`)
|
|
@@ -3,6 +3,6 @@ import { Observable } from 'rxjs';
|
|
|
3
3
|
import { updateTransactions } from '../../../../entity/transaction/transactionReducer';
|
|
4
4
|
import { RootState } from '../../../../reducer';
|
|
5
5
|
import { ZeniAPI } from '../../../../zeniAPI';
|
|
6
|
-
import { fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationSuccess, initializeTransactionCategorizationViewLocalData, resetOtherTabsFetchState, updateTotalCountForTransactionCategorization, updateTransactionCategorizationUIState } from '../../reducers/transactionsViewReducer';
|
|
7
|
-
export type ActionType = ReturnType<typeof fetchTransactionCategorization> | ReturnType<typeof updateTransactions> | ReturnType<typeof initializeTransactionCategorizationViewLocalData> | ReturnType<typeof fetchTransactionCategorizationFailure> | ReturnType<typeof updateTransactionCategorizationUIState> | ReturnType<typeof updateTotalCountForTransactionCategorization> | ReturnType<typeof fetchTransactionCategorizationSuccess> | ReturnType<typeof resetOtherTabsFetchState>;
|
|
6
|
+
import { fetchTransactionCategorization, fetchTransactionCategorizationFailure, fetchTransactionCategorizationSuccess, initializeTransactionCategorizationViewLocalData, resetOtherTabsFetchState, updateParentTotalCountForTab, updateTotalCountForTransactionCategorization, updateTransactionCategorizationUIState } from '../../reducers/transactionsViewReducer';
|
|
7
|
+
export type ActionType = ReturnType<typeof fetchTransactionCategorization> | ReturnType<typeof updateTransactions> | ReturnType<typeof initializeTransactionCategorizationViewLocalData> | ReturnType<typeof fetchTransactionCategorizationFailure> | ReturnType<typeof updateTransactionCategorizationUIState> | ReturnType<typeof updateTotalCountForTransactionCategorization> | ReturnType<typeof updateParentTotalCountForTab> | ReturnType<typeof fetchTransactionCategorizationSuccess> | ReturnType<typeof resetOtherTabsFetchState>;
|
|
8
8
|
export declare const fetchTransactionCategorizationEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
|
@@ -9,6 +9,7 @@ const transactionReducer_1 = require("../../../../entity/transaction/transaction
|
|
|
9
9
|
const responsePayload_1 = require("../../../../responsePayload");
|
|
10
10
|
const transactionCategorizationLocalDataHelper_1 = require("../../helpers/transactionCategorizationLocalDataHelper");
|
|
11
11
|
const transactionsViewReducer_1 = require("../../reducers/transactionsViewReducer");
|
|
12
|
+
const completedSubTab_1 = require("../../types/completedSubTab");
|
|
12
13
|
const transactionsViewState_1 = require("../../types/transactionsViewState");
|
|
13
14
|
const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.fetchTransactionCategorization.match), (0, operators_1.switchMap)((action) => {
|
|
14
15
|
const { expenseAutomationViewState: { selectedPeriodByTenantId }, expenseAutomationTransactionsViewState, } = state$.value;
|
|
@@ -26,6 +27,9 @@ const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => action
|
|
|
26
27
|
page_token: pageToken,
|
|
27
28
|
page_size: 25,
|
|
28
29
|
search_text: uiState.searchString,
|
|
30
|
+
sub_tab: selectedTab === 'autoCategorized'
|
|
31
|
+
? expenseAutomationTransactionsViewState.selectedTransactionCategorizationCompletedSubTab
|
|
32
|
+
: completedSubTab_1.DEFAULT_COMPLETED_SUB_TAB,
|
|
29
33
|
};
|
|
30
34
|
return zeniAPI
|
|
31
35
|
.getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/transactions?query=${encodeURIComponent(JSON.stringify(queryParam))}`)
|
|
@@ -48,6 +52,12 @@ const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => action
|
|
|
48
52
|
selectedTab,
|
|
49
53
|
totalCount: response.data.total_count,
|
|
50
54
|
}));
|
|
55
|
+
updateActions.push((0, transactionsViewReducer_1.updateParentTotalCountForTab)({
|
|
56
|
+
selectedPeriod,
|
|
57
|
+
selectedTab,
|
|
58
|
+
parentTotalCount: response.data.parent_tab_total_count ??
|
|
59
|
+
response.data.total_count,
|
|
60
|
+
}));
|
|
51
61
|
updateActions.push((0, transactionsViewReducer_1.resetOtherTabsFetchState)({
|
|
52
62
|
refreshViewInBackground,
|
|
53
63
|
tabs: transactionsViewState_1.TRANSACTIONS_TABS.filter((tab) => selectedTab !== tab),
|
package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts
CHANGED
|
@@ -2,8 +2,8 @@ import { ID } from '../../../commonStateTypes/common';
|
|
|
2
2
|
import { AccountBase } from '../../../entity/account/accountState';
|
|
3
3
|
import { UncategorizedAccountTypes } from '../../../entity/account/accountState';
|
|
4
4
|
import { ClassBase } from '../../../entity/class/classState';
|
|
5
|
-
import { ProjectBase } from '../../../entity/project/projectState';
|
|
6
5
|
import { Entity } from '../../../entity/genericEntity/entity';
|
|
6
|
+
import { ProjectBase } from '../../../entity/project/projectState';
|
|
7
7
|
import { RecommendationWithCOTByLineId } from '../../../entity/transaction/stateTypes/transaction';
|
|
8
8
|
import { SupportedTransactionPayload, SupportedTransactionWithCOT } from '../../../entity/transaction/transactionState';
|
|
9
9
|
import { UncategorizedAccounts } from '../../accountList/accountListSelector';
|
|
@@ -27,6 +27,7 @@ export declare const removeTransactionFromTabView: (tabView: TransactionsTabView
|
|
|
27
27
|
*/
|
|
28
28
|
export declare const filterAutoTabLineItems: (tabView: TransactionsTabViewState, transactionId: ID, updatedTransaction: SupportedTransactionWithCOT) => void;
|
|
29
29
|
export declare const MAX_SELECTION_LIMIT = 5;
|
|
30
|
+
export declare const shouldAutoSelectAndAdd: (transaction: SupportedTransactionWithCOT, localData: TransactionReviewLocalData, selectedCheckBoxTransactionIds: ID[], uncategorizedAccounts: UncategorizedAccounts, isUncategorizedExpenseCategoryEnabled?: boolean, isAccountingClassesEnabled?: boolean) => boolean;
|
|
30
31
|
export declare const toTransactionDetailLocalData: (transaction: SupportedTransactionWithCOT, selectedTab: TransactionsTab, lineItemsByTransactionIds: string[], uncategorizedIncomeExpense: UncategorizedAccounts, isUncategorizedExpenseCategoryEnabled?: boolean) => TransactionReviewLocalData;
|
|
31
32
|
export declare const toSetAllLineItemsToCategoryClass: (draft: TransactionsTabViewState, transaction: SupportedTransactionWithCOT, transactionId: ID, transactionLineId: ID, transactionDetailLocalData: TransactionReviewLocalData, updatedItem: "category" | "class" | "project", uncategorizedAccounts: UncategorizedAccounts, selectedTab: TransactionsTab, vendorId?: ID, customerId?: ID, selectedAccount?: AccountBase, selectedClassBase?: ClassBase, selectedProjectBase?: ProjectBase, isUncategorizedExpenseCategoryEnabled?: boolean, isAccountingClassesEnabled?: boolean) => {
|
|
32
33
|
localData: TransactionReviewLocalData;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hasTransactionLocalDataChanges = exports.isAnyItemWithUncategorizedExpenseAccount = exports.getSnackbarMessageForTransactionReview = exports.mergeTabSpecificLineItems = exports.getLineItemsByTransactionIdsFromLocalData = exports.getLineItemsByTransactionsIdsFromResponse = exports.checkIfAllLineItemsAreCategoryClassFilled = exports.setEntityRecommendationForLineIdInLocalData = exports.toSetAllLineItemsToCategoryClass = exports.toTransactionDetailLocalData = exports.MAX_SELECTION_LIMIT = exports.filterAutoTabLineItems = exports.removeTransactionFromTabView = exports.getPendingReviewLineIdsFromTransaction = void 0;
|
|
3
|
+
exports.hasTransactionLocalDataChanges = exports.isAnyItemWithUncategorizedExpenseAccount = exports.getSnackbarMessageForTransactionReview = exports.mergeTabSpecificLineItems = exports.getLineItemsByTransactionIdsFromLocalData = exports.getLineItemsByTransactionsIdsFromResponse = exports.checkIfAllLineItemsAreCategoryClassFilled = exports.setEntityRecommendationForLineIdInLocalData = exports.toSetAllLineItemsToCategoryClass = exports.toTransactionDetailLocalData = exports.shouldAutoSelectAndAdd = exports.MAX_SELECTION_LIMIT = exports.filterAutoTabLineItems = exports.removeTransactionFromTabView = exports.getPendingReviewLineIdsFromTransaction = void 0;
|
|
4
4
|
const vendorTransaction_1 = require("../../../entity/transaction/stateTypes/vendorTransaction");
|
|
5
5
|
const transactionDetailLocalDataHelper_1 = require("../../transactionDetail/transactionDetailLocalDataHelper");
|
|
6
6
|
const transactionDetailLocalDataHelper_2 = require("../../transactionDetail/transactionDetailLocalDataHelper");
|
|
@@ -65,6 +65,23 @@ const filterAutoTabLineItems = (tabView, transactionId, updatedTransaction) => {
|
|
|
65
65
|
};
|
|
66
66
|
exports.filterAutoTabLineItems = filterAutoTabLineItems;
|
|
67
67
|
exports.MAX_SELECTION_LIMIT = 5;
|
|
68
|
+
// Returns true when the transaction should be auto-added to the
|
|
69
|
+
// selectedCheckBoxTransactionIds list after a categorization-related
|
|
70
|
+
// state mutation: all line items are filled, the selection limit has
|
|
71
|
+
// not been hit, and the id isn't already in the list. Consolidates the
|
|
72
|
+
// triplet that was inlined at four sites (updateSelectedCustomer/Vendor,
|
|
73
|
+
// setAllItemsToCategoryClassInLocalDataForCategorization, and
|
|
74
|
+
// setEntityRecommendationForLineIdInLocalData below).
|
|
75
|
+
const shouldAutoSelectAndAdd = (transaction, localData, selectedCheckBoxTransactionIds, uncategorizedAccounts, isUncategorizedExpenseCategoryEnabled, isAccountingClassesEnabled) => {
|
|
76
|
+
if (selectedCheckBoxTransactionIds.includes(transaction.id)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
if (selectedCheckBoxTransactionIds.length >= exports.MAX_SELECTION_LIMIT) {
|
|
80
|
+
return false;
|
|
81
|
+
}
|
|
82
|
+
return (0, exports.checkIfAllLineItemsAreCategoryClassFilled)(transaction, localData, uncategorizedAccounts, isUncategorizedExpenseCategoryEnabled, isAccountingClassesEnabled);
|
|
83
|
+
};
|
|
84
|
+
exports.shouldAutoSelectAndAdd = shouldAutoSelectAndAdd;
|
|
68
85
|
const toTransactionDetailLocalData = (transaction, selectedTab, lineItemsByTransactionIds, uncategorizedIncomeExpense, isUncategorizedExpenseCategoryEnabled) => {
|
|
69
86
|
const transactionLocal = {
|
|
70
87
|
...transactionsViewState_1.initialSupportedTransactionCategorization.transactionReviewLocalData,
|
|
@@ -552,10 +569,14 @@ const setEntityRecommendationForLineIdInLocalData = (draft, transaction, transac
|
|
|
552
569
|
selectedEntity: transactionDetailLocalData.selectedEntity,
|
|
553
570
|
tabSpecificLineItems: transactionDetailLocalData.tabSpecificLineItems,
|
|
554
571
|
};
|
|
572
|
+
// Auto-uncheck if not all line items are filled (the row's
|
|
573
|
+
// category/class became stale after the entity update). Otherwise
|
|
574
|
+
// route through shouldAutoSelectAndAdd so the MAX_SELECTION_LIMIT
|
|
575
|
+
// gate is consistently applied across all auto-add sites.
|
|
555
576
|
if (!(0, exports.checkIfAllLineItemsAreCategoryClassFilled)(transaction, newLocalData, uncategorizedAccounts, isUncategorizedExpenseCategoryEnabled, isAccountingClassesEnabled)) {
|
|
556
577
|
selectedCheckBoxTransactionIds = selectedCheckBoxTransactionIds.filter((id) => id !== transaction.id);
|
|
557
578
|
}
|
|
558
|
-
else if (
|
|
579
|
+
else if ((0, exports.shouldAutoSelectAndAdd)(transaction, newLocalData, selectedCheckBoxTransactionIds, uncategorizedAccounts, isUncategorizedExpenseCategoryEnabled, isAccountingClassesEnabled)) {
|
|
559
580
|
selectedCheckBoxTransactionIds.push(transaction.id);
|
|
560
581
|
}
|
|
561
582
|
draft.selectedCheckBoxTransactionIds = selectedCheckBoxTransactionIds;
|
|
@@ -2,6 +2,7 @@ import { EntityRecommendationPayload } from '../../../commonPayloadTypes/recomme
|
|
|
2
2
|
import { TransactionPayload } from '../../../entity/transaction/payloadTypes/transactionPayload';
|
|
3
3
|
import { SupportedTransactionPayload } from '../../../entity/transaction/transactionState';
|
|
4
4
|
import { ZeniAPIResponse } from '../../../responsePayload';
|
|
5
|
+
import { CompletedSubTab } from '../types/completedSubTab';
|
|
5
6
|
export interface TransactionCategorizationQueryPayload {
|
|
6
7
|
auto_categorized: boolean;
|
|
7
8
|
end_date: string | null;
|
|
@@ -11,12 +12,32 @@ export interface TransactionCategorizationQueryPayload {
|
|
|
11
12
|
sort_by: string;
|
|
12
13
|
sort_order: string;
|
|
13
14
|
start_date: string | null;
|
|
15
|
+
/**
|
|
16
|
+
* Required. For the Completed (`auto_categorized=true`) listing, scopes the
|
|
17
|
+
* returned page + `total_count` to one of the Completed sub-tabs. For the
|
|
18
|
+
* Review listing it is forced to `'all'` to preserve parent-tab semantics
|
|
19
|
+
* on the backend.
|
|
20
|
+
*/
|
|
21
|
+
sub_tab: CompletedSubTab;
|
|
14
22
|
}
|
|
15
23
|
export interface TransactionCategorizationPayload {
|
|
16
24
|
next_page_token: string | null;
|
|
17
25
|
query: TransactionCategorizationQueryPayload;
|
|
18
26
|
total_count: number;
|
|
19
27
|
transactions: SupportedTransactionPayload[];
|
|
28
|
+
/**
|
|
29
|
+
* Count of transactions for the entire parent tab (Review or Completed),
|
|
30
|
+
* regardless of which sub-tab the listing was scoped to. Used solely to
|
|
31
|
+
* drive the parent tab badge counts on the UI; pagination, list-level
|
|
32
|
+
* counts, and sub-tab chips continue to consume {@link total_count}.
|
|
33
|
+
*
|
|
34
|
+
* Optional at the wire boundary so that any version-skew scenario
|
|
35
|
+
* (delayed BE rollout, cached SW response, hotfix without the BE change)
|
|
36
|
+
* deserializes cleanly. Consumers are expected to fall back to
|
|
37
|
+
* {@link total_count} when this is absent — see
|
|
38
|
+
* `fetchTransactionCategorizationEpic` for the canonical fallback.
|
|
39
|
+
*/
|
|
40
|
+
parent_tab_total_count?: number;
|
|
20
41
|
}
|
|
21
42
|
export type TransactionCategorizationResponse = ZeniAPIResponse<TransactionCategorizationPayload>;
|
|
22
43
|
export interface EntityRelatedUpdatesPayload {
|
|
@@ -6,7 +6,8 @@ import type { MonthYearPeriodId } from '../../../commonStateTypes/timePeriod';
|
|
|
6
6
|
import { TransactionPayload } from '../../../entity/transaction/payloadTypes/transactionPayload';
|
|
7
7
|
import { SupportedTransactionPayload } from '../../../entity/transaction/transactionState';
|
|
8
8
|
import { ZeniAPIStatus } from '../../../responsePayload';
|
|
9
|
-
import { type
|
|
9
|
+
import { type CompletedSubTab } from '../types/completedSubTab';
|
|
10
|
+
import { type BatchDetails, type BatchListItem, type BatchStatus, type BulkUploadResultsTab, type BulkUploadSortKey, type BulkUploadState, type ManualSearchResult, type MissingReceiptsViewState, type MissingReceiptsViewUIState } from '../types/missingReceiptsViewState';
|
|
10
11
|
export declare const getCompletedTransactionsCacheKey: (periodId: MonthYearPeriodId, sortKey: BulkUploadSortKey | undefined, sortOrder: SortOrder | undefined, subTab: CompletedSubTab) => string;
|
|
11
12
|
export declare const initialBulkUploadState: BulkUploadState;
|
|
12
13
|
export declare const initialState: MissingReceiptsViewState;
|
|
@@ -5,6 +5,7 @@ exports.fetchCompletedTransactions = exports.acknowledgeBulkUploadConfirmMatchCo
|
|
|
5
5
|
exports.fetchCompletedTransactionsFailure = exports.fetchCompletedTransactionsSuccess = void 0;
|
|
6
6
|
const toolkit_1 = require("@reduxjs/toolkit");
|
|
7
7
|
const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
|
|
8
|
+
const completedSubTab_1 = require("../types/completedSubTab");
|
|
8
9
|
const missingReceiptsViewState_1 = require("../types/missingReceiptsViewState");
|
|
9
10
|
const getCompletedTransactionsCacheKey = (periodId, sortKey, sortOrder, subTab) => {
|
|
10
11
|
const sortKeyPart = sortKey ?? 'none';
|
|
@@ -19,7 +20,7 @@ exports.initialBulkUploadState = {
|
|
|
19
20
|
batchListByPeriod: {},
|
|
20
21
|
batchListFetchState: { fetchState: 'Not-Started', error: undefined },
|
|
21
22
|
batchStatusById: {},
|
|
22
|
-
completedSubTab:
|
|
23
|
+
completedSubTab: completedSubTab_1.DEFAULT_COMPLETED_SUB_TAB,
|
|
23
24
|
completedTransactionsByPeriod: {},
|
|
24
25
|
confirmMatchStatus: { fetchState: 'Not-Started', error: undefined },
|
|
25
26
|
currentBatchId: undefined,
|