diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 81c50c890eb3..ea7cacf8726a 100644 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -1582,6 +1582,7 @@ const CONST = { UPDATE_MANUAL_APPROVAL_THRESHOLD: 'POLICYCHANGELOG_UPDATE_MANUAL_APPROVAL_THRESHOLD', UPDATE_MAX_EXPENSE_AMOUNT: 'POLICYCHANGELOG_UPDATE_MAX_EXPENSE_AMOUNT', UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT: 'POLICYCHANGELOG_UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT', + UPDATE_MAX_EXPENSE_AMOUNT_NO_ITEMIZED_RECEIPT: 'POLICYCHANGELOG_UPDATE_MAX_EXPENSE_AMOUNT_NO_ITEMIZED_RECEIPT', UPDATE_MAX_EXPENSE_AGE: 'POLICYCHANGELOG_UPDATE_MAX_EXPENSE_AGE', UPDATE_MULTIPLE_TAGS_APPROVER_RULES: 'POLICYCHANGELOG_UPDATE_MULTIPLE_TAGS_APPROVER_RULES', UPDATE_NAME: 'POLICYCHANGELOG_UPDATE_NAME', diff --git a/src/languages/de.ts b/src/languages/de.ts index 562881c135ee..e71d1dd7f8a7 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -7313,7 +7313,10 @@ Fügen Sie weitere Ausgabelimits hinzu, um den Cashflow Ihres Unternehmens zu sc }, setReceiptRequiredAmount: (newValue: string) => `Belegpflichtigen Betrag auf „${newValue}“ festlegen`, changedReceiptRequiredAmount: (oldValue: string, newValue: string) => `Belegpflichtbetrag auf „${newValue}“ geändert (zuvor „${oldValue}“)`, - removedReceiptRequiredAmount: (oldValue: string) => `Belegpflichtigen Betrag entfernt (zuvor „${oldValue}“)`, + removedReceiptRequiredAmount: (oldValue: string) => `Belegpflichtigen Betrag entfernt (zuvor „${oldValue}”)`, + setItemizedReceiptRequiredAmount: (newValue: string) => `Betrag für Pflicht zur Einzelauflistung auf „${newValue}” festgelegt`, + changedItemizedReceiptRequiredAmount: (oldValue: string, newValue: string) => `erforderlichen Betrag des aufgeschlüsselten Belegs auf „${newValue}” geändert (zuvor „${oldValue}”)`, + removedItemizedReceiptRequiredAmount: (oldValue: string) => `Betrag für obligatorische Einzelpostenbelege entfernt (zuvor „${oldValue}”)`, setMaxExpenseAmount: (newValue: string) => `maximalen Ausgabenbetrag auf „${newValue}“ festlegen`, changedMaxExpenseAmount: (oldValue: string, newValue: string) => `hat den maximalen Ausgabenbetrag auf „${newValue}“ geändert (zuvor „${oldValue}“)`, removedMaxExpenseAmount: (oldValue: string) => `maximale Ausgabenhöhe entfernt (zuvor „${oldValue}“)`, diff --git a/src/languages/en.ts b/src/languages/en.ts index bb3359169c1a..ee812f8f9116 100644 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -7437,6 +7437,9 @@ const translations = { setReceiptRequiredAmount: (newValue: string) => `set receipt required amount to "${newValue}"`, changedReceiptRequiredAmount: (oldValue: string, newValue: string) => `changed receipt required amount to "${newValue}" (previously "${oldValue}")`, removedReceiptRequiredAmount: (oldValue: string) => `removed receipt required amount (previously "${oldValue}")`, + setItemizedReceiptRequiredAmount: (newValue: string) => `set itemized receipt required amount to "${newValue}"`, + changedItemizedReceiptRequiredAmount: (oldValue: string, newValue: string) => `changed itemized receipt required amount to "${newValue}" (previously "${oldValue}")`, + removedItemizedReceiptRequiredAmount: (oldValue: string) => `removed itemized receipt required amount (previously "${oldValue}")`, setMaxExpenseAmount: (newValue: string) => `set max expense amount to "${newValue}"`, changedMaxExpenseAmount: (oldValue: string, newValue: string) => `changed max expense amount to "${newValue}" (previously "${oldValue}")`, removedMaxExpenseAmount: (oldValue: string) => `removed max expense amount (previously "${oldValue}")`, diff --git a/src/languages/es.ts b/src/languages/es.ts index c5d180f627ab..de0446ccb572 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -7001,6 +7001,9 @@ ${amount} para ${merchant} - ${date}`, setReceiptRequiredAmount: (newValue) => `estableció el importe requerido del recibo en "${newValue}"`, changedReceiptRequiredAmount: (oldValue, newValue) => `cambió el importe requerido del recibo a "${newValue}" (antes "${oldValue}")`, removedReceiptRequiredAmount: (oldValue) => `eliminó el importe requerido del recibo (antes "${oldValue}")`, + setItemizedReceiptRequiredAmount: (newValue) => `estableció el importe requerido del recibo detallado en "${newValue}"`, + changedItemizedReceiptRequiredAmount: (oldValue, newValue) => `cambió el importe requerido del recibo detallado a "${newValue}" (antes "${oldValue}")`, + removedItemizedReceiptRequiredAmount: (oldValue) => `eliminó el importe requerido del recibo detallado (antes "${oldValue}")`, setMaxExpenseAmount: (newValue) => `estableció el importe máximo del gasto en "${newValue}"`, changedMaxExpenseAmount: (oldValue, newValue) => `cambió el importe máximo del gasto a "${newValue}" (antes "${oldValue}")`, diff --git a/src/languages/fr.ts b/src/languages/fr.ts index 94e116020874..7e4d3e84c70e 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -7335,6 +7335,9 @@ Ajoutez davantage de règles de dépenses pour protéger la trésorerie de l’e setReceiptRequiredAmount: (newValue: string) => `définir le montant de reçu obligatoire sur « ${newValue} »`, changedReceiptRequiredAmount: (oldValue: string, newValue: string) => `a modifié le montant requis pour le reçu à « ${newValue} » (auparavant « ${oldValue} »)`, removedReceiptRequiredAmount: (oldValue: string) => `a supprimé le montant requis pour le reçu (précédemment « ${oldValue} »)`, + setItemizedReceiptRequiredAmount: (newValue: string) => `définir le montant requis pour le reçu détaillé sur « ${newValue} »`, + changedItemizedReceiptRequiredAmount: (oldValue: string, newValue: string) => `a modifié le montant requis pour le reçu détaillé à « ${newValue} » (auparavant « ${oldValue} »)`, + removedItemizedReceiptRequiredAmount: (oldValue: string) => `a supprimé le montant requis pour le reçu détaillé (précédemment « ${oldValue} »)`, setMaxExpenseAmount: (newValue: string) => `définir le montant maximal de dépense sur « ${newValue} »`, changedMaxExpenseAmount: (oldValue: string, newValue: string) => `montant maximal de dépense modifié en « ${newValue} » (précédemment « ${oldValue} »)`, removedMaxExpenseAmount: (oldValue: string) => `montant de dépense maximal supprimé (précédemment « ${oldValue} »)`, diff --git a/src/languages/it.ts b/src/languages/it.ts index 4e3f1d08de42..8b21d0001f7a 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -7300,6 +7300,10 @@ Aggiungi altre regole di spesa per proteggere il flusso di cassa aziendale.`, setReceiptRequiredAmount: (newValue: string) => `imposta l’importo richiesto per la ricevuta su "${newValue}"`, changedReceiptRequiredAmount: (oldValue: string, newValue: string) => `ha modificato l’importo richiesto per la ricevuta in "${newValue}" (in precedenza "${oldValue}")`, removedReceiptRequiredAmount: (oldValue: string) => `ha rimosso l’importo richiesto per la ricevuta (in precedenza «${oldValue}»)`, + setItemizedReceiptRequiredAmount: (newValue: string) => `imposta l’importo richiesto per la ricevuta con voci singole su "${newValue}"`, + changedItemizedReceiptRequiredAmount: (oldValue: string, newValue: string) => + `ha modificato l’importo richiesto per la ricevuta con voci a "${newValue}" (in precedenza "${oldValue}")`, + removedItemizedReceiptRequiredAmount: (oldValue: string) => `ha rimosso l’importo richiesto per la ricevuta dettagliata (precedentemente "${oldValue}")`, setMaxExpenseAmount: (newValue: string) => `imposta l’importo massimo della spesa su "${newValue}"`, changedMaxExpenseAmount: (oldValue: string, newValue: string) => `ha modificato l'importo massimo della spesa a "${newValue}" (precedentemente "${oldValue}")`, removedMaxExpenseAmount: (oldValue: string) => `importo massimo spesa rimosso (precedentemente "${oldValue}")`, diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 228e9d37a34d..bce46aaa140d 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -7213,6 +7213,9 @@ ${reportName} setReceiptRequiredAmount: (newValue: string) => `必要な領収書金額を「${newValue}」に設定`, changedReceiptRequiredAmount: (oldValue: string, newValue: string) => `領収書必須金額を「${newValue}」(以前は「${oldValue}」)に変更しました`, removedReceiptRequiredAmount: (oldValue: string) => `必須領収書金額を削除しました(以前の値:「${oldValue}」)`, + setItemizedReceiptRequiredAmount: (newValue: string) => `明細付き領収書の必須金額を「${newValue}」に設定しました`, + changedItemizedReceiptRequiredAmount: (oldValue: string, newValue: string) => `品目別レシートの必須金額を「${newValue}」(以前は「${oldValue}」)に変更しました`, + removedItemizedReceiptRequiredAmount: (oldValue: string) => `品目別レシートの必須金額を削除しました(以前の値:「${oldValue}」)`, setMaxExpenseAmount: (newValue: string) => `最大経費金額を「${newValue}」に設定`, changedMaxExpenseAmount: (oldValue: string, newValue: string) => `上限経費額を「${newValue}」に変更しました(以前は「${oldValue}」)`, removedMaxExpenseAmount: (oldValue: string) => `最大経費金額を削除しました(以前の値: 「${oldValue}」)`, diff --git a/src/languages/nl.ts b/src/languages/nl.ts index 4e0bad97ba01..130b06a3ddc6 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -7278,6 +7278,10 @@ Voeg meer bestedingsregels toe om de kasstroom van het bedrijf te beschermen.`, setReceiptRequiredAmount: (newValue: string) => `stel het vereiste bonbedrag in op "${newValue}"`, changedReceiptRequiredAmount: (oldValue: string, newValue: string) => `heeft het vereiste bonbedrag gewijzigd naar "${newValue}" (voorheen "${oldValue}")`, removedReceiptRequiredAmount: (oldValue: string) => `vereiste bedrag op verwijderde bon (voorheen “${oldValue}”)`, + setItemizedReceiptRequiredAmount: (newValue: string) => `stel het vereiste bedrag voor de gespecificeerde bon in op "${newValue}"`, + changedItemizedReceiptRequiredAmount: (oldValue: string, newValue: string) => + `heeft het vereiste bedrag voor gespecificeerde bonnen gewijzigd naar "${newValue}" (voorheen "${oldValue}")`, + removedItemizedReceiptRequiredAmount: (oldValue: string) => `vereist bedrag voor gespecificeerde bon verwijderd (voorheen "${oldValue}")`, setMaxExpenseAmount: (newValue: string) => `maximumbedrag voor uitgave instellen op "${newValue}"`, changedMaxExpenseAmount: (oldValue: string, newValue: string) => `maximale onkostensom gewijzigd naar "${newValue}" (voorheen "${oldValue}")`, removedMaxExpenseAmount: (oldValue: string) => `maximaal bedrag voor uitgave verwijderd (voorheen "${oldValue}")`, diff --git a/src/languages/pl.ts b/src/languages/pl.ts index e0afd753dc80..5b8d5db80317 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -7268,6 +7268,9 @@ Dodaj więcej zasad wydatków, żeby chronić płynność finansową firmy.`, setReceiptRequiredAmount: (newValue: string) => `ustaw wymaganą kwotę paragonu na „${newValue}”`, changedReceiptRequiredAmount: (oldValue: string, newValue: string) => `zmienił(a) wymaganą kwotę paragonu na „${newValue}” (wcześniej „${oldValue}”)`, removedReceiptRequiredAmount: (oldValue: string) => `usunięto wymagany limit paragonu (wcześniej „${oldValue}”)`, + setItemizedReceiptRequiredAmount: (newValue: string) => `ustaw wymaganą kwotę z wyszczególnionego paragonu na „${newValue}”`, + changedItemizedReceiptRequiredAmount: (oldValue: string, newValue: string) => `zmienił wymaganą kwotę za zindeksowany paragon na „${newValue}” (wcześniej „${oldValue}”)`, + removedItemizedReceiptRequiredAmount: (oldValue: string) => `usunięto wymaganą kwotę z rozbitego paragonu (wcześniej „${oldValue}”)`, setMaxExpenseAmount: (newValue: string) => `ustaw maksymalną kwotę wydatku na „${newValue}”`, changedMaxExpenseAmount: (oldValue: string, newValue: string) => `zmieniono maksymalną kwotę wydatku na „${newValue}” (wcześniej „${oldValue}”)`, removedMaxExpenseAmount: (oldValue: string) => `usunięto maksymalną kwotę wydatku (wcześniej „${oldValue}”)`, diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 4eed9ac82355..56ae32633185 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -7270,6 +7270,9 @@ Adicione mais regras de gasto para proteger o fluxo de caixa da empresa.`, setReceiptRequiredAmount: (newValue: string) => `definir valor exigido do recibo como "${newValue}"`, changedReceiptRequiredAmount: (oldValue: string, newValue: string) => `alterou o valor obrigatório do recibo para "${newValue}" (antes "${oldValue}")`, removedReceiptRequiredAmount: (oldValue: string) => `removeu o valor obrigatório do recibo (antes era "${oldValue}")`, + setItemizedReceiptRequiredAmount: (newValue: string) => `definir o valor obrigatório do recibo detalhado como "${newValue}"`, + changedItemizedReceiptRequiredAmount: (oldValue: string, newValue: string) => `alterou o valor obrigatório do recibo detalhado para "${newValue}" (antes "${oldValue}")`, + removedItemizedReceiptRequiredAmount: (oldValue: string) => `removeu o valor exigido de recibo detalhado (antes era "${oldValue}")`, setMaxExpenseAmount: (newValue: string) => `definir valor máximo da despesa como "${newValue}"`, changedMaxExpenseAmount: (oldValue: string, newValue: string) => `alterou o valor máximo da despesa para "${newValue}" (antes "${oldValue}")`, removedMaxExpenseAmount: (oldValue: string) => `removeu o valor máximo de despesa (anteriormente "${oldValue}")`, diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index 038d18646407..8a95544194d1 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -7087,7 +7087,10 @@ ${reportName} setReceiptRequiredAmount: (newValue: string) => `将需要收据的金额设置为“${newValue}”`, changedReceiptRequiredAmount: (oldValue: string, newValue: string) => `已将所需收据金额更改为“${newValue}”(之前为“${oldValue}”)`, removedReceiptRequiredAmount: (oldValue: string) => `已移除所需收据金额(先前为“${oldValue}”)`, - setMaxExpenseAmount: (newValue: string) => `将最高报销金额设置为“${newValue}”`, + setItemizedReceiptRequiredAmount: (newValue: string) => `将分项收据所需金额设置为”${newValue}”`, + changedItemizedReceiptRequiredAmount: (oldValue: string, newValue: string) => `将逐项列示收据的必填金额更改为 “${newValue}”(之前为 “${oldValue}”)`, + removedItemizedReceiptRequiredAmount: (oldValue: string) => `已移除按项目明细收据所需金额(先前为”${oldValue}”)`, + setMaxExpenseAmount: (newValue: string) => `将最高报销金额设置为”${newValue}”`, changedMaxExpenseAmount: (oldValue: string, newValue: string) => `将最高报销金额更改为 “${newValue}”(之前为 “${oldValue}”)`, removedMaxExpenseAmount: (oldValue: string) => `已移除最⾼报销金额(原为“${oldValue}”)`, setMaxExpenseAge: (newValue: string) => `将最大报销天数设置为“${newValue}”天`, diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 2d9908d1d569..0f1867e347fe 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -3677,6 +3677,30 @@ function getPolicyChangeLogMaxExpenseAmountNoReceiptMessage(translate: Localized return getReportActionText(action); } +function getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage(translate: LocalizedTranslate, action: ReportAction): string { + const {oldMaxExpenseAmountNoItemizedReceipt, newMaxExpenseAmountNoItemizedReceipt, currency} = + getOriginalMessage(action as ReportAction) ?? {}; + + if (typeof oldMaxExpenseAmountNoItemizedReceipt === 'number' && typeof newMaxExpenseAmountNoItemizedReceipt === 'number') { + const isOldLimitDisabled = oldMaxExpenseAmountNoItemizedReceipt === CONST.DISABLED_MAX_EXPENSE_VALUE; + const isNewLimitDisabled = newMaxExpenseAmountNoItemizedReceipt === CONST.DISABLED_MAX_EXPENSE_VALUE; + const oldValue = isOldLimitDisabled ? '' : convertToDisplayString(oldMaxExpenseAmountNoItemizedReceipt, currency); + const newValue = isNewLimitDisabled ? '' : convertToDisplayString(newMaxExpenseAmountNoItemizedReceipt, currency); + + if (isOldLimitDisabled && !isNewLimitDisabled) { + return translate('workspaceActions.setItemizedReceiptRequiredAmount', newValue); + } + + if (!isOldLimitDisabled && isNewLimitDisabled) { + return translate('workspaceActions.removedItemizedReceiptRequiredAmount', oldValue); + } + + return translate('workspaceActions.changedItemizedReceiptRequiredAmount', oldValue, newValue); + } + + return getReportActionText(action); +} + function getPolicyChangeLogMaxExpenseAmountMessage(translate: LocalizedTranslate, action: ReportAction): string { const {oldMaxExpenseAmount, newMaxExpenseAmount, currency} = getOriginalMessage(action as ReportAction) ?? {}; @@ -3992,7 +4016,7 @@ function getUpdatedManualApprovalThresholdMessage(translate: LocalizedTranslate, currency = CONST.CURRENCY.USD, } = getOriginalMessage(reportAction as ReportAction) ?? {}; - if (typeof oldLimit !== 'number' || typeof oldLimit !== 'number') { + if (typeof oldLimit !== 'number' || typeof newLimit !== 'number') { return getReportActionText(reportAction); } return translate('workspaceActions.updatedManualApprovalThreshold', {oldLimit: convertToDisplayString(oldLimit, currency), newLimit: convertToDisplayString(newLimit, currency)}); @@ -4749,6 +4773,7 @@ export { getForeignCurrencyDefaultTaxUpdateMessage, getWorkspaceFrequencyUpdateMessage, getPolicyChangeLogMaxExpenseAmountNoReceiptMessage, + getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage, getPolicyChangeLogMaxExpenseAmountMessage, getPolicyChangeLogMaxExpenseAgeMessage, getPolicyChangeLogDefaultBillableMessage, diff --git a/src/libs/ReportNameUtils.ts b/src/libs/ReportNameUtils.ts index e8e5b7651d2c..bcdb1e4117a2 100644 --- a/src/libs/ReportNameUtils.ts +++ b/src/libs/ReportNameUtils.ts @@ -66,6 +66,7 @@ import { getPolicyChangeLogDefaultTitleMessage, getPolicyChangeLogMaxExpenseAgeMessage, getPolicyChangeLogMaxExpenseAmountMessage, + getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage, getPolicyChangeLogMaxExpenseAmountNoReceiptMessage, getReimburserUpdateMessage, getRemovedCardFeedMessage, @@ -548,6 +549,10 @@ function computeReportNameBasedOnReportAction( return getPolicyChangeLogMaxExpenseAmountNoReceiptMessage(translate, parentReportAction); } + if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_ITEMIZED_RECEIPT)) { + return getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage(translate, parentReportAction); + } + if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_REIMBURSEMENT_ENABLED)) { return getWorkspaceReimbursementUpdateMessage(translate, parentReportAction); } diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index 54fbfc2550c3..77ad8afa4727 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -72,6 +72,7 @@ import { getPolicyChangeLogEmployeeLeftMessage, getPolicyChangeLogMaxExpenseAgeMessage, getPolicyChangeLogMaxExpenseAmountMessage, + getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage, getPolicyChangeLogMaxExpenseAmountNoReceiptMessage, getPolicyChangeLogUpdateEmployee, getReimburserUpdateMessage, @@ -1037,6 +1038,8 @@ function getOptionData({ result.alternateText = getCompanyAddressUpdateMessage(translate, lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT) { result.alternateText = getPolicyChangeLogMaxExpenseAmountNoReceiptMessage(translate, lastAction); + } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_ITEMIZED_RECEIPT) { + result.alternateText = getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage(translate, lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT) { result.alternateText = getPolicyChangeLogMaxExpenseAmountMessage(translate, lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AGE) { diff --git a/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx b/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx index 8484702fa9af..19b278091948 100644 --- a/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx +++ b/src/pages/inbox/report/ContextMenu/ContextMenuActions.tsx @@ -71,6 +71,7 @@ import { getPolicyChangeLogDeleteMemberMessage, getPolicyChangeLogMaxExpenseAgeMessage, getPolicyChangeLogMaxExpenseAmountMessage, + getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage, getPolicyChangeLogMaxExpenseAmountNoReceiptMessage, getPolicyChangeLogUpdateEmployee, getReimburserUpdateMessage, @@ -949,6 +950,8 @@ const ContextMenuActions: ContextMenuAction[] = [ Clipboard.setString(getCompanyAddressUpdateMessage(translate, reportAction)); } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT) { Clipboard.setString(getPolicyChangeLogMaxExpenseAmountNoReceiptMessage(translate, reportAction)); + } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_ITEMIZED_RECEIPT) { + Clipboard.setString(getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage(translate, reportAction)); } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT) { Clipboard.setString(getPolicyChangeLogMaxExpenseAmountMessage(translate, reportAction)); } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AGE) { diff --git a/src/pages/inbox/report/actionContents/PolicyChangeLogContent.tsx b/src/pages/inbox/report/actionContents/PolicyChangeLogContent.tsx index 45efcc416348..e9cab1918e54 100644 --- a/src/pages/inbox/report/actionContents/PolicyChangeLogContent.tsx +++ b/src/pages/inbox/report/actionContents/PolicyChangeLogContent.tsx @@ -29,6 +29,7 @@ import { getPolicyChangeLogDeleteMemberMessage, getPolicyChangeLogMaxExpenseAgeMessage, getPolicyChangeLogMaxExpenseAmountMessage, + getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage, getPolicyChangeLogMaxExpenseAmountNoReceiptMessage, getPolicyChangeLogUpdateEmployee, getReimburserUpdateMessage, @@ -145,6 +146,8 @@ const POLICY_CHANGE_LOG_RESOLVERS: Record = { [CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ACH_ACCOUNT]: (translate, action) => getUpdateACHAccountMessage(translate, action), [CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_ADDRESS]: (translate, action) => getCompanyAddressUpdateMessage(translate, action), [CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_RECEIPT]: (translate, action) => getPolicyChangeLogMaxExpenseAmountNoReceiptMessage(translate, action), + [CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_ITEMIZED_RECEIPT]: (translate, action) => + getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage(translate, action), [CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT]: (translate, action) => getPolicyChangeLogMaxExpenseAmountMessage(translate, action), [CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AGE]: (translate, action) => getPolicyChangeLogMaxExpenseAgeMessage(translate, action), [CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_BILLABLE]: (translate, action) => getPolicyChangeLogDefaultBillableMessage(translate, action), diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts index b3c0da1f0830..66b754b1fd14 100644 --- a/src/types/onyx/OriginalMessage.ts +++ b/src/types/onyx/OriginalMessage.ts @@ -481,6 +481,12 @@ type OriginalMessagePolicyChangeLog = { /** New value for max expense amount with no receipt */ newMaxExpenseAmountNoReceipt?: number; + /** Old value for max expense amount with no itemized receipt */ + oldMaxExpenseAmountNoItemizedReceipt?: number; + + /** New value for max expense amount with no itemized receipt */ + newMaxExpenseAmountNoItemizedReceipt?: number; + /** Currency of the policy */ currency?: string; diff --git a/tests/unit/ReportActionsUtilsTest.ts b/tests/unit/ReportActionsUtilsTest.ts index b150e0bf96c2..30f1649f7fe0 100644 --- a/tests/unit/ReportActionsUtilsTest.ts +++ b/tests/unit/ReportActionsUtilsTest.ts @@ -29,6 +29,7 @@ import { getOriginalMessage, getPolicyChangeLogMaxExpenseAgeMessage, getPolicyChangeLogMaxExpenseAmountMessage, + getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage, getPolicyChangeLogMaxExpenseAmountNoReceiptMessage, getRemovedCardFeedMessage, getRenamedCardFeedMessage, @@ -3430,6 +3431,53 @@ describe('ReportActionsUtils', () => { }); }); + describe('getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage', () => { + it('should return set message when setting from disabled to a value', () => { + const action = { + actionName: CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_ITEMIZED_RECEIPT, + reportActionID: '1', + created: '', + originalMessage: { + oldMaxExpenseAmountNoItemizedReceipt: CONST.DISABLED_MAX_EXPENSE_VALUE, + newMaxExpenseAmountNoItemizedReceipt: 2500, + currency: 'USD', + }, + } as ReportAction; + const result = getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage(translateLocal, action); + expect(result).toBe('set itemized receipt required amount to "$25.00"'); + }); + + it('should return removed message when setting to disabled', () => { + const action = { + actionName: CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_ITEMIZED_RECEIPT, + reportActionID: '1', + created: '', + originalMessage: { + oldMaxExpenseAmountNoItemizedReceipt: 2500, + newMaxExpenseAmountNoItemizedReceipt: CONST.DISABLED_MAX_EXPENSE_VALUE, + currency: 'USD', + }, + } as ReportAction; + const result = getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage(translateLocal, action); + expect(result).toBe('removed itemized receipt required amount (previously "$25.00")'); + }); + + it('should return changed message when changing from one value to another', () => { + const action = { + actionName: CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_MAX_EXPENSE_AMOUNT_NO_ITEMIZED_RECEIPT, + reportActionID: '1', + created: '', + originalMessage: { + oldMaxExpenseAmountNoItemizedReceipt: 2500, + newMaxExpenseAmountNoItemizedReceipt: 7500, + currency: 'USD', + }, + } as ReportAction; + const result = getPolicyChangeLogMaxExpenseAmountNoItemizedReceiptMessage(translateLocal, action); + expect(result).toBe('changed itemized receipt required amount to "$75.00" (previously "$25.00")'); + }); + }); + describe('getAddedCardFeedMessage', () => { it('should return translated message when feedName is present', () => { const action = {