Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
93f26c9
Allow zero amount expenses round 2
Gonals Oct 15, 2025
a0d0baf
tests
Gonals Oct 15, 2025
122318d
performance thingy
Gonals Oct 15, 2025
f2d0df6
change it so zero amount expenses with receipts are also allowed
Gonals Oct 15, 2025
043d884
remove uneeded
Gonals Oct 15, 2025
66270b5
one more test
Gonals Oct 15, 2025
1f71b90
better test
Gonals Oct 15, 2025
ef79084
Display 0.0 distance correctly
Gonals Oct 16, 2025
f2480a5
allow zero as modified amount
Gonals Oct 16, 2025
982281b
better display fix
Gonals Oct 16, 2025
02dbe50
conflicts
Gonals Oct 21, 2025
7207aef
Merge branch 'main' into alberto-reZero
Gonals Oct 22, 2025
b6449ca
prevent zero amount for pay actions
Gonals Oct 22, 2025
edc372f
allow zero
Gonals Oct 22, 2025
632e60c
keep existing behavior
Gonals Oct 22, 2025
1823bd9
prevent zero amount for invoices and show merchant field when needed
Gonals Oct 23, 2025
95f24fe
prevent zero on splits, because you can't split zero
Gonals Oct 23, 2025
635a6b5
pass isDistance
Gonals Oct 28, 2025
699a313
prettier
Gonals Oct 28, 2025
e530619
typescript validation
Gonals Oct 28, 2025
243bbfc
more of that
Gonals Oct 28, 2025
f20fc68
and more
Gonals Oct 28, 2025
2bb910d
one more
Gonals Oct 28, 2025
574b00e
lint
Gonals Oct 28, 2025
13a84d3
update tests
Gonals Oct 29, 2025
b9e7c2d
typing
Gonals Oct 29, 2025
7b3c5bd
and more typing
Gonals Oct 29, 2025
54f05e2
conflicts
Gonals Oct 29, 2025
338f04d
Merge branch 'main' into alberto-reZero
Gonals Oct 29, 2025
6ec45d3
lint
Gonals Oct 29, 2025
cdaff0c
better check for scan requests
Gonals Oct 29, 2025
49c69e0
Merge branch 'main' into alberto-reZero
Gonals Oct 30, 2025
886f0a8
test updating
Gonals Oct 30, 2025
1952071
and more tests
Gonals Oct 30, 2025
6038dbb
more updates
Gonals Oct 30, 2025
3c523b9
typo
Gonals Oct 30, 2025
673397a
Merge branch 'main' into alberto-reZero
Gonals Oct 30, 2025
1d3d6bb
conflicts
Gonals Oct 30, 2025
69d09dd
Merge branch 'main' into alberto-reZero
Gonals Nov 5, 2025
006b45e
improve some modifiedAmount behavior
Gonals Nov 5, 2025
85facfd
conflicts
Gonals Nov 6, 2025
870fe89
prettier
Gonals Nov 6, 2025
2cc4db1
deprecated searchReports
Gonals Nov 6, 2025
fa73736
one more
Gonals Nov 6, 2025
76411b9
try report
Gonals Nov 6, 2025
d67c01d
more lint
Gonals Nov 6, 2025
123e2e8
Default to default merchant for manual expenses
Gonals Nov 6, 2025
e22b006
also for the draft
Gonals Nov 6, 2025
56b985b
Several default checks
Gonals Nov 6, 2025
59a9745
And more default checks
Gonals Nov 6, 2025
768770f
and some more
Gonals Nov 6, 2025
11f05af
Update tests
Gonals Nov 6, 2025
4c1313e
prettier
Gonals Nov 6, 2025
438b0ae
more tests
Gonals Nov 6, 2025
9dd86ad
conflicts
Gonals Nov 7, 2025
7c39e52
more conflicts
Gonals Nov 7, 2025
5aaaa05
redo some stuff the merge got rid of
Gonals Nov 7, 2025
561b148
more lint
Gonals Nov 7, 2025
cfcc6e8
even more conflicts
Gonals Nov 7, 2025
ac23be8
prettier again
Gonals Nov 7, 2025
11d5558
unrelated lint because typescript hates me
Gonals Nov 7, 2025
fa896e5
but not as much as I hate it
Gonals Nov 7, 2025
a4a3a76
more conflicts
Gonals Nov 10, 2025
7cb252f
more tests
Gonals Nov 10, 2025
856aeac
and more
Gonals Nov 10, 2025
c4ac032
even more
Gonals Nov 10, 2025
2147e03
hopefully last one
Gonals Nov 10, 2025
d930996
some cleanup
Gonals Nov 10, 2025
8b7ff25
fix expenses
Gonals Nov 10, 2025
316335e
this never ends
Gonals Nov 10, 2025
8de4e87
a bit more
Gonals Nov 11, 2025
637424a
Merge branch 'main' into alberto-reZero
Gonals Nov 11, 2025
653dcfb
we keep going
Gonals Nov 11, 2025
d8a247c
Could this be it?
Gonals Nov 11, 2025
38ad7f0
final one
Gonals Nov 11, 2025
f19bc63
avoid undefined
Gonals Nov 11, 2025
932a69b
Merge branch 'main' into alberto-reZero
Gonals Nov 11, 2025
2dde72e
conflicts
Gonals Nov 12, 2025
c9c9eb6
another conflict
Gonals Nov 12, 2025
c9c4fa3
conflicts
Gonals Nov 13, 2025
3c3bc62
Correctly determine amount for violations
Gonals Nov 14, 2025
6ed9055
fix doesReportContainRequestsFromMultipleUsers
Gonals Nov 14, 2025
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
4 changes: 2 additions & 2 deletions __mocks__/reportData/transactions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ const transactionR14932: Transaction = {
reimbursable: true,
hasEReceipt: true,
cardID: 0,
modifiedAmount: 0,
modifiedAmount: '',
originalAmount: 0,
comment: {},
bank: '',
Expand Down Expand Up @@ -59,7 +59,7 @@ const transactionR98765: Transaction = {
hasEReceipt: true,
managedCard: false,
billable: false,
modifiedAmount: 0,
modifiedAmount: '',
cardID: 0,
originalAmount: 0,
comment: {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ function MoneyRequestReportPreview({
}

// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
return transactions.some((transaction) => (transaction?.modifiedAmount || transaction?.amount) < 0);
return transactions.some((transaction) => (Number(transaction?.modifiedAmount) || transaction?.amount) < 0);
}, [transactions, action.childType, iouReport]);

const openReportFromPreview = useCallback(() => {
Expand Down
21 changes: 10 additions & 11 deletions src/components/ReportActionItem/MoneyRequestView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,8 @@ function MoneyRequestView({
originalCurrency: transactionOriginalCurrency,
postedDate: transactionPostedDate,
} = useMemo<Partial<TransactionDetails>>(() => getTransactionDetails(transaction, undefined, undefined, allowNegativeAmount) ?? {}, [allowNegativeAmount, transaction]);
const isEmptyMerchant = transactionMerchant === '' || transactionMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT;
const isEmptyMerchant =
transactionMerchant === '' || transactionMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT || transactionMerchant === CONST.TRANSACTION.DEFAULT_MERCHANT;
const isDistanceRequest = isDistanceRequestTransactionUtils(transaction);
const isManualDistanceRequest = isManualDistanceRequestTransactionUtils(transaction);
const isMapDistanceRequest = isDistanceRequest && !isManualDistanceRequest;
Expand All @@ -218,9 +219,10 @@ function MoneyRequestView({
// Use the updated transaction amount in merge flow to have correct positive/negative sign
const actualAmount = isFromMergeTransaction && updatedTransaction ? updatedTransaction.amount : transactionAmount;
const actualCurrency = updatedTransaction ? getCurrency(updatedTransaction) : transactionCurrency;
const shouldDisplayTransactionAmount = ((isDistanceRequest && hasRoute) || !!actualAmount) && actualAmount !== undefined;
const shouldDisplayTransactionAmount = (isDistanceRequest && hasRoute) || !isDistanceRequest;
const formattedTransactionAmount = shouldDisplayTransactionAmount ? convertToDisplayString(actualAmount, actualCurrency) : '';
const formattedPerAttendeeAmount = shouldDisplayTransactionAmount ? convertToDisplayString(actualAmount / (actualAttendees?.length ?? 1), actualCurrency) : '';
const formattedPerAttendeeAmount =
shouldDisplayTransactionAmount && actualAmount !== undefined ? convertToDisplayString(actualAmount / (transactionAttendees?.length ?? 1), actualCurrency) : '';

const formattedOriginalAmount = transactionOriginalAmount && transactionOriginalCurrency && convertToDisplayString(transactionOriginalAmount, transactionOriginalCurrency);
const isCardTransaction = isCardTransactionTransactionUtils(transaction);
Expand Down Expand Up @@ -311,7 +313,7 @@ function MoneyRequestView({
const rateToDisplay = isCustomUnitOutOfPolicy ? translate('common.rateOutOfPolicy') : DistanceRequestUtils.getRateForDisplay(unit, rate, currency, translate, toLocaleDigit, isOffline);
const distanceToDisplay = DistanceRequestUtils.getDistanceForDisplay(hasRoute, distance, unit, rate, translate);
let merchantTitle = isEmptyMerchant ? '' : transactionMerchant;
let amountTitle = formattedTransactionAmount ? formattedTransactionAmount.toString() : '';
let amountTitle = formattedTransactionAmount?.toString() || '';
if (isTransactionScanning) {
merchantTitle = translate('iou.receiptStatusTitle');
amountTitle = translate('iou.receiptStatusTitle');
Expand All @@ -325,7 +327,10 @@ function MoneyRequestView({
}
return getDescription(updatedTransaction ?? null);
}, [updatedTransaction]);
const isEmptyUpdatedMerchant = updatedTransaction?.modifiedMerchant === '' || updatedTransaction?.modifiedMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT;
const isEmptyUpdatedMerchant =
updatedTransaction?.modifiedMerchant === '' ||
updatedTransaction?.modifiedMerchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT ||
updatedTransaction?.modifiedMerchant === CONST.TRANSACTION.DEFAULT_MERCHANT;
const updatedMerchantTitle = isEmptyUpdatedMerchant ? '' : (updatedTransaction?.modifiedMerchant ?? merchantTitle);

const saveBillable = useCallback(
Expand Down Expand Up @@ -386,10 +391,6 @@ function MoneyRequestView({
// Checks applied when creating a new expense
// NOTE: receipt field can return multiple violations, so we need to handle it separately
const fieldChecks: Partial<Record<ViolationField, {isError: boolean; translationPath: TranslationPaths}>> = {
amount: {
isError: transactionAmount === 0,
translationPath: canEditAmount ? 'common.error.enterAmount' : 'common.error.missingAmount',
},
merchant: {
isError: !isSettled && !isCancelled && isPolicyExpenseChat && isEmptyMerchant,
translationPath: canEditMerchant ? 'common.error.enterMerchant' : 'common.error.missingMerchantName',
Expand Down Expand Up @@ -424,7 +425,6 @@ function MoneyRequestView({
return '';
},
[
transactionAmount,
isSettled,
isCancelled,
isPolicyExpenseChat,
Expand All @@ -435,7 +435,6 @@ function MoneyRequestView({
hasViolations,
translate,
getViolationsForField,
canEditAmount,
canEditDate,
canEditMerchant,
canEdit,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ function TransactionPreview(props: TransactionPreviewProps) {

// See description of `transactionRawAmount` prop for more context
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
const transactionRawAmount = (transaction?.modifiedAmount || transaction?.amount) ?? 0;
const transactionRawAmount = (Number(transaction?.modifiedAmount) || transaction?.amount) ?? 0;

const shouldDisableOnPress = isBillSplit && isEmptyObject(transaction);
const isTransactionMadeWithCard = isManagedCardTransaction(transaction);
Expand Down
10 changes: 5 additions & 5 deletions src/components/Search/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ import {
shouldShowEmptyState,
shouldShowYear as shouldShowYearUtil,
} from '@libs/SearchUIUtils';
import {isOnHold, isTransactionPendingDelete, mergeProhibitedViolations, shouldShowViolation} from '@libs/TransactionUtils';
import {hasValidModifiedAmount, isOnHold, isTransactionPendingDelete, mergeProhibitedViolations, shouldShowViolation} from '@libs/TransactionUtils';
import Navigation, {navigationRef} from '@navigation/Navigation';
import type {SearchFullscreenNavigatorParamList} from '@navigation/types';
import EmptySearchView from '@pages/Search/EmptySearchView';
Expand Down Expand Up @@ -115,7 +115,7 @@ function mapTransactionItemToSelectedEntry(item: TransactionListItemType, outsta
convertedCurrency: item.convertedCurrency,
reportID: item.reportID,
policyID: item.report?.policyID,
amount: item.modifiedAmount ?? item.amount,
amount: hasValidModifiedAmount(item) ? Number(item.modifiedAmount) : item.amount,
convertedAmount: item.convertedAmount,
currency: item.currency,
isFromOneTransactionReport: item.isFromOneTransactionReport,
Expand Down Expand Up @@ -194,7 +194,7 @@ function prepareTransactionsList(item: TransactionListItemType, selectedTransact
action: item.action,
reportID: item.reportID,
policyID: item.policyID,
amount: Math.abs(item.modifiedAmount || item.amount),
amount: hasValidModifiedAmount(item) ? Number(item.modifiedAmount) : item.amount,
convertedAmount: item.convertedAmount,
convertedCurrency: item.convertedCurrency,
currency: item.currency,
Expand Down Expand Up @@ -473,7 +473,7 @@ function Search({
canDelete: transactionItem.canDelete,
reportID: transactionItem.reportID,
policyID: transactionItem.report?.policyID,
amount: transactionItem.modifiedAmount ?? transactionItem.amount,
amount: hasValidModifiedAmount(transactionItem) ? Number(transactionItem.modifiedAmount) : transactionItem.amount,
convertedAmount: transactionItem.convertedAmount,
convertedCurrency: transactionItem.convertedCurrency,
currency: transactionItem.currency,
Expand Down Expand Up @@ -510,7 +510,7 @@ function Search({
canDelete: transactionItem.canDelete,
reportID: transactionItem.reportID,
policyID: transactionItem.report?.policyID,
amount: transactionItem.modifiedAmount ?? transactionItem.amount,
amount: hasValidModifiedAmount(transactionItem) ? Number(transactionItem.modifiedAmount) : transactionItem.amount,
convertedAmount: transactionItem.convertedAmount,
convertedCurrency: transactionItem.convertedCurrency,
currency: transactionItem.currency,
Expand Down
2 changes: 1 addition & 1 deletion src/components/TransactionItemRow/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ function getMerchantName(transactionItem: TransactionWithOptionalSearchFields, t
}

const merchantName = StringUtils.getFirstLine(merchant);
return merchantName !== CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT ? merchantName : '';
return merchantName !== CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT && merchantName !== CONST.TRANSACTION.DEFAULT_MERCHANT ? merchantName : '';
}

function TransactionItemRow({
Expand Down
1 change: 1 addition & 0 deletions src/libs/API/parameters/TrackExpenseParams.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ type TrackExpenseParams = {
customUnitRateID?: string;
description?: string;
distance?: number;
isDistance?: boolean;
};

export default TrackExpenseParams;
2 changes: 1 addition & 1 deletion src/libs/DistanceRequestUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ function getDistanceForDisplay(
translate: LocaleContextProps['translate'],
useShortFormUnit?: boolean,
): string {
if (!hasRoute || !unit || !distanceInMeters) {
if (!hasRoute || !unit) {
return translate('iou.fieldPending');
}

Expand Down
4 changes: 2 additions & 2 deletions src/libs/ReportUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -954,7 +954,7 @@
Onyx.connect({
key: ONYXKEYS.CONCIERGE_REPORT_ID,
callback: (value) => {
conciergeReportID = value;

Check warning on line 957 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
},
});

Expand All @@ -962,7 +962,7 @@
Onyx.connect({
key: ONYXKEYS.SESSION,
callback: (value) => {
// When signed out, val is undefined

Check warning on line 965 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
if (!value) {
return;
}
Expand All @@ -980,7 +980,7 @@
Onyx.connect({
key: ONYXKEYS.PERSONAL_DETAILS_LIST,
callback: (value) => {
if (currentUserAccountID) {

Check warning on line 983 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
currentUserPersonalDetails = value?.[currentUserAccountID] ?? undefined;
}
allPersonalDetails = value ?? {};
Expand All @@ -992,14 +992,14 @@
Onyx.connect({
key: ONYXKEYS.COLLECTION.REPORT_DRAFT,
waitForCollectionCallback: true,
callback: (value) => (allReportsDraft = value),

Check warning on line 995 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
});

let allPolicies: OnyxCollection<Policy>;
Onyx.connect({
key: ONYXKEYS.COLLECTION.POLICY,
waitForCollectionCallback: true,
callback: (value) => (allPolicies = value),

Check warning on line 1002 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
});

let allPolicyDrafts: OnyxCollection<Policy>;
Expand All @@ -1014,7 +1014,7 @@
Onyx.connect({
key: ONYXKEYS.COLLECTION.REPORT,
waitForCollectionCallback: true,
callback: (value) => {

Check warning on line 1017 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
allReports = value;

if (!value) {
Expand Down Expand Up @@ -1052,14 +1052,14 @@
Onyx.connect({
key: ONYXKEYS.BETAS,
callback: (value) => (allBetas = value),
});

Check warning on line 1055 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function

let allTransactions: OnyxCollection<Transaction> = {};
let reportsTransactions: Record<string, Transaction[]> = {};
Onyx.connect({
key: ONYXKEYS.COLLECTION.TRANSACTION,
waitForCollectionCallback: true,
callback: (value) => {

Check warning on line 1062 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
if (!value) {
return;
}
Expand All @@ -1085,7 +1085,7 @@
Onyx.connect({
key: ONYXKEYS.COLLECTION.REPORT_ACTIONS,
waitForCollectionCallback: true,
callback: (actions) => {

Check warning on line 1088 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
if (!actions) {
return;
}
Expand All @@ -1098,7 +1098,7 @@
Onyx.connect({
key: ONYXKEYS.COLLECTION.REPORT_METADATA,
waitForCollectionCallback: true,
callback: (value) => {

Check warning on line 1101 in src/libs/ReportUtils.ts

View workflow job for this annotation

GitHub Actions / Changed files ESLint check

Onyx.connect() is deprecated. Use useOnyx() hook instead and pass the data as parameters to a pure function
if (!value) {
return;
}
Expand Down Expand Up @@ -5273,7 +5273,7 @@
originalMessage.oldMerchant = getMerchant(oldTransaction);

// For the originalMessage, we should use the non-negative amount, similar to what getAmount does for oldAmount
originalMessage.amount = Math.abs(updatedTransaction?.modifiedAmount ?? 0);
originalMessage.amount = Math.abs(Number(updatedTransaction?.modifiedAmount ?? 0));
originalMessage.currency = updatedTransaction?.modifiedCurrency ?? CONST.CURRENCY.USD;
originalMessage.merchant = updatedTransaction?.modifiedMerchant;
}
Expand Down Expand Up @@ -11898,7 +11898,7 @@
function doesReportContainRequestsFromMultipleUsers(iouReport: OnyxEntry<Report>): boolean {
const transactions = getReportTransactions(iouReport?.reportID);
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
return isIOUReport(iouReport) && transactions.some((transaction) => (transaction?.modifiedAmount || transaction?.amount) < 0);
return isIOUReport(iouReport) && transactions.some((transaction) => (Number(transaction?.modifiedAmount) || transaction?.amount) <= 0);
}

/**
Expand Down
8 changes: 4 additions & 4 deletions src/libs/SearchUIUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -626,7 +626,7 @@ function getTransactionItemCommonFormattedProperties(
const formattedTotal = getTransactionAmount(transactionItem, isExpenseReport);
const date = transactionItem?.modifiedCreated ? transactionItem.modifiedCreated : transactionItem?.created;
const merchant = getTransactionMerchant(transactionItem, policy);
const formattedMerchant = merchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT ? '' : merchant;
const formattedMerchant = merchant === CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT || merchant === CONST.TRANSACTION.DEFAULT_MERCHANT ? '' : merchant;

return {
formattedFrom,
Expand Down Expand Up @@ -684,7 +684,7 @@ function getShouldShowMerchant(data: OnyxTypes.SearchResults['data']): boolean {
if (isTransactionEntry(key)) {
const item = data[key];
const merchant = item.modifiedMerchant ? item.modifiedMerchant : (item.merchant ?? '');
return merchant !== '' && merchant !== CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT;
return merchant !== '' && merchant !== CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT && merchant !== CONST.TRANSACTION.DEFAULT_MERCHANT;
}
return false;
});
Expand Down Expand Up @@ -754,7 +754,7 @@ function isAmountTooLong(amount: number, maxLength = 8): boolean {

function isTransactionAmountTooLong(transactionItem: TransactionListItemType | SearchTransaction | OnyxTypes.Transaction) {
// eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
const amount = Math.abs(transactionItem.modifiedAmount || transactionItem.amount);
const amount = Math.abs(Number(transactionItem.modifiedAmount) || transactionItem.amount);
return isAmountTooLong(amount);
Comment on lines 755 to 758

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Not a blocker since it only affects the column width. If the amount is too long and the modifiedAmount is 0, this function will return true.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I think that is fine

}

Expand Down Expand Up @@ -2389,7 +2389,7 @@ function getColumnsToShow(
const reportActionsByTransactionIDMap = Array.isArray(data) ? undefined : createReportActionsByTransactionIDMap(data);
const updateColumns = (transaction: OnyxTypes.Transaction | SearchTransaction) => {
const merchant = transaction.modifiedMerchant ? transaction.modifiedMerchant : (transaction.merchant ?? '');
if ((merchant !== '' && merchant !== CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT) || isScanning(transaction)) {
if ((merchant !== '' && merchant !== CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT && merchant !== CONST.TRANSACTION.DEFAULT_MERCHANT) || isScanning(transaction)) {
columns[CONST.REPORT.TRANSACTION_LIST.COLUMNS.MERCHANT] = true;
}

Expand Down
8 changes: 1 addition & 7 deletions src/libs/TransactionPreviewUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ import {
hasPendingRTERViolation,
hasViolation,
hasWarningTypeViolation,
isAmountMissing,
isCreatedMissing,
isDistanceRequest,
isFetchingWaypointsFromServer,
Expand Down Expand Up @@ -247,12 +246,7 @@ function getTransactionPreviewTextAndTranslationPaths({

if (hasFieldErrors && RBRMessage === undefined) {
const merchantMissing = isMerchantMissing(transaction);
const amountMissing = isAmountMissing(transaction);
if (amountMissing && merchantMissing) {
RBRMessage = {translationPath: 'violations.reviewRequired'};
} else if (amountMissing) {
RBRMessage = {translationPath: 'iou.missingAmount'};
} else if (merchantMissing) {
if (merchantMissing) {
RBRMessage = {translationPath: 'iou.missingMerchant'};
}
}
Expand Down
Loading
Loading