diff --git a/src/CONST.ts b/src/CONST.ts index 4d7049271e78..cb42f22b2d44 100755 --- a/src/CONST.ts +++ b/src/CONST.ts @@ -703,6 +703,7 @@ const CONST = { TOTAL_FILES_SIZE_LIMIT: 5242880, PURPOSE_OF_TRANSACTION_ID: 'Intercompany_Payment', CURRENT_USER_KEY: 'currentUser', + CORPAY_UNDEFINED_OPTION_VALUE: 'Undefined', STEP: { COUNTRY: 'CountryStep', BANK_INFO: 'BankInfoStep', diff --git a/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/AverageReimbursement.tsx b/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/AverageReimbursement.tsx index 22b1c33aa31e..ca147a474aaa 100644 --- a/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/AverageReimbursement.tsx +++ b/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/AverageReimbursement.tsx @@ -10,6 +10,7 @@ import useReimbursementAccountStepFormSubmit from '@hooks/useReimbursementAccoun import type {SubStepProps} from '@hooks/useSubStep/types'; import useThemeStyles from '@hooks/useThemeStyles'; import {getFieldRequiredErrors} from '@libs/ValidationUtils'; +import getListOptionsFromCorpayPicklist from '@pages/ReimbursementAccount/NonUSD/utils/getListOptionsFromCorpayPicklist'; import ONYXKEYS from '@src/ONYXKEYS'; import INPUT_IDS from '@src/types/form/ReimbursementAccountForm'; @@ -21,22 +22,13 @@ const STEP_FIELDS = [TRADE_VOLUME]; function AverageReimbursement({onNext, isEditing}: AverageReimbursementProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); - const [reimbursementAccount] = useOnyx(ONYXKEYS.REIMBURSEMENT_ACCOUNT); - const [corpayOnboardingFields] = useOnyx(ONYXKEYS.CORPAY_ONBOARDING_FIELDS); + const [reimbursementAccount] = useOnyx(ONYXKEYS.REIMBURSEMENT_ACCOUNT, {canBeMissing: false}); + const [corpayOnboardingFields] = useOnyx(ONYXKEYS.CORPAY_ONBOARDING_FIELDS, {canBeMissing: false}); const policyID = reimbursementAccount?.achData?.policyID; - const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`); + const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`, {canBeMissing: false}); const currency = policy?.outputCurrency ?? ''; - const tradeVolumeRangeListOptions = useMemo(() => { - if (!corpayOnboardingFields?.picklists.TradeVolumeRange) { - return {}; - } - - return corpayOnboardingFields.picklists.TradeVolumeRange.reduce((accumulator, currentValue) => { - accumulator[currentValue.name] = currentValue.stringValue; - return accumulator; - }, {} as Record); - }, [corpayOnboardingFields]); + const tradeVolumeRangeListOptions = useMemo(() => getListOptionsFromCorpayPicklist(corpayOnboardingFields?.picklists.TradeVolumeRange), [corpayOnboardingFields]); const tradeVolumeDefaultValue = reimbursementAccount?.achData?.corpay?.[TRADE_VOLUME] ?? ''; diff --git a/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/BusinessType.tsx b/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/BusinessType.tsx index 793748b37b15..c45d737713d3 100644 --- a/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/BusinessType.tsx +++ b/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/BusinessType.tsx @@ -10,6 +10,7 @@ import useReimbursementAccountStepFormSubmit from '@hooks/useReimbursementAccoun import type {SubStepProps} from '@hooks/useSubStep/types'; import useThemeStyles from '@hooks/useThemeStyles'; import {getFieldRequiredErrors} from '@libs/ValidationUtils'; +import getListOptionsFromCorpayPicklist from '@pages/ReimbursementAccount/NonUSD/utils/getListOptionsFromCorpayPicklist'; import ONYXKEYS from '@src/ONYXKEYS'; import INPUT_IDS from '@src/types/form/ReimbursementAccountForm'; @@ -22,30 +23,11 @@ function BusinessType({onNext, isEditing}: BusinessTypeProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); - const [reimbursementAccount] = useOnyx(ONYXKEYS.REIMBURSEMENT_ACCOUNT); - const [corpayOnboardingFields] = useOnyx(ONYXKEYS.CORPAY_ONBOARDING_FIELDS); + const [reimbursementAccount] = useOnyx(ONYXKEYS.REIMBURSEMENT_ACCOUNT, {canBeMissing: false}); + const [corpayOnboardingFields] = useOnyx(ONYXKEYS.CORPAY_ONBOARDING_FIELDS, {canBeMissing: false}); - const incorporationTypeListOptions = useMemo(() => { - if (!corpayOnboardingFields?.picklists.ApplicantType) { - return {}; - } - - return corpayOnboardingFields.picklists.ApplicantType.reduce((accumulator, currentValue) => { - accumulator[currentValue.name] = currentValue.stringValue; - return accumulator; - }, {} as Record); - }, [corpayOnboardingFields]); - - const natureOfBusinessListOptions = useMemo(() => { - if (!corpayOnboardingFields?.picklists.NatureOfBusiness) { - return {}; - } - - return corpayOnboardingFields.picklists.NatureOfBusiness.reduce((accumulator, currentValue) => { - accumulator[currentValue.name] = currentValue.stringValue; - return accumulator; - }, {} as Record); - }, [corpayOnboardingFields]); + const incorporationTypeListOptions = useMemo(() => getListOptionsFromCorpayPicklist(corpayOnboardingFields?.picklists.ApplicantType), [corpayOnboardingFields]); + const natureOfBusinessListOptions = useMemo(() => getListOptionsFromCorpayPicklist(corpayOnboardingFields?.picklists.NatureOfBusiness), [corpayOnboardingFields]); const incorporationTypeDefaultValue = reimbursementAccount?.achData?.corpay?.[APPLICANT_TYPE_ID] ?? ''; const businessCategoryDefaultValue = reimbursementAccount?.achData?.corpay?.[BUSINESS_CATEGORY] ?? ''; diff --git a/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/PaymentVolume.tsx b/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/PaymentVolume.tsx index 5a1758452c10..2c5ea65a143d 100644 --- a/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/PaymentVolume.tsx +++ b/src/pages/ReimbursementAccount/NonUSD/BusinessInfo/subSteps/PaymentVolume.tsx @@ -10,6 +10,7 @@ import useReimbursementAccountStepFormSubmit from '@hooks/useReimbursementAccoun import type {SubStepProps} from '@hooks/useSubStep/types'; import useThemeStyles from '@hooks/useThemeStyles'; import {getFieldRequiredErrors} from '@libs/ValidationUtils'; +import getListOptionsFromCorpayPicklist from '@pages/ReimbursementAccount/NonUSD/utils/getListOptionsFromCorpayPicklist'; import ONYXKEYS from '@src/ONYXKEYS'; import INPUT_IDS from '@src/types/form/ReimbursementAccountForm'; @@ -21,22 +22,13 @@ const STEP_FIELDS = [ANNUAL_VOLUME]; function PaymentVolume({onNext, isEditing}: PaymentVolumeProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); - const [reimbursementAccount] = useOnyx(ONYXKEYS.REIMBURSEMENT_ACCOUNT); - const [corpayOnboardingFields] = useOnyx(ONYXKEYS.CORPAY_ONBOARDING_FIELDS); + const [reimbursementAccount] = useOnyx(ONYXKEYS.REIMBURSEMENT_ACCOUNT, {canBeMissing: false}); + const [corpayOnboardingFields] = useOnyx(ONYXKEYS.CORPAY_ONBOARDING_FIELDS, {canBeMissing: false}); const policyID = reimbursementAccount?.achData?.policyID; - const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`); + const [policy] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY}${policyID}`, {canBeMissing: false}); const currency = policy?.outputCurrency ?? ''; - const annualVolumeRangeListOptions = useMemo(() => { - if (!corpayOnboardingFields?.picklists.AnnualVolumeRange) { - return {}; - } - - return corpayOnboardingFields.picklists.AnnualVolumeRange.reduce((accumulator, currentValue) => { - accumulator[currentValue.name] = currentValue.stringValue; - return accumulator; - }, {} as Record); - }, [corpayOnboardingFields]); + const annualVolumeRangeListOptions = useMemo(() => getListOptionsFromCorpayPicklist(corpayOnboardingFields?.picklists.AnnualVolumeRange), [corpayOnboardingFields]); const annualVolumeDefaultValue = reimbursementAccount?.achData?.corpay?.[ANNUAL_VOLUME] ?? ''; diff --git a/src/pages/ReimbursementAccount/NonUSD/utils/getListOptionsFromCorpayPicklist.ts b/src/pages/ReimbursementAccount/NonUSD/utils/getListOptionsFromCorpayPicklist.ts new file mode 100644 index 000000000000..f1afecd9a0c2 --- /dev/null +++ b/src/pages/ReimbursementAccount/NonUSD/utils/getListOptionsFromCorpayPicklist.ts @@ -0,0 +1,19 @@ +import CONST from '@src/CONST'; +import type {Picklist} from '@src/types/onyx/CorpayOnboardingFields'; + +function getListOptionsFromCorpayPicklist(corpayPicklist: Picklist | undefined): Record { + if (!corpayPicklist) { + return {}; + } + + return corpayPicklist.reduce((accumulator, currentValue) => { + if (currentValue.stringValue === CONST.NON_USD_BANK_ACCOUNT.CORPAY_UNDEFINED_OPTION_VALUE) { + return accumulator; + } + + accumulator[currentValue.name] = currentValue.stringValue; + return accumulator; + }, {} as Record); +} + +export default getListOptionsFromCorpayPicklist; diff --git a/src/types/onyx/CorpayOnboardingFields.ts b/src/types/onyx/CorpayOnboardingFields.ts index b1c1bde666e8..fabe6eccb4b7 100644 --- a/src/types/onyx/CorpayOnboardingFields.ts +++ b/src/types/onyx/CorpayOnboardingFields.ts @@ -32,4 +32,4 @@ type CorpayOnboardingFields = { picklists: Record, Picklist>; }; -export default CorpayOnboardingFields; +export type {CorpayOnboardingFields, Picklist}; diff --git a/src/types/onyx/index.ts b/src/types/onyx/index.ts index 8e859de2ae01..7588584b8322 100644 --- a/src/types/onyx/index.ts +++ b/src/types/onyx/index.ts @@ -18,7 +18,7 @@ import type {AddNewCompanyCardFeed, CompanyCardFeed, FundID} from './CardFeeds'; import type CardOnWaitlist from './CardOnWaitlist'; import type {CapturedLogs, Log} from './Console'; import type {CorpayFields, CorpayFormField} from './CorpayFields'; -import type CorpayOnboardingFields from './CorpayOnboardingFields'; +import type {CorpayOnboardingFields} from './CorpayOnboardingFields'; import type Credentials from './Credentials'; import type Currency from './Currency'; import type {CurrencyList} from './Currency';