@zeniai/client-epic-state 5.1.97-betaAK0 → 5.1.97-betaAK2
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/esm/index.js +1 -0
- package/lib/esm/view/invoicing/auditView/auditViewSelector.js +4 -0
- package/lib/esm/view/invoicing/couponView/couponViewSelector.js +2 -1
- package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +3 -0
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.js +5 -0
- package/lib/esm/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.js +5 -1
- package/lib/esm/view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector.js +2 -1
- package/lib/esm/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.js +4 -1
- package/lib/esm/view/invoicing/settingsView/settingsViewSelector.js +8 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.js +3 -1
- package/lib/view/invoicing/auditView/auditViewSelector.d.ts +4 -0
- package/lib/view/invoicing/auditView/auditViewSelector.js +4 -0
- package/lib/view/invoicing/couponView/couponViewSelector.d.ts +3 -1
- package/lib/view/invoicing/couponView/couponViewSelector.js +2 -1
- package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.d.ts +5 -2
- package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +3 -0
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.d.ts +5 -0
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewSelector.js +5 -0
- package/lib/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.d.ts +9 -1
- package/lib/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.js +5 -1
- package/lib/view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector.d.ts +3 -1
- package/lib/view/invoicing/invoicingCatalogListView/invoicingCatalogListViewSelector.js +2 -1
- package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.d.ts +5 -1
- package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.js +4 -1
- package/lib/view/invoicing/settingsView/settingsViewSelector.d.ts +12 -1
- package/lib/view/invoicing/settingsView/settingsViewSelector.js +8 -1
- package/package.json +1 -1
package/lib/esm/index.js
CHANGED
|
@@ -852,3 +852,4 @@ export { INVOICING_QBO_CUSTOMER_MATCHING_MODES, getInvoicingQboAccountMappingId,
|
|
|
852
852
|
// ── Invoicing: config ─────────────────────────────────────────────────────────
|
|
853
853
|
export { acceptInvoicingTerms, clearInvoicingConfig, enableInvoicing, fetchInvoicingConfig, resetInvoicingConfigActionStates, updateInvoicingConfig, } from './view/invoicing/invoicingConfigView/invoicingConfigViewReducer';
|
|
854
854
|
export { getInvoicingConfigView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
|
|
855
|
+
export { getInvoicingOnboardingGateView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { getInvoicingConfigView } from '../invoicingConfigView/invoicingConfigViewSelector';
|
|
1
2
|
/**
|
|
2
3
|
* Single bundled view for the invoicing audit log — consumers read only this.
|
|
3
4
|
* Carries the log `items`, pagination (`nextCursor` + derived `hasMore`), the
|
|
@@ -5,7 +6,10 @@
|
|
|
5
6
|
*/
|
|
6
7
|
export const getInvoicingAuditView = (state) => {
|
|
7
8
|
const auditState = state.invoicingAuditViewState;
|
|
9
|
+
const { auditLogEntityRouteOptions, auditLogListSortFieldOptions } = getInvoicingConfigView(state);
|
|
8
10
|
return {
|
|
11
|
+
auditLogEntityRouteOptions,
|
|
12
|
+
auditLogListSortFieldOptions,
|
|
9
13
|
filters: auditState.filters,
|
|
10
14
|
hasMore: auditState.nextCursor != null,
|
|
11
15
|
items: auditState.items,
|
|
@@ -18,7 +18,7 @@ export const getInvoicingCouponCounts = (state) => state.invoicingCouponViewStat
|
|
|
18
18
|
* array (and the wrapping view object) keep referential identity until the
|
|
19
19
|
* coupon entity slice or the list-view slice actually change.
|
|
20
20
|
*/
|
|
21
|
-
export const getInvoicingCouponListView = createSelector((state) => state.invoicingCouponState, (state) => state.invoicingCouponViewState, (state) => state.invoicingConfigViewState.discountStatusOptions, (couponState, listViewState, statusOptions) => {
|
|
21
|
+
export const getInvoicingCouponListView = createSelector((state) => state.invoicingCouponState, (state) => state.invoicingCouponViewState, (state) => state.invoicingConfigViewState.discountStatusOptions, (state) => state.invoicingConfigViewState.discountLifecycleActionOptions, (couponState, listViewState, statusOptions, discountLifecycleActionOptions) => {
|
|
22
22
|
const { activeTab } = listViewState;
|
|
23
23
|
const allCoupons = listViewState.ids
|
|
24
24
|
.map((id) => couponState.couponByID[id])
|
|
@@ -39,6 +39,7 @@ export const getInvoicingCouponListView = createSelector((state) => state.invoic
|
|
|
39
39
|
countsFetchState: listViewState.countsFetchState,
|
|
40
40
|
filters: listViewState.filters,
|
|
41
41
|
nextCursor: listViewState.nextCursor,
|
|
42
|
+
discountLifecycleActionOptions,
|
|
42
43
|
statusOptions,
|
|
43
44
|
tabIds: invoicingTabIdsFromConfig({
|
|
44
45
|
allTabIds: ALL_INVOICING_COUPON_TAB_IDS,
|
|
@@ -9,7 +9,10 @@ import { entityToInvoicingCouponFormLocalData, } from './editInvoicingCouponDeta
|
|
|
9
9
|
*/
|
|
10
10
|
export const getEditInvoicingCouponDetailViewState = (state, couponId) => {
|
|
11
11
|
const { error, fetchState, savedCouponId } = state.editInvoicingCouponDetailViewState;
|
|
12
|
+
const { discountLifecycleActionOptions, fetchState: configFetchState } = getInvoicingConfigView(state);
|
|
12
13
|
return {
|
|
14
|
+
configFetchState,
|
|
15
|
+
discountLifecycleActionOptions,
|
|
13
16
|
coupon: couponId != null
|
|
14
17
|
? getInvoicingCouponById(state.invoicingCouponState, couponId)
|
|
15
18
|
: undefined,
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import { getInvoicingSubscriptionById } from '../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionSelector';
|
|
2
2
|
import { getFormattedAddress } from '../../addressView/addressViewSelector';
|
|
3
3
|
import { getInvoicingCouponListItems } from '../couponView/couponViewSelector';
|
|
4
|
+
import { getInvoicingConfigView } from '../invoicingConfigView/invoicingConfigViewSelector';
|
|
4
5
|
import { getInvoicingCatalogListView, getInvoicingCatalogPrices, } from '../invoicingCatalogListView/invoicingCatalogListViewSelector';
|
|
5
6
|
import { getInvoicingCustomerListView } from '../invoicingCustomerListView/invoicingCustomerListViewSelector';
|
|
6
7
|
import { INVOICING_SUBSCRIPTION_BILLING_FREQUENCY_VALUES, INVOICING_SUBSCRIPTION_SHIPPING_ADDRESS_TYPE, entityToInvoicingSubscriptionFormLocalData, } from './invoicingSubscriptionFormConfig';
|
|
7
8
|
export const getEditInvoicingSubscriptionDetailViewState = (state, invoicingSubscriptionID) => {
|
|
8
9
|
const { error, fetchState, savedSubscriptionId } = state.editInvoicingSubscriptionDetailViewState;
|
|
10
|
+
const { subscriptionCommercialEditAllowedFromStatuses, subscriptionLifecycleActionOptions, subscriptionMetadataEditAllowedFromStatuses, } = getInvoicingConfigView(state);
|
|
9
11
|
return {
|
|
12
|
+
subscriptionCommercialEditAllowedFromStatuses,
|
|
13
|
+
subscriptionLifecycleActionOptions,
|
|
14
|
+
subscriptionMetadataEditAllowedFromStatuses,
|
|
10
15
|
subscription: invoicingSubscriptionID != null
|
|
11
16
|
? getInvoicingSubscriptionById(state.invoicingSubscriptionState, invoicingSubscriptionID)
|
|
12
17
|
: undefined,
|
|
@@ -2,13 +2,17 @@ import { getInvoicingPlanById } from '../../../entity/invoicing/plan/planSelecto
|
|
|
2
2
|
import { getInvoicingConfigView } from '../invoicingConfigView/invoicingConfigViewSelector';
|
|
3
3
|
export const getInvoicingCatalogItemDetail = (state, _kind, id) => {
|
|
4
4
|
const { error, fetchState } = state.invoicingCatalogItemDetailViewState;
|
|
5
|
-
const { catalogItemLifecycleActionOptions, catalogProductLifecycleActionOptions, catalogTierTypeOptionsByPricingModel, fetchState: configFetchState, } = getInvoicingConfigView(state);
|
|
5
|
+
const { billingPeriodUnitOptions, catalogItemLifecycleActionOptions, catalogItemTypeOptions, catalogProductLifecycleActionOptions, catalogTierTypeOptionsByPricingModel, catalogTrialEndActionOptions, catalogTrialUnitOptions, fetchState: configFetchState, } = getInvoicingConfigView(state);
|
|
6
6
|
return {
|
|
7
7
|
catalogItemLifecycleActionOptions,
|
|
8
8
|
catalogProductLifecycleActionOptions,
|
|
9
9
|
catalogTierTypeOptionsByPricingModel,
|
|
10
10
|
configFetchState,
|
|
11
|
+
periodUnitOptions: billingPeriodUnitOptions,
|
|
11
12
|
plan: getInvoicingPlanById(state.invoicingPlanState, id),
|
|
13
|
+
trialEndActionOptions: catalogTrialEndActionOptions,
|
|
14
|
+
trialUnitOptions: catalogTrialUnitOptions,
|
|
15
|
+
typeOptions: catalogItemTypeOptions,
|
|
12
16
|
fetchState,
|
|
13
17
|
error,
|
|
14
18
|
version: 1.0,
|
|
@@ -15,7 +15,8 @@ export const getInvoicingCatalogPrices = (items) => items.flatMap((item) => (ite
|
|
|
15
15
|
* denormalized arrays keep referential identity. The base `fetchState`/`error`
|
|
16
16
|
* track the plan list; the product list has its own `productFetchState`.
|
|
17
17
|
*/
|
|
18
|
-
export const getInvoicingCatalogListView = createSelector((state) => state.invoicingPlanState, (state) => state.invoicingCatalogListViewState, (planState, listViewState) => ({
|
|
18
|
+
export const getInvoicingCatalogListView = createSelector((state) => state.invoicingPlanState, (state) => state.invoicingCatalogListViewState, (state) => state.invoicingConfigViewState.catalogItemLifecycleActionOptions, (planState, listViewState, catalogItemLifecycleActionOptions) => ({
|
|
19
|
+
catalogItemLifecycleActionOptions,
|
|
19
20
|
plans: getInvoicingPlansByIds(planState, listViewState.planIds),
|
|
20
21
|
productColumns: INVOICING_PRODUCT_COLUMNS,
|
|
21
22
|
products: getInvoicingPlansByIds(planState, listViewState.productIds),
|
|
@@ -9,7 +9,7 @@ import { INVOICING_SUBSCRIPTION_COLUMNS, ALL_INVOICING_SUBSCRIPTION_TAB_IDS, } f
|
|
|
9
9
|
* re-rendered on every unrelated redux action because a fresh array was built
|
|
10
10
|
* each call.
|
|
11
11
|
*/
|
|
12
|
-
export const getInvoicingSubscriptionListView = createSelector((state) => state.invoicingSubscriptionState, (state) => state.invoicingSubscriptionListViewState, (state) => state.invoicingConfigViewState.subscriptionStatusOptions, (subscriptionState, listViewState, statusOptions) => {
|
|
12
|
+
export const getInvoicingSubscriptionListView = createSelector((state) => state.invoicingSubscriptionState, (state) => state.invoicingSubscriptionListViewState, (state) => state.invoicingConfigViewState.subscriptionStatusOptions, (state) => state.invoicingConfigViewState, (subscriptionState, listViewState, statusOptions, configState) => {
|
|
13
13
|
const { activeTab } = listViewState;
|
|
14
14
|
const allSubscriptions = getInvoicingSubscriptionsByIds(subscriptionState, listViewState.ids);
|
|
15
15
|
// The list API ignores `status`, so it returns every status; filter to the
|
|
@@ -27,6 +27,9 @@ export const getInvoicingSubscriptionListView = createSelector((state) => state.
|
|
|
27
27
|
filters: listViewState.filters,
|
|
28
28
|
count: listViewState.counts,
|
|
29
29
|
countsFetchState: listViewState.countsFetchState,
|
|
30
|
+
subscriptionCommercialEditAllowedFromStatuses: configState.subscriptionCommercialEditAllowedFromStatuses,
|
|
31
|
+
subscriptionLifecycleActionOptions: configState.subscriptionLifecycleActionOptions,
|
|
32
|
+
subscriptionMetadataEditAllowedFromStatuses: configState.subscriptionMetadataEditAllowedFromStatuses,
|
|
30
33
|
statusOptions,
|
|
31
34
|
tabIds: invoicingTabIdsFromConfig({
|
|
32
35
|
allTabIds: ALL_INVOICING_SUBSCRIPTION_TAB_IDS,
|
|
@@ -72,13 +72,20 @@ export function deriveInvoicingEnablePrerequisites(settings, isQboConnected, qbo
|
|
|
72
72
|
* and QBO slices read here are only fetched once a settings screen is mounted.
|
|
73
73
|
*/
|
|
74
74
|
export const getInvoicingSettingsHubView = (state) => {
|
|
75
|
-
const { enableState, qboAccountMappingKindOptions, status } = getInvoicingConfigView(state);
|
|
75
|
+
const { dunningScheduleActionOptions, enableState, error: configError, fetchState: configFetchState, qboAccountMappingKindOptions, qboCustomerMatchingOptions, qboSyncStatusOptions, status, } = getInvoicingConfigView(state);
|
|
76
76
|
const { canEnable, isQboConfigured, isStripeConnected } = deriveInvoicingEnablePrerequisites(state.invoicingSettingsViewState.settings, state.invoicingQboViewState.connection?.connected === true, qboAccountMappingKindOptions);
|
|
77
77
|
return {
|
|
78
78
|
canEnableInvoicing: status === 'settings' && canEnable,
|
|
79
|
+
configError,
|
|
80
|
+
configFetchState,
|
|
81
|
+
dunningScheduleActionOptions,
|
|
79
82
|
isEnablingInvoicing: enableState.fetchState === 'In-Progress',
|
|
83
|
+
qboAccountMappingKindOptions,
|
|
84
|
+
qboCustomerMatchingOptions,
|
|
85
|
+
qboSyncStatusOptions,
|
|
80
86
|
isQboConfigured,
|
|
81
87
|
isStripeConnected,
|
|
88
|
+
status,
|
|
82
89
|
};
|
|
83
90
|
};
|
|
84
91
|
/**
|
package/lib/index.d.ts
CHANGED
|
@@ -1229,5 +1229,7 @@ export { INVOICING_QBO_CUSTOMER_MATCHING_MODES, getInvoicingQboAccountMappingId,
|
|
|
1229
1229
|
export type { InvoicingNamedOption, InvoicingNamedOptionsByKey, InvoicingQboAccountMappingKindOption, InvoicingQboAccountMappingsPayload, InvoicingQboCustomerMatchingMode, InvoicingQboSettingsPayload, } from './entity/invoicing/invoicingCommonPayload';
|
|
1230
1230
|
export { acceptInvoicingTerms, clearInvoicingConfig, enableInvoicing, fetchInvoicingConfig, resetInvoicingConfigActionStates, updateInvoicingConfig, } from './view/invoicing/invoicingConfigView/invoicingConfigViewReducer';
|
|
1231
1231
|
export { getInvoicingConfigView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
|
|
1232
|
+
export { getInvoicingOnboardingGateView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
|
|
1233
|
+
export type { InvoicingOnboardingGateView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
|
|
1232
1234
|
export type { InvoicingConfigView } from './view/invoicing/invoicingConfigView/invoicingConfigViewSelector';
|
|
1233
1235
|
export type { InvoicingOnboardingStatus } from './view/invoicing/invoicingConfigView/invoicingConfigViewPayload';
|
package/lib/index.js
CHANGED
|
@@ -84,7 +84,7 @@ exports.clearInvoicingCustomerListView = exports.updateInvoicingCustomers = expo
|
|
|
84
84
|
exports.fetchInvoicingTransactionList = exports.clearInvoicingTransactionListView = exports.updateInvoicingTransactions = exports.removeInvoicingTransaction = exports.clearAllInvoicingTransactions = exports.getInvoicingSubscriptionDetail = exports.getInvoicingSubscriptionById = exports.fetchInvoicingSubscriptionDetail = exports.clearInvoicingSubscriptionDetailView = exports.getInvoicingSubscriptionListView = exports.INVOICING_SUBSCRIPTION_COLUMNS = exports.ALL_INVOICING_SUBSCRIPTION_TAB_IDS = exports.ALL_INVOICING_SUBSCRIPTION_SORT_KEYS = exports.updateInvoicingSubscriptionFilters = exports.setInvoicingSubscriptionActiveTab = exports.fetchInvoicingSubscriptionListPage = exports.fetchInvoicingSubscriptionList = exports.fetchInvoicingSubscriptionCounts = exports.clearInvoicingSubscriptionListView = exports.updateInvoicingSubscriptions = exports.removeInvoicingSubscription = exports.clearAllInvoicingSubscriptions = exports.resetPromotionalCreditAction = exports.submitAddPromotionalCredits = exports.getInvoicingSetupIntentFetchState = exports.getInvoicingSetupIntent = exports.getInvoicingSentPaymentLinkMagicUrl = exports.getInvoicingSentPaymentLinkEmail = exports.getInvoicingPlaidLinkTokenFetchState = exports.getInvoicingPlaidLinkToken = exports.getInvoicingPaymentMethodSaveState = exports.getInvoicingPaymentLinkSendState = exports.sendInvoicingPaymentLink = exports.saveInvoicingPaymentMethod = exports.resetInvoicingCustomerPaymentMethod = exports.fetchInvoicingPlaidLinkToken = exports.createInvoicingSetupIntent = exports.getInvoicingCustomerDetail = exports.fetchInvoicingCustomerDetailPage = exports.fetchInvoicingCustomerDetail = exports.clearInvoicingCustomerDetailView = exports.getInvoicingCustomerListView = exports.INVOICING_CUSTOMER_COLUMNS = exports.ALL_INVOICING_CUSTOMER_TAB_IDS = exports.ALL_INVOICING_CUSTOMER_SORT_KEYS = exports.updateInvoicingCustomerFilters = exports.setInvoicingCustomerActiveTab = exports.fetchInvoicingCustomerListPage = exports.fetchInvoicingCustomerList = exports.fetchInvoicingCustomerCounts = void 0;
|
|
85
85
|
exports.fetchInvoicingCouponDetail = exports.clearInvoicingCouponDetailView = exports.getInvoicingCouponById = exports.getInvoicingCouponListView = exports.getInvoicingCouponListNextCursor = exports.getInvoicingCouponListItems = exports.getInvoicingCouponListHasMore = exports.getInvoicingCouponListFilters = exports.getInvoicingCouponListFetchState = exports.getInvoicingCouponCounts = exports.INVOICING_COUPON_COLUMNS = exports.ALL_INVOICING_COUPON_TAB_IDS = exports.ALL_INVOICING_COUPON_SORT_KEYS = exports.updateInvoicingCouponFilters = exports.setInvoicingCouponActiveTab = exports.fetchInvoicingCouponListPage = exports.fetchInvoicingCouponList = exports.fetchInvoicingCouponCounts = exports.clearInvoicingCouponView = exports.updateInvoicingCoupons = exports.removeInvoicingCoupon = exports.clearAllInvoicingCoupons = exports.getInvoicingCreditNoteDetail = exports.getInvoicingCreditNoteById = exports.fetchInvoicingCreditNoteDetail = exports.clearInvoicingCreditNoteDetailView = exports.getInvoicingCreditNoteListView = exports.INVOICING_CREDIT_NOTE_COLUMNS = exports.ALL_INVOICING_CREDIT_NOTE_TAB_IDS = exports.ALL_INVOICING_CREDIT_NOTE_SORT_KEYS = exports.updateInvoicingCreditNoteFilters = exports.setInvoicingCreditNoteActiveTab = exports.fetchInvoicingCreditNoteListPage = exports.fetchInvoicingCreditNoteList = exports.fetchInvoicingCreditNoteCounts = exports.clearInvoicingCreditNoteListView = exports.updateInvoicingCreditNotes = exports.removeInvoicingCreditNote = exports.clearAllInvoicingCreditNotes = exports.getInvoicingTransactionDetail = exports.getInvoicingTransactionById = exports.fetchInvoicingTransactionDetail = exports.clearInvoicingTransactionDetailView = exports.getInvoicingTransactionListView = exports.INVOICING_TRANSACTION_COLUMNS = exports.ALL_INVOICING_TRANSACTION_TAB_IDS = exports.ALL_INVOICING_TRANSACTION_SORT_KEYS = exports.updateInvoicingTransactionFilters = exports.setInvoicingTransactionActiveTab = exports.fetchInvoicingTransactionListPage = void 0;
|
|
86
86
|
exports.saveInvoicingSettings = exports.resetSaveInvoicingSettings = exports.resetInvoicingBrandingFormDraft = exports.fetchInvoicingSettings = exports.disconnectInvoicingStripe = exports.connectInvoicingStripe = exports.clearInvoicingSettings = exports.getInvoicingProductById = exports.getInvoicingPlanById = exports.getInvoicingCatalogItemDetail = exports.fetchInvoicingCatalogItemDetail = exports.clearInvoicingCatalogItemDetailView = exports.getInvoicingCatalogListView = exports.INVOICING_PRODUCT_COLUMNS = exports.ALL_INVOICING_PRODUCT_SORT_KEYS = exports.updateInvoicingCatalogProductFilters = exports.updateInvoicingCatalogPlanFilters = exports.fetchInvoicingCatalogProductList = exports.fetchInvoicingCatalogPlanList = exports.fetchInvoicingCatalogListPage = exports.fetchInvoicingCatalogCounts = exports.clearInvoicingCatalogListView = exports.updateInvoicingProducts = exports.removeInvoicingProduct = exports.clearAllInvoicingProducts = exports.updateInvoicingPlans = exports.removeInvoicingPlan = exports.mergeInvoicingPlanSubFamily = exports.clearAllInvoicingPlans = exports.getInvoicingDunningEmailPreview = exports.getInvoicingDunningCaseDetail = exports.getInvoicingDunningCaseById = exports.invalidateInvoicingDunningEmailPreview = exports.fetchInvoicingDunningEmailPreviewPage = exports.fetchInvoicingDunningCaseDetail = exports.clearInvoicingDunningCaseDetailView = exports.getInvoicingDunningCaseListView = exports.INVOICING_DUNNING_CASE_COLUMNS = exports.ALL_INVOICING_DUNNING_CASE_TAB_IDS = exports.ALL_INVOICING_DUNNING_CASE_SORT_KEYS = exports.updateInvoicingDunningCaseFilters = exports.setInvoicingDunningCaseActiveTab = exports.fetchInvoicingDunningCaseListPage = exports.fetchInvoicingDunningCaseList = exports.fetchInvoicingDunningCaseCounts = exports.clearInvoicingDunningCaseListView = exports.updateInvoicingDunningCases = exports.removeInvoicingDunningCase = exports.clearAllInvoicingDunningCases = exports.getInvoicingCouponDetail = void 0;
|
|
87
|
-
exports.getInvoicingConfigView = exports.updateInvoicingConfig = exports.resetInvoicingConfigActionStates = exports.fetchInvoicingConfig = exports.enableInvoicing = exports.clearInvoicingConfig = exports.acceptInvoicingTerms = exports.withInvoicingQboAccountMappingId = exports.toInvoicingQboCustomerMatchingMode = exports.toInvoicingNamedOptionsByKey = exports.getInvoicingQboAccountMappingId = exports.INVOICING_QBO_CUSTOMER_MATCHING_MODES = exports.getInvoicingQboView = exports.startInvoicingQboBackfill = exports.retryInvoicingQboSyncTask = exports.fetchInvoicingQboSyncHealth = exports.fetchInvoicingQboConnection = exports.fetchInvoicingQboClasses = exports.fetchInvoicingQboAccounts = exports.clearInvoicingQboView = exports.isStripeConnectedFromSettings = exports.initialInvoicingBrandingFormLocalData = exports.entityToInvoicingBrandingFormLocalData = exports.INVOICING_BUSINESS_ADDRESS_TYPE = exports.getInvoicingSettingsView = exports.getInvoicingSettingsHubView = exports.getInvoicingSettingsFetchState = exports.getInvoicingSettings = exports.getInvoicingBrandingFormView = exports.updateInvoicingSettings = exports.updateInvoicingBrandingFormDraft = exports.submitInvoicingBrandingForm = void 0;
|
|
87
|
+
exports.getInvoicingOnboardingGateView = exports.getInvoicingConfigView = exports.updateInvoicingConfig = exports.resetInvoicingConfigActionStates = exports.fetchInvoicingConfig = exports.enableInvoicing = exports.clearInvoicingConfig = exports.acceptInvoicingTerms = exports.withInvoicingQboAccountMappingId = exports.toInvoicingQboCustomerMatchingMode = exports.toInvoicingNamedOptionsByKey = exports.getInvoicingQboAccountMappingId = exports.INVOICING_QBO_CUSTOMER_MATCHING_MODES = exports.getInvoicingQboView = exports.startInvoicingQboBackfill = exports.retryInvoicingQboSyncTask = exports.fetchInvoicingQboSyncHealth = exports.fetchInvoicingQboConnection = exports.fetchInvoicingQboClasses = exports.fetchInvoicingQboAccounts = exports.clearInvoicingQboView = exports.isStripeConnectedFromSettings = exports.initialInvoicingBrandingFormLocalData = exports.entityToInvoicingBrandingFormLocalData = exports.INVOICING_BUSINESS_ADDRESS_TYPE = exports.getInvoicingSettingsView = exports.getInvoicingSettingsHubView = exports.getInvoicingSettingsFetchState = exports.getInvoicingSettings = exports.getInvoicingBrandingFormView = exports.updateInvoicingSettings = exports.updateInvoicingBrandingFormDraft = exports.submitInvoicingBrandingForm = void 0;
|
|
88
88
|
const allowedValue_1 = require("./commonStateTypes/allowedValue");
|
|
89
89
|
Object.defineProperty(exports, "isAllowedValueWithCode", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithCode; } });
|
|
90
90
|
Object.defineProperty(exports, "isAllowedValueWithID", { enumerable: true, get: function () { return allowedValue_1.isAllowedValueWithID; } });
|
|
@@ -3173,3 +3173,5 @@ Object.defineProperty(exports, "resetInvoicingConfigActionStates", { enumerable:
|
|
|
3173
3173
|
Object.defineProperty(exports, "updateInvoicingConfig", { enumerable: true, get: function () { return invoicingConfigViewReducer_1.updateInvoicingConfig; } });
|
|
3174
3174
|
var invoicingConfigViewSelector_1 = require("./view/invoicing/invoicingConfigView/invoicingConfigViewSelector");
|
|
3175
3175
|
Object.defineProperty(exports, "getInvoicingConfigView", { enumerable: true, get: function () { return invoicingConfigViewSelector_1.getInvoicingConfigView; } });
|
|
3176
|
+
var invoicingConfigViewSelector_2 = require("./view/invoicing/invoicingConfigView/invoicingConfigViewSelector");
|
|
3177
|
+
Object.defineProperty(exports, "getInvoicingOnboardingGateView", { enumerable: true, get: function () { return invoicingConfigViewSelector_2.getInvoicingOnboardingGateView; } });
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
|
|
2
|
+
import type { AuditLogEntityRouteOption, AuditLogListSortFieldOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
2
3
|
import { RootState } from '../../../reducer';
|
|
3
4
|
import { InvoicingAuditEntry } from './auditViewPayload';
|
|
4
5
|
import { InvoicingAuditFilters } from './auditViewState';
|
|
5
6
|
export interface InvoicingAuditView extends SelectorView {
|
|
7
|
+
/** Config-owned; folded in so the screen reads one selector. */
|
|
8
|
+
auditLogEntityRouteOptions: AuditLogEntityRouteOption[];
|
|
9
|
+
auditLogListSortFieldOptions: AuditLogListSortFieldOption[];
|
|
6
10
|
filters: InvoicingAuditFilters;
|
|
7
11
|
hasMore: boolean;
|
|
8
12
|
items: InvoicingAuditEntry[];
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getInvoicingAuditView = void 0;
|
|
4
|
+
const invoicingConfigViewSelector_1 = require("../invoicingConfigView/invoicingConfigViewSelector");
|
|
4
5
|
/**
|
|
5
6
|
* Single bundled view for the invoicing audit log — consumers read only this.
|
|
6
7
|
* Carries the log `items`, pagination (`nextCursor` + derived `hasMore`), the
|
|
@@ -8,7 +9,10 @@ exports.getInvoicingAuditView = void 0;
|
|
|
8
9
|
*/
|
|
9
10
|
const getInvoicingAuditView = (state) => {
|
|
10
11
|
const auditState = state.invoicingAuditViewState;
|
|
12
|
+
const { auditLogEntityRouteOptions, auditLogListSortFieldOptions } = (0, invoicingConfigViewSelector_1.getInvoicingConfigView)(state);
|
|
11
13
|
return {
|
|
14
|
+
auditLogEntityRouteOptions,
|
|
15
|
+
auditLogListSortFieldOptions,
|
|
12
16
|
filters: auditState.filters,
|
|
13
17
|
hasMore: auditState.nextCursor != null,
|
|
14
18
|
items: auditState.items,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { FetchStateAndError } from '../../../commonStateTypes/common';
|
|
2
2
|
import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
|
|
3
3
|
import { InvoicingCoupon } from '../../../entity/invoicing/coupon/couponState';
|
|
4
|
-
import { InvoicingListCounts, InvoicingNamedOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
4
|
+
import { InvoicingListCounts, InvoicingNamedOption, InvoicingDiscountLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
5
5
|
import { RootState } from '../../../reducer';
|
|
6
6
|
import { InvoicingListSort } from '../invoicingApiHelper';
|
|
7
7
|
import { InvoicingCouponColumnConfig, InvoicingCouponFilters, InvoicingCouponTabId } from './couponViewState';
|
|
@@ -17,6 +17,8 @@ export interface InvoicingCouponListView extends SelectorView {
|
|
|
17
17
|
count: InvoicingListCounts;
|
|
18
18
|
countsFetchState: FetchStateAndError;
|
|
19
19
|
coupons: InvoicingCoupon[];
|
|
20
|
+
/** Config-owned; folded in so the screen reads one selector. */
|
|
21
|
+
discountLifecycleActionOptions: InvoicingDiscountLifecycleActionOption[];
|
|
20
22
|
filters: InvoicingCouponFilters;
|
|
21
23
|
nextCursor: string | null;
|
|
22
24
|
/** Config status/type list; the page labels tabs and badges from it. */
|
|
@@ -27,7 +27,7 @@ exports.getInvoicingCouponCounts = getInvoicingCouponCounts;
|
|
|
27
27
|
* array (and the wrapping view object) keep referential identity until the
|
|
28
28
|
* coupon entity slice or the list-view slice actually change.
|
|
29
29
|
*/
|
|
30
|
-
exports.getInvoicingCouponListView = (0, toolkit_1.createSelector)((state) => state.invoicingCouponState, (state) => state.invoicingCouponViewState, (state) => state.invoicingConfigViewState.discountStatusOptions, (couponState, listViewState, statusOptions) => {
|
|
30
|
+
exports.getInvoicingCouponListView = (0, toolkit_1.createSelector)((state) => state.invoicingCouponState, (state) => state.invoicingCouponViewState, (state) => state.invoicingConfigViewState.discountStatusOptions, (state) => state.invoicingConfigViewState.discountLifecycleActionOptions, (couponState, listViewState, statusOptions, discountLifecycleActionOptions) => {
|
|
31
31
|
const { activeTab } = listViewState;
|
|
32
32
|
const allCoupons = listViewState.ids
|
|
33
33
|
.map((id) => couponState.couponByID[id])
|
|
@@ -48,6 +48,7 @@ exports.getInvoicingCouponListView = (0, toolkit_1.createSelector)((state) => st
|
|
|
48
48
|
countsFetchState: listViewState.countsFetchState,
|
|
49
49
|
filters: listViewState.filters,
|
|
50
50
|
nextCursor: listViewState.nextCursor,
|
|
51
|
+
discountLifecycleActionOptions,
|
|
51
52
|
statusOptions,
|
|
52
53
|
tabIds: (0, invoicingTabHelper_1.invoicingTabIdsFromConfig)({
|
|
53
54
|
allTabIds: couponViewState_1.ALL_INVOICING_COUPON_TAB_IDS,
|
package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import { ID } from '../../../commonStateTypes/common';
|
|
1
|
+
import { FetchState, ID } from '../../../commonStateTypes/common';
|
|
2
2
|
import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
|
|
3
3
|
import { InvoicingCoupon } from '../../../entity/invoicing/coupon/couponState';
|
|
4
|
-
import { InvoicingFormOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
4
|
+
import { InvoicingDiscountLifecycleActionOption, InvoicingFormOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
5
5
|
import { RootState } from '../../../reducer';
|
|
6
6
|
import { InvoicingCouponFormLocalData } from './editInvoicingCouponDetailViewState';
|
|
7
7
|
export interface EditInvoicingCouponDetailView extends SelectorView {
|
|
8
|
+
/** Config-owned; folded in so the screen reads one selector. */
|
|
9
|
+
configFetchState: FetchState;
|
|
10
|
+
discountLifecycleActionOptions: InvoicingDiscountLifecycleActionOption[];
|
|
8
11
|
coupon?: InvoicingCoupon;
|
|
9
12
|
savedCouponId?: ID;
|
|
10
13
|
}
|
package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js
CHANGED
|
@@ -12,7 +12,10 @@ const editInvoicingCouponDetailViewState_1 = require("./editInvoicingCouponDetai
|
|
|
12
12
|
*/
|
|
13
13
|
const getEditInvoicingCouponDetailViewState = (state, couponId) => {
|
|
14
14
|
const { error, fetchState, savedCouponId } = state.editInvoicingCouponDetailViewState;
|
|
15
|
+
const { discountLifecycleActionOptions, fetchState: configFetchState } = (0, invoicingConfigViewSelector_1.getInvoicingConfigView)(state);
|
|
15
16
|
return {
|
|
17
|
+
configFetchState,
|
|
18
|
+
discountLifecycleActionOptions,
|
|
16
19
|
coupon: couponId != null
|
|
17
20
|
? (0, couponSelector_1.getInvoicingCouponById)(state.invoicingCouponState, couponId)
|
|
18
21
|
: undefined,
|
|
@@ -3,6 +3,7 @@ import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndRep
|
|
|
3
3
|
import { InvoicingCoupon } from '../../../entity/invoicing/coupon/couponState';
|
|
4
4
|
import { InvoicingCustomer } from '../../../entity/invoicing/invoicingCustomer/invoicingCustomerState';
|
|
5
5
|
import { InvoicingSubscription } from '../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionState';
|
|
6
|
+
import { InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
6
7
|
import { InvoicingProduct } from '../../../entity/invoicing/product/productState';
|
|
7
8
|
import { RootState } from '../../../reducer';
|
|
8
9
|
import { InvoicingSubscriptionFormLocalData } from './editInvoicingSubscriptionDetailViewState';
|
|
@@ -13,6 +14,10 @@ import { InvoicingSubscriptionFormLocalData } from './editInvoicingSubscriptionD
|
|
|
13
14
|
* prefill the form.
|
|
14
15
|
*/
|
|
15
16
|
export interface EditInvoicingSubscriptionDetailView extends SelectorView {
|
|
17
|
+
/** Config-owned; folded in so the screen reads one selector. */
|
|
18
|
+
subscriptionCommercialEditAllowedFromStatuses: string[];
|
|
19
|
+
subscriptionLifecycleActionOptions: InvoicingSubscriptionLifecycleActionOption[];
|
|
20
|
+
subscriptionMetadataEditAllowedFromStatuses: string[];
|
|
16
21
|
savedSubscriptionId?: ID;
|
|
17
22
|
subscription?: InvoicingSubscription;
|
|
18
23
|
}
|
|
@@ -4,12 +4,17 @@ exports.getInvoicingSubscriptionFormView = exports.getEditInvoicingSubscriptionD
|
|
|
4
4
|
const invoicingSubscriptionSelector_1 = require("../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionSelector");
|
|
5
5
|
const addressViewSelector_1 = require("../../addressView/addressViewSelector");
|
|
6
6
|
const couponViewSelector_1 = require("../couponView/couponViewSelector");
|
|
7
|
+
const invoicingConfigViewSelector_1 = require("../invoicingConfigView/invoicingConfigViewSelector");
|
|
7
8
|
const invoicingCatalogListViewSelector_1 = require("../invoicingCatalogListView/invoicingCatalogListViewSelector");
|
|
8
9
|
const invoicingCustomerListViewSelector_1 = require("../invoicingCustomerListView/invoicingCustomerListViewSelector");
|
|
9
10
|
const invoicingSubscriptionFormConfig_1 = require("./invoicingSubscriptionFormConfig");
|
|
10
11
|
const getEditInvoicingSubscriptionDetailViewState = (state, invoicingSubscriptionID) => {
|
|
11
12
|
const { error, fetchState, savedSubscriptionId } = state.editInvoicingSubscriptionDetailViewState;
|
|
13
|
+
const { subscriptionCommercialEditAllowedFromStatuses, subscriptionLifecycleActionOptions, subscriptionMetadataEditAllowedFromStatuses, } = (0, invoicingConfigViewSelector_1.getInvoicingConfigView)(state);
|
|
12
14
|
return {
|
|
15
|
+
subscriptionCommercialEditAllowedFromStatuses,
|
|
16
|
+
subscriptionLifecycleActionOptions,
|
|
17
|
+
subscriptionMetadataEditAllowedFromStatuses,
|
|
13
18
|
subscription: invoicingSubscriptionID != null
|
|
14
19
|
? (0, invoicingSubscriptionSelector_1.getInvoicingSubscriptionById)(state.invoicingSubscriptionState, invoicingSubscriptionID)
|
|
15
20
|
: undefined,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FetchState, ID } from '../../../commonStateTypes/common';
|
|
2
2
|
import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
|
|
3
|
-
import { InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingNamedOptionsByKey } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
3
|
+
import { InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingNamedOption, InvoicingNamedOptionsByKey } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
4
4
|
import { InvoicingPlan } from '../../../entity/invoicing/plan/planState';
|
|
5
5
|
import { RootState } from '../../../reducer';
|
|
6
6
|
import { InvoicingCatalogItemKind } from './invoicingCatalogItemDetailViewState';
|
|
@@ -20,6 +20,14 @@ export interface InvoicingCatalogItemDetailView extends SelectorView {
|
|
|
20
20
|
catalogItemLifecycleActionOptions: InvoicingCatalogLifecycleActionOption<InvoicingCatalogItemLifecycleAction>[];
|
|
21
21
|
catalogProductLifecycleActionOptions: InvoicingCatalogLifecycleActionOption<InvoicingCatalogProductLifecycleAction>[];
|
|
22
22
|
configFetchState: FetchState;
|
|
23
|
+
/**
|
|
24
|
+
* Config option lists the detail page's inline pricing editor renders, so the
|
|
25
|
+
* screen reads them off this view instead of `getInvoicingConfigView`.
|
|
26
|
+
*/
|
|
27
|
+
periodUnitOptions: InvoicingNamedOption[];
|
|
28
|
+
trialEndActionOptions: InvoicingNamedOption[];
|
|
29
|
+
trialUnitOptions: InvoicingNamedOption[];
|
|
30
|
+
typeOptions: InvoicingNamedOption[];
|
|
23
31
|
catalogTierTypeOptionsByPricingModel?: InvoicingNamedOptionsByKey;
|
|
24
32
|
plan?: InvoicingPlan;
|
|
25
33
|
}
|
package/lib/view/invoicing/invoicingCatalogItemDetailView/invoicingCatalogItemDetailViewSelector.js
CHANGED
|
@@ -5,13 +5,17 @@ const planSelector_1 = require("../../../entity/invoicing/plan/planSelector");
|
|
|
5
5
|
const invoicingConfigViewSelector_1 = require("../invoicingConfigView/invoicingConfigViewSelector");
|
|
6
6
|
const getInvoicingCatalogItemDetail = (state, _kind, id) => {
|
|
7
7
|
const { error, fetchState } = state.invoicingCatalogItemDetailViewState;
|
|
8
|
-
const { catalogItemLifecycleActionOptions, catalogProductLifecycleActionOptions, catalogTierTypeOptionsByPricingModel, fetchState: configFetchState, } = (0, invoicingConfigViewSelector_1.getInvoicingConfigView)(state);
|
|
8
|
+
const { billingPeriodUnitOptions, catalogItemLifecycleActionOptions, catalogItemTypeOptions, catalogProductLifecycleActionOptions, catalogTierTypeOptionsByPricingModel, catalogTrialEndActionOptions, catalogTrialUnitOptions, fetchState: configFetchState, } = (0, invoicingConfigViewSelector_1.getInvoicingConfigView)(state);
|
|
9
9
|
return {
|
|
10
10
|
catalogItemLifecycleActionOptions,
|
|
11
11
|
catalogProductLifecycleActionOptions,
|
|
12
12
|
catalogTierTypeOptionsByPricingModel,
|
|
13
13
|
configFetchState,
|
|
14
|
+
periodUnitOptions: billingPeriodUnitOptions,
|
|
14
15
|
plan: (0, planSelector_1.getInvoicingPlanById)(state.invoicingPlanState, id),
|
|
16
|
+
trialEndActionOptions: catalogTrialEndActionOptions,
|
|
17
|
+
trialUnitOptions: catalogTrialUnitOptions,
|
|
18
|
+
typeOptions: catalogItemTypeOptions,
|
|
15
19
|
fetchState,
|
|
16
20
|
error,
|
|
17
21
|
version: 1.0,
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { FetchStateAndError } from '../../../commonStateTypes/common';
|
|
2
2
|
import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
|
|
3
|
-
import { InvoicingListCounts } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
3
|
+
import { InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingListCounts } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
4
4
|
import { InvoicingPlan } from '../../../entity/invoicing/plan/planState';
|
|
5
5
|
import { InvoicingProduct } from '../../../entity/invoicing/product/productState';
|
|
6
6
|
import { RootState } from '../../../reducer';
|
|
7
7
|
import { InvoicingListSort } from '../invoicingApiHelper';
|
|
8
8
|
import { InvoicingCatalogPlanFilters, InvoicingCatalogProductFilters, InvoicingProductColumnConfig } from './invoicingCatalogListViewState';
|
|
9
9
|
export interface InvoicingCatalogListView extends SelectorView {
|
|
10
|
+
/** Config-owned; folded in so the screen reads one selector. */
|
|
11
|
+
catalogItemLifecycleActionOptions: InvoicingCatalogLifecycleActionOption<InvoicingCatalogItemLifecycleAction>[];
|
|
10
12
|
count: InvoicingListCounts;
|
|
11
13
|
countsFetchState: FetchStateAndError;
|
|
12
14
|
planFilters: InvoicingCatalogPlanFilters;
|
|
@@ -19,7 +19,8 @@ exports.getInvoicingCatalogPrices = getInvoicingCatalogPrices;
|
|
|
19
19
|
* denormalized arrays keep referential identity. The base `fetchState`/`error`
|
|
20
20
|
* track the plan list; the product list has its own `productFetchState`.
|
|
21
21
|
*/
|
|
22
|
-
exports.getInvoicingCatalogListView = (0, toolkit_1.createSelector)((state) => state.invoicingPlanState, (state) => state.invoicingCatalogListViewState, (planState, listViewState) => ({
|
|
22
|
+
exports.getInvoicingCatalogListView = (0, toolkit_1.createSelector)((state) => state.invoicingPlanState, (state) => state.invoicingCatalogListViewState, (state) => state.invoicingConfigViewState.catalogItemLifecycleActionOptions, (planState, listViewState, catalogItemLifecycleActionOptions) => ({
|
|
23
|
+
catalogItemLifecycleActionOptions,
|
|
23
24
|
plans: (0, planSelector_1.getInvoicingPlansByIds)(planState, listViewState.planIds),
|
|
24
25
|
productColumns: invoicingCatalogListViewState_1.INVOICING_PRODUCT_COLUMNS,
|
|
25
26
|
products: (0, planSelector_1.getInvoicingPlansByIds)(planState, listViewState.productIds),
|
package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FetchStateAndError } from '../../../commonStateTypes/common';
|
|
2
2
|
import { SelectorView } from '../../../commonStateTypes/viewAndReport/viewAndReport';
|
|
3
|
-
import { InvoicingListCounts, InvoicingNamedOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
3
|
+
import { InvoicingListCounts, InvoicingNamedOption, InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
4
4
|
import { InvoicingSubscription } from '../../../entity/invoicing/invoicingSubscription/invoicingSubscriptionState';
|
|
5
5
|
import { RootState } from '../../../reducer';
|
|
6
6
|
import { InvoicingListSort } from '../invoicingApiHelper';
|
|
@@ -14,6 +14,10 @@ export interface InvoicingSubscriptionListView extends SelectorView {
|
|
|
14
14
|
nextCursor: string | null;
|
|
15
15
|
/** Config status/type list; the page labels tabs and badges from it. */
|
|
16
16
|
statusOptions: InvoicingNamedOption[];
|
|
17
|
+
/** Config-owned; folded in so the screen reads one selector. */
|
|
18
|
+
subscriptionCommercialEditAllowedFromStatuses: string[];
|
|
19
|
+
subscriptionLifecycleActionOptions: InvoicingSubscriptionLifecycleActionOption[];
|
|
20
|
+
subscriptionMetadataEditAllowedFromStatuses: string[];
|
|
17
21
|
subscriptions: InvoicingSubscription[];
|
|
18
22
|
tabIds: InvoicingSubscriptionTabId[];
|
|
19
23
|
sort?: InvoicingListSort;
|
package/lib/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.js
CHANGED
|
@@ -12,7 +12,7 @@ const invoicingSubscriptionListViewState_1 = require("./invoicingSubscriptionLis
|
|
|
12
12
|
* re-rendered on every unrelated redux action because a fresh array was built
|
|
13
13
|
* each call.
|
|
14
14
|
*/
|
|
15
|
-
exports.getInvoicingSubscriptionListView = (0, toolkit_1.createSelector)((state) => state.invoicingSubscriptionState, (state) => state.invoicingSubscriptionListViewState, (state) => state.invoicingConfigViewState.subscriptionStatusOptions, (subscriptionState, listViewState, statusOptions) => {
|
|
15
|
+
exports.getInvoicingSubscriptionListView = (0, toolkit_1.createSelector)((state) => state.invoicingSubscriptionState, (state) => state.invoicingSubscriptionListViewState, (state) => state.invoicingConfigViewState.subscriptionStatusOptions, (state) => state.invoicingConfigViewState, (subscriptionState, listViewState, statusOptions, configState) => {
|
|
16
16
|
const { activeTab } = listViewState;
|
|
17
17
|
const allSubscriptions = (0, invoicingSubscriptionSelector_1.getInvoicingSubscriptionsByIds)(subscriptionState, listViewState.ids);
|
|
18
18
|
// The list API ignores `status`, so it returns every status; filter to the
|
|
@@ -30,6 +30,9 @@ exports.getInvoicingSubscriptionListView = (0, toolkit_1.createSelector)((state)
|
|
|
30
30
|
filters: listViewState.filters,
|
|
31
31
|
count: listViewState.counts,
|
|
32
32
|
countsFetchState: listViewState.countsFetchState,
|
|
33
|
+
subscriptionCommercialEditAllowedFromStatuses: configState.subscriptionCommercialEditAllowedFromStatuses,
|
|
34
|
+
subscriptionLifecycleActionOptions: configState.subscriptionLifecycleActionOptions,
|
|
35
|
+
subscriptionMetadataEditAllowedFromStatuses: configState.subscriptionMetadataEditAllowedFromStatuses,
|
|
33
36
|
statusOptions,
|
|
34
37
|
tabIds: (0, invoicingTabHelper_1.invoicingTabIdsFromConfig)({
|
|
35
38
|
allTabIds: invoicingSubscriptionListViewState_1.ALL_INVOICING_SUBSCRIPTION_TAB_IDS,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FetchState, FetchStateAndError } from '../../../commonStateTypes/common';
|
|
2
|
-
import { InvoicingNamedOption, InvoicingQboAccountMappingKindOption, InvoicingSettingsPayload } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
2
|
+
import { InvoicingDunningActionOption, InvoicingNamedOption, InvoicingQboAccountMappingKindOption, InvoicingSettingsPayload } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
3
3
|
import { RootState } from '../../../reducer';
|
|
4
4
|
import { ZeniAPIStatus } from '../../../responsePayload';
|
|
5
5
|
import { InvoicingBrandingFormLocalData } from './invoicingBrandingFormConfig';
|
|
@@ -46,9 +46,20 @@ export interface InvoicingEnablePrerequisites {
|
|
|
46
46
|
export declare function deriveInvoicingEnablePrerequisites(settings: InvoicingSettingsPayload | undefined, isQboConnected: boolean, qboAccountMappingKindOptions: InvoicingQboAccountMappingKindOption[]): InvoicingEnablePrerequisites;
|
|
47
47
|
export interface InvoicingSettingsHubView {
|
|
48
48
|
canEnableInvoicing: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Config-owned lists and fetch state the settings hub renders, folded in so the
|
|
51
|
+
* screen reads this view instead of `getInvoicingConfigView`.
|
|
52
|
+
*/
|
|
53
|
+
configFetchState: FetchState;
|
|
54
|
+
dunningScheduleActionOptions: InvoicingDunningActionOption[];
|
|
49
55
|
isEnablingInvoicing: boolean;
|
|
50
56
|
isQboConfigured: boolean;
|
|
51
57
|
isStripeConnected: boolean;
|
|
58
|
+
qboAccountMappingKindOptions: InvoicingQboAccountMappingKindOption[];
|
|
59
|
+
qboCustomerMatchingOptions: InvoicingNamedOption[];
|
|
60
|
+
qboSyncStatusOptions: InvoicingNamedOption[];
|
|
61
|
+
status: string | undefined;
|
|
62
|
+
configError?: ZeniAPIStatus;
|
|
52
63
|
}
|
|
53
64
|
/**
|
|
54
65
|
* The settings hub's composite of everything it derives from the store: whether
|
|
@@ -79,13 +79,20 @@ function deriveInvoicingEnablePrerequisites(settings, isQboConnected, qboAccount
|
|
|
79
79
|
* and QBO slices read here are only fetched once a settings screen is mounted.
|
|
80
80
|
*/
|
|
81
81
|
const getInvoicingSettingsHubView = (state) => {
|
|
82
|
-
const { enableState, qboAccountMappingKindOptions, status } = (0, invoicingConfigViewSelector_1.getInvoicingConfigView)(state);
|
|
82
|
+
const { dunningScheduleActionOptions, enableState, error: configError, fetchState: configFetchState, qboAccountMappingKindOptions, qboCustomerMatchingOptions, qboSyncStatusOptions, status, } = (0, invoicingConfigViewSelector_1.getInvoicingConfigView)(state);
|
|
83
83
|
const { canEnable, isQboConfigured, isStripeConnected } = deriveInvoicingEnablePrerequisites(state.invoicingSettingsViewState.settings, state.invoicingQboViewState.connection?.connected === true, qboAccountMappingKindOptions);
|
|
84
84
|
return {
|
|
85
85
|
canEnableInvoicing: status === 'settings' && canEnable,
|
|
86
|
+
configError,
|
|
87
|
+
configFetchState,
|
|
88
|
+
dunningScheduleActionOptions,
|
|
86
89
|
isEnablingInvoicing: enableState.fetchState === 'In-Progress',
|
|
90
|
+
qboAccountMappingKindOptions,
|
|
91
|
+
qboCustomerMatchingOptions,
|
|
92
|
+
qboSyncStatusOptions,
|
|
87
93
|
isQboConfigured,
|
|
88
94
|
isStripeConnected,
|
|
95
|
+
status,
|
|
89
96
|
};
|
|
90
97
|
};
|
|
91
98
|
exports.getInvoicingSettingsHubView = getInvoicingSettingsHubView;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "5.1.97-
|
|
3
|
+
"version": "5.1.97-betaAK2",
|
|
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",
|