@zeniai/client-epic-state 5.1.77 → 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 (95) 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 +5 -1
  11. package/lib/esm/reducer.js +3 -0
  12. package/lib/esm/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +6 -1
  13. package/lib/esm/view/invoicing/createCreditNote/createCreditNotePayload.js +1 -8
  14. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +4 -5
  15. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +10 -11
  16. package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +8 -10
  17. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.js +2 -2
  18. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer.js +1 -1
  19. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +1 -1
  20. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js +43 -1
  21. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +2 -5
  22. package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +1 -2
  23. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +7 -1
  24. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +3 -0
  25. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.js +25 -0
  26. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.js +15 -0
  27. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.js +15 -0
  28. package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.js +15 -0
  29. package/lib/esm/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.js +1 -0
  30. package/lib/esm/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +26 -0
  31. package/lib/esm/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +18 -0
  32. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewPayload.js +47 -0
  33. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewReducer.js +128 -0
  34. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +20 -0
  35. package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewState.js +1 -0
  36. package/lib/esm/view/invoicing/issueCreditNote/issueCreditNotePayload.js +4 -11
  37. package/lib/esm/view/invoicing/recordPayment/recordPaymentFormConfig.js +0 -1
  38. package/lib/esm/view/invoicing/recordPayment/recordPaymentPayload.js +5 -14
  39. package/lib/index.d.ts +7 -1
  40. package/lib/index.js +20 -4
  41. package/lib/reducer.d.ts +3 -0
  42. package/lib/reducer.js +3 -0
  43. package/lib/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +6 -1
  44. package/lib/view/invoicing/createCreditNote/createCreditNotePayload.js +1 -8
  45. package/lib/view/invoicing/createCreditNote/createCreditNoteState.d.ts +3 -1
  46. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.d.ts +2 -1
  47. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +4 -5
  48. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +10 -11
  49. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewState.d.ts +10 -5
  50. package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +8 -10
  51. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.js +2 -2
  52. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer.js +3 -3
  53. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +2 -2
  54. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.d.ts +9 -2
  55. package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js +45 -0
  56. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +2 -5
  57. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewState.d.ts +3 -1
  58. package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +1 -2
  59. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewPayload.d.ts +4 -1
  60. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.d.ts +1 -1
  61. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +6 -0
  62. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.d.ts +4 -1
  63. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +3 -0
  64. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewState.d.ts +4 -1
  65. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.d.ts +6 -0
  66. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.js +29 -0
  67. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.d.ts +6 -0
  68. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.js +19 -0
  69. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.d.ts +6 -0
  70. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.js +19 -0
  71. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.d.ts +6 -0
  72. package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.js +19 -0
  73. package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.d.ts +2 -0
  74. package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.js +2 -0
  75. package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.d.ts +6 -0
  76. package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +30 -0
  77. package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.d.ts +6 -0
  78. package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +22 -0
  79. package/lib/view/invoicing/invoicingQboView/invoicingQboViewPayload.d.ts +79 -0
  80. package/lib/view/invoicing/invoicingQboView/invoicingQboViewPayload.js +52 -0
  81. package/lib/view/invoicing/invoicingQboView/invoicingQboViewReducer.d.ts +25 -0
  82. package/lib/view/invoicing/invoicingQboView/invoicingQboViewReducer.js +132 -0
  83. package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.d.ts +21 -0
  84. package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +24 -0
  85. package/lib/view/invoicing/invoicingQboView/invoicingQboViewState.d.ts +14 -0
  86. package/lib/view/invoicing/invoicingQboView/invoicingQboViewState.js +2 -0
  87. package/lib/view/invoicing/issueCreditNote/issueCreditNotePayload.js +4 -11
  88. package/lib/view/invoicing/issueCreditNote/issueCreditNoteState.d.ts +3 -2
  89. package/lib/view/invoicing/recordPayment/recordPaymentFormConfig.js +0 -1
  90. package/lib/view/invoicing/recordPayment/recordPaymentPayload.js +5 -14
  91. package/lib/view/invoicing/recordPayment/recordPaymentState.d.ts +4 -2
  92. package/package.json +1 -1
  93. package/lib/esm/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.js +0 -44
  94. package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.d.ts +0 -5
  95. package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.js +0 -48
@@ -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
  });
@@ -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,16 @@
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;
12
14
  discountPercentage: string;
13
15
  discountQuantity: string;
14
16
  discountType: string;
@@ -21,9 +23,14 @@ export interface InvoicingCouponFormLocalData {
21
23
  periodUnit: string;
22
24
  validFrom: string;
23
25
  validTill: string;
26
+ /** Unset until the user enters one, so an explicit 0 stays distinguishable. */
27
+ discountAmount?: Amount;
24
28
  }
25
29
  export interface EditInvoicingCouponDetailViewState extends FetchedState {
26
30
  editDraftById: Record<ID, InvoicingCouponFormLocalData>;
27
31
  newCouponDraft: InvoicingCouponFormLocalData;
28
32
  savedCouponId?: ID;
29
33
  }
34
+ export declare const initialInvoicingCouponFormLocalData: InvoicingCouponFormLocalData;
35
+ /** Seed the form draft from an existing coupon entity (edit mode). */
36
+ export declare const entityToInvoicingCouponFormLocalData: (coupon?: InvoicingCoupon) => InvoicingCouponFormLocalData;
@@ -1,2 +1,47 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.entityToInvoicingCouponFormLocalData = exports.initialInvoicingCouponFormLocalData = void 0;
4
+ exports.initialInvoicingCouponFormLocalData = {
5
+ applyOn: 'invoice_amount',
6
+ couponCode: '',
7
+ couponId: '',
8
+ discountPercentage: '',
9
+ discountQuantity: '',
10
+ discountType: 'percentage',
11
+ durationType: 'one_time',
12
+ invoiceName: '',
13
+ invoiceNotes: '',
14
+ maxRedemptions: '',
15
+ name: '',
16
+ period: '',
17
+ periodUnit: 'month',
18
+ validFrom: '',
19
+ validTill: '',
20
+ };
21
+ /** Seed the form draft from an existing coupon entity (edit mode). */
22
+ const entityToInvoicingCouponFormLocalData = (coupon) => {
23
+ if (coupon == null) {
24
+ return { ...exports.initialInvoicingCouponFormLocalData };
25
+ }
26
+ return {
27
+ applyOn: coupon.applyOn ?? 'invoice_amount',
28
+ couponCode: coupon.couponCode ?? '',
29
+ couponId: coupon.id ?? '',
30
+ discountAmount: coupon.discountAmount,
31
+ discountPercentage: coupon.discountPercentage != null
32
+ ? String(coupon.discountPercentage)
33
+ : '',
34
+ discountQuantity: coupon.discountQuantity != null ? String(coupon.discountQuantity) : '',
35
+ discountType: coupon.discountType ?? 'percentage',
36
+ durationType: coupon.durationType ?? 'one_time',
37
+ invoiceName: coupon.invoiceName ?? '',
38
+ invoiceNotes: coupon.invoiceNotes ?? '',
39
+ maxRedemptions: coupon.maxRedemptions != null ? String(coupon.maxRedemptions) : '',
40
+ name: coupon.name ?? '',
41
+ period: coupon.period != null ? String(coupon.period) : '',
42
+ periodUnit: coupon.periodUnit ?? 'month',
43
+ validFrom: coupon.validFrom != null ? coupon.validFrom.format('YYYY-MM-DD') : '',
44
+ validTill: coupon.validTill != null ? coupon.validTill.format('YYYY-MM-DD') : '',
45
+ };
46
+ };
47
+ 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,9 +37,7 @@ 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 }
43
- : {}),
40
+ ...(setupFee != null ? { setup_fee: setupFee } : {}),
44
41
  ...(poNumber !== '' ? { po_number: poNumber } : {}),
45
42
  ...(trialEnd !== '' ? { trial_end: trialEnd } : {}),
46
43
  ...(localData.couponId !== '' ? { coupon_ids: [localData.couponId] } : {}),
@@ -1,3 +1,4 @@
1
+ import { Amount } from '../../../commonStateTypes/amount';
1
2
  import { FetchedState, ID } from '../../../commonStateTypes/common';
2
3
  /**
3
4
  * Draft form state for the create/edit subscription form. Held in CES so the
@@ -17,8 +18,9 @@ export interface InvoicingSubscriptionFormLocalData {
17
18
  planQuantity: number;
18
19
  poNumber: string;
19
20
  preferredCurrencyCode: string;
20
- setupFee: string;
21
21
  trialEnd: string;
22
+ /** Unset until the user enters one, so an explicit 0 stays distinguishable. */
23
+ setupFee?: Amount;
22
24
  }
23
25
  export interface EditInvoicingSubscriptionDetailViewState extends FetchedState {
24
26
  editDraftById: Record<ID, InvoicingSubscriptionFormLocalData>;
@@ -49,7 +49,6 @@ exports.initialInvoicingSubscriptionFormLocalData = {
49
49
  planQuantity: 1,
50
50
  poNumber: '',
51
51
  preferredCurrencyCode: 'USD',
52
- setupFee: '',
53
52
  trialEnd: '',
54
53
  };
55
54
  /** Seed the form draft from an existing subscription entity (edit mode). */
@@ -71,7 +70,7 @@ const entityToInvoicingSubscriptionFormLocalData = (subscription) => {
71
70
  planQuantity: planItem?.quantity ?? 1,
72
71
  poNumber: subscription.poNumber ?? '',
73
72
  preferredCurrencyCode: subscription.currencyCode ?? 'USD',
74
- setupFee: '',
73
+ setupFee: subscription.setupFee,
75
74
  trialEnd: subscription.trialEnd != null
76
75
  ? subscription.trialEnd.format('YYYY-MM-DD')
77
76
  : '',
@@ -1,4 +1,4 @@
1
- import { AuditLogEntityRouteOptionWire, AuditLogListSortFieldOptionWire, AuditLogSourceLabelOptionWire, InvoicingCatalogLifecycleActionOptionWire, InvoicingDunningActionOption, InvoicingNamedOptionWire, InvoicingSubscriptionEditFieldOptionWire, InvoicingSubscriptionLifecycleActionOptionWire } from '../../../entity/invoicing/invoicingCommonPayload';
1
+ import { AuditLogEntityRouteOptionWire, AuditLogListSortFieldOptionWire, AuditLogSourceLabelOptionWire, InvoicingCatalogLifecycleActionOptionWire, InvoicingDunningActionOption, InvoicingNamedOptionWire, InvoicingQboAccountMappingKindOptionWire, InvoicingSubscriptionEditFieldOptionWire, InvoicingSubscriptionLifecycleActionOptionWire } from '../../../entity/invoicing/invoicingCommonPayload';
2
2
  import { ZeniAPIResponse } from '../../../responsePayload';
3
3
  /**
4
4
  * Wire payload of the invoicing config API (GET/PUT `/1.0/config`). Follows
@@ -27,6 +27,9 @@ export interface InvoicingConfigPayload {
27
27
  invoicing_tos_acceptance_user_agent?: string | null;
28
28
  invoicing_tos_acceptance_user_id?: string | null;
29
29
  is_invoicing_settings_seeded?: boolean;
30
+ qbo_account_mapping_kind_options?: InvoicingQboAccountMappingKindOptionWire[];
31
+ qbo_customer_matching_options?: InvoicingNamedOptionWire[];
32
+ qbo_sync_status_options?: InvoicingNamedOptionWire[];
30
33
  updated_at?: string | null;
31
34
  }
32
35
  export type InvoicingConfigResponse = ZeniAPIResponse<InvoicingConfigPayload>;
@@ -2,7 +2,7 @@ import { ZeniAPIStatus } from '../../../responsePayload';
2
2
  import { InvoicingConfigPayload } from './invoicingConfigViewPayload';
3
3
  import { InvoicingConfigViewState } from './invoicingConfigViewState';
4
4
  export declare const initialState: InvoicingConfigViewState;
5
- export declare function mapInvoicingConfigPayloadToState(payload: InvoicingConfigPayload): Pick<InvoicingConfigViewState, 'auditLogEntityRouteOptions' | 'auditLogListSortFieldOptions' | 'auditLogSourceLabels' | 'dunningScheduleActionOptions' | 'subscriptionLifecycleActionOptions' | 'subscriptionCommercialEditAllowedFromStatuses' | 'subscriptionMetadataEditAllowedFromStatuses' | 'subscriptionEditFieldOptions' | 'subscriptionCancelTimingOptions' | 'subscriptionChangeOptionOptions' | 'catalogItemLifecycleActionOptions' | 'catalogProductLifecycleActionOptions' | 'discountLifecycleActionOptions' | 'isInvoicingEnabled' | 'isInvoicingTosAccepted' | 'invoicingTosAcceptanceIp' | 'invoicingTosAcceptanceTime' | 'invoicingTosAcceptanceUserAgent' | 'invoicingTosAcceptanceUserId' | 'isInvoicingSettingsSeeded'>;
5
+ export declare function mapInvoicingConfigPayloadToState(payload: InvoicingConfigPayload): Pick<InvoicingConfigViewState, 'auditLogEntityRouteOptions' | 'auditLogListSortFieldOptions' | 'auditLogSourceLabels' | 'dunningScheduleActionOptions' | 'subscriptionLifecycleActionOptions' | 'subscriptionCommercialEditAllowedFromStatuses' | 'subscriptionMetadataEditAllowedFromStatuses' | 'subscriptionEditFieldOptions' | 'subscriptionCancelTimingOptions' | 'subscriptionChangeOptionOptions' | 'catalogItemLifecycleActionOptions' | 'catalogProductLifecycleActionOptions' | 'discountLifecycleActionOptions' | 'qboAccountMappingKindOptions' | 'qboCustomerMatchingOptions' | 'qboSyncStatusOptions' | 'isInvoicingEnabled' | 'isInvoicingTosAccepted' | 'invoicingTosAcceptanceIp' | 'invoicingTosAcceptanceTime' | 'invoicingTosAcceptanceUserAgent' | 'invoicingTosAcceptanceUserId' | 'isInvoicingSettingsSeeded'>;
6
6
  export declare const fetchInvoicingConfig: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload?: {
7
7
  cacheOverride?: boolean;
8
8
  } | undefined], {
@@ -23,6 +23,9 @@ exports.initialState = {
23
23
  catalogItemLifecycleActionOptions: [],
24
24
  catalogProductLifecycleActionOptions: [],
25
25
  discountLifecycleActionOptions: [],
26
+ qboAccountMappingKindOptions: [],
27
+ qboCustomerMatchingOptions: [],
28
+ qboSyncStatusOptions: [],
26
29
  isInvoicingEnabled: undefined,
27
30
  isInvoicingTosAccepted: undefined,
28
31
  invoicingTosAcceptanceIp: undefined,
@@ -58,6 +61,9 @@ function mapInvoicingConfigPayloadToState(payload) {
58
61
  catalogItemLifecycleActionOptions: (payload.catalog_item_lifecycle_action_options ?? []).map((option) => (0, invoicingCommonPayload_1.toInvoicingCatalogItemLifecycleActionOption)(option)),
59
62
  catalogProductLifecycleActionOptions: (payload.catalog_product_lifecycle_action_options ?? []).map((option) => (0, invoicingCommonPayload_1.toInvoicingCatalogProductLifecycleActionOption)(option)),
60
63
  discountLifecycleActionOptions: (payload.discount_lifecycle_action_options ?? []).map((option) => (0, invoicingCommonPayload_1.toInvoicingDiscountLifecycleActionOption)(option)),
64
+ qboAccountMappingKindOptions: (payload.qbo_account_mapping_kind_options ?? []).map(invoicingCommonPayload_1.toInvoicingQboAccountMappingKindOption),
65
+ qboCustomerMatchingOptions: (payload.qbo_customer_matching_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
66
+ qboSyncStatusOptions: (payload.qbo_sync_status_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
61
67
  isInvoicingEnabled: payload.is_invoicing_enabled,
62
68
  isInvoicingTosAccepted: payload.is_invoicing_tos_accepted,
63
69
  invoicingTosAcceptanceIp: payload.invoicing_tos_acceptance_ip ?? undefined,
@@ -1,6 +1,6 @@
1
1
  import { FetchState, FetchStateAndError } from '../../../commonStateTypes/common';
2
2
  import { InvoicingDunningActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
3
- import type { AuditLogEntityRouteOption, AuditLogListSortFieldOption, AuditLogSourceLabelOption, InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingDiscountLifecycleActionOption, InvoicingNamedOption, InvoicingSubscriptionEditFieldOption, InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
3
+ import type { AuditLogEntityRouteOption, AuditLogListSortFieldOption, AuditLogSourceLabelOption, InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingDiscountLifecycleActionOption, InvoicingNamedOption, InvoicingQboAccountMappingKindOption, InvoicingSubscriptionEditFieldOption, InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
4
4
  import { RootState } from '../../../reducer';
5
5
  import { ZeniAPIStatus } from '../../../responsePayload';
6
6
  import { InvoicingOnboardingStatus } from './invoicingConfigViewPayload';
@@ -15,6 +15,9 @@ export interface InvoicingConfigView {
15
15
  dunningScheduleActionOptions: InvoicingDunningActionOption[];
16
16
  enableState: FetchStateAndError;
17
17
  fetchState: FetchState;
18
+ qboAccountMappingKindOptions: InvoicingQboAccountMappingKindOption[];
19
+ qboCustomerMatchingOptions: InvoicingNamedOption[];
20
+ qboSyncStatusOptions: InvoicingNamedOption[];
18
21
  subscriptionCancelTimingOptions: InvoicingNamedOption[];
19
22
  subscriptionChangeOptionOptions: InvoicingNamedOption[];
20
23
  subscriptionCommercialEditAllowedFromStatuses: string[];
@@ -26,6 +26,9 @@ const getInvoicingConfigView = (state) => {
26
26
  catalogItemLifecycleActionOptions: configState.catalogItemLifecycleActionOptions,
27
27
  catalogProductLifecycleActionOptions: configState.catalogProductLifecycleActionOptions,
28
28
  discountLifecycleActionOptions: configState.discountLifecycleActionOptions,
29
+ qboAccountMappingKindOptions: configState.qboAccountMappingKindOptions,
30
+ qboCustomerMatchingOptions: configState.qboCustomerMatchingOptions,
31
+ qboSyncStatusOptions: configState.qboSyncStatusOptions,
29
32
  error: configState.error,
30
33
  fetchState: configState.fetchState,
31
34
  isInvoicingEnabled: configState.isInvoicingEnabled,
@@ -1,5 +1,5 @@
1
1
  import { FetchStateAndError, FetchedState } from '../../../commonStateTypes/common';
2
- import type { AuditLogEntityRouteOption, AuditLogListSortFieldOption, AuditLogSourceLabelOption, InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingDiscountLifecycleActionOption, InvoicingNamedOption, InvoicingSubscriptionEditFieldOption, InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
2
+ import type { AuditLogEntityRouteOption, AuditLogListSortFieldOption, AuditLogSourceLabelOption, InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingDiscountLifecycleActionOption, InvoicingNamedOption, InvoicingQboAccountMappingKindOption, InvoicingSubscriptionEditFieldOption, InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
3
3
  import { InvoicingDunningActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
4
4
  export interface InvoicingConfigViewState extends FetchedState {
5
5
  acceptTermsFetchState: FetchStateAndError;
@@ -11,6 +11,9 @@ export interface InvoicingConfigViewState extends FetchedState {
11
11
  discountLifecycleActionOptions: InvoicingDiscountLifecycleActionOption[];
12
12
  dunningScheduleActionOptions: InvoicingDunningActionOption[];
13
13
  enableFetchState: FetchStateAndError;
14
+ qboAccountMappingKindOptions: InvoicingQboAccountMappingKindOption[];
15
+ qboCustomerMatchingOptions: InvoicingNamedOption[];
16
+ qboSyncStatusOptions: InvoicingNamedOption[];
14
17
  subscriptionCancelTimingOptions: InvoicingNamedOption[];
15
18
  subscriptionChangeOptionOptions: InvoicingNamedOption[];
16
19
  subscriptionCommercialEditAllowedFromStatuses: string[];
@@ -0,0 +1,6 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { RootState } from '../../../../reducer';
4
+ import { ZeniAPI } from '../../../../zeniAPI';
5
+ import { InvoicingQboViewActionType } from './invoicingQboViewActionType';
6
+ export declare const fetchInvoicingQboAccountsEpic: (actions$: ActionsObservable<InvoicingQboViewActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<InvoicingQboViewActionType>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchInvoicingQboAccountsEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../../responsePayload");
7
+ const invoicingQboViewPayload_1 = require("../invoicingQboViewPayload");
8
+ const invoicingQboViewReducer_1 = require("../invoicingQboViewReducer");
9
+ const fetchInvoicingQboAccountsEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(invoicingQboViewReducer_1.fetchInvoicingQboAccounts.match), (0, operators_1.mergeMap)((action) => {
10
+ const { accountTypes } = action.payload;
11
+ const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/qbo/accounts?account_types=${encodeURIComponent(accountTypes)}`;
12
+ return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.map)((response) => {
13
+ if ((0, responsePayload_1.isSuccessResponse)(response)) {
14
+ return (0, invoicingQboViewReducer_1.updateInvoicingQboAccounts)({
15
+ accountTypes,
16
+ accounts: (0, invoicingQboViewPayload_1.mapInvoicingQboAccountOptions)(response.data?.accounts ?? []),
17
+ });
18
+ }
19
+ return (0, invoicingQboViewReducer_1.updateInvoicingQboAccountsFailure)({
20
+ accountTypes,
21
+ status: response.status,
22
+ });
23
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, invoicingQboViewReducer_1.updateInvoicingQboAccountsFailure)({
24
+ accountTypes,
25
+ status: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch QBO accounts REST API call errored out ' +
26
+ JSON.stringify(error)),
27
+ }))));
28
+ }));
29
+ exports.fetchInvoicingQboAccountsEpic = fetchInvoicingQboAccountsEpic;
@@ -0,0 +1,6 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { RootState } from '../../../../reducer';
4
+ import { ZeniAPI } from '../../../../zeniAPI';
5
+ import { InvoicingQboViewActionType } from './invoicingQboViewActionType';
6
+ export declare const fetchInvoicingQboClassesEpic: (actions$: ActionsObservable<InvoicingQboViewActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<InvoicingQboViewActionType>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchInvoicingQboClassesEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../../responsePayload");
7
+ const invoicingQboViewPayload_1 = require("../invoicingQboViewPayload");
8
+ const invoicingQboViewReducer_1 = require("../invoicingQboViewReducer");
9
+ const fetchInvoicingQboClassesEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(invoicingQboViewReducer_1.fetchInvoicingQboClasses.match), (0, operators_1.switchMap)(() => {
10
+ const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/qbo/classes`;
11
+ return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.map)((response) => {
12
+ if ((0, responsePayload_1.isSuccessResponse)(response)) {
13
+ return (0, invoicingQboViewReducer_1.updateInvoicingQboClasses)((0, invoicingQboViewPayload_1.mapInvoicingQboAccountOptions)(response.data?.accounts ?? []));
14
+ }
15
+ return (0, invoicingQboViewReducer_1.updateInvoicingQboClassesFailure)(response.status);
16
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, invoicingQboViewReducer_1.updateInvoicingQboClassesFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch QBO classes REST API call errored out ' +
17
+ JSON.stringify(error))))));
18
+ }));
19
+ exports.fetchInvoicingQboClassesEpic = fetchInvoicingQboClassesEpic;
@@ -0,0 +1,6 @@
1
+ import { ActionsObservable, StateObservable } from 'redux-observable';
2
+ import { Observable } from 'rxjs';
3
+ import { RootState } from '../../../../reducer';
4
+ import { ZeniAPI } from '../../../../zeniAPI';
5
+ import { InvoicingQboViewActionType } from './invoicingQboViewActionType';
6
+ export declare const fetchInvoicingQboConnectionEpic: (actions$: ActionsObservable<InvoicingQboViewActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<InvoicingQboViewActionType>;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchInvoicingQboConnectionEpic = void 0;
4
+ const rxjs_1 = require("rxjs");
5
+ const operators_1 = require("rxjs/operators");
6
+ const responsePayload_1 = require("../../../../responsePayload");
7
+ const invoicingQboViewPayload_1 = require("../invoicingQboViewPayload");
8
+ const invoicingQboViewReducer_1 = require("../invoicingQboViewReducer");
9
+ const fetchInvoicingQboConnectionEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(invoicingQboViewReducer_1.fetchInvoicingQboConnection.match), (0, operators_1.switchMap)(() => {
10
+ const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/qbo/connection`;
11
+ return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.map)((response) => {
12
+ if ((0, responsePayload_1.isSuccessResponse)(response)) {
13
+ return (0, invoicingQboViewReducer_1.updateInvoicingQboConnection)((0, invoicingQboViewPayload_1.mapInvoicingQboConnection)(response.data ?? { connected: false }));
14
+ }
15
+ return (0, invoicingQboViewReducer_1.updateInvoicingQboConnectionFailure)(response.status);
16
+ }), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, invoicingQboViewReducer_1.updateInvoicingQboConnectionFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch QBO connection REST API call errored out ' +
17
+ JSON.stringify(error))))));
18
+ }));
19
+ exports.fetchInvoicingQboConnectionEpic = fetchInvoicingQboConnectionEpic;