@zeniai/client-epic-state 5.1.96-betaAK0 → 5.1.96
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.
- package/lib/entity/invoicing/invoicingCommonPayload.d.ts +0 -9
- package/lib/entity/invoicing/invoicingCommonPayload.js +0 -7
- package/lib/esm/entity/invoicing/invoicingCommonPayload.js +0 -6
- package/lib/esm/index.js +2 -2
- package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector.js +0 -2
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +4 -16
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +1 -34
- package/lib/esm/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.js +0 -6
- package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +1 -5
- package/lib/index.d.ts +3 -3
- package/lib/index.js +7 -10
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector.d.ts +0 -8
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewSelector.js +0 -2
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.d.ts +0 -4
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +3 -15
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewState.d.ts +0 -17
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.d.ts +0 -7
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +2 -37
- package/lib/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.d.ts +1 -13
- package/lib/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.js +0 -6
- package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewPayload.d.ts +1 -2
- package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.d.ts +1 -1
- package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +0 -4
- package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewState.d.ts +1 -7
- package/package.json +1 -1
- package/lib/tsconfig.typecheck.tsbuildinfo +0 -1
package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.entityToInvoicingSubscriptionFormLocalData = exports.initialInvoicingSubscriptionFormLocalData = exports.
|
|
3
|
+
exports.entityToInvoicingSubscriptionFormLocalData = exports.initialInvoicingSubscriptionFormLocalData = exports.periodToBillingFrequency = exports.billingFrequencyToPeriod = exports.INVOICING_SUBSCRIPTION_BILLING_FREQUENCY_VALUES = exports.INVOICING_SUBSCRIPTION_SHIPPING_ADDRESS_TYPE = void 0;
|
|
4
4
|
/** `AddressType` key used when the subscription form opens the shared Address screen. */
|
|
5
5
|
exports.INVOICING_SUBSCRIPTION_SHIPPING_ADDRESS_TYPE = 'invoicing_subscription_shipping_address';
|
|
6
6
|
/**
|
|
@@ -38,44 +38,17 @@ const subscriptionItemPriceCodes = (subscription, itemType) => subscription?.sub
|
|
|
38
38
|
?.filter((item) => item.itemType === itemType)
|
|
39
39
|
.map((item) => item.itemPriceCode)
|
|
40
40
|
.filter((code) => code != null && code !== '') ?? [];
|
|
41
|
-
const subscriptionItemQuantities = (subscription, itemType) => {
|
|
42
|
-
const quantities = {};
|
|
43
|
-
subscription?.subscriptionItems
|
|
44
|
-
?.filter((item) => item.itemType === itemType)
|
|
45
|
-
.forEach((item) => {
|
|
46
|
-
if (item.itemPriceCode != null && item.itemPriceCode !== '') {
|
|
47
|
-
quantities[item.itemPriceCode] = (0, exports.toInvoicingSubscriptionQuantity)(item.quantity);
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
return quantities;
|
|
51
|
-
};
|
|
52
|
-
/** Today as `YYYY-MM-DD`, the default subscription start date. */
|
|
53
|
-
const invoicingSubscriptionTodayIso = () => new Date().toISOString().slice(0, 10);
|
|
54
|
-
exports.invoicingSubscriptionTodayIso = invoicingSubscriptionTodayIso;
|
|
55
|
-
/**
|
|
56
|
-
* Clamp a subscription-item quantity to the minimum the API accepts. Shared by
|
|
57
|
-
* the plan, add-on and charge items so none of them can bill a 0 or a fraction.
|
|
58
|
-
*/
|
|
59
|
-
const toInvoicingSubscriptionQuantity = (quantity) => {
|
|
60
|
-
const whole = Math.floor(Number(quantity));
|
|
61
|
-
return Number.isFinite(whole) && whole > 0 ? whole : 1;
|
|
62
|
-
};
|
|
63
|
-
exports.toInvoicingSubscriptionQuantity = toInvoicingSubscriptionQuantity;
|
|
64
41
|
exports.initialInvoicingSubscriptionFormLocalData = {
|
|
65
42
|
addonPriceCodes: [],
|
|
66
|
-
addonQuantities: {},
|
|
67
43
|
autoCollection: true,
|
|
68
44
|
billingFrequency: 'monthly',
|
|
69
45
|
chargePriceCodes: [],
|
|
70
|
-
chargeQuantities: {},
|
|
71
46
|
couponId: '',
|
|
72
47
|
customerId: '',
|
|
73
48
|
planPriceCode: '',
|
|
74
49
|
planQuantity: 1,
|
|
75
50
|
poNumber: '',
|
|
76
51
|
preferredCurrencyCode: 'USD',
|
|
77
|
-
remainingBillingCycles: '',
|
|
78
|
-
startedAt: '',
|
|
79
52
|
trialEnd: '',
|
|
80
53
|
};
|
|
81
54
|
/** Seed the form draft from an existing subscription entity (edit mode). */
|
|
@@ -86,26 +59,18 @@ const entityToInvoicingSubscriptionFormLocalData = (subscription) => {
|
|
|
86
59
|
const planItem = subscription.subscriptionItems?.find((item) => item.itemType === 'plan');
|
|
87
60
|
return {
|
|
88
61
|
addonPriceCodes: subscriptionItemPriceCodes(subscription, 'addon'),
|
|
89
|
-
addonQuantities: subscriptionItemQuantities(subscription, 'addon'),
|
|
90
62
|
autoCollection: (subscription.autoCollection ?? 'on') === 'on',
|
|
91
63
|
billingFrequency: (0, exports.periodToBillingFrequency)(subscription.billingPeriod, subscription.billingPeriodUnit),
|
|
92
64
|
chargePriceCodes: subscriptionItemPriceCodes(subscription, 'charge'),
|
|
93
|
-
chargeQuantities: subscriptionItemQuantities(subscription, 'charge'),
|
|
94
65
|
couponId: subscription.coupons?.[0]?.couponCode ??
|
|
95
66
|
subscription.coupons?.[0]?.couponID ??
|
|
96
67
|
'',
|
|
97
68
|
customerId: subscription.customerID ?? '',
|
|
98
69
|
planPriceCode: subscriptionItemPriceCodes(subscription, 'plan')[0] ?? '',
|
|
99
|
-
planQuantity:
|
|
70
|
+
planQuantity: planItem?.quantity ?? 1,
|
|
100
71
|
poNumber: subscription.poNumber ?? '',
|
|
101
72
|
preferredCurrencyCode: subscription.currencyCode ?? 'USD',
|
|
102
|
-
remainingBillingCycles: subscription.remainingBillingCycles != null
|
|
103
|
-
? String(subscription.remainingBillingCycles)
|
|
104
|
-
: '',
|
|
105
73
|
setupFee: subscription.setupFee,
|
|
106
|
-
startedAt: subscription.startedAt != null
|
|
107
|
-
? subscription.startedAt.format('YYYY-MM-DD')
|
|
108
|
-
: '',
|
|
109
74
|
trialEnd: subscription.trialEnd != null
|
|
110
75
|
? subscription.trialEnd.format('YYYY-MM-DD')
|
|
111
76
|
: '',
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ID } from '../../../commonStateTypes/common';
|
|
2
2
|
import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
|
|
3
|
-
import { InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingNamedOptionsByKey } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
4
3
|
import { InvoicingPlan } from '../../../entity/invoicing/plan/planState';
|
|
5
4
|
import { RootState } from '../../../reducer';
|
|
6
5
|
import { InvoicingCatalogItemKind } from './invoicingCatalogItemDetailViewState';
|
|
@@ -8,19 +7,8 @@ import { InvoicingCatalogItemKind } from './invoicingCatalogItemDetailViewState'
|
|
|
8
7
|
* Read-only view for the catalog item (plan or product) detail page. One screen
|
|
9
8
|
* serves both kinds, so the bundled view carries the resolved `plan` or
|
|
10
9
|
* `product` (whichever the `kind` denotes) + the shared fetch state.
|
|
11
|
-
*
|
|
12
|
-
* The lifecycle/tier option sets and `configFetchState` are folded in from the
|
|
13
|
-
* config slice rather than left for the screen to select itself, so the page
|
|
14
|
-
* wires one selector and CES stays the only place that knows which slice each
|
|
15
|
-
* option set lives in. `configFetchState` is named apart from the view's own
|
|
16
|
-
* `fetchState` because they track different requests — the screen gates a config
|
|
17
|
-
* refetch on the former while rendering off the latter.
|
|
18
10
|
*/
|
|
19
11
|
export interface InvoicingCatalogItemDetailView extends SelectorView {
|
|
20
|
-
catalogItemLifecycleActionOptions: InvoicingCatalogLifecycleActionOption<InvoicingCatalogItemLifecycleAction>[];
|
|
21
|
-
catalogProductLifecycleActionOptions: InvoicingCatalogLifecycleActionOption<InvoicingCatalogProductLifecycleAction>[];
|
|
22
|
-
configFetchState: FetchState;
|
|
23
|
-
catalogTierTypeOptionsByPricingModel?: InvoicingNamedOptionsByKey;
|
|
24
12
|
plan?: InvoicingPlan;
|
|
25
13
|
}
|
|
26
14
|
export declare const getInvoicingCatalogItemDetail: (state: RootState, _kind: InvoicingCatalogItemKind, id: ID) => InvoicingCatalogItemDetailView;
|
package/lib/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.js
CHANGED
|
@@ -2,15 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getInvoicingCatalogItemDetail = void 0;
|
|
4
4
|
const planSelector_1 = require("../../../entity/invoicing/plan/planSelector");
|
|
5
|
-
const invoicingConfigViewSelector_1 = require("../invoicingConfigView/invoicingConfigViewSelector");
|
|
6
5
|
const getInvoicingCatalogItemDetail = (state, _kind, id) => {
|
|
7
6
|
const { error, fetchState } = state.invoicingCatalogItemDetailViewState;
|
|
8
|
-
const { catalogItemLifecycleActionOptions, catalogProductLifecycleActionOptions, catalogTierTypeOptionsByPricingModel, fetchState: configFetchState, } = (0, invoicingConfigViewSelector_1.getInvoicingConfigView)(state);
|
|
9
7
|
return {
|
|
10
|
-
catalogItemLifecycleActionOptions,
|
|
11
|
-
catalogProductLifecycleActionOptions,
|
|
12
|
-
catalogTierTypeOptionsByPricingModel,
|
|
13
|
-
configFetchState,
|
|
14
8
|
plan: (0, planSelector_1.getInvoicingPlanById)(state.invoicingPlanState, id),
|
|
15
9
|
fetchState,
|
|
16
10
|
error,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AuditLogEntityRouteOptionWire, AuditLogListSortFieldOptionWire, AuditLogSourceLabelOptionWire, InvoicingCatalogLifecycleActionOptionWire, InvoicingDunningActionOption, InvoicingNamedOptionWire,
|
|
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
|
|
@@ -23,7 +23,6 @@ export interface InvoicingConfigPayload {
|
|
|
23
23
|
subscription_metadata_edit_allowed_from_statuses: string[];
|
|
24
24
|
auto_collection_options?: InvoicingNamedOptionWire[];
|
|
25
25
|
billing_period_unit_options?: InvoicingNamedOptionWire[];
|
|
26
|
-
catalog_tier_type_options_by_pricing_model?: InvoicingNamedOptionsByKeyWire;
|
|
27
26
|
catalog_trial_end_action_options?: InvoicingNamedOptionWire[];
|
|
28
27
|
catalog_trial_unit_options?: InvoicingNamedOptionWire[];
|
|
29
28
|
created_at?: string | null;
|
|
@@ -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' | '
|
|
5
|
+
export declare function mapInvoicingConfigPayloadToState(payload: InvoicingConfigPayload): Pick<InvoicingConfigViewState, 'auditLogEntityRouteOptions' | 'auditLogListSortFieldOptions' | 'auditLogSourceLabels' | 'autoCollectionOptions' | 'billingPeriodUnitOptions' | 'catalogTrialEndActionOptions' | 'catalogTrialUnitOptions' | 'customerTypeOptions' | 'dateFormatOptions' | 'discountApplyOnOptions' | 'discountDurationTypeOptions' | 'discountTypeOptions' | 'manualPaymentMethodOptions' | 'netTermDayOptions' | 'paymentGatewayOptions' | 'taxabilityOptions' | '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], {
|
|
@@ -15,7 +15,6 @@ exports.initialState = {
|
|
|
15
15
|
auditLogSourceLabels: [],
|
|
16
16
|
autoCollectionOptions: [],
|
|
17
17
|
billingPeriodUnitOptions: [],
|
|
18
|
-
catalogTierTypeOptionsByPricingModel: undefined,
|
|
19
18
|
catalogTrialEndActionOptions: [],
|
|
20
19
|
catalogTrialUnitOptions: [],
|
|
21
20
|
customerTypeOptions: [],
|
|
@@ -67,9 +66,6 @@ function mapInvoicingConfigPayloadToState(payload) {
|
|
|
67
66
|
})),
|
|
68
67
|
autoCollectionOptions: (payload.auto_collection_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
|
|
69
68
|
billingPeriodUnitOptions: (payload.billing_period_unit_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
|
|
70
|
-
catalogTierTypeOptionsByPricingModel: payload.catalog_tier_type_options_by_pricing_model != null
|
|
71
|
-
? (0, invoicingCommonPayload_1.toInvoicingNamedOptionsByKey)(payload.catalog_tier_type_options_by_pricing_model)
|
|
72
|
-
: undefined,
|
|
73
69
|
catalogTrialEndActionOptions: (payload.catalog_trial_end_action_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
|
|
74
70
|
catalogTrialUnitOptions: (payload.catalog_trial_unit_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
|
|
75
71
|
customerTypeOptions: (payload.customer_type_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FetchStateAndError, FetchedState } from '../../../commonStateTypes/common';
|
|
2
|
-
import type { AuditLogEntityRouteOption, AuditLogListSortFieldOption, AuditLogSourceLabelOption, InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingDiscountLifecycleActionOption, InvoicingNamedOption,
|
|
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;
|
|
@@ -33,12 +33,6 @@ export interface InvoicingConfigViewState extends FetchedState {
|
|
|
33
33
|
subscriptionLifecycleActionOptions: InvoicingSubscriptionLifecycleActionOption[];
|
|
34
34
|
subscriptionMetadataEditAllowedFromStatuses: string[];
|
|
35
35
|
taxabilityOptions: InvoicingNamedOption[];
|
|
36
|
-
/**
|
|
37
|
-
* Allowed tier `Type` options per pricing model. `undefined` means the config
|
|
38
|
-
* has not been loaded yet — consumers disable the tier editor rather than
|
|
39
|
-
* falling back to a hardcoded model-to-type map.
|
|
40
|
-
*/
|
|
41
|
-
catalogTierTypeOptionsByPricingModel?: InvoicingNamedOptionsByKey;
|
|
42
36
|
createdAt?: string;
|
|
43
37
|
invoicingTosAcceptanceIp?: string;
|
|
44
38
|
invoicingTosAcceptanceTime?: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "5.1.96
|
|
3
|
+
"version": "5.1.96",
|
|
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",
|