From acdbffb3904f0637887c85478734a5dbcf5ed28b Mon Sep 17 00:00:00 2001 From: Francois Laithier Date: Wed, 6 Aug 2025 14:29:31 -0700 Subject: [PATCH] Revert "Merge pull request #63054 from daledah/fix/58588-2" This reverts commit e3c30d0d42e72f2505044ffbf7c43ec8f76cc4a7, reversing changes made to 4ee8d7bf1b20f876b046e96b6df4ab89c6985cc7. --- src/CONST/index.ts | 7 -- src/ROUTES.ts | 4 - src/SCREENS.ts | 1 - .../MoneyRequestConfirmationList.tsx | 10 -- .../MoneyRequestConfirmationListFooter.tsx | 29 ----- .../ReportActionItem/MoneyRequestView.tsx | 46 +------- src/languages/de.ts | 12 -- src/languages/en.ts | 12 -- src/languages/es.ts | 13 --- src/languages/fr.ts | 13 --- src/languages/it.ts | 13 --- src/languages/ja.ts | 12 -- src/languages/nl.ts | 13 --- src/languages/pl.ts | 13 --- src/languages/pt-BR.ts | 13 --- src/languages/zh-hans.ts | 11 -- .../parameters/CreateDistanceRequestParams.ts | 1 - .../parameters/CreatePerDiemRequestParams.ts | 1 - src/libs/API/parameters/RequestMoneyParams.ts | 2 +- .../SetPolicyCashExpenseModeParams.ts | 13 --- src/libs/API/parameters/SplitBillParams.ts | 1 - .../API/parameters/StartSplitBillParams.ts | 1 - src/libs/API/parameters/index.ts | 1 - src/libs/API/types.ts | 4 - src/libs/ModifiedExpenseMessage.ts | 11 +- .../ModalStackNavigators/index.tsx | 1 - .../RELATIONS/WORKSPACE_TO_RHP.ts | 1 - src/libs/Navigation/linkingConfig/config.ts | 3 - src/libs/Navigation/types.ts | 3 - src/libs/NextStepUtils.ts | 7 +- src/libs/ReportActionsUtils.ts | 14 --- src/libs/ReportUtils.ts | 19 +--- src/libs/SidebarUtils.ts | 3 - src/libs/TransactionUtils/index.ts | 7 +- src/libs/actions/IOU.ts | 102 ++--------------- src/libs/actions/Policy/Policy.ts | 104 +----------------- src/pages/Share/SubmitDetailsPage.tsx | 2 - .../report/ContextMenu/ContextMenuActions.tsx | 3 - .../home/report/PureReportActionItem.tsx | 3 - .../step/IOURequestStepConfirmation.tsx | 24 ---- .../request/step/IOURequestStepDistance.tsx | 2 - .../step/IOURequestStepScan/index.native.tsx | 2 - .../request/step/IOURequestStepScan/index.tsx | 5 +- .../rules/IndividualExpenseRulesSection.tsx | 10 +- .../rules/RulesReimbursableDefaultPage.tsx | 73 ------------ src/types/onyx/OriginalMessage.ts | 6 - src/types/onyx/Policy.ts | 3 - 47 files changed, 31 insertions(+), 623 deletions(-) delete mode 100644 src/libs/API/parameters/SetPolicyCashExpenseModeParams.ts delete mode 100644 src/pages/workspace/rules/RulesReimbursableDefaultPage.tsx diff --git a/src/CONST/index.ts b/src/CONST/index.ts index 58b18ff0fd29..cdacecf92a79 100755 --- a/src/CONST/index.ts +++ b/src/CONST/index.ts @@ -2877,12 +2877,6 @@ const CONST = { REIMBURSEMENT_NO: 'reimburseNo', // None REIMBURSEMENT_MANUAL: 'reimburseManual', // Indirect }, - CASH_EXPENSE_REIMBURSEMENT_CHOICES: { - REIMBURSABLE_DEFAULT: 'reimbursableDefault', // Reimbursable by default - NON_REIMBURSABLE_DEFAULT: 'nonReimbursableDefault', // Non-reimbursable by default - ALWAYS_REIMBURSABLE: 'alwaysReimbursable', // Always Reimbursable - ALWAYS_NON_REIMBURSABLE: 'alwaysNonReimbursable', // Always Non Reimbursable - }, ID_FAKE: '_FAKE_', EMPTY: 'EMPTY', SECONDARY_ACTIONS: { @@ -3742,7 +3736,6 @@ const CONST = { TAG: 'tag', TAX_RATE: 'taxRate', TAX_AMOUNT: 'taxAmount', - REIMBURSABLE: 'reimbursable', REPORT: 'report', }, FOOTER: { diff --git a/src/ROUTES.ts b/src/ROUTES.ts index e79811f5dd9e..10659fe33791 100644 --- a/src/ROUTES.ts +++ b/src/ROUTES.ts @@ -1916,10 +1916,6 @@ const ROUTES = { route: 'workspaces/:policyID/rules/billable', getRoute: (policyID: string) => `workspaces/${policyID}/rules/billable` as const, }, - RULES_REIMBURSABLE_DEFAULT: { - route: 'workspaces/:policyID/rules/reimbursable', - getRoute: (policyID: string) => `workspaces/${policyID}/rules/reimbursable` as const, - }, RULES_PROHIBITED_DEFAULT: { route: 'workspaces/:policyID/rules/prohibited', getRoute: (policyID: string) => `workspaces/${policyID}/rules/prohibited` as const, diff --git a/src/SCREENS.ts b/src/SCREENS.ts index 6e05d7a0fcfa..cdfc0971c331 100644 --- a/src/SCREENS.ts +++ b/src/SCREENS.ts @@ -632,7 +632,6 @@ const SCREENS = { RULES_MAX_EXPENSE_AMOUNT: 'Rules_Max_Expense_Amount', RULES_MAX_EXPENSE_AGE: 'Rules_Max_Expense_Age', RULES_BILLABLE_DEFAULT: 'Rules_Billable_Default', - RULES_REIMBURSABLE_DEFAULT: 'Rules_Reimbursable_Default', RULES_CUSTOM: 'Rules_Custom', RULES_PROHIBITED_DEFAULT: 'Rules_Prohibited_Default', PER_DIEM: 'Per_Diem', diff --git a/src/components/MoneyRequestConfirmationList.tsx b/src/components/MoneyRequestConfirmationList.tsx index 3698ee5f50e4..40cad1f662bb 100755 --- a/src/components/MoneyRequestConfirmationList.tsx +++ b/src/components/MoneyRequestConfirmationList.tsx @@ -183,12 +183,6 @@ type MoneyRequestConfirmationListProps = { /** The PDF password callback */ onPDFPassword?: () => void; - /** Function to toggle reimbursable */ - onToggleReimbursable?: (isOn: boolean) => void; - - /** Flag indicating if the IOU is reimbursable */ - iouIsReimbursable?: boolean; - /** Show remove expense confirmation modal */ showRemoveExpenseConfirmModal?: () => void; }; @@ -231,8 +225,6 @@ function MoneyRequestConfirmationList({ isConfirming, onPDFLoadError, onPDFPassword, - iouIsReimbursable = true, - onToggleReimbursable, showRemoveExpenseConfirmModal, }: MoneyRequestConfirmationListProps) { const [policyCategoriesReal] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${policyID}`, {canBeMissing: true}); @@ -1162,8 +1154,6 @@ function MoneyRequestConfirmationList({ unit={unit} onPDFLoadError={onPDFLoadError} onPDFPassword={onPDFPassword} - iouIsReimbursable={iouIsReimbursable} - onToggleReimbursable={onToggleReimbursable} isReceiptEditable={isReceiptEditable} /> ); diff --git a/src/components/MoneyRequestConfirmationListFooter.tsx b/src/components/MoneyRequestConfirmationListFooter.tsx index fd5fb83d13c6..8f4858c7faec 100644 --- a/src/components/MoneyRequestConfirmationListFooter.tsx +++ b/src/components/MoneyRequestConfirmationListFooter.tsx @@ -31,7 +31,6 @@ import { getTaxAmount, getTaxName, isAmountMissing, - isCardTransaction, isCreatedMissing, isFetchingWaypointsFromServer, shouldShowAttendees as shouldShowAttendeesTransactionUtils, @@ -199,12 +198,6 @@ type MoneyRequestConfirmationListFooterProps = { /** The PDF password callback */ onPDFPassword?: () => void; - - /** Function to toggle reimbursable */ - onToggleReimbursable?: (isOn: boolean) => void; - - /** Flag indicating if the IOU is reimbursable */ - iouIsReimbursable: boolean; }; function MoneyRequestConfirmationListFooter({ @@ -254,8 +247,6 @@ function MoneyRequestConfirmationListFooter({ unit, onPDFLoadError, onPDFPassword, - iouIsReimbursable, - onToggleReimbursable, isReceiptEditable = false, }: MoneyRequestConfirmationListFooterProps) { const styles = useThemeStyles(); @@ -322,7 +313,6 @@ function MoneyRequestConfirmationListFooter({ const canModifyTaxFields = !isReadOnly && !isDistanceRequest && !isPerDiemRequest; // A flag for showing the billable field const shouldShowBillable = policy?.disabledFields?.defaultBillable === false; - const shouldShowReimbursable = isPaidGroupPolicy(policy) && policy?.disabledFields?.reimbursable === false && !isCardTransaction(transaction) && !isTypeInvoice; // Calculate the formatted tax amount based on the transaction's tax amount and the IOU currency code const taxAmount = getTaxAmount(transaction, false); const formattedTaxAmount = convertToDisplayString(taxAmount, iouCurrencyCode); @@ -651,25 +641,6 @@ function MoneyRequestConfirmationListFooter({ ), shouldShow: shouldShowAttendees, }, - { - item: ( - - onToggleReimbursable?.(isOn)} - isActive={iouIsReimbursable} - disabled={isReadOnly} - wrapperStyle={styles.flex1} - /> - - ), - shouldShow: shouldShowReimbursable, - isSupplementary: true, - }, { item: ( shouldShowAttendeesTransactionUtils(iouType, policy), [iouType, policy]); const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat, policy, isDistanceRequest, isPerDiemRequest); @@ -297,17 +291,6 @@ function MoneyRequestView({allReports, report, policy, shouldShowAnimatedBackgro [transaction, report, policy, policyTagList, policyCategories], ); - const saveReimbursable = useCallback( - (newReimbursable: boolean) => { - // If the value hasn't changed, don't request to save changes on the server and just close the modal - if (newReimbursable === getReimbursable(transaction) || !transaction?.transactionID || !report?.reportID) { - return; - } - updateMoneyRequestReimbursable(transaction.transactionID, report?.reportID, newReimbursable, policy, policyTagList, policyCategories); - }, - [transaction, report, policy, policyTagList, policyCategories], - ); - if (isCardTransaction) { if (transactionPostedDate) { dateDescription += ` ${CONST.DOT_SEPARATOR} ${translate('iou.posted')} ${transactionPostedDate}`; @@ -329,7 +312,7 @@ function MoneyRequestView({allReports, report, policy, shouldShowAnimatedBackgro amountDescription += ` ${CONST.DOT_SEPARATOR} ${translate('iou.canceled')}`; } else if (isApproved) { amountDescription += ` ${CONST.DOT_SEPARATOR} ${translate('iou.approved')}`; - } else if (shouldShowPaid) { + } else if (isSettled) { amountDescription += ` ${CONST.DOT_SEPARATOR} ${translate('iou.settledExpensify')}`; } } @@ -671,7 +654,7 @@ function MoneyRequestView({allReports, report, policy, shouldShowAnimatedBackgro )} - {shouldShowReimbursable && ( - - - {Str.UCFirst(translate('iou.reimbursable'))} - - - - )} {shouldShowBillable && ( - + {translate('common.billable')} {!!getErrorForField('billable') && ( @@ -893,7 +857,7 @@ function MoneyRequestView({allReports, report, policy, shouldShowAnimatedBackgro onToggle={saveBillable} disabled={!canEdit} /> - + )} {!!parentReportID && ( diff --git a/src/languages/de.ts b/src/languages/de.ts index c309331778ff..bfa38e586b45 100644 --- a/src/languages/de.ts +++ b/src/languages/de.ts @@ -5482,17 +5482,6 @@ const translations = { one: '1 Tag', other: (count: number) => `${count} Tage`, }), - cashExpenseDefault: 'Bargeldausgabe standard', - cashExpenseDefaultDescription: - 'Wählen Sie, wie Bargeldausgaben erstellt werden sollen. Eine Ausgabe gilt als Bargeldausgabe, wenn sie keine importierte Firmenkartentransaktion ist. Dazu gehören manuell erstellte Ausgaben, Belege, Pauschalen, Kilometer- und Zeitaufwand.', - reimbursableDefault: 'Erstattungsfähig', - reimbursableDefaultDescription: 'Ausgaben werden meistens an Mitarbeiter zurückgezahlt', - nonReimbursableDefault: 'Nicht erstattungsfähig', - nonReimbursableDefaultDescription: 'Ausgaben werden gelegentlich an Mitarbeiter zurückgezahlt', - alwaysReimbursable: 'Immer erstattungsfähig', - alwaysReimbursableDescription: 'Ausgaben werden immer an Mitarbeiter zurückgezahlt', - alwaysNonReimbursable: 'Nie erstattungsfähig', - alwaysNonReimbursableDescription: 'Ausgaben werden nie an Mitarbeiter zurückgezahlt', billableDefault: 'Abrechnungsstandard', billableDefaultDescription: 'Wählen Sie, ob Bar- und Kreditkartenausgaben standardmäßig abrechenbar sein sollen. Abrechenbare Ausgaben werden aktiviert oder deaktiviert in', billable: 'Abrechenbar', @@ -5794,7 +5783,6 @@ const translations = { }, updateDefaultBillable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `aktualisiert "Kosten an Kunden weiterberechnen" auf "${newValue}" (vorher "${oldValue}")`, - updateDefaultReimbursable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `aktualisiert "Bargeldausgabe Standard" auf "${newValue}" (vorher "${oldValue}")`, updateDefaultTitleEnforced: ({value}: UpdatedPolicyFieldWithValueParam) => `"Standardberichtstitel erzwingen" ${value ? 'on' : 'aus'}`, renamedWorkspaceNameAction: ({oldName, newName}: RenamedWorkspaceNameActionParams) => `hat den Namen dieses Arbeitsbereichs in "${newName}" geändert (vorher "${oldName}")`, updateWorkspaceDescription: ({newDescription, oldDescription}: UpdatedPolicyDescriptionParams) => diff --git a/src/languages/en.ts b/src/languages/en.ts index 5a3f6ba7ce9d..7124db37a7d8 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -5454,17 +5454,6 @@ const translations = { one: '1 day', other: (count: number) => `${count} days`, }), - cashExpenseDefault: 'Cash expense default', - cashExpenseDefaultDescription: - 'Choose how cash expenses should be created. An expense is considered a cash expense if it is not an imported company card transaction. This includes manually created expenses, receipts, per diem, distance, and time expenses.', - reimbursableDefault: 'Reimbursable', - reimbursableDefaultDescription: 'Expenses are most often paid back to employees', - nonReimbursableDefault: 'Non-reimbursable', - nonReimbursableDefaultDescription: 'Expenses are occasionally paid back to employees', - alwaysReimbursable: 'Always reimbursable', - alwaysReimbursableDescription: 'Expenses are always paid back to employees', - alwaysNonReimbursable: 'Always non-reimbursable', - alwaysNonReimbursableDescription: 'Expenses are never paid back to employees', billableDefault: 'Billable default', billableDefaultDescription: 'Choose whether cash and credit card expenses should be billable by default. Billable expenses are enabled or disabled in', billable: 'Billable', @@ -5766,7 +5755,6 @@ const translations = { return `updated the monthly report submission date to "${newValue}" (previously "${oldValue}")`; }, updateDefaultBillable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `updated "Re-bill expenses to clients" to "${newValue}" (previously "${oldValue}")`, - updateDefaultReimbursable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `updated "Cash expense default" to "${newValue}" (previously "${oldValue}")`, updateDefaultTitleEnforced: ({value}: UpdatedPolicyFieldWithValueParam) => `turned "Enforce default report titles" ${value ? 'on' : 'off'}`, renamedWorkspaceNameAction: ({oldName, newName}: RenamedWorkspaceNameActionParams) => `updated the name of this workspace to "${newName}" (previously "${oldName}")`, updateWorkspaceDescription: ({newDescription, oldDescription}: UpdatedPolicyDescriptionParams) => diff --git a/src/languages/es.ts b/src/languages/es.ts index 3593345c1011..30d5106b8186 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -5492,17 +5492,6 @@ const translations = { one: '1 día', other: (count: number) => `${count} días`, }), - cashExpenseDefault: 'Valor predeterminado para gastos en efectivo', - cashExpenseDefaultDescription: - 'Elige cómo deben crearse los gastos en efectivo. Un gasto se considera en efectivo si no es una transacción importada desde una tarjeta de empresa. Esto incluye gastos creados manualmente, recibos, viáticos y gastos de distancia y tiempo.', - reimbursableDefault: 'Reembolsable', - reimbursableDefaultDescription: 'Los gastos suelen ser reembolsados a los empleados', - nonReimbursableDefault: 'No reembolsable', - nonReimbursableDefaultDescription: 'Los gastos ocasionalmente son reembolsados a los empleados', - alwaysReimbursable: 'Siempre reembolsable', - alwaysReimbursableDescription: 'Los gastos siempre se reembolsados a los empleados', - alwaysNonReimbursable: 'Siempre no reembolsable', - alwaysNonReimbursableDescription: 'Los gastos nunca son reembolsados a los empleados', billableDefault: 'Valor predeterminado facturable', billableDefaultDescription: 'Elige si los gastos en efectivo y con tarjeta de crédito deben ser facturables por defecto. Los gastos facturables se activan o desactivan en', billable: 'Facturable', @@ -5782,8 +5771,6 @@ const translations = { `actualizó "Antigüedad máxima de gastos (días)" a "${newValue}" (previamente "${oldValue === 'false' ? CONST.POLICY.DEFAULT_MAX_EXPENSE_AGE : oldValue}")`, updateDefaultBillable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `actualizó "Volver a facturar gastos a clientes" a "${newValue}" (previamente "${oldValue}")`, - updateDefaultReimbursable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => - `actualizó "Valor predeterminado para gastos en efectivo" a "${newValue}" (previamente "${oldValue}")`, updateMonthlyOffset: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => { if (!oldValue) { return `establecer la fecha de envío del informe mensual a "${newValue}"`; diff --git a/src/languages/fr.ts b/src/languages/fr.ts index d91d388d1f87..46c5be6fe5b1 100644 --- a/src/languages/fr.ts +++ b/src/languages/fr.ts @@ -5494,17 +5494,6 @@ const translations = { one: '1 jour', other: (count: number) => `${count} jours`, }), - cashExpenseDefault: 'Dépense en espèces par défaut', - cashExpenseDefaultDescription: - 'Choisissez comment les dépenses en espèces doivent être créées. Une dépense est considérée comme en espèces si elle n’est pas une transaction par carte d’entreprise importée. Cela inclut les dépenses créées manuellement, les reçus, les indemnités journalières, les frais kilométriques et les frais de temps.', - reimbursableDefault: 'Remboursable', - reimbursableDefaultDescription: 'Les dépenses sont généralement remboursées aux employés', - nonReimbursableDefault: 'Non remboursable', - nonReimbursableDefaultDescription: 'Les dépenses sont parfois remboursées aux employés', - alwaysReimbursable: 'Toujours remboursable', - alwaysReimbursableDescription: 'Les dépenses sont toujours remboursées aux employés', - alwaysNonReimbursable: 'Jamais remboursable', - alwaysNonReimbursableDescription: 'Les dépenses ne sont jamais remboursées aux employés', billableDefault: 'Par défaut facturable', billableDefaultDescription: 'Choisissez si les dépenses en espèces et par carte de crédit doivent être facturables par défaut. Les dépenses facturables sont activées ou désactivées dans', @@ -5807,8 +5796,6 @@ const translations = { }, updateDefaultBillable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `mis à jour "Refacturer les dépenses aux clients" à "${newValue}" (précédemment "${oldValue}")`, - updateDefaultReimbursable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => - `mis à jour "Dépense en espèces par défaut" en "${newValue}" (anciennement "${oldValue}")`, updateDefaultTitleEnforced: ({value}: UpdatedPolicyFieldWithValueParam) => `"Appliquer les titres de rapport par défaut" ${value ? 'sur' : 'désactivé'}`, renamedWorkspaceNameAction: ({oldName, newName}: RenamedWorkspaceNameActionParams) => `a mis à jour le nom de cet espace de travail en "${newName}" (précédemment "${oldName}")`, updateWorkspaceDescription: ({newDescription, oldDescription}: UpdatedPolicyDescriptionParams) => diff --git a/src/languages/it.ts b/src/languages/it.ts index 871ddee2e061..1ebaa1e84d04 100644 --- a/src/languages/it.ts +++ b/src/languages/it.ts @@ -5494,17 +5494,6 @@ const translations = { one: '1 giorno', other: (count: number) => `${count} giorni`, }), - cashExpenseDefault: 'Spesa in contanti predefinita', - cashExpenseDefaultDescription: - 'Scegli come devono essere create le spese in contanti. Una spesa è considerata in contanti se non è una transazione su carta aziendale importata. Ciò include spese create manualmente, ricevute, diarie, chilometraggi e spese di tempo.', - reimbursableDefault: 'Rimborsabile', - reimbursableDefaultDescription: 'Le spese sono solitamente rimborsate ai dipendenti', - nonReimbursableDefault: 'Non rimborsabile', - nonReimbursableDefaultDescription: 'Le spese sono occasionalmente rimborsate ai dipendenti', - alwaysReimbursable: 'Sempre rimborsabile', - alwaysReimbursableDescription: 'Le spese sono sempre rimborsate ai dipendenti', - alwaysNonReimbursable: 'Mai rimborsabile', - alwaysNonReimbursableDescription: 'Le spese non sono mai rimborsate ai dipendenti', billableDefault: 'Predefinito fatturabile', billableDefaultDescription: 'Scegli se le spese in contanti e con carta di credito devono essere fatturabili per impostazione predefinita. Le spese fatturabili sono abilitate o disabilitate in', @@ -5808,8 +5797,6 @@ const translations = { }, updateDefaultBillable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `aggiornato "Riaddebita le spese ai clienti" a "${newValue}" (precedentemente "${oldValue}")`, - updateDefaultReimbursable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => - `aggiornato "Spesa in contanti predefinita" a "${newValue}" (precedentemente "${oldValue}")`, updateDefaultTitleEnforced: ({value}: UpdatedPolicyFieldWithValueParam) => `trasformato "Imponi titoli di report predefiniti" ${value ? 'su' : 'spento'}`, renamedWorkspaceNameAction: ({oldName, newName}: RenamedWorkspaceNameActionParams) => `ha aggiornato il nome di questo spazio di lavoro in "${newName}" (precedentemente "${oldName}")`, diff --git a/src/languages/ja.ts b/src/languages/ja.ts index 23df2d78ab42..8c69c0443b0c 100644 --- a/src/languages/ja.ts +++ b/src/languages/ja.ts @@ -5463,17 +5463,6 @@ const translations = { one: '1日', other: (count: number) => `${count}日間`, }), - cashExpenseDefault: '現金経費のデフォルト', - cashExpenseDefaultDescription: - '現金経費をどのように作成するかを選択します。インポートされた会社カード取引でない場合、経費は現金経費とみなされます。これには手動で作成された経費、領収書、日当、距離、時間経費が含まれます。', - reimbursableDefault: '精算可能', - reimbursableDefaultDescription: '経費は通常、従業員に返金されます', - nonReimbursableDefault: '精算不可', - nonReimbursableDefaultDescription: '経費は時々従業員に返金されます', - alwaysReimbursable: '常に精算可能', - alwaysReimbursableDescription: '経費は常に従業員に返金されます', - alwaysNonReimbursable: '常に精算不可', - alwaysNonReimbursableDescription: '経費は従業員に返金されません', billableDefault: '請求可能なデフォルト', billableDefaultDescription: '現金およびクレジットカードの経費をデフォルトで請求可能にするかどうかを選択します。請求可能な経費は、次の場所で有効または無効にします。', billable: 'ビラブル', @@ -5770,7 +5759,6 @@ const translations = { return `月次報告書の提出日を「${newValue}」(以前は「${oldValue}」)に更新しました。`; }, updateDefaultBillable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `"クライアントへの経費再請求"を"${newValue}"に更新しました(以前は"${oldValue}")`, - updateDefaultReimbursable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `「現金経費のデフォルト」を"${newValue}"に更新しました (以前は"${oldValue}")`, updateDefaultTitleEnforced: ({value}: UpdatedPolicyFieldWithValueParam) => `"デフォルトのレポートタイトルを強制する" ${value ? 'on' : 'オフ'}`, renamedWorkspaceNameAction: ({oldName, newName}: RenamedWorkspaceNameActionParams) => `このワークスペースの名前を「${newName}」(以前は「${oldName}」)に更新しました。`, updateWorkspaceDescription: ({newDescription, oldDescription}: UpdatedPolicyDescriptionParams) => diff --git a/src/languages/nl.ts b/src/languages/nl.ts index a4614ff59a21..0979e1d4478b 100644 --- a/src/languages/nl.ts +++ b/src/languages/nl.ts @@ -5491,17 +5491,6 @@ const translations = { one: '1 dag', other: (count: number) => `${count} dagen`, }), - cashExpenseDefault: 'Contante uitgave standaard', - cashExpenseDefaultDescription: - 'Kies hoe contante uitgaven moeten worden aangemaakt. Een uitgave wordt als contant beschouwd als het geen geïmporteerde bedrijfspastransactie is. Dit omvat handmatig aangemaakte uitgaven, bonnetjes, dagvergoedingen, kilometer- en tijdsuitgaven.', - reimbursableDefault: 'Vergoedbaar', - reimbursableDefaultDescription: 'Uitgaven worden meestal terugbetaald aan medewerkers', - nonReimbursableDefault: 'Niet vergoedbaar', - nonReimbursableDefaultDescription: 'Uitgaven worden soms terugbetaald aan medewerkers', - alwaysReimbursable: 'Altijd vergoedbaar', - alwaysReimbursableDescription: 'Uitgaven worden altijd terugbetaald aan medewerkers', - alwaysNonReimbursable: 'Nooit vergoedbaar', - alwaysNonReimbursableDescription: 'Uitgaven worden nooit terugbetaald aan medewerkers', billableDefault: 'Factureerbaar standaardwaarde', billableDefaultDescription: 'Kies of contante en creditcarduitgaven standaard factureerbaar moeten zijn. Factureerbare uitgaven worden in- of uitgeschakeld in', billable: 'Factureerbaar', @@ -5801,8 +5790,6 @@ const translations = { }, updateDefaultBillable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `bijgewerkt "Onkosten doorberekenen aan klanten" naar "${newValue}" (voorheen "${oldValue}")`, - updateDefaultReimbursable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => - `bijgewerkt "Contante uitgave standaard" naar "${newValue}" (voorheen "${oldValue}")`, updateDefaultTitleEnforced: ({value}: UpdatedPolicyFieldWithValueParam) => `omgezet "Standaardrapporttitels afdwingen" ${value ? 'op' : 'uit'}`, renamedWorkspaceNameAction: ({oldName, newName}: RenamedWorkspaceNameActionParams) => `heeft de naam van deze werkruimte bijgewerkt naar "${newName}" (voorheen "${oldName}")`, updateWorkspaceDescription: ({newDescription, oldDescription}: UpdatedPolicyDescriptionParams) => diff --git a/src/languages/pl.ts b/src/languages/pl.ts index 7a08bf73187e..f56ff6121405 100644 --- a/src/languages/pl.ts +++ b/src/languages/pl.ts @@ -5479,17 +5479,6 @@ const translations = { one: '1 dzień', other: (count: number) => `${count} dni`, }), - cashExpenseDefault: 'Domyślny wydatek gotówkowy', - cashExpenseDefaultDescription: - 'Wybierz, jak powinny być tworzone wydatki gotówkowe. Wydatek jest uznawany za gotówkowy, jeśli nie jest importowaną transakcją kartą firmową. Obejmuje to ręcznie tworzone wydatki, paragony, diety, odległości i czas pracy.', - reimbursableDefault: 'Zwracany', - reimbursableDefaultDescription: 'Wydatki są zazwyczaj zwracane pracownikom', - nonReimbursableDefault: 'Niezwracany', - nonReimbursableDefaultDescription: 'Wydatki są czasami zwracane pracownikom', - alwaysReimbursable: 'Zawsze zwracany', - alwaysReimbursableDescription: 'Wydatki są zawsze zwracane pracownikom', - alwaysNonReimbursable: 'Nigdy nie zwracany', - alwaysNonReimbursableDescription: 'Wydatki nigdy nie są zwracane pracownikom', billableDefault: 'Domyślne do rozliczenia', billableDefaultDescription: 'Wybierz, czy wydatki gotówkowe i na kartę kredytową powinny być domyślnie fakturowalne. Wydatki fakturowalne są włączane lub wyłączane w', billable: 'Podlegające fakturowaniu', @@ -5788,8 +5777,6 @@ const translations = { }, updateDefaultBillable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `zaktualizowano "Ponowne obciążenie klientów kosztami" na "${newValue}" (wcześniej "${oldValue}")`, - updateDefaultReimbursable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => - `zaktualizowano "Domyślny wydatek gotówkowy" na "${newValue}" (wcześniej "${oldValue}")`, updateDefaultTitleEnforced: ({value}: UpdatedPolicyFieldWithValueParam) => `zmieniono "Wymuś domyślne tytuły raportów" ${value ? 'na' : 'wyłączony'}`, renamedWorkspaceNameAction: ({oldName, newName}: RenamedWorkspaceNameActionParams) => `zaktualizował nazwę tego miejsca pracy na "${newName}" (wcześniej "${oldName}")`, updateWorkspaceDescription: ({newDescription, oldDescription}: UpdatedPolicyDescriptionParams) => diff --git a/src/languages/pt-BR.ts b/src/languages/pt-BR.ts index 5e5008c032b4..3e9919aa0311 100644 --- a/src/languages/pt-BR.ts +++ b/src/languages/pt-BR.ts @@ -5490,17 +5490,6 @@ const translations = { one: '1 dia', other: (count: number) => `${count} dias`, }), - cashExpenseDefault: 'Despesa em dinheiro padrão', - cashExpenseDefaultDescription: - 'Escolha como as despesas em dinheiro devem ser criadas. Uma despesa é considerada em dinheiro se não for uma transação de cartão corporativo importada. Isso inclui despesas criadas manualmente, recibos, diárias, distância e despesas de tempo.', - reimbursableDefault: 'Reembolsável', - reimbursableDefaultDescription: 'Despesas geralmente são reembolsadas aos funcionários', - nonReimbursableDefault: 'Não reembolsável', - nonReimbursableDefaultDescription: 'Despesas às vezes são reembolsadas aos funcionários', - alwaysReimbursable: 'Sempre reembolsável', - alwaysReimbursableDescription: 'Despesas são sempre reembolsadas aos funcionários', - alwaysNonReimbursable: 'Nunca reembolsável', - alwaysNonReimbursableDescription: 'Despesas nunca são reembolsadas aos funcionários', billableDefault: 'Padrão faturável', billableDefaultDescription: 'Escolha se as despesas em dinheiro e cartão de crédito devem ser faturáveis por padrão. Despesas faturáveis são ativadas ou desativadas em', billable: 'Faturável', @@ -5800,8 +5789,6 @@ const translations = { }, updateDefaultBillable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `atualizou "Refaturar despesas para clientes" para "${newValue}" (anteriormente "${oldValue}")`, - updateDefaultReimbursable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => - `atualizou "Despesa em dinheiro padrão" para "${newValue}" (anteriormente "${oldValue}")`, updateDefaultTitleEnforced: ({value}: UpdatedPolicyFieldWithValueParam) => `transformado "Aplicar títulos padrão de relatórios" ${value ? 'em' : 'desligado'}`, renamedWorkspaceNameAction: ({oldName, newName}: RenamedWorkspaceNameActionParams) => `atualizou o nome deste espaço de trabalho para "${newName}" (anteriormente "${oldName}")`, updateWorkspaceDescription: ({newDescription, oldDescription}: UpdatedPolicyDescriptionParams) => diff --git a/src/languages/zh-hans.ts b/src/languages/zh-hans.ts index fbe83b9cd754..933b61b52ca8 100644 --- a/src/languages/zh-hans.ts +++ b/src/languages/zh-hans.ts @@ -5396,16 +5396,6 @@ const translations = { one: '1天', other: (count: number) => `${count}天`, }), - cashExpenseDefault: '现金支出默认值', - cashExpenseDefaultDescription: '选择如何创建现金支出。如果不是导入的公司卡交易,则视为现金支出。这包括手动创建的支出、收据、津贴、里程和工时支出。', - reimbursableDefault: '可报销', - reimbursableDefaultDescription: '支出通常会报销给员工', - nonReimbursableDefault: '不可报销', - nonReimbursableDefaultDescription: '支出偶尔会报销给员工', - alwaysReimbursable: '始终可报销', - alwaysReimbursableDescription: '支出始终会报销给员工', - alwaysNonReimbursable: '始终不可报销', - alwaysNonReimbursableDescription: '支出永远不会报销给员工', billableDefault: '默认计费', billableDefaultDescription: '选择现金和信用卡费用是否应默认可计费。可计费用在中启用或禁用。', billable: '可计费的', @@ -5695,7 +5685,6 @@ const translations = { return `将月度报告提交日期更新为“${newValue}”(之前为“${oldValue}”)`; }, updateDefaultBillable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `已将“重新向客户计费费用”更新为“${newValue}”(之前为“${oldValue}”)`, - updateDefaultReimbursable: ({oldValue, newValue}: UpdatedPolicyFieldWithNewAndOldValueParams) => `已将“现金支出默认值”更新为“${newValue}”(之前为“${oldValue}”)`, updateDefaultTitleEnforced: ({value}: UpdatedPolicyFieldWithValueParam) => `"强制执行默认报告标题" ${value ? 'on' : '关'}`, renamedWorkspaceNameAction: ({oldName, newName}: RenamedWorkspaceNameActionParams) => `已将此工作区的名称更新为“${newName}”(之前为“${oldName}”)`, updateWorkspaceDescription: ({newDescription, oldDescription}: UpdatedPolicyDescriptionParams) => diff --git a/src/libs/API/parameters/CreateDistanceRequestParams.ts b/src/libs/API/parameters/CreateDistanceRequestParams.ts index 738393903c36..73f08deb6c4f 100644 --- a/src/libs/API/parameters/CreateDistanceRequestParams.ts +++ b/src/libs/API/parameters/CreateDistanceRequestParams.ts @@ -15,7 +15,6 @@ type CreateDistanceRequestParams = { taxCode?: string; taxAmount?: number; billable?: boolean; - reimbursable?: boolean; transactionThreadReportID?: string; createdReportActionIDForThread?: string; payerEmail?: string; diff --git a/src/libs/API/parameters/CreatePerDiemRequestParams.ts b/src/libs/API/parameters/CreatePerDiemRequestParams.ts index 910cd2daf2c1..d1981c5f3123 100644 --- a/src/libs/API/parameters/CreatePerDiemRequestParams.ts +++ b/src/libs/API/parameters/CreatePerDiemRequestParams.ts @@ -21,7 +21,6 @@ type CreatePerDiemRequestParams = { transactionThreadReportID: string; createdReportActionIDForThread: string | undefined; billable?: boolean; - reimbursable?: boolean; attendees?: string; }; diff --git a/src/libs/API/parameters/RequestMoneyParams.ts b/src/libs/API/parameters/RequestMoneyParams.ts index a78cde0fafd0..42e0e9aed6dc 100644 --- a/src/libs/API/parameters/RequestMoneyParams.ts +++ b/src/libs/API/parameters/RequestMoneyParams.ts @@ -27,7 +27,7 @@ type RequestMoneyParams = { receiptGpsPoints?: string; transactionThreadReportID: string; createdReportActionIDForThread: string | undefined; - reimbursable?: boolean; + reimbursible?: boolean; description?: string; attendees?: string; isTestDrive?: boolean; diff --git a/src/libs/API/parameters/SetPolicyCashExpenseModeParams.ts b/src/libs/API/parameters/SetPolicyCashExpenseModeParams.ts deleted file mode 100644 index 5ee542d5e97f..000000000000 --- a/src/libs/API/parameters/SetPolicyCashExpenseModeParams.ts +++ /dev/null @@ -1,13 +0,0 @@ -type SetPolicyCashExpenseModeParams = { - policyID: string; - defaultReimbursable: boolean; - /** - * Stringified JSON object with type of following structure: - * disabledFields: { - * reimbursable: boolean; - * }; - */ - disabledFields: string; -}; - -export default SetPolicyCashExpenseModeParams; diff --git a/src/libs/API/parameters/SplitBillParams.ts b/src/libs/API/parameters/SplitBillParams.ts index bc99bf176e2d..3fda11b9ca98 100644 --- a/src/libs/API/parameters/SplitBillParams.ts +++ b/src/libs/API/parameters/SplitBillParams.ts @@ -9,7 +9,6 @@ type SplitBillParams = { category: string; tag: string; billable: boolean; - reimbursable: boolean; transactionID: string; reportActionID: string; createdReportActionID?: string; diff --git a/src/libs/API/parameters/StartSplitBillParams.ts b/src/libs/API/parameters/StartSplitBillParams.ts index 031d75aca525..10f1029a0fba 100644 --- a/src/libs/API/parameters/StartSplitBillParams.ts +++ b/src/libs/API/parameters/StartSplitBillParams.ts @@ -13,7 +13,6 @@ type StartSplitBillParams = { isFromGroupDM: boolean; createdReportActionID?: string; billable: boolean; - reimbursable: boolean; chatType?: string; taxCode?: string; taxAmount?: number; diff --git a/src/libs/API/parameters/index.ts b/src/libs/API/parameters/index.ts index 4626c848eec0..ed1fc2571a33 100644 --- a/src/libs/API/parameters/index.ts +++ b/src/libs/API/parameters/index.ts @@ -312,7 +312,6 @@ export type {default as SetPolicyExpenseMaxAmount} from './SetPolicyExpenseMaxAm export type {default as SetPolicyExpenseMaxAge} from './SetPolicyExpenseMaxAge'; export type {default as UpdateCustomRules} from './UpdateCustomRules'; export type {default as SetPolicyBillableModeParams} from './SetPolicyBillableModeParams'; -export type {default as SetPolicyCashExpenseModeParams} from './SetPolicyCashExpenseModeParams'; export type {default as DisablePolicyBillableModeParams} from './DisablePolicyBillableModeParams'; export type {default as SetWorkspaceEReceiptsEnabled} from './SetWorkspaceEReceiptsEnabled'; export type {default as SetPolicyAttendeeTrackingEnabledParams} from './SetPolicyAttendeeTrackingEnabledParams'; diff --git a/src/libs/API/types.ts b/src/libs/API/types.ts index 20739d73c738..dd2da2d2d754 100644 --- a/src/libs/API/types.ts +++ b/src/libs/API/types.ts @@ -191,7 +191,6 @@ const WRITE_COMMANDS = { COMPLETE_SPLIT_BILL: 'CompleteSplitBill', UPDATE_MONEY_REQUEST_ATTENDEES: 'UpdateMoneyRequestAttendees', UPDATE_MONEY_REQUEST_DATE: 'UpdateMoneyRequestDate', - UPDATE_MONEY_REQUEST_REIMBURSABLE: 'UpdateMoneyRequestReimbursable', UPDATE_MONEY_REQUEST_BILLABLE: 'UpdateMoneyRequestBillable', UPDATE_MONEY_REQUEST_MERCHANT: 'UpdateMoneyRequestMerchant', UPDATE_MONEY_REQUEST_TAG: 'UpdateMoneyRequestTag', @@ -244,7 +243,6 @@ const WRITE_COMMANDS = { SET_POLICY_EXPENSE_MAX_AGE: ' SetPolicyExpenseMaxAge', UPDATE_CUSTOM_RULES: 'UpdateCustomRules', SET_POLICY_BILLABLE_MODE: ' SetPolicyBillableMode', - SET_POLICY_REIMBURSABLE_MODE: 'SetPolicyReimbursableMode', DISABLE_POLICY_BILLABLE_MODE: 'DisablePolicyBillableExpenses', SET_WORKSPACE_ERECEIPTS_ENABLED: 'SetWorkspaceEReceiptsEnabled', SET_POLICY_ATTENDEE_TRACKING_ENABLED: 'SetPolicyAttendeeTrackingEnabled', @@ -675,7 +673,6 @@ type WriteCommandParameters = { [WRITE_COMMANDS.UPDATE_MONEY_REQUEST_ATTENDEES]: Parameters.UpdateMoneyRequestParams; [WRITE_COMMANDS.UPDATE_MONEY_REQUEST_DATE]: Parameters.UpdateMoneyRequestParams; [WRITE_COMMANDS.UPDATE_MONEY_REQUEST_MERCHANT]: Parameters.UpdateMoneyRequestParams; - [WRITE_COMMANDS.UPDATE_MONEY_REQUEST_REIMBURSABLE]: Parameters.UpdateMoneyRequestParams; [WRITE_COMMANDS.UPDATE_MONEY_REQUEST_BILLABLE]: Parameters.UpdateMoneyRequestParams; [WRITE_COMMANDS.UPDATE_MONEY_REQUEST_TAG]: Parameters.UpdateMoneyRequestParams; [WRITE_COMMANDS.UPDATE_MONEY_REQUEST_TAX_AMOUNT]: Parameters.UpdateMoneyRequestParams; @@ -774,7 +771,6 @@ type WriteCommandParameters = { [WRITE_COMMANDS.SET_POLICY_EXPENSE_MAX_AGE]: Parameters.SetPolicyExpenseMaxAge; [WRITE_COMMANDS.UPDATE_CUSTOM_RULES]: Parameters.UpdateCustomRules; [WRITE_COMMANDS.SET_POLICY_BILLABLE_MODE]: Parameters.SetPolicyBillableModeParams; - [WRITE_COMMANDS.SET_POLICY_REIMBURSABLE_MODE]: Parameters.SetPolicyCashExpenseModeParams; [WRITE_COMMANDS.DISABLE_POLICY_BILLABLE_MODE]: Parameters.DisablePolicyBillableModeParams; [WRITE_COMMANDS.SET_WORKSPACE_ERECEIPTS_ENABLED]: Parameters.SetWorkspaceEReceiptsEnabled; [WRITE_COMMANDS.SET_POLICY_ATTENDEE_TRACKING_ENABLED]: Parameters.SetPolicyAttendeeTrackingEnabledParams; diff --git a/src/libs/ModifiedExpenseMessage.ts b/src/libs/ModifiedExpenseMessage.ts index d8196f1a1451..a793474e815b 100644 --- a/src/libs/ModifiedExpenseMessage.ts +++ b/src/libs/ModifiedExpenseMessage.ts @@ -36,6 +36,13 @@ Onyx.connect({ callback: (value) => (allReports = value), }); +/** + * 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. */ @@ -332,8 +339,8 @@ function getForReportAction({ const hasModifiedReimbursable = isReportActionOriginalMessageAnObject && 'oldReimbursable' in reportActionOriginalMessage && 'reimbursable' in reportActionOriginalMessage; if (hasModifiedReimbursable) { buildMessageFragmentForValue( - reportActionOriginalMessage?.reimbursable ?? '', - reportActionOriginalMessage?.oldReimbursable ?? '', + getBooleanLiteralMessage(reportActionOriginalMessage?.reimbursable, translateLocal('iou.reimbursable'), translateLocal('iou.nonReimbursable')), + getBooleanLiteralMessage(reportActionOriginalMessage?.oldReimbursable, translateLocal('iou.reimbursable'), translateLocal('iou.nonReimbursable')), translateLocal('iou.expense'), true, setFragments, diff --git a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx index 58e1ae6a08b9..022f33ef8a0c 100644 --- a/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx +++ b/src/libs/Navigation/AppNavigator/ModalStackNavigators/index.tsx @@ -651,7 +651,6 @@ const SettingsModalStackNavigator = createModalStackNavigator require('../../../../pages/workspace/rules/RulesMaxExpenseAmountPage').default, [SCREENS.WORKSPACE.RULES_MAX_EXPENSE_AGE]: () => require('../../../../pages/workspace/rules/RulesMaxExpenseAgePage').default, [SCREENS.WORKSPACE.RULES_BILLABLE_DEFAULT]: () => require('../../../../pages/workspace/rules/RulesBillableDefaultPage').default, - [SCREENS.WORKSPACE.RULES_REIMBURSABLE_DEFAULT]: () => require('../../../../pages/workspace/rules/RulesReimbursableDefaultPage').default, [SCREENS.WORKSPACE.RULES_CUSTOM]: () => require('../../../../pages/workspace/rules/RulesCustomPage').default, [SCREENS.WORKSPACE.RULES_PROHIBITED_DEFAULT]: () => require('../../../../pages/workspace/rules/RulesProhibitedDefaultPage').default, [SCREENS.WORKSPACE.PER_DIEM_IMPORT]: () => require('../../../../pages/workspace/perDiem/ImportPerDiemPage').default, diff --git a/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts b/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts index bc963d540890..f34978ca50a7 100755 --- a/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts +++ b/src/libs/Navigation/linkingConfig/RELATIONS/WORKSPACE_TO_RHP.ts @@ -256,7 +256,6 @@ const WORKSPACE_TO_RHP: Partial['config'] = { [SCREENS.WORKSPACE.RULES_BILLABLE_DEFAULT]: { path: ROUTES.RULES_BILLABLE_DEFAULT.route, }, - [SCREENS.WORKSPACE.RULES_REIMBURSABLE_DEFAULT]: { - path: ROUTES.RULES_REIMBURSABLE_DEFAULT.route, - }, [SCREENS.WORKSPACE.RULES_CUSTOM]: { path: ROUTES.RULES_CUSTOM.route, }, diff --git a/src/libs/Navigation/types.ts b/src/libs/Navigation/types.ts index ccd16ad6b5b6..8d9a648d5bb3 100644 --- a/src/libs/Navigation/types.ts +++ b/src/libs/Navigation/types.ts @@ -1083,9 +1083,6 @@ type SettingsNavigatorParamList = { [SCREENS.WORKSPACE.RULES_BILLABLE_DEFAULT]: { policyID: string; }; - [SCREENS.WORKSPACE.RULES_REIMBURSABLE_DEFAULT]: { - policyID: string; - }; [SCREENS.WORKSPACE.RULES_PROHIBITED_DEFAULT]: { policyID: string; }; diff --git a/src/libs/NextStepUtils.ts b/src/libs/NextStepUtils.ts index a05acb1cd0b2..118deb8f5092 100644 --- a/src/libs/NextStepUtils.ts +++ b/src/libs/NextStepUtils.ts @@ -14,7 +14,6 @@ import {getLoginsByAccountIDs, getPersonalDetailsByIDs} from './PersonalDetailsU import {getApprovalWorkflow, getCorrectedAutoReportingFrequency, getReimburserAccountID} from './PolicyUtils'; import { getDisplayNameForParticipant, - getMoneyRequestSpendBreakdown, getNextApproverAccountID, getPersonalDetailsForAccountID, hasViolations as hasViolationsReportUtils, @@ -163,7 +162,6 @@ function buildNextStep( ((report.total !== 0 && report.total !== undefined) || (report.unheldTotal !== 0 && report.unheldTotal !== undefined) || (report.unheldNonReimbursableTotal !== 0 && report.unheldNonReimbursableTotal !== undefined)); - const {reimbursableSpend} = getMoneyRequestSpendBreakdown(report); const ownerDisplayName = ownerPersonalDetails?.displayName ?? ownerPersonalDetails?.login ?? getDisplayNameForParticipant({accountID: ownerAccountID}); const policyOwnerDisplayName = policyOwnerPersonalDetails?.displayName ?? policyOwnerPersonalDetails?.login ?? getDisplayNameForParticipant({accountID: policy.ownerAccountID}); @@ -368,7 +366,7 @@ function buildNextStep( // Generates an optimistic nextStep once a report has been submitted case CONST.REPORT.STATUS_NUM.SUBMITTED: { if (policy.approvalMode === CONST.POLICY.APPROVAL_MODE.OPTIONAL) { - optimisticNextStep = reimbursableSpend === 0 ? noActionRequired : nextStepPayExpense; + optimisticNextStep = nextStepPayExpense; break; } // Another owner @@ -454,8 +452,7 @@ function buildNextStep( email: currentUserEmail, }, report, - ) || - reimbursableSpend === 0 + ) ) { optimisticNextStep = noActionRequired; diff --git a/src/libs/ReportActionsUtils.ts b/src/libs/ReportActionsUtils.ts index 20728245b70c..99421e4f794e 100644 --- a/src/libs/ReportActionsUtils.ts +++ b/src/libs/ReportActionsUtils.ts @@ -2679,19 +2679,6 @@ function getPolicyChangeLogDefaultBillableMessage(action: ReportAction): string return getReportActionText(action); } -function getPolicyChangeLogDefaultReimbursableMessage(action: ReportAction): string { - const {oldDefaultReimbursable, newDefaultReimbursable} = getOriginalMessage(action as ReportAction) ?? {}; - - if (typeof oldDefaultReimbursable === 'string' && typeof newDefaultReimbursable === 'string') { - return translateLocal('workspaceActions.updateDefaultReimbursable', { - oldValue: oldDefaultReimbursable, - newValue: newDefaultReimbursable, - }); - } - - return getReportActionText(action); -} - function getPolicyChangeLogDefaultTitleEnforcedMessage(action: ReportAction): string { const {value} = getOriginalMessage(action as ReportAction) ?? {}; @@ -3160,7 +3147,6 @@ export { getReportActionFromExpensifyCard, isReopenedAction, getIntegrationSyncFailedMessage, - getPolicyChangeLogDefaultReimbursableMessage, getManagerOnVacation, getVacationer, getSubmittedTo, diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 5ceb6035bedc..22ad25d6ac4d 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -155,7 +155,6 @@ import { getOneTransactionThreadReportID, getOriginalMessage, getPolicyChangeLogDefaultBillableMessage, - getPolicyChangeLogDefaultReimbursableMessage, getPolicyChangeLogDefaultTitleEnforcedMessage, getPolicyChangeLogMaxExpenseAmountNoReceiptMessage, getRenamedAction, @@ -688,7 +687,6 @@ type TransactionDetails = { customUnitRateID?: string; comment: string; category: string; - reimbursable: boolean; billable: boolean; tag: string; mccGroup?: ValueOf; @@ -4001,7 +3999,6 @@ function getTransactionDetails( waypoints: getWaypoints(transaction), customUnitRateID: getRateID(transaction), category: getCategory(transaction), - reimbursable: getReimbursable(transaction), billable: getBillable(transaction), tag: getTag(transaction), mccGroup: getMCCGroup(transaction), @@ -4198,7 +4195,6 @@ function canEditFieldOfMoneyRequest( CONST.EDIT_REQUEST_FIELD.RECEIPT, CONST.EDIT_REQUEST_FIELD.DISTANCE, CONST.EDIT_REQUEST_FIELD.DISTANCE_RATE, - CONST.EDIT_REQUEST_FIELD.REIMBURSABLE, CONST.EDIT_REQUEST_FIELD.REPORT, ]; @@ -4231,11 +4227,6 @@ function canEditFieldOfMoneyRequest( const policy = getPolicy(moneyRequestReport?.policyID); const isAdmin = isExpenseReport(moneyRequestReport) && policy?.role === CONST.POLICY.ROLE.ADMIN; const isManager = isExpenseReport(moneyRequestReport) && currentUserAccountID === moneyRequestReport?.managerID; - const isRequestor = currentUserAccountID === reportAction?.actorAccountID; - - if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.REIMBURSABLE) { - return (isAdmin || isManager || isRequestor) && !policy?.disabledFields?.reimbursable; - } if ((fieldToEdit === CONST.EDIT_REQUEST_FIELD.AMOUNT || fieldToEdit === CONST.EDIT_REQUEST_FIELD.CURRENCY) && isDistanceRequest(transaction)) { return isAdmin || isManager; @@ -4249,6 +4240,7 @@ function canEditFieldOfMoneyRequest( } if (fieldToEdit === CONST.EDIT_REQUEST_FIELD.RECEIPT) { + const isRequestor = currentUserAccountID === reportAction?.actorAccountID; return ( !isInvoiceReport(moneyRequestReport) && !isReceiptBeingScanned(transaction) && @@ -4794,12 +4786,6 @@ function getModifiedExpenseOriginalMessage( originalMessage.currency = getCurrency(oldTransaction); } - if ('reimbursable' in transactionChanges) { - const oldReimbursable = getReimbursable(oldTransaction); - originalMessage.oldReimbursable = oldReimbursable ? translateLocal('common.reimbursable').toLowerCase() : translateLocal('iou.nonReimbursable').toLowerCase(); - originalMessage.reimbursable = transactionChanges?.reimbursable ? translateLocal('common.reimbursable').toLowerCase() : translateLocal('iou.nonReimbursable').toLowerCase(); - } - if ('billable' in transactionChanges) { const oldBillable = getBillable(oldTransaction); originalMessage.oldBillable = oldBillable ? translateLocal('common.billable').toLowerCase() : translateLocal('common.nonBillable').toLowerCase(); @@ -5190,9 +5176,6 @@ function getReportNameInternal({ if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_BILLABLE)) { return getPolicyChangeLogDefaultBillableMessage(parentReportAction); } - if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_REIMBURSABLE)) { - return getPolicyChangeLogDefaultReimbursableMessage(parentReportAction); - } if (isActionOfType(parentReportAction, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_TITLE_ENFORCED)) { return getPolicyChangeLogDefaultTitleEnforcedMessage(parentReportAction); } diff --git a/src/libs/SidebarUtils.ts b/src/libs/SidebarUtils.ts index eb7045130a33..e0a3acd068f2 100644 --- a/src/libs/SidebarUtils.ts +++ b/src/libs/SidebarUtils.ts @@ -34,7 +34,6 @@ import { getOriginalMessage, getPolicyChangeLogAddEmployeeMessage, getPolicyChangeLogDefaultBillableMessage, - getPolicyChangeLogDefaultReimbursableMessage, getPolicyChangeLogDefaultTitleEnforcedMessage, getPolicyChangeLogDeleteMemberMessage, getPolicyChangeLogEmployeeLeftMessage, @@ -742,8 +741,6 @@ function getOptionData({ result.alternateText = getPolicyChangeLogMaxExpenseAmountMessage(lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_BILLABLE) { result.alternateText = getPolicyChangeLogDefaultBillableMessage(lastAction); - } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_REIMBURSABLE) { - result.alternateText = getPolicyChangeLogDefaultReimbursableMessage(lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_TITLE_ENFORCED) { result.alternateText = getPolicyChangeLogDefaultTitleEnforcedMessage(lastAction); } else if (lastAction?.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.LEAVE_POLICY) { diff --git a/src/libs/TransactionUtils/index.ts b/src/libs/TransactionUtils/index.ts index 992635e27df1..bc7a5ad0f002 100644 --- a/src/libs/TransactionUtils/index.ts +++ b/src/libs/TransactionUtils/index.ts @@ -522,10 +522,6 @@ function getUpdatedTransaction({ updatedTransaction.taxCode = transactionChanges.taxCode; } - if (Object.hasOwn(transactionChanges, 'reimbursable') && typeof transactionChanges.reimbursable === 'boolean') { - updatedTransaction.reimbursable = transactionChanges.reimbursable; - } - if (Object.hasOwn(transactionChanges, 'billable') && typeof transactionChanges.billable === 'boolean') { updatedTransaction.billable = transactionChanges.billable; } @@ -566,7 +562,6 @@ function getUpdatedTransaction({ ...(Object.hasOwn(transactionChanges, 'currency') && {currency: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}), ...(Object.hasOwn(transactionChanges, 'merchant') && {merchant: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}), ...(Object.hasOwn(transactionChanges, 'waypoints') && {waypoints: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}), - ...(Object.hasOwn(transactionChanges, 'reimbursable') && {reimbursable: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}), ...(Object.hasOwn(transactionChanges, 'billable') && {billable: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}), ...(Object.hasOwn(transactionChanges, 'category') && {category: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}), ...(Object.hasOwn(transactionChanges, 'tag') && {tag: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}), @@ -775,7 +770,7 @@ function getFormattedAttendees(modifiedAttendees?: Attendee[], attendees?: Atten /** * Return the reimbursable value. Defaults to true to match BE logic. */ -function getReimbursable(transaction: OnyxInputOrEntry): boolean { +function getReimbursable(transaction: Transaction): boolean { return transaction?.reimbursable ?? true; } diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index 0c452576ef2e..f71a01854feb 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -250,7 +250,6 @@ type BaseTransactionParams = { taxCode?: string; taxAmount?: number; billable?: boolean; - reimbursable?: boolean; customUnitRateID?: string; }; @@ -278,7 +277,6 @@ type MoneyRequestInformation = { createdReportActionIDForThread: string | undefined; onyxData: OnyxData; billable?: boolean; - reimbursable?: boolean; }; type TrackExpenseInformation = { @@ -435,6 +433,7 @@ type RequestMoneyInformation = { policyParams?: BasePolicyParams; gpsPoints?: GPSPoint; action?: IOUAction; + reimbursible?: boolean; transactionParams: RequestMoneyTransactionParams; isRetry?: boolean; shouldPlaySound?: boolean; @@ -545,7 +544,6 @@ type TrackExpenseTransactionParams = { taxCode?: string; taxAmount?: number; billable?: boolean; - reimbursable?: boolean; validWaypoints?: WaypointCollection; gpsPoints?: GPSPoint; actionableWhisperReportActionID?: string; @@ -649,7 +647,6 @@ type StartSplitBilActionParams = { receipt: Receipt; existingSplitChatReportID?: string; billable?: boolean; - reimbursable?: boolean; category: string | undefined; tag: string | undefined; currency: string; @@ -1097,10 +1094,6 @@ function setMoneyRequestBillable(transactionID: string, billable: boolean) { Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {billable}); } -function setMoneyRequestReimbursable(transactionID: string, reimbursable: boolean) { - Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, {reimbursable}); -} - function setMoneyRequestParticipants(transactionID: string, participants: Participant[] = [], isTestTransaction = false) { // We should change the reportID and isFromGlobalCreate of the test transaction since this flow can start inside an existing report return Onyx.merge(`${ONYXKEYS.COLLECTION.TRANSACTION_DRAFT}${transactionID}`, { @@ -3198,7 +3191,6 @@ function getSendInvoiceInformation( taxCode, taxAmount, billable, - reimbursable: true, filename, }, }); @@ -3574,7 +3566,7 @@ function getPerDiemExpenseInformation(perDiemExpenseInformation: PerDiemExpenseI const {parentChatReport, transactionParams, participantParams, policyParams = {}, moneyRequestReportID = ''} = perDiemExpenseInformation; const {payeeAccountID = userAccountID, payeeEmail = currentUserEmail, participant} = participantParams; const {policy, policyCategories, policyTagList} = policyParams; - const {comment = '', currency, created, category, tag, customUnit, billable, attendees, reimbursable} = transactionParams; + const {comment = '', currency, created, category, tag, customUnit, billable, attendees} = transactionParams; const amount = computePerDiemExpenseAmount(customUnit); const merchant = computePerDiemExpenseMerchant(customUnit, policy); @@ -3652,7 +3644,6 @@ function getPerDiemExpenseInformation(perDiemExpenseInformation: PerDiemExpenseI tag, customUnit, billable, - reimbursable, pendingFields: {subRates: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD}, attendees, }, @@ -3770,7 +3761,6 @@ function getPerDiemExpenseInformation(perDiemExpenseInformation: PerDiemExpenseI failureData, }, billable, - reimbursable, }; } @@ -4162,9 +4152,6 @@ function getUpdateMoneyRequestParams( if (!transaction?.reimbursable && typeof updatedMoneyRequestReport.nonReimbursableTotal === 'number') { updatedMoneyRequestReport.nonReimbursableTotal -= diff; } - if (updatedTransaction && transaction?.reimbursable !== updatedTransaction?.reimbursable && typeof updatedMoneyRequestReport.nonReimbursableTotal === 'number') { - updatedMoneyRequestReport.nonReimbursableTotal += updatedTransaction.reimbursable ? -updatedTransaction.amount : updatedTransaction.amount; - } if (!isTransactionOnHold) { if (typeof updatedMoneyRequestReport.unheldTotal === 'number') { updatedMoneyRequestReport.unheldTotal -= diff; @@ -4172,9 +4159,6 @@ function getUpdateMoneyRequestParams( if (!transaction?.reimbursable && typeof updatedMoneyRequestReport.unheldNonReimbursableTotal === 'number') { updatedMoneyRequestReport.unheldNonReimbursableTotal -= diff; } - if (updatedTransaction && transaction?.reimbursable !== updatedTransaction?.reimbursable && typeof updatedMoneyRequestReport.unheldNonReimbursableTotal === 'number') { - updatedMoneyRequestReport.unheldNonReimbursableTotal += updatedTransaction.reimbursable ? -updatedTransaction.amount : updatedTransaction.amount; - } } } else { updatedMoneyRequestReport = updateIOUOwnerAndTotal( @@ -4354,7 +4338,6 @@ function getUpdateMoneyRequestParams( const hasModifiedCurrency = 'currency' in transactionChanges; const hasModifiedComment = 'comment' in transactionChanges; - const hasModifiedReimbursable = 'reimbursable' in transactionChanges; const hasModifiedDate = 'date' in transactionChanges; const isInvoice = isInvoiceReportReportUtils(iouReport); @@ -4363,15 +4346,7 @@ function getUpdateMoneyRequestParams( isPaidGroupPolicy(policy) && !isInvoice && updatedTransaction && - (hasModifiedTag || - hasModifiedCategory || - hasModifiedComment || - hasModifiedDistanceRate || - hasModifiedDate || - hasModifiedCurrency || - hasModifiedAmount || - hasModifiedCreated || - hasModifiedReimbursable) + (hasModifiedTag || hasModifiedCategory || hasModifiedComment || hasModifiedDistanceRate || hasModifiedDate || hasModifiedCurrency || hasModifiedAmount || hasModifiedCreated) ) { const currentTransactionViolations = allTransactionViolations[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`] ?? []; // If the amount, currency or date have been modified, we remove the duplicate violations since they would be out of date as the transaction has changed @@ -4414,17 +4389,13 @@ function getUpdateMoneyRequestParams( }, }); } - if ( - violationsOnyxData && - ((iouReport?.statusNum ?? CONST.REPORT.STATUS_NUM.OPEN) === CONST.REPORT.STATUS_NUM.OPEN || - (hasModifiedReimbursable && iouReport?.statusNum === CONST.REPORT.STATUS_NUM.SUBMITTED)) - ) { + if (violationsOnyxData && (iouReport?.statusNum ?? CONST.REPORT.STATUS_NUM.OPEN) === CONST.REPORT.STATUS_NUM.OPEN) { const currentNextStep = allNextSteps[`${ONYXKEYS.COLLECTION.NEXT_STEP}${iouReport?.reportID}`] ?? {}; const shouldFixViolations = Array.isArray(violationsOnyxData.value) && violationsOnyxData.value.length > 0; optimisticData.push({ onyxMethod: Onyx.METHOD.MERGE, key: `${ONYXKEYS.COLLECTION.NEXT_STEP}${iouReport?.reportID}`, - value: buildNextStep(updatedMoneyRequestReport ?? iouReport ?? undefined, iouReport?.statusNum ?? CONST.REPORT.STATUS_NUM.OPEN, shouldFixViolations), + value: buildNextStep(iouReport ?? undefined, iouReport?.statusNum ?? CONST.REPORT.STATUS_NUM.OPEN, shouldFixViolations), }); failureData.push({ onyxMethod: Onyx.METHOD.MERGE, @@ -4666,24 +4637,6 @@ function updateMoneyRequestBillable( API.write(WRITE_COMMANDS.UPDATE_MONEY_REQUEST_BILLABLE, params, onyxData); } -function updateMoneyRequestReimbursable( - transactionID: string | undefined, - transactionThreadReportID: string | undefined, - value: boolean, - policy: OnyxEntry, - policyTagList: OnyxEntry, - policyCategories: OnyxEntry, -) { - if (!transactionID || !transactionThreadReportID) { - return; - } - const transactionChanges: TransactionChanges = { - reimbursable: value, - }; - const {params, onyxData} = getUpdateMoneyRequestParams(transactionID, transactionThreadReportID, transactionChanges, policy, policyTagList, policyCategories); - API.write(WRITE_COMMANDS.UPDATE_MONEY_REQUEST_REIMBURSABLE, params, onyxData); -} - /** Updates the merchant field of an expense */ function updateMoneyRequestMerchant( transactionID: string, @@ -5010,7 +4963,6 @@ type ConvertTrackedWorkspaceParams = { waypoints?: string; customUnitID?: string; customUnitRateID?: string; - reimbursable?: boolean; }; type AddTrackedExpenseToPolicyParam = { @@ -5462,6 +5414,7 @@ function requestMoney(requestMoneyInformation: RequestMoneyInformation) { transactionParams, gpsPoints, action, + reimbursible, shouldHandleNavigation = true, backToReport, shouldPlaySound = true, @@ -5484,7 +5437,6 @@ function requestMoney(requestMoneyInformation: RequestMoneyInformation) { taxCode = '', taxAmount = 0, billable, - reimbursable, created, attendees, actionableWhisperReportActionID, @@ -5577,7 +5529,6 @@ function requestMoney(requestMoneyInformation: RequestMoneyInformation) { waypoints: sanitizedWaypoints, customUnitID: getDistanceRateCustomUnit(policyParams?.policy)?.customUnitID, customUnitRateID, - reimbursable, } : undefined; convertTrackedExpenseToRequest({ @@ -5649,7 +5600,7 @@ function requestMoney(requestMoneyInformation: RequestMoneyInformation) { receiptGpsPoints: gpsPoints ? JSON.stringify(gpsPoints) : undefined, transactionThreadReportID, createdReportActionIDForThread, - reimbursable, + reimbursible, description: parsedComment, attendees: attendees ? JSON.stringify(attendees) : undefined, isTestDrive, @@ -5718,7 +5669,6 @@ function submitPerDiemExpense(submitPerDiemExpenseInformation: PerDiemExpenseInf createdReportActionIDForThread, onyxData, billable, - reimbursable, } = getPerDiemExpenseInformation({ parentChatReport: currentChatReport, participantParams, @@ -5758,7 +5708,6 @@ function submitPerDiemExpense(submitPerDiemExpenseInformation: PerDiemExpenseInf transactionThreadReportID, createdReportActionIDForThread, billable, - reimbursable, attendees: attendees ? JSON.stringify(attendees) : undefined, }; @@ -5872,7 +5821,6 @@ function trackExpense(params: CreateTrackExpenseParams) { taxCode = '', taxAmount = 0, billable, - reimbursable, gpsPoints, validWaypoints, actionableWhisperReportActionID, @@ -6000,7 +5948,6 @@ function trackExpense(params: CreateTrackExpenseParams) { category, tag, billable, - reimbursable, receipt: isFileUploadable(trackedReceipt) ? trackedReceipt : undefined, waypoints: sanitizedWaypoints, customUnitRateID: mileageRate, @@ -6048,7 +5995,6 @@ function trackExpense(params: CreateTrackExpenseParams) { category, tag, billable, - reimbursable, receipt: isFileUploadable(trackedReceipt) ? trackedReceipt : undefined, waypoints: sanitizedWaypoints, customUnitRateID: mileageRate, @@ -6645,7 +6591,6 @@ type SplitBillActionsParams = { category?: string; tag?: string; billable?: boolean; - reimbursable?: boolean; iouRequestType?: IOURequestType; existingSplitChatReportID?: string; splitShares?: SplitShares; @@ -6671,7 +6616,6 @@ function splitBill({ category = '', tag = '', billable = false, - reimbursable = false, iouRequestType = CONST.IOU.REQUEST_TYPE.MANUAL, existingSplitChatReportID, splitShares = {}, @@ -6695,7 +6639,6 @@ function splitBill({ tag, splitShares, billable, - reimbursable, iouRequestType, taxCode, taxAmount, @@ -6713,7 +6656,6 @@ function splitBill({ created, tag, billable, - reimbursable, transactionID: splitData.transactionID, reportActionID: splitData.reportActionID, createdReportActionID: splitData.createdReportActionID, @@ -6749,7 +6691,6 @@ function splitBillAndOpenReport({ category = '', tag = '', billable = false, - reimbursable = false, iouRequestType = CONST.IOU.REQUEST_TYPE.MANUAL, splitShares = {}, splitPayerAccountIDs = [], @@ -6773,7 +6714,6 @@ function splitBillAndOpenReport({ tag, splitShares, billable, - reimbursable, iouRequestType, taxCode, taxAmount, @@ -6791,7 +6731,6 @@ function splitBillAndOpenReport({ category, tag, billable, - reimbursable, transactionID: splitData.transactionID, reportActionID: splitData.reportActionID, createdReportActionID: splitData.createdReportActionID, @@ -6824,7 +6763,6 @@ function startSplitBill({ receipt, existingSplitChatReportID, billable = false, - reimbursable = false, category = '', tag = '', currency, @@ -6855,7 +6793,6 @@ function startSplitBill({ taxCode, taxAmount, billable, - reimbursable, filename, }, }); @@ -6991,7 +6928,6 @@ function startSplitBill({ receipt: receiptObject, existingSplitChatReportID, billable, - reimbursable, category, tag, currency, @@ -7141,7 +7077,6 @@ function startSplitBill({ currency, isFromGroupDM: !existingSplitChatReport, billable, - reimbursable, ...(existingSplitChatReport ? {} : {createdReportActionID: splitChatCreatedReportAction.reportActionID}), chatType: splitChatReport?.chatType, taxCode, @@ -7467,23 +7402,7 @@ function createDistanceRequest(distanceRequestInformation: CreateDistanceRequest const {policy, policyCategories, policyTagList} = policyParams; const parsedComment = getParsedComment(transactionParams.comment); transactionParams.comment = parsedComment; - const { - amount, - comment, - currency, - created, - category, - tag, - taxAmount, - taxCode, - merchant, - billable, - reimbursable, - validWaypoints, - customUnitRateID = '', - splitShares = {}, - attendees, - } = transactionParams; + const {amount, comment, currency, created, category, tag, taxAmount, taxCode, merchant, billable, validWaypoints, customUnitRateID = '', splitShares = {}, attendees} = transactionParams; // If the report is an iou or expense report, we should get the linked chat report to be passed to the getMoneyRequestInformation function const isMoneyRequestReport = isMoneyRequestReportReportUtils(report); @@ -7542,7 +7461,6 @@ function createDistanceRequest(distanceRequestInformation: CreateDistanceRequest taxCode, taxAmount, billable, - reimbursable, splits: JSON.stringify(splits), chatType: splitData.chatType, description: parsedComment, @@ -7588,7 +7506,6 @@ function createDistanceRequest(distanceRequestInformation: CreateDistanceRequest taxCode, taxAmount, billable, - reimbursable, attendees, }, }); @@ -7611,7 +7528,6 @@ function createDistanceRequest(distanceRequestInformation: CreateDistanceRequest taxCode, taxAmount, billable, - reimbursable, transactionThreadReportID, createdReportActionIDForThread, payerEmail, @@ -12269,7 +12185,6 @@ export { unholdRequest, updateMoneyRequestAttendees, updateMoneyRequestAmountAndCurrency, - updateMoneyRequestReimbursable, updateMoneyRequestBillable, updateMoneyRequestCategory, updateMoneyRequestDate, @@ -12289,7 +12204,6 @@ export { canSubmitReport, submitPerDiemExpense, calculateDiffAmount, - setMoneyRequestReimbursable, computePerDiemExpenseAmount, initSplitExpense, addSplitExpenseField, diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index d0d50d4219da..3e8a8fcb26b6 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -59,7 +59,6 @@ import type { UpdateWorkspaceGeneralSettingsParams, UpgradeToCorporateParams, } from '@libs/API/parameters'; -import type SetPolicyCashExpenseModeParams from '@libs/API/parameters/SetPolicyCashExpenseModeParams'; import type UpdatePolicyMembersCustomFieldsParams from '@libs/API/parameters/UpdatePolicyMembersCustomFieldsParams'; import type {ApiRequestCommandParameters} from '@libs/API/types'; import {READ_COMMANDS, WRITE_COMMANDS} from '@libs/API/types'; @@ -143,8 +142,6 @@ type WorkspaceFromIOUCreationData = { adminsChatReportID: string; }; -type PolicyCashExpenseMode = ValueOf; - type BuildPolicyDataOptions = { policyOwnerEmail?: string; makeMeAdmin?: boolean; @@ -1902,8 +1899,7 @@ function createDraftInitialWorkspace(policyOwnerEmail = '', policyName = '', pol }, areWorkflowsEnabled: shouldEnableWorkflowsByDefault, defaultBillable: false, - defaultReimbursable: true, - disabledFields: {defaultBillable: true, reimbursable: false}, + disabledFields: {defaultBillable: true}, requiresCategory: true, }, }, @@ -2027,8 +2023,7 @@ function buildPolicyData(options: BuildPolicyDataOptions = {}) { areReportFieldsEnabled: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD, }, defaultBillable: false, - defaultReimbursable: true, - disabledFields: {defaultBillable: true, reimbursable: false}, + disabledFields: {defaultBillable: true}, avatarURL: file?.uri, originalFileName: file?.name, ...optimisticMccGroupData.optimisticData, @@ -4491,99 +4486,6 @@ function setPolicyBillableMode(policyID: string, defaultBillable: boolean) { API.write(WRITE_COMMANDS.SET_POLICY_BILLABLE_MODE, parameters, onyxData); } -function getCashExpenseReimbursableMode(policyID: string): PolicyCashExpenseMode | undefined { - const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`]; - if (!policy) { - return undefined; - } - - if (policy.defaultReimbursable && !policy.disabledFields?.reimbursable) { - return CONST.POLICY.CASH_EXPENSE_REIMBURSEMENT_CHOICES.REIMBURSABLE_DEFAULT; - } - - if (!policy.disabledFields?.reimbursable && !policy.defaultReimbursable) { - return CONST.POLICY.CASH_EXPENSE_REIMBURSEMENT_CHOICES.NON_REIMBURSABLE_DEFAULT; - } - - if (policy.defaultReimbursable && policy.disabledFields?.reimbursable) { - return CONST.POLICY.CASH_EXPENSE_REIMBURSEMENT_CHOICES.ALWAYS_REIMBURSABLE; - } - - return CONST.POLICY.CASH_EXPENSE_REIMBURSEMENT_CHOICES.ALWAYS_NON_REIMBURSABLE; -} - -/** - * Call the API to enable or disable the reimbursable mode for the given policy - * @param policyID - id of the policy to enable or disable the reimbursable mode - * @param reimbursableMode - reimbursable mode to set for the given policy - */ -function setPolicyReimbursableMode(policyID: string, reimbursableMode: PolicyCashExpenseMode) { - const policy = allPolicies?.[`${ONYXKEYS.COLLECTION.POLICY}${policyID}`]; - - const originalDefaultReimbursable = policy?.defaultReimbursable; - const originalDefaultReimbursableDisabled = policy?.disabledFields?.reimbursable; - - const defaultReimbursable = - reimbursableMode === CONST.POLICY.CASH_EXPENSE_REIMBURSEMENT_CHOICES.REIMBURSABLE_DEFAULT || reimbursableMode === CONST.POLICY.CASH_EXPENSE_REIMBURSEMENT_CHOICES.ALWAYS_REIMBURSABLE; - const reimbursableDisabled = - reimbursableMode === CONST.POLICY.CASH_EXPENSE_REIMBURSEMENT_CHOICES.ALWAYS_REIMBURSABLE || - reimbursableMode === CONST.POLICY.CASH_EXPENSE_REIMBURSEMENT_CHOICES.ALWAYS_NON_REIMBURSABLE; - - const onyxData: OnyxData = { - optimisticData: [ - { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, - value: { - defaultReimbursable, - disabledFields: { - reimbursable: reimbursableDisabled, - }, - pendingFields: { - defaultReimbursable: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE, - disabledFields: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE, - }, - }, - }, - ], - successData: [ - { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, - value: { - pendingFields: { - defaultReimbursable: null, - disabledFields: null, - }, - errorFields: null, - }, - }, - ], - failureData: [ - { - onyxMethod: Onyx.METHOD.MERGE, - key: `${ONYXKEYS.COLLECTION.POLICY}${policyID}`, - value: { - disabledFields: {reimbursable: originalDefaultReimbursableDisabled}, - defaultReimbursable: originalDefaultReimbursable, - pendingFields: {defaultReimbursable: null, disabledFields: null}, - errorFields: {defaultReimbursable: ErrorUtils.getMicroSecondOnyxErrorWithTranslationKey('common.genericErrorMessage')}, - }, - }, - ], - }; - - const parameters: SetPolicyCashExpenseModeParams = { - policyID, - defaultReimbursable, - disabledFields: JSON.stringify({ - reimbursable: reimbursableDisabled, - }), - }; - - API.write(WRITE_COMMANDS.SET_POLICY_REIMBURSABLE_MODE, parameters, onyxData); -} - /** * Call the API to disable the billable mode for the given policy * @param policyID - id of the policy to enable or disable the billable mode @@ -5789,8 +5691,6 @@ export { setIsForcedToChangeCurrency, setIsComingFromGlobalReimbursementsFlow, setPolicyAttendeeTrackingEnabled, - setPolicyReimbursableMode, - getCashExpenseReimbursableMode, updateInterestedFeatures, clearPolicyTitleFieldError, }; diff --git a/src/pages/Share/SubmitDetailsPage.tsx b/src/pages/Share/SubmitDetailsPage.tsx index 52c12a0b0c31..7e2940ecfcb2 100644 --- a/src/pages/Share/SubmitDetailsPage.tsx +++ b/src/pages/Share/SubmitDetailsPage.tsx @@ -120,7 +120,6 @@ function SubmitDetailsPage({ taxCode: transactionTaxCode, taxAmount: transactionTaxAmount, billable: transaction.billable, - reimbursable: transaction.reimbursable, merchant: transaction.merchant ?? '', created: transaction.created, actionableWhisperReportActionID: transaction.actionableWhisperReportActionID, @@ -146,7 +145,6 @@ function SubmitDetailsPage({ taxCode: transactionTaxCode, taxAmount: transactionTaxAmount, billable: transaction.billable, - reimbursable: transaction.reimbursable, merchant: transaction.merchant ?? '', created: transaction.created, actionableWhisperReportActionID: transaction.actionableWhisperReportActionID, diff --git a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx index eca2b05fb00c..b1a15678a8b1 100644 --- a/src/pages/home/report/ContextMenu/ContextMenuActions.tsx +++ b/src/pages/home/report/ContextMenu/ContextMenuActions.tsx @@ -36,7 +36,6 @@ import { getOriginalMessage, getPolicyChangeLogAddEmployeeMessage, getPolicyChangeLogDefaultBillableMessage, - getPolicyChangeLogDefaultReimbursableMessage, getPolicyChangeLogDefaultTitleEnforcedMessage, getPolicyChangeLogDeleteMemberMessage, getPolicyChangeLogMaxExpenseAmountMessage, @@ -562,8 +561,6 @@ const ContextMenuActions: ContextMenuAction[] = [ Clipboard.setString(getPolicyChangeLogMaxExpenseAmountMessage(reportAction)); } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_BILLABLE) { Clipboard.setString(getPolicyChangeLogDefaultBillableMessage(reportAction)); - } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_REIMBURSABLE) { - Clipboard.setString(getPolicyChangeLogDefaultReimbursableMessage(reportAction)); } else if (reportAction.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_TITLE_ENFORCED) { Clipboard.setString(getPolicyChangeLogDefaultTitleEnforcedMessage(reportAction)); } else if (isReimbursementQueuedAction(reportAction)) { diff --git a/src/pages/home/report/PureReportActionItem.tsx b/src/pages/home/report/PureReportActionItem.tsx index 989599b91f91..68b59b2376fc 100644 --- a/src/pages/home/report/PureReportActionItem.tsx +++ b/src/pages/home/report/PureReportActionItem.tsx @@ -69,7 +69,6 @@ import { getOriginalMessage, getPolicyChangeLogAddEmployeeMessage, getPolicyChangeLogDefaultBillableMessage, - getPolicyChangeLogDefaultReimbursableMessage, getPolicyChangeLogDefaultTitleEnforcedMessage, getPolicyChangeLogDeleteMemberMessage, getPolicyChangeLogMaxExpenseAmountMessage, @@ -1187,8 +1186,6 @@ function PureReportActionItem({ children = ; } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_BILLABLE)) { children = ; - } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_REIMBURSABLE)) { - children = ; } else if (isActionOfType(action, CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.UPDATE_DEFAULT_TITLE_ENFORCED)) { children = ; } else if (action.actionName === CONST.REPORT.ACTIONS.TYPE.POLICY_CHANGE_LOG.ADD_EMPLOYEE) { diff --git a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx index a97fba62af73..28c3e816dad8 100644 --- a/src/pages/iou/request/step/IOURequestStepConfirmation.tsx +++ b/src/pages/iou/request/step/IOURequestStepConfirmation.tsx @@ -50,7 +50,6 @@ import { setMoneyRequestBillable, setMoneyRequestCategory, setMoneyRequestReceipt, - setMoneyRequestReimbursable, splitBill, splitBillAndOpenReport, startMoneyRequest, @@ -240,13 +239,6 @@ function IOURequestStepConfirmation({ }); }, [transactionIDs, defaultBillable]); - const defaultReimbursable = !!policy?.defaultReimbursable; - useEffect(() => { - transactionIDs.forEach((transactionID) => { - setMoneyRequestReimbursable(transactionID, defaultReimbursable); - }); - }, [transactionIDs, defaultReimbursable]); - useEffect(() => { // Exit early if the transaction is still loading if (isLoadingTransaction) { @@ -491,7 +483,6 @@ function IOURequestStepConfirmation({ taxCode: transactionTaxCode, taxAmount: transactionTaxAmount, billable: item.billable, - reimbursable: item.reimbursable, actionableWhisperReportActionID: item.actionableWhisperReportActionID, linkedTrackedExpenseReportAction: item.linkedTrackedExpenseReportAction, linkedTrackedExpenseReportID: item.linkedTrackedExpenseReportID, @@ -553,7 +544,6 @@ function IOURequestStepConfirmation({ tag: transaction.tag, customUnit: transaction.comment?.customUnit, billable: transaction.billable, - reimbursable: transaction.reimbursable, attendees: transaction.comment?.attendees, }, }); @@ -597,7 +587,6 @@ function IOURequestStepConfirmation({ taxCode: transactionTaxCode, taxAmount: transactionTaxAmount, billable: item.billable, - reimbursable: item.reimbursable, gpsPoints, validWaypoints: Object.keys(item?.comment?.waypoints ?? {}).length ? getValidWaypoints(item.comment?.waypoints, true) : undefined, actionableWhisperReportActionID: item.actionableWhisperReportActionID, @@ -661,7 +650,6 @@ function IOURequestStepConfirmation({ splitShares: transaction.splitShares, validWaypoints: getValidWaypoints(transaction.comment?.waypoints, true), billable: transaction.billable, - reimbursable: transaction.reimbursable, attendees: transaction.comment?.attendees, }, backToReport, @@ -726,7 +714,6 @@ function IOURequestStepConfirmation({ receipt: currentTransactionReceiptFile, existingSplitChatReportID: report?.reportID, billable: transaction.billable, - reimbursable: transaction.reimbursable, category: transaction.category, tag: transaction.tag, currency: transaction.currency, @@ -754,7 +741,6 @@ function IOURequestStepConfirmation({ tag: transaction.tag, existingSplitChatReportID: report?.reportID, billable: transaction.billable, - reimbursable: transaction.reimbursable, iouRequestType: transaction.iouRequestType, splitShares: transaction.splitShares, splitPayerAccountIDs: transaction.splitPayerAccountIDs ?? [], @@ -780,7 +766,6 @@ function IOURequestStepConfirmation({ category: transaction.category, tag: transaction.tag, billable: !!transaction.billable, - reimbursable: !!transaction.reimbursable, iouRequestType: transaction.iouRequestType, splitShares: transaction.splitShares, splitPayerAccountIDs: transaction.splitPayerAccountIDs, @@ -944,13 +929,6 @@ function IOURequestStepConfirmation({ [currentTransactionID], ); - const setReimbursable = useCallback( - (reimbursable: boolean) => { - setMoneyRequestReimbursable(currentTransactionID, reimbursable); - }, - [currentTransactionID], - ); - // This loading indicator is shown because the transaction originalCurrency is being updated later than the component mounts. // To prevent the component from rendering with the wrong currency, we show a loading indicator until the correct currency is set. const isLoading = !!transaction?.originalCurrency; @@ -1130,8 +1108,6 @@ function IOURequestStepConfirmation({ payeePersonalDetails={payeePersonalDetails} isConfirmed={isConfirmed} isConfirming={isConfirming} - iouIsReimbursable={transaction?.reimbursable} - onToggleReimbursable={setReimbursable} expensesNumber={transactions.length} isReceiptEditable /> diff --git a/src/pages/iou/request/step/IOURequestStepDistance.tsx b/src/pages/iou/request/step/IOURequestStepDistance.tsx index b33e1c4f9231..57f2c37d213b 100644 --- a/src/pages/iou/request/step/IOURequestStepDistance.tsx +++ b/src/pages/iou/request/step/IOURequestStepDistance.tsx @@ -331,7 +331,6 @@ function IOURequestStepDistance({ merchant: translate('iou.fieldPending'), receipt: {}, billable: false, - reimbursable: true, validWaypoints: getValidWaypoints(waypoints, true), customUnitRateID, attendees: transaction?.comment?.attendees, @@ -354,7 +353,6 @@ function IOURequestStepDistance({ currency: transaction?.currency ?? 'USD', merchant: translate('iou.fieldPending'), billable: !!policy?.defaultBillable, - reimbursable: !!policy?.defaultReimbursable, validWaypoints: getValidWaypoints(waypoints, true), customUnitRateID: DistanceRequestUtils.getCustomUnitRateID(report.reportID), splitShares: transaction?.splitShares, diff --git a/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx b/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx index 58bb027bc79c..3d4c9c7b1ff9 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx +++ b/src/pages/iou/request/step/IOURequestStepScan/index.native.tsx @@ -294,7 +294,6 @@ function IOURequestStepScan({ policy: OnyxEntry; }, billable?: boolean, - reimbursable = true, ) => { files.forEach((receiptFile: ReceiptFile, index) => { const transaction = transactions.find((item) => item.transactionID === receiptFile.transactionID); @@ -316,7 +315,6 @@ function IOURequestStepScan({ created: transaction?.created, receipt, billable, - reimbursable, ...(gpsPoints ?? {}), }, ...(policyParams ?? {}), diff --git a/src/pages/iou/request/step/IOURequestStepScan/index.tsx b/src/pages/iou/request/step/IOURequestStepScan/index.tsx index 6fb2a569fa9d..578d3b7bf5d7 100644 --- a/src/pages/iou/request/step/IOURequestStepScan/index.tsx +++ b/src/pages/iou/request/step/IOURequestStepScan/index.tsx @@ -350,7 +350,6 @@ function IOURequestStepScan({ policy: OnyxEntry; }, billable?: boolean, - reimbursable = true, ) => { files.forEach((receiptFile: ReceiptFile, index) => { const transaction = transactions.find((item) => item.transactionID === receiptFile.transactionID); @@ -372,7 +371,6 @@ function IOURequestStepScan({ created: transaction?.created, receipt, billable, - reimbursable, ...(gpsPoints ?? {}), }, ...(policyParams ?? {}), @@ -396,7 +394,6 @@ function IOURequestStepScan({ merchant: '', receipt, billable, - reimbursable, }, shouldHandleNavigation: index === files.length - 1, backToReport, @@ -483,7 +480,7 @@ function IOURequestStepScan({ lat: successData.coords.latitude, long: successData.coords.longitude, }; - createTransaction(files, participant, gpsPoints, policyParams, false, true); + createTransaction(files, participant, gpsPoints, policyParams, false); }, (errorData) => { Log.info('[IOURequestStepScan] getCurrentPosition failed', false, errorData); diff --git a/src/pages/workspace/rules/IndividualExpenseRulesSection.tsx b/src/pages/workspace/rules/IndividualExpenseRulesSection.tsx index cd1ba3db7c46..2dcb4bc87c04 100644 --- a/src/pages/workspace/rules/IndividualExpenseRulesSection.tsx +++ b/src/pages/workspace/rules/IndividualExpenseRulesSection.tsx @@ -11,7 +11,7 @@ import useLocalize from '@hooks/useLocalize'; import usePolicy from '@hooks/usePolicy'; import useThemeStyles from '@hooks/useThemeStyles'; import {openExternalLink} from '@libs/actions/Link'; -import {getCashExpenseReimbursableMode, setPolicyAttendeeTrackingEnabled, setWorkspaceEReceiptsEnabled} from '@libs/actions/Policy/Policy'; +import {setPolicyAttendeeTrackingEnabled, setWorkspaceEReceiptsEnabled} from '@libs/actions/Policy/Policy'; import {convertToDisplayString} from '@libs/CurrencyUtils'; import Navigation from '@libs/Navigation/Navigation'; import type {ThemeStyles} from '@styles/index'; @@ -112,8 +112,6 @@ function IndividualExpenseRulesSection({policyID}: IndividualExpenseRulesSection return translate('workspace.rules.individualExpenseRules.maxExpenseAgeDays', {count: policy?.maxExpenseAge ?? 0}); }, [policy?.maxExpenseAge, translate]); - const reimbursableMode = getCashExpenseReimbursableMode(policyID) ?? CONST.POLICY.CASH_EXPENSE_REIMBURSEMENT_CHOICES.REIMBURSABLE_DEFAULT; - const reimbursableModeText = translate(`workspace.rules.individualExpenseRules.${reimbursableMode}`); const billableModeText = translate(`workspace.rules.individualExpenseRules.${policy?.defaultBillable ? 'billable' : 'nonBillable'}`); const prohibitedExpenses = useMemo(() => { @@ -166,12 +164,6 @@ function IndividualExpenseRulesSection({policyID}: IndividualExpenseRulesSection action: () => Navigation.navigate(ROUTES.RULES_MAX_EXPENSE_AGE.getRoute(policyID)), pendingAction: policy?.pendingFields?.maxExpenseAge, }, - { - title: reimbursableModeText, - descriptionTranslationKey: 'workspace.rules.individualExpenseRules.cashExpenseDefault', - action: () => Navigation.navigate(ROUTES.RULES_REIMBURSABLE_DEFAULT.getRoute(policyID)), - pendingAction: policy?.pendingFields?.defaultReimbursable, - }, { title: billableModeText, descriptionTranslationKey: 'workspace.rules.individualExpenseRules.billableDefault', diff --git a/src/pages/workspace/rules/RulesReimbursableDefaultPage.tsx b/src/pages/workspace/rules/RulesReimbursableDefaultPage.tsx deleted file mode 100644 index 0925058a0802..000000000000 --- a/src/pages/workspace/rules/RulesReimbursableDefaultPage.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import React from 'react'; -import HeaderWithBackButton from '@components/HeaderWithBackButton'; -import ScreenWrapper from '@components/ScreenWrapper'; -import SelectionList from '@components/SelectionList'; -import RadioListItem from '@components/SelectionList/RadioListItem'; -import Text from '@components/Text'; -import useLocalize from '@hooks/useLocalize'; -import useThemeStyles from '@hooks/useThemeStyles'; -import {getCashExpenseReimbursableMode, setPolicyReimbursableMode} from '@libs/actions/Policy/Policy'; -import Navigation from '@libs/Navigation/Navigation'; -import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types'; -import type {SettingsNavigatorParamList} from '@libs/Navigation/types'; -import AccessOrNotFoundWrapper from '@pages/workspace/AccessOrNotFoundWrapper'; -import CONST from '@src/CONST'; -import type SCREENS from '@src/SCREENS'; - -type RulesReimbursableDefaultPageProps = PlatformStackScreenProps; - -function RulesReimbursableDefaultPage({ - route: { - params: {policyID}, - }, -}: RulesReimbursableDefaultPageProps) { - const {translate} = useLocalize(); - const styles = useThemeStyles(); - const reimbursableMode = getCashExpenseReimbursableMode(policyID); - - const ReimbursableModes = Object.values(CONST.POLICY.CASH_EXPENSE_REIMBURSEMENT_CHOICES).map((mode) => ({ - text: translate(`workspace.rules.individualExpenseRules.${mode}`), - alternateText: translate(`workspace.rules.individualExpenseRules.${mode}Description`), - value: mode, - isSelected: reimbursableMode === mode, - keyForList: mode, - })); - - return ( - - - Navigation.goBack()} - /> - - {translate('workspace.rules.individualExpenseRules.cashExpenseDefaultDescription')} - - { - setPolicyReimbursableMode(policyID, item.value); - Navigation.setNavigationActionToMicrotaskQueue(Navigation.goBack); - }} - shouldSingleExecuteRowSelect - containerStyle={[styles.pt3]} - initiallyFocusedOptionKey={reimbursableMode} - addBottomSafeAreaPadding - /> - - - ); -} - -RulesReimbursableDefaultPage.displayName = 'RulesReimbursableDefaultPage'; - -export default RulesReimbursableDefaultPage; diff --git a/src/types/onyx/OriginalMessage.ts b/src/types/onyx/OriginalMessage.ts index 2b1d4628127a..3169d713ba65 100644 --- a/src/types/onyx/OriginalMessage.ts +++ b/src/types/onyx/OriginalMessage.ts @@ -392,12 +392,6 @@ type OriginalMessagePolicyChangeLog = { /** New default billable value */ newDefaultBillable?: string; - /** Old default reimbursable value */ - oldDefaultReimbursable?: string; - - /** New default reimbursable value */ - newDefaultReimbursable?: string; - /** value -- returned when updating "Auto-approve compliant reports" */ value?: boolean; diff --git a/src/types/onyx/Policy.ts b/src/types/onyx/Policy.ts index d8cd8fe17135..2dacecea5953 100644 --- a/src/types/onyx/Policy.ts +++ b/src/types/onyx/Policy.ts @@ -1752,9 +1752,6 @@ type Policy = OnyxCommon.OnyxValueWithOfflineFeedback< /** Whether transactions should be billable by default */ defaultBillable?: boolean; - /** Whether transactions should be reimbursable by default */ - defaultReimbursable?: boolean; - /** The workspace description */ description?: string;