@zeniai/client-epic-state 5.0.96 → 5.0.97
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/common/aiCfo/aiCfoSuggestedQuestionsPageContext.d.ts +1 -1
- package/lib/commonStateTypes/amount.d.ts +1 -0
- package/lib/commonStateTypes/amount.js +9 -1
- package/lib/commonStateTypes/workingDayHelper.d.ts +9 -0
- package/lib/commonStateTypes/workingDayHelper.js +28 -1
- package/lib/entity/aiCfo/aiCfoPayload.d.ts +63 -5
- package/lib/entity/aiCfo/aiCfoReducer.d.ts +23 -2
- package/lib/entity/aiCfo/aiCfoReducer.js +249 -9
- package/lib/entity/aiCfo/aiCfoSelector.d.ts +4 -1
- package/lib/entity/aiCfo/aiCfoSelector.js +19 -1
- package/lib/entity/aiCfo/aiCfoState.d.ts +97 -4
- package/lib/entity/aiCfo/aiCfoState.js +18 -1
- package/lib/entity/cardPolicy/cardPolicyPayload.d.ts +277 -0
- package/lib/entity/cardPolicy/cardPolicyPayload.js +143 -0
- package/lib/entity/cardPolicy/cardPolicyReducer.d.ts +19 -0
- package/lib/entity/cardPolicy/cardPolicyReducer.js +175 -0
- package/lib/entity/cardPolicy/cardPolicySelector.d.ts +32 -0
- package/lib/entity/cardPolicy/cardPolicySelector.js +99 -0
- package/lib/entity/cardPolicy/cardPolicyState.d.ts +205 -0
- package/lib/entity/cardPolicy/cardPolicyState.js +14 -0
- package/lib/entity/cardPolicy/extractPolicyDocumentEpic.d.ts +18 -0
- package/lib/entity/cardPolicy/extractPolicyDocumentEpic.js +68 -0
- package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.d.ts +26 -0
- package/lib/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +47 -0
- package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.d.ts +25 -0
- package/lib/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +39 -0
- package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.d.ts +24 -0
- package/lib/entity/cardPolicy/policyRecommendationFromUploadEpic.js +105 -0
- package/lib/entity/jeSchedules/jeSchedulesPayload.d.ts +1 -0
- package/lib/entity/jeSchedules/jeSchedulesPayload.js +7 -0
- package/lib/entity/jeSchedules/jeSchedulesState.d.ts +2 -0
- package/lib/entity/jeSchedules/jeSchedulesTypes.d.ts +1 -1
- package/lib/entity/monthEndCloseChecks/monthEndCloseChecksState.d.ts +1 -1
- package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
- package/lib/entity/snackbar/snackbarTypes.js +3 -0
- package/lib/entity/task/taskPayload.d.ts +3 -1
- package/lib/entity/task/taskPayload.js +2 -0
- package/lib/entity/task/taskState.d.ts +2 -0
- package/lib/entity/tenant/clearAllEpic.d.ts +8 -2
- package/lib/entity/tenant/clearAllEpic.js +12 -0
- package/lib/epic.d.ts +24 -3
- package/lib/epic.js +24 -3
- package/lib/esm/commonStateTypes/amount.js +7 -0
- package/lib/esm/commonStateTypes/workingDayHelper.js +26 -0
- package/lib/esm/entity/aiCfo/aiCfoReducer.js +249 -9
- package/lib/esm/entity/aiCfo/aiCfoSelector.js +17 -1
- package/lib/esm/entity/aiCfo/aiCfoState.js +15 -0
- package/lib/esm/entity/cardPolicy/cardPolicyPayload.js +130 -0
- package/lib/esm/entity/cardPolicy/cardPolicyReducer.js +171 -0
- package/lib/esm/entity/cardPolicy/cardPolicySelector.js +75 -0
- package/lib/esm/entity/cardPolicy/cardPolicyState.js +9 -0
- package/lib/esm/entity/cardPolicy/extractPolicyDocumentEpic.js +64 -0
- package/lib/esm/entity/cardPolicy/fetchCardPolicyVendorOptionsEpic.js +43 -0
- package/lib/esm/entity/cardPolicy/policyDocumentExtractionToRecommendationBridgeEpic.js +35 -0
- package/lib/esm/entity/cardPolicy/policyRecommendationFromUploadEpic.js +101 -0
- package/lib/esm/entity/jeSchedules/jeSchedulesPayload.js +7 -0
- package/lib/esm/entity/snackbar/snackbarTypes.js +3 -0
- package/lib/esm/entity/task/taskPayload.js +2 -0
- package/lib/esm/entity/tenant/clearAllEpic.js +12 -0
- package/lib/esm/epic.js +24 -3
- package/lib/esm/index.js +47 -12
- package/lib/esm/reducer.js +18 -0
- package/lib/esm/view/aiCfoView/aiCfoViewReducer.js +6 -3
- package/lib/esm/view/aiCfoView/epics/createSessionAndSubmitEpic.js +5 -2
- package/lib/esm/view/aiCfoView/epics/createSessionEpic.js +2 -1
- package/lib/esm/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +12 -2
- package/lib/esm/view/companyTaskManagerView/companyTaskManagerViewReducer.js +39 -11
- package/lib/esm/view/companyTaskManagerView/companyTaskManagerViewSelector.js +14 -4
- package/lib/esm/view/companyTaskManagerView/epics/fetchCockpitContextEpic.js +38 -0
- package/lib/esm/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.js +37 -28
- package/lib/esm/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.js +16 -0
- package/lib/esm/view/companyView/epic/fetchAllCockpitViewsEpic.js +2 -2
- package/lib/esm/view/spendManagement/autotransferRules/autoTransferRulesSelector.js +22 -2
- package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowPayload.js +29 -0
- package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowReducer.js +78 -0
- package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowSelector.js +47 -0
- package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowState.js +47 -0
- package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/epics/fetchCashManagementSettingsEpic.js +34 -0
- package/lib/esm/view/spendManagement/cashManagement/autoSweepFlow/epics/saveAutoSweepSettingsEpic.js +32 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +54 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +92 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +225 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +10 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +23 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +36 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementRecommendationEpic.js +27 -0
- package/lib/esm/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchRecentTransferEpic.js +28 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +52 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +22 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +1 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +36 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +39 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +34 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +58 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +21 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +1 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +38 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +289 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +109 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +44 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +111 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +25 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +363 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +36 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +19 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +6 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +119 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +154 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +22 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +1 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +39 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +140 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +20 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +100 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +96 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +59 -0
- package/lib/esm/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +24 -0
- package/lib/esm/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +25 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +1 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +34 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +57 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +35 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +2 -2
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +42 -4
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +35 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +62 -0
- package/lib/esm/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +44 -0
- package/lib/index.d.ts +59 -15
- package/lib/index.js +213 -22
- package/lib/reducer.d.ts +18 -0
- package/lib/reducer.js +18 -0
- package/lib/view/aiCfoView/aiCfoViewReducer.d.ts +11 -2
- package/lib/view/aiCfoView/aiCfoViewReducer.js +6 -3
- package/lib/view/aiCfoView/epics/createSessionAndSubmitEpic.js +5 -2
- package/lib/view/aiCfoView/epics/createSessionEpic.js +2 -1
- package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.d.ts +8 -1
- package/lib/view/aiCfoView/epics/fetchSuggestedQuestionsEpic.js +12 -2
- package/lib/view/companyTaskManagerView/companyTaskManagerViewPayload.d.ts +19 -11
- package/lib/view/companyTaskManagerView/companyTaskManagerViewReducer.d.ts +10 -4
- package/lib/view/companyTaskManagerView/companyTaskManagerViewReducer.js +40 -12
- package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.d.ts +2 -0
- package/lib/view/companyTaskManagerView/companyTaskManagerViewSelector.js +13 -3
- package/lib/view/companyTaskManagerView/companyTaskManagerViewState.d.ts +11 -3
- package/lib/view/companyTaskManagerView/epics/fetchCockpitContextEpic.d.ts +10 -0
- package/lib/view/companyTaskManagerView/epics/fetchCockpitContextEpic.js +42 -0
- package/lib/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.d.ts +1 -3
- package/lib/view/companyTaskManagerView/epics/fetchCompanyTaskManagerViewEpic.js +37 -28
- package/lib/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.d.ts +6 -0
- package/lib/view/companyTaskManagerView/epics/updateCompanyTaskManagerViewFiltersEpic.js +20 -0
- package/lib/view/companyView/epic/fetchAllCockpitViewsEpic.js +2 -2
- package/lib/view/companyView/types/cockpitTypes.d.ts +2 -1
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
- package/lib/view/expenseAutomationView/types/reconciliationViewState.d.ts +1 -1
- package/lib/view/people/peopleTypes.d.ts +1 -1
- package/lib/view/scheduleView/scheduleListView/scheduleListTypes.d.ts +1 -1
- package/lib/view/spendManagement/autotransferRules/autoTransferRulesSelector.d.ts +8 -1
- package/lib/view/spendManagement/autotransferRules/autoTransferRulesSelector.js +21 -1
- package/lib/view/spendManagement/autotransferRules/autoTransferRulesState.d.ts +22 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowPayload.d.ts +47 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowPayload.js +34 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowReducer.d.ts +23 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowReducer.js +82 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowSelector.d.ts +40 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowSelector.js +51 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowState.d.ts +37 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/autoSweepFlowState.js +53 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/fetchCashManagementSettingsEpic.d.ts +14 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/fetchCashManagementSettingsEpic.js +38 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/saveAutoSweepSettingsEpic.d.ts +7 -0
- package/lib/view/spendManagement/cashManagement/autoSweepFlow/epics/saveAutoSweepSettingsEpic.js +36 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.d.ts +56 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewPayload.js +60 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.d.ts +22 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewReducer.js +96 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.d.ts +59 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewSelector.js +230 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.d.ts +122 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/cashManagementOverviewState.js +13 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.d.ts +7 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementBannerEpic.js +27 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.d.ts +9 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementOverviewPageEpic.js +40 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementRecommendationEpic.d.ts +7 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchCashManagementRecommendationEpic.js +31 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchRecentTransferEpic.d.ts +15 -0
- package/lib/view/spendManagement/cashManagement/cashManagementOverview/epics/fetchRecentTransferEpic.js +32 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.d.ts +14 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailReducer.js +56 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.d.ts +15 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailSelector.js +28 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/cardPolicyDetailState.js +2 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/fetchCardPolicyDetailEpic.js +40 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyDetail/updateCardPolicyEpic.js +43 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/archiveCardPolicyEpic.js +38 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.d.ts +15 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListReducer.js +62 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.d.ts +15 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListSelector.js +27 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.d.ts +7 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/cardPolicyListState.js +2 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/cardPolicyList/fetchCardPolicyListEpic.js +42 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyAiCardPolicyFormDraftUpdate.js +294 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToAiCardPolicyDraft.js +113 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.d.ts +9 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToDraftEpic.js +48 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyExtractedPolicyToManualCardPolicyDraft.js +115 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.d.ts +13 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/applyUploadPlanToAiCardPolicyDraft.js +29 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.d.ts +14 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildAiCardPolicyFormDraftSeed.js +369 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.d.ts +6 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/buildManualCardPolicyFormDraftSeed.js +40 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.d.ts +7 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyChipIds.js +26 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.d.ts +116 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyFormDraftTypes.js +10 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.d.ts +33 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/cardPolicyRequestParts.js +126 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.d.ts +52 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyReducer.js +158 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.d.ts +11 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicySelector.js +31 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.d.ts +12 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyState.js +2 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/createCardPolicyTemplateEpic.js +43 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.d.ts +10 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/deriveAiPolicyReviewRowsFromInputs.js +144 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.d.ts +7 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/fetchCardPolicyMccCategoriesEpic.js +24 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.d.ts +11 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/seedAiCardPolicyFormDraftEpic.js +104 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.d.ts +22 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toBulkCardPolicyTemplateRequestsFromDraft.js +100 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.d.ts +8 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toCardPolicyTemplateRequestFromDraft.js +63 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.d.ts +3 -0
- package/lib/view/spendManagement/chargeCards/cardPolicy/createCardPolicy/toManualCardPolicyTemplateRequestFromDraft.js +28 -0
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardList.d.ts +1 -1
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.d.ts +14 -0
- package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +27 -1
- package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.d.ts +34 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/aiCardCreationFormDraftTypes.js +2 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.d.ts +7 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/applyAiCardCreationFormDraftUpdate.js +38 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.d.ts +12 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/buildAiCardCreationFormDraftSeed.js +61 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.d.ts +9 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/deriveAiCardRowsFromTeams.js +39 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.d.ts +2 -2
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardEpic.js +1 -1
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.d.ts +12 -2
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardReducer.js +43 -5
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.d.ts +7 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardSelector.js +42 -1
- package/lib/view/spendManagement/chargeCards/issueChargeCard/issueChargeCardState.d.ts +5 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.d.ts +11 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/seedAiCardCreationFormDraftEpic.js +66 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.d.ts +3 -0
- package/lib/view/spendManagement/chargeCards/issueChargeCard/toIssueChargeCardLocalDataFromDraft.js +48 -0
- package/lib/view/taskManager/taskListView/taskListReducer.d.ts +1 -1
- package/lib/view/transactionDetail/journalEntryLinesViewModel.d.ts +1 -1
- package/lib/zeniAPI.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,294 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.patchUploadReviewWithAppliedCards = exports.applyAiCardPolicyFormDraftUpdate = void 0;
|
|
4
|
+
const deriveAiPolicyReviewRowsFromInputs_1 = require("./deriveAiPolicyReviewRowsFromInputs");
|
|
5
|
+
// Computes the next draft after a watchHandler flush, branching on policyKind:
|
|
6
|
+
// - auto: pass-through (review chip groups are canonical).
|
|
7
|
+
// - guided: bridge review chip edits back into source slices, then re-derive review.
|
|
8
|
+
// - upload: pass through user's review edits; patch "Applied to Cards" from `cardSelections`.
|
|
9
|
+
const applyAiCardPolicyFormDraftUpdate = ({ next, prev, context, }) => {
|
|
10
|
+
if (next.policyKind === 'auto') {
|
|
11
|
+
return next;
|
|
12
|
+
}
|
|
13
|
+
if (next.policyKind === 'upload') {
|
|
14
|
+
return applyUploadUpdate({ next, prev });
|
|
15
|
+
}
|
|
16
|
+
return applyGuidedUpdate({ next, prev, context });
|
|
17
|
+
};
|
|
18
|
+
exports.applyAiCardPolicyFormDraftUpdate = applyAiCardPolicyFormDraftUpdate;
|
|
19
|
+
const applyGuidedUpdate = ({ next, prev, context, }) => {
|
|
20
|
+
const bridged = bridgeGuidedPoliciesReviewToSources({ next, prev });
|
|
21
|
+
if (context == null) {
|
|
22
|
+
return bridged;
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
...bridged,
|
|
26
|
+
policiesReview: (0, deriveAiPolicyReviewRowsFromInputs_1.deriveAiPolicyReviewRowsFromInputs)({
|
|
27
|
+
vendorPolicy: bridged.vendorPolicy,
|
|
28
|
+
categoryPolicy: bridged.categoryPolicy,
|
|
29
|
+
cardSelections: bridged.cardSelections,
|
|
30
|
+
limits: bridged.limits,
|
|
31
|
+
suggestedPoliciesSeed: context.suggestedPoliciesSeed,
|
|
32
|
+
prevPoliciesReview: bridged.policiesReview,
|
|
33
|
+
}),
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
const APPLIED_TO_CARDS_GROUP_ID = 'applied-to-cards';
|
|
37
|
+
const LIMITS_GROUP_ID = 'limits';
|
|
38
|
+
const applyUploadUpdate = ({ next, prev, }) => {
|
|
39
|
+
// Mirror review avatar/limits edits into source slices so bulk-submit (which
|
|
40
|
+
// reads `cardSelections` for upload's applyToCards) sees the latest intent.
|
|
41
|
+
const bridged = bridgeUploadPoliciesReviewToSources({ next, prev });
|
|
42
|
+
if (!haveCardSelectionsChanged(prev?.cardSelections, bridged.cardSelections)) {
|
|
43
|
+
return bridged;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
...bridged,
|
|
47
|
+
policiesReview: (0, exports.patchUploadReviewWithAppliedCards)(bridged.policiesReview, bridged.cardSelections),
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
const haveCardSelectionsChanged = (prevSelections, nextSelections) => {
|
|
51
|
+
const prevCheckedIds = (prevSelections ?? [])
|
|
52
|
+
.filter((row) => row.isChecked)
|
|
53
|
+
.map((row) => row.id);
|
|
54
|
+
const nextCheckedIds = nextSelections
|
|
55
|
+
.filter((row) => row.isChecked)
|
|
56
|
+
.map((row) => row.id);
|
|
57
|
+
if (prevCheckedIds.length !== nextCheckedIds.length) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
return prevCheckedIds.some((id, idx) => id !== nextCheckedIds[idx]);
|
|
61
|
+
};
|
|
62
|
+
const buildAppliedOwnerSummaries = (cardSelections) => {
|
|
63
|
+
const summaries = new Map();
|
|
64
|
+
for (const card of cardSelections) {
|
|
65
|
+
if (!card.isChecked) {
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
const existing = summaries.get(card.owner.userId);
|
|
69
|
+
if (existing != null) {
|
|
70
|
+
existing.cardIds.push(card.id);
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
summaries.set(card.owner.userId, {
|
|
74
|
+
userId: card.owner.userId,
|
|
75
|
+
displayName: card.owner.displayName,
|
|
76
|
+
cardIds: [card.id],
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return Array.from(summaries.values());
|
|
80
|
+
};
|
|
81
|
+
// Inserted before "Limits" so visual order stays Vendors → Categories → Cards → Limits.
|
|
82
|
+
const patchUploadReviewWithAppliedCards = (reviewRows, cardSelections) => {
|
|
83
|
+
const owners = buildAppliedOwnerSummaries(cardSelections);
|
|
84
|
+
const cardChips = owners.map((owner) => ({
|
|
85
|
+
id: owner.userId,
|
|
86
|
+
label: owner.displayName,
|
|
87
|
+
chipKind: 'avatar',
|
|
88
|
+
cardIds: owner.cardIds,
|
|
89
|
+
isSelected: true,
|
|
90
|
+
}));
|
|
91
|
+
const cardsGroup = cardChips.length > 0
|
|
92
|
+
? {
|
|
93
|
+
id: APPLIED_TO_CARDS_GROUP_ID,
|
|
94
|
+
label: 'Applied to Cards',
|
|
95
|
+
chips: cardChips,
|
|
96
|
+
}
|
|
97
|
+
: null;
|
|
98
|
+
return reviewRows.map((row) => {
|
|
99
|
+
const withoutCards = row.chipGroups.filter((group) => group.id !== APPLIED_TO_CARDS_GROUP_ID);
|
|
100
|
+
if (cardsGroup == null) {
|
|
101
|
+
return { ...row, chipGroups: withoutCards };
|
|
102
|
+
}
|
|
103
|
+
const limitsIdx = withoutCards.findIndex((group) => group.id === LIMITS_GROUP_ID);
|
|
104
|
+
if (limitsIdx === -1) {
|
|
105
|
+
return { ...row, chipGroups: [...withoutCards, cardsGroup] };
|
|
106
|
+
}
|
|
107
|
+
const before = withoutCards.slice(0, limitsIdx);
|
|
108
|
+
const after = withoutCards.slice(limitsIdx);
|
|
109
|
+
return { ...row, chipGroups: [...before, cardsGroup, ...after] };
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
exports.patchUploadReviewWithAppliedCards = patchUploadReviewWithAppliedCards;
|
|
113
|
+
// Routes per-chip diffs back to source slices: limits → `limits`, avatar →
|
|
114
|
+
// `cardSelections`, positive/negative → `vendorPolicy` / `categoryPolicy`.
|
|
115
|
+
const bridgeGuidedPoliciesReviewToSources = ({ next, prev, }) => {
|
|
116
|
+
if (prev == null || prev.policiesReview.length === 0) {
|
|
117
|
+
return next;
|
|
118
|
+
}
|
|
119
|
+
const reviewDiffs = collectReviewChipDiffs(prev.policiesReview, next.policiesReview);
|
|
120
|
+
if (reviewDiffs.length === 0) {
|
|
121
|
+
return next;
|
|
122
|
+
}
|
|
123
|
+
let limits = next.limits;
|
|
124
|
+
let cardSelections = next.cardSelections;
|
|
125
|
+
let vendorPolicy = next.vendorPolicy;
|
|
126
|
+
let categoryPolicy = next.categoryPolicy;
|
|
127
|
+
for (const diff of reviewDiffs) {
|
|
128
|
+
if (diff.groupKind === 'limits' || diff.chip.id.startsWith('limit-')) {
|
|
129
|
+
limits = applyLimitChipDiffToLimits(limits, diff);
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (diff.chip.chipKind === 'avatar') {
|
|
133
|
+
cardSelections = applyAvatarChipDiffToCardSelections(cardSelections, diff);
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (diff.changedFields.has('isSelected')) {
|
|
137
|
+
const writtenToVendor = tryWriteAllowBlock(vendorPolicy, diff);
|
|
138
|
+
if (writtenToVendor != null) {
|
|
139
|
+
vendorPolicy = writtenToVendor;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
const writtenToCategory = tryWriteAllowBlock(categoryPolicy, diff);
|
|
143
|
+
if (writtenToCategory != null) {
|
|
144
|
+
categoryPolicy = writtenToCategory;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
...next,
|
|
150
|
+
limits,
|
|
151
|
+
cardSelections,
|
|
152
|
+
vendorPolicy,
|
|
153
|
+
categoryPolicy,
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
// Upload only mirrors avatar chips into `cardSelections`; vendor/category/limit
|
|
157
|
+
// chips are read by the wire directly from the review groups.
|
|
158
|
+
const bridgeUploadPoliciesReviewToSources = ({ next, prev, }) => {
|
|
159
|
+
if (prev == null || prev.policiesReview.length === 0) {
|
|
160
|
+
return next;
|
|
161
|
+
}
|
|
162
|
+
const reviewDiffs = collectReviewChipDiffs(prev.policiesReview, next.policiesReview);
|
|
163
|
+
if (reviewDiffs.length === 0) {
|
|
164
|
+
return next;
|
|
165
|
+
}
|
|
166
|
+
let cardSelections = next.cardSelections;
|
|
167
|
+
for (const diff of reviewDiffs) {
|
|
168
|
+
if (diff.chip.chipKind === 'avatar') {
|
|
169
|
+
cardSelections = applyAvatarChipDiffToCardSelections(cardSelections, diff);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (cardSelections === next.cardSelections) {
|
|
173
|
+
return next;
|
|
174
|
+
}
|
|
175
|
+
return { ...next, cardSelections };
|
|
176
|
+
};
|
|
177
|
+
const collectReviewChipDiffs = (prevRows, nextRows) => {
|
|
178
|
+
const prevById = new Map(prevRows.map((row) => [row.id, row]));
|
|
179
|
+
const diffs = [];
|
|
180
|
+
for (const row of nextRows) {
|
|
181
|
+
const prevRow = prevById.get(row.id);
|
|
182
|
+
if (prevRow == null) {
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
185
|
+
const prevGroupsById = new Map(prevRow.chipGroups.map((group) => [group.id, group]));
|
|
186
|
+
for (const group of row.chipGroups) {
|
|
187
|
+
const prevGroup = prevGroupsById.get(group.id);
|
|
188
|
+
if (prevGroup == null) {
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
const prevChipsById = new Map(prevGroup.chips.map((chip) => [chip.id, chip]));
|
|
192
|
+
for (const chip of group.chips) {
|
|
193
|
+
const prevChip = prevChipsById.get(chip.id);
|
|
194
|
+
if (prevChip == null) {
|
|
195
|
+
continue;
|
|
196
|
+
}
|
|
197
|
+
const changed = new Set();
|
|
198
|
+
if (chip.isSelected !== prevChip.isSelected) {
|
|
199
|
+
changed.add('isSelected');
|
|
200
|
+
}
|
|
201
|
+
if (chip.optionalCode !== prevChip.optionalCode) {
|
|
202
|
+
changed.add('optionalCode');
|
|
203
|
+
}
|
|
204
|
+
if (changed.size > 0) {
|
|
205
|
+
diffs.push({ chip, changedFields: changed, groupKind: group.kind });
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return diffs;
|
|
211
|
+
};
|
|
212
|
+
const REVIEW_LIMIT_CHIP_ID_TO_LIMIT_ROW_ID = {
|
|
213
|
+
'limit-transaction': 'transactionLimit',
|
|
214
|
+
'limit-receipt': 'requireReceipt',
|
|
215
|
+
};
|
|
216
|
+
const applyLimitChipDiffToLimits = (limits, diff) => {
|
|
217
|
+
const mapped = REVIEW_LIMIT_CHIP_ID_TO_LIMIT_ROW_ID[diff.chip.id];
|
|
218
|
+
const directMatch = limits.find((row) => row.id === diff.chip.id) != null;
|
|
219
|
+
const rowId = mapped ?? (directMatch ? diff.chip.id : undefined);
|
|
220
|
+
if (rowId == null) {
|
|
221
|
+
return limits;
|
|
222
|
+
}
|
|
223
|
+
const idx = limits.findIndex((row) => row.id === rowId);
|
|
224
|
+
if (idx === -1) {
|
|
225
|
+
return limits;
|
|
226
|
+
}
|
|
227
|
+
let nextRow = limits[idx];
|
|
228
|
+
if (diff.changedFields.has('isSelected')) {
|
|
229
|
+
nextRow = { ...nextRow, isEnabled: diff.chip.isSelected === true };
|
|
230
|
+
}
|
|
231
|
+
if (diff.changedFields.has('optionalCode')) {
|
|
232
|
+
const raw = diff.chip.optionalCode;
|
|
233
|
+
const numericNext = raw != null && raw !== '' ? Number(raw) : undefined;
|
|
234
|
+
nextRow = { ...nextRow, amount: numericNext };
|
|
235
|
+
}
|
|
236
|
+
if (nextRow === limits[idx]) {
|
|
237
|
+
return limits;
|
|
238
|
+
}
|
|
239
|
+
const copy = limits.slice();
|
|
240
|
+
copy[idx] = nextRow;
|
|
241
|
+
return copy;
|
|
242
|
+
};
|
|
243
|
+
const applyAvatarChipDiffToCardSelections = (cardSelections, diff) => {
|
|
244
|
+
if (!diff.changedFields.has('isSelected')) {
|
|
245
|
+
return cardSelections;
|
|
246
|
+
}
|
|
247
|
+
const targetIds = diff.chip.cardIds != null && diff.chip.cardIds.length > 0
|
|
248
|
+
? diff.chip.cardIds
|
|
249
|
+
: [diff.chip.id];
|
|
250
|
+
const targetSet = new Set(targetIds);
|
|
251
|
+
let mutated = false;
|
|
252
|
+
const next = cardSelections.map((row) => {
|
|
253
|
+
if (!targetSet.has(row.id)) {
|
|
254
|
+
return row;
|
|
255
|
+
}
|
|
256
|
+
const desired = diff.chip.isSelected === true;
|
|
257
|
+
if (row.isChecked === desired) {
|
|
258
|
+
return row;
|
|
259
|
+
}
|
|
260
|
+
mutated = true;
|
|
261
|
+
return { ...row, isChecked: desired };
|
|
262
|
+
});
|
|
263
|
+
return mutated ? next : cardSelections;
|
|
264
|
+
};
|
|
265
|
+
const tryWriteAllowBlock = (field, diff) => {
|
|
266
|
+
const desired = diff.chip.isSelected === true;
|
|
267
|
+
const written = tryFlipItemInSide(field.allowItems, diff, desired);
|
|
268
|
+
if (written != null) {
|
|
269
|
+
return { ...field, allowItems: written };
|
|
270
|
+
}
|
|
271
|
+
const writtenBlock = tryFlipItemInSide(field.blockItems, diff, desired);
|
|
272
|
+
if (writtenBlock != null) {
|
|
273
|
+
return { ...field, blockItems: writtenBlock };
|
|
274
|
+
}
|
|
275
|
+
return null;
|
|
276
|
+
};
|
|
277
|
+
const tryFlipItemInSide = (items, diff, desired) => {
|
|
278
|
+
let idx = items.findIndex((item) => item.id === diff.chip.id);
|
|
279
|
+
if (idx === -1 && diff.chip.optionalCode != null) {
|
|
280
|
+
// Auto/upload category chips key on raw MCC code; source items key on
|
|
281
|
+
// `mcc-{name}`. Match by code so the bridge round-trips both shapes.
|
|
282
|
+
idx = items.findIndex((item) => item.optionalCode === diff.chip.optionalCode ||
|
|
283
|
+
(item.optionalCodes ?? []).includes(diff.chip.optionalCode ?? ''));
|
|
284
|
+
}
|
|
285
|
+
if (idx === -1) {
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
if (items[idx].isSelected === desired) {
|
|
289
|
+
return items;
|
|
290
|
+
}
|
|
291
|
+
const copy = items.slice();
|
|
292
|
+
copy[idx] = { ...items[idx], isSelected: desired };
|
|
293
|
+
return copy;
|
|
294
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CardPolicyChipFieldValue, CardPolicyFormDraft, ExtractedCardPolicyDataView } from './cardPolicyFormDraftTypes';
|
|
2
|
+
export interface ApplyExtractedPolicyToAiCardPolicyDraftArgs {
|
|
3
|
+
categorySearchOptions: CardPolicyChipFieldValue[];
|
|
4
|
+
current: CardPolicyFormDraft;
|
|
5
|
+
extracted: ExtractedCardPolicyDataView;
|
|
6
|
+
vendorSearchOptions: CardPolicyChipFieldValue[];
|
|
7
|
+
}
|
|
8
|
+
export declare const applyExtractedPolicyToAiCardPolicyDraft: ({ extracted, current, vendorSearchOptions, categorySearchOptions, }: ApplyExtractedPolicyToAiCardPolicyDraftArgs) => CardPolicyFormDraft;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyExtractedPolicyToAiCardPolicyDraft = void 0;
|
|
4
|
+
const cardPolicyChipIds_1 = require("./cardPolicyChipIds");
|
|
5
|
+
const cardPolicyFormDraftTypes_1 = require("./cardPolicyFormDraftTypes");
|
|
6
|
+
// Touches only the slices the extract API populates (vendor/category/limits);
|
|
7
|
+
// `cardSelections` + `policiesReview` are preserved (seeded separately).
|
|
8
|
+
const applyExtractedPolicyToAiCardPolicyDraft = ({ extracted, current, vendorSearchOptions, categorySearchOptions, }) => ({
|
|
9
|
+
...current,
|
|
10
|
+
vendorPolicy: buildAllowBlockField({
|
|
11
|
+
allowList: extracted.allowedEntity.merchantNames,
|
|
12
|
+
blockList: extracted.blockedEntity.merchantNames,
|
|
13
|
+
currentAllowItems: current.vendorPolicy.allowItems,
|
|
14
|
+
currentBlockItems: current.vendorPolicy.blockItems,
|
|
15
|
+
universe: vendorSearchOptions,
|
|
16
|
+
matchOnCode: false,
|
|
17
|
+
}),
|
|
18
|
+
categoryPolicy: buildAllowBlockField({
|
|
19
|
+
allowList: extracted.allowedEntity.categoryCodes,
|
|
20
|
+
blockList: extracted.blockedEntity.categoryCodes,
|
|
21
|
+
currentAllowItems: current.categoryPolicy.allowItems,
|
|
22
|
+
currentBlockItems: current.categoryPolicy.blockItems,
|
|
23
|
+
universe: categorySearchOptions,
|
|
24
|
+
matchOnCode: true,
|
|
25
|
+
}),
|
|
26
|
+
limits: buildLimitRows({
|
|
27
|
+
current: current.limits,
|
|
28
|
+
transactionLimit: extracted.transactionLimit,
|
|
29
|
+
requiredReceiptThreshold: extracted.requiredReceiptThreshold,
|
|
30
|
+
}),
|
|
31
|
+
});
|
|
32
|
+
exports.applyExtractedPolicyToAiCardPolicyDraft = applyExtractedPolicyToAiCardPolicyDraft;
|
|
33
|
+
const buildAllowBlockField = ({ allowList, blockList, currentAllowItems, currentBlockItems, universe, matchOnCode, }) => {
|
|
34
|
+
const allowItems = buildSideItems({
|
|
35
|
+
selectedValues: allowList,
|
|
36
|
+
currentItems: currentAllowItems,
|
|
37
|
+
universe,
|
|
38
|
+
matchOnCode,
|
|
39
|
+
});
|
|
40
|
+
const blockItems = buildSideItems({
|
|
41
|
+
selectedValues: blockList,
|
|
42
|
+
currentItems: currentBlockItems,
|
|
43
|
+
universe,
|
|
44
|
+
matchOnCode,
|
|
45
|
+
});
|
|
46
|
+
const mode = allowList.length === 0 && blockList.length > 0 ? 'block' : 'allow';
|
|
47
|
+
return { mode, allowItems, blockItems };
|
|
48
|
+
};
|
|
49
|
+
const buildSideItems = ({ selectedValues, currentItems, universe, matchOnCode, }) => {
|
|
50
|
+
const selectedKeys = new Set(selectedValues
|
|
51
|
+
.map((value) => normalizeKey(value))
|
|
52
|
+
.filter((key) => key != null));
|
|
53
|
+
const items = [];
|
|
54
|
+
const seenIds = new Set();
|
|
55
|
+
for (const item of currentItems) {
|
|
56
|
+
const key = normalizeKey(matchOnCode ? item.optionalCode : item.label);
|
|
57
|
+
const isSelected = key != null && selectedKeys.has(key);
|
|
58
|
+
items.push({ ...item, isSelected });
|
|
59
|
+
seenIds.add(item.id);
|
|
60
|
+
if (isSelected && key != null) {
|
|
61
|
+
selectedKeys.delete(key);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
for (const option of universe) {
|
|
65
|
+
if (selectedKeys.size === 0) {
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
const key = normalizeKey(matchOnCode ? option.optionalCode : option.label);
|
|
69
|
+
if (key == null || !selectedKeys.has(key) || seenIds.has(option.id)) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
items.push({ ...option, isSelected: true });
|
|
73
|
+
seenIds.add(option.id);
|
|
74
|
+
selectedKeys.delete(key);
|
|
75
|
+
}
|
|
76
|
+
for (const value of selectedValues) {
|
|
77
|
+
const key = normalizeKey(value);
|
|
78
|
+
if (key == null || !selectedKeys.has(key)) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const id = matchOnCode
|
|
82
|
+
? (0, cardPolicyChipIds_1.buildMccCategoryChipId)(value)
|
|
83
|
+
: (0, cardPolicyChipIds_1.buildVendorChipId)(value);
|
|
84
|
+
if (seenIds.has(id)) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
items.push({
|
|
88
|
+
id,
|
|
89
|
+
label: value,
|
|
90
|
+
isSelected: true,
|
|
91
|
+
...(matchOnCode ? { optionalCode: value } : {}),
|
|
92
|
+
});
|
|
93
|
+
seenIds.add(id);
|
|
94
|
+
selectedKeys.delete(key);
|
|
95
|
+
}
|
|
96
|
+
return items;
|
|
97
|
+
};
|
|
98
|
+
const buildLimitRows = ({ current, transactionLimit, requiredReceiptThreshold, }) => current.map((row) => {
|
|
99
|
+
if (row.id === cardPolicyFormDraftTypes_1.CARD_POLICY_LIMIT_ROW_ID_TRANSACTION) {
|
|
100
|
+
return amountToLimitRow(row, transactionLimit);
|
|
101
|
+
}
|
|
102
|
+
if (row.id === cardPolicyFormDraftTypes_1.CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT) {
|
|
103
|
+
return amountToLimitRow(row, requiredReceiptThreshold);
|
|
104
|
+
}
|
|
105
|
+
return row;
|
|
106
|
+
});
|
|
107
|
+
const amountToLimitRow = (row, amount) => {
|
|
108
|
+
if (amount > 0) {
|
|
109
|
+
return { ...row, isEnabled: true, amount };
|
|
110
|
+
}
|
|
111
|
+
return { ...row, isEnabled: false, amount: row.amount };
|
|
112
|
+
};
|
|
113
|
+
const normalizeKey = (value) => value == null || value.length === 0 ? undefined : value.toLowerCase().trim();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { updatePolicyDocumentExtractionSuccess } from '../../../../../entity/cardPolicy/cardPolicyReducer';
|
|
4
|
+
import { RootState } from '../../../../../reducer';
|
|
5
|
+
import { applyExtractedPolicyToAiCardPolicyDraft, applyExtractedPolicyToManualCardPolicyDraft } from './createCardPolicyReducer';
|
|
6
|
+
export type ActionType = ReturnType<typeof applyExtractedPolicyToAiCardPolicyDraft> | ReturnType<typeof applyExtractedPolicyToManualCardPolicyDraft>;
|
|
7
|
+
type InboundAction = ReturnType<typeof updatePolicyDocumentExtractionSuccess>;
|
|
8
|
+
export declare const applyExtractedPolicyToDraftEpic: (actions$: ActionsObservable<InboundAction>, state$: StateObservable<RootState>) => Observable<ActionType>;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyExtractedPolicyToDraftEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const cardPolicyReducer_1 = require("../../../../../entity/cardPolicy/cardPolicyReducer");
|
|
7
|
+
const cardPolicyChipIds_1 = require("./cardPolicyChipIds");
|
|
8
|
+
const cardPolicyFormDraftTypes_1 = require("./cardPolicyFormDraftTypes");
|
|
9
|
+
const createCardPolicyReducer_1 = require("./createCardPolicyReducer");
|
|
10
|
+
const toExtractedView = (rules) => ({
|
|
11
|
+
allowedEntity: {
|
|
12
|
+
categoryCodes: rules.allowedEntity.categoryCodes ?? [],
|
|
13
|
+
merchantNames: rules.allowedEntity.merchantNames ?? [],
|
|
14
|
+
},
|
|
15
|
+
blockedEntity: {
|
|
16
|
+
categoryCodes: rules.blockedEntity.categoryCodes ?? [],
|
|
17
|
+
merchantNames: rules.blockedEntity.merchantNames ?? [],
|
|
18
|
+
},
|
|
19
|
+
confidenceScore: rules.confidenceScore,
|
|
20
|
+
policyName: rules.policyName,
|
|
21
|
+
requiredReceiptThreshold: rules.requiredReceiptThreshold,
|
|
22
|
+
transactionLimit: rules.transactionLimit,
|
|
23
|
+
});
|
|
24
|
+
const readVendorSearchOptions = (state) => state.cardPolicyState.vendorSearch.vendors.map((vendor) => (0, cardPolicyChipIds_1.toVendorChipFieldValue)(vendor.name, false));
|
|
25
|
+
const readCategorySearchOptions = (state) => state.cardPolicyState.mccCategories.map((category) => (0, cardPolicyChipIds_1.toMccCategoryChipFieldValue)((0, cardPolicyFormDraftTypes_1.toMccCategoryLike)(category), false));
|
|
26
|
+
// Routes extract success to the AI or manual draft based on `aiCfoAnswerId`,
|
|
27
|
+
// pulling vendor/category universes from CES so any caller wires up automatically.
|
|
28
|
+
// AI step_5 review chips are patched separately by `policyRecommendationFromUploadEpic`.
|
|
29
|
+
const applyExtractedPolicyToDraftEpic = (actions$, state$) => actions$.pipe((0, operators_1.mergeMap)((action) => {
|
|
30
|
+
if (!cardPolicyReducer_1.updatePolicyDocumentExtractionSuccess.match(action)) {
|
|
31
|
+
return rxjs_1.EMPTY;
|
|
32
|
+
}
|
|
33
|
+
const state = state$.value;
|
|
34
|
+
const extraction = state.cardPolicyState.policyDocumentExtraction;
|
|
35
|
+
const rules = extraction.extractedRules;
|
|
36
|
+
if (rules == null) {
|
|
37
|
+
return rxjs_1.EMPTY;
|
|
38
|
+
}
|
|
39
|
+
const extracted = toExtractedView(rules);
|
|
40
|
+
const vendorSearchOptions = readVendorSearchOptions(state);
|
|
41
|
+
const categorySearchOptions = readCategorySearchOptions(state);
|
|
42
|
+
const payload = { extracted, vendorSearchOptions, categorySearchOptions };
|
|
43
|
+
if (extraction.aiCfoAnswerId != null) {
|
|
44
|
+
return (0, rxjs_1.of)((0, createCardPolicyReducer_1.applyExtractedPolicyToAiCardPolicyDraft)(payload));
|
|
45
|
+
}
|
|
46
|
+
return (0, rxjs_1.of)((0, createCardPolicyReducer_1.applyExtractedPolicyToManualCardPolicyDraft)(payload));
|
|
47
|
+
}));
|
|
48
|
+
exports.applyExtractedPolicyToDraftEpic = applyExtractedPolicyToDraftEpic;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CardPolicyChipFieldValue, CardPolicyCreateFormDraft, ExtractedCardPolicyDataView } from './cardPolicyFormDraftTypes';
|
|
2
|
+
export interface ApplyExtractedPolicyToManualCardPolicyDraftArgs {
|
|
3
|
+
categorySearchOptions: CardPolicyChipFieldValue[];
|
|
4
|
+
current: CardPolicyCreateFormDraft;
|
|
5
|
+
extracted: ExtractedCardPolicyDataView;
|
|
6
|
+
vendorSearchOptions: CardPolicyChipFieldValue[];
|
|
7
|
+
}
|
|
8
|
+
export declare const applyExtractedPolicyToManualCardPolicyDraft: ({ extracted, current, vendorSearchOptions, categorySearchOptions, }: ApplyExtractedPolicyToManualCardPolicyDraftArgs) => CardPolicyCreateFormDraft;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyExtractedPolicyToManualCardPolicyDraft = void 0;
|
|
4
|
+
const cardPolicyChipIds_1 = require("./cardPolicyChipIds");
|
|
5
|
+
const cardPolicyFormDraftTypes_1 = require("./cardPolicyFormDraftTypes");
|
|
6
|
+
// Mirrors the AI variant plus name overwrite from `extracted.policyName`;
|
|
7
|
+
// description / mode / cardSelections are preserved (extract API doesn't return them).
|
|
8
|
+
const applyExtractedPolicyToManualCardPolicyDraft = ({ extracted, current, vendorSearchOptions, categorySearchOptions, }) => ({
|
|
9
|
+
...current,
|
|
10
|
+
name: extracted.policyName ?? current.name,
|
|
11
|
+
description: current.description,
|
|
12
|
+
vendorPolicy: buildAllowBlockField({
|
|
13
|
+
allowList: extracted.allowedEntity.merchantNames,
|
|
14
|
+
blockList: extracted.blockedEntity.merchantNames,
|
|
15
|
+
currentAllowItems: current.vendorPolicy.allowItems,
|
|
16
|
+
currentBlockItems: current.vendorPolicy.blockItems,
|
|
17
|
+
universe: vendorSearchOptions,
|
|
18
|
+
matchOnCode: false,
|
|
19
|
+
}),
|
|
20
|
+
categoryPolicy: buildAllowBlockField({
|
|
21
|
+
allowList: extracted.allowedEntity.categoryCodes,
|
|
22
|
+
blockList: extracted.blockedEntity.categoryCodes,
|
|
23
|
+
currentAllowItems: current.categoryPolicy.allowItems,
|
|
24
|
+
currentBlockItems: current.categoryPolicy.blockItems,
|
|
25
|
+
universe: categorySearchOptions,
|
|
26
|
+
matchOnCode: true,
|
|
27
|
+
}),
|
|
28
|
+
limits: buildLimitRows({
|
|
29
|
+
current: current.limits,
|
|
30
|
+
transactionLimit: extracted.transactionLimit,
|
|
31
|
+
requiredReceiptThreshold: extracted.requiredReceiptThreshold,
|
|
32
|
+
}),
|
|
33
|
+
});
|
|
34
|
+
exports.applyExtractedPolicyToManualCardPolicyDraft = applyExtractedPolicyToManualCardPolicyDraft;
|
|
35
|
+
const buildAllowBlockField = ({ allowList, blockList, currentAllowItems, currentBlockItems, universe, matchOnCode, }) => {
|
|
36
|
+
const allowItems = buildSideItems({
|
|
37
|
+
selectedValues: allowList,
|
|
38
|
+
currentItems: currentAllowItems,
|
|
39
|
+
universe,
|
|
40
|
+
matchOnCode,
|
|
41
|
+
});
|
|
42
|
+
const blockItems = buildSideItems({
|
|
43
|
+
selectedValues: blockList,
|
|
44
|
+
currentItems: currentBlockItems,
|
|
45
|
+
universe,
|
|
46
|
+
matchOnCode,
|
|
47
|
+
});
|
|
48
|
+
const mode = allowList.length === 0 && blockList.length > 0 ? 'block' : 'allow';
|
|
49
|
+
return { mode, allowItems, blockItems };
|
|
50
|
+
};
|
|
51
|
+
const buildSideItems = ({ selectedValues, currentItems, universe, matchOnCode, }) => {
|
|
52
|
+
const selectedKeys = new Set(selectedValues
|
|
53
|
+
.map((value) => normalizeKey(value))
|
|
54
|
+
.filter((key) => key != null));
|
|
55
|
+
const items = [];
|
|
56
|
+
const seenIds = new Set();
|
|
57
|
+
for (const item of currentItems) {
|
|
58
|
+
const key = normalizeKey(matchOnCode ? item.optionalCode : item.label);
|
|
59
|
+
const isSelected = key != null && selectedKeys.has(key);
|
|
60
|
+
items.push({ ...item, isSelected });
|
|
61
|
+
seenIds.add(item.id);
|
|
62
|
+
if (isSelected && key != null) {
|
|
63
|
+
selectedKeys.delete(key);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
for (const option of universe) {
|
|
67
|
+
if (selectedKeys.size === 0) {
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
const key = normalizeKey(matchOnCode ? option.optionalCode : option.label);
|
|
71
|
+
if (key == null || !selectedKeys.has(key) || seenIds.has(option.id)) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
items.push({ ...option, isSelected: true });
|
|
75
|
+
seenIds.add(option.id);
|
|
76
|
+
selectedKeys.delete(key);
|
|
77
|
+
}
|
|
78
|
+
for (const value of selectedValues) {
|
|
79
|
+
const key = normalizeKey(value);
|
|
80
|
+
if (key == null || !selectedKeys.has(key)) {
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
const id = matchOnCode
|
|
84
|
+
? (0, cardPolicyChipIds_1.buildMccCategoryChipId)(value)
|
|
85
|
+
: (0, cardPolicyChipIds_1.buildVendorChipId)(value);
|
|
86
|
+
if (seenIds.has(id)) {
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
items.push({
|
|
90
|
+
id,
|
|
91
|
+
label: value,
|
|
92
|
+
isSelected: true,
|
|
93
|
+
...(matchOnCode ? { optionalCode: value } : {}),
|
|
94
|
+
});
|
|
95
|
+
seenIds.add(id);
|
|
96
|
+
selectedKeys.delete(key);
|
|
97
|
+
}
|
|
98
|
+
return items;
|
|
99
|
+
};
|
|
100
|
+
const buildLimitRows = ({ current, transactionLimit, requiredReceiptThreshold, }) => current.map((row) => {
|
|
101
|
+
if (row.id === cardPolicyFormDraftTypes_1.CARD_POLICY_LIMIT_ROW_ID_TRANSACTION) {
|
|
102
|
+
return amountToLimitRow(row, transactionLimit);
|
|
103
|
+
}
|
|
104
|
+
if (row.id === cardPolicyFormDraftTypes_1.CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT) {
|
|
105
|
+
return amountToLimitRow(row, requiredReceiptThreshold);
|
|
106
|
+
}
|
|
107
|
+
return row;
|
|
108
|
+
});
|
|
109
|
+
const amountToLimitRow = (row, amount) => {
|
|
110
|
+
if (amount > 0) {
|
|
111
|
+
return { ...row, isEnabled: true, amount };
|
|
112
|
+
}
|
|
113
|
+
return { ...row, isEnabled: false, amount: row.amount };
|
|
114
|
+
};
|
|
115
|
+
const normalizeKey = (value) => value == null || value.length === 0 ? undefined : value.toLowerCase().trim();
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CardPolicyUploadSource, CardPolicyWizardPlan } from '../../../../../entity/aiCfo/aiCfoState';
|
|
2
|
+
import { AiCardPolicyFormDraftSeedContext, CardPolicyFormDraft } from './cardPolicyFormDraftTypes';
|
|
3
|
+
export interface ApplyUploadPlanToAiCardPolicyDraftArgs {
|
|
4
|
+
context: AiCardPolicyFormDraftSeedContext;
|
|
5
|
+
current: CardPolicyFormDraft;
|
|
6
|
+
wizardPlan: CardPolicyWizardPlan;
|
|
7
|
+
source?: CardPolicyUploadSource;
|
|
8
|
+
}
|
|
9
|
+
export interface ApplyUploadPlanToAiCardPolicyDraftResult {
|
|
10
|
+
context: AiCardPolicyFormDraftSeedContext;
|
|
11
|
+
draft: CardPolicyFormDraft;
|
|
12
|
+
}
|
|
13
|
+
export declare const applyUploadPlanToAiCardPolicyDraft: ({ current, context, wizardPlan, source, }: ApplyUploadPlanToAiCardPolicyDraftArgs) => ApplyUploadPlanToAiCardPolicyDraftResult;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyUploadPlanToAiCardPolicyDraft = void 0;
|
|
4
|
+
const buildAiCardPolicyFormDraftSeed_1 = require("./buildAiCardPolicyFormDraftSeed");
|
|
5
|
+
// Re-derives Step 5 review from a fresh `wizardPlan` while preserving the
|
|
6
|
+
// user's Step 2 `cardSelections` and Step 1 `limits`. No-op outside upload mode.
|
|
7
|
+
const applyUploadPlanToAiCardPolicyDraft = ({ current, context, wizardPlan, source, }) => {
|
|
8
|
+
if (current.policyKind !== 'upload') {
|
|
9
|
+
return { draft: current, context };
|
|
10
|
+
}
|
|
11
|
+
const policiesReview = (0, buildAiCardPolicyFormDraftSeed_1.buildUploadReviewRows)(wizardPlan.step5Review.draftPolicies, context.cardsMasterList, context.categorySearchOptions);
|
|
12
|
+
return {
|
|
13
|
+
draft: {
|
|
14
|
+
...current,
|
|
15
|
+
policiesReview,
|
|
16
|
+
},
|
|
17
|
+
context: {
|
|
18
|
+
...context,
|
|
19
|
+
wizardPlan,
|
|
20
|
+
source: source ?? context.source,
|
|
21
|
+
suggestedPoliciesSeed: wizardPlan.step5Review.draftPolicies.map((draft) => ({
|
|
22
|
+
id: draft.id,
|
|
23
|
+
name: draft.name,
|
|
24
|
+
isChecked: true,
|
|
25
|
+
})),
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
exports.applyUploadPlanToAiCardPolicyDraft = applyUploadPlanToAiCardPolicyDraft;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CardPolicyDraftPolicy, CardPolicyInitialData } from '../../../../../entity/aiCfo/aiCfoState';
|
|
2
|
+
import { AiCardPolicyFormDraftSeedContext, CardPolicyCardSelectionRow, CardPolicyDefaultSeedSuggestions, CardPolicyFormDraft, CardPolicyLimitFieldValue, CardPolicyReviewRow, MccCategoryLike } from './cardPolicyFormDraftTypes';
|
|
3
|
+
export interface BuildAiCardPolicyFormDraftSeedArgs extends CardPolicyDefaultSeedSuggestions {
|
|
4
|
+
initialData: CardPolicyInitialData;
|
|
5
|
+
cardsMasterList?: CardPolicyCardSelectionRow[];
|
|
6
|
+
categorySearchOptions?: MccCategoryLike[];
|
|
7
|
+
}
|
|
8
|
+
export interface BuildAiCardPolicyFormDraftSeedResult {
|
|
9
|
+
context: AiCardPolicyFormDraftSeedContext;
|
|
10
|
+
draft: CardPolicyFormDraft;
|
|
11
|
+
}
|
|
12
|
+
export declare const buildEmptyLimitRows: () => CardPolicyLimitFieldValue[];
|
|
13
|
+
export declare const buildAiCardPolicyFormDraftSeed: ({ initialData, cardsMasterList, categorySearchOptions, suggestedAllowMerchants, suggestedBlockMerchants, suggestedAllowCategories, suggestedBlockCategories, }: BuildAiCardPolicyFormDraftSeedArgs) => BuildAiCardPolicyFormDraftSeedResult;
|
|
14
|
+
export declare const buildUploadReviewRows: (draftPolicies: CardPolicyDraftPolicy[], cardsMasterList: CardPolicyCardSelectionRow[], categorySearchOptions: MccCategoryLike[] | undefined) => CardPolicyReviewRow[];
|