Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 9 additions & 27 deletions src/components/MoneyRequestConfirmationList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ import Log from '@libs/Log';
import {validateAmount} from '@libs/MoneyRequestUtils';
import Navigation from '@libs/Navigation/Navigation';
import {getIOUConfirmationOptionsFromPayeePersonalDetail, hasEnabledOptions} from '@libs/OptionsListUtils';
import {getDistanceRateCustomUnitRate, getTagLists, isTaxTrackingEnabled} from '@libs/PolicyUtils';
import {getTagLists, isTaxTrackingEnabled} from '@libs/PolicyUtils';
import {isSelectedManagerMcTest} from '@libs/ReportUtils';
import type {OptionData} from '@libs/ReportUtils';
import {
Expand Down Expand Up @@ -475,35 +475,16 @@ function MoneyRequestConfirmationList({
}, [shouldCalculateDistanceAmount, isReadOnly, distanceRequestAmount, transactionID, currency, isTypeSplit, isPolicyExpenseChat, selectedParticipantsProp, transaction]);

// Calculate and set tax amount in transaction draft
const taxableAmount = isDistanceRequest ? DistanceRequestUtils.getTaxableAmount(policy, customUnitRateID, distance) : (transaction?.amount ?? 0);
const taxPercentage = getTaxValue(policy, transaction, transaction?.taxCode ?? defaultTaxCode) ?? '';
const taxAmount = calculateTaxAmount(taxPercentage, taxableAmount, transaction?.currency ?? CONST.CURRENCY.USD);
const taxAmountInSmallestCurrencyUnits = convertToBackendAmount(Number.parseFloat(taxAmount.toString()));
useEffect(() => {
if (!shouldShowTax || !transaction) {
if (!transactionID) {
return;
}

let taxableAmount: number | undefined;
let taxCode: string | undefined;
if (isDistanceRequest) {
if (customUnitRateID) {
const customUnitRate = getDistanceRateCustomUnitRate(policy, customUnitRateID);
taxCode = customUnitRate?.attributes?.taxRateExternalID;
taxableAmount = DistanceRequestUtils.getTaxableAmount(policy, customUnitRateID, distance);
}
} else {
taxableAmount = transaction.amount ?? 0;
taxCode = transaction.taxCode ?? getDefaultTaxCode(policy, transaction) ?? '';
}

if (taxCode && taxableAmount) {
const taxPercentage = getTaxValue(policy, transaction, taxCode) ?? '';
const taxAmount = calculateTaxAmount(taxPercentage, taxableAmount, transaction.currency);
const taxAmountInSmallestCurrencyUnits = convertToBackendAmount(Number.parseFloat(taxAmount.toString()));

// Only update if the calculated tax amount is different from the current one
if (transaction.taxAmount !== taxAmountInSmallestCurrencyUnits) {
setMoneyRequestTaxAmount(transaction.transactionID, taxAmountInSmallestCurrencyUnits);
}
}
}, [policy, shouldShowTax, transaction, isDistanceRequest, customUnitRateID, distance]);
setMoneyRequestTaxAmount(transactionID, taxAmountInSmallestCurrencyUnits);
}, [transactionID, taxAmountInSmallestCurrencyUnits]);

// If completing a split expense fails, set didConfirm to false to allow the user to edit the fields again
if (isEditingSplitBill && didConfirm) {
Expand Down Expand Up @@ -964,6 +945,7 @@ function MoneyRequestConfirmationList({
routeError,
isDelegateAccessRestricted,
showDelegateNoAccessModal,
setDidConfirmSplit,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I mentioned this in the PR description, but I had to add this to make React Compiler happy

],
);

Expand Down
Loading