@zeniai/client-epic-state 5.1.89 → 5.1.90

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.
Files changed (140) hide show
  1. package/lib/entity/aiCfo/aiCfoPayload.d.ts +0 -7
  2. package/lib/entity/aiCfo/aiCfoReducer.d.ts +2 -3
  3. package/lib/entity/aiCfo/aiCfoReducer.js +2 -25
  4. package/lib/entity/aiCfo/aiCfoState.d.ts +0 -7
  5. package/lib/entity/company/companyPayload.d.ts +0 -4
  6. package/lib/entity/company/companyPayload.js +8 -18
  7. package/lib/entity/company/companyStateTypes.d.ts +0 -4
  8. package/lib/entity/customerSatisfaction/customerSatisfactionReducer.d.ts +1 -1
  9. package/lib/entity/customerSatisfaction/customerSatisfactionReducer.js +2 -6
  10. package/lib/entity/snackbar/snackbarTypes.d.ts +1 -1
  11. package/lib/entity/snackbar/snackbarTypes.js +0 -31
  12. package/lib/entity/tenant/tenantReducer.d.ts +1 -5
  13. package/lib/entity/tenant/tenantReducer.js +2 -21
  14. package/lib/epic.d.ts +1 -3
  15. package/lib/epic.js +1 -5
  16. package/lib/esm/entity/aiCfo/aiCfoReducer.js +1 -23
  17. package/lib/esm/entity/company/companyPayload.js +8 -18
  18. package/lib/esm/entity/customerSatisfaction/customerSatisfactionReducer.js +1 -4
  19. package/lib/esm/entity/snackbar/snackbarTypes.js +0 -31
  20. package/lib/esm/entity/tenant/tenantReducer.js +1 -20
  21. package/lib/esm/epic.js +1 -5
  22. package/lib/esm/index.js +7 -8
  23. package/lib/esm/view/companyHealthMetricView/companyHealthMetricConfigReducer.js +1 -4
  24. package/lib/esm/view/companyView/companyViewReducer.js +1 -58
  25. package/lib/esm/view/companyView/selector/companyManagementViewSelector.js +0 -52
  26. package/lib/esm/view/companyView/types/cockpitTypes.js +1 -13
  27. package/lib/esm/view/companyView/types/companyManagementViewState.js +0 -2
  28. package/lib/esm/view/invoicing/createCreditNote/createCreditNoteEpic.js +4 -24
  29. package/lib/esm/view/invoicing/createInvoice/createInvoiceEpic.js +4 -24
  30. package/lib/esm/view/invoicing/createInvoice/createInvoiceSelector.js +10 -37
  31. package/lib/esm/view/invoicing/discountAction/discountActionEpic.js +9 -33
  32. package/lib/esm/view/invoicing/dunningAction/dunningActionEpic.js +9 -35
  33. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +1 -5
  34. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/saveInvoicingCatalogItemEpic.js +5 -32
  35. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/saveInvoicingCouponEpic.js +3 -23
  36. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/saveInvoicingCustomerEpic.js +4 -24
  37. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js +4 -24
  38. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/syncInvoicingSubscriptionCouponsEpic.js +3 -20
  39. package/lib/esm/view/invoicing/invoiceAction/invoiceActionEpic.js +17 -60
  40. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +0 -30
  41. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +29 -4
  42. package/lib/esm/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewPayload.js +1 -9
  43. package/lib/esm/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewReducer.js +1 -50
  44. package/lib/esm/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewSelector.js +1 -14
  45. package/lib/esm/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +10 -29
  46. package/lib/esm/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +5 -28
  47. package/lib/esm/view/invoicing/issueCreditNote/issueCreditNoteEpic.js +4 -24
  48. package/lib/esm/view/invoicing/issueCreditNote/issueCreditNoteSelector.js +14 -22
  49. package/lib/esm/view/invoicing/recordPayment/recordPaymentEpic.js +7 -46
  50. package/lib/esm/view/invoicing/settingsView/settingsViewEpics.js +8 -26
  51. package/lib/esm/view/invoicing/settingsView/settingsViewReducer.js +1 -1
  52. package/lib/esm/view/invoicing/settingsView/settingsViewSelector.js +1 -4
  53. package/lib/esm/view/invoicing/subscriptionAction/subscriptionActionEpic.js +9 -41
  54. package/lib/esm/view/vendorFiling1099/vendorFiling1099UploadDetails/vendorFiling1099UploadDetailsReducer.js +1 -4
  55. package/lib/esm/view/vendorTabView/vendorTabViewReducer.js +1 -4
  56. package/lib/index.d.ts +10 -14
  57. package/lib/index.js +50 -61
  58. package/lib/view/companyHealthMetricView/companyHealthMetricConfigReducer.d.ts +1 -1
  59. package/lib/view/companyHealthMetricView/companyHealthMetricConfigReducer.js +2 -5
  60. package/lib/view/companyView/companyViewReducer.d.ts +1 -22
  61. package/lib/view/companyView/companyViewReducer.js +3 -60
  62. package/lib/view/companyView/selector/companyManagementViewSelector.d.ts +0 -3
  63. package/lib/view/companyView/selector/companyManagementViewSelector.js +0 -55
  64. package/lib/view/companyView/types/cockpitTypes.d.ts +3 -7
  65. package/lib/view/companyView/types/cockpitTypes.js +1 -15
  66. package/lib/view/companyView/types/companyManagementViewState.d.ts +0 -2
  67. package/lib/view/companyView/types/companyManagementViewState.js +0 -2
  68. package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.d.ts +1 -1
  69. package/lib/view/invoicing/createCreditNote/createCreditNoteEpic.d.ts +1 -2
  70. package/lib/view/invoicing/createCreditNote/createCreditNoteEpic.js +3 -23
  71. package/lib/view/invoicing/createInvoice/createInvoiceEpic.d.ts +1 -2
  72. package/lib/view/invoicing/createInvoice/createInvoiceEpic.js +3 -23
  73. package/lib/view/invoicing/createInvoice/createInvoiceSelector.d.ts +8 -22
  74. package/lib/view/invoicing/createInvoice/createInvoiceSelector.js +10 -37
  75. package/lib/view/invoicing/discountAction/discountActionEpic.d.ts +1 -2
  76. package/lib/view/invoicing/discountAction/discountActionEpic.js +8 -32
  77. package/lib/view/invoicing/dunningAction/dunningActionEpic.d.ts +1 -2
  78. package/lib/view/invoicing/dunningAction/dunningActionEpic.js +8 -34
  79. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.d.ts +1 -3
  80. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +1 -5
  81. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/saveInvoicingCatalogItemEpic.d.ts +1 -2
  82. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/saveInvoicingCatalogItemEpic.js +4 -31
  83. package/lib/view/invoicing/editInvoicingCouponDetailView/saveInvoicingCouponEpic.d.ts +1 -2
  84. package/lib/view/invoicing/editInvoicingCouponDetailView/saveInvoicingCouponEpic.js +2 -22
  85. package/lib/view/invoicing/editInvoicingCustomerDetailView/saveInvoicingCustomerEpic.d.ts +1 -2
  86. package/lib/view/invoicing/editInvoicingCustomerDetailView/saveInvoicingCustomerEpic.js +3 -23
  87. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.d.ts +1 -2
  88. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/saveInvoicingSubscriptionEpic.js +3 -23
  89. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/syncInvoicingSubscriptionCouponsEpic.d.ts +1 -2
  90. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/syncInvoicingSubscriptionCouponsEpic.js +2 -19
  91. package/lib/view/invoicing/invoiceAction/invoiceActionEpic.d.ts +1 -2
  92. package/lib/view/invoicing/invoiceAction/invoiceActionEpic.js +16 -59
  93. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewPayload.d.ts +0 -13
  94. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.d.ts +1 -1
  95. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +0 -30
  96. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.d.ts +31 -11
  97. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +29 -4
  98. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewState.d.ts +0 -15
  99. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewEpics.d.ts +2 -2
  100. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewPayload.d.ts +0 -12
  101. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewPayload.js +0 -11
  102. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewReducer.d.ts +4 -21
  103. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewReducer.js +2 -51
  104. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewSelector.d.ts +0 -3
  105. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewSelector.js +2 -16
  106. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewState.d.ts +0 -13
  107. package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.d.ts +1 -2
  108. package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +9 -28
  109. package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +4 -27
  110. package/lib/view/invoicing/issueCreditNote/issueCreditNoteEpic.d.ts +1 -2
  111. package/lib/view/invoicing/issueCreditNote/issueCreditNoteEpic.js +3 -23
  112. package/lib/view/invoicing/issueCreditNote/issueCreditNoteSelector.d.ts +7 -24
  113. package/lib/view/invoicing/issueCreditNote/issueCreditNoteSelector.js +16 -23
  114. package/lib/view/invoicing/recordPayment/recordPaymentEpic.d.ts +1 -2
  115. package/lib/view/invoicing/recordPayment/recordPaymentEpic.js +6 -45
  116. package/lib/view/invoicing/settingsView/settingsViewEpics.d.ts +1 -2
  117. package/lib/view/invoicing/settingsView/settingsViewEpics.js +7 -25
  118. package/lib/view/invoicing/settingsView/settingsViewReducer.d.ts +1 -10
  119. package/lib/view/invoicing/settingsView/settingsViewReducer.js +1 -1
  120. package/lib/view/invoicing/settingsView/settingsViewSelector.d.ts +2 -4
  121. package/lib/view/invoicing/settingsView/settingsViewSelector.js +1 -4
  122. package/lib/view/invoicing/subscriptionAction/subscriptionActionEpic.d.ts +1 -2
  123. package/lib/view/invoicing/subscriptionAction/subscriptionActionEpic.js +8 -40
  124. package/lib/view/vendorFiling1099/vendorFiling1099UploadDetails/vendorFiling1099UploadDetailsReducer.d.ts +1 -1
  125. package/lib/view/vendorFiling1099/vendorFiling1099UploadDetails/vendorFiling1099UploadDetailsReducer.js +2 -5
  126. package/lib/view/vendorTabView/vendorTabViewReducer.d.ts +1 -1
  127. package/lib/view/vendorTabView/vendorTabViewReducer.js +2 -5
  128. package/package.json +1 -1
  129. package/lib/esm/view/companyView/epic/updateCompanyProductServicesEpic.js +0 -91
  130. package/lib/esm/view/companyView/epic/updateCompanyQboRealmIdEpic.js +0 -58
  131. package/lib/esm/view/invoicing/invoicingDunningCaseDetailView/fetchInvoicingDunningEmailPreviewEpic.js +0 -26
  132. package/lib/esm/view/invoicing/invoicingDunningCaseDetailView/fetchInvoicingDunningEmailPreviewPageEpic.js +0 -16
  133. package/lib/view/companyView/epic/updateCompanyProductServicesEpic.d.ts +0 -10
  134. package/lib/view/companyView/epic/updateCompanyProductServicesEpic.js +0 -95
  135. package/lib/view/companyView/epic/updateCompanyQboRealmIdEpic.d.ts +0 -8
  136. package/lib/view/companyView/epic/updateCompanyQboRealmIdEpic.js +0 -62
  137. package/lib/view/invoicing/invoicingDunningCaseDetailView/fetchInvoicingDunningEmailPreviewEpic.d.ts +0 -7
  138. package/lib/view/invoicing/invoicingDunningCaseDetailView/fetchInvoicingDunningEmailPreviewEpic.js +0 -30
  139. package/lib/view/invoicing/invoicingDunningCaseDetailView/fetchInvoicingDunningEmailPreviewPageEpic.d.ts +0 -6
  140. package/lib/view/invoicing/invoicingDunningCaseDetailView/fetchInvoicingDunningEmailPreviewPageEpic.js +0 -20
package/lib/esm/index.js CHANGED
@@ -154,10 +154,10 @@ import { fetchCompanyMonthEndReportHistoricData, fetchCompanyMonthEndReportHisto
154
154
  import { getCompanyMonthEndReportHistoricData, getCompanyMonthEndReportSelectorView, } from './view/companyMonthEndReportView/companyMonthEndReportViewSelector';
155
155
  import { fetchCockpitContext, fetchCompanyTaskManagerView, fetchTaskManagerMetrics, updateCompanyTaskManagerViewFilters, } from './view/companyTaskManagerView/companyTaskManagerViewReducer';
156
156
  import { getCompanyTaskManagerView, } from './view/companyTaskManagerView/companyTaskManagerViewSelector';
157
- import { clearCompanyView, clearQboProjectsReconnectRequest, companyManagementSaveUpdates, companyPassportClearDataInLocalStore, companyPassportSaveDataInLocalStore, deleteCompanyOfficerInLocalStore, disableAccountingProjects, dismissCapitalizationOnboarding, enableAccountingProjects, fetchAllCockpitViews, fetchCompanyManagementView, fetchCompanyPassportView, fetchCompanyPortfolioView, fetchManagementView, fetchOnboardingView, fetchParentSubsidiaryManagementView, fetchPortfolioView, fetchSubscriptionView, fetchZeniUsers, resumeEnableAccountingProjects, saveCompanyPassportDetails, saveIndustryAndIncDateInCompanyPassportLocalStore, updateAccountingClassesEnabled, updateCapitalizationAccountThreshold, updateCompanyDownloadState, updateCompanyManagementUIState, updateCompanyPassportLocalStoreData, updateCompanyPortfolioUIState, updateCompanyProductServices, updateCompanyQboRealmId, } from './view/companyView/companyViewReducer';
157
+ import { clearCompanyView, clearQboProjectsReconnectRequest, companyManagementSaveUpdates, companyPassportClearDataInLocalStore, companyPassportSaveDataInLocalStore, deleteCompanyOfficerInLocalStore, disableAccountingProjects, dismissCapitalizationOnboarding, enableAccountingProjects, fetchAllCockpitViews, fetchCompanyManagementView, fetchCompanyPassportView, fetchCompanyPortfolioView, fetchManagementView, fetchOnboardingView, fetchParentSubsidiaryManagementView, fetchPortfolioView, fetchSubscriptionView, fetchZeniUsers, resumeEnableAccountingProjects, saveCompanyPassportDetails, saveIndustryAndIncDateInCompanyPassportLocalStore, updateAccountingClassesEnabled, updateCapitalizationAccountThreshold, updateCompanyDownloadState, updateCompanyManagementUIState, updateCompanyPassportLocalStoreData, updateCompanyPortfolioUIState, } from './view/companyView/companyViewReducer';
158
158
  import { canSendMonthEndEmailReport, shouldEnableCalendarPickerForLastReportSent, } from './view/companyView/helpers/cockpitHelpers';
159
159
  import { getParentSubsidiaryManagementView } from './view/companyView/parentSubsidiaryView/parentSubsidiaryViewSelector';
160
- import { getAddonListZeniSku, getCompanyManagementView, getCompanyProductServicesUpdateStatus, getCompanyQboRealmIdUpdateStatus, getPlanListZeniSku, } from './view/companyView/selector/companyManagementViewSelector';
160
+ import { getAddonListZeniSku, getCompanyManagementView, getPlanListZeniSku, } from './view/companyView/selector/companyManagementViewSelector';
161
161
  import { getCompanyPassportLocalStoreData, getCompanyPassportView, isCompanyPassportDataToBeSaved, } from './view/companyView/selector/companyPassportViewSelector';
162
162
  import { getCompanyPortfolioView, isInfiniteRunway, } from './view/companyView/selector/companyPortfolioViewSelector';
163
163
  import { getAllCockpitTabsFilterView, } from './view/companyView/selector/getAllCockpitTabsFilterView';
@@ -456,7 +456,6 @@ export { scheduleTenantCreditScoreCron, fetchCreditAgentMacro, saveCreditAgentMa
456
456
  export { toCardTenantProfileRow, toMacro, } from './entity/creditAgent/creditAgentPayload';
457
457
  export { getCreditAgentView, getCreditAgentEntity, getCreditAgentMacro, getCardProfilesData, } from './view/creditAgentView/creditAgentViewSelector';
458
458
  export { getCreditReportDownloadPayload } from './view/creditAgentView/buildCreditReportCsv';
459
- export { ALL_PRODUCT_VERTICALS, toProductVertical, toProductVerticalStrict, } from './view/companyView/types/cockpitTypes';
460
459
  export { clearAllCreditAgent, updateCreditAgentMacro, updateCreditAgentRow, updateCreditAgentRows, } from './entity/creditAgent/creditAgentReducer';
461
460
  export { getCreditAgentRows, getCreditAgentMacroEntity, } from './entity/creditAgent/creditAgentSelector';
462
461
  export { saveJeAccountSettings, saveJeAccountSettingsLocalData };
@@ -567,7 +566,7 @@ export { newAddressInLocalStore, getAddress, getNewAddress, getAllNewAddresses,
567
566
  export { toManagementSortKeyType, toOnboardingSortKeyType, toPortfolioSortKeyType, toHealthSortKeyType, toTaskManagerSortKeyType, updateCompanyTaskManagerViewFilters, };
568
567
  export { ALL_COCKPIT_TABS_FILE_TYPES, ALL_COCKPIT_TABS_IDS, toCockpitTabsIDStrict, toCockpitTabsFileTypeStrict, };
569
568
  export { isAllowedValueWithCode, isAllowedValueWithID, };
570
- export { fetchCompanyPassportView, getCompanyPassportView, getCompanyPassportLocalStoreData, isCompanyPassportDataToBeSaved, companyPassportSaveDataInLocalStore, saveIndustryAndIncDateInCompanyPassportLocalStore, deleteCompanyOfficerInLocalStore, companyPassportClearDataInLocalStore, updateCompanyPassportLocalStoreData, saveCompanyPassportDetails, updateAccountingClassesEnabled, enableAccountingProjects, resumeEnableAccountingProjects, disableAccountingProjects, clearQboProjectsReconnectRequest, updateCompanyProductServices, getCompanyProductServicesUpdateStatus, updateCompanyQboRealmId, getCompanyQboRealmIdUpdateStatus, updateCapitalizationAccountThreshold, dismissCapitalizationOnboarding, clearCompanyView, };
569
+ export { fetchCompanyPassportView, getCompanyPassportView, getCompanyPassportLocalStoreData, isCompanyPassportDataToBeSaved, companyPassportSaveDataInLocalStore, saveIndustryAndIncDateInCompanyPassportLocalStore, deleteCompanyOfficerInLocalStore, companyPassportClearDataInLocalStore, updateCompanyPassportLocalStoreData, saveCompanyPassportDetails, updateAccountingClassesEnabled, enableAccountingProjects, resumeEnableAccountingProjects, disableAccountingProjects, clearQboProjectsReconnectRequest, updateCapitalizationAccountThreshold, dismissCapitalizationOnboarding, clearCompanyView, };
571
570
  export { toCompanyPassportLocalData, };
572
571
  export { COMPANY_ONBOARDING_INDUSTRY_TYPE_CODES, COMPANY_ONBOARDING_SUB_INDUSTRY_CODES_BY_INDUSTRY, COMPANY_PURPOSE_OF_ACCOUNT_CODES, COMPANY_SOURCE_OF_FUNDS_CODES, COMPANY_TRANSACTION_VOLUME_CODES, COMPANY_US_NEXUS_TYPE_CODES, getCompanyOnboardingSubIndustryCodesForIndustry, };
573
572
  export { getUncategorizedAccounts, getNestedAccountListHierarchy, };
@@ -675,7 +674,7 @@ export { cancelAiAccountantOnboarding, clearAiAccountantView, fetchAiAccountantC
675
674
  export { getAiAccountantCockpitView, } from './view/aiAccountantView/aiAccountantViewSelector';
676
675
  export { fetchChatSessionsForUser, createSession, submitQuestion, updateAiCfoViewScrollPosition, updateCurrentInput, updateCotCollapsedState, clearInput, setSession, clearAiCfoView, clearCurrentSessionId, clearDeleteChatSessionStatus, clearLastContextMessage, createSessionAndSubmit, stopSubmit, stopSubmitQuestion, fetchChatHistory, acceptMasterTOS, deleteChatSession, submitFeedback, updateResponseState, fetchSuggestedQuestions, fetchSuggestedQuestionsSuccess, fetchSuggestedQuestionsFailure, fetchSkills, fetchSkillsSuccess, fetchSkillsFailure, applyAiCfoSidePanelHostPageTransition, clearAiCfoSidePanelHostPageContext, } from './view/aiCfoView/aiCfoViewReducer';
677
676
  export { getAiCfoView, getSuggestedQuestionsForPageContext, getSkills, } from './view/aiCfoView/aiCfoViewSelector';
678
- export { setNewSession, setSessions, updateAiCfoAnswerCardPolicyWizardPlan, upsertAnswerPayload, upsertOrAddQuestionAnswerPayload, addQuestionPayload, clearSession, clearAiCfo, toAiCfoExports, toAiCfoVisualization, appendSyntheticAiCfoAnswer, updateSyntheticAiCfoAnswer, removeSyntheticAiCfoAnswer, clearSyntheticAiCfoAnswers, } from './entity/aiCfo/aiCfoReducer';
677
+ export { setNewSession, setSessions, updateAiCfoAnswerCardPolicyWizardPlan, upsertAnswerPayload, upsertOrAddQuestionAnswerPayload, addQuestionPayload, clearSession, clearAiCfo, toAiCfoVisualization, appendSyntheticAiCfoAnswer, updateSyntheticAiCfoAnswer, removeSyntheticAiCfoAnswer, clearSyntheticAiCfoAnswers, } from './entity/aiCfo/aiCfoReducer';
679
678
  export { getAllQuestionAnswersForChatSession, getQuestionAnswerByIdForChatSession, getAllQuestionsForChatSession, getAiCfoSelectorView, getSyntheticAiCfoAnswersForChatSession, getSyntheticAiCfoAnswerByQuestionAnswerId, } from './entity/aiCfo/aiCfoSelector';
680
679
  export { ALL_AI_CFO_CHARTS_TYPES, ALL_AI_CFO_VISUALIZATION_TYPES, ALL_AI_CFO_ANSWER_STATE_TYPES, ALL_AI_CFO_ANSWER_RESPONSE_TYPES, ALL_INTERACTIVE_FORM_TYPES, toAiCfoVisualizationType, toAiCfoVisualizationTypeStrict, toAiCfoChartType, toAiCfoChartTypeStrict, toAiCfoAnswerStateType, toAiCfoAnswerStateTypeStrict, toAiCfoAnswerResponseType, toAiCfoAnswerResponseTypeStrict, toInteractiveFormType, toInteractiveFormTypeStrict, ALL_SYNTHETIC_AI_CFO_ANSWER_KINDS, toMessageSender, toMessageType, } from './entity/aiCfo/aiCfoState';
681
680
  // ── Card Policy (shared between manual + AI-driven flows) ────────────
@@ -736,7 +735,7 @@ export { resetRecordPayment, initializeRecordPaymentDraft, submitRecordPayment,
736
735
  export { initializeIssueCreditNoteDraft, issueCreditNoteFailure, issueCreditNoteSuccess, resetIssueCreditNote, submitIssueCreditNote, updateIssueCreditNoteFormDraft, } from './view/invoicing/issueCreditNote/issueCreditNoteReducer';
737
736
  export { computeIssueCreditNoteTotal, initializeIssueCreditNoteDraftFromInvoice, localDataToIssueCreditNotePayload, } from './view/invoicing/issueCreditNote/issueCreditNotePayload';
738
737
  export { INVOICING_CREDIT_NOTE_REASON_CODES, initialIssueCreditNoteFormLocalData, } from './view/invoicing/issueCreditNote/issueCreditNoteFormConfig';
739
- export { getIssueCreditNoteView } from './view/invoicing/issueCreditNote/issueCreditNoteSelector';
738
+ export { getIssueCreditNoteFormView, getIssueCreditNoteView, } from './view/invoicing/issueCreditNote/issueCreditNoteSelector';
740
739
  export { createCreditNoteFailure, createCreditNoteSuccess, resetCreateCreditNote, submitCreateCreditNote, updateCreateCreditNoteFormDraft, } from './view/invoicing/createCreditNote/createCreditNoteReducer';
741
740
  export { localDataToCreateCreditNotePayload } from './view/invoicing/createCreditNote/createCreditNotePayload';
742
741
  export { initialCreateCreditNoteFormLocalData } from './view/invoicing/createCreditNote/createCreditNoteFormConfig';
@@ -825,8 +824,8 @@ export { clearAllInvoicingDunningCases, removeInvoicingDunningCase, updateInvoic
825
824
  export { clearInvoicingDunningCaseListView, fetchInvoicingDunningCaseCounts, fetchInvoicingDunningCaseList, fetchInvoicingDunningCaseListPage, setInvoicingDunningCaseActiveTab, updateInvoicingDunningCaseFilters, } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewReducer';
826
825
  export { ALL_INVOICING_DUNNING_CASE_SORT_KEYS, ALL_INVOICING_DUNNING_CASE_TAB_IDS, INVOICING_DUNNING_CASE_COLUMNS, INVOICING_DUNNING_CASE_TABS, } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewState';
827
826
  export { getInvoicingDunningCaseListView } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewSelector';
828
- export { clearInvoicingDunningCaseDetailView, fetchInvoicingDunningCaseDetail, fetchInvoicingDunningEmailPreviewPage, invalidateInvoicingDunningEmailPreview, } from './view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewReducer';
829
- export { getInvoicingDunningCaseById, getInvoicingDunningCaseDetail, getInvoicingDunningEmailPreview, } from './view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewSelector';
827
+ export { clearInvoicingDunningCaseDetailView, fetchInvoicingDunningCaseDetail, } from './view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewReducer';
828
+ export { getInvoicingDunningCaseById, getInvoicingDunningCaseDetail, } from './view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewSelector';
830
829
  // ── Invoicing: catalog (plans + products) ─────────────────────────────────────
831
830
  export { clearAllInvoicingPlans, mergeInvoicingPlanSubFamily, removeInvoicingPlan, updateInvoicingPlans, } from './entity/invoicing/plan/planReducer';
832
831
  export { clearAllInvoicingProducts, removeInvoicingProduct, updateInvoicingProducts, } from './entity/invoicing/product/productReducer';
@@ -31,13 +31,10 @@ const companyHealthMetricConfigView = createSlice({
31
31
  draft.fetchState = 'Error';
32
32
  draft.error = action.payload;
33
33
  },
34
- clearCompanyHealthMetricConfigView() {
35
- return initialState;
36
- },
37
34
  },
38
35
  extraReducers: (builder) => {
39
36
  builder.addCase(clearAll, () => initialState);
40
37
  },
41
38
  });
42
- export const { clearCompanyHealthMetricConfigView, fetchCompanyHealthMetricConfig, updateCompanyHealthMetricConfig, updateCompanyHealthMetricConfigFailure, } = companyHealthMetricConfigView.actions;
39
+ export const { fetchCompanyHealthMetricConfig, updateCompanyHealthMetricConfig, updateCompanyHealthMetricConfigFailure, } = companyHealthMetricConfigView.actions;
43
40
  export default companyHealthMetricConfigView.reducer;
@@ -377,63 +377,6 @@ const companyView = createSlice({
377
377
  clearQboProjectsReconnectRequest(draft) {
378
378
  draft.passportView.needsQboProjectsReconnect = false;
379
379
  },
380
- updateCompanyProductServices: {
381
- reducer(draft, action) {
382
- draft.managementView.productServicesUpdateStatusByCompanyId[action.payload.companyId] = {
383
- fetchState: 'In-Progress',
384
- error: undefined,
385
- };
386
- },
387
- prepare(companyId, services) {
388
- return { payload: { companyId, services } };
389
- },
390
- },
391
- updateCompanyProductServicesSuccess(draft, action) {
392
- draft.managementView.productServicesUpdateStatusByCompanyId[action.payload.companyId] = {
393
- fetchState: 'Completed',
394
- error: undefined,
395
- };
396
- },
397
- updateCompanyProductServicesFailure: {
398
- reducer(draft, action) {
399
- draft.managementView.productServicesUpdateStatusByCompanyId[action.payload.companyId] = {
400
- fetchState: 'Error',
401
- error: action.payload.status,
402
- };
403
- },
404
- prepare(companyId, status) {
405
- return { payload: { companyId, status } };
406
- },
407
- },
408
- updateCompanyQboRealmId: {
409
- reducer(draft, action) {
410
- draft.managementView.qboRealmIdUpdateStatusByCompanyId[action.payload.companyId] = {
411
- fetchState: 'In-Progress',
412
- error: undefined,
413
- };
414
- },
415
- // qboRealmId omitted -> reset (the epic sends null); a value -> update.
416
- prepare(companyId, qboRealmId) {
417
- return { payload: { companyId, qboRealmId } };
418
- },
419
- },
420
- updateCompanyQboRealmIdSuccess(draft, action) {
421
- draft.managementView.qboRealmIdUpdateStatusByCompanyId[action.payload.companyId] = {
422
- fetchState: 'Completed',
423
- error: undefined,
424
- };
425
- },
426
- updateCompanyQboRealmIdFailure: {
427
- reducer(draft, action) {
428
- draft.managementView.qboRealmIdUpdateStatusByCompanyId[action.payload.companyId] = {
429
- fetchState: 'Error',
430
- error: action.payload.status,
431
- };
432
- },
433
- prepare(companyId, status) {
434
- return { payload: { companyId, status } };
435
- },
436
- },
437
380
  updateCapitalizationAccountThreshold: {
438
381
  prepare(companyId, accountId, threshold, dismissOnboardingForAccount, allOverrides) {
439
382
  return {
@@ -757,5 +700,5 @@ const companyView = createSlice({
757
700
  });
758
701
  },
759
702
  });
760
- export const { fetchCompanyPassportView, fetchAllCockpitViews, fetchOnboardingView, fetchManagementView, fetchSubscriptionView, fetchPortfolioView, fetchCompanyManagementView, companyManagementSaveUpdates, companyManagementSavePendingUpdates, companyManagementDiscardUpdates, companyManagementSaveUpdatesSuccess, companyManagementSaveUpdatesFailure, updateCompanyViewOnSuccess, updateCompanyViewOnFailure, fetchCompanyPortfolioView, fetchZeniUsers, updateZeniUsersOnSuccess, updateZeniUsersOnFailure, clearCompanyView, updateCompanyPortfolioUIState, updateCompanyManagementUIState, companyPassportSaveDataInLocalStore, deleteCompanyOfficerInLocalStore, companyPassportClearDataInLocalStore, companyPassportUpdateCompanyDetails, companyPassportUpdateCompanyDetailsSuccess, companyPassportUpdateCompanyDetailsFailure, updateAccountingClassesEnabled, updateAccountingClassesEnabledSuccess, updateAccountingClassesEnabledFailure, updateCompanyProductServices, updateCompanyProductServicesSuccess, updateCompanyProductServicesFailure, updateCompanyQboRealmId, updateCompanyQboRealmIdSuccess, updateCompanyQboRealmIdFailure, enableAccountingProjects, resumeEnableAccountingProjects, disableAccountingProjects, updateAccountingProjectsEnabledSuccess, updateAccountingProjectsEnabledFailure, requestQboProjectsReconnect, clearQboProjectsReconnectRequest, updateCapitalizationAccountThreshold, updateCapitalizationAccountThresholdSuccess, updateCapitalizationAccountThresholdFailure, dismissCapitalizationOnboarding, companyPassportUpdatePrimaryContact, companyPassportUpdatePrimaryContactSuccess, companyPassportUpdatePrimaryContactFailure, companyPassportUpdateCompanyOfficer, companyPassportUpdateCompanyOfficerSuccess, companyPassportUpdateCompanyOfficerFailure, companyPassportCreateCompanyOfficers, companyPassportCreateCompanyOfficersSuccess, companyPassportCreateCompanyOfficersFailure, updateCompanyPassportLocalStoreData, saveIndustryAndIncDateInCompanyPassportLocalStore, saveCompanyPassportDetails, fetchParentSubsidiaryManagementView, updateParentSubsidiaryView, updateParentSubsidiaryViewOnFailure, updateCompanyDownloadState, fetchCompanyMetaData, updateCompanyMetaDataOnSuccess, updateCompanyMetaDataOnFailure, updateMetaDataOnSendMonthEndReport, } = companyView.actions;
703
+ export const { fetchCompanyPassportView, fetchAllCockpitViews, fetchOnboardingView, fetchManagementView, fetchSubscriptionView, fetchPortfolioView, fetchCompanyManagementView, companyManagementSaveUpdates, companyManagementSavePendingUpdates, companyManagementDiscardUpdates, companyManagementSaveUpdatesSuccess, companyManagementSaveUpdatesFailure, updateCompanyViewOnSuccess, updateCompanyViewOnFailure, fetchCompanyPortfolioView, fetchZeniUsers, updateZeniUsersOnSuccess, updateZeniUsersOnFailure, clearCompanyView, updateCompanyPortfolioUIState, updateCompanyManagementUIState, companyPassportSaveDataInLocalStore, deleteCompanyOfficerInLocalStore, companyPassportClearDataInLocalStore, companyPassportUpdateCompanyDetails, companyPassportUpdateCompanyDetailsSuccess, companyPassportUpdateCompanyDetailsFailure, updateAccountingClassesEnabled, updateAccountingClassesEnabledSuccess, updateAccountingClassesEnabledFailure, enableAccountingProjects, resumeEnableAccountingProjects, disableAccountingProjects, updateAccountingProjectsEnabledSuccess, updateAccountingProjectsEnabledFailure, requestQboProjectsReconnect, clearQboProjectsReconnectRequest, updateCapitalizationAccountThreshold, updateCapitalizationAccountThresholdSuccess, updateCapitalizationAccountThresholdFailure, dismissCapitalizationOnboarding, companyPassportUpdatePrimaryContact, companyPassportUpdatePrimaryContactSuccess, companyPassportUpdatePrimaryContactFailure, companyPassportUpdateCompanyOfficer, companyPassportUpdateCompanyOfficerSuccess, companyPassportUpdateCompanyOfficerFailure, companyPassportCreateCompanyOfficers, companyPassportCreateCompanyOfficersSuccess, companyPassportCreateCompanyOfficersFailure, updateCompanyPassportLocalStoreData, saveIndustryAndIncDateInCompanyPassportLocalStore, saveCompanyPassportDetails, fetchParentSubsidiaryManagementView, updateParentSubsidiaryView, updateParentSubsidiaryViewOnFailure, updateCompanyDownloadState, fetchCompanyMetaData, updateCompanyMetaDataOnSuccess, updateCompanyMetaDataOnFailure, updateMetaDataOnSendMonthEndReport, } = companyView.actions;
761
704
  export default companyView.reducer;
@@ -2,7 +2,6 @@ import { createSelector } from '@reduxjs/toolkit';
2
2
  import recordGet from 'lodash/get';
3
3
  import orderBy from 'lodash/orderBy';
4
4
  import { getSortOrder } from '../../../commonPayloadTypes/sortOrderPayload';
5
- import { getCompanyByCompanyId } from '../../../entity/company/companySelector';
6
5
  import { customerRatingValues, teamRatingValues, } from '../../../entity/customerSatisfaction/customerSatisfactionState';
7
6
  import { getUserByUserId, getUserName, getUserNameById, } from '../../../entity/user/userSelector';
8
7
  import { date as zeniDate } from '../../../zeniDayJS';
@@ -123,29 +122,6 @@ const getCategoryValueForCompany = (key, company) => {
123
122
  if (key === 'annualRecurringRevenue' || key === 'monthlyRecurringRevenue') {
124
123
  return company.primarySubscription?.summary.summary[key].amount.toString();
125
124
  }
126
- if (key === 'productVerticals') {
127
- const featuresActivationInfo = company.company.company.featuresActivationInfo;
128
- const enabledVerticals = [];
129
- if (featuresActivationInfo?.isBookkeepingEnabled === true) {
130
- enabledVerticals.push('bookkeeping');
131
- }
132
- if (featuresActivationInfo?.isBillPayFeatureEnabled === true) {
133
- enabledVerticals.push('billPay');
134
- }
135
- if (featuresActivationInfo?.isReimbursementFeatureEnabled === true) {
136
- enabledVerticals.push('reimbursement');
137
- }
138
- if (featuresActivationInfo?.isTaxEnabled === true) {
139
- enabledVerticals.push('tax');
140
- }
141
- if (featuresActivationInfo?.isPayrollEnabled === true) {
142
- enabledVerticals.push('payroll');
143
- }
144
- if (featuresActivationInfo?.isCfoEnabled === true) {
145
- enabledVerticals.push('cfo');
146
- }
147
- return enabledVerticals;
148
- }
149
125
  return company.company.company.managementInfo[key];
150
126
  };
151
127
  const applyAdvancedFiltersOnCompaniesList = (allCompanies, filters, filteredCompanies = [], index = 0) => {
@@ -216,8 +192,6 @@ const sortAndFilterCompanies = (sortKey, sortOrder, filterText, companies, userS
216
192
  updatedCompanies.forEach((company) => {
217
193
  switch (sortKey) {
218
194
  case 'companyName':
219
- case 'productVerticals':
220
- case 'realmId':
221
195
  companiesWithSortKeyValue.push(company);
222
196
  break;
223
197
  case 'status':
@@ -453,12 +427,6 @@ const sortAndFilterCompanies = (sortKey, sortOrder, filterText, companies, userS
453
427
  primarySortValue = (company.company.company.companyInfo.bookCloseDate ??
454
428
  zeniDate('1970-01-01T00:00:00.000Z')).valueOf();
455
429
  break;
456
- case 'productVerticals':
457
- case 'realmId':
458
- // Not a meaningful sort axis (both are cockpit action columns);
459
- // keep stable order rather than falling through to the status/group
460
- // default sort.
461
- break;
462
430
  case 'status':
463
431
  default: {
464
432
  isMultiSortApplicable = true;
@@ -512,23 +480,3 @@ export const getTotalRecurringRevenue = (companies) => companies.reduce((prev, c
512
480
  currencySymbol: '',
513
481
  },
514
482
  });
515
- export function getCompanyProductServicesUpdateStatus(state, companyId) {
516
- return (state.companyViewState.managementView
517
- .productServicesUpdateStatusByCompanyId[companyId] ?? {
518
- fetchState: 'Not-Started',
519
- error: undefined,
520
- });
521
- }
522
- export function getCompanyQboRealmIdUpdateStatus(state, companyId) {
523
- return (state.companyViewState.managementView.qboRealmIdUpdateStatusByCompanyId[companyId] ?? {
524
- fetchState: 'Not-Started',
525
- error: undefined,
526
- });
527
- }
528
- // Cockpit populates companyState (with a companyId->tenantId mapping) but not
529
- // tenantState, so resolve from company first and fall back to tenant.
530
- export function resolveTenantIdByCompanyId(state, companyId) {
531
- return (getCompanyByCompanyId(state.companyState, companyId)?.company.companyInfo
532
- .tenantId ??
533
- Object.values(state.tenantState.tenantsById).find((tenant) => tenant?.companyId === companyId)?.tenantId);
534
- }
@@ -1,4 +1,4 @@
1
- import { stringToUnion, stringToUnionStrict, } from '../../../commonStateTypes/stringToUnion';
1
+ import { stringToUnion } from '../../../commonStateTypes/stringToUnion';
2
2
  const ALL_PORTFOLIO_SORT_KEYS = [
3
3
  'companyName',
4
4
  'cashBalance',
@@ -13,8 +13,6 @@ const ALL_MANAGEMENT_SORT_KEYS = [
13
13
  'status',
14
14
  'group',
15
15
  'plans',
16
- 'productVerticals',
17
- 'realmId',
18
16
  'controller',
19
17
  'customerSuccessManager',
20
18
  'reviewer',
@@ -85,13 +83,3 @@ export const MANAGEMENT_STATUS_CODES = [
85
83
  'terminated',
86
84
  ];
87
85
  export const toManagementStatusCodeType = (v) => stringToUnion(v, MANAGEMENT_STATUS_CODES);
88
- export const ALL_PRODUCT_VERTICALS = [
89
- 'bookkeeping',
90
- 'billPay',
91
- 'reimbursement',
92
- 'tax',
93
- 'payroll',
94
- 'cfo',
95
- ];
96
- export const toProductVertical = (v) => stringToUnion(v, ALL_PRODUCT_VERTICALS);
97
- export const toProductVerticalStrict = (v) => stringToUnionStrict(v ?? '', ALL_PRODUCT_VERTICALS);
@@ -19,8 +19,6 @@ export function getCompanyManagementPendingUpdates(companyId, state) {
19
19
  export const initialCompanyManagementView = {
20
20
  ...initialCommonState,
21
21
  updatesByCompanyId: {},
22
- productServicesUpdateStatusByCompanyId: {},
23
- qboRealmIdUpdateStatusByCompanyId: {},
24
22
  uiState: {
25
23
  sortKey: 'status',
26
24
  sortOrder: 'ascending',
@@ -1,7 +1,6 @@
1
- import { from } from 'rxjs';
1
+ import { of } from 'rxjs';
2
2
  import { catchError, filter, mergeMap } from 'rxjs/operators';
3
3
  import { updateInvoicingCreditNotes } from '../../../entity/invoicing/creditNote/creditNoteReducer';
4
- import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
5
4
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
6
5
  import { localDataToCreateCreditNotePayload, } from './createCreditNotePayload';
7
6
  import { createCreditNoteFailure, createCreditNoteSuccess, submitCreateCreditNote, } from './createCreditNoteReducer';
@@ -16,28 +15,9 @@ export const createCreditNoteEpic = (actions$, state$, zeniAPI) => actions$.pipe
16
15
  return [
17
16
  updateInvoicingCreditNotes([response.data], 'merge'),
18
17
  createCreditNoteSuccess({ creditNoteId: response.data.id }),
19
- openSnackbar({
20
- messageSection: 'invoicing_credit_note_saved',
21
- messageText: 'success',
22
- type: 'success',
23
- }),
24
18
  ];
25
19
  }
26
- return from([
27
- createCreditNoteFailure(response.status),
28
- openSnackbar({
29
- messageSection: 'invoicing_credit_note_saved',
30
- messageText: 'failed',
31
- type: 'error',
32
- }),
33
- ]);
34
- }), catchError((error) => from([
35
- createCreditNoteFailure(createZeniAPIStatus('Unexpected Error', 'Create credit note REST API call errored out ' +
36
- JSON.stringify(error))),
37
- openSnackbar({
38
- messageSection: 'invoicing_credit_note_saved',
39
- messageText: 'failed',
40
- type: 'error',
41
- }),
42
- ])));
20
+ return of(createCreditNoteFailure(response.status));
21
+ }), catchError((error) => of(createCreditNoteFailure(createZeniAPIStatus('Unexpected Error', 'Create credit note REST API call errored out ' +
22
+ JSON.stringify(error))))));
43
23
  }));
@@ -1,9 +1,8 @@
1
- import { from } from 'rxjs';
1
+ import { of } from 'rxjs';
2
2
  import { catchError, filter, mergeMap } from 'rxjs/operators';
3
3
  import { updateAddresses } from '../../../entity/address/addressReducer';
4
4
  import { extractInvoicingInvoiceAddresses } from '../../../entity/invoicing/invoice/invoicePayload';
5
5
  import { updateInvoices } from '../../../entity/invoicing/invoice/invoiceReducer';
6
- import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
7
6
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
8
7
  import { addInvoiceToList } from '../invoiceList/invoiceListReducer';
9
8
  import { createInvoice, createInvoiceFailure, createInvoiceSuccess, } from './createInvoiceReducer';
@@ -23,28 +22,9 @@ export const createInvoiceEpic = (actions$, _state$, zeniAPI) => actions$.pipe(f
23
22
  status: response.data.status,
24
23
  }),
25
24
  createInvoiceSuccess({ invoiceId: response.data.id }),
26
- openSnackbar({
27
- messageSection: 'invoicing_invoice_saved',
28
- messageText: 'success',
29
- type: 'success',
30
- }),
31
25
  ];
32
26
  }
33
- return from([
34
- createInvoiceFailure(response.status),
35
- openSnackbar({
36
- messageSection: 'invoicing_invoice_saved',
37
- messageText: 'failed',
38
- type: 'error',
39
- }),
40
- ]);
41
- }), catchError((error) => from([
42
- createInvoiceFailure(createZeniAPIStatus('Unexpected Error', 'Create invoice REST API call errored out ' +
43
- JSON.stringify(error))),
44
- openSnackbar({
45
- messageSection: 'invoicing_invoice_saved',
46
- messageText: 'failed',
47
- type: 'error',
48
- }),
49
- ])));
27
+ return of(createInvoiceFailure(response.status));
28
+ }), catchError((error) => of(createInvoiceFailure(createZeniAPIStatus('Unexpected Error', 'Create invoice REST API call errored out ' +
29
+ JSON.stringify(error))))));
50
30
  }));
@@ -1,52 +1,25 @@
1
- import { getAddressByAddressId } from '../../../entity/address/addressSelector';
2
1
  import { getInvoicingCatalogListView, getInvoicingCatalogPrices, } from '../invoicingCatalogListView/invoicingCatalogListViewSelector';
3
2
  import { getInvoicingCustomerListView } from '../invoicingCustomerListView/invoicingCustomerListViewSelector';
4
3
  import { getInvoicingSettings } from '../settingsView/settingsViewSelector';
5
- /**
6
- * Display name for a customer option: company, else the full name, else the
7
- * email, else the raw id.
8
- */
9
- const customerDisplayName = (customer) => {
10
- const fullName = [customer.firstName, customer.lastName]
11
- .filter((part) => part != null && part.trim() !== '')
12
- .join(' ')
13
- .trim();
14
- const company = customer.company?.trim() ?? '';
15
- const email = customer.email?.trim() ?? '';
16
- return company !== ''
17
- ? company
18
- : fullName !== ''
19
- ? fullName
20
- : email !== ''
21
- ? email
22
- : customer.id;
23
- };
24
4
  /**
25
5
  * Single bundled view for the create-invoice screen — web-ui consumes only this.
26
6
  * Carries the form draft (`localData`), the option sources the form needs
27
- * (customer picker rows, catalog plan names, products, settings), the
28
- * create-invoice fetch state/error, and the id of the invoice last created
29
- * (`savedInvoiceId`, to navigate on success).
7
+ * (customers, catalog plans/products, settings), the create-invoice fetch
8
+ * state/error, and the id of the invoice last created (`savedInvoiceId`, to
9
+ * navigate on success). Returns raw entity lists; the screen maps them to its
10
+ * option shapes.
30
11
  */
31
12
  export const getCreateInvoiceFormView = (state) => {
32
13
  const createInvoiceState = state.invoicingCreateInvoiceState;
33
14
  const catalogListView = getInvoicingCatalogListView(state);
15
+ const plans = getInvoicingCatalogPrices(catalogListView.plans);
34
16
  return {
35
- customers: getInvoicingCustomerListView(state).customers.map((customer) => ({
36
- billingAddress: customer.billingAddressId != null
37
- ? getAddressByAddressId(state.addressState, customer.billingAddressId)
38
- : undefined,
39
- email: customer.email,
40
- id: customer.id,
41
- name: customerDisplayName(customer),
42
- })),
17
+ customers: getInvoicingCustomerListView(state).customers,
43
18
  localData: createInvoiceState.formDraft,
44
- planNames: catalogListView.plans.flatMap((plan) => (plan.subFamilies ?? [])
45
- .filter((subFamily) => (subFamily.name ?? '') !== '')
46
- .map((subFamily) => ({
47
- planName: plan.name ?? '',
48
- subFamilyName: subFamily.name ?? '',
49
- }))),
19
+ planNames: plans
20
+ .map((plan) => plan.name ?? '')
21
+ .filter((name) => name !== ''),
22
+ plans,
50
23
  products: getInvoicingCatalogPrices(catalogListView.products),
51
24
  savedInvoiceId: createInvoiceState.createdInvoiceId,
52
25
  settings: getInvoicingSettings(state),
@@ -1,28 +1,11 @@
1
- import { from } from 'rxjs';
1
+ import { of } from 'rxjs';
2
2
  import { catchError, filter, mergeMap } from 'rxjs/operators';
3
3
  import { updateInvoicingCoupons } from '../../../entity/invoicing/coupon/couponReducer';
4
- import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
5
4
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
6
5
  import { runInvoicingDiscountAction, runInvoicingDiscountActionFailure, runInvoicingDiscountActionSuccess, } from './discountActionReducer';
7
- /** Snackbar copy per action kind; unlisted kinds run without one. */
8
- const SNACKBAR_SECTION_BY_KIND = {
9
- archive: 'invoicing_discount_archive',
10
- delete: 'invoicing_discount_delete',
11
- unarchive: 'invoicing_discount_unarchive',
12
- };
13
6
  export const runInvoicingDiscountActionEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(runInvoicingDiscountAction.match), mergeMap((action) => {
14
7
  const { action: kind, id } = action.payload;
15
8
  const requestBody = { action: kind };
16
- const snackbarSection = SNACKBAR_SECTION_BY_KIND[kind];
17
- const snackbar = (messageText) => snackbarSection == null
18
- ? []
19
- : [
20
- openSnackbar({
21
- messageSection: snackbarSection,
22
- messageText,
23
- type: messageText === 'success' ? 'success' : 'error',
24
- }),
25
- ];
26
9
  const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/discounts/${encodeURIComponent(id)}/actions`;
27
10
  return zeniAPI
28
11
  .postAndGetJSON(apiUrl, requestBody)
@@ -31,22 +14,15 @@ export const runInvoicingDiscountActionEpic = (actions$, _state$, zeniAPI) => ac
31
14
  return [
32
15
  updateInvoicingCoupons([response.data], 'merge'),
33
16
  runInvoicingDiscountActionSuccess({ id }),
34
- ...snackbar('success'),
35
17
  ];
36
18
  }
37
- return from([
38
- runInvoicingDiscountActionFailure({
39
- error: response.status,
40
- id,
41
- }),
42
- ...snackbar('failed'),
43
- ]);
44
- }), catchError((error) => from([
45
- runInvoicingDiscountActionFailure({
46
- error: createZeniAPIStatus('Unexpected Error', 'Discount action REST API call errored out ' +
47
- JSON.stringify(error)),
19
+ return of(runInvoicingDiscountActionFailure({
20
+ error: response.status,
48
21
  id,
49
- }),
50
- ...snackbar('failed'),
51
- ])));
22
+ }));
23
+ }), catchError((error) => of(runInvoicingDiscountActionFailure({
24
+ error: createZeniAPIStatus('Unexpected Error', 'Discount action REST API call errored out ' +
25
+ JSON.stringify(error)),
26
+ id,
27
+ }))));
52
28
  }));
@@ -1,29 +1,10 @@
1
- import { from } from 'rxjs';
1
+ import { of } from 'rxjs';
2
2
  import { catchError, filter, mergeMap } from 'rxjs/operators';
3
3
  import { updateInvoicingDunningCases } from '../../../entity/invoicing/dunningCase/dunningCaseReducer';
4
- import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
5
4
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
6
5
  import { runInvoicingDunningAction, runInvoicingDunningActionFailure, runInvoicingDunningActionSuccess, } from './dunningActionReducer';
7
- /**
8
- * Snackbar copy is per action kind; anything not listed here runs without one.
9
- */
10
- const SNACKBAR_SECTION_BY_KIND = {
11
- cancel: 'invoicing_dunning_cancel',
12
- resolve: 'invoicing_dunning_case_resolved',
13
- retry: 'invoicing_dunning_retry',
14
- };
15
6
  export const runInvoicingDunningActionEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(runInvoicingDunningAction.match), mergeMap((action) => {
16
7
  const { action: kind, body, id } = action.payload;
17
- const snackbarSection = SNACKBAR_SECTION_BY_KIND[kind];
18
- const snackbar = (messageText) => snackbarSection == null
19
- ? []
20
- : [
21
- openSnackbar({
22
- messageSection: snackbarSection,
23
- messageText,
24
- type: messageText === 'success' ? 'success' : 'error',
25
- }),
26
- ];
27
8
  const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/dunning/${encodeURIComponent(id)}/${kind}`;
28
9
  return zeniAPI
29
10
  .postAndGetJSON(apiUrl, (body ?? {}))
@@ -32,22 +13,15 @@ export const runInvoicingDunningActionEpic = (actions$, _state$, zeniAPI) => act
32
13
  return [
33
14
  updateInvoicingDunningCases([response.data], 'merge'),
34
15
  runInvoicingDunningActionSuccess({ id }),
35
- ...snackbar('success'),
36
16
  ];
37
17
  }
38
- return from([
39
- runInvoicingDunningActionFailure({
40
- error: response.status,
41
- id,
42
- }),
43
- ...snackbar('failed'),
44
- ]);
45
- }), catchError((error) => from([
46
- runInvoicingDunningActionFailure({
47
- error: createZeniAPIStatus('Unexpected Error', 'Dunning action REST API call errored out ' +
48
- JSON.stringify(error)),
18
+ return of(runInvoicingDunningActionFailure({
19
+ error: response.status,
49
20
  id,
50
- }),
51
- ...snackbar('failed'),
52
- ])));
21
+ }));
22
+ }), catchError((error) => of(runInvoicingDunningActionFailure({
23
+ error: createZeniAPIStatus('Unexpected Error', 'Dunning action REST API call errored out ' +
24
+ JSON.stringify(error)),
25
+ id,
26
+ }))));
53
27
  }));
@@ -116,21 +116,17 @@ export const catalogDetailEditValuesToSavePayload = (values, itemType = 'plan',
116
116
  export const createSubFamilyFormToPayload = (itemId, itemType, values) => {
117
117
  const name = values.name.trim();
118
118
  const priceCode = trimOrUndefined(values.priceCode) ?? toProductCode(name);
119
- const tiered = isTieredCatalogPricingModel(values.pricingModel);
120
119
  const payload = {
121
120
  currency_code: 'USD',
122
121
  free_quantity: Number(values.freeQuantity) || 0,
123
122
  is_taxable: true,
124
123
  item_id: itemId,
125
124
  name,
126
- price: tiered ? 0 : (values.priceDollars?.amount ?? 0),
125
+ price: values.priceDollars?.amount ?? 0,
127
126
  price_code: priceCode,
128
127
  pricing_model: values.pricingModel || 'flat_fee',
129
128
  show_description_in_invoices: true,
130
129
  };
131
- if (tiered) {
132
- payload.tiers = (values.tiers ?? []).map(tierToPayload);
133
- }
134
130
  const description = trimOrUndefined(values.description);
135
131
  if (description != null) {
136
132
  payload.description = description;