@zeniai/client-epic-state 5.2.20 → 5.2.22-betaAK0

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 (39) hide show
  1. package/lib/entity/invoicing/creditNote/creditNotePayload.d.ts +0 -1
  2. package/lib/entity/invoicing/creditNote/creditNotePayload.js +0 -1
  3. package/lib/entity/invoicing/creditNote/creditNoteState.d.ts +0 -1
  4. package/lib/entity/invoicing/invoice/invoicePayload.d.ts +0 -1
  5. package/lib/entity/invoicing/invoice/invoicePayload.js +0 -1
  6. package/lib/entity/invoicing/invoice/invoiceState.d.ts +0 -1
  7. package/lib/entity/invoicing/invoicingCommonPayload.d.ts +2 -0
  8. package/lib/entity/invoicing/invoicingCustomer/invoicingCustomerPayload.d.ts +0 -1
  9. package/lib/entity/invoicing/invoicingCustomer/invoicingCustomerPayload.js +0 -1
  10. package/lib/entity/invoicing/invoicingCustomer/invoicingCustomerState.d.ts +0 -1
  11. package/lib/entity/invoicing/invoicingSubscription/invoicingSubscriptionPayload.d.ts +1 -2
  12. package/lib/entity/invoicing/invoicingSubscription/invoicingSubscriptionPayload.js +1 -2
  13. package/lib/entity/invoicing/invoicingSubscription/invoicingSubscriptionState.d.ts +1 -2
  14. package/lib/esm/entity/invoicing/creditNote/creditNotePayload.js +0 -1
  15. package/lib/esm/entity/invoicing/invoice/invoicePayload.js +0 -1
  16. package/lib/esm/entity/invoicing/invoicingCustomer/invoicingCustomerPayload.js +0 -1
  17. package/lib/esm/entity/invoicing/invoicingSubscription/invoicingSubscriptionPayload.js +1 -2
  18. package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +2 -0
  19. package/lib/esm/view/invoicing/invoicingOverview/invoicingOverviewPayload.js +0 -1
  20. package/lib/esm/view/invoicing/invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewSelector.js +2 -1
  21. package/lib/esm/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.js +1 -0
  22. package/lib/esm/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState.js +0 -2
  23. package/lib/index.d.ts +1 -0
  24. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewPayload.d.ts +1 -0
  25. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.d.ts +1 -1
  26. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +2 -0
  27. package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewState.d.ts +1 -0
  28. package/lib/view/invoicing/invoicingOverview/invoicingOverviewPayload.d.ts +0 -1
  29. package/lib/view/invoicing/invoicingOverview/invoicingOverviewPayload.js +0 -1
  30. package/lib/view/invoicing/invoicingOverview/invoicingOverviewState.d.ts +0 -1
  31. package/lib/view/invoicing/invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewSelector.d.ts +3 -1
  32. package/lib/view/invoicing/invoicingSubscriptionDetailView/invoicingSubscriptionDetailViewSelector.js +1 -0
  33. package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.d.ts +2 -0
  34. package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.js +1 -0
  35. package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState.d.ts +2 -2
  36. package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewState.js +0 -2
  37. package/lib/view/invoicing/issueCreditNote/issueCreditNotePayload.d.ts +0 -1
  38. package/lib/view/invoicing/subscriptionAction/subscriptionActionRequestPayload.d.ts +8 -0
  39. package/package.json +71 -38
@@ -8,7 +8,6 @@ export interface InvoicingCreditNoteLineItemPayload {
8
8
  unit_amount: number;
9
9
  entity_type?: string;
10
10
  id?: string;
11
- product_code?: string;
12
11
  }
13
12
  export interface InvoicingCreditNoteAllocationPayload {
14
13
  allocated_amount: number;
@@ -12,7 +12,6 @@ const mapInvoicingCreditNoteLineItemPayloadToState = (payload, currencyCode, cur
12
12
  unitAmount: (0, amount_1.toAmount)(payload.unit_amount, currencyCode, currencySymbol),
13
13
  entityType: payload.entity_type,
14
14
  id: payload.id,
15
- productCode: payload.product_code,
16
15
  });
17
16
  exports.mapInvoicingCreditNoteLineItemPayloadToState = mapInvoicingCreditNoteLineItemPayloadToState;
18
17
  const mapInvoicingCreditNoteAllocationPayloadToState = (payload, currencyCode, currencySymbol) => ({
@@ -10,7 +10,6 @@ export interface InvoicingCreditNoteLineItem {
10
10
  unitAmount: Amount;
11
11
  entityType?: string;
12
12
  id?: ID;
13
- productCode?: string;
14
13
  }
15
14
  export interface InvoicingCreditNoteAllocation {
16
15
  allocatedAmount: Amount;
@@ -15,7 +15,6 @@ export interface InvoicingLineItemPayload {
15
15
  id?: string;
16
16
  is_taxed?: boolean;
17
17
  item_level_discount_amount?: number;
18
- product_code?: string;
19
18
  subscription_id?: string;
20
19
  tax_amount?: number;
21
20
  tax_exempt_reason?: string;
@@ -22,7 +22,6 @@ const mapLineItem = (payload, currencyCode, currencySymbol) => ({
22
22
  itemLevelDiscountAmount: payload.item_level_discount_amount != null
23
23
  ? (0, amount_1.toAmount)(payload.item_level_discount_amount, currencyCode, currencySymbol)
24
24
  : undefined,
25
- productCode: payload.product_code,
26
25
  subscriptionID: payload.subscription_id,
27
26
  taxAmount: payload.tax_amount != null
28
27
  ? (0, amount_1.toAmount)(payload.tax_amount, currencyCode, currencySymbol)
@@ -16,7 +16,6 @@ export interface InvoicingLineItem {
16
16
  id?: ID;
17
17
  isTaxed?: boolean;
18
18
  itemLevelDiscountAmount?: Amount;
19
- productCode?: string;
20
19
  subscriptionID?: ID;
21
20
  taxAmount?: Amount;
22
21
  taxExemptReason?: string;
@@ -164,6 +164,8 @@ export interface InvoicingSettingsPayload {
164
164
  dunning_schedule?: InvoicingDunningScheduleStepPayload[];
165
165
  email?: string;
166
166
  id?: string;
167
+ /** Empty string means hide the footer line; absent means use the default. */
168
+ invoice_footer_text?: string;
167
169
  invoice_prefix?: string;
168
170
  logo_file_id?: string;
169
171
  logo_url?: string;
@@ -51,7 +51,6 @@ export interface InvoicingCustomerPayload {
51
51
  plan_name?: string;
52
52
  preferred_currency_code?: string;
53
53
  preferred_currency_symbol?: string;
54
- product_code?: string;
55
54
  promotional_credits?: number;
56
55
  refundable_credits?: number;
57
56
  status?: string;
@@ -76,7 +76,6 @@ const mapInvoicingCustomerPayloadToState = (payload) => {
76
76
  phone: payload.phone,
77
77
  plan: payload.plan,
78
78
  planName: payload.plan_name,
79
- productCode: payload.product_code,
80
79
  preferredCurrencyCode: payload.preferred_currency_code,
81
80
  promotionalCredits: payload.promotional_credits != null
82
81
  ? (0, amount_1.toAmount)(payload.promotional_credits, currencyCode, currencySymbol)
@@ -57,7 +57,6 @@ export interface InvoicingCustomer {
57
57
  plan?: string;
58
58
  planName?: string;
59
59
  preferredCurrencyCode?: string;
60
- productCode?: string;
61
60
  promotionalCredits?: Amount;
62
61
  refundableCredits?: Amount;
63
62
  status?: string;
@@ -9,7 +9,6 @@ export interface InvoicingSubscriptionItemPayload {
9
9
  item_price_code?: string;
10
10
  item_price_id?: string;
11
11
  item_type?: string;
12
- product_code?: string;
13
12
  quantity?: number;
14
13
  unit_price?: number;
15
14
  }
@@ -40,6 +39,7 @@ export interface InvoicingSubscriptionPayload {
40
39
  billing_period?: number;
41
40
  billing_period_unit?: InvoicingBillingPeriodUnit;
42
41
  cancel_reason?: string;
42
+ cancel_reason_code?: string;
43
43
  cancelled_at?: string;
44
44
  catalog_item_id?: string;
45
45
  contract_term?: InvoicingContractTermPayload;
@@ -60,7 +60,6 @@ export interface InvoicingSubscriptionPayload {
60
60
  plan_id?: string;
61
61
  plan_name?: string;
62
62
  po_number?: string;
63
- product_code?: string;
64
63
  remaining_billing_cycles?: number;
65
64
  resume_date?: string;
66
65
  setup_fee?: number;
@@ -15,7 +15,6 @@ const mapInvoicingSubscriptionItemPayloadToState = (payload, currencyCode, curre
15
15
  itemPriceCode: payload.item_price_code,
16
16
  itemPriceID: payload.item_price_id,
17
17
  itemType: payload.item_type,
18
- productCode: payload.product_code,
19
18
  quantity: payload.quantity,
20
19
  unitPrice: payload.unit_price != null
21
20
  ? (0, amount_1.toAmount)(payload.unit_price, currencyCode, currencySymbol)
@@ -65,6 +64,7 @@ const mapInvoicingSubscriptionPayloadToState = (payload) => {
65
64
  billingPeriod: payload.billing_period,
66
65
  billingPeriodUnit: payload.billing_period_unit,
67
66
  cancelReason: payload.cancel_reason,
67
+ cancelReasonCode: payload.cancel_reason_code,
68
68
  cancelledAt: payload.cancelled_at != null ? (0, zeniDayJS_1.date)(payload.cancelled_at) : undefined,
69
69
  catalogItemID: payload.catalog_item_id,
70
70
  contractTerm: payload.contract_term != null
@@ -95,7 +95,6 @@ const mapInvoicingSubscriptionPayloadToState = (payload) => {
95
95
  : undefined,
96
96
  planID: payload.plan_id,
97
97
  planName: payload.plan_name,
98
- productCode: payload.product_code,
99
98
  poNumber: payload.po_number,
100
99
  remainingBillingCycles: payload.remaining_billing_cycles,
101
100
  resumeDate: payload.resume_date != null ? (0, zeniDayJS_1.date)(payload.resume_date) : undefined,
@@ -10,7 +10,6 @@ export interface InvoicingSubscriptionItem {
10
10
  itemPriceCode?: string;
11
11
  itemPriceID?: ID;
12
12
  itemType?: string;
13
- productCode?: string;
14
13
  quantity?: number;
15
14
  unitPrice?: Amount;
16
15
  }
@@ -42,6 +41,7 @@ export interface InvoicingSubscription {
42
41
  billingPeriodUnit?: InvoicingBillingPeriodUnit;
43
42
  cancelledAt?: ZeniDate;
44
43
  cancelReason?: string;
44
+ cancelReasonCode?: string;
45
45
  catalogItemID?: ID;
46
46
  contractTerm?: InvoicingContractTerm;
47
47
  coupons?: InvoicingSubscriptionCoupon[];
@@ -60,7 +60,6 @@ export interface InvoicingSubscription {
60
60
  planID?: ID;
61
61
  planName?: string;
62
62
  poNumber?: string;
63
- productCode?: string;
64
63
  remainingBillingCycles?: number;
65
64
  resumeDate?: ZeniDate;
66
65
  setupFee?: Amount;
@@ -9,7 +9,6 @@ export const mapInvoicingCreditNoteLineItemPayloadToState = (payload, currencyCo
9
9
  unitAmount: toAmount(payload.unit_amount, currencyCode, currencySymbol),
10
10
  entityType: payload.entity_type,
11
11
  id: payload.id,
12
- productCode: payload.product_code,
13
12
  });
14
13
  export const mapInvoicingCreditNoteAllocationPayloadToState = (payload, currencyCode, currencySymbol) => ({
15
14
  allocatedAmount: toAmount(payload.allocated_amount, currencyCode, currencySymbol),
@@ -19,7 +19,6 @@ const mapLineItem = (payload, currencyCode, currencySymbol) => ({
19
19
  itemLevelDiscountAmount: payload.item_level_discount_amount != null
20
20
  ? toAmount(payload.item_level_discount_amount, currencyCode, currencySymbol)
21
21
  : undefined,
22
- productCode: payload.product_code,
23
22
  subscriptionID: payload.subscription_id,
24
23
  taxAmount: payload.tax_amount != null
25
24
  ? toAmount(payload.tax_amount, currencyCode, currencySymbol)
@@ -72,7 +72,6 @@ export const mapInvoicingCustomerPayloadToState = (payload) => {
72
72
  phone: payload.phone,
73
73
  plan: payload.plan,
74
74
  planName: payload.plan_name,
75
- productCode: payload.product_code,
76
75
  preferredCurrencyCode: payload.preferred_currency_code,
77
76
  promotionalCredits: payload.promotional_credits != null
78
77
  ? toAmount(payload.promotional_credits, currencyCode, currencySymbol)
@@ -12,7 +12,6 @@ export const mapInvoicingSubscriptionItemPayloadToState = (payload, currencyCode
12
12
  itemPriceCode: payload.item_price_code,
13
13
  itemPriceID: payload.item_price_id,
14
14
  itemType: payload.item_type,
15
- productCode: payload.product_code,
16
15
  quantity: payload.quantity,
17
16
  unitPrice: payload.unit_price != null
18
17
  ? toAmount(payload.unit_price, currencyCode, currencySymbol)
@@ -58,6 +57,7 @@ export const mapInvoicingSubscriptionPayloadToState = (payload) => {
58
57
  billingPeriod: payload.billing_period,
59
58
  billingPeriodUnit: payload.billing_period_unit,
60
59
  cancelReason: payload.cancel_reason,
60
+ cancelReasonCode: payload.cancel_reason_code,
61
61
  cancelledAt: payload.cancelled_at != null ? date(payload.cancelled_at) : undefined,
62
62
  catalogItemID: payload.catalog_item_id,
63
63
  contractTerm: payload.contract_term != null
@@ -88,7 +88,6 @@ export const mapInvoicingSubscriptionPayloadToState = (payload) => {
88
88
  : undefined,
89
89
  planID: payload.plan_id,
90
90
  planName: payload.plan_name,
91
- productCode: payload.product_code,
92
91
  poNumber: payload.po_number,
93
92
  remainingBillingCycles: payload.remaining_billing_cycles,
94
93
  resumeDate: payload.resume_date != null ? date(payload.resume_date) : undefined,
@@ -34,6 +34,7 @@ export const initialState = {
34
34
  discountStatusOptions: [],
35
35
  dunningCaseStatusOptions: [],
36
36
  invoiceStatusOptions: [],
37
+ subscriptionCancelReasonCodeOptions: [],
37
38
  subscriptionStatusOptions: [],
38
39
  transactionStatusOptions: [],
39
40
  transactionTypeOptions: [],
@@ -103,6 +104,7 @@ export function mapInvoicingConfigPayloadToState(payload) {
103
104
  discountStatusOptions: (payload.discount_status_options ?? []).map(toInvoicingNamedOption),
104
105
  dunningCaseStatusOptions: (payload.dunning_case_status_options ?? []).map(toInvoicingNamedOption),
105
106
  invoiceStatusOptions: (payload.invoice_status_options ?? []).map(toInvoicingNamedOption),
107
+ subscriptionCancelReasonCodeOptions: (payload.subscription_cancel_reason_code_options ?? []).map(toInvoicingNamedOption),
106
108
  subscriptionStatusOptions: (payload.subscription_status_options ?? []).map(toInvoicingNamedOption),
107
109
  transactionStatusOptions: (payload.transaction_status_options ?? []).map(toInvoicingNamedOption),
108
110
  transactionTypeOptions: (payload.transaction_type_options ?? []).map(toInvoicingNamedOption),
@@ -37,7 +37,6 @@ export const mapInvoicingPlanRevenuePointPayloadToState = (payload) => ({
37
37
  mrr: toAmount(payload.mrr, 'USD', '$'),
38
38
  pct: payload.pct,
39
39
  planID: payload.plan,
40
- productCode: payload.product_code,
41
40
  });
42
41
  export const mapInvoicingDashboardSummaryPayloadToState = (payload) => ({
43
42
  customerMovement: {
@@ -1,11 +1,12 @@
1
1
  import { getInvoicingSubscriptionById as getInvoicingSubscriptionByIdFromState } from '../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionSelector';
2
- import { invoicingFieldHelpForGroup } from '../invoicingConfigView/invoicingConfigViewSelector';
2
+ import { getInvoicingConfigView, invoicingFieldHelpForGroup, } from '../invoicingConfigView/invoicingConfigViewSelector';
3
3
  import { getInvoicingSubscriptionActionState } from '../subscriptionAction/subscriptionActionSelector';
4
4
  export const getInvoicingSubscriptionById = (state, id) => getInvoicingSubscriptionByIdFromState(state.invoicingSubscriptionState, id);
5
5
  export const getInvoicingSubscriptionDetail = (state, invoicingSubscriptionID) => {
6
6
  const { error, fetchState } = state.invoicingSubscriptionDetailViewState;
7
7
  return {
8
8
  fieldHelp: invoicingFieldHelpForGroup(state, 'subscription'),
9
+ cancelReasonCodeOptions: getInvoicingConfigView(state).subscriptionCancelReasonCodeOptions,
9
10
  actionState: getInvoicingSubscriptionActionState(invoicingSubscriptionID)(state),
10
11
  subscription: getInvoicingSubscriptionById(state, invoicingSubscriptionID),
11
12
  fetchState,
@@ -28,6 +28,7 @@ export const getInvoicingSubscriptionListView = createSelector((state) => state.
28
28
  count: listViewState.counts,
29
29
  countsFetchState: listViewState.countsFetchState,
30
30
  subscriptionCommercialEditAllowedFromStatuses: configState.subscriptionCommercialEditAllowedFromStatuses,
31
+ cancelReasonCodeOptions: configState.subscriptionCancelReasonCodeOptions,
31
32
  subscriptionLifecycleActionOptions: configState.subscriptionLifecycleActionOptions,
32
33
  subscriptionMetadataEditAllowedFromStatuses: configState.subscriptionMetadataEditAllowedFromStatuses,
33
34
  statusOptions,
@@ -3,7 +3,6 @@ export const ALL_INVOICING_SUBSCRIPTION_SORT_KEYS = [
3
3
  'subscription',
4
4
  'customer',
5
5
  'plan',
6
- 'product_code',
7
6
  'term_end',
8
7
  'next_billing',
9
8
  'auto_collect',
@@ -15,7 +14,6 @@ export const INVOICING_SUBSCRIPTION_COLUMNS = [
15
14
  { key: 'subscription', sortable: true },
16
15
  { key: 'customer', sortable: false },
17
16
  { key: 'plan', sortable: true },
18
- { key: 'product_code', sortable: true },
19
17
  { key: 'term_end', sortable: true },
20
18
  { key: 'next_billing', sortable: true },
21
19
  { key: 'auto_collect', sortable: true },
package/lib/index.d.ts CHANGED
@@ -1150,6 +1150,7 @@ export { getInvoicingDiscountActionState } from './view/invoicing/discountAction
1150
1150
  export { runInvoicingSubscriptionAction } from './view/invoicing/subscriptionAction/subscriptionActionReducer';
1151
1151
  export type { InvoicingSubscriptionActionState } from './view/invoicing/subscriptionAction/subscriptionActionState';
1152
1152
  export type { RunInvoicingSubscriptionActionPayload } from './view/invoicing/subscriptionAction/subscriptionActionReducer';
1153
+ export type { InvoicingCancelSubscriptionValues } from './view/invoicing/subscriptionAction/subscriptionActionRequestPayload';
1153
1154
  export { getInvoicingSubscriptionActionState } from './view/invoicing/subscriptionAction/subscriptionActionSelector';
1154
1155
  export { runInvoicingDunningAction } from './view/invoicing/dunningAction/dunningActionReducer';
1155
1156
  export type { InvoicingDunningActionState } from './view/invoicing/dunningAction/dunningActionState';
@@ -54,6 +54,7 @@ export interface InvoicingConfigPayload {
54
54
  qbo_account_mapping_kind_options?: InvoicingQboAccountMappingKindOptionWire[];
55
55
  qbo_customer_matching_options?: InvoicingNamedOptionWire[];
56
56
  qbo_sync_status_options?: InvoicingNamedOptionWire[];
57
+ subscription_cancel_reason_code_options?: InvoicingNamedOptionWire[];
57
58
  subscription_status_options?: InvoicingNamedOptionWire[];
58
59
  taxability_options?: InvoicingNamedOptionWire[];
59
60
  transaction_status_options?: InvoicingNamedOptionWire[];
@@ -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' | 'autoCollectionOptions' | 'billingPeriodUnitOptions' | 'catalogTierTypeOptionsByPricingModel' | 'catalogTrialEndActionOptions' | 'catalogTrialUnitOptions' | 'customerTypeOptions' | 'dateFormatOptions' | 'fieldHelp' | 'discountApplyOnOptions' | 'discountDurationTypeOptions' | 'discountTypeOptions' | 'manualPaymentMethodOptions' | 'netTermDayOptions' | 'paymentGatewayOptions' | 'taxabilityOptions' | 'cardStatusOptions' | 'catalogItemStatusOptions' | 'catalogItemTypeOptions' | 'creditNoteReasonCodeOptions' | 'creditNoteStatusOptions' | 'creditNoteTypeOptions' | 'customerStatusOptions' | 'discountStatusOptions' | 'dunningCaseStatusOptions' | 'invoiceStatusOptions' | 'subscriptionStatusOptions' | 'transactionStatusOptions' | 'transactionTypeOptions' | 'createdAt' | 'updatedAt' | 'dunningScheduleActionOptions' | 'subscriptionLifecycleActionOptions' | 'subscriptionCommercialEditAllowedFromStatuses' | 'subscriptionMetadataEditAllowedFromStatuses' | 'subscriptionEditFieldOptions' | 'subscriptionCancelTimingOptions' | 'subscriptionChangeOptionOptions' | 'catalogItemLifecycleActionOptions' | 'catalogProductLifecycleActionOptions' | 'discountLifecycleActionOptions' | 'qboAccountMappingKindOptions' | 'qboCustomerMatchingOptions' | 'qboSyncStatusOptions' | 'isInvoicingEnabled' | 'isInvoicingTosAccepted' | 'invoicingTosAcceptanceIp' | 'invoicingTosAcceptanceTime' | 'invoicingTosAcceptanceUserAgent' | 'invoicingTosAcceptanceUserId' | 'isInvoicingSettingsSeeded'>;
5
+ export declare function mapInvoicingConfigPayloadToState(payload: InvoicingConfigPayload): Pick<InvoicingConfigViewState, 'auditLogEntityRouteOptions' | 'auditLogListSortFieldOptions' | 'auditLogSourceLabels' | 'autoCollectionOptions' | 'billingPeriodUnitOptions' | 'catalogTierTypeOptionsByPricingModel' | 'catalogTrialEndActionOptions' | 'catalogTrialUnitOptions' | 'customerTypeOptions' | 'dateFormatOptions' | 'fieldHelp' | 'discountApplyOnOptions' | 'discountDurationTypeOptions' | 'discountTypeOptions' | 'manualPaymentMethodOptions' | 'netTermDayOptions' | 'paymentGatewayOptions' | 'taxabilityOptions' | 'cardStatusOptions' | 'catalogItemStatusOptions' | 'catalogItemTypeOptions' | 'creditNoteReasonCodeOptions' | 'creditNoteStatusOptions' | 'creditNoteTypeOptions' | 'customerStatusOptions' | 'discountStatusOptions' | 'dunningCaseStatusOptions' | 'invoiceStatusOptions' | 'subscriptionCancelReasonCodeOptions' | 'subscriptionStatusOptions' | 'transactionStatusOptions' | 'transactionTypeOptions' | 'createdAt' | 'updatedAt' | '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], {
@@ -39,6 +39,7 @@ exports.initialState = {
39
39
  discountStatusOptions: [],
40
40
  dunningCaseStatusOptions: [],
41
41
  invoiceStatusOptions: [],
42
+ subscriptionCancelReasonCodeOptions: [],
42
43
  subscriptionStatusOptions: [],
43
44
  transactionStatusOptions: [],
44
45
  transactionTypeOptions: [],
@@ -108,6 +109,7 @@ function mapInvoicingConfigPayloadToState(payload) {
108
109
  discountStatusOptions: (payload.discount_status_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
109
110
  dunningCaseStatusOptions: (payload.dunning_case_status_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
110
111
  invoiceStatusOptions: (payload.invoice_status_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
112
+ subscriptionCancelReasonCodeOptions: (payload.subscription_cancel_reason_code_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
111
113
  subscriptionStatusOptions: (payload.subscription_status_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
112
114
  transactionStatusOptions: (payload.transaction_status_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
113
115
  transactionTypeOptions: (payload.transaction_type_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
@@ -38,6 +38,7 @@ export interface InvoicingConfigViewState extends FetchedState {
38
38
  qboAccountMappingKindOptions: InvoicingQboAccountMappingKindOption[];
39
39
  qboCustomerMatchingOptions: InvoicingNamedOption[];
40
40
  qboSyncStatusOptions: InvoicingNamedOption[];
41
+ subscriptionCancelReasonCodeOptions: InvoicingNamedOption[];
41
42
  subscriptionCancelTimingOptions: InvoicingNamedOption[];
42
43
  subscriptionChangeOptionOptions: InvoicingNamedOption[];
43
44
  subscriptionCommercialEditAllowedFromStatuses: string[];
@@ -35,7 +35,6 @@ export interface InvoicingPlanRevenuePointPayload {
35
35
  mrr: number;
36
36
  pct: number;
37
37
  plan: string;
38
- product_code?: string;
39
38
  }
40
39
  export interface InvoicingDashboardSummaryPayload {
41
40
  customer_movement: {
@@ -44,7 +44,6 @@ const mapInvoicingPlanRevenuePointPayloadToState = (payload) => ({
44
44
  mrr: (0, amount_1.toAmount)(payload.mrr, 'USD', '$'),
45
45
  pct: payload.pct,
46
46
  planID: payload.plan,
47
- productCode: payload.product_code,
48
47
  });
49
48
  exports.mapInvoicingPlanRevenuePointPayloadToState = mapInvoicingPlanRevenuePointPayloadToState;
50
49
  const mapInvoicingDashboardSummaryPayloadToState = (payload) => ({
@@ -39,7 +39,6 @@ export interface InvoicingPlanRevenuePoint {
39
39
  mrr: Amount;
40
40
  pct: number;
41
41
  planID: ID;
42
- productCode?: string;
43
42
  }
44
43
  export interface InvoicingDashboardSummary {
45
44
  customerMovement: {
@@ -1,6 +1,6 @@
1
1
  import { FetchStateAndError, ID } from '../../../commonStateTypes/common';
2
2
  import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
3
- import type { InvoicingFieldHelpByCode } from '../../../entity/invoicing/invoicingCommonPayload';
3
+ import type { InvoicingFieldHelpByCode, InvoicingNamedOption } from '../../../entity/invoicing/invoicingCommonPayload';
4
4
  import { InvoicingSubscription } from '../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionState';
5
5
  import { RootState } from '../../../rootStateTypes';
6
6
  /**
@@ -10,6 +10,8 @@ import { RootState } from '../../../rootStateTypes';
10
10
  */
11
11
  export interface InvoicingSubscriptionDetailView extends SelectorView {
12
12
  actionState: FetchStateAndError;
13
+ /** Cancel reasons from `/1.0/config`, so the dialog hardcodes nothing. */
14
+ cancelReasonCodeOptions: InvoicingNamedOption[];
13
15
  /**
14
16
  * Backend help copy for this screen's field group, keyed by field code.
15
17
  * Folded in here so the screen never reaches for the config view itself.
@@ -10,6 +10,7 @@ const getInvoicingSubscriptionDetail = (state, invoicingSubscriptionID) => {
10
10
  const { error, fetchState } = state.invoicingSubscriptionDetailViewState;
11
11
  return {
12
12
  fieldHelp: (0, invoicingConfigViewSelector_1.invoicingFieldHelpForGroup)(state, 'subscription'),
13
+ cancelReasonCodeOptions: (0, invoicingConfigViewSelector_1.getInvoicingConfigView)(state).subscriptionCancelReasonCodeOptions,
13
14
  actionState: (0, subscriptionActionSelector_1.getInvoicingSubscriptionActionState)(invoicingSubscriptionID)(state),
14
15
  subscription: (0, exports.getInvoicingSubscriptionById)(state, invoicingSubscriptionID),
15
16
  fetchState,
@@ -7,6 +7,8 @@ import { InvoicingListSort } from '../invoicingApiHelper';
7
7
  import { InvoicingSubscriptionColumnConfig, InvoicingSubscriptionFilters, InvoicingSubscriptionTabId } from './invoicingSubscriptionListViewState';
8
8
  export interface InvoicingSubscriptionListView extends SelectorView {
9
9
  activeTab: InvoicingSubscriptionTabId;
10
+ /** Cancel reasons from `/1.0/config`, so the dialog hardcodes nothing. */
11
+ cancelReasonCodeOptions: InvoicingNamedOption[];
10
12
  columns: InvoicingSubscriptionColumnConfig[];
11
13
  count: InvoicingListCounts;
12
14
  countsFetchState: FetchStateAndError;
@@ -31,6 +31,7 @@ exports.getInvoicingSubscriptionListView = (0, toolkit_1.createSelector)((state)
31
31
  count: listViewState.counts,
32
32
  countsFetchState: listViewState.countsFetchState,
33
33
  subscriptionCommercialEditAllowedFromStatuses: configState.subscriptionCommercialEditAllowedFromStatuses,
34
+ cancelReasonCodeOptions: configState.subscriptionCancelReasonCodeOptions,
34
35
  subscriptionLifecycleActionOptions: configState.subscriptionLifecycleActionOptions,
35
36
  subscriptionMetadataEditAllowedFromStatuses: configState.subscriptionMetadataEditAllowedFromStatuses,
36
37
  statusOptions,
@@ -7,8 +7,8 @@ export interface InvoicingSubscriptionFilters {
7
7
  startedFrom?: string;
8
8
  startedTo?: string;
9
9
  }
10
- export declare const ALL_INVOICING_SUBSCRIPTION_SORT_KEYS: readonly ["subscription", "customer", "plan", "product_code", "term_end", "next_billing", "auto_collect", "status", "mrr"];
11
- export declare const toInvoicingSubscriptionSortKey: (v: string) => "status" | "customer" | "subscription" | "plan" | "product_code" | "term_end" | "next_billing" | "auto_collect" | "mrr";
10
+ export declare const ALL_INVOICING_SUBSCRIPTION_SORT_KEYS: readonly ["subscription", "customer", "plan", "term_end", "next_billing", "auto_collect", "status", "mrr"];
11
+ export declare const toInvoicingSubscriptionSortKey: (v: string) => "status" | "customer" | "subscription" | "plan" | "term_end" | "next_billing" | "auto_collect" | "mrr";
12
12
  export type InvoicingSubscriptionSortKey = ReturnType<typeof toInvoicingSubscriptionSortKey>;
13
13
  /**
14
14
  * Structural column descriptor owned by CES so the subscription-list column set,
@@ -6,7 +6,6 @@ exports.ALL_INVOICING_SUBSCRIPTION_SORT_KEYS = [
6
6
  'subscription',
7
7
  'customer',
8
8
  'plan',
9
- 'product_code',
10
9
  'term_end',
11
10
  'next_billing',
12
11
  'auto_collect',
@@ -19,7 +18,6 @@ exports.INVOICING_SUBSCRIPTION_COLUMNS = [
19
18
  { key: 'subscription', sortable: true },
20
19
  { key: 'customer', sortable: false },
21
20
  { key: 'plan', sortable: true },
22
- { key: 'product_code', sortable: true },
23
21
  { key: 'term_end', sortable: true },
24
22
  { key: 'next_billing', sortable: true },
25
23
  { key: 'auto_collect', sortable: true },
@@ -9,7 +9,6 @@ export interface IssueCreditNoteLineItemRequest {
9
9
  amount?: number;
10
10
  entity_type?: string;
11
11
  id?: string;
12
- product_code?: string;
13
12
  }
14
13
  export interface IssueCreditNoteRequest {
15
14
  line_items: IssueCreditNoteLineItemRequest[];
@@ -18,6 +18,14 @@ export type PauseSubscriptionBody = {
18
18
  pause_reason?: string;
19
19
  resume_date?: string;
20
20
  };
21
+ /**
22
+ * What the cancel dialog collects. Form values, not the request body: the screen
23
+ * turns these into {@link CancelSubscriptionBody}.
24
+ */
25
+ export type InvoicingCancelSubscriptionValues = {
26
+ cancelReasonCode: string;
27
+ cancelReason?: string;
28
+ };
21
29
  export type CancelSubscriptionBody = {
22
30
  cancel_reason?: string;
23
31
  cancel_reason_code?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "5.2.20",
3
+ "version": "5.2.22-betaAK0",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/esm/index.js",
@@ -33,6 +33,44 @@
33
33
  "require": "./lib/view/*.js"
34
34
  }
35
35
  },
36
+ "scripts": {
37
+ "clean": "rimraf lib",
38
+ "test:typecheck": "echo 'Typechecking test files...' && NODE_OPTIONS=--max-old-space-size=4096 time tsc -p tsconfig.typecheck.json",
39
+ "test:typecheck-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=30 ./scripts/tsc-modified-files.sh master tsconfig.typecheck.json",
40
+ "test:typecheck-mocks": "echo 'Typechecking mock files...' && NODE_OPTIONS=--max-old-space-size=4096 time tsc -p tsconfig.mocks.json",
41
+ "test:typecheck-mocks-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=30 ./scripts/tsc-modified-files.sh master tsconfig.mocks.json",
42
+ "test": "pnpm lint-modified-files && pnpm test:typecheck-modified-files && pnpm test:typecheck-mocks-modified-files && vitest run --typecheck",
43
+ "test:full": "pnpm test:typecheck-modified-files && pnpm test:typecheck-mocks-modified-files && vitest run --typecheck",
44
+ "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --fix",
45
+ "lint-modified-files": "chmod +x ./scripts/lint-modified-files.sh && ./scripts/lint-modified-files.sh",
46
+ "lint:fix-modified-files": "chmod +x ./scripts/lint-modified-files.sh && LINT_FIX=true ./scripts/lint-modified-files.sh",
47
+ "tsc-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && ./scripts/tsc-modified-files.sh",
48
+ "typecheck": "tsc --noEmit",
49
+ "circular-dependency": "madge --circular --extensions ts ./src",
50
+ "circular-dependency-modified-files": "chmod +x ./scripts/circular-dependency-modified-files.sh && ./scripts/circular-dependency-modified-files.sh",
51
+ "build": "chmod +x ./scripts/run_build.sh && ./scripts/run_build.sh && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
52
+ "only-build": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc && tsc -p tsconfig.esm.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
53
+ "only-build-dev": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc -p tsconfig.dev.json && tsc -p tsconfig.esm.dev.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
54
+ "format": "prettier --write --ignore-unknown \"src/**/*\" && pnpm lint",
55
+ "format-watch": "bash ./scripts/run-format-watch.sh",
56
+ "check-version": "node ./scripts/check_version.js",
57
+ "prepublishOnly": "chmod +x ./scripts/branch_validation.sh && ./scripts/branch_validation.sh && pnpm update-slack-group-topic && pnpm run check-version && pnpm clean && pnpm build",
58
+ "version": "git add -A src",
59
+ "postversion": "git push && git push --tags",
60
+ "check-dependencies": "node ./scripts/check_dependencies.js",
61
+ "clean-overrides": "node ./scripts/clean_overrides.js",
62
+ "create-or-update-release-branch": "chmod +x ./scripts/create_or_update_release_branch.sh && ./scripts/create_or_update_release_branch.sh",
63
+ "bump-versions-master": "chmod +x ./scripts/bump_versions_master.sh && ./scripts/bump_versions_master.sh",
64
+ "bump-versions-beta": "chmod +x ./scripts/bump_versions_beta.sh && ./scripts/bump_versions_beta.sh",
65
+ "bump-update-web-app-cockpit-beta": "chmod +x ./scripts/bump_and_update_web_app_ui_beta.sh && ./scripts/bump_and_update_web_app_ui_beta.sh",
66
+ "send-release-notes": "chmod +x ./scripts/send_release_notes.sh && ./scripts/send_release_notes.sh",
67
+ "update-slack-group-topic": "chmod +x ./scripts/update-slack-group-topic.sh && ./scripts/update-slack-group-topic.sh",
68
+ "build-beta-and-copy": "chmod +x ./scripts/build_and_copy.sh && ./scripts/build_and_copy.sh",
69
+ "pr-approvals-update": "chmod +x ./scripts/pr_approvals.sh && ./scripts/pr_approvals.sh",
70
+ "raise-pr-automation": "chmod +x ./scripts/raise_pr_automation.sh && ./scripts/raise_pr_automation.sh",
71
+ "test:file": "bash ./scripts/test-file.sh",
72
+ "find-unused-code": "knip"
73
+ },
36
74
  "files": [
37
75
  "lib/**/*"
38
76
  ],
@@ -100,41 +138,36 @@
100
138
  "dayjs": "^1.10.7",
101
139
  "url-parse": "^1.5.10"
102
140
  },
103
- "scripts": {
104
- "clean": "rimraf lib",
105
- "test:typecheck": "echo 'Typechecking test files...' && NODE_OPTIONS=--max-old-space-size=4096 time tsc -p tsconfig.typecheck.json",
106
- "test:typecheck-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=30 ./scripts/tsc-modified-files.sh master tsconfig.typecheck.json",
107
- "test:typecheck-mocks": "echo 'Typechecking mock files...' && NODE_OPTIONS=--max-old-space-size=4096 time tsc -p tsconfig.mocks.json",
108
- "test:typecheck-mocks-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && SINCE_DAYS=30 ./scripts/tsc-modified-files.sh master tsconfig.mocks.json",
109
- "test": "pnpm lint-modified-files && pnpm test:typecheck-modified-files && pnpm test:typecheck-mocks-modified-files && vitest run --typecheck",
110
- "test:full": "pnpm test:typecheck-modified-files && pnpm test:typecheck-mocks-modified-files && vitest run --typecheck",
111
- "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 0 --fix",
112
- "lint-modified-files": "chmod +x ./scripts/lint-modified-files.sh && ./scripts/lint-modified-files.sh",
113
- "lint:fix-modified-files": "chmod +x ./scripts/lint-modified-files.sh && LINT_FIX=true ./scripts/lint-modified-files.sh",
114
- "tsc-modified-files": "chmod +x ./scripts/tsc-modified-files.sh && ./scripts/tsc-modified-files.sh",
115
- "typecheck": "tsc --noEmit",
116
- "circular-dependency": "madge --circular --extensions ts ./src",
117
- "circular-dependency-modified-files": "chmod +x ./scripts/circular-dependency-modified-files.sh && ./scripts/circular-dependency-modified-files.sh",
118
- "build": "chmod +x ./scripts/run_build.sh && ./scripts/run_build.sh && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
119
- "only-build": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc && tsc -p tsconfig.esm.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
120
- "only-build-dev": "eslint . --ext .js,.jsx,.ts,.tsx && time tsc -p tsconfig.dev.json && tsc -p tsconfig.esm.dev.json && rimraf \"lib/**/__mocks__\" \"lib/**/__testHelpers__\"",
121
- "format": "prettier --write --ignore-unknown \"src/**/*\" && pnpm lint",
122
- "format-watch": "bash ./scripts/run-format-watch.sh",
123
- "check-version": "node ./scripts/check_version.js",
124
- "version": "git add -A src",
125
- "postversion": "git push && git push --tags",
126
- "check-dependencies": "node ./scripts/check_dependencies.js",
127
- "clean-overrides": "node ./scripts/clean_overrides.js",
128
- "create-or-update-release-branch": "chmod +x ./scripts/create_or_update_release_branch.sh && ./scripts/create_or_update_release_branch.sh",
129
- "bump-versions-master": "chmod +x ./scripts/bump_versions_master.sh && ./scripts/bump_versions_master.sh",
130
- "bump-versions-beta": "chmod +x ./scripts/bump_versions_beta.sh && ./scripts/bump_versions_beta.sh",
131
- "bump-update-web-app-cockpit-beta": "chmod +x ./scripts/bump_and_update_web_app_ui_beta.sh && ./scripts/bump_and_update_web_app_ui_beta.sh",
132
- "send-release-notes": "chmod +x ./scripts/send_release_notes.sh && ./scripts/send_release_notes.sh",
133
- "update-slack-group-topic": "chmod +x ./scripts/update-slack-group-topic.sh && ./scripts/update-slack-group-topic.sh",
134
- "build-beta-and-copy": "chmod +x ./scripts/build_and_copy.sh && ./scripts/build_and_copy.sh",
135
- "pr-approvals-update": "chmod +x ./scripts/pr_approvals.sh && ./scripts/pr_approvals.sh",
136
- "raise-pr-automation": "chmod +x ./scripts/raise_pr_automation.sh && ./scripts/raise_pr_automation.sh",
137
- "test:file": "bash ./scripts/test-file.sh",
138
- "find-unused-code": "knip"
141
+ "pnpm": {
142
+ "overrides": {
143
+ "@babel/core": ">=7.29.6",
144
+ "@babel/helpers": ">=7.26.10",
145
+ "@babel/runtime": ">=7.26.10",
146
+ "@babel/traverse": ">=7.23.2",
147
+ "@eslint/eslintrc>ajv": ">=6.14.0 <7",
148
+ "@eslint/plugin-kit": ">=0.3.4",
149
+ "@modelcontextprotocol/sdk": ">=1.25.2",
150
+ "ajv": ">=8.18.0",
151
+ "body-parser": ">=2.2.1",
152
+ "brace-expansion": ">=5.0.9",
153
+ "cross-spawn": ">=7.0.5",
154
+ "esbuild": ">=0.28.1",
155
+ "eslint>ajv": ">=6.14.0 <7",
156
+ "flatted": ">=3.4.2",
157
+ "glob": ">=11.1.0",
158
+ "hono": ">=4.11.4",
159
+ "immutable": ">=4.3.9 <5",
160
+ "js-yaml": ">=4.3.1 <5",
161
+ "minimatch": ">=10.2.3",
162
+ "nanoid": ">=3.3.17 <4",
163
+ "picomatch": ">=4.0.4",
164
+ "postcss": ">=8.5.18",
165
+ "qs": "^6.14.1",
166
+ "rollup": ">=4.59.0",
167
+ "shell-quote": ">=1.9.0",
168
+ "tough-cookie": "=4.1.3",
169
+ "vite": ">=7.3.5 <8",
170
+ "yaml": ">=2.9.0"
171
+ }
139
172
  }
140
- }
173
+ }