Skip to content

Commit 07326c4

Browse files
authored
Merge pull request #39638 from Expensify/monil-fixCrashWithZeroTax
[CP Staging] Fix crash with zero tax rate and allow tax amount to be zero
2 parents 823e9c9 + 2040aba commit 07326c4

File tree

5 files changed

+11
-10
lines changed

5 files changed

+11
-10
lines changed

src/components/MoneyTemporaryForRefactorRequestConfirmationList.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import * as MoneyRequestUtils from '@libs/MoneyRequestUtils';
2222
import Navigation from '@libs/Navigation/Navigation';
2323
import * as OptionsListUtils from '@libs/OptionsListUtils';
2424
import * as PolicyUtils from '@libs/PolicyUtils';
25-
import {isTaxPolicyEnabled} from '@libs/PolicyUtils';
25+
import {isTaxTrackingEnabled} from '@libs/PolicyUtils';
2626
import * as ReceiptUtils from '@libs/ReceiptUtils';
2727
import * as ReportUtils from '@libs/ReportUtils';
2828
import playSound, {SOUNDS} from '@libs/Sound';
@@ -284,7 +284,7 @@ function MoneyTemporaryForRefactorRequestConfirmationList({
284284
const shouldShowTags = useMemo(() => isPolicyExpenseChat && OptionsListUtils.hasEnabledTags(policyTagLists), [isPolicyExpenseChat, policyTagLists]);
285285

286286
// A flag for showing tax rate
287-
const shouldShowTax = isTaxPolicyEnabled(isPolicyExpenseChat, policy);
287+
const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat, policy);
288288

289289
// A flag for showing the billable field
290290
const shouldShowBillable = !lodashGet(policy, 'disabledFields.defaultBillable', true);

src/components/ReportActionItem/MoneyRequestView.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import * as CardUtils from '@libs/CardUtils';
2323
import * as CurrencyUtils from '@libs/CurrencyUtils';
2424
import * as OptionsListUtils from '@libs/OptionsListUtils';
2525
import * as PolicyUtils from '@libs/PolicyUtils';
26-
import {isTaxPolicyEnabled} from '@libs/PolicyUtils';
26+
import {isTaxTrackingEnabled} from '@libs/PolicyUtils';
2727
import * as ReceiptUtils from '@libs/ReceiptUtils';
2828
import * as ReportUtils from '@libs/ReportUtils';
2929
import * as TransactionUtils from '@libs/TransactionUtils';
@@ -123,7 +123,7 @@ function MoneyRequestView({
123123
const cardProgramName = isCardTransaction && transactionCardID !== undefined ? CardUtils.getCardDescription(transactionCardID) : '';
124124
const isApproved = ReportUtils.isReportApproved(moneyRequestReport);
125125
const taxRates = policy?.taxRates;
126-
const formattedTaxAmount = transactionTaxAmount ? CurrencyUtils.convertToDisplayString(transactionTaxAmount, transactionCurrency) : '';
126+
const formattedTaxAmount = CurrencyUtils.convertToDisplayString(transactionTaxAmount, transactionCurrency);
127127

128128
const taxRatesDescription = taxRates?.name;
129129
const taxRateTitle =
@@ -160,7 +160,7 @@ function MoneyRequestView({
160160
const shouldShowBillable = isPolicyExpenseChat && (!!transactionBillable || !(policy?.disabledFields?.defaultBillable ?? true));
161161

162162
// A flag for showing tax rate
163-
const shouldShowTax = isTaxPolicyEnabled(isPolicyExpenseChat, policy) && transactionTaxCode && transactionTaxAmount;
163+
const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat, policy);
164164

165165
const {getViolationsForField} = useViolations(transactionViolations ?? []);
166166
const hasViolations = useCallback(

src/libs/PolicyUtils.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ function isPaidGroupPolicy(policy: OnyxEntry<Policy> | EmptyObject): boolean {
244244
return policy?.type === CONST.POLICY.TYPE.TEAM || policy?.type === CONST.POLICY.TYPE.CORPORATE;
245245
}
246246

247-
function isTaxPolicyEnabled(isPolicyExpenseChat: boolean, policy: OnyxEntry<Policy>): boolean {
247+
function isTaxTrackingEnabled(isPolicyExpenseChat: boolean, policy: OnyxEntry<Policy>): boolean {
248248
return (isPolicyExpenseChat && (policy?.tax?.trackingEnabled ?? policy?.isTaxTrackingEnabled)) ?? false;
249249
}
250250

@@ -332,7 +332,7 @@ export {
332332
isInstantSubmitEnabled,
333333
isFreeGroupPolicy,
334334
isPolicyAdmin,
335-
isTaxPolicyEnabled,
335+
isTaxTrackingEnabled,
336336
isSubmitAndClose,
337337
getMemberAccountIDsForWorkspace,
338338
getIneligibleInvitees,

src/pages/EditRequestPage.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import * as IOUUtils from '@libs/IOUUtils';
1313
import Navigation from '@libs/Navigation/Navigation';
1414
import * as OptionsListUtils from '@libs/OptionsListUtils';
1515
import * as PolicyUtils from '@libs/PolicyUtils';
16-
import {isTaxPolicyEnabled} from '@libs/PolicyUtils';
16+
import {isTaxTrackingEnabled} from '@libs/PolicyUtils';
1717
import * as ReportUtils from '@libs/ReportUtils';
1818
import * as TransactionUtils from '@libs/TransactionUtils';
1919
import * as IOU from '@userActions/IOU';
@@ -106,7 +106,7 @@ function EditRequestPage({report, route, policy, policyCategories, policyTags, p
106106
const shouldShowTags = useMemo(() => isPolicyExpenseChat && (transactionTag || OptionsListUtils.hasEnabledTags(policyTagLists)), [isPolicyExpenseChat, policyTagLists, transactionTag]);
107107

108108
// A flag for showing tax rate
109-
const shouldShowTax = isTaxPolicyEnabled(isPolicyExpenseChat, policy);
109+
const shouldShowTax = isTaxTrackingEnabled(isPolicyExpenseChat, policy);
110110

111111
// Decides whether to allow or disallow editing a money request
112112
useEffect(() => {

src/pages/iou/steps/MoneyRequestAmountForm.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,8 @@ function MoneyRequestAmountForm(
231231
* Submit amount and navigate to a proper page
232232
*/
233233
const submitAndNavigateToNextPage = useCallback(() => {
234-
if (isAmountInvalid(currentAmount)) {
234+
// Skip the check for tax amount form as 0 is a valid input
235+
if (!isTaxAmountForm && isAmountInvalid(currentAmount)) {
235236
setFormError('iou.error.invalidAmount');
236237
return;
237238
}

0 commit comments

Comments
 (0)