@zeniai/client-epic-state 5.1.97-betaAK1 → 5.1.97-betaAK3
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/invoicingCatalogListView/invoicingCatalogListViewSelector.js +2 -1
- package/lib/esm/view/invoicing/invoicingSubscriptionListView/invoicingSubscriptionListViewSelector.js +4 -1
- package/lib/esm/view/invoicing/settingsView/settingsViewSelector.js +7 -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/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 +11 -1
- package/lib/view/invoicing/settingsView/settingsViewSelector.js +7 -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,
|
|
@@ -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,11 +72,17 @@ 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,
|
|
82
88
|
status,
|
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,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,10 +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[];
|
|
52
61
|
status: string | undefined;
|
|
62
|
+
configError?: ZeniAPIStatus;
|
|
53
63
|
}
|
|
54
64
|
/**
|
|
55
65
|
* The settings hub's composite of everything it derives from the store: whether
|
|
@@ -79,11 +79,17 @@ 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,
|
|
89
95
|
status,
|
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-betaAK3",
|
|
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",
|