@zeniai/client-epic-state 5.1.97 → 5.1.99

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 (176) hide show
  1. package/lib/entity/invoicing/invoicingCommonPayload.d.ts +12 -0
  2. package/lib/entity/invoicing/invoicingCommonPayload.js +18 -0
  3. package/lib/entity/invoicing/invoicingTransaction/invoicingTransactionPayload.d.ts +1 -1
  4. package/lib/epic.d.ts +1 -5
  5. package/lib/epic.js +1 -5
  6. package/lib/esm/entity/invoicing/invoicingCommonPayload.js +16 -0
  7. package/lib/esm/epic.js +1 -5
  8. package/lib/esm/index.js +16 -18
  9. package/lib/esm/reducer.js +0 -3
  10. package/lib/esm/view/dashboard/dashboardEpic.js +0 -20
  11. package/lib/esm/view/dashboard/dashboardReducer.js +1 -13
  12. package/lib/esm/view/dashboard/dashboardSelector.js +2 -7
  13. package/lib/esm/view/invoicing/auditView/auditViewSelector.js +4 -0
  14. package/lib/esm/view/invoicing/couponView/couponViewSelector.js +18 -8
  15. package/lib/esm/view/invoicing/couponView/couponViewState.js +0 -9
  16. package/lib/esm/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +1 -0
  17. package/lib/esm/view/invoicing/createCreditNote/createCreditNotePayload.js +4 -1
  18. package/lib/esm/view/invoicing/createCreditNote/createCreditNoteSelector.js +4 -2
  19. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector.js +7 -6
  20. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +3 -19
  21. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +10 -5
  22. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewSelector.js +6 -4
  23. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/invoicingCustomerFormConfig.js +0 -17
  24. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.js +5 -0
  25. package/lib/esm/view/invoicing/invoiceList/fetchInvoiceListPageEpic.js +2 -1
  26. package/lib/esm/view/invoicing/invoiceList/invoiceListReducer.js +18 -17
  27. package/lib/esm/view/invoicing/invoiceList/invoiceListSelector.js +12 -4
  28. package/lib/esm/view/invoicing/invoiceList/invoiceListState.js +13 -9
  29. package/lib/esm/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.js +5 -1
  30. package/lib/esm/view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector.js +2 -1
  31. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +26 -0
  32. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +9 -0
  33. package/lib/esm/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewSelector.js +9 -3
  34. package/lib/esm/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewState.js +0 -9
  35. package/lib/esm/view/invoicing/invoicingCustomerDetailView/fetchInvoicingCustomerDetailPageEpic.js +2 -2
  36. package/lib/esm/view/invoicing/invoicingCustomerDetailView/invoicingCustomerDetailViewSelector.js +1 -1
  37. package/lib/esm/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector.js +9 -3
  38. package/lib/esm/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewState.js +0 -9
  39. package/lib/esm/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewSelector.js +8 -3
  40. package/lib/esm/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewState.js +1 -9
  41. package/lib/esm/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.js +11 -3
  42. package/lib/esm/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState.js +0 -9
  43. package/lib/esm/view/invoicing/invoicingTabHelper.js +27 -0
  44. package/lib/esm/view/invoicing/invoicingTransactionListView/epics/fetchInvoicingTransactionListPageEpic.js +2 -1
  45. package/lib/esm/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer.js +5 -5
  46. package/lib/esm/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewSelector.js +12 -4
  47. package/lib/esm/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState.js +11 -9
  48. package/lib/esm/view/invoicing/issueCreditNote/issueCreditNoteFormConfig.js +1 -8
  49. package/lib/esm/view/invoicing/issueCreditNote/issueCreditNotePayload.js +5 -1
  50. package/lib/esm/view/invoicing/issueCreditNote/issueCreditNoteSelector.js +5 -2
  51. package/lib/esm/view/invoicing/recordPayment/recordPaymentFormConfig.js +0 -26
  52. package/lib/esm/view/invoicing/recordPayment/recordPaymentSelector.js +26 -6
  53. package/lib/esm/view/invoicing/settingsView/settingsViewSelector.js +8 -1
  54. package/lib/esm/view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer.js +1 -67
  55. package/lib/index.d.ts +17 -20
  56. package/lib/index.js +41 -65
  57. package/lib/reducer.d.ts +0 -3
  58. package/lib/reducer.js +0 -3
  59. package/lib/view/dashboard/dashboardEpic.d.ts +1 -3
  60. package/lib/view/dashboard/dashboardEpic.js +0 -20
  61. package/lib/view/dashboard/dashboardReducer.d.ts +1 -1
  62. package/lib/view/dashboard/dashboardReducer.js +2 -14
  63. package/lib/view/dashboard/dashboardSelector.d.ts +0 -1
  64. package/lib/view/dashboard/dashboardSelector.js +2 -7
  65. package/lib/view/dashboard/dashboardState.d.ts +0 -1
  66. package/lib/view/invoicing/auditView/auditViewSelector.d.ts +4 -0
  67. package/lib/view/invoicing/auditView/auditViewSelector.js +4 -0
  68. package/lib/view/invoicing/couponView/couponViewSelector.d.ts +5 -1
  69. package/lib/view/invoicing/couponView/couponViewSelector.js +17 -7
  70. package/lib/view/invoicing/couponView/couponViewState.d.ts +0 -7
  71. package/lib/view/invoicing/couponView/couponViewState.js +1 -10
  72. package/lib/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +1 -0
  73. package/lib/view/invoicing/createCreditNote/createCreditNotePayload.js +4 -1
  74. package/lib/view/invoicing/createCreditNote/createCreditNoteSelector.d.ts +3 -1
  75. package/lib/view/invoicing/createCreditNote/createCreditNoteSelector.js +4 -2
  76. package/lib/view/invoicing/createCreditNote/createCreditNoteState.d.ts +6 -0
  77. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector.d.ts +5 -5
  78. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector.js +6 -5
  79. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.d.ts +3 -6
  80. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +4 -20
  81. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.d.ts +9 -7
  82. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +10 -5
  83. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewSelector.d.ts +4 -3
  84. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewSelector.js +5 -3
  85. package/lib/view/invoicing/editInvoicingCustomerDetailView/invoicingCustomerFormConfig.d.ts +0 -8
  86. package/lib/view/invoicing/editInvoicingCustomerDetailView/invoicingCustomerFormConfig.js +1 -18
  87. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.d.ts +5 -0
  88. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.js +5 -0
  89. package/lib/view/invoicing/invoiceList/fetchInvoiceListPageEpic.js +2 -1
  90. package/lib/view/invoicing/invoiceList/invoiceListReducer.js +17 -16
  91. package/lib/view/invoicing/invoiceList/invoiceListSelector.d.ts +3 -1
  92. package/lib/view/invoicing/invoiceList/invoiceListSelector.js +11 -3
  93. package/lib/view/invoicing/invoiceList/invoiceListState.d.ts +13 -9
  94. package/lib/view/invoicing/invoiceList/invoiceListState.js +15 -10
  95. package/lib/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.d.ts +9 -1
  96. package/lib/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.js +5 -1
  97. package/lib/view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector.d.ts +3 -1
  98. package/lib/view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector.js +2 -1
  99. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewPayload.d.ts +13 -0
  100. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.d.ts +1 -1
  101. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +26 -0
  102. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.d.ts +19 -1
  103. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +11 -1
  104. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewState.d.ts +13 -0
  105. package/lib/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewSelector.d.ts +8 -1
  106. package/lib/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewSelector.js +8 -2
  107. package/lib/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewState.d.ts +0 -7
  108. package/lib/view/invoicing/invoicingCreditNoteListView/invoicingCreditNoteListViewState.js +1 -10
  109. package/lib/view/invoicing/invoicingCustomerDetailView/fetchInvoicingCustomerDetailPageEpic.js +2 -2
  110. package/lib/view/invoicing/invoicingCustomerDetailView/invoicingCustomerDetailViewSelector.js +1 -1
  111. package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector.d.ts +3 -1
  112. package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector.js +8 -2
  113. package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewState.d.ts +0 -7
  114. package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewState.js +1 -10
  115. package/lib/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewReducer.d.ts +1 -1
  116. package/lib/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewSelector.d.ts +3 -1
  117. package/lib/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewSelector.js +7 -2
  118. package/lib/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewState.d.ts +2 -9
  119. package/lib/view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewState.js +2 -10
  120. package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.d.ts +7 -1
  121. package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.js +10 -2
  122. package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState.d.ts +0 -7
  123. package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState.js +1 -10
  124. package/lib/view/invoicing/invoicingTabHelper.d.ts +27 -0
  125. package/lib/view/invoicing/invoicingTabHelper.js +30 -0
  126. package/lib/view/invoicing/invoicingTransactionListView/epics/fetchInvoicingTransactionListPageEpic.js +2 -1
  127. package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer.d.ts +1 -1
  128. package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewReducer.js +4 -4
  129. package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewSelector.d.ts +8 -0
  130. package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewSelector.js +11 -3
  131. package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState.d.ts +10 -10
  132. package/lib/view/invoicing/invoicingTransactionListView/invoicingTransactionListViewState.js +13 -10
  133. package/lib/view/invoicing/issueCreditNote/issueCreditNoteFormConfig.d.ts +0 -2
  134. package/lib/view/invoicing/issueCreditNote/issueCreditNoteFormConfig.js +2 -9
  135. package/lib/view/invoicing/issueCreditNote/issueCreditNotePayload.d.ts +2 -2
  136. package/lib/view/invoicing/issueCreditNote/issueCreditNotePayload.js +5 -1
  137. package/lib/view/invoicing/issueCreditNote/issueCreditNoteSelector.d.ts +3 -1
  138. package/lib/view/invoicing/issueCreditNote/issueCreditNoteSelector.js +4 -1
  139. package/lib/view/invoicing/issueCreditNote/issueCreditNoteState.d.ts +6 -0
  140. package/lib/view/invoicing/recordPayment/recordPaymentFormConfig.d.ts +0 -6
  141. package/lib/view/invoicing/recordPayment/recordPaymentFormConfig.js +1 -27
  142. package/lib/view/invoicing/recordPayment/recordPaymentSelector.d.ts +3 -2
  143. package/lib/view/invoicing/recordPayment/recordPaymentSelector.js +26 -6
  144. package/lib/view/invoicing/settingsView/settingsViewSelector.d.ts +12 -1
  145. package/lib/view/invoicing/settingsView/settingsViewSelector.js +8 -1
  146. package/lib/view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer.d.ts +1 -1
  147. package/lib/view/spendManagement/treasury/treasurySetUp/treasurySetupViewReducer.js +2 -68
  148. package/lib/view/spendManagement/treasury/treasurySetUp/treasurySetupViewState.d.ts +0 -3
  149. package/package.json +1 -1
  150. package/lib/entity/invoicing/coupon/couponConstants.d.ts +0 -11
  151. package/lib/entity/invoicing/coupon/couponConstants.js +0 -29
  152. package/lib/esm/entity/invoicing/coupon/couponConstants.js +0 -26
  153. package/lib/esm/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoIntroClosedByOutsideClickEpic.js +0 -18
  154. package/lib/esm/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoRemindMeLaterClickedEpic.js +0 -18
  155. package/lib/esm/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryVideoViewedEpic.js +0 -18
  156. package/lib/esm/view/zeniAccountsPromoCard/zeniAccountsPromoCardEpic.js +0 -16
  157. package/lib/esm/view/zeniAccountsPromoCard/zeniAccountsPromoCardPayload.js +0 -1
  158. package/lib/esm/view/zeniAccountsPromoCard/zeniAccountsPromoCardReducer.js +0 -60
  159. package/lib/esm/view/zeniAccountsPromoCard/zeniAccountsPromoCardSelector.js +0 -12
  160. package/lib/esm/view/zeniAccountsPromoCard/zeniAccountsPromoCardState.js +0 -1
  161. package/lib/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoIntroClosedByOutsideClickEpic.d.ts +0 -8
  162. package/lib/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoIntroClosedByOutsideClickEpic.js +0 -22
  163. package/lib/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoRemindMeLaterClickedEpic.d.ts +0 -8
  164. package/lib/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryPromoRemindMeLaterClickedEpic.js +0 -22
  165. package/lib/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryVideoViewedEpic.d.ts +0 -8
  166. package/lib/view/spendManagement/treasury/treasurySetUp/epic/updateTreasuryVideoViewedEpic.js +0 -22
  167. package/lib/view/zeniAccountsPromoCard/zeniAccountsPromoCardEpic.d.ts +0 -13
  168. package/lib/view/zeniAccountsPromoCard/zeniAccountsPromoCardEpic.js +0 -20
  169. package/lib/view/zeniAccountsPromoCard/zeniAccountsPromoCardPayload.d.ts +0 -11
  170. package/lib/view/zeniAccountsPromoCard/zeniAccountsPromoCardPayload.js +0 -2
  171. package/lib/view/zeniAccountsPromoCard/zeniAccountsPromoCardReducer.d.ts +0 -7
  172. package/lib/view/zeniAccountsPromoCard/zeniAccountsPromoCardReducer.js +0 -64
  173. package/lib/view/zeniAccountsPromoCard/zeniAccountsPromoCardSelector.d.ts +0 -12
  174. package/lib/view/zeniAccountsPromoCard/zeniAccountsPromoCardSelector.js +0 -15
  175. package/lib/view/zeniAccountsPromoCard/zeniAccountsPromoCardState.d.ts +0 -9
  176. package/lib/view/zeniAccountsPromoCard/zeniAccountsPromoCardState.js +0 -2
@@ -8,18 +8,28 @@ export interface InvoicingConfigViewState extends FetchedState {
8
8
  auditLogSourceLabels: AuditLogSourceLabelOption[];
9
9
  autoCollectionOptions: InvoicingNamedOption[];
10
10
  billingPeriodUnitOptions: InvoicingNamedOption[];
11
+ cardStatusOptions: InvoicingNamedOption[];
11
12
  catalogItemLifecycleActionOptions: InvoicingCatalogLifecycleActionOption<InvoicingCatalogItemLifecycleAction>[];
13
+ catalogItemStatusOptions: InvoicingNamedOption[];
14
+ catalogItemTypeOptions: InvoicingNamedOption[];
12
15
  catalogProductLifecycleActionOptions: InvoicingCatalogLifecycleActionOption<InvoicingCatalogProductLifecycleAction>[];
13
16
  catalogTrialEndActionOptions: InvoicingNamedOption[];
14
17
  catalogTrialUnitOptions: InvoicingNamedOption[];
18
+ creditNoteReasonCodeOptions: InvoicingNamedOption[];
19
+ creditNoteStatusOptions: InvoicingNamedOption[];
20
+ creditNoteTypeOptions: InvoicingNamedOption[];
21
+ customerStatusOptions: InvoicingNamedOption[];
15
22
  customerTypeOptions: InvoicingNamedOption[];
16
23
  dateFormatOptions: InvoicingNamedOption[];
17
24
  discountApplyOnOptions: InvoicingNamedOption[];
18
25
  discountDurationTypeOptions: InvoicingNamedOption[];
19
26
  discountLifecycleActionOptions: InvoicingDiscountLifecycleActionOption[];
27
+ discountStatusOptions: InvoicingNamedOption[];
20
28
  discountTypeOptions: InvoicingNamedOption[];
29
+ dunningCaseStatusOptions: InvoicingNamedOption[];
21
30
  dunningScheduleActionOptions: InvoicingDunningActionOption[];
22
31
  enableFetchState: FetchStateAndError;
32
+ invoiceStatusOptions: InvoicingNamedOption[];
23
33
  manualPaymentMethodOptions: InvoicingNamedOption[];
24
34
  netTermDayOptions: InvoicingNamedOption[];
25
35
  paymentGatewayOptions: InvoicingNamedOption[];
@@ -32,7 +42,10 @@ export interface InvoicingConfigViewState extends FetchedState {
32
42
  subscriptionEditFieldOptions: InvoicingSubscriptionEditFieldOption[];
33
43
  subscriptionLifecycleActionOptions: InvoicingSubscriptionLifecycleActionOption[];
34
44
  subscriptionMetadataEditAllowedFromStatuses: string[];
45
+ subscriptionStatusOptions: InvoicingNamedOption[];
35
46
  taxabilityOptions: InvoicingNamedOption[];
47
+ transactionStatusOptions: InvoicingNamedOption[];
48
+ transactionTypeOptions: InvoicingNamedOption[];
36
49
  /**
37
50
  * Allowed tier `Type` options per pricing model. `undefined` means the config
38
51
  * has not been loaded yet — consumers disable the tier editor rather than
@@ -1,7 +1,7 @@
1
1
  import { FetchStateAndError } from '../../../commonStateTypes/common';
2
2
  import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
3
3
  import { InvoicingCreditNote } from '../../../entity/invoicing/creditNote/creditNoteState';
4
- import { InvoicingListCounts } from '../../../entity/invoicing/invoicingCommonPayload';
4
+ import { InvoicingListCounts, InvoicingNamedOption } from '../../../entity/invoicing/invoicingCommonPayload';
5
5
  import { RootState } from '../../../reducer';
6
6
  import { InvoicingListSort } from '../invoicingApiHelper';
7
7
  import { InvoicingCreditNoteColumnConfig, InvoicingCreditNoteFilters, InvoicingCreditNoteTabId } from './invoicingCreditNoteListViewState';
@@ -12,7 +12,14 @@ export interface InvoicingCreditNoteListView extends SelectorView {
12
12
  countsFetchState: FetchStateAndError;
13
13
  creditNotes: InvoicingCreditNote[];
14
14
  filters: InvoicingCreditNoteFilters;
15
+ /**
16
+ * Config lists this page labels from. Tabs and the status badge use
17
+ * `statusOptions`; the list also has a `type` column, so `typeOptions` is
18
+ * exposed too rather than leaving type badges with no names to resolve.
19
+ */
20
+ statusOptions: InvoicingNamedOption[];
15
21
  tabIds: InvoicingCreditNoteTabId[];
22
+ typeOptions: InvoicingNamedOption[];
16
23
  sort?: InvoicingListSort;
17
24
  }
18
25
  /**
@@ -3,13 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getInvoicingCreditNoteListView = void 0;
4
4
  const toolkit_1 = require("@reduxjs/toolkit");
5
5
  const creditNoteSelector_1 = require("../../../entity/invoicing/creditNote/creditNoteSelector");
6
+ const invoicingTabHelper_1 = require("../invoicingTabHelper");
6
7
  const invoicingCreditNoteListViewState_1 = require("./invoicingCreditNoteListViewState");
7
8
  /**
8
9
  * Memoized so the denormalized `creditNotes` array (and the wrapping view
9
10
  * object) keep referential identity until the credit-note entity slice or the
10
11
  * list-view slice actually change.
11
12
  */
12
- exports.getInvoicingCreditNoteListView = (0, toolkit_1.createSelector)((state) => state.invoicingCreditNoteState, (state) => state.invoicingCreditNoteListViewState, (creditNoteState, listViewState) => {
13
+ exports.getInvoicingCreditNoteListView = (0, toolkit_1.createSelector)((state) => state.invoicingCreditNoteState, (state) => state.invoicingCreditNoteListViewState, (state) => state.invoicingConfigViewState.creditNoteStatusOptions, (state) => state.invoicingConfigViewState.creditNoteTypeOptions, (creditNoteState, listViewState, statusOptions, typeOptions) => {
13
14
  const { activeTab } = listViewState;
14
15
  const allCreditNotes = (0, creditNoteSelector_1.getInvoicingCreditNotesByIds)(creditNoteState, listViewState.ids);
15
16
  // The list API ignores `status`, so it returns every status; filter to the
@@ -25,7 +26,12 @@ exports.getInvoicingCreditNoteListView = (0, toolkit_1.createSelector)((state) =
25
26
  countsFetchState: listViewState.countsFetchState,
26
27
  filters: listViewState.filters,
27
28
  nextCursor: listViewState.nextCursor,
28
- tabIds: invoicingCreditNoteListViewState_1.INVOICING_CREDIT_NOTE_TABS,
29
+ statusOptions,
30
+ typeOptions,
31
+ tabIds: (0, invoicingTabHelper_1.invoicingTabIdsFromConfig)({
32
+ allTabIds: invoicingCreditNoteListViewState_1.ALL_INVOICING_CREDIT_NOTE_TAB_IDS,
33
+ statusOptions,
34
+ }),
29
35
  fetchState: listViewState.fetchState,
30
36
  error: listViewState.error,
31
37
  sort: listViewState.sort,
@@ -23,13 +23,6 @@ export declare const INVOICING_CREDIT_NOTE_COLUMNS: InvoicingCreditNoteColumnCon
23
23
  export declare const ALL_INVOICING_CREDIT_NOTE_TAB_IDS: readonly ["all", "refund_due", "adjusted", "refunded", "voided"];
24
24
  export declare const toInvoicingCreditNoteTabId: (v: string) => "adjusted" | "refunded" | "refund_due" | "voided" | "all";
25
25
  export type InvoicingCreditNoteTabId = ReturnType<typeof toInvoicingCreditNoteTabId>;
26
- /**
27
- * Ordered filter-tab id set owned by CES so the credit-notes-list tabs live next
28
- * to the model rather than being hardcoded in web-components. Tab labels and the
29
- * per-tab count lookup stay in the view layer; this only carries the id set and
30
- * display order.
31
- */
32
- export declare const INVOICING_CREDIT_NOTE_TABS: InvoicingCreditNoteTabId[];
33
26
  export interface InvoicingCreditNoteListViewState extends FetchedState {
34
27
  /** Selected status tab (CES-owned so it persists across page revisits). */
35
28
  activeTab: InvoicingCreditNoteTabId;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.INVOICING_CREDIT_NOTE_TABS = exports.toInvoicingCreditNoteTabId = exports.ALL_INVOICING_CREDIT_NOTE_TAB_IDS = exports.INVOICING_CREDIT_NOTE_COLUMNS = exports.toInvoicingCreditNoteSortKey = exports.ALL_INVOICING_CREDIT_NOTE_SORT_KEYS = void 0;
3
+ exports.toInvoicingCreditNoteTabId = exports.ALL_INVOICING_CREDIT_NOTE_TAB_IDS = exports.INVOICING_CREDIT_NOTE_COLUMNS = exports.toInvoicingCreditNoteSortKey = exports.ALL_INVOICING_CREDIT_NOTE_SORT_KEYS = void 0;
4
4
  const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
5
5
  exports.ALL_INVOICING_CREDIT_NOTE_SORT_KEYS = [
6
6
  'credit_note',
@@ -33,12 +33,3 @@ exports.ALL_INVOICING_CREDIT_NOTE_TAB_IDS = [
33
33
  ];
34
34
  const toInvoicingCreditNoteTabId = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.ALL_INVOICING_CREDIT_NOTE_TAB_IDS);
35
35
  exports.toInvoicingCreditNoteTabId = toInvoicingCreditNoteTabId;
36
- /**
37
- * Ordered filter-tab id set owned by CES so the credit-notes-list tabs live next
38
- * to the model rather than being hardcoded in web-components. Tab labels and the
39
- * per-tab count lookup stay in the view layer; this only carries the id set and
40
- * display order.
41
- */
42
- exports.INVOICING_CREDIT_NOTE_TABS = [
43
- ...exports.ALL_INVOICING_CREDIT_NOTE_TAB_IDS,
44
- ];
@@ -37,8 +37,8 @@ const fetchInvoicingCustomerDetailPageEpic = (actions$, state$) => actions$.pipe
37
37
  const invoiceListIsForCustomer = invoiceListState.filters.customerId === id;
38
38
  if (!invoiceListIsForCustomer ||
39
39
  shouldFetch({
40
- fetchState: invoiceListTabState.fetchState,
41
- error: invoiceListTabState.error,
40
+ fetchState: invoiceListTabState?.fetchState ?? 'Not-Started',
41
+ error: invoiceListTabState?.error,
42
42
  }, cacheOverride)) {
43
43
  pageActions.push((0, invoiceListReducer_1.fetchInvoiceList)({ filters: { customerId: id } }));
44
44
  }
@@ -16,7 +16,7 @@ const getInvoicingCustomerDetail = (state, invoicingCustomerID) => {
16
16
  const settings = (0, settingsViewSelector_1.getInvoicingSettings)(state);
17
17
  return {
18
18
  invoicingCustomer: (0, invoicingCustomerSelector_1.getInvoicingCustomerById)(invoicingCustomerState, invoicingCustomerID),
19
- invoices: (0, invoiceSelector_1.getInvoicesByIds)(state.invoicingInvoiceState, state.invoicingInvoiceListState.invoiceByTab[state.invoicingInvoiceListState.activeTab].invoiceIds),
19
+ invoices: (0, invoiceSelector_1.getInvoicesByIds)(state.invoicingInvoiceState, state.invoicingInvoiceListState.invoiceByTab[state.invoicingInvoiceListState.activeTab]?.invoiceIds ?? []),
20
20
  setupIntent: (0, customerPaymentMethodSelector_1.getInvoicingSetupIntent)(state),
21
21
  setupIntentFetchState: (0, customerPaymentMethodSelector_1.getInvoicingSetupIntentFetchState)(state),
22
22
  plaidLinkToken: (0, customerPaymentMethodSelector_1.getInvoicingPlaidLinkToken)(state),
@@ -1,6 +1,6 @@
1
1
  import { FetchStateAndError } from '../../../commonStateTypes/common';
2
2
  import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
3
- import { InvoicingListCounts } from '../../../entity/invoicing/invoicingCommonPayload';
3
+ import { InvoicingListCounts, InvoicingNamedOption } from '../../../entity/invoicing/invoicingCommonPayload';
4
4
  import { InvoicingCustomer } from '../../../entity/invoicing/invoicingCustomer/invoicingCustomerState';
5
5
  import { RootState } from '../../../reducer';
6
6
  import { InvoicingListSort } from '../invoicingApiHelper';
@@ -13,6 +13,8 @@ export interface InvoicingCustomerListView extends SelectorView {
13
13
  customers: InvoicingCustomer[];
14
14
  filters: InvoicingCustomerFilters;
15
15
  nextCursor: string | null;
16
+ /** Config status/type list; the page labels tabs and badges from it. */
17
+ statusOptions: InvoicingNamedOption[];
16
18
  tabIds: InvoicingCustomerTabId[];
17
19
  sort?: InvoicingListSort;
18
20
  }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getInvoicingCustomerListView = void 0;
4
4
  const toolkit_1 = require("@reduxjs/toolkit");
5
5
  const invoicingCustomerSelector_1 = require("../../../entity/invoicing/invoicingCustomer/invoicingCustomerSelector");
6
+ const invoicingTabHelper_1 = require("../invoicingTabHelper");
6
7
  const invoicingCustomerListViewState_1 = require("./invoicingCustomerListViewState");
7
8
  /**
8
9
  * Memoized so the denormalized `customers` array (and the wrapping view object)
@@ -10,7 +11,7 @@ const invoicingCustomerListViewState_1 = require("./invoicingCustomerListViewSta
10
11
  * slice actually change. Without this, the connected list page re-rendered on
11
12
  * every unrelated redux action because a fresh array was built each call.
12
13
  */
13
- exports.getInvoicingCustomerListView = (0, toolkit_1.createSelector)((state) => state.invoicingCustomerState, (state) => state.invoicingCustomerListViewState, (customerState, listViewState) => {
14
+ exports.getInvoicingCustomerListView = (0, toolkit_1.createSelector)((state) => state.invoicingCustomerState, (state) => state.invoicingCustomerListViewState, (state) => state.invoicingConfigViewState.customerStatusOptions, (customerState, listViewState, statusOptions) => {
14
15
  const { activeTab } = listViewState;
15
16
  const allCustomers = (0, invoicingCustomerSelector_1.getInvoicingCustomersByIds)(customerState, listViewState.ids);
16
17
  // The list API ignores `status`, so it returns every status; filter to the
@@ -31,7 +32,12 @@ exports.getInvoicingCustomerListView = (0, toolkit_1.createSelector)((state) =>
31
32
  filters: listViewState.filters,
32
33
  count: listViewState.counts,
33
34
  countsFetchState: listViewState.countsFetchState,
34
- tabIds: invoicingCustomerListViewState_1.INVOICING_CUSTOMER_TABS,
35
+ statusOptions,
36
+ tabIds: (0, invoicingTabHelper_1.invoicingTabIdsFromConfig)({
37
+ allTabIds: invoicingCustomerListViewState_1.ALL_INVOICING_CUSTOMER_TAB_IDS,
38
+ localTabIds: ['trial', 'at_risk'],
39
+ statusOptions,
40
+ }),
35
41
  sort: listViewState.sort,
36
42
  };
37
43
  });
@@ -22,13 +22,6 @@ export declare const INVOICING_CUSTOMER_COLUMNS: InvoicingCustomerColumnConfig[]
22
22
  export declare const ALL_INVOICING_CUSTOMER_TAB_IDS: readonly ["all", "active", "trial", "at_risk"];
23
23
  export declare const toInvoicingCustomerTabId: (v: string) => "active" | "at_risk" | "trial" | "all";
24
24
  export type InvoicingCustomerTabId = ReturnType<typeof toInvoicingCustomerTabId>;
25
- /**
26
- * Ordered filter-tab id set owned by CES so the customer-list tabs live next to
27
- * the model rather than being hardcoded in web-components. Tab labels and the
28
- * per-tab count lookup stay in the view layer; this only carries the id set and
29
- * display order.
30
- */
31
- export declare const INVOICING_CUSTOMER_TABS: InvoicingCustomerTabId[];
32
25
  export interface InvoicingCustomerListViewState extends FetchedState {
33
26
  /** Selected status tab (CES-owned so it persists across page revisits). */
34
27
  activeTab: InvoicingCustomerTabId;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.INVOICING_CUSTOMER_TABS = exports.toInvoicingCustomerTabId = exports.ALL_INVOICING_CUSTOMER_TAB_IDS = exports.INVOICING_CUSTOMER_COLUMNS = exports.toInvoicingCustomerSortKey = exports.ALL_INVOICING_CUSTOMER_SORT_KEYS = void 0;
3
+ exports.toInvoicingCustomerTabId = exports.ALL_INVOICING_CUSTOMER_TAB_IDS = exports.INVOICING_CUSTOMER_COLUMNS = exports.toInvoicingCustomerSortKey = exports.ALL_INVOICING_CUSTOMER_SORT_KEYS = void 0;
4
4
  const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
5
5
  exports.ALL_INVOICING_CUSTOMER_SORT_KEYS = [
6
6
  'name',
@@ -28,12 +28,3 @@ exports.ALL_INVOICING_CUSTOMER_TAB_IDS = [
28
28
  ];
29
29
  const toInvoicingCustomerTabId = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.ALL_INVOICING_CUSTOMER_TAB_IDS);
30
30
  exports.toInvoicingCustomerTabId = toInvoicingCustomerTabId;
31
- /**
32
- * Ordered filter-tab id set owned by CES so the customer-list tabs live next to
33
- * the model rather than being hardcoded in web-components. Tab labels and the
34
- * per-tab count lookup stay in the view layer; this only carries the id set and
35
- * display order.
36
- */
37
- exports.INVOICING_CUSTOMER_TABS = [
38
- ...exports.ALL_INVOICING_CUSTOMER_TAB_IDS,
39
- ];
@@ -26,6 +26,6 @@ export declare const fetchInvoicingDunningCaseList: import("@reduxjs/toolkit").A
26
26
  ids: ID[];
27
27
  keepExistingListItems: boolean;
28
28
  nextCursor: string | null;
29
- }, "invoicingDunningCaseListView/updateInvoicingDunningCaseList">, updateInvoicingDunningCaseListFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingDunningCaseListView/updateInvoicingDunningCaseListFailure">, fetchInvoicingDunningCaseCounts: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"invoicingDunningCaseListView/fetchInvoicingDunningCaseCounts">, updateInvoicingDunningCaseCounts: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoicingListCounts, "invoicingDunningCaseListView/updateInvoicingDunningCaseCounts">, updateInvoicingDunningCaseCountsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingDunningCaseListView/updateInvoicingDunningCaseCountsFailure">, updateInvoicingDunningCaseFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoicingDunningCaseFilters, "invoicingDunningCaseListView/updateInvoicingDunningCaseFilters">, setInvoicingDunningCaseActiveTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"Retrying" | "Scheduled" | "Manual Review" | "Resolved" | "Cancelled" | "all", "invoicingDunningCaseListView/setInvoicingDunningCaseActiveTab">, clearInvoicingDunningCaseListView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"invoicingDunningCaseListView/clearInvoicingDunningCaseListView">;
29
+ }, "invoicingDunningCaseListView/updateInvoicingDunningCaseList">, updateInvoicingDunningCaseListFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingDunningCaseListView/updateInvoicingDunningCaseListFailure">, fetchInvoicingDunningCaseCounts: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"invoicingDunningCaseListView/fetchInvoicingDunningCaseCounts">, updateInvoicingDunningCaseCounts: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoicingListCounts, "invoicingDunningCaseListView/updateInvoicingDunningCaseCounts">, updateInvoicingDunningCaseCountsFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingDunningCaseListView/updateInvoicingDunningCaseCountsFailure">, updateInvoicingDunningCaseFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoicingDunningCaseFilters, "invoicingDunningCaseListView/updateInvoicingDunningCaseFilters">, setInvoicingDunningCaseActiveTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"Retrying" | "Scheduled" | "Manual Review" | "Resolved" | "Cancelled" | "Paused" | "all", "invoicingDunningCaseListView/setInvoicingDunningCaseActiveTab">, clearInvoicingDunningCaseListView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"invoicingDunningCaseListView/clearInvoicingDunningCaseListView">;
30
30
  declare const _default: import("redux").Reducer<InvoicingDunningCaseListViewState>;
31
31
  export default _default;
@@ -1,7 +1,7 @@
1
1
  import { FetchStateAndError } from '../../../commonStateTypes/common';
2
2
  import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
3
3
  import { InvoicingDunningCase } from '../../../entity/invoicing/dunningCase/dunningCaseState';
4
- import { InvoicingListCounts } from '../../../entity/invoicing/invoicingCommonPayload';
4
+ import { InvoicingListCounts, InvoicingNamedOption } from '../../../entity/invoicing/invoicingCommonPayload';
5
5
  import { RootState } from '../../../reducer';
6
6
  import { InvoicingListSort } from '../invoicingApiHelper';
7
7
  import { InvoicingDunningCaseColumnConfig, InvoicingDunningCaseFilters, InvoicingDunningCaseTabId } from './invoicingDunningCaseListViewState';
@@ -12,6 +12,8 @@ export interface InvoicingDunningCaseListView extends SelectorView {
12
12
  countsFetchState: FetchStateAndError;
13
13
  dunningCases: InvoicingDunningCase[];
14
14
  filters: InvoicingDunningCaseFilters;
15
+ /** Config status/type list; the page labels tabs and badges from it. */
16
+ statusOptions: InvoicingNamedOption[];
15
17
  tabIds: InvoicingDunningCaseTabId[];
16
18
  sort?: InvoicingListSort;
17
19
  }
@@ -3,13 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getInvoicingDunningCaseListView = void 0;
4
4
  const toolkit_1 = require("@reduxjs/toolkit");
5
5
  const dunningCaseSelector_1 = require("../../../entity/invoicing/dunningCase/dunningCaseSelector");
6
+ const invoicingTabHelper_1 = require("../invoicingTabHelper");
6
7
  const invoicingDunningCaseListViewState_1 = require("./invoicingDunningCaseListViewState");
7
8
  /**
8
9
  * Memoized so the denormalized `dunningCases` array (and the wrapping view
9
10
  * object) keep referential identity until the dunning-case entity slice or the
10
11
  * list-view slice actually change.
11
12
  */
12
- exports.getInvoicingDunningCaseListView = (0, toolkit_1.createSelector)((state) => state.invoicingDunningCaseState, (state) => state.invoicingDunningCaseListViewState, (dunningCaseState, listViewState) => {
13
+ exports.getInvoicingDunningCaseListView = (0, toolkit_1.createSelector)((state) => state.invoicingDunningCaseState, (state) => state.invoicingDunningCaseListViewState, (state) => state.invoicingConfigViewState.dunningCaseStatusOptions, (dunningCaseState, listViewState, statusOptions) => {
13
14
  const { activeTab } = listViewState;
14
15
  const allDunningCases = (0, dunningCaseSelector_1.getInvoicingDunningCasesByIds)(dunningCaseState, listViewState.ids);
15
16
  // The list API ignores `status`, so it returns every status; filter to the
@@ -27,7 +28,11 @@ exports.getInvoicingDunningCaseListView = (0, toolkit_1.createSelector)((state)
27
28
  nextCursor: listViewState.nextCursor,
28
29
  fetchState: listViewState.fetchState,
29
30
  error: listViewState.error,
30
- tabIds: invoicingDunningCaseListViewState_1.INVOICING_DUNNING_CASE_TABS,
31
+ statusOptions,
32
+ tabIds: (0, invoicingTabHelper_1.invoicingTabIdsFromConfig)({
33
+ allTabIds: invoicingDunningCaseListViewState_1.ALL_INVOICING_DUNNING_CASE_TAB_IDS,
34
+ statusOptions,
35
+ }),
31
36
  sort: listViewState.sort,
32
37
  version: 1.0,
33
38
  };
@@ -19,16 +19,9 @@ export interface InvoicingDunningCaseColumnConfig {
19
19
  sortable: boolean;
20
20
  }
21
21
  export declare const INVOICING_DUNNING_CASE_COLUMNS: InvoicingDunningCaseColumnConfig[];
22
- export declare const ALL_INVOICING_DUNNING_CASE_TAB_IDS: readonly ["all", "Retrying", "Scheduled", "Manual Review", "Resolved", "Cancelled"];
23
- export declare const toInvoicingDunningCaseTabId: (v: string) => "Retrying" | "Scheduled" | "Manual Review" | "Resolved" | "Cancelled" | "all";
22
+ export declare const ALL_INVOICING_DUNNING_CASE_TAB_IDS: readonly ["all", "Retrying", "Scheduled", "Manual Review", "Paused", "Resolved", "Cancelled"];
23
+ export declare const toInvoicingDunningCaseTabId: (v: string) => "Retrying" | "Scheduled" | "Manual Review" | "Resolved" | "Cancelled" | "Paused" | "all";
24
24
  export type InvoicingDunningCaseTabId = ReturnType<typeof toInvoicingDunningCaseTabId>;
25
- /**
26
- * Ordered filter-tab id set owned by CES so the dunning-cases-list tabs live
27
- * next to the model rather than being hardcoded in web-components. Tab labels
28
- * and the per-tab count lookup stay in the view layer; this only carries the id
29
- * set and display order.
30
- */
31
- export declare const INVOICING_DUNNING_CASE_TABS: InvoicingDunningCaseTabId[];
32
25
  export interface InvoicingDunningCaseListViewState extends FetchedState {
33
26
  /** Selected status tab (CES-owned so it persists across page revisits). */
34
27
  activeTab: InvoicingDunningCaseTabId;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.INVOICING_DUNNING_CASE_TABS = exports.toInvoicingDunningCaseTabId = exports.ALL_INVOICING_DUNNING_CASE_TAB_IDS = exports.INVOICING_DUNNING_CASE_COLUMNS = exports.toInvoicingDunningCaseSortKey = exports.ALL_INVOICING_DUNNING_CASE_SORT_KEYS = void 0;
3
+ exports.toInvoicingDunningCaseTabId = exports.ALL_INVOICING_DUNNING_CASE_TAB_IDS = exports.INVOICING_DUNNING_CASE_COLUMNS = exports.toInvoicingDunningCaseSortKey = exports.ALL_INVOICING_DUNNING_CASE_SORT_KEYS = void 0;
4
4
  const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
5
5
  exports.ALL_INVOICING_DUNNING_CASE_SORT_KEYS = [
6
6
  'customer',
@@ -29,17 +29,9 @@ exports.ALL_INVOICING_DUNNING_CASE_TAB_IDS = [
29
29
  'Retrying',
30
30
  'Scheduled',
31
31
  'Manual Review',
32
+ 'Paused',
32
33
  'Resolved',
33
34
  'Cancelled',
34
35
  ];
35
36
  const toInvoicingDunningCaseTabId = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.ALL_INVOICING_DUNNING_CASE_TAB_IDS);
36
37
  exports.toInvoicingDunningCaseTabId = toInvoicingDunningCaseTabId;
37
- /**
38
- * Ordered filter-tab id set owned by CES so the dunning-cases-list tabs live
39
- * next to the model rather than being hardcoded in web-components. Tab labels
40
- * and the per-tab count lookup stay in the view layer; this only carries the id
41
- * set and display order.
42
- */
43
- exports.INVOICING_DUNNING_CASE_TABS = [
44
- ...exports.ALL_INVOICING_DUNNING_CASE_TAB_IDS,
45
- ];
@@ -1,6 +1,6 @@
1
1
  import { FetchStateAndError } from '../../../commonStateTypes/common';
2
2
  import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
3
- import { InvoicingListCounts } from '../../../entity/invoicing/invoicingCommonPayload';
3
+ import { InvoicingListCounts, InvoicingNamedOption, InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
4
4
  import { InvoicingSubscription } from '../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionState';
5
5
  import { RootState } from '../../../reducer';
6
6
  import { InvoicingListSort } from '../invoicingApiHelper';
@@ -12,6 +12,12 @@ export interface InvoicingSubscriptionListView extends SelectorView {
12
12
  countsFetchState: FetchStateAndError;
13
13
  filters: InvoicingSubscriptionFilters;
14
14
  nextCursor: string | null;
15
+ /** Config status/type list; the page labels tabs and badges from it. */
16
+ statusOptions: InvoicingNamedOption[];
17
+ /** Config-owned; folded in so the screen reads one selector. */
18
+ subscriptionCommercialEditAllowedFromStatuses: string[];
19
+ subscriptionLifecycleActionOptions: InvoicingSubscriptionLifecycleActionOption[];
20
+ subscriptionMetadataEditAllowedFromStatuses: string[];
15
21
  subscriptions: InvoicingSubscription[];
16
22
  tabIds: InvoicingSubscriptionTabId[];
17
23
  sort?: InvoicingListSort;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getInvoicingSubscriptionListView = void 0;
4
4
  const toolkit_1 = require("@reduxjs/toolkit");
5
5
  const invoicingSubscriptionSelector_1 = require("../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionSelector");
6
+ const invoicingTabHelper_1 = require("../invoicingTabHelper");
6
7
  const invoicingSubscriptionListViewState_1 = require("./invoicingSubscriptionListViewState");
7
8
  /**
8
9
  * Memoized so the denormalized `subscriptions` array (and the wrapping view
@@ -11,7 +12,7 @@ const invoicingSubscriptionListViewState_1 = require("./invoicingSubscriptionLis
11
12
  * re-rendered on every unrelated redux action because a fresh array was built
12
13
  * each call.
13
14
  */
14
- exports.getInvoicingSubscriptionListView = (0, toolkit_1.createSelector)((state) => state.invoicingSubscriptionState, (state) => state.invoicingSubscriptionListViewState, (subscriptionState, listViewState) => {
15
+ exports.getInvoicingSubscriptionListView = (0, toolkit_1.createSelector)((state) => state.invoicingSubscriptionState, (state) => state.invoicingSubscriptionListViewState, (state) => state.invoicingConfigViewState.subscriptionStatusOptions, (state) => state.invoicingConfigViewState, (subscriptionState, listViewState, statusOptions, configState) => {
15
16
  const { activeTab } = listViewState;
16
17
  const allSubscriptions = (0, invoicingSubscriptionSelector_1.getInvoicingSubscriptionsByIds)(subscriptionState, listViewState.ids);
17
18
  // The list API ignores `status`, so it returns every status; filter to the
@@ -29,7 +30,14 @@ exports.getInvoicingSubscriptionListView = (0, toolkit_1.createSelector)((state)
29
30
  filters: listViewState.filters,
30
31
  count: listViewState.counts,
31
32
  countsFetchState: listViewState.countsFetchState,
32
- tabIds: invoicingSubscriptionListViewState_1.INVOICING_SUBSCRIPTION_TABS,
33
+ subscriptionCommercialEditAllowedFromStatuses: configState.subscriptionCommercialEditAllowedFromStatuses,
34
+ subscriptionLifecycleActionOptions: configState.subscriptionLifecycleActionOptions,
35
+ subscriptionMetadataEditAllowedFromStatuses: configState.subscriptionMetadataEditAllowedFromStatuses,
36
+ statusOptions,
37
+ tabIds: (0, invoicingTabHelper_1.invoicingTabIdsFromConfig)({
38
+ allTabIds: invoicingSubscriptionListViewState_1.ALL_INVOICING_SUBSCRIPTION_TAB_IDS,
39
+ statusOptions,
40
+ }),
33
41
  sort: listViewState.sort,
34
42
  };
35
43
  });
@@ -25,13 +25,6 @@ export declare const INVOICING_SUBSCRIPTION_COLUMNS: InvoicingSubscriptionColumn
25
25
  export declare const ALL_INVOICING_SUBSCRIPTION_TAB_IDS: readonly ["all", "active", "in_trial", "future", "non_renewing", "paused", "cancelled"];
26
26
  export declare const toInvoicingSubscriptionTabId: (v: string) => "cancelled" | "active" | "future" | "in_trial" | "non_renewing" | "paused" | "all";
27
27
  export type InvoicingSubscriptionTabId = ReturnType<typeof toInvoicingSubscriptionTabId>;
28
- /**
29
- * Ordered filter-tab id set owned by CES so the subscription-list tabs live next
30
- * to the model rather than being hardcoded in web-components. Tab labels and the
31
- * per-tab count lookup stay in the view layer; this only carries the id set and
32
- * display order.
33
- */
34
- export declare const INVOICING_SUBSCRIPTION_TABS: InvoicingSubscriptionTabId[];
35
28
  export interface InvoicingSubscriptionListViewState extends FetchedState {
36
29
  /** Selected status tab (CES-owned so it persists across page revisits). */
37
30
  activeTab: InvoicingSubscriptionTabId;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.INVOICING_SUBSCRIPTION_TABS = exports.toInvoicingSubscriptionTabId = exports.ALL_INVOICING_SUBSCRIPTION_TAB_IDS = exports.INVOICING_SUBSCRIPTION_COLUMNS = exports.toInvoicingSubscriptionSortKey = exports.ALL_INVOICING_SUBSCRIPTION_SORT_KEYS = void 0;
3
+ exports.toInvoicingSubscriptionTabId = exports.ALL_INVOICING_SUBSCRIPTION_TAB_IDS = exports.INVOICING_SUBSCRIPTION_COLUMNS = exports.toInvoicingSubscriptionSortKey = exports.ALL_INVOICING_SUBSCRIPTION_SORT_KEYS = void 0;
4
4
  const stringToUnion_1 = require("../../../commonStateTypes/stringToUnion");
5
5
  exports.ALL_INVOICING_SUBSCRIPTION_SORT_KEYS = [
6
6
  'subscription',
@@ -37,12 +37,3 @@ exports.ALL_INVOICING_SUBSCRIPTION_TAB_IDS = [
37
37
  ];
38
38
  const toInvoicingSubscriptionTabId = (v) => (0, stringToUnion_1.stringToUnion)(v, exports.ALL_INVOICING_SUBSCRIPTION_TAB_IDS);
39
39
  exports.toInvoicingSubscriptionTabId = toInvoicingSubscriptionTabId;
40
- /**
41
- * Ordered filter-tab id set owned by CES so the subscription-list tabs live next
42
- * to the model rather than being hardcoded in web-components. Tab labels and the
43
- * per-tab count lookup stay in the view layer; this only carries the id set and
44
- * display order.
45
- */
46
- exports.INVOICING_SUBSCRIPTION_TABS = [
47
- ...exports.ALL_INVOICING_SUBSCRIPTION_TAB_IDS,
48
- ];
@@ -0,0 +1,27 @@
1
+ import { InvoicingNamedOption } from '../../entity/invoicing/invoicingCommonPayload';
2
+ export interface InvoicingTabIdsFromConfigParams<TabId extends string> {
3
+ /**
4
+ * The `as const` id set that backs the tab-id union. Used as the fallback
5
+ * before config lands, so the tabs are never empty on first paint.
6
+ */
7
+ allTabIds: readonly TabId[];
8
+ /** The config status/type list that decides membership and order. */
9
+ statusOptions: InvoicingNamedOption[] | undefined;
10
+ /**
11
+ * FE-derived tabs that are not backend statuses and so never appear in config
12
+ * (the customer list's `trial` / `at_risk`, the discount list's `inactive`).
13
+ * Appended after the config-driven ids, preserving today's display order.
14
+ */
15
+ localTabIds?: readonly TabId[];
16
+ }
17
+ /**
18
+ * Build a list's filter-tab ids from the config option list rather than a
19
+ * hardcoded array, so adding a status backend-side widens the tabs.
20
+ *
21
+ * `all` always leads and is never taken from config. Codes config sends that the
22
+ * tab-id union does not know still render: the union types state, the per-tab
23
+ * cache and URL parsing, but it is a frontend snapshot of a backend enum, and
24
+ * dropping unknown codes would silently hide a status the backend already has —
25
+ * the exact drift this is meant to end.
26
+ */
27
+ export declare function invoicingTabIdsFromConfig<TabId extends string>({ allTabIds, localTabIds, statusOptions, }: InvoicingTabIdsFromConfigParams<TabId>): TabId[];
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.invoicingTabIdsFromConfig = invoicingTabIdsFromConfig;
4
+ const invoicingCommonPayload_1 = require("../../entity/invoicing/invoicingCommonPayload");
5
+ /** Every list's leading "show everything" tab; FE-owned, never a backend status. */
6
+ const ALL_TAB_ID = 'all';
7
+ /**
8
+ * Build a list's filter-tab ids from the config option list rather than a
9
+ * hardcoded array, so adding a status backend-side widens the tabs.
10
+ *
11
+ * `all` always leads and is never taken from config. Codes config sends that the
12
+ * tab-id union does not know still render: the union types state, the per-tab
13
+ * cache and URL parsing, but it is a frontend snapshot of a backend enum, and
14
+ * dropping unknown codes would silently hide a status the backend already has —
15
+ * the exact drift this is meant to end.
16
+ */
17
+ function invoicingTabIdsFromConfig({ allTabIds, localTabIds = [], statusOptions, }) {
18
+ // Nullish as well as empty: a partial test state or a draft persisted before
19
+ // these lists existed can leave it undefined.
20
+ if (statusOptions == null || statusOptions.length === 0) {
21
+ return [...allTabIds];
22
+ }
23
+ const configTabIds = (0, invoicingCommonPayload_1.invoicingOptionCodes)(statusOptions)
24
+ .filter((code) => code !== ALL_TAB_ID)
25
+ // A config code outside the union is still a valid tab at runtime — the
26
+ // caches key off the string — so it is admitted rather than dropped.
27
+ .map((code) => code);
28
+ const ordered = [ALL_TAB_ID, ...configTabIds, ...localTabIds];
29
+ return Array.from(new Set(ordered));
30
+ }
@@ -4,6 +4,7 @@ exports.fetchInvoicingTransactionListPageEpic = void 0;
4
4
  const rxjs_1 = require("rxjs");
5
5
  const operators_1 = require("rxjs/operators");
6
6
  const invoicingTransactionListViewReducer_1 = require("../invoicingTransactionListViewReducer");
7
+ const invoicingTransactionListViewState_1 = require("../invoicingTransactionListViewState");
7
8
  /**
8
9
  * Fetch unless the endpoint is already loaded or in flight — or always when the
9
10
  * caller forces a refresh via `cacheOverride` (e.g. on a filter/sort change).
@@ -19,7 +20,7 @@ const shouldFetch = (fetchStateAndError, cacheOverride) => cacheOverride ||
19
20
  const fetchInvoicingTransactionListPageEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(invoicingTransactionListViewReducer_1.fetchInvoicingTransactionListPage.match), (0, operators_1.mergeMap)((action) => {
20
21
  const { cacheOverride, filters, sort } = action.payload;
21
22
  const state = state$.value.invoicingTransactionListViewState;
22
- const activeTabState = state.byTab[state.activeTab];
23
+ const activeTabState = state.byTab[state.activeTab] ?? (0, invoicingTransactionListViewState_1.makeInvoicingTransactionTabState)();
23
24
  const pageActions = [];
24
25
  if (shouldFetch({ fetchState: activeTabState.fetchState, error: activeTabState.error }, cacheOverride)) {
25
26
  pageActions.push((0, invoicingTransactionListViewReducer_1.fetchInvoicingTransactionList)({ filters, sort }));
@@ -25,6 +25,6 @@ export declare const fetchInvoicingTransactionList: import("@reduxjs/toolkit").A
25
25
  ids: ID[];
26
26
  keepExistingListItems: boolean;
27
27
  nextCursor: string | null;
28
- }, "invoicingTransactionListView/updateInvoicingTransactionList">, updateInvoicingTransactionListFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingTransactionListView/updateInvoicingTransactionListFailure">, updateInvoicingTransactionFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoicingTransactionFilters, "invoicingTransactionListView/updateInvoicingTransactionFilters">, setInvoicingTransactionActiveTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"refund" | "payment" | "all" | "authorization" | "payment_reversal", "invoicingTransactionListView/setInvoicingTransactionActiveTab">, addInvoicingTransactionToList: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "invoicingTransactionListView/addInvoicingTransactionToList">, clearInvoicingTransactionListView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"invoicingTransactionListView/clearInvoicingTransactionListView">;
28
+ }, "invoicingTransactionListView/updateInvoicingTransactionList">, updateInvoicingTransactionListFailure: import("@reduxjs/toolkit").ActionCreatorWithPayload<ZeniAPIStatus<Record<string, unknown>>, "invoicingTransactionListView/updateInvoicingTransactionListFailure">, updateInvoicingTransactionFilters: import("@reduxjs/toolkit").ActionCreatorWithPayload<InvoicingTransactionFilters, "invoicingTransactionListView/updateInvoicingTransactionFilters">, setInvoicingTransactionActiveTab: import("@reduxjs/toolkit").ActionCreatorWithPayload<"refund" | "payment" | "all" | "authorization" | "payment_reversal" | "excess_transfer", "invoicingTransactionListView/setInvoicingTransactionActiveTab">, addInvoicingTransactionToList: import("@reduxjs/toolkit").ActionCreatorWithPayload<string, "invoicingTransactionListView/addInvoicingTransactionToList">, clearInvoicingTransactionListView: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"invoicingTransactionListView/clearInvoicingTransactionListView">;
29
29
  declare const _default: import("redux").Reducer<InvoicingTransactionListViewState>;
30
30
  export default _default;
@@ -26,7 +26,7 @@ const invoicingTransactionListView = (0, toolkit_1.createSlice)({
26
26
  reducers: {
27
27
  fetchInvoicingTransactionList: {
28
28
  reducer(draft, action) {
29
- const tab = draft.byTab[draft.activeTab];
29
+ const tab = (0, invoicingTransactionListViewState_1.invoicingTransactionTabStateFor)(draft.byTab, draft.activeTab);
30
30
  if (!action.payload.keepExistingListItems) {
31
31
  tab.ids = [];
32
32
  tab.nextCursor = null;
@@ -69,7 +69,7 @@ const invoicingTransactionListView = (0, toolkit_1.createSlice)({
69
69
  },
70
70
  },
71
71
  updateInvoicingTransactionList(draft, action) {
72
- const tab = draft.byTab[draft.activeTab];
72
+ const tab = (0, invoicingTransactionListViewState_1.invoicingTransactionTabStateFor)(draft.byTab, draft.activeTab);
73
73
  tab.ids = action.payload.keepExistingListItems
74
74
  ? [...new Set([...tab.ids, ...action.payload.ids])]
75
75
  : action.payload.ids;
@@ -78,7 +78,7 @@ const invoicingTransactionListView = (0, toolkit_1.createSlice)({
78
78
  tab.error = undefined;
79
79
  },
80
80
  updateInvoicingTransactionListFailure(draft, action) {
81
- const tab = draft.byTab[draft.activeTab];
81
+ const tab = (0, invoicingTransactionListViewState_1.invoicingTransactionTabStateFor)(draft.byTab, draft.activeTab);
82
82
  tab.fetchState = 'Error';
83
83
  tab.error = action.payload;
84
84
  },
@@ -98,7 +98,7 @@ const invoicingTransactionListView = (0, toolkit_1.createSlice)({
98
98
  addInvoicingTransactionToList(draft, action) {
99
99
  const id = action.payload;
100
100
  const prependTo = (tabId) => {
101
- const tab = draft.byTab[tabId];
101
+ const tab = (0, invoicingTransactionListViewState_1.invoicingTransactionTabStateFor)(draft.byTab, tabId);
102
102
  if (!tab.ids.includes(id)) {
103
103
  tab.ids = [id, ...tab.ids];
104
104
  }
@@ -1,4 +1,5 @@
1
1
  import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
2
+ import { InvoicingNamedOption } from '../../../entity/invoicing/invoicingCommonPayload';
2
3
  import { InvoicingTransaction } from '../../../entity/invoicing/invoicingTransaction/invoicingTransactionState';
3
4
  import { RootState } from '../../../reducer';
4
5
  import { InvoicingListSort } from '../invoicingApiHelper';
@@ -8,8 +9,15 @@ export interface InvoicingTransactionListView extends SelectorView {
8
9
  columns: InvoicingTransactionColumnConfig[];
9
10
  filters: InvoicingTransactionFilters;
10
11
  nextCursor: string | null;
12
+ /**
13
+ * Config lists this page labels from. Tabs on this list are transaction
14
+ * *types*, while row badges show transaction *status*, so both are exposed —
15
+ * conflating them left status badges with no names to resolve against.
16
+ */
17
+ statusOptions: InvoicingNamedOption[];
11
18
  tabIds: InvoicingTransactionTabId[];
12
19
  transactions: InvoicingTransaction[];
20
+ typeOptions: InvoicingNamedOption[];
13
21
  sort?: InvoicingListSort;
14
22
  }
15
23
  /**