@zeniai/client-epic-state 5.1.78-betaSI0 → 5.1.78

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 (110) hide show
  1. package/lib/entity/invoicing/invoicingCommonPayload.d.ts +42 -0
  2. package/lib/entity/invoicing/invoicingCommonPayload.js +66 -1
  3. package/lib/entity/tenant/clearAllEpic.d.ts +2 -1
  4. package/lib/entity/tenant/clearAllEpic.js +2 -0
  5. package/lib/epic.d.ts +2 -1
  6. package/lib/epic.js +7 -1
  7. package/lib/esm/entity/invoicing/invoicingCommonPayload.js +61 -0
  8. package/lib/esm/entity/tenant/clearAllEpic.js +2 -0
  9. package/lib/esm/epic.js +7 -1
  10. package/lib/esm/index.js +7 -4
  11. package/lib/esm/reducer.js +3 -0
  12. package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +0 -1
  13. package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +0 -1
  14. package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +11 -56
  15. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +1 -2
  16. package/lib/esm/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +6 -1
  17. package/lib/esm/view/invoicing/createCreditNote/createCreditNotePayload.js +1 -8
  18. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +4 -5
  19. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +10 -11
  20. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +8 -10
  21. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.js +2 -2
  22. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer.js +1 -1
  23. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +1 -1
  24. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js +43 -1
  25. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +2 -5
  26. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +1 -2
  27. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +7 -1
  28. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +3 -0
  29. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.js +25 -0
  30. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.js +15 -0
  31. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.js +15 -0
  32. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.js +15 -0
  33. package/lib/esm/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.js +1 -0
  34. package/lib/esm/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +26 -0
  35. package/lib/esm/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +18 -0
  36. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewPayload.js +47 -0
  37. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewReducer.js +128 -0
  38. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +20 -0
  39. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewState.js +1 -0
  40. package/lib/esm/view/invoicing/issueCreditNote/issueCreditNotePayload.js +4 -11
  41. package/lib/esm/view/invoicing/recordPayment/recordPaymentFormConfig.js +0 -1
  42. package/lib/esm/view/invoicing/recordPayment/recordPaymentPayload.js +5 -14
  43. package/lib/index.d.ts +9 -4
  44. package/lib/index.js +66 -55
  45. package/lib/reducer.d.ts +3 -0
  46. package/lib/reducer.js +3 -0
  47. package/lib/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +0 -1
  48. package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +0 -1
  49. package/lib/view/expenseAutomationView/payload/transactionCategorizationPayload.d.ts +0 -11
  50. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +1 -4
  51. package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +12 -57
  52. package/lib/view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes.d.ts +0 -2
  53. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +1 -2
  54. package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +0 -11
  55. package/lib/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +6 -1
  56. package/lib/view/invoicing/createCreditNote/createCreditNotePayload.js +1 -8
  57. package/lib/view/invoicing/createCreditNote/createCreditNoteState.d.ts +3 -1
  58. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.d.ts +2 -1
  59. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +4 -5
  60. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +10 -11
  61. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewState.d.ts +10 -5
  62. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +8 -10
  63. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.js +2 -2
  64. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer.js +3 -3
  65. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +2 -2
  66. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.d.ts +9 -2
  67. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js +45 -0
  68. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +2 -5
  69. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewState.d.ts +3 -1
  70. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +1 -2
  71. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewPayload.d.ts +4 -1
  72. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.d.ts +1 -1
  73. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +6 -0
  74. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.d.ts +4 -1
  75. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +3 -0
  76. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewState.d.ts +4 -1
  77. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.d.ts +6 -0
  78. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.js +29 -0
  79. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.d.ts +6 -0
  80. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.js +19 -0
  81. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.d.ts +6 -0
  82. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.js +19 -0
  83. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.d.ts +6 -0
  84. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.js +19 -0
  85. package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.d.ts +2 -0
  86. package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.js +2 -0
  87. package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.d.ts +6 -0
  88. package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +30 -0
  89. package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.d.ts +6 -0
  90. package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +22 -0
  91. package/lib/view/invoicing/invoicingQboView/invoicingQboViewPayload.d.ts +79 -0
  92. package/lib/view/invoicing/invoicingQboView/invoicingQboViewPayload.js +52 -0
  93. package/lib/view/invoicing/invoicingQboView/invoicingQboViewReducer.d.ts +25 -0
  94. package/lib/view/invoicing/invoicingQboView/invoicingQboViewReducer.js +132 -0
  95. package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.d.ts +21 -0
  96. package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +24 -0
  97. package/lib/view/invoicing/invoicingQboView/invoicingQboViewState.d.ts +14 -0
  98. package/lib/view/invoicing/invoicingQboView/invoicingQboViewState.js +2 -0
  99. package/lib/view/invoicing/issueCreditNote/issueCreditNotePayload.js +4 -11
  100. package/lib/view/invoicing/issueCreditNote/issueCreditNoteState.d.ts +3 -2
  101. package/lib/view/invoicing/recordPayment/recordPaymentFormConfig.js +0 -1
  102. package/lib/view/invoicing/recordPayment/recordPaymentPayload.js +5 -14
  103. package/lib/view/invoicing/recordPayment/recordPaymentState.d.ts +4 -2
  104. package/package.json +1 -1
  105. package/lib/esm/view/expenseAutomationView/types/transactionGroup.js +0 -21
  106. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.js +0 -44
  107. package/lib/view/expenseAutomationView/types/transactionGroup.d.ts +0 -21
  108. package/lib/view/expenseAutomationView/types/transactionGroup.js +0 -25
  109. package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.d.ts +0 -5
  110. package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.js +0 -48
package/lib/reducer.js CHANGED
@@ -194,6 +194,7 @@ const invoicingCustomerListViewReducer_1 = __importStar(require("./view/invoicin
194
194
  const invoicingDunningCaseDetailViewReducer_1 = __importStar(require("./view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewReducer"));
195
195
  const invoicingDunningCaseListViewReducer_1 = __importStar(require("./view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewReducer"));
196
196
  const invoicingOverviewReducer_1 = __importStar(require("./view/invoicing/invoicingOverview/invoicingOverviewReducer"));
197
+ const invoicingQboViewReducer_1 = __importStar(require("./view/invoicing/invoicingQboView/invoicingQboViewReducer"));
197
198
  const invoicingSubscriptionDetailViewReducer_1 = __importStar(require("./view/invoicing/invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewReducer"));
198
199
  const invoicingSubscriptionListViewReducer_1 = __importStar(require("./view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewReducer"));
199
200
  const invoicingTransactionDetailViewReducer_1 = __importStar(require("./view/invoicing/invoicingTransactionDetailView/invoicingTransactionDetailViewReducer"));
@@ -504,6 +505,7 @@ const initialViewsState = {
504
505
  invoicingInvoiceListState: invoiceListReducer_1.initialState,
505
506
  invoicingPaymentActionState: paymentActionReducer_1.initialState,
506
507
  invoicingConfigViewState: invoicingConfigViewReducer_1.initialState,
508
+ invoicingQboViewState: invoicingQboViewReducer_1.initialState,
507
509
  invoicingSettingsViewState: settingsViewReducer_1.initialState,
508
510
  invoicingCatalogActionState: catalogActionReducer_1.initialState,
509
511
  invoicingDiscountActionState: discountActionReducer_1.initialState,
@@ -793,6 +795,7 @@ const viewReducers = {
793
795
  invoicingInvoiceListState: invoiceListReducer_1.default,
794
796
  invoicingPaymentActionState: paymentActionReducer_1.default,
795
797
  invoicingConfigViewState: invoicingConfigViewReducer_1.default,
798
+ invoicingQboViewState: invoicingQboViewReducer_1.default,
796
799
  invoicingSettingsViewState: settingsViewReducer_1.default,
797
800
  invoicingCatalogActionState: catalogActionReducer_1.default,
798
801
  invoicingDiscountActionState: discountActionReducer_1.default,
@@ -30,7 +30,6 @@ const backgroundRefetchReviewTabEpic = (actions$, state$, zeniAPI) => actions$.p
30
30
  page_token: pageToken,
31
31
  page_size: PAGE_SIZE,
32
32
  search_text: reviewUiState.searchString,
33
- transaction_group: state.expenseAutomationTransactionsViewState.selectedTransactionGroup,
34
33
  };
35
34
  return zeniAPI.getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/transactions?query=${encodeURIComponent(JSON.stringify(queryParam))}`);
36
35
  };
@@ -39,7 +39,6 @@ const fetchTransactionCategorizationEpic = (actions$, state$, zeniAPI) => action
39
39
  sub_tab: selectedTab === 'autoCategorized'
40
40
  ? expenseAutomationTransactionsViewState.selectedTransactionCategorizationCompletedSubTab
41
41
  : completedSubTab_1.DEFAULT_COMPLETED_SUB_TAB,
42
- transaction_group: expenseAutomationTransactionsViewState.selectedTransactionGroup,
43
42
  };
44
43
  return zeniAPI
45
44
  .getJSON(`${zeniAPI.apiEndPoints.accountMicroServiceBaseUrl}/1.0/expense-automation/transactions?query=${encodeURIComponent(JSON.stringify(queryParam))}`)
@@ -3,7 +3,6 @@ import { TransactionPayload } from '../../../entity/transaction/payloadTypes/tra
3
3
  import { SupportedTransactionPayload } from '../../../entity/transaction/transactionState';
4
4
  import { ZeniAPIResponse } from '../../../responsePayload';
5
5
  import { CompletedSubTab } from '../types/completedSubTab';
6
- import { TransactionGroup } from '../types/transactionGroup';
7
6
  export interface TransactionCategorizationQueryPayload {
8
7
  auto_categorized: boolean;
9
8
  end_date: string | null;
@@ -27,16 +26,6 @@ export interface TransactionCategorizationQueryPayload {
27
26
  * that the Receipts manual-match flow relies on.
28
27
  */
29
28
  search_all_statuses?: boolean;
30
- /**
31
- * Statement-level scope (`'expense' | 'income' | 'all'`). Always sent by the
32
- * list epics. The backend `is_revenue_automation_enabled` gate is
33
- * authoritative: when it is off the backend ignores this and returns the
34
- * legacy expense scope regardless of the value, so there is no need to gate
35
- * the send on the client (the gate isn't available to the redux epics anyway
36
- * — it's a Statsig/React-side flag, not a tenant field). Optional only for
37
- * wire/back-compat tolerance.
38
- */
39
- transaction_group?: TransactionGroup;
40
29
  }
41
30
  export interface TransactionCategorizationPayload {
42
31
  next_page_token: string | null;
@@ -15,7 +15,6 @@ import { UncategorizedAccounts } from '../../accountList/accountListSelector';
15
15
  import { UpdateTransactionCategorizationResponsePayload } from '../payload/transactionCategorizationPayload';
16
16
  import { TransactionFilters } from '../transactionFilterHelpers';
17
17
  import { SupportedTransactionCategorization, TransactionSaveUpdates, TransactionsTab, TransactionsTabViewState, TransactionsViewState, TransactionsViewUIState } from '../types/transactionsViewState';
18
- export declare const initialUIState: TransactionsViewUIState;
19
18
  export declare const initialTransactionTabViewState: TransactionsTabViewState;
20
19
  export declare const initialState: TransactionsViewState;
21
20
  export declare const fetchTransactionCategorization: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", period: TimePeriod, cacheOverride?: any, keepExistingListItems?: any, searchString?: string | undefined, pageToken?: PageToken | undefined, refreshViewInBackground?: any, resetListItems?: boolean | undefined], {
@@ -68,9 +67,7 @@ export declare const fetchTransactionCategorization: import("@reduxjs/toolkit").
68
67
  newSelectedTab: "review" | "autoCategorized";
69
68
  }, "expenseAutomationTransactionsView/updateCurrentSelectedTransactionCategorizationTab", never, never>, updateTransactionCategorizationCompletedSubTab: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newSubTab: "all" | "manual" | "ai_accountant"], {
70
69
  newSubTab: "all" | "manual" | "ai_accountant";
71
- }, "expenseAutomationTransactionsView/updateTransactionCategorizationCompletedSubTab", never, never>, updateTransactionGroup: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[newGroup: "income" | "expense" | "all"], {
72
- newGroup: "income" | "expense" | "all";
73
- }, "expenseAutomationTransactionsView/updateTransactionGroup", never, never>, updateTransactionCategorizationSaveStatus: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", fetchState: FetchState, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
70
+ }, "expenseAutomationTransactionsView/updateTransactionCategorizationCompletedSubTab", never, never>, updateTransactionCategorizationSaveStatus: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[selectedTab: "review" | "autoCategorized", fetchState: FetchState, error?: ZeniAPIStatus<Record<string, unknown>> | undefined], {
74
71
  selectedTab: "review" | "autoCategorized";
75
72
  fetchState: FetchState;
76
73
  error: ZeniAPIStatus<Record<string, unknown>> | undefined;
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  var _a;
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.uploadTransactionCategorizationReceiptSuccess = exports.updateTransactionCategorizationUploadReceiptState = exports.removeTransactionFromAllTabs = exports.backgroundRefetchReviewTab = exports.syncTransactionCategorizationFromDetailSave = exports.updateSelectedTransactionId = exports.markCategoryClassRecommendationsFailureForCategorization = exports.markCategoryClassRecommendationsCompletedForCategorization = exports.markCategoryClassRecommendationsInProgressForCategorization = exports.setEntityRecommendationForLineIdsForCategorization = exports.clearExpenseAutomationTransactionsView = exports.clearExpenseAutomationTransactionsViewPerTabView = exports.updateSelectedCheckboxTransactionIds = exports.fetchTransactionCategorizationView = exports.resetOtherTabsFetchState = exports.fetchTransactionCategorizationSuccess = exports.updateParentTotalCountForTab = exports.updateTotalCountForTransactionCategorization = exports.setAllItemsToCategoryClassInLocalDataForCategorization = exports.updateSelectedCustomerForTransaction = exports.updateSelectedVendorForTransaction = exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = exports.markTransactionAsNotMiscategorized = exports.updateTransactionCategorizationSaveStatus = exports.updateTransactionGroup = exports.updateTransactionCategorizationCompletedSubTab = exports.updateCurrentSelectedTransactionCategorizationTab = exports.updateTransactionCategorization = exports.saveTransactionCategorization = exports.fetchTransactionCategorizationFailure = exports.saveTransactionCategorizationLocalData = exports.initializeTransactionCategorizationViewLocalData = exports.updateTransactionFilters = exports.updateTransactionCategorizationUIState = exports.fetchTransactionCategorization = exports.initialState = exports.initialTransactionTabViewState = exports.initialUIState = void 0;
7
+ exports.uploadTransactionCategorizationReceiptSuccess = exports.updateTransactionCategorizationUploadReceiptState = exports.removeTransactionFromAllTabs = exports.backgroundRefetchReviewTab = exports.syncTransactionCategorizationFromDetailSave = exports.updateSelectedTransactionId = exports.markCategoryClassRecommendationsFailureForCategorization = exports.markCategoryClassRecommendationsCompletedForCategorization = exports.markCategoryClassRecommendationsInProgressForCategorization = exports.setEntityRecommendationForLineIdsForCategorization = exports.clearExpenseAutomationTransactionsView = exports.clearExpenseAutomationTransactionsViewPerTabView = exports.updateSelectedCheckboxTransactionIds = exports.fetchTransactionCategorizationView = exports.resetOtherTabsFetchState = exports.fetchTransactionCategorizationSuccess = exports.updateParentTotalCountForTab = exports.updateTotalCountForTransactionCategorization = exports.setAllItemsToCategoryClassInLocalDataForCategorization = exports.updateSelectedCustomerForTransaction = exports.updateSelectedVendorForTransaction = exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = exports.markTransactionAsNotMiscategorized = exports.updateTransactionCategorizationSaveStatus = exports.updateTransactionCategorizationCompletedSubTab = exports.updateCurrentSelectedTransactionCategorizationTab = exports.updateTransactionCategorization = exports.saveTransactionCategorization = exports.fetchTransactionCategorizationFailure = exports.saveTransactionCategorizationLocalData = exports.initializeTransactionCategorizationViewLocalData = exports.updateTransactionFilters = exports.updateTransactionCategorizationUIState = exports.fetchTransactionCategorization = exports.initialState = exports.initialTransactionTabViewState = void 0;
8
8
  const toolkit_1 = require("@reduxjs/toolkit");
9
9
  const get_1 = __importDefault(require("lodash/get"));
10
10
  const uniq_1 = __importDefault(require("lodash/uniq"));
@@ -12,18 +12,7 @@ const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
12
12
  const vendorTransaction_1 = require("../../../entity/transaction/stateTypes/vendorTransaction");
13
13
  const transactionCategorizationLocalDataHelper_1 = require("../helpers/transactionCategorizationLocalDataHelper");
14
14
  const completedSubTab_1 = require("../types/completedSubTab");
15
- const transactionGroup_1 = require("../types/transactionGroup");
16
15
  const transactionsViewState_1 = require("../types/transactionsViewState");
17
- exports.initialUIState = {
18
- sortKey: 'date',
19
- sortOrder: 'descending',
20
- searchString: '',
21
- nodeCollapseState: {},
22
- scrollPosition: { scrollTop: 0, scrollLeft: undefined },
23
- pageToken: null,
24
- totalCount: {},
25
- limit: 10,
26
- };
27
16
  exports.initialTransactionTabViewState = {
28
17
  saveStatus: {
29
18
  fetchState: 'Not-Started',
@@ -37,7 +26,16 @@ exports.initialTransactionTabViewState = {
37
26
  fetchState: 'Not-Started',
38
27
  error: undefined,
39
28
  },
40
- uiState: { ...exports.initialUIState },
29
+ uiState: {
30
+ sortKey: 'date',
31
+ sortOrder: 'descending',
32
+ searchString: '',
33
+ nodeCollapseState: {},
34
+ scrollPosition: { scrollTop: 0, scrollLeft: undefined },
35
+ pageToken: null,
36
+ totalCount: {},
37
+ limit: 10,
38
+ },
41
39
  filters: {
42
40
  categoryCombinationOperator: 'AND',
43
41
  categories: [],
@@ -63,7 +61,6 @@ exports.initialState = {
63
61
  },
64
62
  selectedTransactionCategorizationTab: 'review',
65
63
  selectedTransactionCategorizationCompletedSubTab: completedSubTab_1.DEFAULT_COMPLETED_SUB_TAB,
66
- selectedTransactionGroup: transactionGroup_1.DEFAULT_TRANSACTION_GROUP,
67
64
  transactionCategorizationView: {
68
65
  review: { ...exports.initialTransactionTabViewState },
69
66
  autoCategorized: { ...exports.initialTransactionTabViewState },
@@ -409,48 +406,6 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
409
406
  return { payload: { newSubTab } };
410
407
  },
411
408
  },
412
- updateTransactionGroup: {
413
- reducer(draft, action) {
414
- const { newGroup } = action.payload;
415
- if (draft.selectedTransactionGroup === newGroup) {
416
- return;
417
- }
418
- draft.selectedTransactionGroup = newGroup;
419
- // A group change re-scopes the entire dataset on the backend (by
420
- // account_type), so every parent tab, sub-tab snapshot and count is now
421
- // stale. Drop the sub-tab cache and parent counts, and reset each tab's
422
- // paginated data slots so the view epic's cache check falls through to a
423
- // fresh page-1 fetch. User preferences (search, sort, limit, collapse
424
- // state) are intentionally preserved, mirroring the sub-tab switch.
425
- draft.autoCategorizedSubTabCache = {};
426
- draft.parentTotalCountByTab = { review: {}, autoCategorized: {} };
427
- transactionsViewState_1.TRANSACTIONS_TABS.forEach((tab) => {
428
- const view = draft.transactionCategorizationView[tab];
429
- // Reset uiState to its initial values but keep the user prefs (search,
430
- // sort, limit, collapse) in place -- mirroring the sub-tab switch. Then
431
- // drop the loaded rows and any stale selection pointing at a now-absent
432
- // row to avoid transient invalid state.
433
- const { searchString, sortKey, sortOrder, nodeCollapseState, limit } = view.uiState;
434
- view.uiState = {
435
- ...exports.initialUIState,
436
- searchString,
437
- sortKey,
438
- sortOrder,
439
- nodeCollapseState,
440
- limit,
441
- };
442
- view.transactionIdsBySelectedPeriod = {};
443
- view.fetchState = 'Not-Started';
444
- view.error = undefined;
445
- view.selectedTransactionId = undefined;
446
- view.selectedTransactionLineId = undefined;
447
- view.selectedCheckBoxTransactionIds = [];
448
- });
449
- },
450
- prepare(newGroup) {
451
- return { payload: { newGroup } };
452
- },
453
- },
454
409
  updateTransactionCategorization: {
455
410
  reducer(draft, action) {
456
411
  const selectedTab = action.payload.selectedTab;
@@ -1121,5 +1076,5 @@ const expenseAutomationTransactionsView = (0, toolkit_1.createSlice)({
1121
1076
  },
1122
1077
  },
1123
1078
  });
1124
- _a = expenseAutomationTransactionsView.actions, exports.fetchTransactionCategorization = _a.fetchTransactionCategorization, exports.updateTransactionCategorizationUIState = _a.updateTransactionCategorizationUIState, exports.updateTransactionFilters = _a.updateTransactionFilters, exports.initializeTransactionCategorizationViewLocalData = _a.initializeTransactionCategorizationViewLocalData, exports.saveTransactionCategorizationLocalData = _a.saveTransactionCategorizationLocalData, exports.fetchTransactionCategorizationFailure = _a.fetchTransactionCategorizationFailure, exports.saveTransactionCategorization = _a.saveTransactionCategorization, exports.updateTransactionCategorization = _a.updateTransactionCategorization, exports.updateCurrentSelectedTransactionCategorizationTab = _a.updateCurrentSelectedTransactionCategorizationTab, exports.updateTransactionCategorizationCompletedSubTab = _a.updateTransactionCategorizationCompletedSubTab, exports.updateTransactionGroup = _a.updateTransactionGroup, exports.updateTransactionCategorizationSaveStatus = _a.updateTransactionCategorizationSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = _a.updateStatusForTransactionNotMiscategorizedUpdateForCategorization, exports.updateSelectedVendorForTransaction = _a.updateSelectedVendorForTransaction, exports.updateSelectedCustomerForTransaction = _a.updateSelectedCustomerForTransaction, exports.setAllItemsToCategoryClassInLocalDataForCategorization = _a.setAllItemsToCategoryClassInLocalDataForCategorization, exports.updateTotalCountForTransactionCategorization = _a.updateTotalCountForTransactionCategorization, exports.updateParentTotalCountForTab = _a.updateParentTotalCountForTab, exports.fetchTransactionCategorizationSuccess = _a.fetchTransactionCategorizationSuccess, exports.resetOtherTabsFetchState = _a.resetOtherTabsFetchState, exports.fetchTransactionCategorizationView = _a.fetchTransactionCategorizationView, exports.updateSelectedCheckboxTransactionIds = _a.updateSelectedCheckboxTransactionIds, exports.clearExpenseAutomationTransactionsViewPerTabView = _a.clearExpenseAutomationTransactionsViewPerTabView, exports.clearExpenseAutomationTransactionsView = _a.clearExpenseAutomationTransactionsView, exports.setEntityRecommendationForLineIdsForCategorization = _a.setEntityRecommendationForLineIdsForCategorization, exports.markCategoryClassRecommendationsInProgressForCategorization = _a.markCategoryClassRecommendationsInProgressForCategorization, exports.markCategoryClassRecommendationsCompletedForCategorization = _a.markCategoryClassRecommendationsCompletedForCategorization, exports.markCategoryClassRecommendationsFailureForCategorization = _a.markCategoryClassRecommendationsFailureForCategorization, exports.updateSelectedTransactionId = _a.updateSelectedTransactionId, exports.syncTransactionCategorizationFromDetailSave = _a.syncTransactionCategorizationFromDetailSave, exports.backgroundRefetchReviewTab = _a.backgroundRefetchReviewTab, exports.removeTransactionFromAllTabs = _a.removeTransactionFromAllTabs, exports.updateTransactionCategorizationUploadReceiptState = _a.updateTransactionCategorizationUploadReceiptState, exports.uploadTransactionCategorizationReceiptSuccess = _a.uploadTransactionCategorizationReceiptSuccess;
1079
+ _a = expenseAutomationTransactionsView.actions, exports.fetchTransactionCategorization = _a.fetchTransactionCategorization, exports.updateTransactionCategorizationUIState = _a.updateTransactionCategorizationUIState, exports.updateTransactionFilters = _a.updateTransactionFilters, exports.initializeTransactionCategorizationViewLocalData = _a.initializeTransactionCategorizationViewLocalData, exports.saveTransactionCategorizationLocalData = _a.saveTransactionCategorizationLocalData, exports.fetchTransactionCategorizationFailure = _a.fetchTransactionCategorizationFailure, exports.saveTransactionCategorization = _a.saveTransactionCategorization, exports.updateTransactionCategorization = _a.updateTransactionCategorization, exports.updateCurrentSelectedTransactionCategorizationTab = _a.updateCurrentSelectedTransactionCategorizationTab, exports.updateTransactionCategorizationCompletedSubTab = _a.updateTransactionCategorizationCompletedSubTab, exports.updateTransactionCategorizationSaveStatus = _a.updateTransactionCategorizationSaveStatus, exports.markTransactionAsNotMiscategorized = _a.markTransactionAsNotMiscategorized, exports.updateStatusForTransactionNotMiscategorizedUpdateForCategorization = _a.updateStatusForTransactionNotMiscategorizedUpdateForCategorization, exports.updateSelectedVendorForTransaction = _a.updateSelectedVendorForTransaction, exports.updateSelectedCustomerForTransaction = _a.updateSelectedCustomerForTransaction, exports.setAllItemsToCategoryClassInLocalDataForCategorization = _a.setAllItemsToCategoryClassInLocalDataForCategorization, exports.updateTotalCountForTransactionCategorization = _a.updateTotalCountForTransactionCategorization, exports.updateParentTotalCountForTab = _a.updateParentTotalCountForTab, exports.fetchTransactionCategorizationSuccess = _a.fetchTransactionCategorizationSuccess, exports.resetOtherTabsFetchState = _a.resetOtherTabsFetchState, exports.fetchTransactionCategorizationView = _a.fetchTransactionCategorizationView, exports.updateSelectedCheckboxTransactionIds = _a.updateSelectedCheckboxTransactionIds, exports.clearExpenseAutomationTransactionsViewPerTabView = _a.clearExpenseAutomationTransactionsViewPerTabView, exports.clearExpenseAutomationTransactionsView = _a.clearExpenseAutomationTransactionsView, exports.setEntityRecommendationForLineIdsForCategorization = _a.setEntityRecommendationForLineIdsForCategorization, exports.markCategoryClassRecommendationsInProgressForCategorization = _a.markCategoryClassRecommendationsInProgressForCategorization, exports.markCategoryClassRecommendationsCompletedForCategorization = _a.markCategoryClassRecommendationsCompletedForCategorization, exports.markCategoryClassRecommendationsFailureForCategorization = _a.markCategoryClassRecommendationsFailureForCategorization, exports.updateSelectedTransactionId = _a.updateSelectedTransactionId, exports.syncTransactionCategorizationFromDetailSave = _a.syncTransactionCategorizationFromDetailSave, exports.backgroundRefetchReviewTab = _a.backgroundRefetchReviewTab, exports.removeTransactionFromAllTabs = _a.removeTransactionFromAllTabs, exports.updateTransactionCategorizationUploadReceiptState = _a.updateTransactionCategorizationUploadReceiptState, exports.uploadTransactionCategorizationReceiptSuccess = _a.uploadTransactionCategorizationReceiptSuccess;
1125
1080
  exports.default = expenseAutomationTransactionsView.reducer;
@@ -8,7 +8,6 @@ import { SupportedTransactionWithCOT } from '../../../entity/transaction/transac
8
8
  import { UncategorizedAccounts } from '../../accountList/accountListSelector';
9
9
  import { ProjectListSelectorView } from '../../projectList/projectListSelector';
10
10
  import { CompletedSubTab } from '../types/completedSubTab';
11
- import { TransactionGroup } from '../types/transactionGroup';
12
11
  import { TransactionReviewLocalData, TransactionsTab, TransactionsViewUIState } from '../types/transactionsViewState';
13
12
  export interface TransactionReviewLocalDataSelectorView {
14
13
  transactionId: ID;
@@ -39,7 +38,6 @@ export interface ExpenseAutomationTransactionViewSelector extends SelectorView {
39
38
  saveStatus: FetchStateAndError;
40
39
  selectedCheckBoxTransactionIds: ID[];
41
40
  selectedTransactionCategorizationCompletedSubTab: CompletedSubTab;
42
- selectedTransactionGroup: TransactionGroup;
43
41
  /**
44
42
  * Per-(sub-)tab counts mirroring `total_count` from the listing response.
45
43
  * Powers pagination via `InfiniteLoader.itemCount`, in-list count copy,
@@ -96,7 +96,7 @@ var createTransferEntrySelector_2 = require("../../createTransferEntry/createTra
96
96
  Object.defineProperty(exports, "getLastTransferEntryReplacement", { enumerable: true, get: function () { return createTransferEntrySelector_2.getLastTransferEntryReplacement; } });
97
97
  function getExpenseAutomationTransactionView(state) {
98
98
  const { accountState, classState, classListState, accountListState, createTransferEntryState, expenseAutomationTransactionsViewState, expenseAutomationViewState, projectState, projectListState, transactionState, monthEndCloseChecksState, } = state;
99
- const { selectedTransactionCategorizationCompletedSubTab, selectedTransactionCategorizationTab, selectedTransactionGroup, } = expenseAutomationTransactionsViewState;
99
+ const { selectedTransactionCategorizationCompletedSubTab, selectedTransactionCategorizationTab, } = expenseAutomationTransactionsViewState;
100
100
  const { uiState, refreshStatus, saveStatus, markAsNotMiscategorizedStatus, transactionIdsBySelectedPeriod, transactionReviewLocalDataById, selectedCheckBoxTransactionIds, transactionIdsWithUnsavedData, uploadReceiptStatusById, selectedTransactionId, selectedTransactionLineId, filters, } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
101
101
  const uncategorizedIncomeExpense = (0, accountListSelector_1.getUncategorizedAccounts)(accountState, accountListState, 'accountList');
102
102
  const accountList = (0, accountListSelector_1.getAccountList)(accountState, accountListState, 'accountList');
@@ -250,6 +250,5 @@ function getExpenseAutomationTransactionView(state) {
250
250
  creditCardTransferAccountsList,
251
251
  transferAccounts: transferAccountsList,
252
252
  selectedTransactionCategorizationCompletedSubTab,
253
- selectedTransactionGroup,
254
253
  };
255
254
  }
@@ -19,7 +19,6 @@ import { EntityRecommendationKey } from '../../recommendation/recommendationStat
19
19
  import { TransactionDetailKey } from '../../transactionDetail/transactionDetailState';
20
20
  import { TransactionFilters } from '../transactionFilterHelpers';
21
21
  import { CompletedSubTab } from './completedSubTab';
22
- import { TransactionGroup } from './transactionGroup';
23
22
  export declare const toTransactionsSortKey: (v: string) => "date" | "amount" | "vendor" | "project" | "category" | "class" | "payment_account" | "transaction_type" | "memo_and_receipt";
24
23
  export type TransactionsSortKey = ReturnType<typeof toTransactionsSortKey>;
25
24
  export declare const TRANSACTIONS_TABS: readonly ["review", "autoCategorized"];
@@ -148,16 +147,6 @@ export type TransactionsViewState = {
148
147
  parentTotalCountByTab: Record<TransactionsTab, Record<MonthYearPeriodId, number>>;
149
148
  selectedTransactionCategorizationCompletedSubTab: CompletedSubTab;
150
149
  selectedTransactionCategorizationTab: TransactionsTab;
151
- /**
152
- * Statement-level scope (`'expense' | 'income' | 'all'`) forwarded to the
153
- * listing API as `transaction_group`. Unlike the in-memory {@link
154
- * TransactionsTabViewState.filters}, a change here invalidates every tab /
155
- * sub-tab / count and drives a server refetch (the backend re-scopes the
156
- * whole dataset by account_type). Only surfaced in the UI when the
157
- * `is_revenue_automation_enabled` gate is on; the backend gate is
158
- * authoritative regardless of what is sent.
159
- */
160
- selectedTransactionGroup: TransactionGroup;
161
150
  transactionCategorizationView: Record<TransactionsTab, TransactionsTabViewState>;
162
151
  };
163
152
  export interface TransactionLineUpdates {
@@ -3,7 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initialCreateCreditNoteFormLocalData = void 0;
4
4
  const initialCreateCreditNoteFormLocalData = () => ({
5
5
  customerId: '',
6
- lineItems: [{ description: '', quantity: '1', unitAmount: '' }],
6
+ lineItems: [
7
+ {
8
+ description: '',
9
+ quantity: '1',
10
+ },
11
+ ],
7
12
  reasonCode: '',
8
13
  referenceInvoiceId: '',
9
14
  });
@@ -1,18 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.localDataToCreateCreditNotePayload = void 0;
4
- const dollarsFromAmountString = (value) => {
5
- const parsed = Number.parseFloat(value);
6
- if (Number.isNaN(parsed)) {
7
- return 0;
8
- }
9
- return parsed;
10
- };
11
4
  const localDataToCreateCreditNotePayload = (localData) => {
12
5
  const lineItems = localData.lineItems
13
6
  .map((lineItem) => {
14
7
  const quantity = Math.round(Number.parseFloat(lineItem.quantity));
15
- const unitAmount = dollarsFromAmountString(lineItem.unitAmount);
8
+ const unitAmount = lineItem.unitAmount?.amount ?? 0;
16
9
  return {
17
10
  description: lineItem.description.trim(),
18
11
  quantity,
@@ -1,8 +1,10 @@
1
+ import { Amount } from '../../../commonStateTypes/amount';
1
2
  import { FetchedState, ID } from '../../../commonStateTypes/common';
2
3
  export interface CreateCreditNoteLineItemDraft {
3
4
  description: string;
4
5
  quantity: string;
5
- unitAmount: string;
6
+ /** Unset until entered, so a blank field is distinguishable from a real 0. */
7
+ unitAmount?: Amount;
6
8
  }
7
9
  export interface CreateCreditNoteFormLocalData {
8
10
  customerId: string;
@@ -1,3 +1,4 @@
1
+ import { Amount } from '../../../commonStateTypes/amount';
1
2
  import type { InvoicingPlan } from '../../../entity/invoicing/plan/planState';
2
3
  import type { InvoicingProduct } from '../../../entity/invoicing/product/productState';
3
4
  import type { InvoicingCatalogItemFormSubFamily } from './editInvoicingCatalogItemDetailViewState';
@@ -39,12 +40,12 @@ export interface CreateSubFamilyFormValues {
39
40
  period: string;
40
41
  periodUnit: string;
41
42
  priceCode: string;
42
- priceDollars: string;
43
43
  pricingModel: string;
44
44
  prorationType: string;
45
45
  trialEndAction: string;
46
46
  trialPeriod: string;
47
47
  trialPeriodUnit: string;
48
+ priceDollars?: Amount;
48
49
  }
49
50
  /** Build POST /catalog/products body for Create sub-family. */
50
51
  export declare const createSubFamilyFormToPayload: (itemId: string, itemType: string, values: CreateSubFamilyFormValues) => Record<string, unknown>;
@@ -35,7 +35,7 @@ const tierToPayload = (tier) => ({
35
35
  package_size: hasValue(tier.packageSize)
36
36
  ? Number(tier.packageSize)
37
37
  : undefined,
38
- price: toAmountValue(tier.price),
38
+ price: tier.price?.amount ?? 0,
39
39
  pricing_type: tier.pricingType,
40
40
  starting_unit: Number(tier.startingUnit) || 1,
41
41
  });
@@ -49,7 +49,7 @@ const subFamilyToProductUpdate = (subFamily, itemType) => {
49
49
  is_taxable: subFamily.isTaxable,
50
50
  period: hasValue(subFamily.period) ? Number(subFamily.period) : null,
51
51
  period_unit: hasValue(subFamily.period) ? subFamily.periodUnit : null,
52
- price: tiered ? 0 : toAmountValue(subFamily.priceDollars),
52
+ price: tiered ? 0 : (subFamily.priceDollars?.amount ?? 0),
53
53
  pricing_model: subFamily.pricingModel,
54
54
  show_description_in_quotes: subFamily.showDescriptionInQuotes,
55
55
  tiers: tiered ? subFamily.tiers.map(tierToPayload) : [],
@@ -117,7 +117,6 @@ const catalogDetailEditValuesToSavePayload = (values, itemType = 'plan', origina
117
117
  };
118
118
  };
119
119
  exports.catalogDetailEditValuesToSavePayload = catalogDetailEditValuesToSavePayload;
120
- const toAmountValue = (value) => Number(value) || 0;
121
120
  /** Build POST /catalog/products body for Create sub-family. */
122
121
  const createSubFamilyFormToPayload = (itemId, itemType, values) => {
123
122
  const name = values.name.trim();
@@ -128,7 +127,7 @@ const createSubFamilyFormToPayload = (itemId, itemType, values) => {
128
127
  is_taxable: true,
129
128
  item_id: itemId,
130
129
  name,
131
- price: toAmountValue(values.priceDollars),
130
+ price: values.priceDollars?.amount ?? 0,
132
131
  price_code: priceCode,
133
132
  pricing_model: values.pricingModel || 'flat_fee',
134
133
  show_description_in_invoices: true,
@@ -168,7 +167,7 @@ const productToCreateSubFamilyFormValues = (product) => ({
168
167
  period: product?.period != null ? String(product.period) : '1',
169
168
  periodUnit: product?.periodUnit ?? 'month',
170
169
  priceCode: '',
171
- priceDollars: product?.price != null ? String(product.price.amount) : '',
170
+ priceDollars: product?.price,
172
171
  pricingModel: product?.pricingModel ?? 'flat_fee',
173
172
  prorationType: product?.prorationType ?? 'site_default',
174
173
  trialEndAction: product?.trialEndAction ?? 'site_default',
@@ -10,17 +10,16 @@ const toProductCode = (value) => value
10
10
  .toLowerCase()
11
11
  .replace(/[^a-z0-9]+/g, '-')
12
12
  .replace(/^-|-$/g, '');
13
- const toAmountValue = (value) => Number(value) || 0;
14
- const buildAccountingDetail = (localData) => {
13
+ const buildAccountingDetail = (subFamily) => {
15
14
  const detail = {};
16
- if (localData.sku.trim() !== '') {
17
- detail.sku = localData.sku.trim();
15
+ if (subFamily.sku.trim() !== '') {
16
+ detail.sku = subFamily.sku.trim();
18
17
  }
19
- if (localData.accountingCode.trim() !== '') {
20
- detail.accounting_code = localData.accountingCode.trim();
18
+ if (subFamily.accountingCode.trim() !== '') {
19
+ detail.accounting_code = subFamily.accountingCode.trim();
21
20
  }
22
- if (localData.accountingCategory.trim() !== '') {
23
- detail.accounting_category_1 = localData.accountingCategory.trim();
21
+ if (subFamily.accountingCategory.trim() !== '') {
22
+ detail.accounting_category_1 = subFamily.accountingCategory.trim();
24
23
  }
25
24
  return Object.keys(detail).length > 0 ? detail : undefined;
26
25
  };
@@ -34,7 +33,7 @@ const buildSubFamilyPayload = (localData, subFamily, clearEmptyValues) => {
34
33
  free_quantity: Number(subFamily.freeQuantity) || 0,
35
34
  is_taxable: subFamily.isTaxable,
36
35
  name,
37
- price: tiered ? 0 : toAmountValue(subFamily.priceDollars),
36
+ price: tiered ? 0 : (subFamily.priceDollars?.amount ?? 0),
38
37
  price_code: priceCode,
39
38
  pricing_model: subFamily.pricingModel,
40
39
  show_description_in_invoices: subFamily.showDescriptionInInvoices,
@@ -73,12 +72,12 @@ const buildSubFamilyPayload = (localData, subFamily, clearEmptyValues) => {
73
72
  payload.tiers = subFamily.tiers.map((tier) => ({
74
73
  ending_unit: tier.endingUnit.trim() !== '' ? Number(tier.endingUnit) : undefined,
75
74
  package_size: tier.packageSize.trim() !== '' ? Number(tier.packageSize) : undefined,
76
- price: toAmountValue(tier.price),
75
+ price: tier.price?.amount ?? 0,
77
76
  pricing_type: tier.pricingType,
78
77
  starting_unit: Number(tier.startingUnit) || 1,
79
78
  }));
80
79
  }
81
- const accountingDetail = buildAccountingDetail(localData);
80
+ const accountingDetail = buildAccountingDetail(subFamily);
82
81
  if (accountingDetail != null) {
83
82
  payload.accounting_detail = accountingDetail;
84
83
  }
@@ -1,15 +1,21 @@
1
+ import { Amount } from '../../../commonStateTypes/amount';
1
2
  import { FetchedState, ID } from '../../../commonStateTypes/common';
2
3
  import { InvoicingCatalogItemKind } from '../invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewState';
3
4
  /** A single pricing tier within a sub-family (values kept as raw strings). */
4
5
  export interface InvoicingCatalogItemFormTier {
5
6
  endingUnit: string;
6
7
  packageSize: string;
7
- price: string;
8
8
  pricingType: string;
9
9
  startingUnit: string;
10
+ /** Unset until entered, so a blank field is distinguishable from a real 0. */
11
+ price?: Amount;
10
12
  }
11
13
  /** A sub-family (price point) of a catalog item. */
12
14
  export interface InvoicingCatalogItemFormSubFamily {
15
+ /** Accounting integration is per sub-family: the API carries
16
+ * `accounting_detail` on each product, not on the parent item. */
17
+ accountingCategory: string;
18
+ accountingCode: string;
13
19
  billingCycles: string;
14
20
  description: string;
15
21
  freeQuantity: string;
@@ -20,15 +26,17 @@ export interface InvoicingCatalogItemFormSubFamily {
20
26
  period: string;
21
27
  periodUnit: string;
22
28
  priceCode: string;
23
- priceDollars: string;
24
29
  pricingModel: string;
25
30
  prorationType: string;
26
31
  showDescriptionInInvoices: boolean;
27
32
  showDescriptionInQuotes: boolean;
33
+ sku: string;
28
34
  tiers: InvoicingCatalogItemFormTier[];
29
35
  trialEndAction: string;
30
36
  trialPeriod: string;
31
37
  trialPeriodUnit: string;
38
+ /** Unset until entered, so a blank field is distinguishable from a real 0. */
39
+ priceDollars?: Amount;
32
40
  }
33
41
  /**
34
42
  * Draft form state for the create/edit catalog item (plan / add-on / one-time
@@ -37,8 +45,6 @@ export interface InvoicingCatalogItemFormSubFamily {
37
45
  * every type is persisted as a parent catalog item through `/catalog/plans`.
38
46
  */
39
47
  export interface InvoicingCatalogItemFormLocalData {
40
- accountingCategory: string;
41
- accountingCode: string;
42
48
  applicableItems: string[];
43
49
  catalogType: string;
44
50
  description: string;
@@ -46,7 +52,6 @@ export interface InvoicingCatalogItemFormLocalData {
46
52
  itemApplicability: string;
47
53
  name: string;
48
54
  productCode: string;
49
- sku: string;
50
55
  subFamilies: InvoicingCatalogItemFormSubFamily[];
51
56
  unit: string;
52
57
  }
@@ -48,12 +48,13 @@ exports.isTieredCatalogPricingModel = isTieredCatalogPricingModel;
48
48
  const blankInvoicingCatalogTier = (startingUnit = '1') => ({
49
49
  endingUnit: '',
50
50
  packageSize: '',
51
- price: '',
52
51
  pricingType: 'per_unit',
53
52
  startingUnit,
54
53
  });
55
54
  exports.blankInvoicingCatalogTier = blankInvoicingCatalogTier;
56
55
  const blankInvoicingCatalogSubFamily = () => ({
56
+ accountingCategory: '',
57
+ accountingCode: '',
57
58
  billingCycles: '',
58
59
  description: '',
59
60
  freeQuantity: '0',
@@ -63,12 +64,12 @@ const blankInvoicingCatalogSubFamily = () => ({
63
64
  name: '',
64
65
  period: '1',
65
66
  periodUnit: 'month',
66
- priceDollars: '',
67
67
  priceCode: '',
68
68
  pricingModel: 'flat_fee',
69
69
  prorationType: 'site_default',
70
70
  showDescriptionInInvoices: true,
71
71
  showDescriptionInQuotes: true,
72
+ sku: '',
72
73
  tiers: [(0, exports.blankInvoicingCatalogTier)('1')],
73
74
  trialEndAction: 'site_default',
74
75
  trialPeriod: '',
@@ -82,7 +83,10 @@ const invoicingProductToCatalogItemFormSubFamily = (product) => {
82
83
  }
83
84
  return {
84
85
  ...base,
86
+ accountingCategory: product.accountingDetail?.accountingCategory1 ?? '',
87
+ accountingCode: product.accountingDetail?.accountingCode ?? '',
85
88
  billingCycles: product.billingCycles != null ? String(product.billingCycles) : '',
89
+ sku: product.accountingDetail?.sku ?? '',
86
90
  description: product.description ?? '',
87
91
  freeQuantity: product.freeQuantity != null ? String(product.freeQuantity) : '0',
88
92
  id: product.id,
@@ -91,7 +95,7 @@ const invoicingProductToCatalogItemFormSubFamily = (product) => {
91
95
  name: product.name ?? '',
92
96
  period: product.period != null ? String(product.period) : '1',
93
97
  periodUnit: product.periodUnit ?? 'month',
94
- priceDollars: product.price != null ? String(product.price.amount) : '',
98
+ priceDollars: product.price,
95
99
  priceCode: product.priceCode ?? '',
96
100
  pricingModel: product.pricingModel ?? 'flat_fee',
97
101
  prorationType: product.prorationType ?? 'site_default',
@@ -101,7 +105,7 @@ const invoicingProductToCatalogItemFormSubFamily = (product) => {
101
105
  ? product.tiers.map((tier) => ({
102
106
  endingUnit: tier.endingUnit != null ? String(tier.endingUnit) : '',
103
107
  packageSize: tier.packageSize != null ? String(tier.packageSize) : '',
104
- price: String(tier.price.amount),
108
+ price: tier.price,
105
109
  pricingType: tier.pricingType ?? 'per_unit',
106
110
  startingUnit: String(tier.startingUnit ?? 1),
107
111
  }))
@@ -113,8 +117,6 @@ const invoicingProductToCatalogItemFormSubFamily = (product) => {
113
117
  };
114
118
  exports.invoicingProductToCatalogItemFormSubFamily = invoicingProductToCatalogItemFormSubFamily;
115
119
  exports.initialInvoicingCatalogItemFormLocalData = {
116
- accountingCategory: '',
117
- accountingCode: '',
118
120
  applicableItems: [],
119
121
  catalogType: 'plan',
120
122
  description: '',
@@ -122,7 +124,6 @@ exports.initialInvoicingCatalogItemFormLocalData = {
122
124
  itemApplicability: 'all',
123
125
  name: '',
124
126
  productCode: '',
125
- sku: '',
126
127
  subFamilies: [(0, exports.blankInvoicingCatalogSubFamily)()],
127
128
  unit: '',
128
129
  };
@@ -143,8 +144,6 @@ const entityToInvoicingCatalogItemFormLocalData = (item) => {
143
144
  ? 'addon'
144
145
  : 'plan';
145
146
  return {
146
- accountingCategory: plan.subFamilies?.[0]?.accountingDetail?.accountingCategory1 ?? '',
147
- accountingCode: plan.subFamilies?.[0]?.accountingDetail?.accountingCode ?? '',
148
147
  applicableItems: item.applicableItems ?? [],
149
148
  catalogType,
150
149
  description: item.description ?? '',
@@ -152,7 +151,6 @@ const entityToInvoicingCatalogItemFormLocalData = (item) => {
152
151
  itemApplicability: item.itemApplicability ?? 'all',
153
152
  name: item.name ?? '',
154
153
  productCode: item.productCode ?? '',
155
- sku: plan.subFamilies?.[0]?.accountingDetail?.sku ?? '',
156
154
  subFamilies: plan?.subFamilies != null && plan.subFamilies.length > 0
157
155
  ? plan.subFamilies.map(exports.invoicingProductToCatalogItemFormSubFamily)
158
156
  : [(0, exports.invoicingProductToCatalogItemFormSubFamily)()],
@@ -25,8 +25,8 @@ const localDataToSaveInvoicingCouponPayload = (localData, isCreate) => {
25
25
  data.discount_percentage = Number(localData.discountPercentage);
26
26
  }
27
27
  if (localData.discountType === 'fixed_amount') {
28
- if (localData.discountAmount.trim() !== '') {
29
- data.discount_amount = Number(localData.discountAmount);
28
+ if (localData.discountAmount != null) {
29
+ data.discount_amount = localData.discountAmount.amount;
30
30
  }
31
31
  data.currency_code = 'USD';
32
32
  }
@@ -3,12 +3,12 @@ var _a;
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.resetEditInvoicingCouponDetailView = exports.submitInvoicingCouponFormFailure = exports.submitInvoicingCouponFormSuccess = exports.saveInvoicingCoupon = exports.submitInvoicingCouponForm = exports.updateInvoicingCouponFormDraft = exports.initialState = void 0;
5
5
  const toolkit_1 = require("@reduxjs/toolkit");
6
- const invoicingCouponFormConfig_1 = require("./invoicingCouponFormConfig");
6
+ const editInvoicingCouponDetailViewState_1 = require("./editInvoicingCouponDetailViewState");
7
7
  exports.initialState = {
8
8
  fetchState: 'Not-Started',
9
9
  error: undefined,
10
10
  editDraftById: {},
11
- newCouponDraft: { ...invoicingCouponFormConfig_1.initialInvoicingCouponFormLocalData },
11
+ newCouponDraft: { ...editInvoicingCouponDetailViewState_1.initialInvoicingCouponFormLocalData },
12
12
  savedCouponId: undefined,
13
13
  hasValidState() {
14
14
  return this.fetchState === 'Completed';
@@ -61,7 +61,7 @@ const editInvoicingCouponDetailView = (0, toolkit_1.createSlice)({
61
61
  draft.error = undefined;
62
62
  draft.savedCouponId = undefined;
63
63
  draft.editDraftById = {};
64
- draft.newCouponDraft = { ...invoicingCouponFormConfig_1.initialInvoicingCouponFormLocalData };
64
+ draft.newCouponDraft = { ...editInvoicingCouponDetailViewState_1.initialInvoicingCouponFormLocalData };
65
65
  },
66
66
  },
67
67
  });