diff --git a/src/languages/en.ts b/src/languages/en.ts index f3f24fbc04a9..32b9a9eff2b6 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -835,6 +835,8 @@ export default { headsUp: 'Heads up!', unapproveWithIntegrationWarning: (accountingIntegration: string) => `This report has already been exported to ${accountingIntegration}. Changes to this report in Expensify may lead to data discrepancies and Expensify Card reconciliation issues. Are you sure you want to unapprove this report?`, + reimbursable: 'reimbursable', + nonReimbursable: 'non-reimbursable', }, notificationPreferencesPage: { header: 'Notification preferences', diff --git a/src/languages/es.ts b/src/languages/es.ts index 060ab7a261a7..1636512a6fa4 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -757,7 +757,7 @@ export default { `estableció la distancia a ${newDistanceToDisplay}, lo que estableció el importe a ${newAmountToDisplay}`, removedTheRequest: ({valueName, oldValueToDisplay}: RemovedTheRequestParams) => `${valueName === 'comerciante' ? 'el' : 'la'} ${valueName} (previamente ${oldValueToDisplay})`, updatedTheRequest: ({valueName, newValueToDisplay, oldValueToDisplay}: UpdatedTheRequestParams) => - `${valueName === 'comerciante' || valueName === 'importe' ? 'el' : 'la'} ${valueName} a ${newValueToDisplay} (previamente ${oldValueToDisplay})`, + `${valueName === 'comerciante' || valueName === 'importe' || valueName === 'gasto' ? 'el' : 'la'} ${valueName} a ${newValueToDisplay} (previamente ${oldValueToDisplay})`, updatedTheDistance: ({newDistanceToDisplay, oldDistanceToDisplay, newAmountToDisplay, oldAmountToDisplay}: UpdatedTheDistanceParams) => `cambió la distancia a ${newDistanceToDisplay} (previamente ${oldDistanceToDisplay}), lo que cambió el importe a ${newAmountToDisplay} (previamente ${oldAmountToDisplay})`, threadExpenseReportName: ({formattedAmount, comment}: ThreadRequestReportNameParams) => `${comment ? `${formattedAmount} para ${comment}` : `Gasto de ${formattedAmount}`}`, @@ -841,6 +841,8 @@ export default { headsUp: 'Atención!', unapproveWithIntegrationWarning: (accountingIntegration: string) => `Este informe ya se ha exportado a ${accountingIntegration}. Los cambios realizados en este informe en Expensify pueden provocar discrepancias en los datos y problemas de conciliación de la tarjeta Expensify. ¿Está seguro de que desea anular la aprobación de este informe?`, + reimbursable: 'reembolsable', + nonReimbursable: 'no reembolsable', }, notificationPreferencesPage: { header: 'Preferencias de avisos', diff --git a/src/libs/ModifiedExpenseMessage.ts b/src/libs/ModifiedExpenseMessage.ts index 38562edb7704..d2a776941a9a 100644 --- a/src/libs/ModifiedExpenseMessage.ts +++ b/src/libs/ModifiedExpenseMessage.ts @@ -24,6 +24,13 @@ Onyx.connect({ }, }); +/** + * Utility to get message based on boolean literal value. + */ +function getBooleanLiteralMessage(value: string | undefined, truthyMessage: string, falsyMessage: string): string { + return value === 'true' ? truthyMessage : falsyMessage; +} + /** * Builds the partial message fragment for a modified field on the expense. */ @@ -261,6 +268,19 @@ function getForReportAction(reportID: string | undefined, reportAction: OnyxEntr ); } + const hasModifiedReimbursable = reportActionOriginalMessage && 'oldReimbursable' in reportActionOriginalMessage && 'reimbursable' in reportActionOriginalMessage; + if (hasModifiedReimbursable) { + buildMessageFragmentForValue( + getBooleanLiteralMessage(reportActionOriginalMessage?.reimbursable, Localize.translateLocal('iou.reimbursable'), Localize.translateLocal('iou.nonReimbursable')), + getBooleanLiteralMessage(reportActionOriginalMessage?.oldReimbursable, Localize.translateLocal('iou.reimbursable'), Localize.translateLocal('iou.nonReimbursable')), + Localize.translateLocal('iou.expense'), + true, + setFragments, + removalFragments, + changeFragments, + ); + } + const message = getMessageLine(`\n${Localize.translateLocal('iou.changed')}`, changeFragments) + getMessageLine(`\n${Localize.translateLocal('iou.set')}`, setFragments) + diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts index 94c2059f1260..27a3e292e1d7 100644 --- a/src/types/onyx/OriginalMessage.ts +++ b/src/types/onyx/OriginalMessage.ts @@ -317,6 +317,12 @@ type OriginalMessageModifiedExpense = { /** Old expense tax rate */ oldTaxRate?: string; + /** Edited expense reimbursable */ + reimbursable?: string; + + /** Old expense reimbursable */ + oldReimbursable?: string; + /** Collection of accountIDs of users mentioned in expense report */ whisperedTo?: number[];