diff --git a/src/libs/actions/Policy/DistanceRate.ts b/src/libs/actions/Policy/DistanceRate.ts
index 6b0a9c5c3ee0..f3f8dfb4f3c7 100644
--- a/src/libs/actions/Policy/DistanceRate.ts
+++ b/src/libs/actions/Policy/DistanceRate.ts
@@ -530,12 +530,12 @@ function updateDistanceTaxClaimableValue(policyID: string, customUnit: CustomUni
for (const rateID of Object.keys(customUnit.rates)) {
if (rateIDs.includes(rateID)) {
const foundRate = customUnitRates.find((rate) => rate.customUnitRateID === rateID);
- optimisticRates[rateID] = {...foundRate, pendingFields: {rate: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}};
- successRates[rateID] = {...foundRate, pendingFields: {rate: null}};
+ optimisticRates[rateID] = {...foundRate, pendingFields: {taxClaimablePercentage: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}};
+ successRates[rateID] = {...foundRate, pendingFields: {taxClaimablePercentage: null}};
failureRates[rateID] = {
...currentRates[rateID],
- pendingFields: {rate: null},
- errorFields: {rate: ErrorUtils.getMicroSecondOnyxError('common.genericErrorMessage')},
+ pendingFields: {taxClaimablePercentage: null},
+ errorFields: {taxClaimablePercentage: ErrorUtils.getMicroSecondOnyxError('common.genericErrorMessage')},
};
}
}
@@ -601,12 +601,12 @@ function updateDistanceTaxRate(policyID: string, customUnit: CustomUnit, customU
for (const rateID of Object.keys(customUnit.rates)) {
if (rateIDs.includes(rateID)) {
const foundRate = customUnitRates.find((rate) => rate.customUnitRateID === rateID);
- optimisticRates[rateID] = {...foundRate, pendingFields: {rate: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}};
- successRates[rateID] = {...foundRate, pendingFields: {rate: null}};
+ optimisticRates[rateID] = {...foundRate, pendingFields: {taxRateExternalID: CONST.RED_BRICK_ROAD_PENDING_ACTION.UPDATE}};
+ successRates[rateID] = {...foundRate, pendingFields: {taxRateExternalID: null}};
failureRates[rateID] = {
...currentRates[rateID],
- pendingFields: {rate: null},
- errorFields: {rate: ErrorUtils.getMicroSecondOnyxError('common.genericErrorMessage')},
+ pendingFields: {taxRateExternalID: null},
+ errorFields: {taxRateExternalID: ErrorUtils.getMicroSecondOnyxError('common.genericErrorMessage')},
};
}
}
diff --git a/src/pages/workspace/distanceRates/PolicyDistanceRateDetailsPage.tsx b/src/pages/workspace/distanceRates/PolicyDistanceRateDetailsPage.tsx
index 360cd1537bb7..70b829d41159 100644
--- a/src/pages/workspace/distanceRates/PolicyDistanceRateDetailsPage.tsx
+++ b/src/pages/workspace/distanceRates/PolicyDistanceRateDetailsPage.tsx
@@ -27,7 +27,7 @@ import ONYXKEYS from '@src/ONYXKEYS';
import ROUTES from '@src/ROUTES';
import type SCREENS from '@src/SCREENS';
import type * as OnyxTypes from '@src/types/onyx';
-import type {Rate} from '@src/types/onyx/Policy';
+import type {Rate, TaxRateAttributes} from '@src/types/onyx/Policy';
type PolicyDistanceRateDetailsPageOnyxProps = {
/** Policy details */
@@ -90,7 +90,7 @@ function PolicyDistanceRateDetailsPage({policy, route}: PolicyDistanceRateDetail
const taxClaimableValueToDisplay = taxClaimablePercentage && rate.rate ? CurrencyUtils.convertAmountToDisplayString(taxClaimablePercentage * rate.rate, currency) : '';
const unitToDisplay = translate(`common.${customUnit?.attributes?.unit ?? CONST.CUSTOM_UNITS.DISTANCE_UNIT_MILES}`);
- const clearErrorFields = (fieldName: keyof Rate) => {
+ const clearErrorFields = (fieldName: keyof Rate | keyof TaxRateAttributes) => {
DistanceRate.clearPolicyDistanceRateErrorFields(policyID, customUnit.customUnitID, rateID, {...errorFields, [fieldName]: null});
};
@@ -138,10 +138,10 @@ function PolicyDistanceRateDetailsPage({policy, route}: PolicyDistanceRateDetail
{isDistanceTrackTaxEnabled && (
clearErrorFields('attributes')}
+ onClose={() => clearErrorFields('taxRateExternalID')}
>
clearErrorFields('attributes')}
+ onClose={() => clearErrorFields('taxClaimablePercentage')}
>
;
@@ -41,6 +43,8 @@ function PolicyDistanceRateTaxRateEditPage({route, policy}: PolicyDistanceRateTa
text: `${value.name} (${value.value})`,
isSelected: taxRateExternalID === key,
keyForList: key,
+ pendingAction: value.pendingAction,
+ isDisabled: value.pendingAction === CONST.RED_BRICK_ROAD_PENDING_ACTION.DELETE,
}));
return result;
}, [policy, taxRateExternalID]);
diff --git a/src/pages/workspace/distanceRates/PolicyDistanceRatesSettingsPage.tsx b/src/pages/workspace/distanceRates/PolicyDistanceRatesSettingsPage.tsx
index 21370f90a415..9080685d3080 100644
--- a/src/pages/workspace/distanceRates/PolicyDistanceRatesSettingsPage.tsx
+++ b/src/pages/workspace/distanceRates/PolicyDistanceRatesSettingsPage.tsx
@@ -123,7 +123,7 @@ function PolicyDistanceRatesSettingsPage({policy, policyCategories, route}: Poli
)}
-
+
{translate('workspace.distanceRates.trackTax')}
{!isPolicyTrackTaxEnabled && (
-
-
+
+
{translate('workspace.distanceRates.taxFeatureNotEnabledMessage')}
{
Navigation.dismissModal();
Navigation.navigate(ROUTES.WORKSPACE_MORE_FEATURES.getRoute(policyID));
diff --git a/src/types/onyx/Policy.ts b/src/types/onyx/Policy.ts
index 070803e2e2fd..0137f1f55bc5 100644
--- a/src/types/onyx/Policy.ts
+++ b/src/types/onyx/Policy.ts
@@ -12,16 +12,19 @@ type TaxRateAttributes = {
taxRateExternalID?: string;
};
-type Rate = OnyxCommon.OnyxValueWithOfflineFeedback<{
- name?: string;
- rate?: number;
- currency?: string;
- customUnitRateID?: string;
- enabled?: boolean;
- errors?: OnyxCommon.Errors;
- errorFields?: OnyxCommon.ErrorFields;
- attributes?: TaxRateAttributes;
-}>;
+type Rate = OnyxCommon.OnyxValueWithOfflineFeedback<
+ {
+ name?: string;
+ rate?: number;
+ currency?: string;
+ customUnitRateID?: string;
+ enabled?: boolean;
+ errors?: OnyxCommon.Errors;
+ errorFields?: OnyxCommon.ErrorFields;
+ attributes?: TaxRateAttributes;
+ },
+ keyof TaxRateAttributes
+>;
type Attributes = {
unit: Unit;
@@ -567,6 +570,7 @@ export type {
CustomUnit,
Attributes,
Rate,
+ TaxRateAttributes,
TaxRate,
TaxRates,
TaxRatesWithDefault,