diff --git a/src/languages/de.ts b/src/languages/de.ts index 13620fbb57544..5463837134a20 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -2680,6 +2680,8 @@ const translations = { validationAmounts: 'Die eingegebenen Validierungsbeträge sind falsch. Bitte überprüfen Sie Ihren Kontoauszug und versuchen Sie es erneut.', fullName: 'Bitte geben Sie einen gültigen vollständigen Namen ein', ownershipPercentage: 'Bitte geben Sie eine gültige Prozentzahl ein.', + deletePaymentBankAccount: + 'Dieses Bankkonto kann nicht gelöscht werden, da es für Expensify-Karten-Zahlungen verwendet wird. Wenn Sie dieses Konto trotzdem löschen möchten, wenden Sie sich bitte an den Concierge.', }, }, addPersonalBankAccount: { diff --git a/src/languages/en.ts b/src/languages/en.ts index ed049e8e6db15..d409e539849b8 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -2676,6 +2676,8 @@ const translations = { validationAmounts: 'The validation amounts you entered are incorrect. Please double check your bank statement and try again.', fullName: 'Please enter a valid full name', ownershipPercentage: 'Please enter a valid percentage number', + deletePaymentBankAccount: + "This bank account can't be deleted because it is used for Expensify Card payments. If you would still like to delete this account, please reach out to Concierge.", }, }, addPersonalBankAccount: { diff --git a/src/languages/es.ts b/src/languages/es.ts index 660f47963e3a7..802f5702bdab1 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -2665,6 +2665,8 @@ const translations = { validationAmounts: 'Los importes de validación que introduciste son incorrectos. Por favor, comprueba tu cuenta bancaria e inténtalo de nuevo.', fullName: 'Por favor, introduce un nombre completo válido', ownershipPercentage: 'Por favor, ingrese un número de porcentaje válido', + deletePaymentBankAccount: + 'Esta cuenta bancaria no se puede eliminar porque se utiliza para pagos con la tarjeta Expensify. Si aún deseas eliminar esta cuenta, por favor contacta con Concierge.', }, }, addPersonalBankAccount: { diff --git a/src/languages/fr.ts b/src/languages/fr.ts index c2c43f1c2d1f9..632e0e8f609c3 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -2682,6 +2682,8 @@ const translations = { validationAmounts: 'Les montants de validation que vous avez saisis sont incorrects. Veuillez vérifier votre relevé bancaire et réessayer.', fullName: 'Veuillez entrer un nom complet valide', ownershipPercentage: 'Veuillez entrer un nombre en pourcentage valide', + deletePaymentBankAccount: + 'Ce compte bancaire ne peut pas être supprimé car il est utilisé pour les paiements par carte Expensify. Si vous souhaitez toujours supprimer ce compte, veuillez contacter le Concierge.', }, }, addPersonalBankAccount: { diff --git a/src/languages/it.ts b/src/languages/it.ts index a93da7a2fa7d5..65e47b83d4676 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -2692,6 +2692,8 @@ const translations = { validationAmounts: "Gli importi di convalida inseriti non sono corretti. Si prega di ricontrollare l'estratto conto bancario e riprovare.", fullName: 'Per favore, inserisci un nome completo valido', ownershipPercentage: 'Per favore, inserisci un numero percentuale valido', + deletePaymentBankAccount: + 'Questo conto bancario non può essere eliminato perché viene utilizzato per i pagamenti con la carta Expensify. Se desideri comunque eliminare questo conto, contatta il Concierge.', }, }, addPersonalBankAccount: { diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 8f63f29acb8bc..088802b7b1c7e 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -2700,6 +2700,7 @@ const translations = { validationAmounts: '入力された検証金額が正しくありません。銀行の明細をもう一度確認して、再試行してください。', fullName: '有効なフルネームを入力してください', ownershipPercentage: '有効なパーセンテージの数字を入力してください', + deletePaymentBankAccount: 'この銀行口座はExpensifyカードの支払いに使用されているため、削除できません。それでもこの口座を削除したい場合は、コンシェルジュにお問い合わせください。', }, }, addPersonalBankAccount: { diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 164ffed215c9f..145b6ae475ecd 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -2699,6 +2699,8 @@ const translations = { validationAmounts: 'De ingevoerde validatiebedragen zijn onjuist. Controleer uw bankafschrift en probeer het opnieuw.', fullName: 'Voer een geldige volledige naam in alstublieft', ownershipPercentage: 'Voer een geldig percentage in.', + deletePaymentBankAccount: + 'To konto bankowe nie może zostać usunięte, ponieważ jest używane do płatności kartą Expensify. Jeśli mimo to chcesz usunąć to konto, skontaktuj się z Concierge.', }, }, addPersonalBankAccount: { diff --git a/src/languages/pl.ts b/src/languages/pl.ts index b59ff887699e3..ffa50db4d5f40 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -2693,6 +2693,8 @@ const translations = { validationAmounts: 'Kwoty weryfikacyjne, które wprowadziłeś, są nieprawidłowe. Proszę dokładnie sprawdzić wyciąg bankowy i spróbować ponownie.', fullName: 'Proszę wprowadzić prawidłowe pełne imię i nazwisko', ownershipPercentage: 'Proszę wprowadzić prawidłową liczbę procentową', + deletePaymentBankAccount: + 'To konto bankowe nie może zostać usunięte, ponieważ jest używane do płatności kartą Expensify. Jeśli mimo to chcesz usunąć to konto, skontaktuj się z Concierge.', }, }, addPersonalBankAccount: { diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 9587e255fe16d..c316716396999 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -2697,6 +2697,8 @@ const translations = { validationAmounts: 'Os valores de validação que você inseriu estão incorretos. Por favor, verifique novamente seu extrato bancário e tente novamente.', fullName: 'Por favor, insira um nome completo válido.', ownershipPercentage: 'Por favor, insira um número percentual válido', + deletePaymentBankAccount: + 'Este banco conta não pode ser excluída porque é usada para pagamentos do Cartão Expensify. Se ainda assim deseja excluir essa conta, entre em contato com o Concierge.', }, }, addPersonalBankAccount: { diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 11a7e8811e37f..3d02040ca80bb 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -2669,6 +2669,7 @@ const translations = { validationAmounts: '您输入的验证金额不正确。请仔细检查您的银行对账单,然后重试。', fullName: '请输入有效的全名', ownershipPercentage: '请输入一个有效的百分比数字', + deletePaymentBankAccount: '由于该银行账户用于Expensify卡支付,因此无法删除。如果您仍希望删除此账户,请联系Concierge。', }, }, addPersonalBankAccount: { diff --git a/src/libs/actions/BankAccounts.ts b/src/libs/actions/BankAccounts.ts index 1bf0a5d5d1e1f..604fe4fc09b27 100644 --- a/src/libs/actions/BankAccounts.ts +++ b/src/libs/actions/BankAccounts.ts @@ -1,3 +1,4 @@ +import type {OnyxEntry} from 'react-native-onyx'; import Onyx from 'react-native-onyx'; import type {FormInputErrors, FormOnyxValues} from '@components/Form/types'; import type {OnfidoDataWithApplicantID} from '@components/Onfido/types'; @@ -26,6 +27,7 @@ import ROUTES from '@src/ROUTES'; import type {Route} from '@src/ROUTES'; import type {InternationalBankAccountForm, PersonalBankAccountForm} from '@src/types/form'; import type {ACHContractStepProps, BeneficialOwnersStepProps, CompanyStepProps, ReimbursementAccountForm, RequestorStepProps} from '@src/types/form/ReimbursementAccountForm'; +import type {LastPaymentMethod, PersonalBankAccount} from '@src/types/onyx'; import type PlaidBankAccount from '@src/types/onyx/PlaidBankAccount'; import type {BankAccountStep, ReimbursementAccountStep, ReimbursementAccountSubStep} from '@src/types/onyx/ReimbursementAccount'; import type {OnyxData} from '@src/types/onyx/Request'; @@ -285,9 +287,15 @@ function addPersonalBankAccount(account: PlaidBankAccount, policyID?: string, so API.write(WRITE_COMMANDS.ADD_PERSONAL_BANK_ACCOUNT, parameters, onyxData); } -function deletePaymentBankAccount(bankAccountID: number) { +function deletePaymentBankAccount(bankAccountID: number, lastUsedPaymentMethods?: LastPaymentMethod, bankAccount?: OnyxEntry) { const parameters: DeletePaymentBankAccountParams = {bankAccountID}; + const bankAccountFailureData = { + ...bankAccount, + errors: getMicroSecondOnyxErrorWithTranslationKey('bankAccount.error.deletePaymentBankAccount'), + pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE, + }; + const onyxData: OnyxData = { optimisticData: [ { @@ -306,6 +314,16 @@ function deletePaymentBankAccount(bankAccountID: number) { value: {[bankAccountID]: null}, }, ], + + failureData: [ + { + onyxMethod: Onyx.METHOD.SET, + key: `${ONYXKEYS.BANK_ACCOUNT_LIST}`, + value: { + [bankAccountID]: bankAccountFailureData, + }, + }, + ], }; API.write(WRITE_COMMANDS.DELETE_PAYMENT_BANK_ACCOUNT, parameters, onyxData); diff --git a/src/pages/settings/Wallet/WalletPage/WalletPage.tsx b/src/pages/settings/Wallet/WalletPage/WalletPage.tsx index 34a384bffc13a..1fcb1920c9389 100644 --- a/src/pages/settings/Wallet/WalletPage/WalletPage.tsx +++ b/src/pages/settings/Wallet/WalletPage/WalletPage.tsx @@ -294,11 +294,12 @@ function WalletPage({shouldListenForResize = false}: WalletPageProps) { const bankAccountID = paymentMethod.selectedPaymentMethod.bankAccountID; const fundID = paymentMethod.selectedPaymentMethod.fundID; if (paymentMethod.selectedPaymentMethodType === CONST.PAYMENT_METHODS.PERSONAL_BANK_ACCOUNT && bankAccountID) { - deletePaymentBankAccount(bankAccountID); + const bankAccount = bankAccountList?.[paymentMethod.methodID] ?? {}; + deletePaymentBankAccount(bankAccountID, undefined, bankAccount); } else if (paymentMethod.selectedPaymentMethodType === CONST.PAYMENT_METHODS.DEBIT_CARD && fundID) { deletePaymentCard(fundID); } - }, [paymentMethod.selectedPaymentMethod.bankAccountID, paymentMethod.selectedPaymentMethod.fundID, paymentMethod.selectedPaymentMethodType]); + }, [paymentMethod.selectedPaymentMethod.bankAccountID, paymentMethod.selectedPaymentMethod.fundID, paymentMethod.selectedPaymentMethodType, paymentMethod.methodID, bankAccountList]); /** * Navigate to the appropriate page after completing the KYC flow, depending on what initiated it