diff --git a/src/components/TransactionItemRow/index.tsx b/src/components/TransactionItemRow/index.tsx index fb58fc366456..6d1764aef4bc 100644 --- a/src/components/TransactionItemRow/index.tsx +++ b/src/components/TransactionItemRow/index.tsx @@ -591,7 +591,8 @@ function TransactionItemRow({ const hasConvertedAmount = transactionItem.convertedAmount != null; // Offline expenses don't have a BE-computed convertedAmount yet — fall back to the unconverted // amount in the transaction's own currency so users don't see a misleading $0.00 placeholder. - const totalAmount = hasConvertedAmount ? getConvertedAmount(transactionItem, isFromExpenseReport, false, true) : getAmount(transactionItem, isFromExpenseReport, false, true); + // Pass isFromExpenseReport so IOU reports stay positive while expense reports get NewDot's signed display. + const totalAmount = hasConvertedAmount ? getConvertedAmount(transactionItem, isFromExpenseReport) : getAmount(transactionItem, isFromExpenseReport); // When converted, display in the report's output currency; otherwise use the transaction's own currency. const totalCurrency = hasConvertedAmount ? (report?.currency ?? policy?.outputCurrency ?? getCurrency(transactionItem)) : getCurrency(transactionItem); return ( diff --git a/src/libs/SearchUIUtils.ts b/src/libs/SearchUIUtils.ts index d5899a78f7f5..13a13bcb0cb1 100644 --- a/src/libs/SearchUIUtils.ts +++ b/src/libs/SearchUIUtils.ts @@ -5320,9 +5320,11 @@ function getColumnsToShow({ columns[CONST.SEARCH.TABLE_COLUMNS.CARD] = true; } - // If the transaction has any tax info (code, value, or amount), - // show both TAX_RATE and TAX_AMOUNT columns. Zero is valid tax data. - const hasTaxInfo = !!transaction.taxCode || transaction.taxAmount != null || (transaction.taxValue !== undefined && transaction.taxValue !== ''); + // Show both TAX_RATE and TAX_AMOUNT when the transaction has a meaningful tax signal. + // Use truthy checks so default/no-tax values (0, null, '', undefined) don't trigger + // false positives — buildOptimisticTransaction seeds taxAmount: 0 on every new draft, + // which would otherwise flash tax columns on for offline-pending transactions. + const hasTaxInfo = !!transaction.taxCode || !!transaction.taxAmount || !!transaction.taxValue; if (hasTaxInfo) { columns[CONST.SEARCH.TABLE_COLUMNS.TAX_RATE] = true; columns[CONST.SEARCH.TABLE_COLUMNS.TAX_AMOUNT] = true;