diff --git a/src/pages/workspace/distanceRates/PolicyDistanceRateDetailsPage.tsx b/src/pages/workspace/distanceRates/PolicyDistanceRateDetailsPage.tsx index f9c56b8763c3..c81e5c6cfe8f 100644 --- a/src/pages/workspace/distanceRates/PolicyDistanceRateDetailsPage.tsx +++ b/src/pages/workspace/distanceRates/PolicyDistanceRateDetailsPage.tsx @@ -48,8 +48,11 @@ function PolicyDistanceRateDetailsPage({policy, route}: PolicyDistanceRateDetail const customUnit = customUnits[Object.keys(customUnits)[0]]; const rate = customUnit?.rates[rateID]; const currency = rate?.currency ?? CONST.CURRENCY.USD; - const canDeleteRate = Object.values(customUnit?.rates ?? {}).filter((distanceRate) => distanceRate?.enabled).length > 1 || !rate?.enabled; - const canDisableRate = Object.values(customUnit?.rates ?? {}).filter((distanceRate) => distanceRate?.enabled).length > 1; + + // Rates can be disabled or deleted as long as in the remaining rates there is always at least one enabled rate and there are no pending delete action + const canDisableOrDeleteRate = Object.values(customUnit?.rates).some( + (distanceRate: Rate) => distanceRate?.enabled && rateID !== distanceRate?.customUnitRateID && distanceRate?.pendingAction !== CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE, + ); const errorFields = rate?.errorFields; if (!rate) { @@ -61,7 +64,7 @@ function PolicyDistanceRateDetailsPage({policy, route}: PolicyDistanceRateDetail }; const toggleRate = () => { - if (!rate?.enabled || canDisableRate) { + if (!rate?.enabled || canDisableOrDeleteRate) { Policy.setPolicyDistanceRatesEnabled(policyID, customUnit, [{...rate, enabled: !rate?.enabled}]); } else { setIsWarningModalVisible(true); @@ -82,7 +85,7 @@ function PolicyDistanceRateDetailsPage({policy, route}: PolicyDistanceRateDetail icon: Expensicons.Trashcan, text: translate('workspace.distanceRates.deleteDistanceRate'), onSelected: () => { - if (canDeleteRate) { + if (canDisableOrDeleteRate) { setIsDeleteModalVisible(true); return; }