Skip to content

Commit 8afed52

Browse files
committed
Show Central invoicing for travel cards in expense detail and EReceipt views
1 parent efc6371 commit 8afed52

4 files changed

Lines changed: 46 additions & 5 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(transactionCardName, transactionCardID, cardList, translate) ?? (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(transaction?.cardName, transaction?.cardID, nonPersonalAndWorkspaceCards, translate);
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
@@ -199,14 +199,20 @@ function getCardDescriptionForSearchTable(card: Card, translate: LocalizedTransl
199199
* @param transactionCardName
200200
* @param cardID
201201
* @param cards
202+
* @param translate
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(transactionCardName?: string, cardID?: number, cards?: CardList, translate?: LocalizedTranslate) {
206+
if (!cardID || !cards?.[cardID]) {
206207
return transactionCardName;
207208
}
208209
const card = cards[cardID];
209-
210+
if (isTravelCard(card) && translate) {
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: 35 additions & 0 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,
@@ -2948,6 +2955,34 @@ describe('CardUtils', () => {
29482955
const description = getCompanyCardDescription('Test', 21570657, cardList);
29492956
expect(description).toBe('Test');
29502957
});
2958+
2959+
it('should return "Central invoicing" for a travel card when translate is provided', () => {
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('Expensify Card - 6909', 99999, travelCardList, mockTranslate);
2970+
expect(description).toBe('Central invoicing');
2971+
});
2972+
2973+
it('should return raw card name for a travel card when translate is not provided', () => {
2974+
const travelCardList = {
2975+
'99999': {
2976+
cardID: 99999,
2977+
bank: CONST.EXPENSIFY_CARD.BANK,
2978+
nameValuePairs: {
2979+
feedCountry: CONST.TRAVEL.PROGRAM_TRAVEL_US,
2980+
},
2981+
},
2982+
} as unknown as CardList;
2983+
const description = getCompanyCardDescription('Expensify Card - 6909', 99999, travelCardList);
2984+
expect(description).toBe('Expensify Card - 6909');
2985+
});
29512986
});
29522987

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

0 commit comments

Comments
 (0)