@zeniai/client-epic-state 5.2.31 → 5.2.32-betaAK0

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 (120) hide show
  1. package/lib/epic.d.ts +6 -6
  2. package/lib/epic.js +7 -8
  3. package/lib/esm/epic.js +6 -7
  4. package/lib/esm/index.js +9 -10
  5. package/lib/esm/reducer.js +12 -12
  6. package/lib/esm/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.js +29 -11
  7. package/lib/esm/view/invoicing/customerPaymentMethod/customerPaymentMethodEpic.js +1 -1
  8. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +1 -1
  9. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer.js +1 -24
  10. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector.js +10 -36
  11. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogSubFamilyEpics.js +2 -21
  12. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/saveInvoicingCatalogItemEpic.js +11 -33
  13. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +9 -1
  14. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewSelector.js +2 -0
  15. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/initializeInvoicingCustomerAddressEpic.js +1 -1
  16. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.js +15 -0
  17. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/fetchInvoicingSubscriptionFormPageEpic.js +1 -1
  18. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/initializeInvoicingSubscriptionAddressEpic.js +1 -1
  19. package/lib/esm/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewEpics.js → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewEpics.js} +1 -1
  20. package/lib/esm/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewReducer.js → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewReducer.js} +4 -4
  21. package/lib/esm/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.js → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewSelector.js} +2 -4
  22. package/lib/esm/view/invoicing/{invoicingCouponDetailView → invoicingCouponRecordView}/fetchInvoicingCouponDetailEpic.js +1 -1
  23. package/lib/esm/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewReducer.js → invoicingCouponRecordView/invoicingCouponRecordViewReducer.js} +4 -4
  24. package/lib/esm/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewSelector.js → invoicingCouponRecordView/invoicingCouponRecordViewSelector.js} +2 -2
  25. package/lib/esm/view/invoicing/{invoicingCustomerDetailView → invoicingCustomerRecordView}/fetchInvoicingCustomerDetailEpic.js +1 -1
  26. package/lib/esm/view/invoicing/{invoicingCustomerDetailView → invoicingCustomerRecordView}/fetchInvoicingCustomerDetailPageEpic.js +2 -2
  27. package/lib/esm/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewReducer.js → invoicingCustomerRecordView/invoicingCustomerRecordViewReducer.js} +4 -4
  28. package/lib/esm/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewSelector.js → invoicingCustomerRecordView/invoicingCustomerRecordViewSelector.js} +3 -3
  29. package/lib/esm/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewEpics.js → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewEpics.js} +1 -1
  30. package/lib/esm/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewReducer.js → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewReducer.js} +4 -4
  31. package/lib/esm/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewSelector.js → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewSelector.js} +2 -2
  32. package/lib/esm/view/invoicing/promotionalCreditAction/promotionalCreditActionEpic.js +1 -1
  33. package/lib/index.d.ts +15 -17
  34. package/lib/index.js +23 -32
  35. package/lib/reducer.d.ts +4 -4
  36. package/lib/reducer.js +12 -12
  37. package/lib/rootStateTypes.d.ts +8 -8
  38. package/lib/view/expenseAutomationView/epics/jeSchedule/fetchJeSchedulesEpic.js +29 -11
  39. package/lib/view/invoicing/createInvoice/createInvoiceSelector.d.ts +2 -2
  40. package/lib/view/invoicing/customerPaymentMethod/customerPaymentMethodEpic.d.ts +1 -1
  41. package/lib/view/invoicing/customerPaymentMethod/customerPaymentMethodEpic.js +2 -2
  42. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.d.ts +1 -1
  43. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +1 -1
  44. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer.d.ts +3 -19
  45. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer.js +2 -25
  46. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector.d.ts +11 -11
  47. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector.js +11 -38
  48. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewState.d.ts +4 -27
  49. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogSubFamilyEpics.d.ts +2 -3
  50. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogSubFamilyEpics.js +2 -22
  51. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/saveInvoicingCatalogItemEpic.d.ts +2 -2
  52. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/saveInvoicingCatalogItemEpic.js +9 -31
  53. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.d.ts +12 -1
  54. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +9 -1
  55. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewSelector.d.ts +8 -0
  56. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewSelector.js +2 -0
  57. package/lib/view/invoicing/editInvoicingCustomerDetailView/initializeInvoicingCustomerAddressEpic.d.ts +1 -1
  58. package/lib/view/invoicing/editInvoicingCustomerDetailView/initializeInvoicingCustomerAddressEpic.js +2 -2
  59. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.d.ts +11 -2
  60. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.js +15 -0
  61. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/fetchInvoicingSubscriptionFormPageEpic.d.ts +1 -1
  62. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/fetchInvoicingSubscriptionFormPageEpic.js +2 -2
  63. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/initializeInvoicingSubscriptionAddressEpic.d.ts +1 -1
  64. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/initializeInvoicingSubscriptionAddressEpic.js +2 -2
  65. package/lib/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewEpics.d.ts → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewEpics.d.ts} +1 -1
  66. package/lib/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewEpics.js → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewEpics.js} +5 -5
  67. package/lib/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewReducer.d.ts → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewReducer.d.ts} +5 -5
  68. package/lib/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewReducer.js → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewReducer.js} +4 -4
  69. package/lib/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.d.ts → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewSelector.d.ts} +3 -5
  70. package/lib/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.js → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewSelector.js} +4 -6
  71. package/lib/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewState.d.ts → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewState.d.ts} +1 -1
  72. package/lib/view/invoicing/{invoicingCouponDetailView → invoicingCouponRecordView}/fetchInvoicingCouponDetailEpic.d.ts +1 -1
  73. package/lib/view/invoicing/{invoicingCouponDetailView → invoicingCouponRecordView}/fetchInvoicingCouponDetailEpic.js +5 -5
  74. package/lib/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewReducer.d.ts → invoicingCouponRecordView/invoicingCouponRecordViewReducer.d.ts} +6 -6
  75. package/lib/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewReducer.js → invoicingCouponRecordView/invoicingCouponRecordViewReducer.js} +4 -4
  76. package/lib/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewSelector.d.ts → invoicingCouponRecordView/invoicingCouponRecordViewSelector.d.ts} +2 -2
  77. package/lib/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewSelector.js → invoicingCouponRecordView/invoicingCouponRecordViewSelector.js} +4 -4
  78. package/lib/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewState.d.ts → invoicingCouponRecordView/invoicingCouponRecordViewState.d.ts} +1 -1
  79. package/lib/view/invoicing/{invoicingCustomerDetailView → invoicingCustomerRecordView}/fetchInvoicingCustomerDetailEpic.d.ts +1 -1
  80. package/lib/view/invoicing/{invoicingCustomerDetailView → invoicingCustomerRecordView}/fetchInvoicingCustomerDetailEpic.js +5 -5
  81. package/lib/view/invoicing/{invoicingCustomerDetailView → invoicingCustomerRecordView}/fetchInvoicingCustomerDetailPageEpic.d.ts +1 -1
  82. package/lib/view/invoicing/{invoicingCustomerDetailView → invoicingCustomerRecordView}/fetchInvoicingCustomerDetailPageEpic.js +4 -4
  83. package/lib/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewReducer.d.ts → invoicingCustomerRecordView/invoicingCustomerRecordViewReducer.d.ts} +7 -7
  84. package/lib/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewReducer.js → invoicingCustomerRecordView/invoicingCustomerRecordViewReducer.js} +4 -4
  85. package/lib/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewSelector.d.ts → invoicingCustomerRecordView/invoicingCustomerRecordViewSelector.d.ts} +2 -2
  86. package/lib/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewSelector.js → invoicingCustomerRecordView/invoicingCustomerRecordViewSelector.js} +5 -5
  87. package/lib/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewState.d.ts → invoicingCustomerRecordView/invoicingCustomerRecordViewState.d.ts} +1 -1
  88. package/lib/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewEpics.d.ts → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewEpics.d.ts} +1 -1
  89. package/lib/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewEpics.js → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewEpics.js} +5 -5
  90. package/lib/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewReducer.d.ts → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewReducer.d.ts} +5 -5
  91. package/lib/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewReducer.js → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewReducer.js} +4 -4
  92. package/lib/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewSelector.d.ts → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewSelector.d.ts} +2 -2
  93. package/lib/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewSelector.js → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewSelector.js} +4 -4
  94. package/lib/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewState.d.ts → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewState.d.ts} +1 -1
  95. package/lib/view/invoicing/promotionalCreditAction/promotionalCreditActionEpic.d.ts +1 -1
  96. package/lib/view/invoicing/promotionalCreditAction/promotionalCreditActionEpic.js +2 -2
  97. package/package.json +71 -38
  98. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +0 -191
  99. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.d.ts +0 -46
  100. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +0 -198
  101. /package/lib/esm/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewPayload.js → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewPayload.js} +0 -0
  102. /package/lib/esm/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewState.js → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewState.js} +0 -0
  103. /package/lib/esm/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewPayload.js → invoicingCouponRecordView/invoicingCouponRecordViewPayload.js} +0 -0
  104. /package/lib/esm/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewState.js → invoicingCouponRecordView/invoicingCouponRecordViewState.js} +0 -0
  105. /package/lib/esm/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewPayload.js → invoicingCustomerRecordView/invoicingCustomerRecordViewPayload.js} +0 -0
  106. /package/lib/esm/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewState.js → invoicingCustomerRecordView/invoicingCustomerRecordViewState.js} +0 -0
  107. /package/lib/esm/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewPayload.js → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewPayload.js} +0 -0
  108. /package/lib/esm/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewState.js → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewState.js} +0 -0
  109. /package/lib/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewPayload.d.ts → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewPayload.d.ts} +0 -0
  110. /package/lib/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewPayload.js → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewPayload.js} +0 -0
  111. /package/lib/view/invoicing/{invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewState.js → invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewState.js} +0 -0
  112. /package/lib/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewPayload.d.ts → invoicingCouponRecordView/invoicingCouponRecordViewPayload.d.ts} +0 -0
  113. /package/lib/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewPayload.js → invoicingCouponRecordView/invoicingCouponRecordViewPayload.js} +0 -0
  114. /package/lib/view/invoicing/{invoicingCouponDetailView/invoicingCouponDetailViewState.js → invoicingCouponRecordView/invoicingCouponRecordViewState.js} +0 -0
  115. /package/lib/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewPayload.d.ts → invoicingCustomerRecordView/invoicingCustomerRecordViewPayload.d.ts} +0 -0
  116. /package/lib/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewPayload.js → invoicingCustomerRecordView/invoicingCustomerRecordViewPayload.js} +0 -0
  117. /package/lib/view/invoicing/{invoicingCustomerDetailView/invoicingCustomerDetailViewState.js → invoicingCustomerRecordView/invoicingCustomerRecordViewState.js} +0 -0
  118. /package/lib/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewPayload.d.ts → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewPayload.d.ts} +0 -0
  119. /package/lib/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewPayload.js → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewPayload.js} +0 -0
  120. /package/lib/view/invoicing/{invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewState.js → invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewState.js} +0 -0
@@ -1,44 +1,9 @@
1
1
  import { createSelector } from '@reduxjs/toolkit';
2
2
  import { getInvoicingPlanById, getInvoicingPlansByIds, } from '../../../entity/invoicing/plan/planSelector';
3
+ import { getInvoicingCatalogItemRecord, } from '../invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewSelector';
3
4
  import { getInvoicingConfigView, invoicingFieldHelpForGroup, } from '../invoicingConfigView/invoicingConfigViewSelector';
4
5
  import { getInvoicingQboView, isInvoicingAccountingPickerDataLoading, isInvoicingQboConnected, } from '../invoicingQboView/invoicingQboViewSelector';
5
- import { planToCatalogDetailEditValues } from './catalogDetailEditPayload';
6
6
  import { INVOICING_CATALOG_APPLICABILITY_VALUES, INVOICING_CATALOG_PRICING_MODEL_VALUES, INVOICING_CATALOG_PRORATION_VALUES, INVOICING_CATALOG_TIER_TYPE_VALUES, entityToInvoicingCatalogItemFormLocalData, } from './invoicingCatalogItemFormConfig';
7
- /** An unsaved item's inline-edit draft, before the record has loaded. */
8
- export const initialCatalogDetailEditValues = () => ({
9
- applicableItems: [],
10
- description: '',
11
- enabledForCheckout: true,
12
- enabledInPortal: true,
13
- giftClaimRedirectUrl: '',
14
- includedInMrr: true,
15
- isGiftable: false,
16
- isShippable: false,
17
- itemApplicability: 'all',
18
- metered: false,
19
- name: '',
20
- productCode: '',
21
- subFamilies: [],
22
- unit: '',
23
- usageCalculation: 'sum_of_usages',
24
- });
25
- /**
26
- * The detail page's inline-edit form data: the stored draft once the user has
27
- * touched the form, seeded from the loaded record until then. Memoized so the
28
- * page receives a stable value — recomputing it per store change would reseed
29
- * the form mid-edit and drop what the user had typed.
30
- */
31
- export const getInvoicingCatalogItemDetailEditLocalData = createSelector([
32
- (state, id) => id != null
33
- ? state.editInvoicingCatalogItemDetailViewState.detailEditDraftById[id]
34
- : undefined,
35
- (state, id) => id != null
36
- ? getInvoicingPlanById(state.invoicingPlanState, id)
37
- : undefined,
38
- ], (storedDraft, plan) => storedDraft ??
39
- (plan != null
40
- ? planToCatalogDetailEditValues(plan)
41
- : initialCatalogDetailEditValues()));
42
7
  export const getEditInvoicingCatalogItemDetailViewState = (state) => ({
43
8
  fetchState: state.editInvoicingCatalogItemDetailViewState.fetchState,
44
9
  error: state.editInvoicingCatalogItemDetailViewState.error,
@@ -89,7 +54,16 @@ export const getInvoicingCatalogItemFormView = (state, id) => {
89
54
  ? getInvoicingQboView(state)
90
55
  : undefined;
91
56
  const { billingPeriodUnitOptions, catalogItemTypeOptions, catalogTierTypeOptionsByPricingModel, catalogTrialEndActionOptions, catalogTrialUnitOptions, } = getInvoicingConfigView(state);
57
+ // In create mode there is no record to load, so the record view is only
58
+ // consulted when editing an existing item.
59
+ const recordView = id != null ? getInvoicingCatalogItemRecord(state, 'plan', id) : undefined;
92
60
  return {
61
+ catalogItemLifecycleActionOptions: recordView?.catalogItemLifecycleActionOptions ?? [],
62
+ catalogProductLifecycleActionOptions: recordView?.catalogProductLifecycleActionOptions ?? [],
63
+ recordState: {
64
+ error: recordView?.error,
65
+ fetchState: recordView?.fetchState ?? 'Not-Started',
66
+ },
93
67
  fieldHelp: invoicingFieldHelpForGroup(state, 'catalog'),
94
68
  isQboPickerDataLoading: isInvoicingAccountingPickerDataLoading(state),
95
69
  qboAccountHierarchy: qboView?.nestedAccountHierarchy ?? [],
@@ -2,9 +2,7 @@ import { of } from 'rxjs';
2
2
  import { catchError, filter, mergeMap } from 'rxjs/operators';
3
3
  import { mergeInvoicingPlanSubFamily } from '../../../entity/invoicing/plan/planReducer';
4
4
  import { createZeniAPIStatus, isSuccessResponse, } from '../../../responsePayload';
5
- import { getInvoicingCatalogAccountingLookup } from '../invoicingQboView/invoicingQboViewSelector';
6
- import { createSubFamilyFormToPayload } from './catalogDetailEditPayload';
7
- import { archiveInvoicingCatalogSubFamily, createInvoicingCatalogSubFamily, submitInvoicingCatalogItemFormFailure, submitInvoicingCatalogItemFormSuccess, } from './editInvoicingCatalogItemDetailViewReducer';
5
+ import { archiveInvoicingCatalogSubFamily, submitInvoicingCatalogItemFormFailure, submitInvoicingCatalogItemFormSuccess, } from './editInvoicingCatalogItemDetailViewReducer';
8
6
  const subFamilySuccessActions = (parentItemId, subFamilyPayload) => [
9
7
  mergeInvoicingPlanSubFamily(parentItemId, subFamilyPayload),
10
8
  submitInvoicingCatalogItemFormSuccess({
@@ -12,23 +10,6 @@ const subFamilySuccessActions = (parentItemId, subFamilyPayload) => [
12
10
  kind: 'plan',
13
11
  }),
14
12
  ];
15
- export const createInvoicingCatalogSubFamilyEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter(createInvoicingCatalogSubFamily.match), mergeMap((action) => {
16
- const { itemType, parentItemId, values } = action.payload;
17
- const state = state$.value;
18
- // Built here so the dialog can stay in picked ids: resolving one to the
19
- // account record the payload carries needs the shared account list.
20
- const data = createSubFamilyFormToPayload(parentItemId, itemType, values, getInvoicingCatalogAccountingLookup(state));
21
- const baseUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0`;
22
- return zeniAPI
23
- .postAndGetJSON(`${baseUrl}/catalog/products`, data)
24
- .pipe(mergeMap((response) => {
25
- if (isSuccessResponse(response) && response.data != null) {
26
- return subFamilySuccessActions(parentItemId, response.data);
27
- }
28
- return of(submitInvoicingCatalogItemFormFailure(response.status));
29
- }), catchError((error) => of(submitInvoicingCatalogItemFormFailure(createZeniAPIStatus('Unexpected Error', 'Create sub-family REST API call errored out ' +
30
- JSON.stringify(error))))));
31
- }));
32
13
  export const archiveInvoicingCatalogSubFamilyEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(archiveInvoicingCatalogSubFamily.match), mergeMap((action) => {
33
14
  const { parentItemId, subFamilyId } = action.payload;
34
15
  const baseUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0`;
@@ -40,6 +21,6 @@ export const archiveInvoicingCatalogSubFamilyEpic = (actions$, _state$, zeniAPI)
40
21
  return subFamilySuccessActions(parentItemId, response.data);
41
22
  }
42
23
  return of(submitInvoicingCatalogItemFormFailure(response.status));
43
- }), catchError((error) => of(submitInvoicingCatalogItemFormFailure(createZeniAPIStatus('Unexpected Error', 'Archive sub-family REST API call errored out ' +
24
+ }), catchError((error) => of(submitInvoicingCatalogItemFormFailure(createZeniAPIStatus('Unexpected Error', 'Archive price point REST API call errored out ' +
44
25
  JSON.stringify(error))))));
45
26
  }));
@@ -1,6 +1,5 @@
1
- import { forkJoin, from } from 'rxjs';
1
+ import { from } from 'rxjs';
2
2
  import { catchError, filter, mergeMap } from 'rxjs/operators';
3
- import { getInvoicingPlanById } from '../../../entity/invoicing/plan/planSelector';
4
3
  import { mergeInvoicingPlanSubFamily, updateInvoicingPlans, } from '../../../entity/invoicing/plan/planReducer';
5
4
  import { updateInvoicingProducts } from '../../../entity/invoicing/product/productReducer';
6
5
  import { apiErrorSnackbarVariables } from '../../../entity/snackbar/snackbarApiError';
@@ -8,34 +7,19 @@ import { openSnackbar } from '../../../entity/snackbar/snackbarReducer';
8
7
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
9
8
  import { addInvoicingCatalogItem } from '../invoicingCatalogListView/invoicingCatalogListViewReducer';
10
9
  import { getInvoicingCatalogAccountingLookup } from '../invoicingQboView/invoicingQboViewSelector';
11
- import { catalogDetailEditValuesToSavePayload, } from './catalogDetailEditPayload';
12
10
  import { localDataToSaveInvoicingCatalogItemPayload, } from './editInvoicingCatalogItemDetailViewPayload';
13
- import { getInvoicingCatalogItemDetailEditLocalData } from './editInvoicingCatalogItemDetailViewSelector';
14
- import { saveInvoicingCatalogItem, submitInvoicingCatalogItemForm, submitInvoicingCatalogItemFormFailure, submitInvoicingCatalogItemFormSuccess, } from './editInvoicingCatalogItemDetailViewReducer';
15
- export const saveInvoicingCatalogItemEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter((action) => submitInvoicingCatalogItemForm.match(action) ||
16
- saveInvoicingCatalogItem.match(action)), mergeMap((action) => {
11
+ import { submitInvoicingCatalogItemForm, submitInvoicingCatalogItemFormFailure, submitInvoicingCatalogItemFormSuccess, } from './editInvoicingCatalogItemDetailViewReducer';
12
+ export const saveInvoicingCatalogItemEpic = (actions$, state$, zeniAPI) => actions$.pipe(filter((action) => submitInvoicingCatalogItemForm.match(action)), mergeMap((action) => {
17
13
  const { id } = action.payload;
18
14
  const state = state$.value;
19
15
  const accountingLookup = getInvoicingCatalogAccountingLookup(state);
20
- // Both sources are form values, turned into request bodies here so the
21
- // picked account and class become the records the service stores: the
22
- // detail page's edit form, or the create/edit form's draft.
23
- let data;
24
- let editProductUpdates;
25
- if (saveInvoicingCatalogItem.match(action)) {
26
- const plan = id != null
27
- ? getInvoicingPlanById(state.invoicingPlanState, id)
28
- : undefined;
29
- const savePayload = catalogDetailEditValuesToSavePayload(getInvoicingCatalogItemDetailEditLocalData(state, id), accountingLookup, plan?.type ?? plan?.itemType, plan?.subFamilies);
30
- data = savePayload.planData;
31
- editProductUpdates = savePayload.productUpdates;
32
- }
33
- else {
34
- const viewState = state.editInvoicingCatalogItemDetailViewState;
35
- const localData = (id != null ? viewState.editDraftById[id] : viewState.newItemDraft) ??
36
- viewState.newItemDraft;
37
- data = localDataToSaveInvoicingCatalogItemPayload(localData, id == null, accountingLookup);
38
- }
16
+ // Form values, turned into a request body here so the picked account and
17
+ // class become the records the service stores. Price points ride along
18
+ // nested, so the detail page and the create/edit form share one request.
19
+ const viewState = state.editInvoicingCatalogItemDetailViewState;
20
+ const localData = (id != null ? viewState.editDraftById[id] : viewState.newItemDraft) ??
21
+ viewState.newItemDraft;
22
+ const data = localDataToSaveInvoicingCatalogItemPayload(localData, id == null, accountingLookup);
39
23
  const baseUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0`;
40
24
  const path = id != null
41
25
  ? `${baseUrl}/catalog/plans/${encodeURIComponent(id)}`
@@ -96,13 +80,7 @@ export const saveInvoicingCatalogItemEpic = (actions$, state$, zeniAPI) => actio
96
80
  }));
97
81
  return resultActions;
98
82
  };
99
- const productUpdates = saveInvoicingCatalogItem.match(action)
100
- ? (editProductUpdates ?? [])
101
- : [];
102
- if (productUpdates.length === 0) {
103
- return completeSave([]);
104
- }
105
- return forkJoin(productUpdates.map((productUpdate) => zeniAPI.putAndGetJSON(`${baseUrl}/catalog/products/${encodeURIComponent(productUpdate.id)}`, productUpdate.data))).pipe(mergeMap(completeSave));
83
+ return completeSave([]);
106
84
  }
107
85
  return from([
108
86
  submitInvoicingCatalogItemFormFailure(response.status),
@@ -1,6 +1,7 @@
1
1
  import { getInvoicingCouponById } from '../../../entity/invoicing/coupon/couponSelector';
2
2
  import { toInvoicingFormOption, } from '../../../entity/invoicing/invoicingCommonPayload';
3
3
  import { getInvoicingConfigView, invoicingFieldHelpForGroup, } from '../invoicingConfigView/invoicingConfigViewSelector';
4
+ import { getInvoicingCouponRecord } from '../invoicingCouponRecordView/invoicingCouponRecordViewSelector';
4
5
  import { entityToInvoicingCouponFormLocalData, } from './editInvoicingCouponDetailViewState';
5
6
  /**
6
7
  * Bundled view for the discount create/edit form: the save fetch state/error,
@@ -10,9 +11,17 @@ import { entityToInvoicingCouponFormLocalData, } from './editInvoicingCouponDeta
10
11
  export const getEditInvoicingCouponDetailViewState = (state, couponId) => {
11
12
  const { error, fetchState, savedCouponId } = state.editInvoicingCouponDetailViewState;
12
13
  const { discountLifecycleActionOptions, fetchState: configFetchState } = getInvoicingConfigView(state);
14
+ // In create mode there is no record to load, so the read view is only
15
+ // consulted when editing an existing coupon.
16
+ const readView = couponId != null ? getInvoicingCouponRecord(state, couponId) : undefined;
13
17
  return {
14
18
  configFetchState,
15
19
  discountLifecycleActionOptions,
20
+ fieldHelp: invoicingFieldHelpForGroup(state, 'discount'),
21
+ recordState: {
22
+ error: readView?.error,
23
+ fetchState: readView?.fetchState ?? 'Not-Started',
24
+ },
16
25
  coupon: couponId != null
17
26
  ? getInvoicingCouponById(state.invoicingCouponState, couponId)
18
27
  : undefined,
@@ -37,7 +46,6 @@ export const getInvoicingCouponFormView = (state, couponId) => {
37
46
  : newCouponDraft;
38
47
  const { billingPeriodUnitOptions, discountApplyOnOptions, discountDurationTypeOptions, discountTypeOptions, } = getInvoicingConfigView(state);
39
48
  return {
40
- fieldHelp: invoicingFieldHelpForGroup(state, 'discount'),
41
49
  ...base,
42
50
  applyOnOptions: discountApplyOnOptions.map(toInvoicingFormOption),
43
51
  discountTypeOptions: discountTypeOptions.map(toInvoicingFormOption),
@@ -1,5 +1,6 @@
1
1
  import { getInvoicingCustomerById } from '../../../entity/invoicing/invoicingCustomer/invoicingCustomerSelector';
2
2
  import { getFormattedAddress } from '../../addressView/addressViewSelector';
3
+ import { getInvoicingCustomerRecord, } from '../invoicingCustomerRecordView/invoicingCustomerRecordViewSelector';
3
4
  import { getInvoicingConfigView, invoicingFieldHelpForGroup, } from '../invoicingConfigView/invoicingConfigViewSelector';
4
5
  import { INVOICING_CUSTOMER_BILLING_ADDRESS_TYPE, entityToInvoicingCustomerFormLocalData, } from './invoicingCustomerFormConfig';
5
6
  /**
@@ -29,6 +30,7 @@ export const getInvoicingCustomerFormView = (state, invoicingCustomerID) => {
29
30
  : undefined;
30
31
  const { customerTypeOptions, netTermDayOptions, taxabilityOptions } = getInvoicingConfigView(state);
31
32
  return {
33
+ record: getInvoicingCustomerRecord(state, invoicingCustomerID ?? ''),
32
34
  fieldHelp: invoicingFieldHelpForGroup(state, 'customer'),
33
35
  customerTypeOptions,
34
36
  localData,
@@ -3,7 +3,7 @@ import { filter, mergeMap } from 'rxjs/operators';
3
3
  import { getAddressByAddressId } from '../../../entity/address/addressSelector';
4
4
  import { getInvoicingCustomerById } from '../../../entity/invoicing/invoicingCustomer/invoicingCustomerSelector';
5
5
  import { newAddressInLocalStore } from '../../addressView/addressViewReducer';
6
- import { updateInvoicingCustomerDetail } from '../invoicingCustomerDetailView/invoicingCustomerDetailViewReducer';
6
+ import { updateInvoicingCustomerDetail } from '../invoicingCustomerRecordView/invoicingCustomerRecordViewReducer';
7
7
  import { initializeInvoicingCustomerAddress } from './editInvoicingCustomerDetailViewReducer';
8
8
  import { INVOICING_CUSTOMER_BILLING_ADDRESS_TYPE } from './invoicingCustomerFormConfig';
9
9
  /**
@@ -2,6 +2,7 @@ import { getInvoicingSubscriptionById } from '../../../entity/invoicing/invoicin
2
2
  import { getFormattedAddress } from '../../addressView/addressViewSelector';
3
3
  import { getInvoicingCouponListItems } from '../couponView/couponViewSelector';
4
4
  import { getInvoicingCatalogListView, getInvoicingCatalogPrices, } from '../invoicingCatalogListView/invoicingCatalogListViewSelector';
5
+ import { getInvoicingSubscriptionRecord } from '../invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewSelector';
5
6
  import { getInvoicingConfigView, invoicingFieldHelpForGroup, } from '../invoicingConfigView/invoicingConfigViewSelector';
6
7
  import { getInvoicingCustomerListView } from '../invoicingCustomerListView/invoicingCustomerListViewSelector';
7
8
  import { INVOICING_SUBSCRIPTION_SHIPPING_ADDRESS_TYPE, entityToInvoicingSubscriptionFormLocalData, } from './invoicingSubscriptionFormConfig';
@@ -41,7 +42,21 @@ export const getInvoicingSubscriptionFormView = (state, invoicingSubscriptionID)
41
42
  const catalogListView = getInvoicingCatalogListView(state);
42
43
  const planPrices = getInvoicingCatalogPrices(catalogListView.plans);
43
44
  const addonAndChargePrices = getInvoicingCatalogPrices(catalogListView.products);
45
+ // In create mode there is no record to load, so the record view is only
46
+ // consulted when editing an existing subscription.
47
+ const recordView = invoicingSubscriptionID != null
48
+ ? getInvoicingSubscriptionRecord(state, invoicingSubscriptionID)
49
+ : undefined;
44
50
  return {
51
+ actionState: recordView?.actionState ?? {
52
+ error: undefined,
53
+ fetchState: 'Not-Started',
54
+ },
55
+ cancelReasonCodeOptions: getInvoicingConfigView(state).subscriptionCancelReasonCodeOptions,
56
+ recordState: {
57
+ error: recordView?.error,
58
+ fetchState: recordView?.fetchState ?? 'Not-Started',
59
+ },
45
60
  fieldHelp: invoicingFieldHelpForGroup(state, 'subscription'),
46
61
  coupons: getInvoicingCouponListItems(state),
47
62
  customers: getInvoicingCustomerListView(state).customers,
@@ -3,7 +3,7 @@ import { filter, mergeMap } from 'rxjs/operators';
3
3
  import { fetchInvoicingCouponList } from '../couponView/couponViewReducer';
4
4
  import { fetchInvoicingCatalogPlanList } from '../invoicingCatalogListView/invoicingCatalogListViewReducer';
5
5
  import { fetchInvoicingCustomerList } from '../invoicingCustomerListView/invoicingCustomerListViewReducer';
6
- import { fetchInvoicingSubscriptionDetail } from '../invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewReducer';
6
+ import { fetchInvoicingSubscriptionDetail } from '../invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewReducer';
7
7
  import { fetchInvoicingSubscriptionFormPage } from './editInvoicingSubscriptionDetailViewReducer';
8
8
  /**
9
9
  * Orchestrates the subscription create/edit form: on
@@ -3,7 +3,7 @@ import { filter, mergeMap } from 'rxjs/operators';
3
3
  import { getAddressByAddressId } from '../../../entity/address/addressSelector';
4
4
  import { getInvoicingSubscriptionById } from '../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionSelector';
5
5
  import { newAddressInLocalStore } from '../../addressView/addressViewReducer';
6
- import { updateInvoicingSubscriptionDetail } from '../invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewReducer';
6
+ import { updateInvoicingSubscriptionDetail } from '../invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewReducer';
7
7
  import { initializeInvoicingSubscriptionAddress } from './editInvoicingSubscriptionDetailViewReducer';
8
8
  import { INVOICING_SUBSCRIPTION_SHIPPING_ADDRESS_TYPE } from './invoicingSubscriptionFormConfig';
9
9
  /**
@@ -2,7 +2,7 @@ import { of } from 'rxjs';
2
2
  import { catchError, filter, switchMap } from 'rxjs/operators';
3
3
  import { updateInvoicingPlans } from '../../../entity/invoicing/plan/planReducer';
4
4
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
5
- import { fetchInvoicingCatalogItemDetail, updateInvoicingCatalogItemDetail, updateInvoicingCatalogItemDetailFailure, } from './invoicingCatalogItemDetailViewReducer';
5
+ import { fetchInvoicingCatalogItemDetail, updateInvoicingCatalogItemDetail, updateInvoicingCatalogItemDetailFailure, } from './invoicingCatalogItemRecordViewReducer';
6
6
  export const fetchInvoicingCatalogItemDetailEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchInvoicingCatalogItemDetail.match), switchMap((action) => {
7
7
  const { id, kind } = action.payload;
8
8
  const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/catalog/plans/${encodeURIComponent(id)}`;
@@ -6,8 +6,8 @@ export const initialState = {
6
6
  id: undefined,
7
7
  kind: undefined,
8
8
  };
9
- const invoicingCatalogItemDetailView = createSlice({
10
- name: 'invoicingCatalogItemDetailView',
9
+ const invoicingCatalogItemRecordView = createSlice({
10
+ name: 'invoicingCatalogItemRecordView',
11
11
  initialState,
12
12
  reducers: {
13
13
  fetchInvoicingCatalogItemDetail(draft, action) {
@@ -33,5 +33,5 @@ const invoicingCatalogItemDetailView = createSlice({
33
33
  });
34
34
  },
35
35
  });
36
- export const { fetchInvoicingCatalogItemDetail, updateInvoicingCatalogItemDetail, updateInvoicingCatalogItemDetailFailure, } = invoicingCatalogItemDetailView.actions;
37
- export default invoicingCatalogItemDetailView.reducer;
36
+ export const { fetchInvoicingCatalogItemDetail, updateInvoicingCatalogItemDetail, updateInvoicingCatalogItemDetailFailure, } = invoicingCatalogItemRecordView.actions;
37
+ export default invoicingCatalogItemRecordView.reducer;
@@ -1,8 +1,7 @@
1
1
  import { getInvoicingPlanById } from '../../../entity/invoicing/plan/planSelector';
2
2
  import { getInvoicingConfigView, invoicingFieldHelpForGroup, } from '../invoicingConfigView/invoicingConfigViewSelector';
3
- import { getInvoicingCatalogItemDetailEditLocalData } from '../editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector';
4
- export const getInvoicingCatalogItemDetail = (state, _kind, id) => {
5
- const { error, fetchState } = state.invoicingCatalogItemDetailViewState;
3
+ export const getInvoicingCatalogItemRecord = (state, _kind, id) => {
4
+ const { error, fetchState } = state.invoicingCatalogItemRecordViewState;
6
5
  const { billingPeriodUnitOptions, catalogItemLifecycleActionOptions, catalogItemTypeOptions, catalogProductLifecycleActionOptions, catalogTierTypeOptionsByPricingModel, catalogTrialEndActionOptions, catalogTrialUnitOptions, fetchState: configFetchState, } = getInvoicingConfigView(state);
7
6
  return {
8
7
  fieldHelp: invoicingFieldHelpForGroup(state, 'catalog'),
@@ -11,7 +10,6 @@ export const getInvoicingCatalogItemDetail = (state, _kind, id) => {
11
10
  catalogTierTypeOptionsByPricingModel,
12
11
  configFetchState,
13
12
  periodUnitOptions: billingPeriodUnitOptions,
14
- editLocalData: getInvoicingCatalogItemDetailEditLocalData(state, id),
15
13
  plan: getInvoicingPlanById(state.invoicingPlanState, id),
16
14
  trialEndActionOptions: catalogTrialEndActionOptions,
17
15
  trialUnitOptions: catalogTrialUnitOptions,
@@ -2,7 +2,7 @@ import { of } from 'rxjs';
2
2
  import { catchError, filter, switchMap } from 'rxjs/operators';
3
3
  import { updateInvoicingCoupons } from '../../../entity/invoicing/coupon/couponReducer';
4
4
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
5
- import { fetchInvoicingCouponDetail, updateInvoicingCouponDetail, updateInvoicingCouponDetailFailure, } from './invoicingCouponDetailViewReducer';
5
+ import { fetchInvoicingCouponDetail, updateInvoicingCouponDetail, updateInvoicingCouponDetailFailure, } from './invoicingCouponRecordViewReducer';
6
6
  export const fetchInvoicingCouponDetailEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchInvoicingCouponDetail.match), switchMap((action) => {
7
7
  const { id } = action.payload;
8
8
  const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/discounts/${id}`;
@@ -14,8 +14,8 @@ function hasCompletedFetch() {
14
14
  export function buildInvoicingCouponDetail(id, fetchState, error) {
15
15
  return { id, fetchState, error, hasValidState: hasCompletedFetch };
16
16
  }
17
- const invoicingCouponDetailView = createSlice({
18
- name: 'invoicingCouponDetailView',
17
+ const invoicingCouponRecordView = createSlice({
18
+ name: 'invoicingCouponRecordView',
19
19
  initialState,
20
20
  reducers: {
21
21
  fetchInvoicingCouponDetail(draft, action) {
@@ -37,5 +37,5 @@ const invoicingCouponDetailView = createSlice({
37
37
  });
38
38
  },
39
39
  });
40
- export const { fetchInvoicingCouponDetail, updateInvoicingCouponDetail, updateInvoicingCouponDetailFailure, } = invoicingCouponDetailView.actions;
41
- export default invoicingCouponDetailView.reducer;
40
+ export const { fetchInvoicingCouponDetail, updateInvoicingCouponDetail, updateInvoicingCouponDetailFailure, } = invoicingCouponRecordView.actions;
41
+ export default invoicingCouponRecordView.reducer;
@@ -1,8 +1,8 @@
1
1
  import recordGet from 'lodash/get';
2
2
  import { getInvoicingCouponById } from '../../../entity/invoicing/coupon/couponSelector';
3
3
  import { invoicingFieldHelpForGroup } from '../invoicingConfigView/invoicingConfigViewSelector';
4
- export const getInvoicingCouponDetail = (state, id) => {
5
- const detail = recordGet(state.invoicingCouponDetailViewState.detailById, id, undefined);
4
+ export const getInvoicingCouponRecord = (state, id) => {
5
+ const detail = recordGet(state.invoicingCouponRecordViewState.detailById, id, undefined);
6
6
  return {
7
7
  fieldHelp: invoicingFieldHelpForGroup(state, 'discount'),
8
8
  coupon: getInvoicingCouponById(state.invoicingCouponState, id),
@@ -4,7 +4,7 @@ import { updateAddresses } from '../../../entity/address/addressReducer';
4
4
  import { extractInvoicingCustomerAddresses } from '../../../entity/invoicing/invoicingCustomer/invoicingCustomerPayload';
5
5
  import { updateInvoicingCustomers } from '../../../entity/invoicing/invoicingCustomer/invoicingCustomerReducer';
6
6
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
7
- import { fetchInvoicingCustomerDetail, updateInvoicingCustomerDetail, updateInvoicingCustomerDetailFailure, } from './invoicingCustomerDetailViewReducer';
7
+ import { fetchInvoicingCustomerDetail, updateInvoicingCustomerDetail, updateInvoicingCustomerDetailFailure, } from './invoicingCustomerRecordViewReducer';
8
8
  export const fetchInvoicingCustomerDetailEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchInvoicingCustomerDetail.match), switchMap((action) => {
9
9
  const { id } = action.payload;
10
10
  const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/customers/${id}`;
@@ -2,7 +2,7 @@ import { concat, from } from 'rxjs';
2
2
  import { filter, mergeMap } from 'rxjs/operators';
3
3
  import { fetchInvoiceList } from '../invoiceList/invoiceListReducer';
4
4
  import { fetchInvoicingSettings } from '../settingsView/settingsViewReducer';
5
- import { fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, } from './invoicingCustomerDetailViewReducer';
5
+ import { fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, } from './invoicingCustomerRecordViewReducer';
6
6
  /**
7
7
  * Fetch unless the endpoint is already loaded or in flight — or always when the
8
8
  * caller forces a refresh via `cacheOverride` (e.g. on a manual refresh).
@@ -18,7 +18,7 @@ const shouldFetch = (fetchStateAndError, cacheOverride) => cacheOverride ||
18
18
  */
19
19
  export const fetchInvoicingCustomerDetailPageEpic = (actions$, state$) => actions$.pipe(filter(fetchInvoicingCustomerDetailPage.match), mergeMap((action) => {
20
20
  const { cacheOverride, id } = action.payload;
21
- const customerDetail = state$.value.invoicingCustomerDetailViewState.detailById[id];
21
+ const customerDetail = state$.value.invoicingCustomerRecordViewState.detailById[id];
22
22
  const invoiceListState = state$.value.invoicingInvoiceListState;
23
23
  const invoiceListTabState = invoiceListState.invoiceByTab[invoiceListState.activeTab];
24
24
  const settingsState = state$.value.invoicingSettingsViewState;
@@ -14,8 +14,8 @@ function hasCompletedFetch() {
14
14
  export function buildInvoicingCustomerDetail(id, fetchState, error) {
15
15
  return { id, fetchState, error, hasValidState: hasCompletedFetch };
16
16
  }
17
- const invoicingCustomerDetailView = createSlice({
18
- name: 'invoicingCustomerDetailView',
17
+ const invoicingCustomerRecordView = createSlice({
18
+ name: 'invoicingCustomerRecordView',
19
19
  initialState,
20
20
  reducers: {
21
21
  fetchInvoicingCustomerDetail(draft, action) {
@@ -50,5 +50,5 @@ const invoicingCustomerDetailView = createSlice({
50
50
  });
51
51
  },
52
52
  });
53
- export const { fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, updateInvoicingCustomerDetail, updateInvoicingCustomerDetailFailure, } = invoicingCustomerDetailView.actions;
54
- export default invoicingCustomerDetailView.reducer;
53
+ export const { fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, updateInvoicingCustomerDetail, updateInvoicingCustomerDetailFailure, } = invoicingCustomerRecordView.actions;
54
+ export default invoicingCustomerRecordView.reducer;
@@ -5,9 +5,9 @@ import { getInvoicingPaymentLinkSendState, getInvoicingPaymentMethodSaveState, g
5
5
  import { invoicingFieldHelpForGroup } from '../invoicingConfigView/invoicingConfigViewSelector';
6
6
  import { isStripeConnectedFromSettings } from '../settingsView/invoicingSettingsHelpers';
7
7
  import { getInvoicingSettings } from '../settingsView/settingsViewSelector';
8
- export const getInvoicingCustomerDetail = (state, invoicingCustomerID) => {
9
- const { invoicingCustomerState, invoicingCustomerDetailViewState } = state;
10
- const invoicingCustomerDetail = recordGet(invoicingCustomerDetailViewState.detailById, invoicingCustomerID, undefined);
8
+ export const getInvoicingCustomerRecord = (state, invoicingCustomerID) => {
9
+ const { invoicingCustomerState, invoicingCustomerRecordViewState } = state;
10
+ const invoicingCustomerDetail = recordGet(invoicingCustomerRecordViewState.detailById, invoicingCustomerID, undefined);
11
11
  const settings = getInvoicingSettings(state);
12
12
  const invoicingCustomer = getInvoicingCustomerById(invoicingCustomerState, invoicingCustomerID);
13
13
  return {
@@ -4,7 +4,7 @@ import { updateAddresses } from '../../../entity/address/addressReducer';
4
4
  import { extractInvoicingSubscriptionAddresses } from '../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionPayload';
5
5
  import { updateInvoicingSubscriptions } from '../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionReducer';
6
6
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
7
- import { fetchInvoicingSubscriptionDetail, updateInvoicingSubscriptionDetail, updateInvoicingSubscriptionDetailFailure, } from './invoicingSubscriptionDetailViewReducer';
7
+ import { fetchInvoicingSubscriptionDetail, updateInvoicingSubscriptionDetail, updateInvoicingSubscriptionDetailFailure, } from './invoicingSubscriptionRecordViewReducer';
8
8
  export const fetchInvoicingSubscriptionDetailEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchInvoicingSubscriptionDetail.match), switchMap((action) => {
9
9
  const { id } = action.payload;
10
10
  const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/subscriptions/${id}`;
@@ -5,8 +5,8 @@ export const initialState = {
5
5
  error: undefined,
6
6
  id: undefined,
7
7
  };
8
- const invoicingSubscriptionDetailView = createSlice({
9
- name: 'invoicingSubscriptionDetailView',
8
+ const invoicingSubscriptionRecordView = createSlice({
9
+ name: 'invoicingSubscriptionRecordView',
10
10
  initialState,
11
11
  reducers: {
12
12
  fetchInvoicingSubscriptionDetail(draft, action) {
@@ -30,5 +30,5 @@ const invoicingSubscriptionDetailView = createSlice({
30
30
  });
31
31
  },
32
32
  });
33
- export const { fetchInvoicingSubscriptionDetail, updateInvoicingSubscriptionDetail, updateInvoicingSubscriptionDetailFailure, } = invoicingSubscriptionDetailView.actions;
34
- export default invoicingSubscriptionDetailView.reducer;
33
+ export const { fetchInvoicingSubscriptionDetail, updateInvoicingSubscriptionDetail, updateInvoicingSubscriptionDetailFailure, } = invoicingSubscriptionRecordView.actions;
34
+ export default invoicingSubscriptionRecordView.reducer;
@@ -2,8 +2,8 @@ import { getInvoicingSubscriptionById as getInvoicingSubscriptionByIdFromState }
2
2
  import { getInvoicingConfigView, invoicingFieldHelpForGroup, } from '../invoicingConfigView/invoicingConfigViewSelector';
3
3
  import { getInvoicingSubscriptionActionState } from '../subscriptionAction/subscriptionActionSelector';
4
4
  export const getInvoicingSubscriptionById = (state, id) => getInvoicingSubscriptionByIdFromState(state.invoicingSubscriptionState, id);
5
- export const getInvoicingSubscriptionDetail = (state, invoicingSubscriptionID) => {
6
- const { error, fetchState } = state.invoicingSubscriptionDetailViewState;
5
+ export const getInvoicingSubscriptionRecord = (state, invoicingSubscriptionID) => {
6
+ const { error, fetchState } = state.invoicingSubscriptionRecordViewState;
7
7
  return {
8
8
  fieldHelp: invoicingFieldHelpForGroup(state, 'subscription'),
9
9
  cancelReasonCodeOptions: getInvoicingConfigView(state).subscriptionCancelReasonCodeOptions,
@@ -1,7 +1,7 @@
1
1
  import { of } from 'rxjs';
2
2
  import { catchError, filter, mergeMap } from 'rxjs/operators';
3
3
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
4
- import { fetchInvoicingCustomerDetail } from '../invoicingCustomerDetailView/invoicingCustomerDetailViewReducer';
4
+ import { fetchInvoicingCustomerDetail } from '../invoicingCustomerRecordView/invoicingCustomerRecordViewReducer';
5
5
  import { addPromotionalCreditsFailure, addPromotionalCreditsSuccess, submitAddPromotionalCredits, } from './promotionalCreditActionReducer';
6
6
  export const addPromotionalCreditsEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(submitAddPromotionalCredits.match), mergeMap((action) => {
7
7
  const { amount, currencyCode, customerId, description } = action.payload;
package/lib/index.d.ts CHANGED
@@ -1128,11 +1128,9 @@ export type { InvoicingSubscriptionFormLocalData } from './view/invoicing/editIn
1128
1128
  export { INVOICING_SUBSCRIPTION_SHIPPING_ADDRESS_TYPE, entityToInvoicingSubscriptionFormLocalData, initialInvoicingSubscriptionFormLocalData, invoicingSubscriptionTodayIso, toInvoicingSubscriptionQuantity, } from './view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig';
1129
1129
  export { getEditInvoicingSubscriptionDetailViewState, getInvoicingSubscriptionFormView, } from './view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector';
1130
1130
  export type { EditInvoicingSubscriptionDetailView, InvoicingSubscriptionFormView, } from './view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector';
1131
- export { archiveInvoicingCatalogSubFamily, createInvoicingCatalogSubFamily, resetEditInvoicingCatalogItemDetailView, saveInvoicingCatalogItem, submitInvoicingCatalogItemForm, updateInvoicingCatalogItemDetailEditDraft, updateInvoicingCatalogItemFormDraft, } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer';
1132
- export type { ArchiveInvoicingCatalogSubFamilyPayload, CreateInvoicingCatalogSubFamilyPayload, SaveInvoicingCatalogItemPayload, SubmitInvoicingCatalogItemFormPayload, UpdateInvoicingCatalogItemDetailEditDraftPayload, UpdateInvoicingCatalogItemFormDraftPayload, } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer';
1131
+ export { archiveInvoicingCatalogSubFamily, resetEditInvoicingCatalogItemDetailView, submitInvoicingCatalogItemForm, updateInvoicingCatalogItemFormDraft, } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer';
1132
+ export type { ArchiveInvoicingCatalogSubFamilyPayload, SubmitInvoicingCatalogItemFormPayload, UpdateInvoicingCatalogItemFormDraftPayload, } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer';
1133
1133
  export type { InvoicingCatalogAccountingLookup } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload';
1134
- export { catalogDetailEditValuesToSavePayload, createSubFamilyFormToPayload, planToCatalogDetailEditValues, productToCreateSubFamilyFormValues, } from './view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload';
1135
- export type { CatalogDetailEditValues, CatalogDetailProductUpdate, CatalogDetailSavePayload, CreateSubFamilyFormValues, } from './view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload';
1136
1134
  export type { InvoicingCatalogItemFormLocalData, InvoicingCatalogItemFormSubFamily, InvoicingCatalogItemFormTier, } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewState';
1137
1135
  export { INVOICING_CATALOG_APPLICABILITY_VALUES, INVOICING_CATALOG_PRICING_MODEL_VALUES, INVOICING_CATALOG_PRORATION_VALUES, INVOICING_CATALOG_TIER_TYPE_VALUES, blankInvoicingCatalogSubFamily, blankInvoicingCatalogTier, entityToInvoicingCatalogItemFormLocalData, invoicingProductToCatalogItemFormSubFamily, initialInvoicingCatalogItemFormLocalData, isTieredCatalogPricingModel, } from './view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig';
1138
1136
  export { getEditInvoicingCatalogItemDetailViewState, getInvoicingApplicableCatalogItemOptions, getInvoicingCatalogItemFormView, getSavedInvoicingCatalogItemId, getSavedInvoicingCatalogItemKind, } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector';
@@ -1183,9 +1181,9 @@ export { ALL_INVOICING_CUSTOMER_SORT_KEYS, ALL_INVOICING_CUSTOMER_TAB_IDS, INVOI
1183
1181
  export type { InvoicingCustomerColumnConfig, InvoicingCustomerFilters, InvoicingCustomerSortKey, InvoicingCustomerTabId, } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewState';
1184
1182
  export { getInvoicingCustomerListView } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector';
1185
1183
  export type { InvoicingCustomerListView } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector';
1186
- export { fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, } from './view/invoicing/invoicingCustomerDetailView/invoicingCustomerDetailViewReducer';
1187
- export { getInvoicingCustomerDetail } from './view/invoicing/invoicingCustomerDetailView/invoicingCustomerDetailViewSelector';
1188
- export type { InvoicingCustomerDetailView } from './view/invoicing/invoicingCustomerDetailView/invoicingCustomerDetailViewSelector';
1184
+ export { fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, } from './view/invoicing/invoicingCustomerRecordView/invoicingCustomerRecordViewReducer';
1185
+ export { getInvoicingCustomerRecord } from './view/invoicing/invoicingCustomerRecordView/invoicingCustomerRecordViewSelector';
1186
+ export type { InvoicingCustomerRecordView } from './view/invoicing/invoicingCustomerRecordView/invoicingCustomerRecordViewSelector';
1189
1187
  export { createInvoicingSetupIntent, fetchInvoicingPlaidLinkToken, resetInvoicingCustomerPaymentMethod, saveInvoicingPaymentMethod, sendInvoicingPaymentLink, } from './view/invoicing/customerPaymentMethod/customerPaymentMethodReducer';
1190
1188
  export type { InvoicingSetupIntent } from './view/invoicing/customerPaymentMethod/customerPaymentMethodState';
1191
1189
  export { getInvoicingPaymentLinkSendState, getInvoicingPaymentMethodSaveState, getInvoicingPlaidLinkToken, getInvoicingPlaidLinkTokenFetchState, getInvoicingSentPaymentLinkEmail, getInvoicingSentPaymentLinkMagicUrl, getInvoicingSetupIntent, getInvoicingSetupIntentFetchState, } from './view/invoicing/customerPaymentMethod/customerPaymentMethodSelector';
@@ -1197,9 +1195,9 @@ export { ALL_INVOICING_SUBSCRIPTION_SORT_KEYS, ALL_INVOICING_SUBSCRIPTION_TAB_ID
1197
1195
  export type { InvoicingSubscriptionColumnConfig, InvoicingSubscriptionFilters, InvoicingSubscriptionSortKey, InvoicingSubscriptionTabId, } from './view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState';
1198
1196
  export { getInvoicingSubscriptionListView } from './view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector';
1199
1197
  export type { InvoicingSubscriptionListView } from './view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector';
1200
- export { fetchInvoicingSubscriptionDetail } from './view/invoicing/invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewReducer';
1201
- export { getInvoicingSubscriptionById, getInvoicingSubscriptionDetail, } from './view/invoicing/invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewSelector';
1202
- export type { InvoicingSubscriptionDetailView } from './view/invoicing/invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewSelector';
1198
+ export { fetchInvoicingSubscriptionDetail } from './view/invoicing/invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewReducer';
1199
+ export { getInvoicingSubscriptionById, getInvoicingSubscriptionRecord, } from './view/invoicing/invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewSelector';
1200
+ export type { InvoicingSubscriptionRecordView } from './view/invoicing/invoicingSubscriptionRecordView/invoicingSubscriptionRecordViewSelector';
1203
1201
  export { removeInvoicingTransaction, updateInvoicingTransactions, } from './entity/invoicing/invoicingTransaction/invoicingTransactionReducer';
1204
1202
  export { fetchInvoicingTransactionList, fetchInvoicingTransactionListPage, setInvoicingTransactionActiveTab, updateInvoicingTransactionFilters, } from './view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer';
1205
1203
  export { ALL_INVOICING_TRANSACTION_SORT_KEYS, ALL_INVOICING_TRANSACTION_TAB_IDS, INVOICING_TRANSACTION_COLUMNS, } from './view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState';
@@ -1225,9 +1223,9 @@ export type { InvoicingCouponColumnConfig, InvoicingCouponFilters, InvoicingCoup
1225
1223
  export { getInvoicingCouponCounts, getInvoicingCouponListFetchState, getInvoicingCouponListFilters, getInvoicingCouponListHasMore, getInvoicingCouponListItems, getInvoicingCouponListNextCursor, getInvoicingCouponListView, } from './view/invoicing/couponView/couponViewSelector';
1226
1224
  export type { InvoicingCouponListView } from './view/invoicing/couponView/couponViewSelector';
1227
1225
  export { getInvoicingCouponById } from './entity/invoicing/coupon/couponSelector';
1228
- export { fetchInvoicingCouponDetail } from './view/invoicing/invoicingCouponDetailView/invoicingCouponDetailViewReducer';
1229
- export { getInvoicingCouponDetail } from './view/invoicing/invoicingCouponDetailView/invoicingCouponDetailViewSelector';
1230
- export type { InvoicingCouponDetailView } from './view/invoicing/invoicingCouponDetailView/invoicingCouponDetailViewSelector';
1226
+ export { fetchInvoicingCouponDetail } from './view/invoicing/invoicingCouponRecordView/invoicingCouponRecordViewReducer';
1227
+ export { getInvoicingCouponRecord } from './view/invoicing/invoicingCouponRecordView/invoicingCouponRecordViewSelector';
1228
+ export type { InvoicingCouponRecordView } from './view/invoicing/invoicingCouponRecordView/invoicingCouponRecordViewSelector';
1231
1229
  export { removeInvoicingDunningCase, updateInvoicingDunningCases, } from './entity/invoicing/dunningCase/dunningCaseReducer';
1232
1230
  export { fetchInvoicingDunningCaseCounts, fetchInvoicingDunningCaseList, fetchInvoicingDunningCaseListPage, setInvoicingDunningCaseActiveTab, updateInvoicingDunningCaseFilters, } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewReducer';
1233
1231
  export { ALL_INVOICING_DUNNING_CASE_SORT_KEYS, ALL_INVOICING_DUNNING_CASE_TAB_IDS, INVOICING_DUNNING_CASE_COLUMNS, } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewState';
@@ -1245,12 +1243,12 @@ export { ALL_INVOICING_PRODUCT_SORT_KEYS, INVOICING_PRODUCT_COLUMNS, } from './v
1245
1243
  export type { InvoicingCatalogPlanFilters, InvoicingCatalogProductFilters, InvoicingProductColumnConfig, InvoicingProductSortKey, } from './view/invoicing/invoicingCatalogListView/invoicingCatalogListViewState';
1246
1244
  export { getInvoicingCatalogListView } from './view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector';
1247
1245
  export type { InvoicingCatalogListView } from './view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector';
1248
- export { fetchInvoicingCatalogItemDetail } from './view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewReducer';
1249
- export type { InvoicingCatalogItemKind } from './view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewState';
1250
- export { getInvoicingCatalogItemDetail } from './view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector';
1246
+ export { fetchInvoicingCatalogItemDetail } from './view/invoicing/invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewReducer';
1247
+ export type { InvoicingCatalogItemKind } from './view/invoicing/invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewState';
1248
+ export { getInvoicingCatalogItemRecord } from './view/invoicing/invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewSelector';
1251
1249
  export { getInvoicingPlanById } from './entity/invoicing/plan/planSelector';
1252
1250
  export { getInvoicingProductById } from './entity/invoicing/product/productSelector';
1253
- export type { InvoicingCatalogItemDetailView } from './view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector';
1251
+ export type { InvoicingCatalogItemRecordView } from './view/invoicing/invoicingCatalogItemRecordView/invoicingCatalogItemRecordViewSelector';
1254
1252
  export { connectInvoicingStripe, disconnectInvoicingStripe, fetchInvoicingSettings, resetInvoicingBrandingFormDraft, resetInvoicingQboSettingsDraft, resetSaveInvoicingSettings, saveInvoicingSettings, submitInvoicingBrandingForm, submitInvoicingQboSettings, updateInvoicingBrandingFormDraft, updateInvoicingQboSettingsDraft, updateInvoicingSettings, } from './view/invoicing/settingsView/settingsViewReducer';
1255
1253
  export { getInvoicingBrandingFormView, getInvoicingQboSettingsFormView, getInvoicingSettings, getInvoicingSettingsFetchState, getInvoicingSettingsHubView, getInvoicingSettingsView, } from './view/invoicing/settingsView/settingsViewSelector';
1256
1254
  export type { InvoicingBrandingFormView, InvoicingQboSettingsFormView, InvoicingSettingsHubView, InvoicingSettingsView, } from './view/invoicing/settingsView/settingsViewSelector';