diff --git a/src/languages/de.ts b/src/languages/de.ts index a7ea2bc00753..cdf230d0c826 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -6633,6 +6633,22 @@ Fordere Spesendetails wie Belege und Beschreibungen an, lege Limits und Standard } } }, + setDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `das Standardgeschäftsbankkonto auf „${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}“ festlegen`, + removedDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `das Standard-Geschäftsbankkonto „${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}“ entfernt`, + changedDefaultBankAccount: ({ + bankAccountName, + maskedBankAccountNumber, + oldBankAccountName, + oldMaskedBankAccountNumber, + }: { + bankAccountName: string; + maskedBankAccountNumber: string; + oldBankAccountName: string; + oldMaskedBankAccountNumber: string; + }) => + `Standard-Geschäftsbankkonto geändert zu „${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}“ (zuvor „${oldBankAccountName ? `${oldBankAccountName}: ` : ''}${oldMaskedBankAccountNumber}“)`, changedInvoiceCompanyName: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => oldValue ? `den Firmennamen der Rechnung in „${newValue}“ geändert (zuvor „${oldValue}“)` : `den Rechnungsfirmennamen auf „${newValue}“ festlegen`, changedInvoiceCompanyWebsite: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => diff --git a/src/languages/en.ts b/src/languages/en.ts index 86f76fca07e7..0410a8ae96f9 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -6247,6 +6247,22 @@ const translations = { billcom: 'BILLCOM', }, workspaceActions: { + setDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `set the default business bank account to "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}"`, + removedDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `removed the default business bank account "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}"`, + changedDefaultBankAccount: ({ + bankAccountName, + maskedBankAccountNumber, + oldBankAccountName, + oldMaskedBankAccountNumber, + }: { + bankAccountName: string; + maskedBankAccountNumber: string; + oldBankAccountName: string; + oldMaskedBankAccountNumber: string; + }) => + `changed the default business bank account to "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}" (previously "${oldBankAccountName ? `${oldBankAccountName}: ` : ''}${oldMaskedBankAccountNumber}")`, changedCompanyAddress: ({newAddress, previousAddress}: {newAddress: string; previousAddress?: string}) => previousAddress ? `changed the company address to "${newAddress}" (previously "${previousAddress}")` : `set the company address to "${newAddress}"`, addApprovalRule: (approverEmail: string, approverName: string, field: string, name: string) => `added ${approverName} (${approverEmail}) as an approver for the ${field} "${name}"`, diff --git a/src/languages/es.ts b/src/languages/es.ts index 812c30796a26..da14daedbbbd 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -6003,6 +6003,22 @@ ${amount} para ${merchant} - ${date}`, billcom: 'BILLCOM', }, workspaceActions: { + setDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `estableció la cuenta bancaria de empresa predeterminada a "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}"`, + removedDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `eliminó la cuenta bancaria de empresa predeterminada "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}"`, + changedDefaultBankAccount: ({ + bankAccountName, + maskedBankAccountNumber, + oldBankAccountName, + oldMaskedBankAccountNumber, + }: { + bankAccountName: string; + maskedBankAccountNumber: string; + oldBankAccountName: string; + oldMaskedBankAccountNumber: string; + }) => + `cambió la cuenta bancaria de empresa predeterminada a "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}" (previamente "${oldBankAccountName ? `${oldBankAccountName}: ` : ''}${oldMaskedBankAccountNumber}")`, changedCompanyAddress: ({newAddress, previousAddress}: {newAddress: string; previousAddress?: string}) => previousAddress ? `cambió la dirección de la empresa a "${newAddress}" (anteriormente "${previousAddress}")` : `estableció la dirección de la empresa en "${newAddress}"`, addApprovalRule: (approverEmail, approverName, field, name) => `añadió a ${approverName} (${approverEmail}) como aprobador para la ${field} "${name}"`, diff --git a/src/languages/fr.ts b/src/languages/fr.ts index b165c0d092cb..8555deae965c 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -6648,6 +6648,22 @@ Exigez des informations de dépense comme les reçus et les descriptions, défin previousForwardsTo ? `a modifié le flux d’approbation pour ${approver} afin de ne plus transférer les rapports approuvés (auparavant transférés à ${previousForwardsTo})` : `a modifié le flux d'approbation pour ${approver} afin de ne plus transférer les rapports approuvés`, + setDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `définir le compte bancaire professionnel par défaut sur « ${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber} »`, + removedDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `a supprimé le compte bancaire professionnel par défaut « ${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber} »`, + changedDefaultBankAccount: ({ + bankAccountName, + maskedBankAccountNumber, + oldBankAccountName, + oldMaskedBankAccountNumber, + }: { + bankAccountName: string; + maskedBankAccountNumber: string; + oldBankAccountName: string; + oldMaskedBankAccountNumber: string; + }) => + `a modifié le compte bancaire professionnel par défaut en « ${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber} » (auparavant « ${oldBankAccountName ? `${oldBankAccountName}: ` : ''}${oldMaskedBankAccountNumber} »)`, changedInvoiceCompanyName: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => oldValue ? `a modifié le nom de l’entreprise sur la facture en « ${newValue} » (auparavant « ${oldValue} »)` : `définir le nom de l’entreprise de la facture sur « ${newValue} »`, changedInvoiceCompanyWebsite: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => diff --git a/src/languages/it.ts b/src/languages/it.ts index fcd7d98ceecf..da83020c7aa2 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -6619,6 +6619,22 @@ Richiedi dettagli di spesa come ricevute e descrizioni, imposta limiti e valori } } }, + setDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `imposta il conto bancario aziendale predefinito su "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}"`, + removedDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `ha rimosso il conto bancario aziendale predefinito "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}"`, + changedDefaultBankAccount: ({ + bankAccountName, + maskedBankAccountNumber, + oldBankAccountName, + oldMaskedBankAccountNumber, + }: { + bankAccountName: string; + maskedBankAccountNumber: string; + oldBankAccountName: string; + oldMaskedBankAccountNumber: string; + }) => + `ha modificato il conto bancario aziendale predefinito in "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}" (precedentemente "${oldBankAccountName ? `${oldBankAccountName}: ` : ''}${oldMaskedBankAccountNumber}")`, changedInvoiceCompanyName: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => oldValue ? `ha modificato il nome dell'azienda in fattura in "${newValue}" (precedentemente "${oldValue}")` : `imposta il nome dell’azienda della fattura su "${newValue}"`, changedInvoiceCompanyWebsite: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 780287719e0f..d485690bc23a 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -6567,6 +6567,22 @@ ${reportName} } } }, + setDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `デフォルトのビジネス銀行口座を「${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}」に設定`, + removedDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `デフォルトのビジネス銀行口座「${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}」を削除しました`, + changedDefaultBankAccount: ({ + bankAccountName, + maskedBankAccountNumber, + oldBankAccountName, + oldMaskedBankAccountNumber, + }: { + bankAccountName: string; + maskedBankAccountNumber: string; + oldBankAccountName: string; + oldMaskedBankAccountNumber: string; + }) => + `デフォルトのビジネス銀行口座を「${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}」(以前は「${oldBankAccountName ? `${oldBankAccountName}: ` : ''}${oldMaskedBankAccountNumber}」)に変更しました`, changedInvoiceCompanyName: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => oldValue ? `請求書の会社名を「${newValue}」(以前は「${oldValue}」)に変更しました` : `請求書の会社名を「${newValue}」に設定する`, changedInvoiceCompanyWebsite: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 61ebc26d9c64..b4903309037c 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -6609,6 +6609,22 @@ Vraag verplichte uitgavedetails zoals bonnetjes en beschrijvingen, stel limieten previousForwardsTo ? `heeft de goedkeuringsworkflow voor ${approver} gewijzigd zodat goedgekeurde rapporten niet meer worden doorgestuurd (voorheen doorgestuurd naar ${previousForwardsTo})` : `heeft de goedkeuringsworkflow voor ${approver} gewijzigd zodat goedgekeurde rapporten niet meer worden doorgestuurd`, + setDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `stel de standaard zakelijke bankrekening in op "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}"`, + removedDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `heeft de standaard zakelijke bankrekening "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}" verwijderd`, + changedDefaultBankAccount: ({ + bankAccountName, + maskedBankAccountNumber, + oldBankAccountName, + oldMaskedBankAccountNumber, + }: { + bankAccountName: string; + maskedBankAccountNumber: string; + oldBankAccountName: string; + oldMaskedBankAccountNumber: string; + }) => + `de standaard zakelijke bankrekening gewijzigd naar "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}" (voorheen "${oldBankAccountName ? `${oldBankAccountName}: ` : ''}${oldMaskedBankAccountNumber}")`, changedInvoiceCompanyName: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => oldValue ? `heeft de bedrijfsnaam op de factuur gewijzigd naar "${newValue}" (voorheen "${oldValue}")` : `stel de bedrijfsnaam van de factuur in op "${newValue}"`, changedInvoiceCompanyWebsite: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => diff --git a/src/languages/pl.ts b/src/languages/pl.ts index ac64fb4795f6..7590d8aefbe2 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -6596,6 +6596,22 @@ Wymagaj szczegółów wydatków, takich jak paragony i opisy, ustawiaj limity i previousForwardsTo ? `zmieniono proces zatwierdzania dla ${approver}, aby przestać przekazywać zatwierdzone raporty (wcześniej przekazywane do ${previousForwardsTo})` : `zmieniono przepływ zatwierdzania dla ${approver}, aby nie przekazywać dalej zatwierdzonych raportów`, + setDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `ustaw domyślne firmowe konto bankowe na „${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}”`, + removedDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `usunął domyślne firmowe konto bankowe „${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}”`, + changedDefaultBankAccount: ({ + bankAccountName, + maskedBankAccountNumber, + oldBankAccountName, + oldMaskedBankAccountNumber, + }: { + bankAccountName: string; + maskedBankAccountNumber: string; + oldBankAccountName: string; + oldMaskedBankAccountNumber: string; + }) => + `zmieniono domyślne firmowe konto bankowe na „${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}” (wcześniej „${oldBankAccountName ? `${oldBankAccountName}: ` : ''}${oldMaskedBankAccountNumber}”)`, changedInvoiceCompanyName: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => oldValue ? `zmienił nazwę firmy na fakturze na „${newValue}” (wcześniej „${oldValue}”)` : `ustaw nazwę firmy na fakturze na „${newValue}”`, changedInvoiceCompanyWebsite: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index a60714a8cb01..fbae8e2f612a 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -6597,6 +6597,22 @@ Exija detalhes de despesas como recibos e descrições, defina limites e padrõe } } }, + setDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `definir a conta bancária empresarial padrão como "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}"`, + removedDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `removeu a conta bancária empresarial padrão "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}"`, + changedDefaultBankAccount: ({ + bankAccountName, + maskedBankAccountNumber, + oldBankAccountName, + oldMaskedBankAccountNumber, + }: { + bankAccountName: string; + maskedBankAccountNumber: string; + oldBankAccountName: string; + oldMaskedBankAccountNumber: string; + }) => + `alterou a conta bancária empresarial padrão para "${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}" (anteriormente "${oldBankAccountName ? `${oldBankAccountName}: ` : ''}${oldMaskedBankAccountNumber}")`, changedInvoiceCompanyName: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => oldValue ? `alterou o nome da empresa da fatura para "${newValue}" (anteriormente "${oldValue}")` : `definir o nome da empresa da fatura como "${newValue}"`, changedInvoiceCompanyWebsite: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 799942fac8ca..df7a2deb94d1 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -6456,6 +6456,22 @@ ${reportName} } } }, + setDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `将默认企业银行账户设置为“${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}”`, + removedDefaultBankAccount: ({bankAccountName, maskedBankAccountNumber}: {bankAccountName: string; maskedBankAccountNumber: string}) => + `移除了默认的企业银行账户 “${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}”`, + changedDefaultBankAccount: ({ + bankAccountName, + maskedBankAccountNumber, + oldBankAccountName, + oldMaskedBankAccountNumber, + }: { + bankAccountName: string; + maskedBankAccountNumber: string; + oldBankAccountName: string; + oldMaskedBankAccountNumber: string; + }) => + `已将默认企业银行账户更改为“${bankAccountName ? `${bankAccountName}: ` : ''}${maskedBankAccountNumber}”(之前为“${oldBankAccountName ? `${oldBankAccountName}: ` : ''}${oldMaskedBankAccountNumber}”)`, changedInvoiceCompanyName: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => oldValue ? `将发票公司名称更改为“${newValue}”(之前为“${oldValue}”)` : `将发票公司名称设置为“${newValue}”`, changedInvoiceCompanyWebsite: ({newValue, oldValue}: {newValue: string; oldValue?: string}) => diff --git a/src/libs/OptionsListUtils/index.ts b/src/libs/OptionsListUtils/index.ts index c9379db1fcd8..6cdeeeba76cd 100644 --- a/src/libs/OptionsListUtils/index.ts +++ b/src/libs/OptionsListUtils/index.ts @@ -59,6 +59,7 @@ import { getRoomChangeLogMessage, getSortedReportActions, getTravelUpdateMessage, + getUpdateACHAccountMessage, getUpdateRoomDescriptionMessage, hasPendingDEWSubmit, isActionableAddPaymentCard, @@ -827,6 +828,10 @@ function getLastMessageTextForReport({ // eslint-disable-next-line @typescript-eslint/no-deprecated lastMessageTextFromReport = getPolicyChangeLogMaxExpenseAgeMessage(translateLocal, lastReportAction); } + if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT)) { + // eslint-disable-next-line @typescript-eslint/no-deprecated + lastMessageTextFromReport = getUpdateACHAccountMessage(translateLocal, lastReportAction); + } if (isActionOfType(lastReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_INVOICE_COMPANY_NAME)) { // eslint-disable-next-line @typescript-eslint/no-deprecated lastMessageTextFromReport = getInvoiceCompanyNameUpdateMessage(translateLocal, lastReportAction); diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 31c98d63b002..5b3007779a38 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -3151,6 +3151,36 @@ function getWorkspaceReimbursementUpdateMessage(translate: LocalizedTranslate, a return getReportActionText(action); } +type UpdateACHAccountOriginalMessage = { + bankAccountName?: string; + maskedBankAccountNumber?: string; + oldBankAccountName?: string; + oldMaskedBankAccountNumber?: string; +}; + +function getUpdateACHAccountMessage(translate: LocalizedTranslate, action: ReportAction): string { + const {bankAccountName, maskedBankAccountNumber, oldBankAccountName, oldMaskedBankAccountNumber} = + (getOriginalMessage(action as ReportAction) as UpdateACHAccountOriginalMessage | undefined) ?? {}; + + if (!!maskedBankAccountNumber && !oldMaskedBankAccountNumber) { + return translate('workspaceActions.setDefaultBankAccount', {bankAccountName: bankAccountName ?? '', maskedBankAccountNumber}); + } + if (!maskedBankAccountNumber && oldMaskedBankAccountNumber) { + return translate('workspaceActions.removedDefaultBankAccount', {bankAccountName: oldBankAccountName ?? '', maskedBankAccountNumber: oldMaskedBankAccountNumber}); + } + + if (!!maskedBankAccountNumber && !!oldMaskedBankAccountNumber) { + return translate('workspaceActions.changedDefaultBankAccount', { + bankAccountName: bankAccountName ?? '', + maskedBankAccountNumber, + oldBankAccountName: oldBankAccountName ?? '', + oldMaskedBankAccountNumber, + }); + } + + return getReportActionText(action); +} + function getPolicyChangeLogMaxExpenseAmountNoReceiptMessage(translate: LocalizedTranslate, action: ReportAction): string { const {oldMaxExpenseAmountNoReceipt, newMaxExpenseAmountNoReceipt, currency} = getOriginalMessage(action as ReportAction) ?? {}; @@ -3833,6 +3863,7 @@ export { getInvoiceCompanyWebsiteUpdateMessage, getReimburserUpdateMessage, getWorkspaceReimbursementUpdateMessage, + getUpdateACHAccountMessage, getWorkspaceCurrencyUpdateMessage, getWorkspaceTaxUpdateMessage, getWorkspaceFrequencyUpdateMessage, diff --git a/src/libs/ReportNameUtils.ts b/src/libs/ReportNameUtils.ts index 3038062c5eb3..def4d5714d9a 100644 --- a/src/libs/ReportNameUtils.ts +++ b/src/libs/ReportNameUtils.ts @@ -53,6 +53,7 @@ import { getReportActionMessage as getReportActionMessageFromActionsUtils, getReportActionText, getTravelUpdateMessage, + getUpdateACHAccountMessage, getWorkspaceCurrencyUpdateMessage, getWorkspaceCustomUnitRateAddedMessage, getWorkspaceCustomUnitRateDeletedMessage, @@ -456,6 +457,9 @@ function computeReportNameBasedOnReportAction( if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_TITLE)) { return getPolicyChangeLogDefaultTitleMessage(translate, parentReportAction); } + if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT)) { + return getUpdateACHAccountMessage(translate, parentReportAction); + } if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_INVOICE_COMPANY_NAME)) { // eslint-disable-next-line @typescript-eslint/no-deprecated return getInvoiceCompanyNameUpdateMessage(translateLocal, parentReportAction); diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index ae1313843602..55ba627ff16a 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -220,6 +220,7 @@ import { getSortedReportActions, getSubmitsToUpdateMessage, getTravelUpdateMessage, + getUpdateACHAccountMessage, getWorkspaceAttendeeTrackingUpdateMessage, getWorkspaceCurrencyUpdateMessage, getWorkspaceCustomUnitRateAddedMessage, @@ -5659,6 +5660,10 @@ function getReportName( // eslint-disable-next-line @typescript-eslint/no-deprecated return getWorkspaceFeatureEnabledMessage(translateLocal, parentReportAction); } + if (parentReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT) { + // eslint-disable-next-line @typescript-eslint/no-deprecated + return getUpdateACHAccountMessage(translateLocal, parentReportAction); + } if (parentReportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.MERGED_WITH_CASH_TRANSACTION) { // eslint-disable-next-line @typescript-eslint/no-deprecated return translateLocal('systemMessage.mergedWithCashTransaction'); diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index 578a11c20f93..7b6cf51eba61 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -64,6 +64,7 @@ import { getSubmitsToUpdateMessage, getTagListNameUpdatedMessage, getTravelUpdateMessage, + getUpdateACHAccountMessage, getUpdatedApprovalRuleMessage, getUpdatedAuditRateMessage, getUpdatedManualApprovalThresholdMessage, @@ -922,6 +923,8 @@ function getOptionData({ result.alternateText = getReimburserUpdateMessage(translate, lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_REIMBURSEMENT_ENABLED) { result.alternateText = getWorkspaceReimbursementUpdateMessage(translate, lastAction); + } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT) { + result.alternateText = getUpdateACHAccountMessage(translate, lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ADDRESS) { result.alternateText = getCompanyAddressUpdateMessage(translate, lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT) { diff --git a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx index 3d9856986cad..adb6465d2ef9 100644 --- a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx +++ b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx @@ -68,6 +68,7 @@ import { getSubmitsToUpdateMessage, getTagListNameUpdatedMessage, getTravelUpdateMessage, + getUpdateACHAccountMessage, getUpdatedApprovalRuleMessage, getUpdatedAuditRateMessage, getUpdatedManualApprovalThresholdMessage, @@ -759,6 +760,8 @@ const ContextMenuActions: ContextMenuAction[] = [ Clipboard.setString(getReimburserUpdateMessage(translate, reportAction)); } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_REIMBURSEMENT_ENABLED) { Clipboard.setString(getWorkspaceReimbursementUpdateMessage(translate, reportAction)); + } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT) { + Clipboard.setString(getUpdateACHAccountMessage(translate, reportAction)); } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ADDRESS) { Clipboard.setString(getCompanyAddressUpdateMessage(translate, reportAction)); } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT) { diff --git a/src/pages/home/report/PureReportActionItem.tsx b/src/pages/home/report/PureReportActionItem.tsx index 91dbe9253190..0119571e5bd3 100644 --- a/src/pages/home/report/PureReportActionItem.tsx +++ b/src/pages/home/report/PureReportActionItem.tsx @@ -105,6 +105,7 @@ import { getSubmitsToUpdateMessage, getTagListNameUpdatedMessage, getTravelUpdateMessage, + getUpdateACHAccountMessage, getUpdatedApprovalRuleMessage, getUpdatedAuditRateMessage, getUpdatedManualApprovalThresholdMessage, @@ -1500,6 +1501,8 @@ function PureReportActionItem({ children = ; } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_REIMBURSEMENT_ENABLED)) { children = ; + } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT)) { + children = ; } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ADDRESS)) { children = ; } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT)) { diff --git a/tests/unit/ReportActionsUtilsTest.ts b/tests/unit/ReportActionsUtilsTest.ts index ea289ef944c4..ce88db33d223 100644 --- a/tests/unit/ReportActionsUtilsTest.ts +++ b/tests/unit/ReportActionsUtilsTest.ts @@ -23,6 +23,7 @@ import { getPolicyChangeLogMaxExpenseAmountNoReceiptMessage, getReportActionActorAccountID, getSendMoneyFlowAction, + getUpdateACHAccountMessage, isIOUActionMatchingTransactionList, } from '../../src/libs/ReportActionsUtils'; import {buildOptimisticCreatedReportForUnapprovedAction} from '../../src/libs/ReportUtils'; @@ -2531,6 +2532,126 @@ describe('ReportActionsUtils', () => { }); }); + describe('getUpdateACHAccountMessage', () => { + it('should return "set" message when setting the default bank account for the first time', () => { + // Given an UPDATE_ACH_ACCOUNT action with only new bank account info + const action = { + actionName: CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT, + reportActionID: '1', + created: '', + originalMessage: { + bankAccountName: 'Business Checking', + maskedBankAccountNumber: 'XXXX1234', + }, + } as ReportAction; + + // When getting the update message + const result = getUpdateACHAccountMessage(translateLocal, action); + + // Then it should return the correct message + expect(result).toBe('set the default business bank account to "Business Checking: XXXX1234"'); + }); + + it('should return "set" message without bank name when bankAccountName is empty', () => { + // Given an UPDATE_ACH_ACCOUNT action with only new bank account maskedBankAccountNumber + const action = { + actionName: CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT, + reportActionID: '1', + created: '', + originalMessage: { + bankAccountName: '', + maskedBankAccountNumber: 'XXXX1234', + }, + } as ReportAction; + + // When getting the update message + const result = getUpdateACHAccountMessage(translateLocal, action); + + // Then it should return the correct message + expect(result).toBe('set the default business bank account to "XXXX1234"'); + }); + + it('should return "removed" message when removing the default bank account', () => { + // Given an UPDATE_ACH_ACCOUNT action with only old bank account info + const action = { + actionName: CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT, + reportActionID: '1', + created: '', + originalMessage: { + oldBankAccountName: 'Business Checking', + oldMaskedBankAccountNumber: 'XXXX5678', + }, + } as ReportAction; + + // When getting the update message + const result = getUpdateACHAccountMessage(translateLocal, action); + + // Then it should return the correct message + expect(result).toBe('removed the default business bank account "Business Checking: XXXX5678"'); + }); + + it('should return "removed" message without bank name when oldBankAccountName is empty', () => { + // Given an UPDATE_ACH_ACCOUNT action with only old bank account maskedBankAccountNumber + const action = { + actionName: CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT, + reportActionID: '1', + created: '', + originalMessage: { + oldBankAccountName: '', + oldMaskedBankAccountNumber: 'XXXX5678', + }, + } as ReportAction; + + // When getting the update message + const result = getUpdateACHAccountMessage(translateLocal, action); + + // Then it should return the correct message + expect(result).toBe('removed the default business bank account "XXXX5678"'); + }); + + it('should return "changed" message when changing from one bank account to another', () => { + // Given an UPDATE_ACH_ACCOUNT action with both new and old bank account info + const action = { + actionName: CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT, + reportActionID: '1', + created: '', + originalMessage: { + bankAccountName: 'Savings Account', + maskedBankAccountNumber: 'XXXX5678', + oldBankAccountName: 'Business Checking', + oldMaskedBankAccountNumber: 'XXXX1234', + }, + } as ReportAction; + + // When getting the update message + const result = getUpdateACHAccountMessage(translateLocal, action); + + // Then it should return the correct message + expect(result).toBe('changed the default business bank account to "Savings Account: XXXX5678" (previously "Business Checking: XXXX1234")'); + }); + + it('should return "changed" message with partial bank names when some names are empty', () => { + // Given an UPDATE_ACH_ACCOUNT action where new bank has a name but old bank does not + const action = { + actionName: CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT, + reportActionID: '1', + created: '', + originalMessage: { + bankAccountName: 'Savings Account', + maskedBankAccountNumber: 'XXXX5678', + oldBankAccountName: '', + oldMaskedBankAccountNumber: 'XXXX1234', + }, + } as ReportAction; + + // When getting the update message + const result = getUpdateACHAccountMessage(translateLocal, action); + + // Then it should return the correct message + expect(result).toBe('changed the default business bank account to "Savings Account: XXXX5678" (previously "XXXX1234")'); + }); + }); + describe('getWorkspaceCustomUnitRateUpdatedMessage', () => { it('should return the correct message when a rate is enabled', () => { const action: ReportAction = {