@zeniai/client-epic-state 5.1.76 → 5.1.77-betaAK1

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 (101) 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/notificationRegistry/notificationRegistryPayload.d.ts +1 -0
  4. package/lib/entity/notificationRegistry/notificationRegistryPayload.js +3 -0
  5. package/lib/entity/notificationRegistry/notificationRegistryState.d.ts +1 -0
  6. package/lib/entity/tenant/clearAllEpic.d.ts +2 -1
  7. package/lib/entity/tenant/clearAllEpic.js +2 -0
  8. package/lib/epic.d.ts +2 -1
  9. package/lib/epic.js +7 -1
  10. package/lib/esm/entity/invoicing/invoicingCommonPayload.js +61 -0
  11. package/lib/esm/entity/notificationRegistry/notificationRegistryPayload.js +3 -0
  12. package/lib/esm/entity/tenant/clearAllEpic.js +2 -0
  13. package/lib/esm/epic.js +7 -1
  14. package/lib/esm/index.js +5 -1
  15. package/lib/esm/reducer.js +3 -0
  16. package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +4 -18
  17. package/lib/esm/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +8 -1
  18. package/lib/esm/view/invoicing/createCreditNote/createCreditNotePayload.js +1 -8
  19. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +5 -5
  20. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +2 -3
  21. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +5 -4
  22. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.js +2 -2
  23. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer.js +1 -1
  24. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +1 -1
  25. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js +45 -1
  26. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +3 -4
  27. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +4 -2
  28. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +7 -1
  29. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +3 -0
  30. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.js +25 -0
  31. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.js +15 -0
  32. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.js +15 -0
  33. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.js +15 -0
  34. package/lib/esm/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.js +1 -0
  35. package/lib/esm/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +26 -0
  36. package/lib/esm/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +18 -0
  37. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewPayload.js +47 -0
  38. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewReducer.js +128 -0
  39. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +20 -0
  40. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewState.js +1 -0
  41. package/lib/esm/view/invoicing/issueCreditNote/issueCreditNotePayload.js +4 -11
  42. package/lib/esm/view/invoicing/recordPayment/recordPaymentFormConfig.js +2 -1
  43. package/lib/esm/view/invoicing/recordPayment/recordPaymentPayload.js +5 -14
  44. package/lib/index.d.ts +7 -1
  45. package/lib/index.js +20 -4
  46. package/lib/reducer.d.ts +3 -0
  47. package/lib/reducer.js +3 -0
  48. package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +3 -17
  49. package/lib/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +8 -1
  50. package/lib/view/invoicing/createCreditNote/createCreditNotePayload.js +1 -8
  51. package/lib/view/invoicing/createCreditNote/createCreditNoteState.d.ts +2 -1
  52. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.d.ts +2 -1
  53. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +5 -5
  54. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +2 -3
  55. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewState.d.ts +3 -2
  56. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +5 -4
  57. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.js +2 -2
  58. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer.js +3 -3
  59. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +2 -2
  60. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.d.ts +8 -2
  61. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js +47 -0
  62. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +3 -4
  63. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewState.d.ts +2 -1
  64. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +4 -2
  65. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewPayload.d.ts +4 -1
  66. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.d.ts +1 -1
  67. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +6 -0
  68. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.d.ts +4 -1
  69. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +3 -0
  70. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewState.d.ts +4 -1
  71. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.d.ts +6 -0
  72. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.js +29 -0
  73. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.d.ts +6 -0
  74. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.js +19 -0
  75. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.d.ts +6 -0
  76. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.js +19 -0
  77. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.d.ts +6 -0
  78. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.js +19 -0
  79. package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.d.ts +2 -0
  80. package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.js +2 -0
  81. package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.d.ts +6 -0
  82. package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +30 -0
  83. package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.d.ts +6 -0
  84. package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +22 -0
  85. package/lib/view/invoicing/invoicingQboView/invoicingQboViewPayload.d.ts +79 -0
  86. package/lib/view/invoicing/invoicingQboView/invoicingQboViewPayload.js +52 -0
  87. package/lib/view/invoicing/invoicingQboView/invoicingQboViewReducer.d.ts +25 -0
  88. package/lib/view/invoicing/invoicingQboView/invoicingQboViewReducer.js +132 -0
  89. package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.d.ts +21 -0
  90. package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +24 -0
  91. package/lib/view/invoicing/invoicingQboView/invoicingQboViewState.d.ts +14 -0
  92. package/lib/view/invoicing/invoicingQboView/invoicingQboViewState.js +2 -0
  93. package/lib/view/invoicing/issueCreditNote/issueCreditNotePayload.js +4 -11
  94. package/lib/view/invoicing/issueCreditNote/issueCreditNoteState.d.ts +3 -2
  95. package/lib/view/invoicing/recordPayment/recordPaymentFormConfig.js +2 -1
  96. package/lib/view/invoicing/recordPayment/recordPaymentPayload.js +5 -14
  97. package/lib/view/invoicing/recordPayment/recordPaymentState.d.ts +3 -2
  98. package/package.json +1 -1
  99. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.js +0 -44
  100. package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.d.ts +0 -5
  101. package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.js +0 -48
@@ -1,3 +1,4 @@
1
+ import { toAmount } from '../../../commonStateTypes/amount';
1
2
  /**
2
3
  * Canonical value sets for the Record Payment form. CES owns the values;
3
4
  * web-components maps each value to a localized label.
@@ -25,7 +26,7 @@ export const INVOICING_PAYMENT_GATEWAY_VALUES = [
25
26
  'other',
26
27
  ];
27
28
  export const initialRecordPaymentFormLocalData = {
28
- amount: '',
29
+ amount: toAmount(0, 'USD', '$'),
29
30
  comment: '',
30
31
  customerId: '',
31
32
  date: '',
@@ -1,17 +1,8 @@
1
+ import { toAmount } from '../../../commonStateTypes/amount';
1
2
  import { dateNow } from '../../../zeniDayJS';
2
3
  import { initialRecordPaymentFormLocalData } from './recordPaymentFormConfig';
3
4
  const trimOrUndefined = (value) => value.trim() !== '' ? value.trim() : undefined;
4
- const dollarsFromAmountString = (value) => {
5
- const parsed = Number.parseFloat(value);
6
- if (Number.isNaN(parsed)) {
7
- return 0;
8
- }
9
- return parsed;
10
- };
11
- const amountDueDollarsFromInvoice = (invoice) => {
12
- const amountDue = invoice.amountDue?.amount ?? 0;
13
- return amountDue.toFixed(2);
14
- };
5
+ const amountDueFromInvoice = (invoice) => invoice.amountDue ?? toAmount(0, 'USD', '$');
15
6
  /**
16
7
  * Build the invoice-scoped Record Payment body from the form draft. Amount stays
17
8
  * in dollars for the invoice endpoint.
@@ -21,7 +12,7 @@ export const localDataToInvoiceRecordPaymentBody = (localData) => {
21
12
  const date = localData.date.trim();
22
13
  const referenceNumber = trimOrUndefined(localData.referenceNumber);
23
14
  return {
24
- amount: dollarsFromAmountString(localData.amount),
15
+ amount: localData.amount.amount,
25
16
  payment_method: localData.paymentMethod,
26
17
  ...(gateway != null ? { gateway } : {}),
27
18
  ...(date !== '' ? { date } : {}),
@@ -34,7 +25,7 @@ export const localDataToInvoiceRecordPaymentBody = (localData) => {
34
25
  * and the linked invoice into `linked_invoices`. Currency is locked to USD.
35
26
  */
36
27
  export const localDataToRecordPaymentPayload = (localData) => {
37
- const amount = dollarsFromAmountString(localData.amount);
28
+ const amount = localData.amount.amount;
38
29
  const gateway = trimOrUndefined(localData.gateway);
39
30
  const date = localData.date.trim();
40
31
  const transactionId = trimOrUndefined(localData.transactionId);
@@ -60,7 +51,7 @@ export const localDataToRecordPaymentPayload = (localData) => {
60
51
  };
61
52
  export const initializeRecordPaymentDraftFromInvoice = (invoice) => ({
62
53
  ...initialRecordPaymentFormLocalData,
63
- amount: amountDueDollarsFromInvoice(invoice),
54
+ amount: amountDueFromInvoice(invoice),
64
55
  customerId: invoice.customerID,
65
56
  date: dateNow().format('YYYY-MM-DD'),
66
57
  invoiceToLink: invoice.id,
package/lib/index.d.ts CHANGED
@@ -1080,7 +1080,7 @@ export type { ApplicableCatalogItemOption, InvoicingCatalogItemFormView, } from
1080
1080
  export { resetEditInvoicingCouponDetailView, saveInvoicingCoupon, submitInvoicingCouponForm, updateInvoicingCouponFormDraft, } from './view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer';
1081
1081
  export type { SaveInvoicingCouponPayload, SubmitInvoicingCouponFormPayload, UpdateInvoicingCouponFormDraftPayload, } from './view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer';
1082
1082
  export type { InvoicingCouponFormLocalData } from './view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState';
1083
- export { entityToInvoicingCouponFormLocalData, initialInvoicingCouponFormLocalData, } from './view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig';
1083
+ export { entityToInvoicingCouponFormLocalData, initialInvoicingCouponFormLocalData, } from './view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState';
1084
1084
  export { getEditInvoicingCouponDetailViewState, getInvoicingCouponFormView, } from './view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector';
1085
1085
  export type { EditInvoicingCouponDetailView, InvoicingCouponFormView, } from './view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector';
1086
1086
  export { clearInvoicingInvoiceAction, runInvoicingInvoiceAction, updateInvoicingInvoice, } from './view/invoicing/invoiceAction/invoiceActionReducer';
@@ -1194,6 +1194,12 @@ export type { InvoicingBrandingFormView, InvoicingSettingsView, } from './view/i
1194
1194
  export type { InvoicingBrandingFormLocalData } from './view/invoicing/settingsView/invoicingBrandingFormConfig';
1195
1195
  export { INVOICING_BUSINESS_ADDRESS_TYPE, entityToInvoicingBrandingFormLocalData, initialInvoicingBrandingFormLocalData, } from './view/invoicing/settingsView/invoicingBrandingFormConfig';
1196
1196
  export { isStripeConnectedFromSettings } from './view/invoicing/settingsView/invoicingSettingsHelpers';
1197
+ export { clearInvoicingQboView, fetchInvoicingQboAccounts, fetchInvoicingQboClasses, fetchInvoicingQboConnection, fetchInvoicingQboSyncHealth, retryInvoicingQboSyncTask, startInvoicingQboBackfill, } from './view/invoicing/invoicingQboView/invoicingQboViewReducer';
1198
+ export { getInvoicingQboView } from './view/invoicing/invoicingQboView/invoicingQboViewSelector';
1199
+ export type { InvoicingQboView } from './view/invoicing/invoicingQboView/invoicingQboViewSelector';
1200
+ export type { InvoicingQboAccountOption, InvoicingQboConnection, InvoicingQboFailedTask, InvoicingQboSyncHealth, } from './view/invoicing/invoicingQboView/invoicingQboViewPayload';
1201
+ export { INVOICING_QBO_CUSTOMER_MATCHING_MODES, getInvoicingQboAccountMappingId, toInvoicingQboCustomerMatchingMode, withInvoicingQboAccountMappingId, } from './entity/invoicing/invoicingCommonPayload';
1202
+ export type { InvoicingNamedOption, InvoicingQboAccountMappingKindOption, InvoicingQboAccountMappingsPayload, InvoicingQboCustomerMatchingMode, InvoicingQboSettingsPayload, } from './entity/invoicing/invoicingCommonPayload';
1197
1203
  export { acceptInvoicingTerms, clearInvoicingConfig, enableInvoicing, fetchInvoicingConfig, resetInvoicingConfigActionStates, updateInvoicingConfig, } from './view/invoicing/invoicingConfigView/invoicingConfigViewReducer';
1198
1204
  export { getInvoicingConfigView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
1199
1205
  export type { InvoicingConfigView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
package/lib/index.js CHANGED
@@ -83,7 +83,7 @@ exports.INVOICING_LIST_PAGE_SIZE = exports.getInvoicingDataImportActionState = e
83
83
  exports.getInvoicingSubscriptionById = exports.fetchInvoicingSubscriptionDetail = exports.clearInvoicingSubscriptionDetailView = exports.getInvoicingSubscriptionListView = exports.INVOICING_SUBSCRIPTION_TABS = exports.INVOICING_SUBSCRIPTION_COLUMNS = exports.ALL_INVOICING_SUBSCRIPTION_TAB_IDS = exports.ALL_INVOICING_SUBSCRIPTION_SORT_KEYS = exports.updateInvoicingSubscriptionFilters = exports.setInvoicingSubscriptionActiveTab = exports.fetchInvoicingSubscriptionListPage = exports.fetchInvoicingSubscriptionList = exports.fetchInvoicingSubscriptionCounts = exports.clearInvoicingSubscriptionListView = exports.updateInvoicingSubscriptions = exports.removeInvoicingSubscription = exports.clearAllInvoicingSubscriptions = exports.resetPromotionalCreditAction = exports.submitAddPromotionalCredits = exports.getInvoicingSetupIntentFetchState = exports.getInvoicingSetupIntent = exports.getInvoicingSentPaymentLinkMagicUrl = exports.getInvoicingSentPaymentLinkEmail = exports.getInvoicingPlaidLinkTokenFetchState = exports.getInvoicingPlaidLinkToken = exports.getInvoicingPaymentMethodSaveState = exports.getInvoicingPaymentLinkSendState = exports.sendInvoicingPaymentLink = exports.saveInvoicingPaymentMethod = exports.resetInvoicingCustomerPaymentMethod = exports.fetchInvoicingPlaidLinkToken = exports.createInvoicingSetupIntent = exports.getInvoicingCustomerDetail = exports.fetchInvoicingCustomerDetailPage = exports.fetchInvoicingCustomerDetail = exports.clearInvoicingCustomerDetailView = exports.getInvoicingCustomerListView = exports.INVOICING_CUSTOMER_TABS = 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.clearInvoicingCustomerListView = exports.updateInvoicingCustomers = exports.removeInvoicingCustomer = exports.clearAllInvoicingCustomers = void 0;
84
84
  exports.getInvoicingCouponCounts = exports.INVOICING_COUPON_TABS = 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.clearInvoicingCouponView = exports.updateInvoicingCoupons = exports.removeInvoicingCoupon = exports.clearAllInvoicingCoupons = exports.getInvoicingCreditNoteDetail = exports.getInvoicingCreditNoteById = exports.fetchInvoicingCreditNoteDetail = exports.clearInvoicingCreditNoteDetailView = exports.getInvoicingCreditNoteListView = exports.INVOICING_CREDIT_NOTE_TABS = 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.clearInvoicingCreditNoteListView = exports.updateInvoicingCreditNotes = exports.removeInvoicingCreditNote = exports.clearAllInvoicingCreditNotes = exports.getInvoicingTransactionDetail = exports.getInvoicingTransactionById = exports.fetchInvoicingTransactionDetail = exports.clearInvoicingTransactionDetailView = exports.getInvoicingTransactionListView = exports.INVOICING_TRANSACTION_TABS = 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.clearInvoicingTransactionListView = exports.updateInvoicingTransactions = exports.removeInvoicingTransaction = exports.clearAllInvoicingTransactions = exports.getInvoicingSubscriptionDetail = void 0;
85
85
  exports.getInvoicingProductById = exports.getInvoicingPlanById = exports.getInvoicingCatalogItemDetail = exports.fetchInvoicingCatalogItemDetail = exports.clearInvoicingCatalogItemDetailView = 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.clearInvoicingCatalogListView = exports.updateInvoicingProducts = exports.removeInvoicingProduct = exports.clearAllInvoicingProducts = exports.updateInvoicingPlans = exports.removeInvoicingPlan = exports.mergeInvoicingPlanSubFamily = exports.clearAllInvoicingPlans = exports.getInvoicingDunningCaseDetail = exports.getInvoicingDunningCaseById = exports.fetchInvoicingDunningCaseDetail = exports.clearInvoicingDunningCaseDetailView = exports.getInvoicingDunningCaseListView = exports.INVOICING_DUNNING_CASE_TABS = 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.clearInvoicingDunningCaseListView = exports.updateInvoicingDunningCases = exports.removeInvoicingDunningCase = exports.clearAllInvoicingDunningCases = exports.getInvoicingCouponDetail = exports.fetchInvoicingCouponDetail = exports.clearInvoicingCouponDetailView = exports.getInvoicingCouponById = exports.getInvoicingCouponListView = exports.getInvoicingCouponListNextCursor = exports.getInvoicingCouponListItems = exports.getInvoicingCouponListHasMore = exports.getInvoicingCouponListFilters = exports.getInvoicingCouponListFetchState = void 0;
86
- exports.getInvoicingConfigView = exports.updateInvoicingConfig = exports.resetInvoicingConfigActionStates = exports.fetchInvoicingConfig = exports.enableInvoicing = exports.clearInvoicingConfig = exports.acceptInvoicingTerms = exports.isStripeConnectedFromSettings = exports.initialInvoicingBrandingFormLocalData = exports.entityToInvoicingBrandingFormLocalData = exports.INVOICING_BUSINESS_ADDRESS_TYPE = exports.getInvoicingSettingsView = exports.getInvoicingSettingsFetchState = exports.getInvoicingSettings = exports.getInvoicingBrandingFormView = exports.updateInvoicingSettings = exports.updateInvoicingBrandingFormDraft = exports.submitInvoicingBrandingForm = exports.saveInvoicingSettings = exports.resetSaveInvoicingSettings = exports.resetInvoicingBrandingFormDraft = exports.fetchInvoicingSettings = exports.disconnectInvoicingStripe = exports.connectInvoicingStripe = exports.clearInvoicingSettings = void 0;
86
+ exports.getInvoicingConfigView = exports.updateInvoicingConfig = exports.resetInvoicingConfigActionStates = exports.fetchInvoicingConfig = exports.enableInvoicing = exports.clearInvoicingConfig = exports.acceptInvoicingTerms = exports.withInvoicingQboAccountMappingId = exports.toInvoicingQboCustomerMatchingMode = exports.getInvoicingQboAccountMappingId = exports.INVOICING_QBO_CUSTOMER_MATCHING_MODES = exports.getInvoicingQboView = exports.startInvoicingQboBackfill = exports.retryInvoicingQboSyncTask = exports.fetchInvoicingQboSyncHealth = exports.fetchInvoicingQboConnection = exports.fetchInvoicingQboClasses = exports.fetchInvoicingQboAccounts = exports.clearInvoicingQboView = exports.isStripeConnectedFromSettings = exports.initialInvoicingBrandingFormLocalData = exports.entityToInvoicingBrandingFormLocalData = exports.INVOICING_BUSINESS_ADDRESS_TYPE = exports.getInvoicingSettingsView = exports.getInvoicingSettingsFetchState = exports.getInvoicingSettings = exports.getInvoicingBrandingFormView = exports.updateInvoicingSettings = exports.updateInvoicingBrandingFormDraft = exports.submitInvoicingBrandingForm = exports.saveInvoicingSettings = exports.resetSaveInvoicingSettings = exports.resetInvoicingBrandingFormDraft = exports.fetchInvoicingSettings = exports.disconnectInvoicingStripe = exports.connectInvoicingStripe = exports.clearInvoicingSettings = void 0;
87
87
  const allowedValue_1 = require("./commonStateTypes/allowedValue");
88
88
  Object.defineProperty(exports, "isAllowedValueWithCode", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithCode; } });
89
89
  Object.defineProperty(exports, "isAllowedValueWithID", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithID; } });
@@ -2801,9 +2801,9 @@ Object.defineProperty(exports, "resetEditInvoicingCouponDetailView", { enumerabl
2801
2801
  Object.defineProperty(exports, "saveInvoicingCoupon", { enumerable: true, get: function () { return editInvoicingCouponDetailViewReducer_1.saveInvoicingCoupon; } });
2802
2802
  Object.defineProperty(exports, "submitInvoicingCouponForm", { enumerable: true, get: function () { return editInvoicingCouponDetailViewReducer_1.submitInvoicingCouponForm; } });
2803
2803
  Object.defineProperty(exports, "updateInvoicingCouponFormDraft", { enumerable: true, get: function () { return editInvoicingCouponDetailViewReducer_1.updateInvoicingCouponFormDraft; } });
2804
- var invoicingCouponFormConfig_1 = require("./view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig");
2805
- Object.defineProperty(exports, "entityToInvoicingCouponFormLocalData", { enumerable: true, get: function () { return invoicingCouponFormConfig_1.entityToInvoicingCouponFormLocalData; } });
2806
- Object.defineProperty(exports, "initialInvoicingCouponFormLocalData", { enumerable: true, get: function () { return invoicingCouponFormConfig_1.initialInvoicingCouponFormLocalData; } });
2804
+ var editInvoicingCouponDetailViewState_1 = require("./view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState");
2805
+ Object.defineProperty(exports, "entityToInvoicingCouponFormLocalData", { enumerable: true, get: function () { return editInvoicingCouponDetailViewState_1.entityToInvoicingCouponFormLocalData; } });
2806
+ Object.defineProperty(exports, "initialInvoicingCouponFormLocalData", { enumerable: true, get: function () { return editInvoicingCouponDetailViewState_1.initialInvoicingCouponFormLocalData; } });
2807
2807
  var editInvoicingCouponDetailViewSelector_1 = require("./view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector");
2808
2808
  Object.defineProperty(exports, "getEditInvoicingCouponDetailViewState", { enumerable: true, get: function () { return editInvoicingCouponDetailViewSelector_1.getEditInvoicingCouponDetailViewState; } });
2809
2809
  Object.defineProperty(exports, "getInvoicingCouponFormView", { enumerable: true, get: function () { return editInvoicingCouponDetailViewSelector_1.getInvoicingCouponFormView; } });
@@ -3090,6 +3090,22 @@ Object.defineProperty(exports, "entityToInvoicingBrandingFormLocalData", { enume
3090
3090
  Object.defineProperty(exports, "initialInvoicingBrandingFormLocalData", { enumerable: true, get: function () { return invoicingBrandingFormConfig_1.initialInvoicingBrandingFormLocalData; } });
3091
3091
  var invoicingSettingsHelpers_1 = require("./view/invoicing/settingsView/invoicingSettingsHelpers");
3092
3092
  Object.defineProperty(exports, "isStripeConnectedFromSettings", { enumerable: true, get: function () { return invoicingSettingsHelpers_1.isStripeConnectedFromSettings; } });
3093
+ // ── Invoicing: QBO integration ────────────────────────────────────────────────
3094
+ var invoicingQboViewReducer_1 = require("./view/invoicing/invoicingQboView/invoicingQboViewReducer");
3095
+ Object.defineProperty(exports, "clearInvoicingQboView", { enumerable: true, get: function () { return invoicingQboViewReducer_1.clearInvoicingQboView; } });
3096
+ Object.defineProperty(exports, "fetchInvoicingQboAccounts", { enumerable: true, get: function () { return invoicingQboViewReducer_1.fetchInvoicingQboAccounts; } });
3097
+ Object.defineProperty(exports, "fetchInvoicingQboClasses", { enumerable: true, get: function () { return invoicingQboViewReducer_1.fetchInvoicingQboClasses; } });
3098
+ Object.defineProperty(exports, "fetchInvoicingQboConnection", { enumerable: true, get: function () { return invoicingQboViewReducer_1.fetchInvoicingQboConnection; } });
3099
+ Object.defineProperty(exports, "fetchInvoicingQboSyncHealth", { enumerable: true, get: function () { return invoicingQboViewReducer_1.fetchInvoicingQboSyncHealth; } });
3100
+ Object.defineProperty(exports, "retryInvoicingQboSyncTask", { enumerable: true, get: function () { return invoicingQboViewReducer_1.retryInvoicingQboSyncTask; } });
3101
+ Object.defineProperty(exports, "startInvoicingQboBackfill", { enumerable: true, get: function () { return invoicingQboViewReducer_1.startInvoicingQboBackfill; } });
3102
+ var invoicingQboViewSelector_1 = require("./view/invoicing/invoicingQboView/invoicingQboViewSelector");
3103
+ Object.defineProperty(exports, "getInvoicingQboView", { enumerable: true, get: function () { return invoicingQboViewSelector_1.getInvoicingQboView; } });
3104
+ var invoicingCommonPayload_2 = require("./entity/invoicing/invoicingCommonPayload");
3105
+ Object.defineProperty(exports, "INVOICING_QBO_CUSTOMER_MATCHING_MODES", { enumerable: true, get: function () { return invoicingCommonPayload_2.INVOICING_QBO_CUSTOMER_MATCHING_MODES; } });
3106
+ Object.defineProperty(exports, "getInvoicingQboAccountMappingId", { enumerable: true, get: function () { return invoicingCommonPayload_2.getInvoicingQboAccountMappingId; } });
3107
+ Object.defineProperty(exports, "toInvoicingQboCustomerMatchingMode", { enumerable: true, get: function () { return invoicingCommonPayload_2.toInvoicingQboCustomerMatchingMode; } });
3108
+ Object.defineProperty(exports, "withInvoicingQboAccountMappingId", { enumerable: true, get: function () { return invoicingCommonPayload_2.withInvoicingQboAccountMappingId; } });
3093
3109
  // ── Invoicing: config ─────────────────────────────────────────────────────────
3094
3110
  var invoicingConfigViewReducer_1 = require("./view/invoicing/invoicingConfigView/invoicingConfigViewReducer");
3095
3111
  Object.defineProperty(exports, "acceptInvoicingTerms", { enumerable: true, get: function () { return invoicingConfigViewReducer_1.acceptInvoicingTerms; } });
package/lib/reducer.d.ts CHANGED
@@ -153,6 +153,7 @@ import { InvoicingCustomerListViewState } from './view/invoicing/invoicingCustom
153
153
  import { InvoicingDunningCaseDetailViewState } from './view/invoicing/invoicingDunningCaseDetailView/invoicingDunningCaseDetailViewState';
154
154
  import { InvoicingDunningCaseListViewState } from './view/invoicing/invoicingDunningCaseListView/invoicingDunningCaseListViewState';
155
155
  import { InvoicingOverviewState } from './view/invoicing/invoicingOverview/invoicingOverviewState';
156
+ import { InvoicingQboViewState } from './view/invoicing/invoicingQboView/invoicingQboViewState';
156
157
  import { InvoicingSubscriptionDetailViewState } from './view/invoicing/invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewState';
157
158
  import { InvoicingSubscriptionListViewState } from './view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState';
158
159
  import { InvoicingTransactionDetailViewState } from './view/invoicing/invoicingTransactionDetailView/invoicingTransactionDetailViewState';
@@ -466,6 +467,7 @@ type ViewsState = {
466
467
  invoicingOverviewState: InvoicingOverviewState;
467
468
  invoicingPaymentActionState: InvoicingPaymentActionState;
468
469
  invoicingPromotionalCreditActionState: PromotionalCreditActionState;
470
+ invoicingQboViewState: InvoicingQboViewState;
469
471
  invoicingRecordPaymentState: InvoicingRecordPaymentState;
470
472
  invoicingSettingsViewState: InvoicingSettingsViewState;
471
473
  invoicingSubscriptionActionState: InvoicingSubscriptionActionState;
@@ -666,6 +668,7 @@ declare const reducers: import("redux").Reducer<import("redux").CombinedState<{
666
668
  invoicingInvoiceListState: InvoicingInvoiceListState;
667
669
  invoicingPaymentActionState: InvoicingPaymentActionState;
668
670
  invoicingConfigViewState: InvoicingConfigViewState;
671
+ invoicingQboViewState: InvoicingQboViewState;
669
672
  invoicingSettingsViewState: InvoicingSettingsViewState;
670
673
  invoicingCatalogActionState: InvoicingCatalogActionState;
671
674
  invoicingDiscountActionState: InvoicingDiscountActionState;
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,
@@ -7,7 +7,6 @@ exports.getLastTransferEntryReplacement = exports.toTransactionView = exports.ge
7
7
  exports.getExpenseAutomationTransactionView = getExpenseAutomationTransactionView;
8
8
  const toolkit_1 = require("@reduxjs/toolkit");
9
9
  const omit_1 = __importDefault(require("lodash/omit"));
10
- const reduceFetchState_1 = require("../../../commonStateTypes/reduceFetchState");
11
10
  const timePeriod_1 = require("../../../commonStateTypes/timePeriod");
12
11
  const tenantSelector_1 = require("../../../entity/tenant/tenantSelector");
13
12
  const transactionHelper_1 = require("../../../entity/transaction/transactionHelper");
@@ -96,7 +95,7 @@ exports.toTransactionView = toTransactionView;
96
95
  var createTransferEntrySelector_2 = require("../../createTransferEntry/createTransferEntrySelector");
97
96
  Object.defineProperty(exports, "getLastTransferEntryReplacement", { enumerable: true, get: function () { return createTransferEntrySelector_2.getLastTransferEntryReplacement; } });
98
97
  function getExpenseAutomationTransactionView(state) {
99
- const { accountState, classState, classListState, accountListState, createTransferEntryState, expenseAutomationTransactionsViewState, expenseAutomationViewState, projectState, projectListState, transactionState, monthEndCloseChecksState, monthEndCloseChecksViewState, } = state;
98
+ const { accountState, classState, classListState, accountListState, createTransferEntryState, expenseAutomationTransactionsViewState, expenseAutomationViewState, projectState, projectListState, transactionState, monthEndCloseChecksState, } = state;
100
99
  const { selectedTransactionCategorizationCompletedSubTab, selectedTransactionCategorizationTab, } = expenseAutomationTransactionsViewState;
101
100
  const { uiState, refreshStatus, saveStatus, markAsNotMiscategorizedStatus, transactionIdsBySelectedPeriod, transactionReviewLocalDataById, selectedCheckBoxTransactionIds, transactionIdsWithUnsavedData, uploadReceiptStatusById, selectedTransactionId, selectedTransactionLineId, filters, } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
102
101
  const uncategorizedIncomeExpense = (0, accountListSelector_1.getUncategorizedAccounts)(accountState, accountListState, 'accountList');
@@ -169,21 +168,8 @@ function getExpenseAutomationTransactionView(state) {
169
168
  }
170
169
  return [];
171
170
  });
172
- const monthEndFetchState = monthYearPeriodId != null
173
- ? (monthEndCloseChecksViewState.monthEndCloseChecksViewByTenantId[currentTenant.tenantId]?.[monthYearPeriodId] ?? { fetchState: 'Not-Started', error: undefined })
174
- : { fetchState: 'Not-Started', error: undefined };
175
- const isAccountingClassesEnabled = (0, tenantSelector_1.getIsAccountingClassesEnabled)(state);
176
- const allFetchStateList = [
177
- accountList,
178
- expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab],
179
- ];
180
- if (isAccountingClassesEnabled) {
181
- allFetchStateList.push(classList);
182
- }
183
- const fetchStatus = (0, reduceFetchState_1.reduceAnyFetchState)([
184
- (0, reduceFetchState_1.reduceAllFetchState)(allFetchStateList),
185
- monthEndFetchState,
186
- ]);
171
+ const { fetchState, error } = expenseAutomationTransactionsViewState.transactionCategorizationView[selectedTransactionCategorizationTab];
172
+ const fetchStatus = { fetchState, error };
187
173
  const totalCountByReview = expenseAutomationTransactionsViewState.transactionCategorizationView.review
188
174
  .uiState.totalCount;
189
175
  const totalCountByAutoCat = expenseAutomationTransactionsViewState.transactionCategorizationView
@@ -1,9 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initialCreateCreditNoteFormLocalData = void 0;
4
+ const amount_1 = require("../../../commonStateTypes/amount");
4
5
  const initialCreateCreditNoteFormLocalData = () => ({
5
6
  customerId: '',
6
- lineItems: [{ description: '', quantity: '1', unitAmount: '' }],
7
+ lineItems: [
8
+ {
9
+ description: '',
10
+ quantity: '1',
11
+ unitAmount: (0, amount_1.toAmount)(0, 'USD', '$'),
12
+ },
13
+ ],
7
14
  reasonCode: '',
8
15
  referenceInvoiceId: '',
9
16
  });
@@ -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;
16
9
  return {
17
10
  description: lineItem.description.trim(),
18
11
  quantity,
@@ -1,8 +1,9 @@
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
+ unitAmount: Amount;
6
7
  }
7
8
  export interface CreateCreditNoteFormLocalData {
8
9
  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,7 +40,7 @@ export interface CreateSubFamilyFormValues {
39
40
  period: string;
40
41
  periodUnit: string;
41
42
  priceCode: string;
42
- priceDollars: string;
43
+ priceDollars: Amount;
43
44
  pricingModel: string;
44
45
  prorationType: string;
45
46
  trialEndAction: string;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.productToCreateSubFamilyFormValues = exports.createSubFamilyFormToPayload = exports.catalogDetailEditValuesToSavePayload = exports.planToCatalogDetailEditValues = void 0;
4
+ const amount_1 = require("../../../commonStateTypes/amount");
4
5
  const invoicingCatalogItemFormConfig_1 = require("./invoicingCatalogItemFormConfig");
5
6
  const trimOrUndefined = (value) => value.trim() !== '' ? value.trim() : undefined;
6
7
  const trimOrNull = (value) => value.trim() !== '' ? value.trim() : null;
@@ -35,7 +36,7 @@ const tierToPayload = (tier) => ({
35
36
  package_size: hasValue(tier.packageSize)
36
37
  ? Number(tier.packageSize)
37
38
  : undefined,
38
- price: toAmountValue(tier.price),
39
+ price: tier.price.amount,
39
40
  pricing_type: tier.pricingType,
40
41
  starting_unit: Number(tier.startingUnit) || 1,
41
42
  });
@@ -49,7 +50,7 @@ const subFamilyToProductUpdate = (subFamily, itemType) => {
49
50
  is_taxable: subFamily.isTaxable,
50
51
  period: hasValue(subFamily.period) ? Number(subFamily.period) : null,
51
52
  period_unit: hasValue(subFamily.period) ? subFamily.periodUnit : null,
52
- price: tiered ? 0 : toAmountValue(subFamily.priceDollars),
53
+ price: tiered ? 0 : subFamily.priceDollars.amount,
53
54
  pricing_model: subFamily.pricingModel,
54
55
  show_description_in_quotes: subFamily.showDescriptionInQuotes,
55
56
  tiers: tiered ? subFamily.tiers.map(tierToPayload) : [],
@@ -117,7 +118,6 @@ const catalogDetailEditValuesToSavePayload = (values, itemType = 'plan', origina
117
118
  };
118
119
  };
119
120
  exports.catalogDetailEditValuesToSavePayload = catalogDetailEditValuesToSavePayload;
120
- const toAmountValue = (value) => Number(value) || 0;
121
121
  /** Build POST /catalog/products body for Create sub-family. */
122
122
  const createSubFamilyFormToPayload = (itemId, itemType, values) => {
123
123
  const name = values.name.trim();
@@ -128,7 +128,7 @@ const createSubFamilyFormToPayload = (itemId, itemType, values) => {
128
128
  is_taxable: true,
129
129
  item_id: itemId,
130
130
  name,
131
- price: toAmountValue(values.priceDollars),
131
+ price: values.priceDollars.amount,
132
132
  price_code: priceCode,
133
133
  pricing_model: values.pricingModel || 'flat_fee',
134
134
  show_description_in_invoices: true,
@@ -168,7 +168,7 @@ const productToCreateSubFamilyFormValues = (product) => ({
168
168
  period: product?.period != null ? String(product.period) : '1',
169
169
  periodUnit: product?.periodUnit ?? 'month',
170
170
  priceCode: '',
171
- priceDollars: product?.price != null ? String(product.price.amount) : '',
171
+ priceDollars: product?.price ?? (0, amount_1.toAmount)(0, 'USD', '$'),
172
172
  pricingModel: product?.pricingModel ?? 'flat_fee',
173
173
  prorationType: product?.prorationType ?? 'site_default',
174
174
  trialEndAction: product?.trialEndAction ?? 'site_default',
@@ -10,7 +10,6 @@ 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
13
  const buildAccountingDetail = (localData) => {
15
14
  const detail = {};
16
15
  if (localData.sku.trim() !== '') {
@@ -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,
38
37
  price_code: priceCode,
39
38
  pricing_model: subFamily.pricingModel,
40
39
  show_description_in_invoices: subFamily.showDescriptionInInvoices,
@@ -73,7 +72,7 @@ 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,
77
76
  pricing_type: tier.pricingType,
78
77
  starting_unit: Number(tier.startingUnit) || 1,
79
78
  }));
@@ -1,10 +1,11 @@
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
+ price: Amount;
8
9
  pricingType: string;
9
10
  startingUnit: string;
10
11
  }
@@ -20,7 +21,7 @@ export interface InvoicingCatalogItemFormSubFamily {
20
21
  period: string;
21
22
  periodUnit: string;
22
23
  priceCode: string;
23
- priceDollars: string;
24
+ priceDollars: Amount;
24
25
  pricingModel: string;
25
26
  prorationType: string;
26
27
  showDescriptionInInvoices: boolean;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.entityToInvoicingCatalogItemFormLocalData = exports.initialInvoicingCatalogItemFormLocalData = exports.invoicingProductToCatalogItemFormSubFamily = exports.blankInvoicingCatalogSubFamily = exports.blankInvoicingCatalogTier = exports.isTieredCatalogPricingModel = exports.INVOICING_CATALOG_APPLICABILITY_VALUES = exports.INVOICING_CATALOG_PRORATION_VALUES = exports.INVOICING_CATALOG_TRIAL_END_ACTION_VALUES = exports.INVOICING_CATALOG_TRIAL_UNIT_VALUES = exports.INVOICING_CATALOG_TIER_TYPE_VALUES = exports.INVOICING_CATALOG_PRICING_MODEL_VALUES = exports.INVOICING_CATALOG_PERIOD_UNIT_VALUES = exports.INVOICING_CATALOG_TYPE_VALUES = void 0;
4
+ const amount_1 = require("../../../commonStateTypes/amount");
4
5
  /**
5
6
  * Canonical value sets for the catalog item form. CES owns the values;
6
7
  * web-components maps each value to a localized label.
@@ -48,7 +49,7 @@ exports.isTieredCatalogPricingModel = isTieredCatalogPricingModel;
48
49
  const blankInvoicingCatalogTier = (startingUnit = '1') => ({
49
50
  endingUnit: '',
50
51
  packageSize: '',
51
- price: '',
52
+ price: (0, amount_1.toAmount)(0, 'USD', '$'),
52
53
  pricingType: 'per_unit',
53
54
  startingUnit,
54
55
  });
@@ -63,7 +64,7 @@ const blankInvoicingCatalogSubFamily = () => ({
63
64
  name: '',
64
65
  period: '1',
65
66
  periodUnit: 'month',
66
- priceDollars: '',
67
+ priceDollars: (0, amount_1.toAmount)(0, 'USD', '$'),
67
68
  priceCode: '',
68
69
  pricingModel: 'flat_fee',
69
70
  prorationType: 'site_default',
@@ -91,7 +92,7 @@ const invoicingProductToCatalogItemFormSubFamily = (product) => {
91
92
  name: product.name ?? '',
92
93
  period: product.period != null ? String(product.period) : '1',
93
94
  periodUnit: product.periodUnit ?? 'month',
94
- priceDollars: product.price != null ? String(product.price.amount) : '',
95
+ priceDollars: product.price ?? (0, amount_1.toAmount)(0, 'USD', '$'),
95
96
  priceCode: product.priceCode ?? '',
96
97
  pricingModel: product.pricingModel ?? 'flat_fee',
97
98
  prorationType: product.prorationType ?? 'site_default',
@@ -101,7 +102,7 @@ const invoicingProductToCatalogItemFormSubFamily = (product) => {
101
102
  ? product.tiers.map((tier) => ({
102
103
  endingUnit: tier.endingUnit != null ? String(tier.endingUnit) : '',
103
104
  packageSize: tier.packageSize != null ? String(tier.packageSize) : '',
104
- price: String(tier.price.amount),
105
+ price: tier.price,
105
106
  pricingType: tier.pricingType ?? 'per_unit',
106
107
  startingUnit: String(tier.startingUnit ?? 1),
107
108
  }))
@@ -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.amount !== 0) {
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
  });
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getInvoicingCouponFormView = exports.getEditInvoicingCouponDetailViewState = void 0;
4
4
  const couponConstants_1 = require("../../../entity/invoicing/coupon/couponConstants");
5
5
  const couponSelector_1 = require("../../../entity/invoicing/coupon/couponSelector");
6
- const invoicingCouponFormConfig_1 = require("./invoicingCouponFormConfig");
6
+ const editInvoicingCouponDetailViewState_1 = require("./editInvoicingCouponDetailViewState");
7
7
  /**
8
8
  * Bundled view for the discount create/edit form: the save fetch state/error,
9
9
  * the id of the coupon last saved, and — when a `couponId` is passed (edit
@@ -33,7 +33,7 @@ const getInvoicingCouponFormView = (state, couponId) => {
33
33
  const { editDraftById, newCouponDraft } = state.editInvoicingCouponDetailViewState;
34
34
  const localData = couponId != null
35
35
  ? (editDraftById[couponId] ??
36
- (0, invoicingCouponFormConfig_1.entityToInvoicingCouponFormLocalData)(base.coupon))
36
+ (0, editInvoicingCouponDetailViewState_1.entityToInvoicingCouponFormLocalData)(base.coupon))
37
37
  : newCouponDraft;
38
38
  return {
39
39
  ...base,
@@ -1,14 +1,17 @@
1
+ import { Amount } from '../../../commonStateTypes/amount';
1
2
  import { FetchedState, ID } from '../../../commonStateTypes/common';
3
+ import { InvoicingCoupon } from '../../../entity/invoicing/coupon/couponState';
2
4
  /**
3
5
  * Draft form state for the create/edit discount-coupon form. Held in CES so the
4
6
  * form flows its data from here (mirrors the customer form pattern). Dates are
5
- * stored as ISO `YYYY-MM-DD` strings; amounts/quantities as raw strings.
7
+ * stored as ISO `YYYY-MM-DD` strings; the discount amount as an `Amount` (as on
8
+ * the coupon entity); remaining quantities as raw strings.
6
9
  */
7
10
  export interface InvoicingCouponFormLocalData {
8
11
  applyOn: string;
9
12
  couponCode: string;
10
13
  couponId: string;
11
- discountAmount: string;
14
+ discountAmount: Amount;
12
15
  discountPercentage: string;
13
16
  discountQuantity: string;
14
17
  discountType: string;
@@ -27,3 +30,6 @@ export interface EditInvoicingCouponDetailViewState extends FetchedState {
27
30
  newCouponDraft: InvoicingCouponFormLocalData;
28
31
  savedCouponId?: ID;
29
32
  }
33
+ export declare const initialInvoicingCouponFormLocalData: InvoicingCouponFormLocalData;
34
+ /** Seed the form draft from an existing coupon entity (edit mode). */
35
+ export declare const entityToInvoicingCouponFormLocalData: (coupon?: InvoicingCoupon) => InvoicingCouponFormLocalData;
@@ -1,2 +1,49 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.entityToInvoicingCouponFormLocalData = exports.initialInvoicingCouponFormLocalData = void 0;
4
+ const amount_1 = require("../../../commonStateTypes/amount");
5
+ exports.initialInvoicingCouponFormLocalData = {
6
+ applyOn: 'invoice_amount',
7
+ couponCode: '',
8
+ couponId: '',
9
+ discountAmount: (0, amount_1.toAmount)(0, 'USD', '$'),
10
+ discountPercentage: '',
11
+ discountQuantity: '',
12
+ discountType: 'percentage',
13
+ durationType: 'one_time',
14
+ invoiceName: '',
15
+ invoiceNotes: '',
16
+ maxRedemptions: '',
17
+ name: '',
18
+ period: '',
19
+ periodUnit: 'month',
20
+ validFrom: '',
21
+ validTill: '',
22
+ };
23
+ /** Seed the form draft from an existing coupon entity (edit mode). */
24
+ const entityToInvoicingCouponFormLocalData = (coupon) => {
25
+ if (coupon == null) {
26
+ return { ...exports.initialInvoicingCouponFormLocalData };
27
+ }
28
+ return {
29
+ applyOn: coupon.applyOn ?? 'invoice_amount',
30
+ couponCode: coupon.couponCode ?? '',
31
+ couponId: coupon.id ?? '',
32
+ discountAmount: coupon.discountAmount ?? (0, amount_1.toAmount)(0, 'USD', '$'),
33
+ discountPercentage: coupon.discountPercentage != null
34
+ ? String(coupon.discountPercentage)
35
+ : '',
36
+ discountQuantity: coupon.discountQuantity != null ? String(coupon.discountQuantity) : '',
37
+ discountType: coupon.discountType ?? 'percentage',
38
+ durationType: coupon.durationType ?? 'one_time',
39
+ invoiceName: coupon.invoiceName ?? '',
40
+ invoiceNotes: coupon.invoiceNotes ?? '',
41
+ maxRedemptions: coupon.maxRedemptions != null ? String(coupon.maxRedemptions) : '',
42
+ name: coupon.name ?? '',
43
+ period: coupon.period != null ? String(coupon.period) : '',
44
+ periodUnit: coupon.periodUnit ?? 'month',
45
+ validFrom: coupon.validFrom != null ? coupon.validFrom.format('YYYY-MM-DD') : '',
46
+ validTill: coupon.validTill != null ? coupon.validTill.format('YYYY-MM-DD') : '',
47
+ };
48
+ };
49
+ exports.entityToInvoicingCouponFormLocalData = entityToInvoicingCouponFormLocalData;
@@ -27,8 +27,7 @@ const localDataToSaveInvoicingSubscriptionPayload = (localData, shippingAddress)
27
27
  quantity: 1,
28
28
  })),
29
29
  ];
30
- const setupFee = localData.setupFee.trim();
31
- const parsedSetupFee = Number.parseFloat(setupFee);
30
+ const setupFee = localData.setupFee.amount;
32
31
  const poNumber = localData.poNumber.trim();
33
32
  const trialEnd = localData.trialEnd.trim();
34
33
  return {
@@ -38,8 +37,8 @@ const localDataToSaveInvoicingSubscriptionPayload = (localData, shippingAddress)
38
37
  currency_code: localData.preferredCurrencyCode,
39
38
  customer_id: localData.customerId,
40
39
  subscription_items: items,
41
- ...(setupFee !== '' && !Number.isNaN(parsedSetupFee)
42
- ? { setup_fee: parsedSetupFee }
40
+ ...(Number.isFinite(setupFee) && setupFee !== 0
41
+ ? { setup_fee: setupFee }
43
42
  : {}),
44
43
  ...(poNumber !== '' ? { po_number: poNumber } : {}),
45
44
  ...(trialEnd !== '' ? { trial_end: trialEnd } : {}),