Skip to content

Commit b04019f

Browse files
authored
Merge pull request Expensify#87918 from Expensify/blimpich-fixTravelCardDisplayRemaining
Fix travel invoicing card display in expense detail and EReceipt
2 parents 808703d + f3fc7c2 commit b04019f

4 files changed

Lines changed: 34 additions & 7 deletions

File tree

src/components/EReceipt.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ function EReceipt({transactionID, transactionItem, onLoad, isThumbnail = false,
9999
const currency = getCurrencySymbol(transactionCurrency ?? '');
100100
const amount = currency ? formattedAmount.replace(currency, '') : formattedAmount;
101101
const cardDescription =
102-
getCompanyCardDescription(transactionCardName, transactionCardID, cardList) ?? (transactionCardID ? getCardDescription(cardList?.[transactionCardID], translate) : '');
102+
getCompanyCardDescription(translate, transactionCardName, transactionCardID, cardList) ?? (transactionCardID ? getCardDescription(cardList?.[transactionCardID], translate) : '');
103103
const secondaryBgcolorStyle = secondaryColor ? StyleUtils.getBackgroundColorStyle(secondaryColor) : undefined;
104104
const primaryTextColorStyle = primaryColor ? StyleUtils.getColorStyle(primaryColor) : undefined;
105105
const titleTextColorStyle = titleColor ? StyleUtils.getColorStyle(titleColor) : undefined;

src/components/ReportActionItem/MoneyRequestView.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ function MoneyRequestView({
298298
const transactionOriginalAmount = transaction && getOriginalAmountForDisplay(transaction, isExpenseReport(moneyRequestReport));
299299
const formattedOriginalAmount = transactionOriginalAmount && transactionOriginalCurrency && convertToDisplayString(transactionOriginalAmount, transactionOriginalCurrency);
300300
const isFromCardImport = isCardTransactionTransactionUtils(transaction);
301-
const cardProgramName = getCompanyCardDescription(transaction?.cardName, transaction?.cardID, nonPersonalAndWorkspaceCards);
301+
const cardProgramName = getCompanyCardDescription(translate, transaction?.cardName, transaction?.cardID, nonPersonalAndWorkspaceCards);
302302
const shouldShowCard = isFromCardImport && cardProgramName;
303303

304304
const taxRates = policy?.taxRates;

src/libs/CardUtils.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -196,17 +196,23 @@ function getCardDescriptionForSearchTable(card: Card, translate: LocalizedTransl
196196
}
197197

198198
/**
199+
* @param translate
199200
* @param transactionCardName
200201
* @param cardID
201202
* @param cards
202203
* @returns company card name
203204
*/
204-
function getCompanyCardDescription(transactionCardName?: string, cardID?: number, cards?: CardList) {
205-
if (!cardID || !cards?.[cardID] || isExpensifyCard(cards[cardID])) {
205+
function getCompanyCardDescription(translate: LocalizedTranslate, transactionCardName?: string, cardID?: number, cards?: CardList) {
206+
if (!cardID || !cards?.[cardID]) {
206207
return transactionCardName;
207208
}
208209
const card = cards[cardID];
209-
210+
if (isTravelCard(card)) {
211+
return translate('cardTransactions.centralInvoicing');
212+
}
213+
if (isExpensifyCard(card)) {
214+
return transactionCardName;
215+
}
210216
return card.cardName;
211217
}
212218

tests/unit/CardUtilsTest.ts

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {buildFeedKeysWithAssignedCards, isExpensifyCardUkEuSupportedSelector} from '@selectors/Card';
22
import lodashSortBy from 'lodash/sortBy';
33
import type {OnyxCollection} from 'react-native-onyx';
4+
import type {LocalizedTranslate} from '@components/LocaleContextProvider';
45
import type {FeedKeysWithAssignedCards} from '@hooks/useFeedKeysWithAssignedCards';
56
import type IllustrationsType from '@styles/theme/illustrations/types';
67
import CONST from '@src/CONST';
@@ -2912,6 +2913,12 @@ describe('CardUtils', () => {
29122913
});
29132914

29142915
describe('getCompanyCardDescription', () => {
2916+
const mockTranslate = ((key: string) => {
2917+
if (key === 'cardTransactions.centralInvoicing') {
2918+
return 'Central invoicing';
2919+
}
2920+
return key;
2921+
}) as LocalizedTranslate;
29152922
const cardList: CardList = {
29162923
'21310091': {
29172924
accountID: 18439984,
@@ -2940,14 +2947,28 @@ describe('CardUtils', () => {
29402947
},
29412948
};
29422949
it('should return the correct description for a company card', () => {
2943-
const description = getCompanyCardDescription('Test', 21310091, cardList);
2950+
const description = getCompanyCardDescription(mockTranslate, 'Test', 21310091, cardList);
29442951
expect(description).toBe('480801XXXXXX2554');
29452952
});
29462953

29472954
it('should return the correct description for an Expensify card', () => {
2948-
const description = getCompanyCardDescription('Test', 21570657, cardList);
2955+
const description = getCompanyCardDescription(mockTranslate, 'Test', 21570657, cardList);
29492956
expect(description).toBe('Test');
29502957
});
2958+
2959+
it('should return "Central invoicing" for a travel card', () => {
2960+
const travelCardList = {
2961+
'99999': {
2962+
cardID: 99999,
2963+
bank: CONST.EXPENSIFY_CARD.BANK,
2964+
nameValuePairs: {
2965+
feedCountry: CONST.TRAVEL.PROGRAM_TRAVEL_US,
2966+
},
2967+
},
2968+
} as unknown as CardList;
2969+
const description = getCompanyCardDescription(mockTranslate, 'Expensify Card - 6909', 99999, travelCardList);
2970+
expect(description).toBe('Central invoicing');
2971+
});
29512972
});
29522973

29532974
describe('Expensify card sort comparator', () => {

0 commit comments

Comments
 (0)