@zeniai/client-epic-state 5.1.78-betaSI0 → 5.1.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/entity/invoicing/invoicingCommonPayload.d.ts +42 -0
- package/lib/entity/invoicing/invoicingCommonPayload.js +66 -1
- package/lib/entity/tenant/clearAllEpic.d.ts +2 -1
- package/lib/entity/tenant/clearAllEpic.js +2 -0
- package/lib/epic.d.ts +2 -1
- package/lib/epic.js +7 -1
- package/lib/esm/entity/invoicing/invoicingCommonPayload.js +61 -0
- package/lib/esm/entity/tenant/clearAllEpic.js +2 -0
- package/lib/esm/epic.js +7 -1
- package/lib/esm/index.js +7 -4
- package/lib/esm/reducer.js +3 -0
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +0 -1
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +0 -1
- package/lib/esm/view/expenseAutomationView/reducers/transactionsViewReducer.js +11 -56
- package/lib/esm/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +1 -2
- package/lib/esm/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +6 -1
- package/lib/esm/view/invoicing/createCreditNote/createCreditNotePayload.js +1 -8
- package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +4 -5
- package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +10 -11
- package/lib/esm/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +8 -10
- package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.js +2 -2
- package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer.js +1 -1
- package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +1 -1
- package/lib/esm/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js +43 -1
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +2 -5
- package/lib/esm/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +1 -2
- package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +7 -1
- package/lib/esm/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +3 -0
- package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.js +25 -0
- package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.js +15 -0
- package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.js +15 -0
- package/lib/esm/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.js +15 -0
- package/lib/esm/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.js +1 -0
- package/lib/esm/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +26 -0
- package/lib/esm/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +18 -0
- package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewPayload.js +47 -0
- package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewReducer.js +128 -0
- package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +20 -0
- package/lib/esm/view/invoicing/invoicingQboView/invoicingQboViewState.js +1 -0
- package/lib/esm/view/invoicing/issueCreditNote/issueCreditNotePayload.js +4 -11
- package/lib/esm/view/invoicing/recordPayment/recordPaymentFormConfig.js +0 -1
- package/lib/esm/view/invoicing/recordPayment/recordPaymentPayload.js +5 -14
- package/lib/index.d.ts +9 -4
- package/lib/index.js +66 -55
- package/lib/reducer.d.ts +3 -0
- package/lib/reducer.js +3 -0
- package/lib/view/expenseAutomationView/epics/transactionCategorization/backgroundRefetchReviewTabEpic.js +0 -1
- package/lib/view/expenseAutomationView/epics/transactionCategorization/fetchTransactionCategorizationEpic.js +0 -1
- package/lib/view/expenseAutomationView/payload/transactionCategorizationPayload.d.ts +0 -11
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.d.ts +1 -4
- package/lib/view/expenseAutomationView/reducers/transactionsViewReducer.js +12 -57
- package/lib/view/expenseAutomationView/selectorTypes/transactionsViewSelectorTypes.d.ts +0 -2
- package/lib/view/expenseAutomationView/selectors/transactionCategorizationSelector.js +1 -2
- package/lib/view/expenseAutomationView/types/transactionsViewState.d.ts +0 -11
- package/lib/view/invoicing/createCreditNote/createCreditNoteFormConfig.js +6 -1
- package/lib/view/invoicing/createCreditNote/createCreditNotePayload.js +1 -8
- package/lib/view/invoicing/createCreditNote/createCreditNoteState.d.ts +3 -1
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.d.ts +2 -1
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/catalogDetailEditPayload.js +4 -5
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewPayload.js +10 -11
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/editInvoicingCatalogItemDetailViewState.d.ts +10 -5
- package/lib/view/invoicing/editInvoicingCatalogItemDetailView/invoicingCatalogItemFormConfig.js +8 -10
- package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewPayload.js +2 -2
- package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewReducer.js +3 -3
- package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js +2 -2
- package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.d.ts +9 -2
- package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js +45 -0
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewPayload.js +2 -5
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/editInvoicingSubscriptionDetailViewState.d.ts +3 -1
- package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js +1 -2
- package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewPayload.d.ts +4 -1
- package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.d.ts +1 -1
- package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewReducer.js +6 -0
- package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.d.ts +4 -1
- package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewSelector.js +3 -0
- package/lib/view/invoicing/invoicingConfigView/invoicingConfigViewState.d.ts +4 -1
- package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.d.ts +6 -0
- package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboAccountsEpic.js +29 -0
- package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.d.ts +6 -0
- package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboClassesEpic.js +19 -0
- package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.d.ts +6 -0
- package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboConnectionEpic.js +19 -0
- package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.d.ts +6 -0
- package/lib/view/invoicing/invoicingQboView/epics/fetchInvoicingQboSyncHealthEpic.js +19 -0
- package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.d.ts +2 -0
- package/lib/view/invoicing/invoicingQboView/epics/invoicingQboViewActionType.js +2 -0
- package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.d.ts +6 -0
- package/lib/view/invoicing/invoicingQboView/epics/retryInvoicingQboSyncTaskEpic.js +30 -0
- package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.d.ts +6 -0
- package/lib/view/invoicing/invoicingQboView/epics/startInvoicingQboBackfillEpic.js +22 -0
- package/lib/view/invoicing/invoicingQboView/invoicingQboViewPayload.d.ts +79 -0
- package/lib/view/invoicing/invoicingQboView/invoicingQboViewPayload.js +52 -0
- package/lib/view/invoicing/invoicingQboView/invoicingQboViewReducer.d.ts +25 -0
- package/lib/view/invoicing/invoicingQboView/invoicingQboViewReducer.js +132 -0
- package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.d.ts +21 -0
- package/lib/view/invoicing/invoicingQboView/invoicingQboViewSelector.js +24 -0
- package/lib/view/invoicing/invoicingQboView/invoicingQboViewState.d.ts +14 -0
- package/lib/view/invoicing/invoicingQboView/invoicingQboViewState.js +2 -0
- package/lib/view/invoicing/issueCreditNote/issueCreditNotePayload.js +4 -11
- package/lib/view/invoicing/issueCreditNote/issueCreditNoteState.d.ts +3 -2
- package/lib/view/invoicing/recordPayment/recordPaymentFormConfig.js +0 -1
- package/lib/view/invoicing/recordPayment/recordPaymentPayload.js +5 -14
- package/lib/view/invoicing/recordPayment/recordPaymentState.d.ts +4 -2
- package/package.json +1 -1
- package/lib/esm/view/expenseAutomationView/types/transactionGroup.js +0 -21
- package/lib/esm/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.js +0 -44
- package/lib/view/expenseAutomationView/types/transactionGroup.d.ts +0 -21
- package/lib/view/expenseAutomationView/types/transactionGroup.js +0 -25
- package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.d.ts +0 -5
- package/lib/view/invoicing/editInvoicingCouponDetailView/invoicingCouponFormConfig.js +0 -48
package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewSelector.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getInvoicingCouponFormView = exports.getEditInvoicingCouponDetailViewState = void 0;
|
|
4
4
|
const couponConstants_1 = require("../../../entity/invoicing/coupon/couponConstants");
|
|
5
5
|
const couponSelector_1 = require("../../../entity/invoicing/coupon/couponSelector");
|
|
6
|
-
const
|
|
6
|
+
const editInvoicingCouponDetailViewState_1 = require("./editInvoicingCouponDetailViewState");
|
|
7
7
|
/**
|
|
8
8
|
* Bundled view for the discount create/edit form: the save fetch state/error,
|
|
9
9
|
* the id of the coupon last saved, and — when a `couponId` is passed (edit
|
|
@@ -33,7 +33,7 @@ const getInvoicingCouponFormView = (state, couponId) => {
|
|
|
33
33
|
const { editDraftById, newCouponDraft } = state.editInvoicingCouponDetailViewState;
|
|
34
34
|
const localData = couponId != null
|
|
35
35
|
? (editDraftById[couponId] ??
|
|
36
|
-
(0,
|
|
36
|
+
(0, editInvoicingCouponDetailViewState_1.entityToInvoicingCouponFormLocalData)(base.coupon))
|
|
37
37
|
: newCouponDraft;
|
|
38
38
|
return {
|
|
39
39
|
...base,
|
package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
|
+
import { Amount } from '../../../commonStateTypes/amount';
|
|
1
2
|
import { FetchedState, ID } from '../../../commonStateTypes/common';
|
|
3
|
+
import { InvoicingCoupon } from '../../../entity/invoicing/coupon/couponState';
|
|
2
4
|
/**
|
|
3
5
|
* Draft form state for the create/edit discount-coupon form. Held in CES so the
|
|
4
6
|
* form flows its data from here (mirrors the customer form pattern). Dates are
|
|
5
|
-
* stored as ISO `YYYY-MM-DD` strings;
|
|
7
|
+
* stored as ISO `YYYY-MM-DD` strings; the discount amount as an `Amount` (as on
|
|
8
|
+
* the coupon entity); remaining quantities as raw strings.
|
|
6
9
|
*/
|
|
7
10
|
export interface InvoicingCouponFormLocalData {
|
|
8
11
|
applyOn: string;
|
|
9
12
|
couponCode: string;
|
|
10
13
|
couponId: string;
|
|
11
|
-
discountAmount: string;
|
|
12
14
|
discountPercentage: string;
|
|
13
15
|
discountQuantity: string;
|
|
14
16
|
discountType: string;
|
|
@@ -21,9 +23,14 @@ export interface InvoicingCouponFormLocalData {
|
|
|
21
23
|
periodUnit: string;
|
|
22
24
|
validFrom: string;
|
|
23
25
|
validTill: string;
|
|
26
|
+
/** Unset until the user enters one, so an explicit 0 stays distinguishable. */
|
|
27
|
+
discountAmount?: Amount;
|
|
24
28
|
}
|
|
25
29
|
export interface EditInvoicingCouponDetailViewState extends FetchedState {
|
|
26
30
|
editDraftById: Record<ID, InvoicingCouponFormLocalData>;
|
|
27
31
|
newCouponDraft: InvoicingCouponFormLocalData;
|
|
28
32
|
savedCouponId?: ID;
|
|
29
33
|
}
|
|
34
|
+
export declare const initialInvoicingCouponFormLocalData: InvoicingCouponFormLocalData;
|
|
35
|
+
/** Seed the form draft from an existing coupon entity (edit mode). */
|
|
36
|
+
export declare const entityToInvoicingCouponFormLocalData: (coupon?: InvoicingCoupon) => InvoicingCouponFormLocalData;
|
package/lib/view/invoicing/editInvoicingCouponDetailView/editInvoicingCouponDetailViewState.js
CHANGED
|
@@ -1,2 +1,47 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.entityToInvoicingCouponFormLocalData = exports.initialInvoicingCouponFormLocalData = void 0;
|
|
4
|
+
exports.initialInvoicingCouponFormLocalData = {
|
|
5
|
+
applyOn: 'invoice_amount',
|
|
6
|
+
couponCode: '',
|
|
7
|
+
couponId: '',
|
|
8
|
+
discountPercentage: '',
|
|
9
|
+
discountQuantity: '',
|
|
10
|
+
discountType: 'percentage',
|
|
11
|
+
durationType: 'one_time',
|
|
12
|
+
invoiceName: '',
|
|
13
|
+
invoiceNotes: '',
|
|
14
|
+
maxRedemptions: '',
|
|
15
|
+
name: '',
|
|
16
|
+
period: '',
|
|
17
|
+
periodUnit: 'month',
|
|
18
|
+
validFrom: '',
|
|
19
|
+
validTill: '',
|
|
20
|
+
};
|
|
21
|
+
/** Seed the form draft from an existing coupon entity (edit mode). */
|
|
22
|
+
const entityToInvoicingCouponFormLocalData = (coupon) => {
|
|
23
|
+
if (coupon == null) {
|
|
24
|
+
return { ...exports.initialInvoicingCouponFormLocalData };
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
applyOn: coupon.applyOn ?? 'invoice_amount',
|
|
28
|
+
couponCode: coupon.couponCode ?? '',
|
|
29
|
+
couponId: coupon.id ?? '',
|
|
30
|
+
discountAmount: coupon.discountAmount,
|
|
31
|
+
discountPercentage: coupon.discountPercentage != null
|
|
32
|
+
? String(coupon.discountPercentage)
|
|
33
|
+
: '',
|
|
34
|
+
discountQuantity: coupon.discountQuantity != null ? String(coupon.discountQuantity) : '',
|
|
35
|
+
discountType: coupon.discountType ?? 'percentage',
|
|
36
|
+
durationType: coupon.durationType ?? 'one_time',
|
|
37
|
+
invoiceName: coupon.invoiceName ?? '',
|
|
38
|
+
invoiceNotes: coupon.invoiceNotes ?? '',
|
|
39
|
+
maxRedemptions: coupon.maxRedemptions != null ? String(coupon.maxRedemptions) : '',
|
|
40
|
+
name: coupon.name ?? '',
|
|
41
|
+
period: coupon.period != null ? String(coupon.period) : '',
|
|
42
|
+
periodUnit: coupon.periodUnit ?? 'month',
|
|
43
|
+
validFrom: coupon.validFrom != null ? coupon.validFrom.format('YYYY-MM-DD') : '',
|
|
44
|
+
validTill: coupon.validTill != null ? coupon.validTill.format('YYYY-MM-DD') : '',
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
exports.entityToInvoicingCouponFormLocalData = entityToInvoicingCouponFormLocalData;
|
|
@@ -27,8 +27,7 @@ const localDataToSaveInvoicingSubscriptionPayload = (localData, shippingAddress)
|
|
|
27
27
|
quantity: 1,
|
|
28
28
|
})),
|
|
29
29
|
];
|
|
30
|
-
const setupFee = localData.setupFee
|
|
31
|
-
const parsedSetupFee = Number.parseFloat(setupFee);
|
|
30
|
+
const setupFee = localData.setupFee?.amount;
|
|
32
31
|
const poNumber = localData.poNumber.trim();
|
|
33
32
|
const trialEnd = localData.trialEnd.trim();
|
|
34
33
|
return {
|
|
@@ -38,9 +37,7 @@ const localDataToSaveInvoicingSubscriptionPayload = (localData, shippingAddress)
|
|
|
38
37
|
currency_code: localData.preferredCurrencyCode,
|
|
39
38
|
customer_id: localData.customerId,
|
|
40
39
|
subscription_items: items,
|
|
41
|
-
...(setupFee
|
|
42
|
-
? { setup_fee: parsedSetupFee }
|
|
43
|
-
: {}),
|
|
40
|
+
...(setupFee != null ? { setup_fee: setupFee } : {}),
|
|
44
41
|
...(poNumber !== '' ? { po_number: poNumber } : {}),
|
|
45
42
|
...(trialEnd !== '' ? { trial_end: trialEnd } : {}),
|
|
46
43
|
...(localData.couponId !== '' ? { coupon_ids: [localData.couponId] } : {}),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Amount } from '../../../commonStateTypes/amount';
|
|
1
2
|
import { FetchedState, ID } from '../../../commonStateTypes/common';
|
|
2
3
|
/**
|
|
3
4
|
* Draft form state for the create/edit subscription form. Held in CES so the
|
|
@@ -17,8 +18,9 @@ export interface InvoicingSubscriptionFormLocalData {
|
|
|
17
18
|
planQuantity: number;
|
|
18
19
|
poNumber: string;
|
|
19
20
|
preferredCurrencyCode: string;
|
|
20
|
-
setupFee: string;
|
|
21
21
|
trialEnd: string;
|
|
22
|
+
/** Unset until the user enters one, so an explicit 0 stays distinguishable. */
|
|
23
|
+
setupFee?: Amount;
|
|
22
24
|
}
|
|
23
25
|
export interface EditInvoicingSubscriptionDetailViewState extends FetchedState {
|
|
24
26
|
editDraftById: Record<ID, InvoicingSubscriptionFormLocalData>;
|
package/lib/view/invoicing/editInvoicingSubscriptionDetailView/invoicingSubscriptionFormConfig.js
CHANGED
|
@@ -49,7 +49,6 @@ exports.initialInvoicingSubscriptionFormLocalData = {
|
|
|
49
49
|
planQuantity: 1,
|
|
50
50
|
poNumber: '',
|
|
51
51
|
preferredCurrencyCode: 'USD',
|
|
52
|
-
setupFee: '',
|
|
53
52
|
trialEnd: '',
|
|
54
53
|
};
|
|
55
54
|
/** Seed the form draft from an existing subscription entity (edit mode). */
|
|
@@ -71,7 +70,7 @@ const entityToInvoicingSubscriptionFormLocalData = (subscription) => {
|
|
|
71
70
|
planQuantity: planItem?.quantity ?? 1,
|
|
72
71
|
poNumber: subscription.poNumber ?? '',
|
|
73
72
|
preferredCurrencyCode: subscription.currencyCode ?? 'USD',
|
|
74
|
-
setupFee:
|
|
73
|
+
setupFee: subscription.setupFee,
|
|
75
74
|
trialEnd: subscription.trialEnd != null
|
|
76
75
|
? subscription.trialEnd.format('YYYY-MM-DD')
|
|
77
76
|
: '',
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AuditLogEntityRouteOptionWire, AuditLogListSortFieldOptionWire, AuditLogSourceLabelOptionWire, InvoicingCatalogLifecycleActionOptionWire, InvoicingDunningActionOption, InvoicingNamedOptionWire, InvoicingSubscriptionEditFieldOptionWire, InvoicingSubscriptionLifecycleActionOptionWire } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
1
|
+
import { AuditLogEntityRouteOptionWire, AuditLogListSortFieldOptionWire, AuditLogSourceLabelOptionWire, InvoicingCatalogLifecycleActionOptionWire, InvoicingDunningActionOption, InvoicingNamedOptionWire, InvoicingQboAccountMappingKindOptionWire, InvoicingSubscriptionEditFieldOptionWire, InvoicingSubscriptionLifecycleActionOptionWire } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
2
2
|
import { ZeniAPIResponse } from '../../../responsePayload';
|
|
3
3
|
/**
|
|
4
4
|
* Wire payload of the invoicing config API (GET/PUT `/1.0/config`). Follows
|
|
@@ -27,6 +27,9 @@ export interface InvoicingConfigPayload {
|
|
|
27
27
|
invoicing_tos_acceptance_user_agent?: string | null;
|
|
28
28
|
invoicing_tos_acceptance_user_id?: string | null;
|
|
29
29
|
is_invoicing_settings_seeded?: boolean;
|
|
30
|
+
qbo_account_mapping_kind_options?: InvoicingQboAccountMappingKindOptionWire[];
|
|
31
|
+
qbo_customer_matching_options?: InvoicingNamedOptionWire[];
|
|
32
|
+
qbo_sync_status_options?: InvoicingNamedOptionWire[];
|
|
30
33
|
updated_at?: string | null;
|
|
31
34
|
}
|
|
32
35
|
export type InvoicingConfigResponse = ZeniAPIResponse<InvoicingConfigPayload>;
|
|
@@ -2,7 +2,7 @@ import { ZeniAPIStatus } from '../../../responsePayload';
|
|
|
2
2
|
import { InvoicingConfigPayload } from './invoicingConfigViewPayload';
|
|
3
3
|
import { InvoicingConfigViewState } from './invoicingConfigViewState';
|
|
4
4
|
export declare const initialState: InvoicingConfigViewState;
|
|
5
|
-
export declare function mapInvoicingConfigPayloadToState(payload: InvoicingConfigPayload): Pick<InvoicingConfigViewState, 'auditLogEntityRouteOptions' | 'auditLogListSortFieldOptions' | 'auditLogSourceLabels' | 'dunningScheduleActionOptions' | 'subscriptionLifecycleActionOptions' | 'subscriptionCommercialEditAllowedFromStatuses' | 'subscriptionMetadataEditAllowedFromStatuses' | 'subscriptionEditFieldOptions' | 'subscriptionCancelTimingOptions' | 'subscriptionChangeOptionOptions' | 'catalogItemLifecycleActionOptions' | 'catalogProductLifecycleActionOptions' | 'discountLifecycleActionOptions' | 'isInvoicingEnabled' | 'isInvoicingTosAccepted' | 'invoicingTosAcceptanceIp' | 'invoicingTosAcceptanceTime' | 'invoicingTosAcceptanceUserAgent' | 'invoicingTosAcceptanceUserId' | 'isInvoicingSettingsSeeded'>;
|
|
5
|
+
export declare function mapInvoicingConfigPayloadToState(payload: InvoicingConfigPayload): Pick<InvoicingConfigViewState, 'auditLogEntityRouteOptions' | 'auditLogListSortFieldOptions' | 'auditLogSourceLabels' | 'dunningScheduleActionOptions' | 'subscriptionLifecycleActionOptions' | 'subscriptionCommercialEditAllowedFromStatuses' | 'subscriptionMetadataEditAllowedFromStatuses' | 'subscriptionEditFieldOptions' | 'subscriptionCancelTimingOptions' | 'subscriptionChangeOptionOptions' | 'catalogItemLifecycleActionOptions' | 'catalogProductLifecycleActionOptions' | 'discountLifecycleActionOptions' | 'qboAccountMappingKindOptions' | 'qboCustomerMatchingOptions' | 'qboSyncStatusOptions' | 'isInvoicingEnabled' | 'isInvoicingTosAccepted' | 'invoicingTosAcceptanceIp' | 'invoicingTosAcceptanceTime' | 'invoicingTosAcceptanceUserAgent' | 'invoicingTosAcceptanceUserId' | 'isInvoicingSettingsSeeded'>;
|
|
6
6
|
export declare const fetchInvoicingConfig: import("@reduxjs/toolkit").ActionCreatorWithPreparedPayload<[payload?: {
|
|
7
7
|
cacheOverride?: boolean;
|
|
8
8
|
} | undefined], {
|
|
@@ -23,6 +23,9 @@ exports.initialState = {
|
|
|
23
23
|
catalogItemLifecycleActionOptions: [],
|
|
24
24
|
catalogProductLifecycleActionOptions: [],
|
|
25
25
|
discountLifecycleActionOptions: [],
|
|
26
|
+
qboAccountMappingKindOptions: [],
|
|
27
|
+
qboCustomerMatchingOptions: [],
|
|
28
|
+
qboSyncStatusOptions: [],
|
|
26
29
|
isInvoicingEnabled: undefined,
|
|
27
30
|
isInvoicingTosAccepted: undefined,
|
|
28
31
|
invoicingTosAcceptanceIp: undefined,
|
|
@@ -58,6 +61,9 @@ function mapInvoicingConfigPayloadToState(payload) {
|
|
|
58
61
|
catalogItemLifecycleActionOptions: (payload.catalog_item_lifecycle_action_options ?? []).map((option) => (0, invoicingCommonPayload_1.toInvoicingCatalogItemLifecycleActionOption)(option)),
|
|
59
62
|
catalogProductLifecycleActionOptions: (payload.catalog_product_lifecycle_action_options ?? []).map((option) => (0, invoicingCommonPayload_1.toInvoicingCatalogProductLifecycleActionOption)(option)),
|
|
60
63
|
discountLifecycleActionOptions: (payload.discount_lifecycle_action_options ?? []).map((option) => (0, invoicingCommonPayload_1.toInvoicingDiscountLifecycleActionOption)(option)),
|
|
64
|
+
qboAccountMappingKindOptions: (payload.qbo_account_mapping_kind_options ?? []).map(invoicingCommonPayload_1.toInvoicingQboAccountMappingKindOption),
|
|
65
|
+
qboCustomerMatchingOptions: (payload.qbo_customer_matching_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
|
|
66
|
+
qboSyncStatusOptions: (payload.qbo_sync_status_options ?? []).map(invoicingCommonPayload_1.toInvoicingNamedOption),
|
|
61
67
|
isInvoicingEnabled: payload.is_invoicing_enabled,
|
|
62
68
|
isInvoicingTosAccepted: payload.is_invoicing_tos_accepted,
|
|
63
69
|
invoicingTosAcceptanceIp: payload.invoicing_tos_acceptance_ip ?? undefined,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { FetchState, FetchStateAndError } from '../../../commonStateTypes/common';
|
|
2
2
|
import { InvoicingDunningActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
3
|
-
import type { AuditLogEntityRouteOption, AuditLogListSortFieldOption, AuditLogSourceLabelOption, InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingDiscountLifecycleActionOption, InvoicingNamedOption, InvoicingSubscriptionEditFieldOption, InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
3
|
+
import type { AuditLogEntityRouteOption, AuditLogListSortFieldOption, AuditLogSourceLabelOption, InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingDiscountLifecycleActionOption, InvoicingNamedOption, InvoicingQboAccountMappingKindOption, InvoicingSubscriptionEditFieldOption, InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
4
4
|
import { RootState } from '../../../reducer';
|
|
5
5
|
import { ZeniAPIStatus } from '../../../responsePayload';
|
|
6
6
|
import { InvoicingOnboardingStatus } from './invoicingConfigViewPayload';
|
|
@@ -15,6 +15,9 @@ export interface InvoicingConfigView {
|
|
|
15
15
|
dunningScheduleActionOptions: InvoicingDunningActionOption[];
|
|
16
16
|
enableState: FetchStateAndError;
|
|
17
17
|
fetchState: FetchState;
|
|
18
|
+
qboAccountMappingKindOptions: InvoicingQboAccountMappingKindOption[];
|
|
19
|
+
qboCustomerMatchingOptions: InvoicingNamedOption[];
|
|
20
|
+
qboSyncStatusOptions: InvoicingNamedOption[];
|
|
18
21
|
subscriptionCancelTimingOptions: InvoicingNamedOption[];
|
|
19
22
|
subscriptionChangeOptionOptions: InvoicingNamedOption[];
|
|
20
23
|
subscriptionCommercialEditAllowedFromStatuses: string[];
|
|
@@ -26,6 +26,9 @@ const getInvoicingConfigView = (state) => {
|
|
|
26
26
|
catalogItemLifecycleActionOptions: configState.catalogItemLifecycleActionOptions,
|
|
27
27
|
catalogProductLifecycleActionOptions: configState.catalogProductLifecycleActionOptions,
|
|
28
28
|
discountLifecycleActionOptions: configState.discountLifecycleActionOptions,
|
|
29
|
+
qboAccountMappingKindOptions: configState.qboAccountMappingKindOptions,
|
|
30
|
+
qboCustomerMatchingOptions: configState.qboCustomerMatchingOptions,
|
|
31
|
+
qboSyncStatusOptions: configState.qboSyncStatusOptions,
|
|
29
32
|
error: configState.error,
|
|
30
33
|
fetchState: configState.fetchState,
|
|
31
34
|
isInvoicingEnabled: configState.isInvoicingEnabled,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { FetchStateAndError, FetchedState } from '../../../commonStateTypes/common';
|
|
2
|
-
import type { AuditLogEntityRouteOption, AuditLogListSortFieldOption, AuditLogSourceLabelOption, InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingDiscountLifecycleActionOption, InvoicingNamedOption, InvoicingSubscriptionEditFieldOption, InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
2
|
+
import type { AuditLogEntityRouteOption, AuditLogListSortFieldOption, AuditLogSourceLabelOption, InvoicingCatalogItemLifecycleAction, InvoicingCatalogLifecycleActionOption, InvoicingCatalogProductLifecycleAction, InvoicingDiscountLifecycleActionOption, InvoicingNamedOption, InvoicingQboAccountMappingKindOption, InvoicingSubscriptionEditFieldOption, InvoicingSubscriptionLifecycleActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
3
3
|
import { InvoicingDunningActionOption } from '../../../entity/invoicing/invoicingCommonPayload';
|
|
4
4
|
export interface InvoicingConfigViewState extends FetchedState {
|
|
5
5
|
acceptTermsFetchState: FetchStateAndError;
|
|
@@ -11,6 +11,9 @@ export interface InvoicingConfigViewState extends FetchedState {
|
|
|
11
11
|
discountLifecycleActionOptions: InvoicingDiscountLifecycleActionOption[];
|
|
12
12
|
dunningScheduleActionOptions: InvoicingDunningActionOption[];
|
|
13
13
|
enableFetchState: FetchStateAndError;
|
|
14
|
+
qboAccountMappingKindOptions: InvoicingQboAccountMappingKindOption[];
|
|
15
|
+
qboCustomerMatchingOptions: InvoicingNamedOption[];
|
|
16
|
+
qboSyncStatusOptions: InvoicingNamedOption[];
|
|
14
17
|
subscriptionCancelTimingOptions: InvoicingNamedOption[];
|
|
15
18
|
subscriptionChangeOptionOptions: InvoicingNamedOption[];
|
|
16
19
|
subscriptionCommercialEditAllowedFromStatuses: string[];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RootState } from '../../../../reducer';
|
|
4
|
+
import { ZeniAPI } from '../../../../zeniAPI';
|
|
5
|
+
import { InvoicingQboViewActionType } from './invoicingQboViewActionType';
|
|
6
|
+
export declare const fetchInvoicingQboAccountsEpic: (actions$: ActionsObservable<InvoicingQboViewActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<InvoicingQboViewActionType>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchInvoicingQboAccountsEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const responsePayload_1 = require("../../../../responsePayload");
|
|
7
|
+
const invoicingQboViewPayload_1 = require("../invoicingQboViewPayload");
|
|
8
|
+
const invoicingQboViewReducer_1 = require("../invoicingQboViewReducer");
|
|
9
|
+
const fetchInvoicingQboAccountsEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(invoicingQboViewReducer_1.fetchInvoicingQboAccounts.match), (0, operators_1.mergeMap)((action) => {
|
|
10
|
+
const { accountTypes } = action.payload;
|
|
11
|
+
const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/qbo/accounts?account_types=${encodeURIComponent(accountTypes)}`;
|
|
12
|
+
return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.map)((response) => {
|
|
13
|
+
if ((0, responsePayload_1.isSuccessResponse)(response)) {
|
|
14
|
+
return (0, invoicingQboViewReducer_1.updateInvoicingQboAccounts)({
|
|
15
|
+
accountTypes,
|
|
16
|
+
accounts: (0, invoicingQboViewPayload_1.mapInvoicingQboAccountOptions)(response.data?.accounts ?? []),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return (0, invoicingQboViewReducer_1.updateInvoicingQboAccountsFailure)({
|
|
20
|
+
accountTypes,
|
|
21
|
+
status: response.status,
|
|
22
|
+
});
|
|
23
|
+
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, invoicingQboViewReducer_1.updateInvoicingQboAccountsFailure)({
|
|
24
|
+
accountTypes,
|
|
25
|
+
status: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch QBO accounts REST API call errored out ' +
|
|
26
|
+
JSON.stringify(error)),
|
|
27
|
+
}))));
|
|
28
|
+
}));
|
|
29
|
+
exports.fetchInvoicingQboAccountsEpic = fetchInvoicingQboAccountsEpic;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RootState } from '../../../../reducer';
|
|
4
|
+
import { ZeniAPI } from '../../../../zeniAPI';
|
|
5
|
+
import { InvoicingQboViewActionType } from './invoicingQboViewActionType';
|
|
6
|
+
export declare const fetchInvoicingQboClassesEpic: (actions$: ActionsObservable<InvoicingQboViewActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<InvoicingQboViewActionType>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchInvoicingQboClassesEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const responsePayload_1 = require("../../../../responsePayload");
|
|
7
|
+
const invoicingQboViewPayload_1 = require("../invoicingQboViewPayload");
|
|
8
|
+
const invoicingQboViewReducer_1 = require("../invoicingQboViewReducer");
|
|
9
|
+
const fetchInvoicingQboClassesEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(invoicingQboViewReducer_1.fetchInvoicingQboClasses.match), (0, operators_1.switchMap)(() => {
|
|
10
|
+
const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/qbo/classes`;
|
|
11
|
+
return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.map)((response) => {
|
|
12
|
+
if ((0, responsePayload_1.isSuccessResponse)(response)) {
|
|
13
|
+
return (0, invoicingQboViewReducer_1.updateInvoicingQboClasses)((0, invoicingQboViewPayload_1.mapInvoicingQboAccountOptions)(response.data?.accounts ?? []));
|
|
14
|
+
}
|
|
15
|
+
return (0, invoicingQboViewReducer_1.updateInvoicingQboClassesFailure)(response.status);
|
|
16
|
+
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, invoicingQboViewReducer_1.updateInvoicingQboClassesFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch QBO classes REST API call errored out ' +
|
|
17
|
+
JSON.stringify(error))))));
|
|
18
|
+
}));
|
|
19
|
+
exports.fetchInvoicingQboClassesEpic = fetchInvoicingQboClassesEpic;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RootState } from '../../../../reducer';
|
|
4
|
+
import { ZeniAPI } from '../../../../zeniAPI';
|
|
5
|
+
import { InvoicingQboViewActionType } from './invoicingQboViewActionType';
|
|
6
|
+
export declare const fetchInvoicingQboConnectionEpic: (actions$: ActionsObservable<InvoicingQboViewActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<InvoicingQboViewActionType>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchInvoicingQboConnectionEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const responsePayload_1 = require("../../../../responsePayload");
|
|
7
|
+
const invoicingQboViewPayload_1 = require("../invoicingQboViewPayload");
|
|
8
|
+
const invoicingQboViewReducer_1 = require("../invoicingQboViewReducer");
|
|
9
|
+
const fetchInvoicingQboConnectionEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(invoicingQboViewReducer_1.fetchInvoicingQboConnection.match), (0, operators_1.switchMap)(() => {
|
|
10
|
+
const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/qbo/connection`;
|
|
11
|
+
return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.map)((response) => {
|
|
12
|
+
if ((0, responsePayload_1.isSuccessResponse)(response)) {
|
|
13
|
+
return (0, invoicingQboViewReducer_1.updateInvoicingQboConnection)((0, invoicingQboViewPayload_1.mapInvoicingQboConnection)(response.data ?? { connected: false }));
|
|
14
|
+
}
|
|
15
|
+
return (0, invoicingQboViewReducer_1.updateInvoicingQboConnectionFailure)(response.status);
|
|
16
|
+
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, invoicingQboViewReducer_1.updateInvoicingQboConnectionFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch QBO connection REST API call errored out ' +
|
|
17
|
+
JSON.stringify(error))))));
|
|
18
|
+
}));
|
|
19
|
+
exports.fetchInvoicingQboConnectionEpic = fetchInvoicingQboConnectionEpic;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RootState } from '../../../../reducer';
|
|
4
|
+
import { ZeniAPI } from '../../../../zeniAPI';
|
|
5
|
+
import { InvoicingQboViewActionType } from './invoicingQboViewActionType';
|
|
6
|
+
export declare const fetchInvoicingQboSyncHealthEpic: (actions$: ActionsObservable<InvoicingQboViewActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<InvoicingQboViewActionType>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fetchInvoicingQboSyncHealthEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const responsePayload_1 = require("../../../../responsePayload");
|
|
7
|
+
const invoicingQboViewPayload_1 = require("../invoicingQboViewPayload");
|
|
8
|
+
const invoicingQboViewReducer_1 = require("../invoicingQboViewReducer");
|
|
9
|
+
const fetchInvoicingQboSyncHealthEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(invoicingQboViewReducer_1.fetchInvoicingQboSyncHealth.match), (0, operators_1.switchMap)(() => {
|
|
10
|
+
const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/qbo/sync-health`;
|
|
11
|
+
return zeniAPI.getJSON(apiUrl).pipe((0, operators_1.map)((response) => {
|
|
12
|
+
if ((0, responsePayload_1.isSuccessResponse)(response)) {
|
|
13
|
+
return (0, invoicingQboViewReducer_1.updateInvoicingQboSyncHealth)((0, invoicingQboViewPayload_1.mapInvoicingQboSyncHealth)(response.data ?? {}));
|
|
14
|
+
}
|
|
15
|
+
return (0, invoicingQboViewReducer_1.updateInvoicingQboSyncHealthFailure)(response.status);
|
|
16
|
+
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, invoicingQboViewReducer_1.updateInvoicingQboSyncHealthFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Fetch QBO sync health REST API call errored out ' +
|
|
17
|
+
JSON.stringify(error))))));
|
|
18
|
+
}));
|
|
19
|
+
exports.fetchInvoicingQboSyncHealthEpic = fetchInvoicingQboSyncHealthEpic;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { fetchInvoicingQboAccounts, fetchInvoicingQboClasses, fetchInvoicingQboConnection, fetchInvoicingQboSyncHealth, retryInvoicingQboSyncTask, retryInvoicingQboSyncTaskFailure, retryInvoicingQboSyncTaskSuccess, startInvoicingQboBackfill, startInvoicingQboBackfillFailure, startInvoicingQboBackfillSuccess, updateInvoicingQboAccounts, updateInvoicingQboAccountsFailure, updateInvoicingQboClasses, updateInvoicingQboClassesFailure, updateInvoicingQboConnection, updateInvoicingQboConnectionFailure, updateInvoicingQboSyncHealth, updateInvoicingQboSyncHealthFailure } from '../invoicingQboViewReducer';
|
|
2
|
+
export type InvoicingQboViewActionType = ReturnType<typeof fetchInvoicingQboConnection> | ReturnType<typeof updateInvoicingQboConnection> | ReturnType<typeof updateInvoicingQboConnectionFailure> | ReturnType<typeof fetchInvoicingQboAccounts> | ReturnType<typeof updateInvoicingQboAccounts> | ReturnType<typeof updateInvoicingQboAccountsFailure> | ReturnType<typeof fetchInvoicingQboClasses> | ReturnType<typeof updateInvoicingQboClasses> | ReturnType<typeof updateInvoicingQboClassesFailure> | ReturnType<typeof fetchInvoicingQboSyncHealth> | ReturnType<typeof updateInvoicingQboSyncHealth> | ReturnType<typeof updateInvoicingQboSyncHealthFailure> | ReturnType<typeof retryInvoicingQboSyncTask> | ReturnType<typeof retryInvoicingQboSyncTaskSuccess> | ReturnType<typeof retryInvoicingQboSyncTaskFailure> | ReturnType<typeof startInvoicingQboBackfill> | ReturnType<typeof startInvoicingQboBackfillSuccess> | ReturnType<typeof startInvoicingQboBackfillFailure>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RootState } from '../../../../reducer';
|
|
4
|
+
import { ZeniAPI } from '../../../../zeniAPI';
|
|
5
|
+
import { InvoicingQboViewActionType } from './invoicingQboViewActionType';
|
|
6
|
+
export declare const retryInvoicingQboSyncTaskEpic: (actions$: ActionsObservable<InvoicingQboViewActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<InvoicingQboViewActionType>;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.retryInvoicingQboSyncTaskEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const responsePayload_1 = require("../../../../responsePayload");
|
|
7
|
+
const invoicingQboViewReducer_1 = require("../invoicingQboViewReducer");
|
|
8
|
+
const retryInvoicingQboSyncTaskEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(invoicingQboViewReducer_1.retryInvoicingQboSyncTask.match), (0, operators_1.mergeMap)((action) => {
|
|
9
|
+
const { taskId } = action.payload;
|
|
10
|
+
const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/qbo/sync-tasks/${encodeURIComponent(taskId)}/retry`;
|
|
11
|
+
return zeniAPI
|
|
12
|
+
.postAndGetJSON(apiUrl, {})
|
|
13
|
+
.pipe((0, operators_1.mergeMap)((response) => {
|
|
14
|
+
if ((0, responsePayload_1.isSuccessResponse)(response)) {
|
|
15
|
+
return (0, rxjs_1.of)((0, invoicingQboViewReducer_1.retryInvoicingQboSyncTaskSuccess)({
|
|
16
|
+
status: response.data?.status ?? '',
|
|
17
|
+
taskId: response.data?.task_id ?? taskId,
|
|
18
|
+
}), (0, invoicingQboViewReducer_1.fetchInvoicingQboSyncHealth)());
|
|
19
|
+
}
|
|
20
|
+
return (0, rxjs_1.of)((0, invoicingQboViewReducer_1.retryInvoicingQboSyncTaskFailure)({
|
|
21
|
+
status: response.status,
|
|
22
|
+
taskId,
|
|
23
|
+
}));
|
|
24
|
+
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, invoicingQboViewReducer_1.retryInvoicingQboSyncTaskFailure)({
|
|
25
|
+
status: (0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Retry QBO sync task REST API call errored out ' +
|
|
26
|
+
JSON.stringify(error)),
|
|
27
|
+
taskId,
|
|
28
|
+
}))));
|
|
29
|
+
}));
|
|
30
|
+
exports.retryInvoicingQboSyncTaskEpic = retryInvoicingQboSyncTaskEpic;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ActionsObservable, StateObservable } from 'redux-observable';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { RootState } from '../../../../reducer';
|
|
4
|
+
import { ZeniAPI } from '../../../../zeniAPI';
|
|
5
|
+
import { InvoicingQboViewActionType } from './invoicingQboViewActionType';
|
|
6
|
+
export declare const startInvoicingQboBackfillEpic: (actions$: ActionsObservable<InvoicingQboViewActionType>, _state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<InvoicingQboViewActionType>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.startInvoicingQboBackfillEpic = void 0;
|
|
4
|
+
const rxjs_1 = require("rxjs");
|
|
5
|
+
const operators_1 = require("rxjs/operators");
|
|
6
|
+
const responsePayload_1 = require("../../../../responsePayload");
|
|
7
|
+
const invoicingQboViewReducer_1 = require("../invoicingQboViewReducer");
|
|
8
|
+
const startInvoicingQboBackfillEpic = (actions$, _state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(invoicingQboViewReducer_1.startInvoicingQboBackfill.match), (0, operators_1.switchMap)((action) => {
|
|
9
|
+
const apiUrl = `${zeniAPI.apiEndPoints.invoicingMicroServiceBaseUrl}/1.0/qbo/backfill`;
|
|
10
|
+
return zeniAPI
|
|
11
|
+
.postAndGetJSON(apiUrl, {
|
|
12
|
+
start_date: action.payload.startDate,
|
|
13
|
+
})
|
|
14
|
+
.pipe((0, operators_1.mergeMap)((response) => {
|
|
15
|
+
if ((0, responsePayload_1.isSuccessResponse)(response)) {
|
|
16
|
+
return (0, rxjs_1.of)((0, invoicingQboViewReducer_1.startInvoicingQboBackfillSuccess)(), (0, invoicingQboViewReducer_1.fetchInvoicingQboSyncHealth)());
|
|
17
|
+
}
|
|
18
|
+
return (0, rxjs_1.of)((0, invoicingQboViewReducer_1.startInvoicingQboBackfillFailure)(response.status));
|
|
19
|
+
}), (0, operators_1.catchError)((error) => (0, rxjs_1.of)((0, invoicingQboViewReducer_1.startInvoicingQboBackfillFailure)((0, responsePayload_1.createZeniAPIStatus)('Unexpected Error', 'Start QBO backfill REST API call errored out ' +
|
|
20
|
+
JSON.stringify(error))))));
|
|
21
|
+
}));
|
|
22
|
+
exports.startInvoicingQboBackfillEpic = startInvoicingQboBackfillEpic;
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { ZeniAPIResponse } from '../../../responsePayload';
|
|
2
|
+
export interface InvoicingQboConnectionPayload {
|
|
3
|
+
connected: boolean;
|
|
4
|
+
company_name?: string | null;
|
|
5
|
+
connection_id?: string | null;
|
|
6
|
+
realm_id?: string | null;
|
|
7
|
+
}
|
|
8
|
+
export interface InvoicingQboConnection {
|
|
9
|
+
connected: boolean;
|
|
10
|
+
companyName?: string;
|
|
11
|
+
connectionId?: string;
|
|
12
|
+
realmId?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function mapInvoicingQboConnection(payload: InvoicingQboConnectionPayload): InvoicingQboConnection;
|
|
15
|
+
/**
|
|
16
|
+
* A single row from the QBO accounts / classes endpoints. The rows carry the
|
|
17
|
+
* QBO id plus one or more name fields depending on the entity — inspect
|
|
18
|
+
* loosely, render the name, submit the id.
|
|
19
|
+
*/
|
|
20
|
+
export interface InvoicingQboAccountRowPayload {
|
|
21
|
+
account_id?: string | null;
|
|
22
|
+
account_name?: string | null;
|
|
23
|
+
account_type?: string | null;
|
|
24
|
+
accounting_class_name?: string | null;
|
|
25
|
+
fully_qualified_name?: string | null;
|
|
26
|
+
id?: string | null;
|
|
27
|
+
name?: string | null;
|
|
28
|
+
qbo_accounting_class_name?: string | null;
|
|
29
|
+
qbo_id?: string | null;
|
|
30
|
+
}
|
|
31
|
+
export interface InvoicingQboAccountOption {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
accountType?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function mapInvoicingQboAccountOptions(rows: InvoicingQboAccountRowPayload[]): InvoicingQboAccountOption[];
|
|
37
|
+
export interface InvoicingQboAccountsPayload {
|
|
38
|
+
accounts: InvoicingQboAccountRowPayload[];
|
|
39
|
+
}
|
|
40
|
+
export interface InvoicingQboFailedTaskPayload {
|
|
41
|
+
attempts: number;
|
|
42
|
+
entity_id: string;
|
|
43
|
+
entity_type: string;
|
|
44
|
+
task_id: string;
|
|
45
|
+
last_error?: string | null;
|
|
46
|
+
updated_at?: string | null;
|
|
47
|
+
}
|
|
48
|
+
export interface InvoicingQboFailedTask {
|
|
49
|
+
attempts: number;
|
|
50
|
+
entityId: string;
|
|
51
|
+
entityType: string;
|
|
52
|
+
taskId: string;
|
|
53
|
+
lastError?: string;
|
|
54
|
+
updatedAt?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface InvoicingQboSyncHealthPayload {
|
|
57
|
+
connection?: InvoicingQboConnectionPayload | null;
|
|
58
|
+
counts_by_status?: Record<string, number> | null;
|
|
59
|
+
failed_tasks?: InvoicingQboFailedTaskPayload[] | null;
|
|
60
|
+
}
|
|
61
|
+
export interface InvoicingQboSyncHealth {
|
|
62
|
+
countsByStatus: Record<string, number>;
|
|
63
|
+
failedTasks: InvoicingQboFailedTask[];
|
|
64
|
+
connection?: InvoicingQboConnection;
|
|
65
|
+
}
|
|
66
|
+
export declare function mapInvoicingQboSyncHealth(payload: InvoicingQboSyncHealthPayload): InvoicingQboSyncHealth;
|
|
67
|
+
export interface InvoicingQboRetryTaskPayload {
|
|
68
|
+
status: string;
|
|
69
|
+
task_id: string;
|
|
70
|
+
}
|
|
71
|
+
export interface InvoicingQboBackfillPayload {
|
|
72
|
+
enqueued?: Record<string, number> | null;
|
|
73
|
+
start_date?: string | null;
|
|
74
|
+
}
|
|
75
|
+
export type InvoicingQboConnectionResponse = ZeniAPIResponse<InvoicingQboConnectionPayload>;
|
|
76
|
+
export type InvoicingQboAccountsResponse = ZeniAPIResponse<InvoicingQboAccountsPayload>;
|
|
77
|
+
export type InvoicingQboSyncHealthResponse = ZeniAPIResponse<InvoicingQboSyncHealthPayload>;
|
|
78
|
+
export type InvoicingQboRetryTaskResponse = ZeniAPIResponse<InvoicingQboRetryTaskPayload>;
|
|
79
|
+
export type InvoicingQboBackfillResponse = ZeniAPIResponse<InvoicingQboBackfillPayload>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mapInvoicingQboConnection = mapInvoicingQboConnection;
|
|
4
|
+
exports.mapInvoicingQboAccountOptions = mapInvoicingQboAccountOptions;
|
|
5
|
+
exports.mapInvoicingQboSyncHealth = mapInvoicingQboSyncHealth;
|
|
6
|
+
function mapInvoicingQboConnection(payload) {
|
|
7
|
+
return {
|
|
8
|
+
connected: payload.connected,
|
|
9
|
+
companyName: payload.company_name ?? undefined,
|
|
10
|
+
connectionId: payload.connection_id ?? undefined,
|
|
11
|
+
realmId: payload.realm_id ?? undefined,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function mapInvoicingQboAccountOptions(rows) {
|
|
15
|
+
return rows.flatMap((row) => {
|
|
16
|
+
// Only qbo_id is a valid QBO AccountRef/ClassRef value — platform-internal
|
|
17
|
+
// ids (account_id / id) are display metadata and must never be submitted.
|
|
18
|
+
const accountId = row.qbo_id ?? row.id ?? row.account_id ?? '';
|
|
19
|
+
if (accountId === '') {
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
const accountName = row.name ??
|
|
23
|
+
row.account_name ??
|
|
24
|
+
row.accounting_class_name ??
|
|
25
|
+
row.qbo_accounting_class_name ??
|
|
26
|
+
row.fully_qualified_name ??
|
|
27
|
+
accountId;
|
|
28
|
+
return [
|
|
29
|
+
{
|
|
30
|
+
id: accountId,
|
|
31
|
+
name: accountName,
|
|
32
|
+
accountType: row.account_type ?? undefined,
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
function mapInvoicingQboSyncHealth(payload) {
|
|
38
|
+
return {
|
|
39
|
+
connection: payload.connection != null
|
|
40
|
+
? mapInvoicingQboConnection(payload.connection)
|
|
41
|
+
: undefined,
|
|
42
|
+
countsByStatus: payload.counts_by_status ?? {},
|
|
43
|
+
failedTasks: (payload.failed_tasks ?? []).map((task) => ({
|
|
44
|
+
attempts: task.attempts,
|
|
45
|
+
entityId: task.entity_id,
|
|
46
|
+
entityType: task.entity_type,
|
|
47
|
+
taskId: task.task_id,
|
|
48
|
+
lastError: task.last_error ?? undefined,
|
|
49
|
+
updatedAt: task.updated_at ?? undefined,
|
|
50
|
+
})),
|
|
51
|
+
};
|
|
52
|
+
}
|