Skip to content

Commit

Permalink
Merge pull request #52928 from Krishna2323/krishna2323/issue/fix_47975
Browse files Browse the repository at this point in the history
fix: [Dupe detection] Tax field does not show the "Default" label on the confirmation page
  • Loading branch information
pecanoro authored Nov 27, 2024
2 parents f1fb9c1 + b230fee commit bd369e7
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,11 @@ function MoneyRequestPreviewContent({
// Clear the draft before selecting a different expense to prevent merging fields from the previous expense
// (e.g., category, tag, tax) that may be not enabled/available in the new expense's policy.
Transaction.abandonReviewDuplicateTransactions();
const comparisonResult = TransactionUtils.compareDuplicateTransactionFields(reviewingTransactionID, transaction?.reportID ?? '');
const comparisonResult = TransactionUtils.compareDuplicateTransactionFields(
reviewingTransactionID,
transaction?.reportID ?? '',
transaction?.transactionID ?? reviewingTransactionID,
);
Transaction.setReviewDuplicatesKey({...comparisonResult.keep, duplicates, transactionID: transaction?.transactionID ?? '', reportID: transaction?.reportID});

if ('merchant' in comparisonResult.change) {
Expand Down
16 changes: 12 additions & 4 deletions src/libs/TransactionUtils/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1044,10 +1044,10 @@ function removeSettledAndApprovedTransactions(transactionIDs: string[]) {
* 6. It returns the 'keep' and 'change' objects.
*/

function compareDuplicateTransactionFields(transactionID: string, reportID: string): {keep: Partial<ReviewDuplicates>; change: FieldsToChange} {
const transactionViolations = allTransactionViolations?.[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${transactionID}`];
function compareDuplicateTransactionFields(reviewingTransactionID: string, reportID: string, selectedTransactionID?: string): {keep: Partial<ReviewDuplicates>; change: FieldsToChange} {
const transactionViolations = allTransactionViolations?.[`${ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS}${reviewingTransactionID}`];
const duplicates = transactionViolations?.find((violation) => violation.name === CONST.VIOLATIONS.DUPLICATED_TRANSACTION)?.data?.duplicates ?? [];
const transactions = removeSettledAndApprovedTransactions([transactionID, ...duplicates]).map((item) => getTransaction(item));
const transactions = removeSettledAndApprovedTransactions([reviewingTransactionID, ...duplicates]).map((item) => getTransaction(item));
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const keep: Record<string, any> = {};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand Down Expand Up @@ -1100,6 +1100,14 @@ function compareDuplicateTransactionFields(transactionID: string, reportID: stri
}
}

// The comment object needs to be stored only when selecting a specific transaction to keep.
// It contains details such as 'customUnit' and 'waypoints,' which remain unchanged during the review steps
// but are essential for displaying complete information on the confirmation page.
if (selectedTransactionID) {
const selectedTransaction = transactions.find((t) => t?.transactionID === selectedTransactionID);
keep.comment = selectedTransaction?.comment ?? {};
}

for (const fieldName in fieldsToCompare) {
if (Object.prototype.hasOwnProperty.call(fieldsToCompare, fieldName)) {
const keys = fieldsToCompare[fieldName];
Expand Down Expand Up @@ -1196,7 +1204,7 @@ function buildNewTransactionAfterReviewingDuplicates(reviewDuplicateTransaction:
...restReviewDuplicateTransaction,
modifiedMerchant: reviewDuplicateTransaction?.merchant,
merchant: reviewDuplicateTransaction?.merchant,
comment: {comment: reviewDuplicateTransaction?.description},
comment: {...reviewDuplicateTransaction?.comment, comment: reviewDuplicateTransaction?.description},
};
}

Expand Down
5 changes: 5 additions & 0 deletions src/types/onyx/ReviewDuplicates.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import type {Comment} from './Transaction';

/**
* Model of review duplicates request
*/
Expand Down Expand Up @@ -29,6 +31,9 @@ type ReviewDuplicates = {
/** Description which user want to keep */
description: string;

/** NVPs of the transaction that we want to keep */
comment: Comment;

/** Whether the transaction is reimbursable */
reimbursable: boolean;

Expand Down

0 comments on commit bd369e7

Please sign in to comment.