@zeniai/client-epic-state 5.2.32-betaAK4 → 5.2.32-betaAK6

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 (132) hide show
  1. package/lib/epic.d.ts +6 -4
  2. package/lib/epic.js +30 -17
  3. package/lib/esm/epic.js +17 -4
  4. package/lib/esm/index.js +2 -1
  5. package/lib/esm/view/invoicing/couponView/fetchInvoicingCouponCountsEpic.js +29 -0
  6. package/lib/esm/view/invoicing/couponView/fetchInvoicingCouponListEpic.js +41 -0
  7. package/lib/esm/view/invoicing/couponView/fetchInvoicingCouponListPageEpic.js +22 -0
  8. package/lib/esm/view/invoicing/customerPaymentMethod/createInvoicingSetupIntentEpic.js +17 -0
  9. package/lib/esm/view/invoicing/customerPaymentMethod/fetchInvoicingPlaidLinkTokenEpic.js +15 -0
  10. package/lib/esm/view/invoicing/customerPaymentMethod/saveInvoicingPaymentMethodEpic.js +21 -0
  11. package/lib/esm/view/invoicing/customerPaymentMethod/sendInvoicingPaymentLinkEpic.js +26 -0
  12. package/lib/esm/view/invoicing/dataImportView/fetchInvoicingDataImportStatusEpic.js +14 -0
  13. package/lib/esm/view/invoicing/dataImportView/fetchInvoicingMigrationDiagnosticsEpic.js +44 -0
  14. package/lib/esm/view/invoicing/dataImportView/fetchInvoicingMigrationSessionEpic.js +14 -0
  15. package/lib/esm/view/invoicing/dataImportView/fetchInvoicingMigrationSessionsEpic.js +14 -0
  16. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewPayload.js +8 -0
  17. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer.js +48 -1
  18. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewSelector.js +52 -9
  19. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/fetchInvoicingPaymentLinkEmailPreviewEpic.js +31 -0
  20. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/fetchInvoicingPaymentLinkEmailPreviewPageEpic.js +23 -0
  21. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.js +4 -4
  22. package/lib/esm/view/invoicing/invoiceDetail/voidInvoiceHelper.js +32 -0
  23. package/lib/esm/view/invoicing/settingsView/initializeInvoicingBrandingAddressEpic.js +27 -0
  24. package/lib/esm/view/invoicing/settingsView/{invoicingBrandingFormEpics.js → submitInvoicingBrandingFormEpic.js} +3 -19
  25. package/lib/index.d.ts +5 -3
  26. package/lib/index.js +10 -5
  27. package/lib/view/invoicing/couponView/{couponViewEpics.d.ts → fetchInvoicingCouponCountsEpic.d.ts} +4 -2
  28. package/lib/view/invoicing/couponView/fetchInvoicingCouponCountsEpic.js +33 -0
  29. package/lib/view/invoicing/couponView/fetchInvoicingCouponListEpic.d.ts +8 -0
  30. package/lib/view/invoicing/couponView/fetchInvoicingCouponListEpic.js +45 -0
  31. package/lib/view/invoicing/couponView/fetchInvoicingCouponListPageEpic.d.ts +7 -0
  32. package/lib/view/invoicing/couponView/fetchInvoicingCouponListPageEpic.js +26 -0
  33. package/lib/view/invoicing/customerPaymentMethod/createInvoicingSetupIntentEpic.d.ts +8 -0
  34. package/lib/view/invoicing/customerPaymentMethod/createInvoicingSetupIntentEpic.js +21 -0
  35. package/lib/view/invoicing/customerPaymentMethod/customerPaymentMethodReducer.d.ts +4 -0
  36. package/lib/view/invoicing/customerPaymentMethod/{customerPaymentMethodEpic.d.ts → fetchInvoicingPlaidLinkTokenEpic.d.ts} +0 -3
  37. package/lib/view/invoicing/customerPaymentMethod/fetchInvoicingPlaidLinkTokenEpic.js +19 -0
  38. package/lib/view/invoicing/customerPaymentMethod/saveInvoicingPaymentMethodEpic.d.ts +8 -0
  39. package/lib/view/invoicing/customerPaymentMethod/saveInvoicingPaymentMethodEpic.js +25 -0
  40. package/lib/view/invoicing/customerPaymentMethod/sendInvoicingPaymentLinkEpic.d.ts +8 -0
  41. package/lib/view/invoicing/customerPaymentMethod/sendInvoicingPaymentLinkEpic.js +30 -0
  42. package/lib/view/invoicing/dataImportView/fetchInvoicingDataImportStatusEpic.d.ts +7 -0
  43. package/lib/view/invoicing/dataImportView/fetchInvoicingDataImportStatusEpic.js +18 -0
  44. package/lib/view/invoicing/dataImportView/{dataImportViewEpics.d.ts → fetchInvoicingMigrationDiagnosticsEpic.d.ts} +0 -3
  45. package/lib/view/invoicing/dataImportView/fetchInvoicingMigrationDiagnosticsEpic.js +48 -0
  46. package/lib/view/invoicing/dataImportView/fetchInvoicingMigrationSessionEpic.d.ts +7 -0
  47. package/lib/view/invoicing/dataImportView/fetchInvoicingMigrationSessionEpic.js +18 -0
  48. package/lib/view/invoicing/dataImportView/fetchInvoicingMigrationSessionsEpic.d.ts +7 -0
  49. package/lib/view/invoicing/dataImportView/fetchInvoicingMigrationSessionsEpic.js +18 -0
  50. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.d.ts +1 -0
  51. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewState.d.ts +1 -1
  52. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.d.ts +1 -0
  53. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewPayload.d.ts +27 -0
  54. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewPayload.js +10 -1
  55. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer.d.ts +16 -1
  56. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer.js +49 -2
  57. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewSelector.d.ts +45 -1
  58. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewSelector.js +54 -10
  59. package/lib/view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewState.d.ts +9 -0
  60. package/lib/view/invoicing/editInvoicingCustomerDetailView/fetchInvoicingPaymentLinkEmailPreviewEpic.d.ts +12 -0
  61. package/lib/view/invoicing/editInvoicingCustomerDetailView/fetchInvoicingPaymentLinkEmailPreviewEpic.js +35 -0
  62. package/lib/view/invoicing/editInvoicingCustomerDetailView/fetchInvoicingPaymentLinkEmailPreviewPageEpic.d.ts +10 -0
  63. package/lib/view/invoicing/editInvoicingCustomerDetailView/fetchInvoicingPaymentLinkEmailPreviewPageEpic.js +27 -0
  64. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.d.ts +55 -0
  65. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewReducer.d.ts +1 -1
  66. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.js +4 -4
  67. package/lib/view/invoicing/invoiceDetail/invoiceDetailPayload.d.ts +53 -0
  68. package/lib/view/invoicing/invoiceDetail/invoiceDetailReducer.d.ts +1 -1
  69. package/lib/view/invoicing/invoiceDetail/voidInvoiceHelper.d.ts +11 -0
  70. package/lib/view/invoicing/invoiceDetail/voidInvoiceHelper.js +38 -0
  71. package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewReducer.d.ts +1 -1
  72. package/lib/view/invoicing/invoicingCustomerListView/invoicingCustomerListViewState.d.ts +1 -1
  73. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewPayload.d.ts +25 -0
  74. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewReducer.d.ts +1 -1
  75. package/lib/view/invoicing/invoicingTransactionDetailView/invoicingTransactionDetailViewPayload.d.ts +8 -0
  76. package/lib/view/invoicing/invoicingTransactionDetailView/invoicingTransactionDetailViewReducer.d.ts +1 -1
  77. package/lib/view/invoicing/settingsView/{invoicingBrandingFormEpics.d.ts → initializeInvoicingBrandingAddressEpic.d.ts} +1 -8
  78. package/lib/view/invoicing/settingsView/initializeInvoicingBrandingAddressEpic.js +31 -0
  79. package/lib/view/invoicing/settingsView/submitInvoicingBrandingFormEpic.d.ts +20 -0
  80. package/lib/view/invoicing/settingsView/{invoicingBrandingFormEpics.js → submitInvoicingBrandingFormEpic.js} +1 -18
  81. package/package.json +1 -1
  82. package/lib/esm/view/invoicing/couponView/couponViewEpics.js +0 -76
  83. package/lib/esm/view/invoicing/customerPaymentMethod/customerPaymentMethodEpic.js +0 -63
  84. package/lib/esm/view/invoicing/dataImportView/dataImportViewEpics.js +0 -74
  85. package/lib/esm/view/invoicing/dataImportView/invoicingDataImportActionPayload.js +0 -1
  86. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemDetailPayload.js +0 -1
  87. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/invoicingCouponDetailPayload.js +0 -1
  88. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/invoicingCustomerDetailPayload.js +0 -1
  89. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/invoicingCustomerRecordSelector.js +0 -32
  90. package/lib/esm/view/invoicing/editInvoicingCustomerDetailView/promotionalCreditPayload.js +0 -1
  91. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionActionPayload.js +0 -1
  92. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionActionRequestPayload.js +0 -2
  93. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionDetailPayload.js +0 -1
  94. package/lib/esm/view/invoicing/invoiceDetail/invoicingInvoiceActionPayload.js +0 -1
  95. package/lib/esm/view/invoicing/invoiceDetail/invoicingInvoiceActionRequestPayload.js +0 -2
  96. package/lib/esm/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningActionPayload.js +0 -1
  97. package/lib/esm/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningActionRequestPayload.js +0 -2
  98. package/lib/esm/view/invoicing/invoicingTransactionDetailView/invoicingPaymentActionPayload.js +0 -1
  99. package/lib/esm/view/invoicing/invoicingTransactionDetailView/invoicingPaymentActionRequestPayload.js +0 -2
  100. package/lib/view/invoicing/couponView/couponViewEpics.js +0 -82
  101. package/lib/view/invoicing/customerPaymentMethod/customerPaymentMethodEpic.js +0 -70
  102. package/lib/view/invoicing/dataImportView/dataImportViewEpics.js +0 -81
  103. package/lib/view/invoicing/dataImportView/invoicingDataImportActionPayload.d.ts +0 -3
  104. package/lib/view/invoicing/dataImportView/invoicingDataImportActionPayload.js +0 -2
  105. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemDetailPayload.d.ts +0 -3
  106. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemDetailPayload.js +0 -2
  107. package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponDetailPayload.d.ts +0 -3
  108. package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponDetailPayload.js +0 -2
  109. package/lib/view/invoicing/editInvoicingCustomerDetailView/invoicingCustomerDetailPayload.d.ts +0 -3
  110. package/lib/view/invoicing/editInvoicingCustomerDetailView/invoicingCustomerDetailPayload.js +0 -2
  111. package/lib/view/invoicing/editInvoicingCustomerDetailView/invoicingCustomerRecordSelector.d.ts +0 -37
  112. package/lib/view/invoicing/editInvoicingCustomerDetailView/invoicingCustomerRecordSelector.js +0 -36
  113. package/lib/view/invoicing/editInvoicingCustomerDetailView/promotionalCreditPayload.d.ts +0 -3
  114. package/lib/view/invoicing/editInvoicingCustomerDetailView/promotionalCreditPayload.js +0 -2
  115. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionActionPayload.d.ts +0 -3
  116. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionActionPayload.js +0 -2
  117. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionActionRequestPayload.d.ts +0 -53
  118. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionActionRequestPayload.js +0 -3
  119. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionDetailPayload.d.ts +0 -3
  120. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionDetailPayload.js +0 -2
  121. package/lib/view/invoicing/invoiceDetail/invoicingInvoiceActionPayload.d.ts +0 -3
  122. package/lib/view/invoicing/invoiceDetail/invoicingInvoiceActionPayload.js +0 -2
  123. package/lib/view/invoicing/invoiceDetail/invoicingInvoiceActionRequestPayload.d.ts +0 -52
  124. package/lib/view/invoicing/invoiceDetail/invoicingInvoiceActionRequestPayload.js +0 -3
  125. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningActionPayload.d.ts +0 -3
  126. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningActionPayload.js +0 -2
  127. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningActionRequestPayload.d.ts +0 -24
  128. package/lib/view/invoicing/invoicingDunningCaseDetailView/invoicingDunningActionRequestPayload.js +0 -3
  129. package/lib/view/invoicing/invoicingTransactionDetailView/invoicingPaymentActionPayload.d.ts +0 -3
  130. package/lib/view/invoicing/invoicingTransactionDetailView/invoicingPaymentActionPayload.js +0 -2
  131. package/lib/view/invoicing/invoicingTransactionDetailView/invoicingPaymentActionRequestPayload.d.ts +0 -7
  132. package/lib/view/invoicing/invoicingTransactionDetailView/invoicingPaymentActionRequestPayload.js +0 -3
@@ -0,0 +1,14 @@
1
+ import { of } from 'rxjs';
2
+ import { catchError, filter, switchMap } from 'rxjs/operators';
3
+ import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
4
+ import { fetchInvoicingMigrationSession, updateInvoicingMigrationSessionFailure, upsertInvoicingMigrationSession, } from './dataImportViewReducer';
5
+ export const fetchInvoicingMigrationSessionEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchInvoicingMigrationSession.match), switchMap((action) => {
6
+ const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/data-import/${encodeURIComponent(action.payload)}`;
7
+ return zeniAPI.getJSON(apiUrl).pipe(switchMap((response) => {
8
+ if (isSuccessResponse(response) && response.data != null) {
9
+ return of(upsertInvoicingMigrationSession(response.data));
10
+ }
11
+ return of(updateInvoicingMigrationSessionFailure(response.status));
12
+ }), catchError((error) => of(updateInvoicingMigrationSessionFailure(createZeniAPIStatus('Unexpected Error', 'Fetch migration session REST API call errored out ' +
13
+ JSON.stringify(error))))));
14
+ }));
@@ -0,0 +1,14 @@
1
+ import { of } from 'rxjs';
2
+ import { catchError, filter, switchMap } from 'rxjs/operators';
3
+ import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
4
+ import { fetchInvoicingMigrationSessions, updateInvoicingMigrationSessions, updateInvoicingMigrationSessionsFailure, } from './dataImportViewReducer';
5
+ export const fetchInvoicingMigrationSessionsEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchInvoicingMigrationSessions.match), switchMap(() => {
6
+ const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/data-import/sessions`;
7
+ return zeniAPI.getJSON(apiUrl).pipe(switchMap((response) => {
8
+ if (isSuccessResponse(response)) {
9
+ return of(updateInvoicingMigrationSessions(response.data ?? []));
10
+ }
11
+ return of(updateInvoicingMigrationSessionsFailure(response.status));
12
+ }), catchError((error) => of(updateInvoicingMigrationSessionsFailure(createZeniAPIStatus('Unexpected Error', 'Fetch migration sessions REST API call errored out ' +
13
+ JSON.stringify(error))))));
14
+ }));
@@ -30,3 +30,11 @@ export const localDataToSaveInvoicingCustomerPayload = (localData, billingAddres
30
30
  : {}),
31
31
  };
32
32
  };
33
+ export const toInvoicingPaymentLinkEmailPreview = (payload) => ({
34
+ body: payload.body,
35
+ bodyToken: payload.body_token,
36
+ renderedHtmlTemplate: payload.rendered_html_template,
37
+ subject: payload.subject,
38
+ subjectToken: payload.subject_token,
39
+ to: payload.to,
40
+ });
@@ -2,6 +2,9 @@ import { createSlice } from '@reduxjs/toolkit';
2
2
  import { clearAll } from '../../../rootActions';
3
3
  import { initialInvoicingCustomerFormLocalData } from './invoicingCustomerFormConfig';
4
4
  export const initialState = {
5
+ emailPreviewFetchState: { fetchState: 'Not-Started', error: undefined },
6
+ emailPreview: undefined,
7
+ emailPreviewCustomerId: undefined,
5
8
  promotionalCreditSubmitState: { fetchState: 'Not-Started', error: undefined },
6
9
  recordStateById: {},
7
10
  fetchState: 'Not-Started',
@@ -17,6 +20,50 @@ const editInvoicingCustomerDetailView = createSlice({
17
20
  name: 'editInvoicingCustomerDetailView',
18
21
  initialState,
19
22
  reducers: {
23
+ /**
24
+ * Open the payment-link email composer. The guard epic decides whether the
25
+ * preview is already cached for this customer; `cacheOverride` forces the
26
+ * refetch behind Retry.
27
+ */
28
+ fetchInvoicingPaymentLinkEmailPreviewPage: {
29
+ reducer() {
30
+ // Orchestrator trigger only — the fetch below owns the state.
31
+ },
32
+ prepare(payload) {
33
+ return {
34
+ payload: {
35
+ cacheOverride: payload.cacheOverride ?? false,
36
+ customerId: payload.customerId,
37
+ },
38
+ };
39
+ },
40
+ },
41
+ fetchInvoicingPaymentLinkEmailPreview(draft, action) {
42
+ // A preview belongs to one customer, so anything cached for another is
43
+ // dropped rather than shown while this one loads.
44
+ draft.emailPreview = undefined;
45
+ draft.emailPreviewCustomerId = action.payload.customerId;
46
+ draft.emailPreviewFetchState = {
47
+ fetchState: 'In-Progress',
48
+ error: undefined,
49
+ };
50
+ },
51
+ updateInvoicingPaymentLinkEmailPreview(draft, action) {
52
+ draft.emailPreview = action.payload.preview;
53
+ draft.emailPreviewCustomerId = action.payload.customerId;
54
+ draft.emailPreviewFetchState = {
55
+ fetchState: 'Completed',
56
+ error: undefined,
57
+ };
58
+ },
59
+ updateInvoicingPaymentLinkEmailPreviewFailure(draft, action) {
60
+ draft.emailPreview = undefined;
61
+ draft.emailPreviewCustomerId = action.payload.customerId;
62
+ draft.emailPreviewFetchState = {
63
+ fetchState: 'Error',
64
+ error: action.payload.status,
65
+ };
66
+ },
20
67
  submitAddPromotionalCredits: {
21
68
  reducer(draft) {
22
69
  draft.promotionalCreditSubmitState = {
@@ -135,5 +182,5 @@ const editInvoicingCustomerDetailView = createSlice({
135
182
  });
136
183
  },
137
184
  });
138
- export const { addPromotionalCreditsFailure, addPromotionalCreditsSuccess, fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, seedInvoicingCustomerFormDraft, updateInvoicingCustomerDetail, resetPromotionalCreditAction, submitAddPromotionalCredits, updateInvoicingCustomerDetailFailure, updateInvoicingCustomerFormDraft, submitInvoicingCustomerForm, submitInvoicingCustomerFormSuccess, submitInvoicingCustomerFormFailure, resetEditInvoicingCustomerDetailView, initializeInvoicingCustomerAddress, } = editInvoicingCustomerDetailView.actions;
185
+ export const { fetchInvoicingPaymentLinkEmailPreview, fetchInvoicingPaymentLinkEmailPreviewPage, updateInvoicingPaymentLinkEmailPreview, updateInvoicingPaymentLinkEmailPreviewFailure, addPromotionalCreditsFailure, addPromotionalCreditsSuccess, fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, seedInvoicingCustomerFormDraft, updateInvoicingCustomerDetail, resetPromotionalCreditAction, submitAddPromotionalCredits, updateInvoicingCustomerDetailFailure, updateInvoicingCustomerFormDraft, submitInvoicingCustomerForm, submitInvoicingCustomerFormSuccess, submitInvoicingCustomerFormFailure, resetEditInvoicingCustomerDetailView, initializeInvoicingCustomerAddress, } = editInvoicingCustomerDetailView.actions;
139
186
  export default editInvoicingCustomerDetailView.reducer;
@@ -1,10 +1,47 @@
1
1
  import { reduceAllFetchState } from '../../../commonStateTypes/reduceFetchState';
2
2
  import { getInvoicingCustomerById } from '../../../entity/invoicing/invoicingCustomer/invoicingCustomerSelector';
3
3
  import { getFormattedAddress } from '../../addressView/addressViewSelector';
4
- import { getInvoicingPlaidLinkTokenFetchState } from '../customerPaymentMethod/customerPaymentMethodSelector';
5
- import { getInvoicingCustomerRecord, } from './invoicingCustomerRecordSelector';
6
4
  import { getInvoicingConfigView, invoicingFieldHelpForGroup, } from '../invoicingConfigView/invoicingConfigViewSelector';
7
5
  import { INVOICING_CUSTOMER_BILLING_ADDRESS_TYPE, initialInvoicingCustomerFormLocalData, } from './invoicingCustomerFormConfig';
6
+ import { getInvoicesByIds } from '../../../entity/invoicing/invoice/invoiceSelector';
7
+ import { invoicingCustomerPaymentMethods } from '../../../entity/invoicing/invoicingCustomer/invoicingCustomerSelector';
8
+ import { getInvoicingPaymentLinkSendState, getInvoicingPaymentMethodSaveState, getInvoicingPlaidLinkToken, getInvoicingPlaidLinkTokenFetchState, getInvoicingSentPaymentLinkEmail, getInvoicingSentPaymentLinkMagicUrl, getInvoicingSetupIntent, getInvoicingSetupIntentFetchState, } from '../customerPaymentMethod/customerPaymentMethodSelector';
9
+ import { isStripeConnectedFromSettings } from '../settingsView/invoicingSettingsHelpers';
10
+ import { getInvoicingSettings } from '../settingsView/settingsViewSelector';
11
+ /**
12
+ * `invoicingCustomerID` is absent in create mode, where there is no record to
13
+ * resolve — the view still renders, off an empty record.
14
+ */
15
+ export const getInvoicingCustomerRecord = (state, invoicingCustomerID) => {
16
+ const { invoicingCustomerState } = state;
17
+ const invoicingCustomerDetail = invoicingCustomerID == null
18
+ ? undefined
19
+ : state.editInvoicingCustomerDetailViewState.recordStateById[invoicingCustomerID];
20
+ const settings = getInvoicingSettings(state);
21
+ const invoicingCustomer = invoicingCustomerID == null
22
+ ? undefined
23
+ : getInvoicingCustomerById(invoicingCustomerState, invoicingCustomerID);
24
+ return {
25
+ fieldHelp: invoicingFieldHelpForGroup(state, 'customer'),
26
+ invoicingCustomer,
27
+ invoices: getInvoicesByIds(state.invoicingInvoiceState, state.invoicingInvoiceListState.invoiceByTab[state.invoicingInvoiceListState.activeTab]?.invoiceIds ?? []),
28
+ paymentMethods: invoicingCustomerPaymentMethods(invoicingCustomer),
29
+ setupIntent: getInvoicingSetupIntent(state),
30
+ setupIntentFetchState: getInvoicingSetupIntentFetchState(state),
31
+ plaidLinkToken: getInvoicingPlaidLinkToken(state),
32
+ paymentMethodSaveState: getInvoicingPaymentMethodSaveState(state),
33
+ sendLinkState: getInvoicingPaymentLinkSendState(state),
34
+ sentPaymentLinkEmail: getInvoicingSentPaymentLinkEmail(state),
35
+ sentPaymentLinkMagicUrl: getInvoicingSentPaymentLinkMagicUrl(state),
36
+ brandingAccentColor: settings?.accent_color,
37
+ brandingCompanyName: settings?.company_name,
38
+ brandingEmail: settings?.email,
39
+ brandingLogoUrl: settings?.logo_url,
40
+ stripeConnected: isStripeConnectedFromSettings(settings),
41
+ fetchState: invoicingCustomerDetail?.fetchState ?? 'Not-Started',
42
+ error: invoicingCustomerDetail?.error,
43
+ };
44
+ };
8
45
  /**
9
46
  * Bundled view for the customer create/edit form. Exposes the draft `localData`
10
47
  * (seeded from the existing customer entity in edit mode until the user edits),
@@ -33,21 +70,27 @@ export const getInvoicingCustomerFormView = (state, invoicingCustomerID) => {
33
70
  const billingAddressLabel = newAddress?.addressToCreate != null
34
71
  ? getFormattedAddress(newAddress.addressToCreate)
35
72
  : undefined;
36
- const { customerTypeOptions, netTermDayOptions, taxabilityOptions } = getInvoicingConfigView(state);
37
73
  const configState = getInvoicingConfigView(state);
38
- const recordState = state.editInvoicingCustomerDetailViewState
39
- .recordStateById[invoicingCustomerID ?? ''] ?? {
40
- error: undefined,
41
- fetchState: invoicingCustomerID != null ? 'Not-Started' : 'Completed',
42
- };
74
+ const { customerTypeOptions, netTermDayOptions, taxabilityOptions } = configState;
75
+ // In create mode there is nothing to load, so the record state reads as
76
+ // settled rather than pending.
77
+ const recordState = invoicingCustomerID == null
78
+ ? { error: undefined, fetchState: 'Completed' }
79
+ : (state.editInvoicingCustomerDetailViewState.recordStateById[invoicingCustomerID] ?? { error: undefined, fetchState: 'Not-Started' });
80
+ const { emailPreview, emailPreviewCustomerId, emailPreviewFetchState } = state.editInvoicingCustomerDetailViewState;
43
81
  return {
82
+ // A preview cached for another customer is not this screen's.
83
+ emailPreview: emailPreviewCustomerId === invoicingCustomerID ? emailPreview : undefined,
84
+ emailPreviewFetchState: emailPreviewCustomerId === invoicingCustomerID
85
+ ? emailPreviewFetchState
86
+ : { error: undefined, fetchState: 'Not-Started' },
44
87
  pageFetchState: reduceAllFetchState([
45
88
  recordState,
46
89
  { error: configState.error, fetchState: configState.fetchState },
47
90
  ]),
48
91
  plaidTokenFetchState: getInvoicingPlaidLinkTokenFetchState(state),
49
92
  promotionalCreditSubmitState: state.editInvoicingCustomerDetailViewState.promotionalCreditSubmitState,
50
- record: getInvoicingCustomerRecord(state, invoicingCustomerID ?? ''),
93
+ record: getInvoicingCustomerRecord(state, invoicingCustomerID),
51
94
  fieldHelp: invoicingFieldHelpForGroup(state, 'customer'),
52
95
  customerTypeOptions,
53
96
  localData,
@@ -0,0 +1,31 @@
1
+ import { of } from 'rxjs';
2
+ import { catchError, filter, map, switchMap } from 'rxjs/operators';
3
+ import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
4
+ import { fetchInvoicingPaymentLinkEmailPreview, updateInvoicingPaymentLinkEmailPreview, updateInvoicingPaymentLinkEmailPreviewFailure, } from './editInvoicingCustomerDetailViewReducer';
5
+ import { toInvoicingPaymentLinkEmailPreview, } from './editInvoicingCustomerDetailViewPayload';
6
+ /**
7
+ * Renders the payment-link email once, server-side, with sentinel tokens where
8
+ * the subject and body go. The composer splices the draft into those tokens as
9
+ * the user types, so editing costs no further requests.
10
+ */
11
+ export const fetchInvoicingPaymentLinkEmailPreviewEpic = (actions$, _state$, zeniAPI) => actions$.pipe(filter(fetchInvoicingPaymentLinkEmailPreview.match), switchMap((action) => {
12
+ const { customerId } = action.payload;
13
+ const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/customers/${encodeURIComponent(customerId)}/payment-link/email-preview`;
14
+ return zeniAPI
15
+ .postAndGetJSON(apiUrl, {})
16
+ .pipe(map((response) => {
17
+ if (isSuccessResponse(response) && response.data != null) {
18
+ return updateInvoicingPaymentLinkEmailPreview({
19
+ customerId,
20
+ preview: toInvoicingPaymentLinkEmailPreview(response.data),
21
+ });
22
+ }
23
+ return updateInvoicingPaymentLinkEmailPreviewFailure({
24
+ customerId,
25
+ status: response.status,
26
+ });
27
+ }), catchError((error) => of(updateInvoicingPaymentLinkEmailPreviewFailure({
28
+ customerId,
29
+ status: createZeniAPIStatus('Unexpected Error', `Payment link email preview REST API call errored out: ${error instanceof Error ? error.message : String(error)}`),
30
+ }))));
31
+ }));
@@ -0,0 +1,23 @@
1
+ import { EMPTY, of } from 'rxjs';
2
+ import { filter, mergeMap } from 'rxjs/operators';
3
+ import { fetchInvoicingPaymentLinkEmailPreview, fetchInvoicingPaymentLinkEmailPreviewPage, } from './editInvoicingCustomerDetailViewReducer';
4
+ /**
5
+ * Fetch unless this customer's preview is already loaded or in flight — or
6
+ * always when the caller forces a refresh via `cacheOverride` (Retry).
7
+ */
8
+ const shouldFetch = (fetchStateAndError, cacheOverride) => cacheOverride ||
9
+ (fetchStateAndError.fetchState !== 'Completed' &&
10
+ fetchStateAndError.fetchState !== 'In-Progress');
11
+ /**
12
+ * Opening the composer asks for the preview at most once per customer: a
13
+ * cached one is reused, and switching customer invalidates it.
14
+ */
15
+ export const fetchInvoicingPaymentLinkEmailPreviewPageEpic = (actions$, state$) => actions$.pipe(filter(fetchInvoicingPaymentLinkEmailPreviewPage.match), mergeMap((action) => {
16
+ const { cacheOverride, customerId } = action.payload;
17
+ const { emailPreviewCustomerId, emailPreviewFetchState } = state$.value.editInvoicingCustomerDetailViewState;
18
+ const cachedForThisCustomer = emailPreviewCustomerId === customerId;
19
+ return !cachedForThisCustomer ||
20
+ shouldFetch(emailPreviewFetchState, cacheOverride)
21
+ ? of(fetchInvoicingPaymentLinkEmailPreview({ customerId }))
22
+ : EMPTY;
23
+ }));
@@ -60,10 +60,10 @@ export const getInvoicingSubscriptionFormView = (state, invoicingSubscriptionID)
60
60
  recordState,
61
61
  { error: configState.error, fetchState: configState.fetchState },
62
62
  ]),
63
- cancelReasonCodeOptions: getInvoicingConfigView(state).subscriptionCancelReasonCodeOptions,
64
- subscriptionCommercialEditAllowedFromStatuses: getInvoicingConfigView(state).subscriptionCommercialEditAllowedFromStatuses,
65
- subscriptionLifecycleActionOptions: getInvoicingConfigView(state).subscriptionLifecycleActionOptions,
66
- subscriptionMetadataEditAllowedFromStatuses: getInvoicingConfigView(state).subscriptionMetadataEditAllowedFromStatuses,
63
+ cancelReasonCodeOptions: configState.subscriptionCancelReasonCodeOptions,
64
+ subscriptionCommercialEditAllowedFromStatuses: configState.subscriptionCommercialEditAllowedFromStatuses,
65
+ subscriptionLifecycleActionOptions: configState.subscriptionLifecycleActionOptions,
66
+ subscriptionMetadataEditAllowedFromStatuses: configState.subscriptionMetadataEditAllowedFromStatuses,
67
67
  recordState,
68
68
  fieldHelp: invoicingFieldHelpForGroup(state, 'subscription'),
69
69
  coupons: getInvoicingCouponListItems(state),
@@ -0,0 +1,32 @@
1
+ const pad2 = (value) => String(value).padStart(2, '0');
2
+ /** `YYYY-MM-DD` from a date's local calendar components. */
3
+ const toLocalIsoDate = (value) => `${value.getFullYear()}-${pad2(value.getMonth() + 1)}-${pad2(value.getDate())}`;
4
+ /**
5
+ * Whether an invoice falls before the current month. Voiding one of those
6
+ * leaves a hole in a closed period, which is why the adjustment credit note is
7
+ * offered — and defaulted on — for them.
8
+ */
9
+ export const isBackdatedInvoiceDate = (invoiceDate, referenceDate = new Date()) => {
10
+ if (invoiceDate.trim() === '') {
11
+ return false;
12
+ }
13
+ const parsed = new Date(invoiceDate);
14
+ if (Number.isNaN(parsed.getTime())) {
15
+ return false;
16
+ }
17
+ const monthStart = new Date(referenceDate.getFullYear(), referenceDate.getMonth(), 1);
18
+ return parsed < monthStart;
19
+ };
20
+ /** Whether the void dialog should pre-tick "create adjustment credit note". */
21
+ export const shouldDefaultAdjustmentCreditNote = (invoiceDate, referenceDate = new Date()) => isBackdatedInvoiceDate(invoiceDate, referenceDate);
22
+ /** The request body for the void action, given the user's credit-note choice. */
23
+ export const buildVoidInvoiceSubmitBody = (createAdjustmentCreditNote, referenceDate = new Date()) => {
24
+ if (!createAdjustmentCreditNote) {
25
+ return {};
26
+ }
27
+ return {
28
+ create_adjustment_credit_note: true,
29
+ credit_note_date: toLocalIsoDate(referenceDate),
30
+ reason_code: 'invoice_voided',
31
+ };
32
+ };
@@ -0,0 +1,27 @@
1
+ import { EMPTY, of } from 'rxjs';
2
+ import { filter, mergeMap } from 'rxjs/operators';
3
+ import { getAddressByAddressId } from '../../../entity/address/addressSelector';
4
+ import { newAddressInLocalStore, } from '../../addressView/addressViewReducer';
5
+ import { INVOICING_BUSINESS_ADDRESS_TYPE, } from './invoicingBrandingFormConfig';
6
+ import { updateInvoicingSettings, } from './settingsViewReducer';
7
+ /**
8
+ * On `submitInvoicingBrandingForm`, PUT the settings body built from the branding
9
+ * draft + the business address captured via the shared Address screen. The
10
+ * address is sent as a structured object (same shape as the customer save flow);
11
+ * state is updated from the response — mirroring `saveInvoicingCustomerEpic`.
12
+ */
13
+ export const initializeInvoicingBrandingAddressEpic = (actions$, state$) => actions$.pipe(filter(updateInvoicingSettings.match), mergeMap((action) => {
14
+ const rootState = state$.value;
15
+ const existing = rootState.addressViewState.newAddressState?.[INVOICING_BUSINESS_ADDRESS_TYPE]?.addressToCreate;
16
+ const addressId = action.payload.address?.address_id;
17
+ if (existing != null || addressId == null) {
18
+ return EMPTY;
19
+ }
20
+ const address = getAddressByAddressId(rootState.addressState, addressId);
21
+ return address != null
22
+ ? of(newAddressInLocalStore({
23
+ addressType: INVOICING_BUSINESS_ADDRESS_TYPE,
24
+ addressToCreate: address,
25
+ }))
26
+ : EMPTY;
27
+ }));
@@ -1,11 +1,10 @@
1
- import { EMPTY, of } from 'rxjs';
1
+ import { of } from 'rxjs';
2
2
  import { catchError, filter, mergeMap } from 'rxjs/operators';
3
3
  import { updateAddresses } from '../../../entity/address/addressReducer';
4
- import { getAddressByAddressId } from '../../../entity/address/addressSelector';
5
4
  import { createZeniAPIStatus, isSuccessResponse } from '../../../responsePayload';
6
- import { newAddressInLocalStore, resetNewAddressDataInLocalStore, } from '../../addressView/addressViewReducer';
5
+ import { resetNewAddressDataInLocalStore, } from '../../addressView/addressViewReducer';
7
6
  import { INVOICING_BUSINESS_ADDRESS_TYPE, brandingLocalDataToSettingsPayload, entityToInvoicingBrandingFormLocalData, } from './invoicingBrandingFormConfig';
8
- import { saveInvoicingSettingsFailure, saveInvoicingSettingsSuccess, submitInvoicingBrandingForm, updateInvoicingSettings, } from './settingsViewReducer';
7
+ import { saveInvoicingSettingsFailure, saveInvoicingSettingsSuccess, submitInvoicingBrandingForm, } from './settingsViewReducer';
9
8
  /**
10
9
  * On `submitInvoicingBrandingForm`, PUT the settings body built from the branding
11
10
  * draft + the business address captured via the shared Address screen. The
@@ -41,18 +40,3 @@ export const submitInvoicingBrandingFormEpic = (actions$, state$, zeniAPI) => ac
41
40
  * load — looked up in the shared address store by `address_id`, same as the
42
41
  * customer billing-address flow. Skips when an in-progress draft already exists.
43
42
  */
44
- export const initializeInvoicingBrandingAddressEpic = (actions$, state$) => actions$.pipe(filter(updateInvoicingSettings.match), mergeMap((action) => {
45
- const rootState = state$.value;
46
- const existing = rootState.addressViewState.newAddressState?.[INVOICING_BUSINESS_ADDRESS_TYPE]?.addressToCreate;
47
- const addressId = action.payload.address?.address_id;
48
- if (existing != null || addressId == null) {
49
- return EMPTY;
50
- }
51
- const address = getAddressByAddressId(rootState.addressState, addressId);
52
- return address != null
53
- ? of(newAddressInLocalStore({
54
- addressType: INVOICING_BUSINESS_ADDRESS_TYPE,
55
- addressToCreate: address,
56
- }))
57
- : EMPTY;
58
- }));
package/lib/index.d.ts CHANGED
@@ -1143,14 +1143,15 @@ export { getEditInvoicingCouponDetailViewState, getInvoicingCouponFormView, } fr
1143
1143
  export type { EditInvoicingCouponDetailView, InvoicingCouponFormView, } from './view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector';
1144
1144
  export { runInvoicingInvoiceAction, updateInvoicingInvoice, } from './view/invoicing/invoiceDetail/invoiceDetailReducer';
1145
1145
  export type { InvoicingInvoiceActionKind, RunInvoicingInvoiceActionPayload, UpdateInvoicingInvoicePayload, } from './view/invoicing/invoiceDetail/invoiceDetailReducer';
1146
- export type { VoidInvoiceBody } from './view/invoicing/invoiceDetail/invoicingInvoiceActionRequestPayload';
1146
+ export type { VoidInvoiceBody } from './view/invoicing/invoiceDetail/invoiceDetailPayload';
1147
+ export { buildVoidInvoiceSubmitBody, isBackdatedInvoiceDate, shouldDefaultAdjustmentCreditNote, } from './view/invoicing/invoiceDetail/voidInvoiceHelper';
1147
1148
  export { fetchInvoicingCatalogItemDetailPage, runInvoicingCatalogPlanAction, runInvoicingCatalogProductAction, } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer';
1148
1149
  export type { FetchInvoicingCatalogItemDetailPagePayload, RunInvoicingCatalogPlanActionPayload, RunInvoicingCatalogProductActionPayload, } from './view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer';
1149
1150
  export { runInvoicingDiscountAction } from './view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer';
1150
1151
  export type { RunInvoicingDiscountActionPayload } from './view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer';
1151
1152
  export { runInvoicingSubscriptionAction } from './view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewReducer';
1152
1153
  export type { RunInvoicingSubscriptionActionPayload } from './view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewReducer';
1153
- export type { InvoicingCancelSubscriptionValues } from './view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionActionRequestPayload';
1154
+ export type { InvoicingCancelSubscriptionValues } from './view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload';
1154
1155
  export { runInvoicingDunningAction } from './view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewReducer';
1155
1156
  export type { RunInvoicingDunningActionPayload } from './view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewReducer';
1156
1157
  export type { SaveInvoicingSettingsPayload } from './view/invoicing/settingsView/settingsViewReducer';
@@ -1169,7 +1170,8 @@ export { ALL_INVOICING_CUSTOMER_SORT_KEYS, ALL_INVOICING_CUSTOMER_TAB_IDS, INVOI
1169
1170
  export type { InvoicingCustomerColumnConfig, InvoicingCustomerFilters, InvoicingCustomerSortKey, InvoicingCustomerTabId, } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewState';
1170
1171
  export { getInvoicingCustomerListView } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector';
1171
1172
  export type { InvoicingCustomerListView } from './view/invoicing/invoicingCustomerListView/invoicingCustomerListViewSelector';
1172
- export { fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, } from './view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer';
1173
+ export { fetchInvoicingCustomerDetail, fetchInvoicingCustomerDetailPage, fetchInvoicingPaymentLinkEmailPreviewPage, } from './view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer';
1174
+ export type { InvoicingPaymentLinkEmailPreviewData } from './view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewPayload';
1173
1175
  export { createInvoicingSetupIntent, fetchInvoicingPlaidLinkToken, resetInvoicingCustomerPaymentMethod, saveInvoicingPaymentMethod, sendInvoicingPaymentLink, } from './view/invoicing/customerPaymentMethod/customerPaymentMethodReducer';
1174
1176
  export type { InvoicingSetupIntent } from './view/invoicing/customerPaymentMethod/customerPaymentMethodState';
1175
1177
  export { getInvoicingPaymentLinkSendState, getInvoicingPaymentMethodSaveState, getInvoicingPlaidLinkToken, getInvoicingSentPaymentLinkEmail, getInvoicingSentPaymentLinkMagicUrl, getInvoicingSetupIntent, getInvoicingSetupIntentFetchState, } from './view/invoicing/customerPaymentMethod/customerPaymentMethodSelector';
package/lib/index.js CHANGED
@@ -80,11 +80,11 @@ exports.getLastCreatedCardPolicyTemplateIds = exports.getLastCreatedCardPolicyTe
80
80
  exports.fetchAutoTransferRules = exports.getTreasuryTaxLetters = exports.fetchTreasuryTaxLetterList = exports.getTreasuryStatements = exports.fetchTreasuryStatementList = exports.getTreasuryTransferMoney = exports.clearTreasuryTransferMoney = exports.updateTreasuryTransferMoneyLocalData = exports.executeTreasuryTransferMoney = exports.getTreasuryDetail = exports.updateTreasuryTransactionListUIState = exports.fetchTreasuryTransactionList = exports.fetchTreasuryOverviewDetail = exports.getUpdateCardPolicyFetchState = exports.getCardPolicyFormDraft = exports.getCardPolicyDetailView = exports.getCardPolicyDetailFetchState = exports.updateCardPolicyFormDraft = exports.updateCardPolicyFetchStatus = exports.updateCardPolicyDetailFetchStatus = exports.updateCardPolicy = exports.fetchCardPolicyDetail = exports.getCardPolicyTemplateIds = exports.getCardPolicyListView = exports.getCardPolicyListFetchState = exports.getArchiveCardPolicyFetchState = exports.updateCardPolicyListFetchStatus = exports.updateArchiveCardPolicyFetchStatus = exports.prependCardPolicyTemplateIds = exports.fetchCardPolicyList = exports.archiveCardPolicy = exports.toManualCardPolicyTemplateRequestFromDraft = exports.toBulkCardPolicyTemplateRequestsFromDraft = exports.toCardPolicyTemplateRequestFromDraft = exports.applyAiCardPolicyFormDraftUpdate = exports.deriveAiPolicyReviewRowsFromInputs = exports.buildManualCardPolicyFormDraftSeed = exports.buildUploadReviewRows = exports.buildEmptyLimitRows = exports.buildAiCardPolicyFormDraftSeed = exports.toVendorChipFieldValue = exports.toMccCategoryChipFieldValue = exports.buildVendorChipId = exports.buildMccCategoryChipId = exports.VENDOR_CHIP_ID_PREFIX = exports.MCC_CHIP_ID_PREFIX = exports.toMccCategoryLike = exports.CARD_POLICY_LIMIT_ROW_ID_TRANSACTION = exports.CARD_POLICY_LIMIT_ROW_ID_REQUIRE_RECEIPT = exports.getManualCardPolicyFormDraft = void 0;
81
81
  exports.fetchInvoiceDetailPage = exports.fetchInvoiceDetail = exports.getInvoiceListView = exports.ALL_INVOICING_INVOICE_TAB_IDS = exports.updateInvoiceListFilters = exports.setInvoiceActiveTab = exports.fetchInvoiceListPage = exports.fetchInvoiceList = exports.fetchInvoiceKPIs = exports.fetchInvoiceCounts = exports.getInvoicesByIds = exports.getInvoiceById = exports.updateInvoices = exports.removeInvoice = exports.mapAuditLogEntry = exports.toAuditLogEntityRouteOption = exports.isInvoicingEntityLinkable = exports.buildInvoicingEntityPath = exports.toInvoicingDiscountLifecycleActionOption = exports.toInvoicingDiscountLifecycleAction = exports.toInvoicingCatalogProductLifecycleActionOption = exports.toInvoicingCatalogItemLifecycleActionOption = exports.toInvoicingCatalogProductLifecycleAction = exports.toInvoicingCatalogItemLifecycleAction = exports.toInvoicingSubscriptionLifecycleActionOption = exports.toInvoicingSubscriptionLifecycleAction = exports.toInvoicingDunningAction = exports.INVOICING_DISCOUNT_LIFECYCLE_ACTIONS = exports.INVOICING_CATALOG_PRODUCT_LIFECYCLE_ACTIONS = exports.INVOICING_CATALOG_ITEM_LIFECYCLE_ACTIONS = exports.INVOICING_SUBSCRIPTION_LIFECYCLE_ACTIONS = exports.INVOICING_DUNNING_ACTIONS = exports.toKycProvidedDocumentTypeFromAllowed = exports.toKycProvidedDocumentType = exports.DEFAULT_SESSION_CONFIG = exports.SessionManager = exports.getTransactionActivityLogView = exports.fetchTransactionActivityLog = exports.BULK_UPLOAD_BAR_COMPLETE_HOLD_MS = exports.BULK_UPLOAD_AUTOMATCHING_TIMEOUT_MS = exports.getAutoTransferRuleHistory = exports.getAutoTransferRuleById = exports.getAutoTransferRules = exports.clearRuleUpdateLocalData = exports.updateRuleLocalData = exports.fetchAutoTransferReviewDetail = exports.fetchAutoTransferRuleHistory = exports.deleteAutoTransferRule = exports.updateAutoTransferRule = exports.createAutoTransferRule = void 0;
82
82
  exports.submitInvoicingCustomerFormFailure = exports.submitInvoicingCustomerForm = exports.resetEditInvoicingCustomerDetailView = exports.initializeInvoicingCustomerAddress = exports.getRecordPaymentView = exports.getRecordPaymentInvoiceOptions = exports.getRecordPaymentFormView = exports.getCreateInvoiceFormView = exports.getInvoicingAuditView = exports.fetchInvoicingAuditLog = exports.getInvoicingOverview = exports.buildPeriodOptions = exports.fetchInvoicingOverview = exports.clearInvoicingOverview = exports.initialRecordPaymentFormLocalData = exports.localDataToRecordPaymentPayload = exports.localDataToInvoiceRecordPaymentBody = exports.initializeRecordPaymentDraftFromInvoice = exports.getCreateCreditNoteView = exports.getCreateCreditNoteFormView = exports.initialCreateCreditNoteFormLocalData = exports.localDataToCreateCreditNotePayload = exports.updateCreateCreditNoteFormDraft = exports.submitCreateCreditNote = exports.resetCreateCreditNote = exports.createCreditNoteSuccess = exports.createCreditNoteFailure = exports.getIssueCreditNoteView = exports.initialIssueCreditNoteFormLocalData = exports.localDataToIssueCreditNotePayload = exports.initializeIssueCreditNoteDraftFromInvoice = exports.computeIssueCreditNoteTotal = exports.updateIssueCreditNoteFormDraft = exports.submitIssueCreditNote = exports.resetIssueCreditNote = exports.issueCreditNoteSuccess = exports.issueCreditNoteFailure = exports.initializeIssueCreditNoteDraft = exports.updateRecordPaymentFormDraft = exports.submitRecordPayment = exports.initializeRecordPaymentDraft = exports.resetRecordPayment = exports.initialInvoicingCreateInvoiceFormLocalData = exports.createInvoiceFormLocalDataToRequest = exports.blankInvoicingCreateInvoiceLineItem = exports.updateInvoicingCreateInvoiceFormDraft = exports.resetCreateInvoice = exports.fetchCreateInvoiceFormPage = exports.createInvoice = exports.getInvoiceDetail = void 0;
83
- exports.runInvoicingDiscountAction = exports.runInvoicingCatalogProductAction = exports.runInvoicingCatalogPlanAction = exports.fetchInvoicingCatalogItemDetailPage = exports.updateInvoicingInvoice = exports.runInvoicingInvoiceAction = exports.getInvoicingCouponFormView = exports.getEditInvoicingCouponDetailViewState = exports.initialInvoicingCouponFormLocalData = exports.entityToInvoicingCouponFormLocalData = exports.updateInvoicingCouponFormDraft = exports.submitInvoicingCouponForm = exports.saveInvoicingCoupon = exports.resetEditInvoicingCouponDetailView = exports.fetchInvoicingCouponDetailPage = exports.getSavedInvoicingCatalogItemKind = exports.getSavedInvoicingCatalogItemId = exports.getInvoicingCatalogItemFormView = exports.getInvoicingApplicableCatalogItemOptions = exports.isTieredCatalogPricingModel = exports.initialInvoicingCatalogItemFormLocalData = exports.invoicingProductToCatalogItemFormSubFamily = exports.entityToInvoicingCatalogItemFormLocalData = exports.blankInvoicingCatalogTier = exports.blankInvoicingCatalogSubFamily = exports.INVOICING_CATALOG_TIER_TYPE_VALUES = exports.INVOICING_CATALOG_PRORATION_VALUES = exports.INVOICING_CATALOG_PRICING_MODEL_VALUES = exports.INVOICING_CATALOG_APPLICABILITY_VALUES = exports.updateInvoicingCatalogItemFormDraft = exports.submitInvoicingCatalogItemForm = exports.resetEditInvoicingCatalogItemDetailView = exports.getInvoicingSubscriptionFormView = exports.getEditInvoicingSubscriptionDetailViewState = exports.toInvoicingSubscriptionQuantity = exports.invoicingSubscriptionTodayIso = exports.initialInvoicingSubscriptionFormLocalData = exports.entityToInvoicingSubscriptionFormLocalData = exports.INVOICING_SUBSCRIPTION_SHIPPING_ADDRESS_TYPE = exports.updateInvoicingSubscriptionFormDraft = exports.submitInvoicingSubscriptionForm = exports.resetEditInvoicingSubscriptionDetailView = exports.initializeInvoicingSubscriptionAddress = exports.fetchInvoicingSubscriptionFormPage = exports.getInvoicingCustomerFormView = exports.initialInvoicingCustomerFormLocalData = exports.entityToInvoicingCustomerFormLocalData = exports.INVOICING_CUSTOMER_BILLING_ADDRESS_TYPE = exports.updateInvoicingCustomerFormDraft = exports.submitInvoicingCustomerFormSuccess = void 0;
84
- exports.ALL_INVOICING_SUBSCRIPTION_SORT_KEYS = exports.updateInvoicingSubscriptionFilters = exports.setInvoicingSubscriptionActiveTab = exports.fetchInvoicingSubscriptionListPage = exports.fetchInvoicingSubscriptionList = exports.fetchInvoicingSubscriptionCounts = exports.updateInvoicingSubscriptions = exports.removeInvoicingSubscription = exports.resetPromotionalCreditAction = exports.submitAddPromotionalCredits = exports.getInvoicingSetupIntentFetchState = exports.getInvoicingSetupIntent = exports.getInvoicingSentPaymentLinkMagicUrl = exports.getInvoicingSentPaymentLinkEmail = exports.getInvoicingPlaidLinkToken = exports.getInvoicingPaymentMethodSaveState = exports.getInvoicingPaymentLinkSendState = exports.sendInvoicingPaymentLink = exports.saveInvoicingPaymentMethod = exports.resetInvoicingCustomerPaymentMethod = exports.fetchInvoicingPlaidLinkToken = exports.createInvoicingSetupIntent = exports.fetchInvoicingCustomerDetailPage = exports.fetchInvoicingCustomerDetail = exports.getInvoicingCustomerListView = exports.INVOICING_CUSTOMER_COLUMNS = exports.ALL_INVOICING_CUSTOMER_TAB_IDS = exports.ALL_INVOICING_CUSTOMER_SORT_KEYS = exports.updateInvoicingCustomerFilters = exports.setInvoicingCustomerActiveTab = exports.fetchInvoicingCustomerListPage = exports.fetchInvoicingCustomerList = exports.fetchInvoicingCustomerCounts = exports.updateInvoicingCustomers = exports.removeInvoicingCustomer = exports.INVOICING_LIST_PAGE_SIZE = exports.uploadInvoicingMigrationFiles = exports.startInvoicingMigration = exports.rollbackInvoicingMigration = exports.retryInvoicingMigration = exports.connectInvoicingChargebee = exports.getInvoicingDataImportView = exports.setInvoicingActiveMigrationSessionId = exports.fetchInvoicingMigrationSessions = exports.fetchInvoicingMigrationSession = exports.fetchInvoicingMigrationDiagnostics = exports.fetchInvoicingDataImportStatus = exports.runInvoicingPaymentAction = exports.runInvoicingDunningAction = exports.runInvoicingSubscriptionAction = void 0;
85
- exports.getInvoicingCouponListView = exports.getInvoicingCouponListNextCursor = exports.getInvoicingCouponListItems = exports.getInvoicingCouponListHasMore = exports.getInvoicingCouponListFilters = exports.getInvoicingCouponListFetchState = exports.getInvoicingCouponCounts = exports.INVOICING_COUPON_COLUMNS = exports.ALL_INVOICING_COUPON_TAB_IDS = exports.ALL_INVOICING_COUPON_SORT_KEYS = exports.updateInvoicingCouponFilters = exports.setInvoicingCouponActiveTab = exports.fetchInvoicingCouponListPage = exports.fetchInvoicingCouponList = exports.fetchInvoicingCouponCounts = exports.updateInvoicingCoupons = exports.removeInvoicingCoupon = exports.getInvoicingCreditNoteDetail = exports.getInvoicingCreditNoteById = exports.fetchInvoicingCreditNoteDetail = exports.getInvoicingCreditNoteListView = exports.INVOICING_CREDIT_NOTE_COLUMNS = exports.ALL_INVOICING_CREDIT_NOTE_TAB_IDS = exports.ALL_INVOICING_CREDIT_NOTE_SORT_KEYS = exports.updateInvoicingCreditNoteFilters = exports.setInvoicingCreditNoteActiveTab = exports.fetchInvoicingCreditNoteListPage = exports.fetchInvoicingCreditNoteList = exports.fetchInvoicingCreditNoteCounts = exports.updateInvoicingCreditNotes = exports.removeInvoicingCreditNote = exports.getInvoicingTransactionDetail = exports.getInvoicingTransactionById = exports.fetchInvoicingTransactionDetail = exports.getInvoicingTransactionListView = exports.INVOICING_TRANSACTION_COLUMNS = exports.ALL_INVOICING_TRANSACTION_TAB_IDS = exports.ALL_INVOICING_TRANSACTION_SORT_KEYS = exports.updateInvoicingTransactionFilters = exports.setInvoicingTransactionActiveTab = exports.fetchInvoicingTransactionListPage = exports.fetchInvoicingTransactionList = exports.updateInvoicingTransactions = exports.removeInvoicingTransaction = exports.getInvoicingSubscriptionById = exports.fetchInvoicingSubscriptionDetailPage = exports.fetchInvoicingSubscriptionDetail = exports.getInvoicingSubscriptionListView = exports.INVOICING_SUBSCRIPTION_COLUMNS = exports.ALL_INVOICING_SUBSCRIPTION_TAB_IDS = void 0;
86
- exports.getInvoicingBrandingFormView = exports.updateInvoicingSettings = exports.updateInvoicingQboSettingsDraft = exports.updateInvoicingBrandingFormDraft = exports.submitInvoicingQboSettings = exports.submitInvoicingBrandingForm = exports.saveInvoicingSettings = exports.resetSaveInvoicingSettings = exports.resetInvoicingQboSettingsDraft = exports.resetInvoicingBrandingFormDraft = exports.fetchInvoicingSettings = exports.disconnectInvoicingStripe = exports.connectInvoicingStripe = exports.getInvoicingProductById = exports.getInvoicingPlanById = exports.fetchInvoicingCatalogItemDetail = exports.getInvoicingCatalogListView = exports.INVOICING_PRODUCT_COLUMNS = exports.ALL_INVOICING_PRODUCT_SORT_KEYS = exports.updateInvoicingCatalogProductFilters = exports.updateInvoicingCatalogPlanFilters = exports.fetchInvoicingCatalogProductList = exports.fetchInvoicingCatalogPlanList = exports.fetchInvoicingCatalogListPage = exports.fetchInvoicingCatalogCounts = exports.updateInvoicingProducts = exports.removeInvoicingProduct = exports.updateInvoicingPlans = exports.removeInvoicingPlan = exports.mergeInvoicingPlanSubFamily = exports.getInvoicingDunningEmailPreview = exports.getInvoicingDunningCaseDetail = exports.getInvoicingDunningCaseById = exports.invalidateInvoicingDunningEmailPreview = exports.fetchInvoicingDunningEmailPreviewPage = exports.fetchInvoicingDunningCaseDetail = exports.clearInvoicingDunningCaseDetailView = exports.getInvoicingDunningCaseListView = exports.INVOICING_DUNNING_CASE_COLUMNS = exports.ALL_INVOICING_DUNNING_CASE_TAB_IDS = exports.ALL_INVOICING_DUNNING_CASE_SORT_KEYS = exports.updateInvoicingDunningCaseFilters = exports.setInvoicingDunningCaseActiveTab = exports.fetchInvoicingDunningCaseListPage = exports.fetchInvoicingDunningCaseList = exports.fetchInvoicingDunningCaseCounts = exports.updateInvoicingDunningCases = exports.removeInvoicingDunningCase = exports.fetchInvoicingCouponDetail = exports.getInvoicingCouponById = void 0;
87
- exports.isPendingReviewRow = exports.isRenderableOneTimeAccrual = exports.isOneTimeAccrualRow = exports.isExistingTabRow = exports.isAiAccountantSchedule = exports.isAccruedScheduleRow = exports.getJEScheduleRowType = exports.getExpenseAutomationJEOneTimeAccrualDetailView = exports.getInvoicingOnboardingGateView = exports.getInvoicingConfigView = exports.updateInvoicingConfig = exports.resetInvoicingConfigActionStates = exports.fetchInvoicingConfig = exports.enableInvoicing = exports.acceptInvoicingTerms = exports.toInvoicingQboCustomerMatchingMode = exports.toInvoicingNamedOptionsByKey = exports.getInvoicingQboAccountMappingId = exports.INVOICING_QBO_CUSTOMER_MATCHING_MODES = exports.getInvoicingQboView = exports.invoicingAccountsForQboAccountTypes = exports.startInvoicingQboBackfill = exports.retryInvoicingQboSyncTask = exports.fetchInvoicingQboSyncHealth = exports.fetchInvoicingQboConnection = exports.fetchInvoicingAccountingPickers = exports.isStripeConnectedFromSettings = exports.initialInvoicingBrandingFormLocalData = exports.entityToInvoicingBrandingFormLocalData = exports.INVOICING_BUSINESS_ADDRESS_TYPE = exports.invoicingQboSettingsLocalDataToPayload = exports.initialInvoicingQboSettingsLocalData = exports.entityToInvoicingQboSettingsLocalData = exports.getInvoicingSettingsView = exports.getInvoicingSettingsHubView = exports.getInvoicingSettingsFetchState = exports.getInvoicingSettings = exports.getInvoicingQboSettingsFormView = void 0;
83
+ exports.fetchInvoicingCatalogItemDetailPage = exports.shouldDefaultAdjustmentCreditNote = exports.isBackdatedInvoiceDate = exports.buildVoidInvoiceSubmitBody = exports.updateInvoicingInvoice = exports.runInvoicingInvoiceAction = exports.getInvoicingCouponFormView = exports.getEditInvoicingCouponDetailViewState = exports.initialInvoicingCouponFormLocalData = exports.entityToInvoicingCouponFormLocalData = exports.updateInvoicingCouponFormDraft = exports.submitInvoicingCouponForm = exports.saveInvoicingCoupon = exports.resetEditInvoicingCouponDetailView = exports.fetchInvoicingCouponDetailPage = exports.getSavedInvoicingCatalogItemKind = exports.getSavedInvoicingCatalogItemId = exports.getInvoicingCatalogItemFormView = exports.getInvoicingApplicableCatalogItemOptions = exports.isTieredCatalogPricingModel = exports.initialInvoicingCatalogItemFormLocalData = exports.invoicingProductToCatalogItemFormSubFamily = exports.entityToInvoicingCatalogItemFormLocalData = exports.blankInvoicingCatalogTier = exports.blankInvoicingCatalogSubFamily = exports.INVOICING_CATALOG_TIER_TYPE_VALUES = exports.INVOICING_CATALOG_PRORATION_VALUES = exports.INVOICING_CATALOG_PRICING_MODEL_VALUES = exports.INVOICING_CATALOG_APPLICABILITY_VALUES = exports.updateInvoicingCatalogItemFormDraft = exports.submitInvoicingCatalogItemForm = exports.resetEditInvoicingCatalogItemDetailView = exports.getInvoicingSubscriptionFormView = exports.getEditInvoicingSubscriptionDetailViewState = exports.toInvoicingSubscriptionQuantity = exports.invoicingSubscriptionTodayIso = exports.initialInvoicingSubscriptionFormLocalData = exports.entityToInvoicingSubscriptionFormLocalData = exports.INVOICING_SUBSCRIPTION_SHIPPING_ADDRESS_TYPE = exports.updateInvoicingSubscriptionFormDraft = exports.submitInvoicingSubscriptionForm = exports.resetEditInvoicingSubscriptionDetailView = exports.initializeInvoicingSubscriptionAddress = exports.fetchInvoicingSubscriptionFormPage = exports.getInvoicingCustomerFormView = exports.initialInvoicingCustomerFormLocalData = exports.entityToInvoicingCustomerFormLocalData = exports.INVOICING_CUSTOMER_BILLING_ADDRESS_TYPE = exports.updateInvoicingCustomerFormDraft = exports.submitInvoicingCustomerFormSuccess = void 0;
84
+ exports.fetchInvoicingSubscriptionList = exports.fetchInvoicingSubscriptionCounts = exports.updateInvoicingSubscriptions = exports.removeInvoicingSubscription = exports.resetPromotionalCreditAction = exports.submitAddPromotionalCredits = exports.getInvoicingSetupIntentFetchState = exports.getInvoicingSetupIntent = exports.getInvoicingSentPaymentLinkMagicUrl = exports.getInvoicingSentPaymentLinkEmail = exports.getInvoicingPlaidLinkToken = exports.getInvoicingPaymentMethodSaveState = exports.getInvoicingPaymentLinkSendState = exports.sendInvoicingPaymentLink = exports.saveInvoicingPaymentMethod = exports.resetInvoicingCustomerPaymentMethod = exports.fetchInvoicingPlaidLinkToken = exports.createInvoicingSetupIntent = exports.fetchInvoicingPaymentLinkEmailPreviewPage = exports.fetchInvoicingCustomerDetailPage = exports.fetchInvoicingCustomerDetail = exports.getInvoicingCustomerListView = exports.INVOICING_CUSTOMER_COLUMNS = exports.ALL_INVOICING_CUSTOMER_TAB_IDS = exports.ALL_INVOICING_CUSTOMER_SORT_KEYS = exports.updateInvoicingCustomerFilters = exports.setInvoicingCustomerActiveTab = exports.fetchInvoicingCustomerListPage = exports.fetchInvoicingCustomerList = exports.fetchInvoicingCustomerCounts = exports.updateInvoicingCustomers = exports.removeInvoicingCustomer = exports.INVOICING_LIST_PAGE_SIZE = exports.uploadInvoicingMigrationFiles = exports.startInvoicingMigration = exports.rollbackInvoicingMigration = exports.retryInvoicingMigration = exports.connectInvoicingChargebee = exports.getInvoicingDataImportView = exports.setInvoicingActiveMigrationSessionId = exports.fetchInvoicingMigrationSessions = exports.fetchInvoicingMigrationSession = exports.fetchInvoicingMigrationDiagnostics = exports.fetchInvoicingDataImportStatus = exports.runInvoicingPaymentAction = exports.runInvoicingDunningAction = exports.runInvoicingSubscriptionAction = exports.runInvoicingDiscountAction = exports.runInvoicingCatalogProductAction = exports.runInvoicingCatalogPlanAction = void 0;
85
+ exports.getInvoicingCouponListFilters = exports.getInvoicingCouponListFetchState = exports.getInvoicingCouponCounts = exports.INVOICING_COUPON_COLUMNS = exports.ALL_INVOICING_COUPON_TAB_IDS = exports.ALL_INVOICING_COUPON_SORT_KEYS = exports.updateInvoicingCouponFilters = exports.setInvoicingCouponActiveTab = exports.fetchInvoicingCouponListPage = exports.fetchInvoicingCouponList = exports.fetchInvoicingCouponCounts = exports.updateInvoicingCoupons = exports.removeInvoicingCoupon = exports.getInvoicingCreditNoteDetail = exports.getInvoicingCreditNoteById = exports.fetchInvoicingCreditNoteDetail = exports.getInvoicingCreditNoteListView = exports.INVOICING_CREDIT_NOTE_COLUMNS = exports.ALL_INVOICING_CREDIT_NOTE_TAB_IDS = exports.ALL_INVOICING_CREDIT_NOTE_SORT_KEYS = exports.updateInvoicingCreditNoteFilters = exports.setInvoicingCreditNoteActiveTab = exports.fetchInvoicingCreditNoteListPage = exports.fetchInvoicingCreditNoteList = exports.fetchInvoicingCreditNoteCounts = exports.updateInvoicingCreditNotes = exports.removeInvoicingCreditNote = exports.getInvoicingTransactionDetail = exports.getInvoicingTransactionById = exports.fetchInvoicingTransactionDetail = exports.getInvoicingTransactionListView = exports.INVOICING_TRANSACTION_COLUMNS = exports.ALL_INVOICING_TRANSACTION_TAB_IDS = exports.ALL_INVOICING_TRANSACTION_SORT_KEYS = exports.updateInvoicingTransactionFilters = exports.setInvoicingTransactionActiveTab = exports.fetchInvoicingTransactionListPage = exports.fetchInvoicingTransactionList = exports.updateInvoicingTransactions = exports.removeInvoicingTransaction = exports.getInvoicingSubscriptionById = exports.fetchInvoicingSubscriptionDetailPage = exports.fetchInvoicingSubscriptionDetail = exports.getInvoicingSubscriptionListView = exports.INVOICING_SUBSCRIPTION_COLUMNS = exports.ALL_INVOICING_SUBSCRIPTION_TAB_IDS = exports.ALL_INVOICING_SUBSCRIPTION_SORT_KEYS = exports.updateInvoicingSubscriptionFilters = exports.setInvoicingSubscriptionActiveTab = exports.fetchInvoicingSubscriptionListPage = void 0;
86
+ exports.submitInvoicingQboSettings = exports.submitInvoicingBrandingForm = exports.saveInvoicingSettings = exports.resetSaveInvoicingSettings = exports.resetInvoicingQboSettingsDraft = exports.resetInvoicingBrandingFormDraft = exports.fetchInvoicingSettings = exports.disconnectInvoicingStripe = exports.connectInvoicingStripe = exports.getInvoicingProductById = exports.getInvoicingPlanById = exports.fetchInvoicingCatalogItemDetail = exports.getInvoicingCatalogListView = exports.INVOICING_PRODUCT_COLUMNS = exports.ALL_INVOICING_PRODUCT_SORT_KEYS = exports.updateInvoicingCatalogProductFilters = exports.updateInvoicingCatalogPlanFilters = exports.fetchInvoicingCatalogProductList = exports.fetchInvoicingCatalogPlanList = exports.fetchInvoicingCatalogListPage = exports.fetchInvoicingCatalogCounts = exports.updateInvoicingProducts = exports.removeInvoicingProduct = exports.updateInvoicingPlans = exports.removeInvoicingPlan = exports.mergeInvoicingPlanSubFamily = exports.getInvoicingDunningEmailPreview = exports.getInvoicingDunningCaseDetail = exports.getInvoicingDunningCaseById = exports.invalidateInvoicingDunningEmailPreview = exports.fetchInvoicingDunningEmailPreviewPage = exports.fetchInvoicingDunningCaseDetail = exports.clearInvoicingDunningCaseDetailView = exports.getInvoicingDunningCaseListView = exports.INVOICING_DUNNING_CASE_COLUMNS = exports.ALL_INVOICING_DUNNING_CASE_TAB_IDS = exports.ALL_INVOICING_DUNNING_CASE_SORT_KEYS = exports.updateInvoicingDunningCaseFilters = exports.setInvoicingDunningCaseActiveTab = exports.fetchInvoicingDunningCaseListPage = exports.fetchInvoicingDunningCaseList = exports.fetchInvoicingDunningCaseCounts = exports.updateInvoicingDunningCases = exports.removeInvoicingDunningCase = exports.fetchInvoicingCouponDetail = exports.getInvoicingCouponById = exports.getInvoicingCouponListView = exports.getInvoicingCouponListNextCursor = exports.getInvoicingCouponListItems = exports.getInvoicingCouponListHasMore = void 0;
87
+ exports.isPendingReviewRow = exports.isRenderableOneTimeAccrual = exports.isOneTimeAccrualRow = exports.isExistingTabRow = exports.isAiAccountantSchedule = exports.isAccruedScheduleRow = exports.getJEScheduleRowType = exports.getExpenseAutomationJEOneTimeAccrualDetailView = exports.getInvoicingOnboardingGateView = exports.getInvoicingConfigView = exports.updateInvoicingConfig = exports.resetInvoicingConfigActionStates = exports.fetchInvoicingConfig = exports.enableInvoicing = exports.acceptInvoicingTerms = exports.toInvoicingQboCustomerMatchingMode = exports.toInvoicingNamedOptionsByKey = exports.getInvoicingQboAccountMappingId = exports.INVOICING_QBO_CUSTOMER_MATCHING_MODES = exports.getInvoicingQboView = exports.invoicingAccountsForQboAccountTypes = exports.startInvoicingQboBackfill = exports.retryInvoicingQboSyncTask = exports.fetchInvoicingQboSyncHealth = exports.fetchInvoicingQboConnection = exports.fetchInvoicingAccountingPickers = exports.isStripeConnectedFromSettings = exports.initialInvoicingBrandingFormLocalData = exports.entityToInvoicingBrandingFormLocalData = exports.INVOICING_BUSINESS_ADDRESS_TYPE = exports.invoicingQboSettingsLocalDataToPayload = exports.initialInvoicingQboSettingsLocalData = exports.entityToInvoicingQboSettingsLocalData = exports.getInvoicingSettingsView = exports.getInvoicingSettingsHubView = exports.getInvoicingSettingsFetchState = exports.getInvoicingSettings = exports.getInvoicingQboSettingsFormView = exports.getInvoicingBrandingFormView = exports.updateInvoicingSettings = exports.updateInvoicingQboSettingsDraft = exports.updateInvoicingBrandingFormDraft = void 0;
88
88
  const allowedValue_1 = require("./commonStateTypes/allowedValue");
89
89
  Object.defineProperty(exports, "isAllowedValueWithCode", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithCode; } });
90
90
  Object.defineProperty(exports, "isAllowedValueWithID", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithID; } });
@@ -2914,6 +2914,10 @@ Object.defineProperty(exports, "getInvoicingCouponFormView", { enumerable: true,
2914
2914
  var invoiceDetailReducer_2 = require("./view/invoicing/invoiceDetail/invoiceDetailReducer");
2915
2915
  Object.defineProperty(exports, "runInvoicingInvoiceAction", { enumerable: true, get: function () { return invoiceDetailReducer_2.runInvoicingInvoiceAction; } });
2916
2916
  Object.defineProperty(exports, "updateInvoicingInvoice", { enumerable: true, get: function () { return invoiceDetailReducer_2.updateInvoicingInvoice; } });
2917
+ var voidInvoiceHelper_1 = require("./view/invoicing/invoiceDetail/voidInvoiceHelper");
2918
+ Object.defineProperty(exports, "buildVoidInvoiceSubmitBody", { enumerable: true, get: function () { return voidInvoiceHelper_1.buildVoidInvoiceSubmitBody; } });
2919
+ Object.defineProperty(exports, "isBackdatedInvoiceDate", { enumerable: true, get: function () { return voidInvoiceHelper_1.isBackdatedInvoiceDate; } });
2920
+ Object.defineProperty(exports, "shouldDefaultAdjustmentCreditNote", { enumerable: true, get: function () { return voidInvoiceHelper_1.shouldDefaultAdjustmentCreditNote; } });
2917
2921
  var editInvoicingCatalogItemDetailViewReducer_2 = require("./view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewReducer");
2918
2922
  Object.defineProperty(exports, "fetchInvoicingCatalogItemDetailPage", { enumerable: true, get: function () { return editInvoicingCatalogItemDetailViewReducer_2.fetchInvoicingCatalogItemDetailPage; } });
2919
2923
  Object.defineProperty(exports, "runInvoicingCatalogPlanAction", { enumerable: true, get: function () { return editInvoicingCatalogItemDetailViewReducer_2.runInvoicingCatalogPlanAction; } });
@@ -2961,6 +2965,7 @@ Object.defineProperty(exports, "getInvoicingCustomerListView", { enumerable: tru
2961
2965
  var editInvoicingCustomerDetailViewReducer_2 = require("./view/invoicing/editInvoicingCustomerDetailView/editInvoicingCustomerDetailViewReducer");
2962
2966
  Object.defineProperty(exports, "fetchInvoicingCustomerDetail", { enumerable: true, get: function () { return editInvoicingCustomerDetailViewReducer_2.fetchInvoicingCustomerDetail; } });
2963
2967
  Object.defineProperty(exports, "fetchInvoicingCustomerDetailPage", { enumerable: true, get: function () { return editInvoicingCustomerDetailViewReducer_2.fetchInvoicingCustomerDetailPage; } });
2968
+ Object.defineProperty(exports, "fetchInvoicingPaymentLinkEmailPreviewPage", { enumerable: true, get: function () { return editInvoicingCustomerDetailViewReducer_2.fetchInvoicingPaymentLinkEmailPreviewPage; } });
2964
2969
  // ── Invoicing: customer payment methods ───────────────────────────────────────
2965
2970
  var customerPaymentMethodReducer_1 = require("./view/invoicing/customerPaymentMethod/customerPaymentMethodReducer");
2966
2971
  Object.defineProperty(exports, "createInvoicingSetupIntent", { enumerable: true, get: function () { return customerPaymentMethodReducer_1.createInvoicingSetupIntent; } });
@@ -5,11 +5,13 @@ import { RootState } from '../../../rootStateTypes';
5
5
  import { ZeniAPI } from '../../../zeniAPI';
6
6
  import { fetchInvoicingCouponCounts, fetchInvoicingCouponList, fetchInvoicingCouponListPage, updateInvoicingCouponCounts, updateInvoicingCouponCountsFailure, updateInvoicingCouponList, updateInvoicingCouponListFailure } from './couponViewReducer';
7
7
  export type ActionType = ReturnType<typeof fetchInvoicingCouponList> | ReturnType<typeof fetchInvoicingCouponListPage> | ReturnType<typeof fetchInvoicingCouponCounts> | ReturnType<typeof updateInvoicingCouponList> | ReturnType<typeof updateInvoicingCouponListFailure> | ReturnType<typeof updateInvoicingCouponCounts> | ReturnType<typeof updateInvoicingCouponCountsFailure> | ReturnType<typeof updateInvoicingCoupons>;
8
- export declare const fetchInvoicingCouponListEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
8
+ /**
9
+ * Fetch unless the endpoint is already loaded or in flight — or always when the
10
+ * caller forces a refresh via `cacheOverride` (e.g. on a filter/sort change).
11
+ */
9
12
  export declare const fetchInvoicingCouponCountsEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
10
13
  /**
11
14
  * Orchestrates the discounts list page: on `fetchInvoicingCouponListPage`, fans
12
15
  * out to the list and counts fetches, skipping any whose data is already
13
16
  * cached unless `cacheOverride` is set (e.g. on a filter/sort change).
14
17
  */
15
- export declare const fetchInvoicingCouponListPageEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>) => Observable<ActionType>;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchInvoicingCouponCountsEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../responsePayload");
7
+ const invoicingApiHelper_1 = require("../invoicingApiHelper");
8
+ const couponViewReducer_1 = require("./couponViewReducer");
9
+ /**
10
+ * Fetch unless the endpoint is already loaded or in flight — or always when the
11
+ * caller forces a refresh via `cacheOverride` (e.g. on a filter/sort change).
12
+ */
13
+ const fetchInvoicingCouponCountsEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(couponViewReducer_1.fetchInvoicingCouponCounts.match), (0, operators_1.switchMap)(() => {
14
+ const { filters } = state$.value.invoicingCouponViewState;
15
+ const params = new URLSearchParams();
16
+ if (filters.search != null && filters.search.length > 0) {
17
+ params.set('search', filters.search);
18
+ }
19
+ const apiUrl = (0, invoicingApiHelper_1.withQuery)(`${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/discounts/counts`, params);
20
+ return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.switchMap)((response) => {
21
+ if ((0, responsePayload_1.isSuccessResponse)(response) && response.data != null) {
22
+ return (0, rxjs_1.of)((0, couponViewReducer_1.updateInvoicingCouponCounts)(response.data));
23
+ }
24
+ return (0, rxjs_1.of)((0, couponViewReducer_1.updateInvoicingCouponCountsFailure)(response.status));
25
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, couponViewReducer_1.updateInvoicingCouponCountsFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch discount counts REST API call errored out ' +
26
+ JSON.stringify(error))))));
27
+ }));
28
+ exports.fetchInvoicingCouponCountsEpic = fetchInvoicingCouponCountsEpic;
29
+ /**
30
+ * Orchestrates the discounts list page: on `fetchInvoicingCouponListPage`, fans
31
+ * out to the list and counts fetches, skipping any whose data is already
32
+ * cached unless `cacheOverride` is set (e.g. on a filter/sort change).
33
+ */
@@ -0,0 +1,8 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { updateInvoicingCoupons } from '../../../entity/invoicing/coupon/couponReducer';
4
+ import { RootState } from '../../../rootStateTypes';
5
+ import { ZeniAPI } from '../../../zeniAPI';
6
+ import { fetchInvoicingCouponCounts, fetchInvoicingCouponList, fetchInvoicingCouponListPage, updateInvoicingCouponCounts, updateInvoicingCouponCountsFailure, updateInvoicingCouponList, updateInvoicingCouponListFailure } from './couponViewReducer';
7
+ export type ActionType = ReturnType<typeof fetchInvoicingCouponList> | ReturnType<typeof fetchInvoicingCouponListPage> | ReturnType<typeof fetchInvoicingCouponCounts> | ReturnType<typeof updateInvoicingCouponList> | ReturnType<typeof updateInvoicingCouponListFailure> | ReturnType<typeof updateInvoicingCouponCounts> | ReturnType<typeof updateInvoicingCouponCountsFailure> | ReturnType<typeof updateInvoicingCoupons>;
8
+ export declare const fetchInvoicingCouponListEpic: (actions$: ActionsObservable<ActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchInvoicingCouponListEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const couponReducer_1 = require("../../../entity/invoicing/coupon/couponReducer");
7
+ const responsePayload_1 = require("../../../responsePayload");
8
+ const invoicingApiHelper_1 = require("../invoicingApiHelper");
9
+ const couponViewReducer_1 = require("./couponViewReducer");
10
+ /**
11
+ * Fetch unless the endpoint is already loaded or in flight — or always when the
12
+ * caller forces a refresh via `cacheOverride` (e.g. on a filter/sort change).
13
+ */
14
+ const buildQuery = (filters, cursor, sort) => {
15
+ const params = new URLSearchParams();
16
+ if (filters.search != null && filters.search.length > 0) {
17
+ params.set('search', filters.search);
18
+ }
19
+ params.set('limit', String(invoicingApiHelper_1.INVOICING_LIST_PAGE_SIZE));
20
+ if (cursor != null) {
21
+ params.set('cursor', cursor);
22
+ }
23
+ (0, invoicingApiHelper_1.applyListSortParams)(params, sort);
24
+ return params;
25
+ };
26
+ const fetchInvoicingCouponListEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(couponViewReducer_1.fetchInvoicingCouponList.match), (0, operators_1.switchMap)((action) => {
27
+ const { filters, cursor, keepExistingListItems, sort } = action.payload;
28
+ const apiUrl = (0, invoicingApiHelper_1.withQuery)(`${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/discounts`, buildQuery(filters, cursor, sort));
29
+ return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.switchMap)((response) => {
30
+ if ((0, responsePayload_1.isSuccessResponse)(response)) {
31
+ const items = response.data?.items ?? [];
32
+ return [
33
+ (0, couponReducer_1.updateInvoicingCoupons)(items, 'merge'),
34
+ (0, couponViewReducer_1.updateInvoicingCouponList)({
35
+ ids: items.map((item) => item.id),
36
+ nextCursor: response.data?.next_cursor ?? null,
37
+ keepExistingListItems,
38
+ }),
39
+ ];
40
+ }
41
+ return (0, rxjs_1.of)((0, couponViewReducer_1.updateInvoicingCouponListFailure)(response.status));
42
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, couponViewReducer_1.updateInvoicingCouponListFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch discount list REST API call errored out ' +
43
+ JSON.stringify(error))))));
44
+ }));
45
+ exports.fetchInvoicingCouponListEpic = fetchInvoicingCouponListEpic;
@@ -0,0 +1,7 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { updateInvoicingCoupons } from '../../../entity/invoicing/coupon/couponReducer';
4
+ import { RootState } from '../../../rootStateTypes';
5
+ import { fetchInvoicingCouponCounts, fetchInvoicingCouponList, fetchInvoicingCouponListPage, updateInvoicingCouponCounts, updateInvoicingCouponCountsFailure, updateInvoicingCouponList, updateInvoicingCouponListFailure } from './couponViewReducer';
6
+ export type ActionType = ReturnType<typeof fetchInvoicingCouponList> | ReturnType<typeof fetchInvoicingCouponListPage> | ReturnType<typeof fetchInvoicingCouponCounts> | ReturnType<typeof updateInvoicingCouponList> | ReturnType<typeof updateInvoicingCouponListFailure> | ReturnType<typeof updateInvoicingCouponCounts> | ReturnType<typeof updateInvoicingCouponCountsFailure> | ReturnType<typeof updateInvoicingCoupons>;
7
+ export declare const fetchInvoicingCouponListPageEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>) => Observable<ActionType>;