diff --git a/src/languages/en.ts b/src/languages/en.ts index 1667f328a60f..2d0f067a6a24 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -175,6 +175,7 @@ import type { UnapproveWithIntegrationWarningParams, UnshareParams, UntilTimeParams, + UpdateAutoReportingFrequencyParams, UpdatedTheDistanceMerchantParams, UpdatedTheRequestParams, UpdateRoleParams, @@ -2709,6 +2710,15 @@ const translations = { return 'Member'; } }, + frequency: { + manual: 'Manually', + instant: 'Instant', + immediate: 'Daily', + trip: 'By trip', + weekly: 'Weekly', + semimonthly: 'Twice a month', + monthly: 'Monthly', + }, planType: 'Plan type', submitExpense: 'Submit your expenses below:', defaultCategory: 'Default category', @@ -5081,6 +5091,8 @@ const translations = { leftWorkspace: ({nameOrEmail}: LeftWorkspaceParams) => `${nameOrEmail} left the workspace`, removeMember: ({email, role}: AddEmployeeParams) => `removed ${role === 'member' || role === 'user' ? 'member' : 'admin'} ${email}`, removedConnection: ({connectionName}: ConnectionNameParams) => `removed connection to ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName]}`, + updateAutoReportingFrequency: ({oldFrequency, newFrequency}: UpdateAutoReportingFrequencyParams) => + `updated the submission frequency to "${newFrequency}" (previously "${oldFrequency}")`, }, }, }, diff --git a/src/languages/es.ts b/src/languages/es.ts index f4b309b48224..922aca26090b 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -174,6 +174,7 @@ import type { UnapproveWithIntegrationWarningParams, UnshareParams, UntilTimeParams, + UpdateAutoReportingFrequencyParams, UpdatedTheDistanceMerchantParams, UpdatedTheRequestParams, UpdateRoleParams, @@ -2734,6 +2735,15 @@ const translations = { return 'Miembro'; } }, + frequency: { + manual: 'Manualmente', + instant: 'Instantáneo', + immediate: 'Diaria', + trip: 'Por viaje', + weekly: 'Semanal', + semimonthly: 'Dos veces al mes', + monthly: 'Mensual', + }, planType: 'Tipo de plan', submitExpense: 'Envía tus gastos a continuación:', defaultCategory: 'Categoría predeterminada', @@ -5133,6 +5143,8 @@ const translations = { leftWorkspace: ({nameOrEmail}: LeftWorkspaceParams) => `${nameOrEmail} salió del espacio de trabajo`, removeMember: ({email, role}: AddEmployeeParams) => `eliminado ${role === 'miembro' || role === 'user' ? 'miembro' : 'administrador'} ${email}`, removedConnection: ({connectionName}: ConnectionNameParams) => `eliminó la conexión a ${CONST.POLICY.CONNECTIONS.NAME_USER_FRIENDLY[connectionName]}`, + updateAutoReportingFrequency: ({oldFrequency, newFrequency}: UpdateAutoReportingFrequencyParams) => + `actualizó la frecuencia de envíos a "${newFrequency}" (previamente "${oldFrequency}")`, }, }, }, diff --git a/src/languages/params.ts b/src/languages/params.ts index e1d3e5b34c4e..2a04be84ae21 100644 --- a/src/languages/params.ts +++ b/src/languages/params.ts @@ -349,6 +349,11 @@ type ConnectionNameParams = { connectionName: AllConnectionName; }; +type UpdateAutoReportingFrequencyParams = { + oldFrequency: string; + newFrequency: string; +}; + type LastSyncDateParams = { connectionName: string; formattedDate: string; @@ -810,6 +815,7 @@ export type { UpdateRoleParams, LeftWorkspaceParams, RemoveMemberParams, + UpdateAutoReportingFrequencyParams, DateParams, FiltersAmountBetweenParams, StatementPageTitleParams, diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 6eba24b464bb..dfb97ae6eb4d 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -1793,6 +1793,22 @@ function getPolicyChangeLogDeleteMemberMessage(reportAction: OnyxInputOrEntry, +): reportAction is ReportAction { + return isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_AUTO_REPORTING_FREQUENCY); +} + +function getPolicyChangeLogUpdateAutoReportingFrequencyMessage(reportAction: OnyxInputOrEntry): string { + if (!isPolicyChangeLogUpdateAutoReportingFrequencyMessage(reportAction)) { + return ''; + } + const originalMessage = getOriginalMessage(reportAction); + const oldFrequency = translateLocal(`workspace.common.frequency.${originalMessage?.oldFrequency}` as TranslationPaths); + const newFrequency = translateLocal(`workspace.common.frequency.${originalMessage?.newFrequency}` as TranslationPaths); + return translateLocal('report.actions.type.updateAutoReportingFrequency', {oldFrequency, newFrequency}); +} + function getRemovedConnectionMessage(reportAction: OnyxEntry): string { if (!isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.DELETE_INTEGRATION)) { return ''; @@ -2031,6 +2047,7 @@ export { getPolicyChangeLogAddEmployeeMessage, getPolicyChangeLogChangeRoleMessage, getPolicyChangeLogDeleteMemberMessage, + getPolicyChangeLogUpdateAutoReportingFrequencyMessage, getPolicyChangeLogEmployeeLeftMessage, getRenamedAction, isCardIssuedAction, diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index 5e21a43cea9f..742f0db7fde6 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -30,6 +30,7 @@ import { getPolicyChangeLogChangeRoleMessage, getPolicyChangeLogDeleteMemberMessage, getPolicyChangeLogEmployeeLeftMessage, + getPolicyChangeLogUpdateAutoReportingFrequencyMessage, getRemovedConnectionMessage, getRenamedAction, getReportAction, @@ -557,6 +558,8 @@ function getOptionData({ result.alternateText = getReportActionMessageText(lastAction) ?? ''; } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.DELETE_INTEGRATION) { result.alternateText = getRemovedConnectionMessage(lastAction); + } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_AUTO_REPORTING_FREQUENCY) { + result.alternateText = getPolicyChangeLogUpdateAutoReportingFrequencyMessage(lastAction); } else { result.alternateText = lastMessageTextFromReport.length > 0 diff --git a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx index 674bb028b02c..2ab9fca6d0d8 100644 --- a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx +++ b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx @@ -31,6 +31,7 @@ import { getPolicyChangeLogAddEmployeeMessage, getPolicyChangeLogChangeRoleMessage, getPolicyChangeLogDeleteMemberMessage, + getPolicyChangeLogUpdateAutoReportingFrequencyMessage, getRemovedConnectionMessage, getRenamedAction, getReportActionMessageText, @@ -544,6 +545,8 @@ const ContextMenuActions: ContextMenuAction[] = [ setClipboardMessage(getPolicyChangeLogChangeRoleMessage(reportAction)); } else if (reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.DELETE_EMPLOYEE) { setClipboardMessage(getPolicyChangeLogDeleteMemberMessage(reportAction)); + } else if (reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_AUTO_REPORTING_FREQUENCY) { + setClipboardMessage(getPolicyChangeLogUpdateAutoReportingFrequencyMessage(reportAction)); } else if (reportAction?.actionName === CONST.REPORT.ACTIONS.TYPE.DELETED_TRANSACTION) { setClipboardMessage(getDeletedTransactionMessage(reportAction)); } else if (isActionOfType(reportAction, CONST.REPORT.ACTIONS.TYPE.INTEGRATION_SYNC_FAILED)) { diff --git a/src/pages/home/report/PureReportActionItem.tsx b/src/pages/home/report/PureReportActionItem.tsx index c36391ecec70..f363b2908c0f 100644 --- a/src/pages/home/report/PureReportActionItem.tsx +++ b/src/pages/home/report/PureReportActionItem.tsx @@ -56,6 +56,7 @@ import { getPolicyChangeLogAddEmployeeMessage, getPolicyChangeLogChangeRoleMessage, getPolicyChangeLogDeleteMemberMessage, + getPolicyChangeLogUpdateAutoReportingFrequencyMessage, getRemovedConnectionMessage, getRemovedFromApprovalChainMessage, getRenamedAction, @@ -877,6 +878,8 @@ function PureReportActionItem({ children = ; } else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.DELETE_EMPLOYEE) { children = ; + } else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_AUTO_REPORTING_FREQUENCY) { + children = ; } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.REMOVED_FROM_APPROVAL_CHAIN)) { children = ; } else if ( diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts index dd619c01e797..50f427f70139 100644 --- a/src/types/onyx/OriginalMessage.ts +++ b/src/types/onyx/OriginalMessage.ts @@ -278,6 +278,12 @@ type OriginalMessageChangeLog = { /** Name of connection */ connectionName?: AllConnectionName; + + /** Old auto-reporting frequency */ + oldFrequency?: string; + + /** New auto-reporting frequency */ + newFrequency?: string; }; /** Model of `join policy changelog` report action */