@zeniai/client-epic-state 4.19.79 → 4.19.80
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/company/companyPayload.d.ts +12 -0
- package/lib/entity/company/companyPayload.js +20 -0
- package/lib/entity/company/companyStateTypes.d.ts +12 -0
- package/lib/esm/entity/chargeCardTransaction/chargeCardTransactionPayload.js +2 -2
- package/lib/esm/entity/company/companyPayload.js +20 -0
- package/lib/esm/index.js +5 -5
- package/lib/esm/view/companyView/epic/companyPassport/updateCompanyDetailsEpic.js +3 -0
- package/lib/esm/view/companyView/types/companyPassport/companyPassportLocalData.js +12 -0
- package/lib/esm/view/companyView/types/companyPassportViewPayload.js +55 -12
- package/lib/esm/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.js +2 -3
- package/lib/esm/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -2
- package/lib/esm/view/onboardingView/customerView/onboardingCustomerViewSelector.js +22 -4
- package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryDownloadSelector.js +2 -2
- package/lib/esm/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistorySelector.js +2 -2
- package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailSelector.js +4 -1
- package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/fetchChargeCardRepaymentDetailEpic.js +2 -1
- package/lib/esm/view/spendManagement/chargeCards/chargeCardRepaymentDetail/initiateChargeCardRepaymentEpic.js +1 -1
- package/lib/esm/view/spendManagement/commonSetup/epic/setup/updateBusinessVerificationDetailsEpic.js +64 -1
- package/lib/esm/view/spendManagement/commonSetup/epic/setup/updateSetupViewLocalStoreDataEpic.js +15 -2
- package/lib/esm/view/spendManagement/commonSetup/setupViewSelector.js +14 -1
- package/lib/index.d.ts +5 -5
- package/lib/index.js +13 -13
- package/lib/tsconfig.typecheck.tsbuildinfo +1 -1
- package/lib/view/companyView/epic/companyPassport/updateCompanyDetailsEpic.js +3 -0
- package/lib/view/companyView/types/companyPassport/companyDetailsLocalData.d.ts +12 -0
- package/lib/view/companyView/types/companyPassport/companyPassportLocalData.js +12 -0
- package/lib/view/companyView/types/companyPassportViewPayload.d.ts +1 -1
- package/lib/view/companyView/types/companyPassportViewPayload.js +55 -12
- package/lib/view/expenseAutomationView/epics/transactionCategorization/triggerReviewTabRefetchEpic.js +2 -3
- package/lib/view/expenseAutomationView/helpers/transactionCategorizationLocalDataHelper.js +2 -2
- package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.d.ts +1 -0
- package/lib/view/onboardingView/customerView/onboardingCustomerViewSelector.js +22 -3
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistoryDownloadSelector.js +2 -2
- package/lib/view/spendManagement/chargeCards/chargeCardPaymentHistory/chargeCardPaymentHistorySelector.js +2 -2
- package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/chargeCardRepaymentDetailSelector.js +4 -1
- package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/fetchChargeCardRepaymentDetailEpic.js +2 -1
- package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/initiateChargeCardRepaymentEpic.d.ts +1 -1
- package/lib/view/spendManagement/chargeCards/chargeCardRepaymentDetail/initiateChargeCardRepaymentEpic.js +1 -1
- package/lib/view/spendManagement/commonSetup/epic/setup/updateBusinessVerificationDetailsEpic.js +64 -1
- package/lib/view/spendManagement/commonSetup/epic/setup/updateSetupViewLocalStoreDataEpic.js +15 -2
- package/lib/view/spendManagement/commonSetup/setupViewSelector.d.ts +13 -0
- package/lib/view/spendManagement/commonSetup/setupViewSelector.js +14 -1
- package/lib/view/spendManagement/commonSetup/setupViewState.d.ts +13 -0
- package/lib/view/spendManagement/commonSetup/types/businessVerification.d.ts +13 -0
- package/package.json +1 -1
|
@@ -15,6 +15,9 @@ const updateCompanyDetailsEpic = (actions$, state$, zeniAPI) => actions$.pipe((0
|
|
|
15
15
|
...(0, companyPassportViewPayload_1.toCompanyIncInfoUpdatableInfoPayload)(companyDetails.incInfo),
|
|
16
16
|
...(0, companyPassportViewPayload_1.toCompanyTaxInfoUpdatableInfoPayload)(companyDetails.taxDetails),
|
|
17
17
|
...(0, companyPassportViewPayload_1.toCompanyFileInfoPayload)(companyDetails.incInfo, companyDetails.taxDetails),
|
|
18
|
+
...(companyDetails.companyInfo.companySubIndustry != null && {
|
|
19
|
+
company_industry_sub_type: companyDetails.companyInfo.companySubIndustry,
|
|
20
|
+
}),
|
|
18
21
|
};
|
|
19
22
|
const { newAddressState } = state$.value.addressViewState;
|
|
20
23
|
const addressToCreate = newAddressState?.company_address?.addressToCreate;
|
|
@@ -8,8 +8,20 @@ export interface CompanyInfoLocalData {
|
|
|
8
8
|
firstMonthOfFY: Month;
|
|
9
9
|
legalName: string;
|
|
10
10
|
phone: string;
|
|
11
|
+
companySourceOfFunds?: string;
|
|
12
|
+
companySourceOfFundsDescription?: string;
|
|
13
|
+
companySubIndustry?: string;
|
|
14
|
+
countriesOfOperations?: string[];
|
|
11
15
|
industry?: string;
|
|
12
16
|
meetingLink?: ZeniUrl;
|
|
17
|
+
purposeOfAccount?: string;
|
|
18
|
+
purposeOfAccountDescription?: string;
|
|
19
|
+
regulatedStatus?: string;
|
|
20
|
+
regulatedStatusDescription?: string;
|
|
21
|
+
transactionVolume?: string;
|
|
22
|
+
transactionVolumeDescription?: string;
|
|
23
|
+
usNexus?: string;
|
|
24
|
+
usNexusTypes?: string[];
|
|
13
25
|
website?: ZeniUrl;
|
|
14
26
|
}
|
|
15
27
|
export interface IncInfoLocalData {
|
|
@@ -13,9 +13,21 @@ function toCompanyPassportLocalData(companyView, companyFiles) {
|
|
|
13
13
|
website: companyInfo.companyUrl,
|
|
14
14
|
meetingLink: companyInfo.meetingUrl,
|
|
15
15
|
industry: companyQuestionaire.companyIndustry,
|
|
16
|
+
companySubIndustry: incInfo.companySubIndustry,
|
|
16
17
|
businessModel: companyQuestionaire.companyBusinessModel ?? '',
|
|
17
18
|
phone: companyInfo.phone ?? '',
|
|
18
19
|
firstMonthOfFY: companyInfo.firstMonthOfFY,
|
|
20
|
+
companySourceOfFunds: companyInfo.companySourceOfFunds,
|
|
21
|
+
companySourceOfFundsDescription: companyInfo.companySourceOfFundsDescription,
|
|
22
|
+
countriesOfOperations: companyInfo.countriesOfOperations,
|
|
23
|
+
transactionVolume: companyInfo.transactionVolume,
|
|
24
|
+
transactionVolumeDescription: companyInfo.transactionVolumeDescription,
|
|
25
|
+
purposeOfAccount: companyInfo.purposeOfAccount,
|
|
26
|
+
purposeOfAccountDescription: companyInfo.purposeOfAccountDescription,
|
|
27
|
+
regulatedStatus: companyInfo.regulatedStatus,
|
|
28
|
+
regulatedStatusDescription: companyInfo.regulatedStatusDescription,
|
|
29
|
+
usNexus: companyInfo.usNexus,
|
|
30
|
+
usNexusTypes: companyInfo.usNexusTypes,
|
|
19
31
|
},
|
|
20
32
|
incInfo: {
|
|
21
33
|
typeOfInc: incInfo.companyIncType ?? '',
|
|
@@ -2,7 +2,7 @@ import { ID } from '../../../commonStateTypes/common';
|
|
|
2
2
|
import { CompanyConfigInfoPayload, CompanyIncInfoPayload, CompanyInfoPayload, CompanyQuestionairePayload, CompanyTaxInfoPayload } from '../../../entity/company/companyPayload';
|
|
3
3
|
import { UserUpdatableInfo } from '../epic/companyPassport/updatePrimaryContactEpic';
|
|
4
4
|
import { CompanyInfoLocalData, IncInfoLocalData, TaxDetailsLocalData } from './companyPassport/companyDetailsLocalData';
|
|
5
|
-
interface CompanyInfoUpdatableInfoPayload extends Pick<CompanyInfoPayload, 'name' | 'company_url' | 'meeting_url' | 'company_legal_name' | 'phone'>, Pick<CompanyQuestionairePayload, 'company_industry' | 'company_business_model'>, Pick<CompanyConfigInfoPayload, 'is_new_company_industry_verified'> {
|
|
5
|
+
interface CompanyInfoUpdatableInfoPayload extends Pick<CompanyInfoPayload, 'name' | 'company_url' | 'meeting_url' | 'company_legal_name' | 'phone' | 'company_countries_of_operations' | 'company_source_of_funds' | 'company_source_of_funds_desc' | 'company_transaction_vol_expectations' | 'company_transaction_vol_expectations_desc' | 'company_purpose_of_account' | 'company_purpose_of_account_desc' | 'company_regulated_states' | 'company_regulated_states_desc' | 'company_us_nexus' | 'company_us_nexus_desc'>, Pick<CompanyQuestionairePayload, 'company_industry' | 'company_business_model'>, Pick<CompanyConfigInfoPayload, 'is_new_company_industry_verified'> {
|
|
6
6
|
}
|
|
7
7
|
type CompanyIncUpdatableInfoPayload = Pick<CompanyIncInfoPayload, 'company_inc_type' | 'company_inc_state' | 'company_inc_date'>;
|
|
8
8
|
type CompanyTaxUpdatableInfoPayload = Omit<CompanyTaxInfoPayload, 'taxes_filed_date' | 'taxes_due_date'>;
|
|
@@ -1,19 +1,62 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.toUserUpdatableInfoPayload = exports.toCompanyFileInfoPayload = exports.toCompanyTaxInfoUpdatableInfoPayload = exports.toCompanyIncInfoUpdatableInfoPayload = exports.toCompanyUpdatableInfoPayload = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
company_business_model: info.businessModel,
|
|
11
|
-
company_url: info.website != null ? info.website.toString() : null,
|
|
12
|
-
meeting_url: info.meetingLink != null ? info.meetingLink.toString() : null,
|
|
13
|
-
is_new_company_industry_verified: true,
|
|
14
|
-
};
|
|
15
|
-
return payload;
|
|
4
|
+
/** Maps US nexus display label to API key (for company_us_nexus_desc) */
|
|
5
|
+
const US_NEXUS_LABEL_TO_KEY = {
|
|
6
|
+
Employees: 'employees',
|
|
7
|
+
Customers: 'customers',
|
|
8
|
+
'Physical office or facility': 'physical_office',
|
|
9
|
+
'Banking relationships': 'banking_relationships',
|
|
16
10
|
};
|
|
11
|
+
function toUsNexusTypeKey(value) {
|
|
12
|
+
const key = US_NEXUS_LABEL_TO_KEY[value];
|
|
13
|
+
return key ?? value;
|
|
14
|
+
}
|
|
15
|
+
const toCompanyUpdatableInfoPayload = (info) => ({
|
|
16
|
+
name: info.companyName,
|
|
17
|
+
company_legal_name: info.legalName,
|
|
18
|
+
phone: info.phone,
|
|
19
|
+
company_industry: info.industry,
|
|
20
|
+
company_business_model: info.businessModel,
|
|
21
|
+
company_url: info.website != null ? info.website.toString() : null,
|
|
22
|
+
meeting_url: info.meetingLink != null ? info.meetingLink.toString() : null,
|
|
23
|
+
is_new_company_industry_verified: true,
|
|
24
|
+
...(info.companySourceOfFunds != null && {
|
|
25
|
+
company_source_of_funds: info.companySourceOfFunds,
|
|
26
|
+
}),
|
|
27
|
+
...(info.companySourceOfFundsDescription != null && {
|
|
28
|
+
company_source_of_funds_desc: info.companySourceOfFundsDescription,
|
|
29
|
+
}),
|
|
30
|
+
...(info.countriesOfOperations != null &&
|
|
31
|
+
info.countriesOfOperations.length > 0 && {
|
|
32
|
+
company_countries_of_operations: info.countriesOfOperations,
|
|
33
|
+
}),
|
|
34
|
+
...(info.transactionVolume != null && {
|
|
35
|
+
company_transaction_vol_expectations: info.transactionVolume,
|
|
36
|
+
}),
|
|
37
|
+
...(info.transactionVolumeDescription != null && {
|
|
38
|
+
company_transaction_vol_expectations_desc: info.transactionVolumeDescription,
|
|
39
|
+
}),
|
|
40
|
+
...(info.purposeOfAccount != null && {
|
|
41
|
+
company_purpose_of_account: info.purposeOfAccount,
|
|
42
|
+
}),
|
|
43
|
+
...(info.purposeOfAccountDescription != null && {
|
|
44
|
+
company_purpose_of_account_desc: info.purposeOfAccountDescription,
|
|
45
|
+
}),
|
|
46
|
+
...(info.regulatedStatus != null && {
|
|
47
|
+
company_regulated_states: info.regulatedStatus === 'yes',
|
|
48
|
+
}),
|
|
49
|
+
...(info.regulatedStatusDescription != null && {
|
|
50
|
+
company_regulated_states_desc: info.regulatedStatusDescription,
|
|
51
|
+
}),
|
|
52
|
+
...(info.usNexus != null && {
|
|
53
|
+
company_us_nexus: info.usNexus === 'yes',
|
|
54
|
+
}),
|
|
55
|
+
...(info.usNexusTypes != null &&
|
|
56
|
+
info.usNexusTypes.length > 0 && {
|
|
57
|
+
company_us_nexus_desc: info.usNexusTypes.map(toUsNexusTypeKey),
|
|
58
|
+
}),
|
|
59
|
+
});
|
|
17
60
|
exports.toCompanyUpdatableInfoPayload = toCompanyUpdatableInfoPayload;
|
|
18
61
|
const toCompanyIncInfoUpdatableInfoPayload = (info) => {
|
|
19
62
|
const payload = {
|
|
@@ -7,15 +7,14 @@ const timePeriod_1 = require("../../../../commonStateTypes/timePeriod");
|
|
|
7
7
|
const tenantSelector_1 = require("../../../../entity/tenant/tenantSelector");
|
|
8
8
|
const transactionsViewReducer_1 = require("../../reducers/transactionsViewReducer");
|
|
9
9
|
const triggerReviewTabRefetchEpic = (actions$, state$) => actions$.pipe((0, operators_1.filter)(transactionsViewReducer_1.syncTransactionCategorizationFromDetailSave.match), (0, operators_1.mergeMap)((action) => {
|
|
10
|
-
const { pendingReviewLineIds, transactionId, isUncategorizedExpenseCategoryEnabled } = action.payload;
|
|
10
|
+
const { pendingReviewLineIds, transactionId, isUncategorizedExpenseCategoryEnabled, } = action.payload;
|
|
11
11
|
if (pendingReviewLineIds.length === 0) {
|
|
12
12
|
return rxjs_1.EMPTY;
|
|
13
13
|
}
|
|
14
14
|
const state = state$.value;
|
|
15
15
|
// Only trigger when the transaction was auto-only (not in review tab after reducer ran)
|
|
16
16
|
const reviewLocalData = state.expenseAutomationTransactionsViewState
|
|
17
|
-
.transactionCategorizationView.review
|
|
18
|
-
.transactionReviewLocalDataById[transactionId.id];
|
|
17
|
+
.transactionCategorizationView.review.transactionReviewLocalDataById[transactionId.id];
|
|
19
18
|
if (reviewLocalData != null) {
|
|
20
19
|
return rxjs_1.EMPTY;
|
|
21
20
|
}
|
|
@@ -46,8 +46,8 @@ const filterAutoTabLineItems = (tabView, transactionId, updatedTransaction) => {
|
|
|
46
46
|
if (localData == null) {
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
|
-
const currentAutoLineIds = localData.transactionReviewLocalData.tabSpecificLineItems
|
|
50
|
-
|
|
49
|
+
const currentAutoLineIds = localData.transactionReviewLocalData.tabSpecificLineItems.autoCategorized ??
|
|
50
|
+
[];
|
|
51
51
|
const linesById = new Map(updatedTransaction.lines?.map((l) => [l.id, l]));
|
|
52
52
|
const retainedLineIds = currentAutoLineIds.filter((lineId) => {
|
|
53
53
|
const line = linesById.get(lineId);
|
|
@@ -53,4 +53,5 @@ export declare const onboardingStepsData: (isValidConnection: boolean, productSe
|
|
|
53
53
|
allStepsData: OnboardingStep[];
|
|
54
54
|
requiredStepsData: OnboardingStep[];
|
|
55
55
|
};
|
|
56
|
+
export declare function isCompanyDetailsSavePending(fileState: FileState, company?: CompanyView, primaryContact?: User, companyDetailsLocalData?: CompanyDetails): boolean;
|
|
56
57
|
export declare const getProductSettingsString: (productSettings: TenantProductSettings | undefined) => string;
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getProductSettingsString = exports.onboardingStepsData = void 0;
|
|
4
4
|
exports.getOnboardingCustomerView = getOnboardingCustomerView;
|
|
5
5
|
exports.isOfficerDetailsCompleted = isOfficerDetailsCompleted;
|
|
6
|
+
exports.isCompanyDetailsSavePending = isCompanyDetailsSavePending;
|
|
6
7
|
const reduceFetchState_1 = require("../../../commonStateTypes/reduceFetchState");
|
|
7
8
|
const fileSelector_1 = require("../../../entity/file/fileSelector");
|
|
8
9
|
const paymentAccountSelector_1 = require("../../../entity/paymentAccount/paymentAccountSelector");
|
|
@@ -229,12 +230,12 @@ function isCompanyDetailsSavePending(fileState, company, primaryContact, company
|
|
|
229
230
|
return false;
|
|
230
231
|
}
|
|
231
232
|
const { companyInfo, incInfo, taxInfo, questionaire } = company.company.company;
|
|
232
|
-
const { companyDescription, companyLegalName, companyUrl, phone } = companyInfo;
|
|
233
|
-
const { fileIds, companyIncDate: incDate, companyIncType } = incInfo;
|
|
233
|
+
const { companyDescription, companyLegalName, companyUrl, phone, companySourceOfFunds, companySourceOfFundsDescription, countriesOfOperations, transactionVolume, transactionVolumeDescription, purposeOfAccount, purposeOfAccountDescription, regulatedStatus, regulatedStatusDescription, usNexus, usNexusTypes, } = companyInfo;
|
|
234
|
+
const { fileIds, companyIncDate: incDate, companyIncState, companyIncType, companySubIndustry, } = incInfo;
|
|
234
235
|
const { companyIndustry } = questionaire;
|
|
235
236
|
const { taxId } = taxInfo;
|
|
236
237
|
const companyFileIds = (0, fileSelector_1.getFilesByFileIds)(fileState, fileIds).map((file) => file.fileId);
|
|
237
|
-
const { companyDescription: companyDescriptionLocalData, companyIndustry: companyIndustryLocalData, companyLegalName: companyLegalNameLocalData, taxIdOrEIN: taxIdLocalData, incDate: incDateLocalData, phone: companyPhoneLocalData, website: companyUrlLocalData, companyFiles: companyFilesLocalData, typeOfIncorporation: companyIncTypeLocalData, primaryContactLocalData, } = companyDetailsLocalData;
|
|
238
|
+
const { companyDescription: companyDescriptionLocalData, companyIndustry: companyIndustryLocalData, companyLegalName: companyLegalNameLocalData, taxIdOrEIN: taxIdLocalData, incDate: incDateLocalData, phone: companyPhoneLocalData, website: companyUrlLocalData, companyFiles: companyFilesLocalData, stateOfIncorporation: stateOfIncorporationLocalData, typeOfIncorporation: companyIncTypeLocalData, companySourceOfFunds: companySourceOfFundsLocalData, companySourceOfFundsDescription: companySourceOfFundsDescriptionLocalData, countriesOfOperations: countriesOfOperationsLocalData, companySubIndustry: companySubIndustryLocalData, transactionVolume: transactionVolumeLocalData, transactionVolumeDescription: transactionVolumeDescriptionLocalData, purposeOfAccount: purposeOfAccountLocalData, purposeOfAccountDescription: purposeOfAccountDescriptionLocalData, regulatedStatus: regulatedStatusLocalData, regulatedStatusDescription: regulatedStatusDescriptionLocalData, usNexus: usNexusLocalData, usNexusTypes: usNexusTypesLocalData, primaryContactLocalData, } = companyDetailsLocalData;
|
|
238
239
|
const fileIdsLocalData = companyFilesLocalData.map((file) => file.fileId);
|
|
239
240
|
if (primaryContact != null) {
|
|
240
241
|
const { firstName, lastName, email } = primaryContact;
|
|
@@ -244,6 +245,10 @@ function isCompanyDetailsSavePending(fileState, company, primaryContact, company
|
|
|
244
245
|
return true;
|
|
245
246
|
}
|
|
246
247
|
}
|
|
248
|
+
const countriesOfOperationsMatch = JSON.stringify(countriesOfOperations ?? []) ===
|
|
249
|
+
JSON.stringify(countriesOfOperationsLocalData ?? []);
|
|
250
|
+
const usNexusTypesMatch = JSON.stringify(usNexusTypes ?? []) ===
|
|
251
|
+
JSON.stringify(usNexusTypesLocalData ?? []);
|
|
247
252
|
return (companyDescription != companyDescriptionLocalData ||
|
|
248
253
|
companyIndustry != companyIndustryLocalData ||
|
|
249
254
|
companyLegalName != companyLegalNameLocalData ||
|
|
@@ -251,7 +256,21 @@ function isCompanyDetailsSavePending(fileState, company, primaryContact, company
|
|
|
251
256
|
incDate?.toString() != incDateLocalData?.toString() ||
|
|
252
257
|
phone != companyPhoneLocalData ||
|
|
253
258
|
companyUrl?.toString() != companyUrlLocalData?.toString() ||
|
|
259
|
+
companyIncState != stateOfIncorporationLocalData ||
|
|
260
|
+
companySourceOfFunds != companySourceOfFundsLocalData ||
|
|
261
|
+
companySourceOfFundsDescription !=
|
|
262
|
+
companySourceOfFundsDescriptionLocalData ||
|
|
263
|
+
!countriesOfOperationsMatch ||
|
|
254
264
|
companyIncType != companyIncTypeLocalData ||
|
|
265
|
+
transactionVolume != transactionVolumeLocalData ||
|
|
266
|
+
transactionVolumeDescription != transactionVolumeDescriptionLocalData ||
|
|
267
|
+
purposeOfAccount != purposeOfAccountLocalData ||
|
|
268
|
+
purposeOfAccountDescription != purposeOfAccountDescriptionLocalData ||
|
|
269
|
+
regulatedStatus != regulatedStatusLocalData ||
|
|
270
|
+
regulatedStatusDescription != regulatedStatusDescriptionLocalData ||
|
|
271
|
+
usNexus != usNexusLocalData ||
|
|
272
|
+
!usNexusTypesMatch ||
|
|
273
|
+
companySubIndustry != companySubIndustryLocalData ||
|
|
255
274
|
!(fileIdsLocalData.length === companyFileIds.length &&
|
|
256
275
|
companyFileIds.every((fileId) => fileIdsLocalData.includes(fileId))));
|
|
257
276
|
}
|
|
@@ -5,8 +5,8 @@ const chargeCardRepaymentSelector_1 = require("../../../../entity/chargeCardRepa
|
|
|
5
5
|
const userSelector_1 = require("../../../../entity/user/userSelector");
|
|
6
6
|
const chargeCardPaymentHistoryHelpers_1 = require("./chargeCardPaymentHistoryHelpers");
|
|
7
7
|
const getChargeCardPaymentHistoryDownloadReport = (state) => {
|
|
8
|
-
const { chargeCardPaymentHistoryState, chargeCardRepaymentState, userState
|
|
9
|
-
const { filters, repaymentHistoryIds, searchText, uiState, fetchState, error
|
|
8
|
+
const { chargeCardPaymentHistoryState, chargeCardRepaymentState, userState } = state;
|
|
9
|
+
const { filters, repaymentHistoryIds, searchText, uiState, fetchState, error } = chargeCardPaymentHistoryState;
|
|
10
10
|
const repaymentHistory = (0, chargeCardRepaymentSelector_1.getChargeCardRepaymentByIds)(chargeCardRepaymentState, repaymentHistoryIds);
|
|
11
11
|
const repaymentHistoryUserIds = Array.from(new Set(repaymentHistory.map((r) => r.paidById)));
|
|
12
12
|
const repaymentHistoryUsers = (0, userSelector_1.getUsersByUserIds)(userState, repaymentHistoryUserIds);
|
|
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getChargeCardPaymentHistoryView = void 0;
|
|
4
4
|
const reduceFetchState_1 = require("../../../../commonStateTypes/reduceFetchState");
|
|
5
5
|
const chargeCardRepaymentSelector_1 = require("../../../../entity/chargeCardRepayment/chargeCardRepaymentSelector");
|
|
6
|
-
const userSelector_1 = require("../../../../entity/user/userSelector");
|
|
7
|
-
const setupViewSelector_1 = require("../../commonSetup/setupViewSelector");
|
|
8
6
|
const depositAccountSelector_1 = require("../../../../entity/depositAccount/depositAccountSelector");
|
|
9
7
|
const paymentAccountSelector_1 = require("../../../../entity/paymentAccount/paymentAccountSelector");
|
|
8
|
+
const userSelector_1 = require("../../../../entity/user/userSelector");
|
|
9
|
+
const setupViewSelector_1 = require("../../commonSetup/setupViewSelector");
|
|
10
10
|
const depositAccountListSelector_1 = require("../../zeniAccounts/depositAccountList/depositAccountListSelector");
|
|
11
11
|
const paymentAccountListSelector_1 = require("../../zeniAccounts/paymentAccountList/paymentAccountListSelector");
|
|
12
12
|
const chargeCardPaymentHistoryHelpers_1 = require("./chargeCardPaymentHistoryHelpers");
|
|
@@ -18,7 +18,10 @@ const getChargeCardRepaymentDetail = (state) => {
|
|
|
18
18
|
else {
|
|
19
19
|
const depositFundingFromLimit = Object.values(depositAccountState.depositAccountLimitForChargeCardByID ?? {}).map(setupViewSelector_1.mapDepositAccountWithLimitToFundingAccount);
|
|
20
20
|
const paymentFundingAccounts = (0, setupViewSelector_1.getAllFundingAccounts)([], paymentAccountsView.paymentAccounts, paymentAccountListState.paymentAccountBalanceFetchStatus);
|
|
21
|
-
transferFromAccounts = [
|
|
21
|
+
transferFromAccounts = [
|
|
22
|
+
...depositFundingFromLimit,
|
|
23
|
+
...paymentFundingAccounts,
|
|
24
|
+
];
|
|
22
25
|
}
|
|
23
26
|
}
|
|
24
27
|
const reducedFetchState = (0, reduceFetchState_1.reduceAnyCompletedFetchState)([
|
|
@@ -10,7 +10,8 @@ const fetchChargeCardRepaymentDetailEpic = (actions$, state$) => actions$.pipe((
|
|
|
10
10
|
const fetchChargeCardRepaymentDetailActions = [];
|
|
11
11
|
const state = state$.value;
|
|
12
12
|
const depositAccounts = state.depositAccountListState;
|
|
13
|
-
const willFetchDeposit = depositAccounts.fetchState !== 'In-Progress' &&
|
|
13
|
+
const willFetchDeposit = depositAccounts.fetchState !== 'In-Progress' &&
|
|
14
|
+
depositAccounts.fetchState !== 'Completed';
|
|
14
15
|
if (willFetchDeposit) {
|
|
15
16
|
fetchChargeCardRepaymentDetailActions.push((0, depositAccountListReducer_1.fetchDepositAccountList)());
|
|
16
17
|
}
|
|
@@ -4,8 +4,8 @@ import { updateChargeCardRepayment } from '../../../../entity/chargeCardRepaymen
|
|
|
4
4
|
import { updateCompanyPrimaryAccount, updateEnableAutoPayForChargeCard } from '../../../../entity/company/companyReducer';
|
|
5
5
|
import { RootState } from '../../../../reducer';
|
|
6
6
|
import { ZeniAPI } from '../../../../zeniAPI';
|
|
7
|
-
import { addRepaymentToChargeCardPaymentHistory } from '../chargeCardPaymentHistory/chargeCardPaymentHistoryReducer';
|
|
8
7
|
import { updateCreditAccountRepaymentAmountAndDate } from '../chargeCardList/chargeCardListReducer';
|
|
8
|
+
import { addRepaymentToChargeCardPaymentHistory } from '../chargeCardPaymentHistory/chargeCardPaymentHistoryReducer';
|
|
9
9
|
import { initiateChargeCardRepayment, updateChargeCardRepaymentStatus } from './chargeCardRepaymentDetailReducer';
|
|
10
10
|
export type ActionType = ReturnType<typeof addRepaymentToChargeCardPaymentHistory> | ReturnType<typeof initiateChargeCardRepayment> | ReturnType<typeof updateChargeCardRepayment> | ReturnType<typeof updateCreditAccountRepaymentAmountAndDate> | ReturnType<typeof updateChargeCardRepaymentStatus> | ReturnType<typeof updateCompanyPrimaryAccount> | ReturnType<typeof updateEnableAutoPayForChargeCard>;
|
|
11
11
|
export declare const initiateChargeCardRepaymentEpic: (actions$: ActionsObservable<ActionType>, state$: StateObservable<RootState>, zeniAPI: ZeniAPI) => Observable<ActionType>;
|
|
@@ -12,8 +12,8 @@ const setupViewSelector_1 = require("../../commonSetup/setupViewSelector");
|
|
|
12
12
|
const helpers_1 = require("../../helpers");
|
|
13
13
|
const depositAccountListSelector_1 = require("../../zeniAccounts/depositAccountList/depositAccountListSelector");
|
|
14
14
|
const paymentAccountListSelector_1 = require("../../zeniAccounts/paymentAccountList/paymentAccountListSelector");
|
|
15
|
-
const chargeCardPaymentHistoryReducer_1 = require("../chargeCardPaymentHistory/chargeCardPaymentHistoryReducer");
|
|
16
15
|
const chargeCardListReducer_1 = require("../chargeCardList/chargeCardListReducer");
|
|
16
|
+
const chargeCardPaymentHistoryReducer_1 = require("../chargeCardPaymentHistory/chargeCardPaymentHistoryReducer");
|
|
17
17
|
const chargeCardRepaymentDetailReducer_1 = require("./chargeCardRepaymentDetailReducer");
|
|
18
18
|
const initiateChargeCardRepaymentEpic = (actions$, state$, zeniAPI) => actions$.pipe((0, operators_1.filter)(chargeCardRepaymentDetailReducer_1.initiateChargeCardRepayment.match), (0, operators_1.switchMap)((action) => {
|
|
19
19
|
const state = state$.value;
|
package/lib/view/spendManagement/commonSetup/epic/setup/updateBusinessVerificationDetailsEpic.js
CHANGED
|
@@ -122,8 +122,28 @@ const updateBusinessVerificationDetailsEpic = (actions$, state$, zeniAPI) => act
|
|
|
122
122
|
}
|
|
123
123
|
}));
|
|
124
124
|
exports.updateBusinessVerificationDetailsEpic = updateBusinessVerificationDetailsEpic;
|
|
125
|
+
/** US Nexus API keys. Form may submit these or display labels; we send keys to API. */
|
|
126
|
+
const US_NEXUS_KEYS = new Set([
|
|
127
|
+
'employees',
|
|
128
|
+
'customers',
|
|
129
|
+
'physical_office',
|
|
130
|
+
'banking_relationships',
|
|
131
|
+
]);
|
|
132
|
+
/** Maps display label → API key for US nexus types (English labels from strings). */
|
|
133
|
+
const US_NEXUS_LABEL_TO_KEY = {
|
|
134
|
+
Employees: 'employees',
|
|
135
|
+
Customers: 'customers',
|
|
136
|
+
'Physical office or facility': 'physical_office',
|
|
137
|
+
'Banking relationships': 'banking_relationships',
|
|
138
|
+
};
|
|
139
|
+
function toUsNexusTypeKey(value) {
|
|
140
|
+
if (US_NEXUS_KEYS.has(value)) {
|
|
141
|
+
return value;
|
|
142
|
+
}
|
|
143
|
+
return US_NEXUS_LABEL_TO_KEY[value] ?? value;
|
|
144
|
+
}
|
|
125
145
|
const toBusinessVerificationCompanyDataPayload = (companyLocalData, sendForVerification, companyAddressData, registeredAddressData, setupViewType) => {
|
|
126
|
-
const { companyDescription, companyLegalName, companyIndustry, website, incDate, taxIdOrEIN, phone, syncToken, fileIds, typeOfIncorporation, sourceOfFunds, } = companyLocalData;
|
|
146
|
+
const { companyDescription, companyLegalName, companyIndustry, companySubIndustry, countriesOfOperations, companySourceOfFunds, companySourceOfFundsDescription, transactionVolume, transactionVolumeDescription, purposeOfAccount, purposeOfAccountDescription, regulatedStatus, regulatedStatusDescription, usNexus, usNexusTypes, website, incDate, taxIdOrEIN, phone, syncToken, fileIds, typeOfIncorporation, stateOfIncorporation, sourceOfFunds, } = companyLocalData;
|
|
127
147
|
const company = {
|
|
128
148
|
is_ready_for_verification: sendForVerification,
|
|
129
149
|
file_ids: fileIds,
|
|
@@ -174,9 +194,52 @@ const toBusinessVerificationCompanyDataPayload = (companyLocalData, sendForVerif
|
|
|
174
194
|
if (typeOfIncorporation != null) {
|
|
175
195
|
company['company_inc_type'] = typeOfIncorporation;
|
|
176
196
|
}
|
|
197
|
+
if (stateOfIncorporation != null) {
|
|
198
|
+
company['company_inc_state'] = stateOfIncorporation;
|
|
199
|
+
}
|
|
177
200
|
if (companyIndustry != null) {
|
|
178
201
|
company['company_industry'] = companyIndustry;
|
|
179
202
|
}
|
|
203
|
+
Object.assign(company, {
|
|
204
|
+
...(companySubIndustry != null && {
|
|
205
|
+
company_industry_sub_type: companySubIndustry,
|
|
206
|
+
}),
|
|
207
|
+
...(countriesOfOperations != null &&
|
|
208
|
+
countriesOfOperations.length > 0 && {
|
|
209
|
+
company_countries_of_operations: countriesOfOperations,
|
|
210
|
+
}),
|
|
211
|
+
...(companySourceOfFunds != null && {
|
|
212
|
+
company_source_of_funds: companySourceOfFunds,
|
|
213
|
+
}),
|
|
214
|
+
...(companySourceOfFundsDescription != null && {
|
|
215
|
+
company_source_of_funds_desc: companySourceOfFundsDescription,
|
|
216
|
+
}),
|
|
217
|
+
...(transactionVolume != null && {
|
|
218
|
+
company_transaction_vol_expectations: transactionVolume,
|
|
219
|
+
}),
|
|
220
|
+
...(transactionVolumeDescription != null && {
|
|
221
|
+
company_transaction_vol_expectations_desc: transactionVolumeDescription,
|
|
222
|
+
}),
|
|
223
|
+
...(purposeOfAccount != null && {
|
|
224
|
+
company_purpose_of_account: purposeOfAccount,
|
|
225
|
+
}),
|
|
226
|
+
...(purposeOfAccountDescription != null && {
|
|
227
|
+
company_purpose_of_account_desc: purposeOfAccountDescription,
|
|
228
|
+
}),
|
|
229
|
+
...(regulatedStatus != null && {
|
|
230
|
+
company_regulated_states: regulatedStatus === 'yes',
|
|
231
|
+
}),
|
|
232
|
+
...(regulatedStatusDescription != null && {
|
|
233
|
+
company_regulated_states_desc: regulatedStatusDescription,
|
|
234
|
+
}),
|
|
235
|
+
...(usNexus != null && {
|
|
236
|
+
company_us_nexus: usNexus === 'yes',
|
|
237
|
+
}),
|
|
238
|
+
...(usNexusTypes != null &&
|
|
239
|
+
usNexusTypes.length > 0 && {
|
|
240
|
+
company_us_nexus_desc: usNexusTypes.map(toUsNexusTypeKey),
|
|
241
|
+
}),
|
|
242
|
+
});
|
|
180
243
|
if (setupViewType === 'zeni_treasury' && sourceOfFunds != null) {
|
|
181
244
|
company['source_of_funds'] = sourceOfFunds;
|
|
182
245
|
}
|
package/lib/view/spendManagement/commonSetup/epic/setup/updateSetupViewLocalStoreDataEpic.js
CHANGED
|
@@ -51,9 +51,9 @@ exports.updateSetupViewLocalStoreDataEpic = updateSetupViewLocalStoreDataEpic;
|
|
|
51
51
|
*/
|
|
52
52
|
function toSetupViewLocalData(company, users, userRoles, primaryContact) {
|
|
53
53
|
const { companyInfo, incInfo, taxInfo, questionaire, companyBillPayInfo } = company;
|
|
54
|
-
const { companyId, companyDescription, companyLegalName, companyUrl, phone, syncToken, sourceOfFunds, } = companyInfo;
|
|
54
|
+
const { companyId, companyDescription, companyLegalName, companyUrl, phone, syncToken, sourceOfFunds, companySourceOfFunds: incCompanySourceOfFunds, companySourceOfFundsDescription, countriesOfOperations, transactionVolume, transactionVolumeDescription, purposeOfAccount, purposeOfAccountDescription, regulatedStatus, regulatedStatusDescription, usNexus, usNexusTypes, } = companyInfo;
|
|
55
55
|
const { usersSelectedForVerification: usersSelected } = companyBillPayInfo;
|
|
56
|
-
const { fileIds, companyIncDate: incDate, companyIncType } = incInfo;
|
|
56
|
+
const { fileIds, companyIncDate: incDate, companyIncType, companyIncState, companySubIndustry, } = incInfo;
|
|
57
57
|
const { companyIndustry } = questionaire;
|
|
58
58
|
const { taxId } = taxInfo;
|
|
59
59
|
const companyDetails = {
|
|
@@ -61,6 +61,10 @@ function toSetupViewLocalData(company, users, userRoles, primaryContact) {
|
|
|
61
61
|
companyDescription,
|
|
62
62
|
companyIndustry,
|
|
63
63
|
companyLegalName,
|
|
64
|
+
companySubIndustry,
|
|
65
|
+
companySourceOfFunds: incCompanySourceOfFunds,
|
|
66
|
+
companySourceOfFundsDescription,
|
|
67
|
+
countriesOfOperations,
|
|
64
68
|
taxIdOrEIN: taxId,
|
|
65
69
|
incDate,
|
|
66
70
|
phone,
|
|
@@ -69,6 +73,15 @@ function toSetupViewLocalData(company, users, userRoles, primaryContact) {
|
|
|
69
73
|
syncToken,
|
|
70
74
|
typeOfIncorporation: companyIncType,
|
|
71
75
|
sourceOfFunds,
|
|
76
|
+
stateOfIncorporation: companyIncState,
|
|
77
|
+
transactionVolume,
|
|
78
|
+
transactionVolumeDescription,
|
|
79
|
+
purposeOfAccount,
|
|
80
|
+
purposeOfAccountDescription,
|
|
81
|
+
regulatedStatus,
|
|
82
|
+
regulatedStatusDescription,
|
|
83
|
+
usNexus,
|
|
84
|
+
usNexusTypes,
|
|
72
85
|
};
|
|
73
86
|
let primaryContactDetails = undefined;
|
|
74
87
|
if (primaryContact != null) {
|
|
@@ -70,14 +70,27 @@ export interface CompanyDetails {
|
|
|
70
70
|
companyDescription?: string;
|
|
71
71
|
companyIndustry?: string;
|
|
72
72
|
companyLegalName?: string;
|
|
73
|
+
companySourceOfFunds?: string;
|
|
74
|
+
companySourceOfFundsDescription?: string;
|
|
75
|
+
companySubIndustry?: string;
|
|
76
|
+
countriesOfOperations?: string[];
|
|
73
77
|
incDate?: ZeniDate;
|
|
74
78
|
phone?: string;
|
|
75
79
|
primaryContactLocalData?: PrimaryContactLocalData;
|
|
80
|
+
purposeOfAccount?: string;
|
|
81
|
+
purposeOfAccountDescription?: string;
|
|
76
82
|
registeredAddressStatus?: NewAddressData;
|
|
83
|
+
regulatedStatus?: string;
|
|
84
|
+
regulatedStatusDescription?: string;
|
|
77
85
|
sourceOfFunds?: string;
|
|
86
|
+
stateOfIncorporation?: string;
|
|
78
87
|
syncToken?: string;
|
|
79
88
|
taxIdOrEIN?: string;
|
|
89
|
+
transactionVolume?: string;
|
|
90
|
+
transactionVolumeDescription?: string;
|
|
80
91
|
typeOfIncorporation?: string;
|
|
92
|
+
usNexus?: string;
|
|
93
|
+
usNexusTypes?: string[];
|
|
81
94
|
website?: ZeniUrl;
|
|
82
95
|
}
|
|
83
96
|
interface CompanyAndOfficerLocalData {
|
|
@@ -114,7 +114,7 @@ const getCompanyAndIdentityDetails = (state, companyId, companyAndIdentityDetail
|
|
|
114
114
|
if (companyDetails.localData != null) {
|
|
115
115
|
const deleteFileStatusById = {};
|
|
116
116
|
const updateFileStatusById = {};
|
|
117
|
-
const { syncToken, companyDescription, companyLegalName, website, companyIndustry, phone, taxIdOrEIN, incDate, fileIds, typeOfIncorporation, sourceOfFunds, } = companyDetails.localData;
|
|
117
|
+
const { syncToken, companyDescription, companyLegalName, website, companyIndustry, companySubIndustry, companySourceOfFunds, companySourceOfFundsDescription, countriesOfOperations, phone, taxIdOrEIN, incDate, fileIds, typeOfIncorporation, sourceOfFunds, transactionVolume, transactionVolumeDescription, purposeOfAccount, purposeOfAccountDescription, regulatedStatus, regulatedStatusDescription, stateOfIncorporation, usNexus, usNexusTypes, } = companyDetails.localData;
|
|
118
118
|
fileIds.forEach((fileId) => {
|
|
119
119
|
deleteFileStatusById[fileId] = (0, fileViewSelector_1.getFileDeleteStatusById)(state, fileId);
|
|
120
120
|
});
|
|
@@ -128,6 +128,10 @@ const getCompanyAndIdentityDetails = (state, companyId, companyAndIdentityDetail
|
|
|
128
128
|
companyDescription,
|
|
129
129
|
companyLegalName,
|
|
130
130
|
companyIndustry,
|
|
131
|
+
companySubIndustry,
|
|
132
|
+
companySourceOfFunds,
|
|
133
|
+
companySourceOfFundsDescription,
|
|
134
|
+
countriesOfOperations,
|
|
131
135
|
website,
|
|
132
136
|
phone,
|
|
133
137
|
taxIdOrEIN,
|
|
@@ -141,6 +145,15 @@ const getCompanyAndIdentityDetails = (state, companyId, companyAndIdentityDetail
|
|
|
141
145
|
primaryContactLocalData,
|
|
142
146
|
typeOfIncorporation,
|
|
143
147
|
sourceOfFunds,
|
|
148
|
+
transactionVolume,
|
|
149
|
+
transactionVolumeDescription,
|
|
150
|
+
purposeOfAccount,
|
|
151
|
+
purposeOfAccountDescription,
|
|
152
|
+
regulatedStatus,
|
|
153
|
+
regulatedStatusDescription,
|
|
154
|
+
stateOfIncorporation,
|
|
155
|
+
usNexus,
|
|
156
|
+
usNexusTypes,
|
|
144
157
|
};
|
|
145
158
|
}
|
|
146
159
|
const companyOfficerLocalData = {
|
|
@@ -17,12 +17,25 @@ export interface CompanyDetailsLocalData {
|
|
|
17
17
|
companyDescription?: string;
|
|
18
18
|
companyIndustry?: string;
|
|
19
19
|
companyLegalName?: string;
|
|
20
|
+
companySourceOfFunds?: string;
|
|
21
|
+
companySourceOfFundsDescription?: string;
|
|
22
|
+
companySubIndustry?: string;
|
|
23
|
+
countriesOfOperations?: string[];
|
|
20
24
|
incDate?: ZeniDate;
|
|
21
25
|
phone?: string;
|
|
26
|
+
purposeOfAccount?: string;
|
|
27
|
+
purposeOfAccountDescription?: string;
|
|
28
|
+
regulatedStatus?: string;
|
|
29
|
+
regulatedStatusDescription?: string;
|
|
22
30
|
sourceOfFunds?: string;
|
|
31
|
+
stateOfIncorporation?: string;
|
|
23
32
|
syncToken?: string;
|
|
24
33
|
taxIdOrEIN?: string;
|
|
34
|
+
transactionVolume?: string;
|
|
35
|
+
transactionVolumeDescription?: string;
|
|
25
36
|
typeOfIncorporation?: string;
|
|
37
|
+
usNexus?: string;
|
|
38
|
+
usNexusTypes?: string[];
|
|
26
39
|
website?: ZeniUrl;
|
|
27
40
|
}
|
|
28
41
|
export interface PrimaryContactLocalData {
|
|
@@ -63,6 +63,19 @@ export interface CompanyDetailsVerificationPayload {
|
|
|
63
63
|
source_of_funds: string;
|
|
64
64
|
sync_token: string;
|
|
65
65
|
tax_id: string;
|
|
66
|
+
company_countries_of_operations?: string[];
|
|
67
|
+
company_inc_state?: string | null;
|
|
68
|
+
company_industry_sub_type?: string;
|
|
69
|
+
company_purpose_of_account?: string;
|
|
70
|
+
company_purpose_of_account_desc?: string;
|
|
71
|
+
company_regulated_states?: boolean;
|
|
72
|
+
company_regulated_states_desc?: string;
|
|
73
|
+
company_source_of_funds?: string;
|
|
74
|
+
company_source_of_funds_desc?: string;
|
|
75
|
+
company_transaction_vol_expectations?: string;
|
|
76
|
+
company_transaction_vol_expectations_desc?: string;
|
|
77
|
+
company_us_nexus?: boolean;
|
|
78
|
+
company_us_nexus_desc?: string[];
|
|
66
79
|
subscription_billing_address?: AddressUpdatableInfoPayload;
|
|
67
80
|
}
|
|
68
81
|
export interface BusinessVerificationDataPayload {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeniai/client-epic-state",
|
|
3
|
-
"version": "4.19.
|
|
3
|
+
"version": "4.19.80",
|
|
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",
|