From ac301a576666d29f4f5d1eead2a0c0a2dfe19e64 Mon Sep 17 00:00:00 2001 From: Georgia Monahan Date: Tue, 10 Oct 2023 13:14:10 +0100 Subject: [PATCH 1/5] Update MoneyRequestPreview description to support Expensify Card Transactions --- .../ReportActionItem/MoneyRequestPreview.js | 12 +++++++++ src/languages/en.ts | 2 ++ src/languages/es.ts | 2 ++ src/libs/TransactionUtils.ts | 26 +++++++++++++++++++ 4 files changed, 42 insertions(+) diff --git a/src/components/ReportActionItem/MoneyRequestPreview.js b/src/components/ReportActionItem/MoneyRequestPreview.js index 35215cadd15d..bf7413776c5c 100644 --- a/src/components/ReportActionItem/MoneyRequestPreview.js +++ b/src/components/ReportActionItem/MoneyRequestPreview.js @@ -164,6 +164,7 @@ function MoneyRequestPreview(props) { const isScanning = hasReceipt && TransactionUtils.isReceiptBeingScanned(props.transaction); const hasFieldErrors = TransactionUtils.hasMissingSmartscanFields(props.transaction); const isDistanceRequest = TransactionUtils.isDistanceRequest(props.transaction); + const isExpensifyCardTransaction = TransactionUtils.isExpensifyCardTransaction(props.transaction); const isSettled = ReportUtils.isSettled(props.iouReport); // Show the merchant for IOUs and expenses only if they are custom or not related to scanning smartscan @@ -187,6 +188,17 @@ function MoneyRequestPreview(props) { }; const getPreviewHeaderText = () => { + if(isExpensifyCardTransaction) { + let message = props.translate('iou.card'); + + if (TransactionUtils.isPending(props.transaction)) { + message += ` • ${props.translate('iou.pending')}`; + } else if (ReportUtils.isSettled(props.iouReport.reportID)) { + message += ` • ${props.translate('common.done')}`; + } + return message; + } + if (isDistanceRequest) { return props.translate('common.distance'); } diff --git a/src/languages/en.ts b/src/languages/en.ts index 7133ed88579e..89a19e9bef6d 100755 --- a/src/languages/en.ts +++ b/src/languages/en.ts @@ -512,6 +512,7 @@ export default { approve: 'Approve', approved: 'Approved', cash: 'Cash', + card: 'Card', split: 'Split', addToSplit: 'Add to split', splitBill: 'Split bill', @@ -522,6 +523,7 @@ export default { pay: 'Pay', viewDetails: 'View details', pending: 'Pending', + posted: 'Posted', deleteReceipt: 'Delete receipt', receiptScanning: 'Receipt scan in progress…', receiptMissingDetails: 'Receipt missing details', diff --git a/src/languages/es.ts b/src/languages/es.ts index a98ddfaff7d0..b3e3fdf5cb41 100644 --- a/src/languages/es.ts +++ b/src/languages/es.ts @@ -504,6 +504,7 @@ export default { approve: 'Aprobar', approved: 'Aprobado', cash: 'Efectivo', + card: 'Tarjeta', split: 'Dividir', addToSplit: 'Añadir para dividir', splitBill: 'Dividir factura', @@ -514,6 +515,7 @@ export default { pay: 'Pagar', viewDetails: 'Ver detalles', pending: 'Pendiente', + posted: 'Contabilizado', deleteReceipt: 'Eliminar recibo', receiptScanning: 'Escaneo de recibo en curso…', receiptMissingDetails: 'Recibo con campos vacíos', diff --git a/src/libs/TransactionUtils.ts b/src/libs/TransactionUtils.ts index beb1f9c323d6..e17cb9672bd9 100644 --- a/src/libs/TransactionUtils.ts +++ b/src/libs/TransactionUtils.ts @@ -3,6 +3,7 @@ import {format, parseISO, isValid} from 'date-fns'; import CONST from '../CONST'; import ONYXKEYS from '../ONYXKEYS'; import DateUtils from './DateUtils'; +import {isExpensifyCard} from './CardUtils'; import * as NumberUtils from './NumberUtils'; import {RecentWaypoint, ReportAction, Transaction} from '../types/onyx'; import {Receipt, Comment, WaypointCollection} from '../types/onyx/Transaction'; @@ -277,6 +278,28 @@ function isDistanceRequest(transaction: Transaction): boolean { return type === CONST.TRANSACTION.TYPE.CUSTOM_UNIT && customUnitName === CONST.CUSTOM_UNITS.NAME_DISTANCE; } +function isExpensifyCardTransaction(transaction: Transaction): boolean { + if(!transaction.cardID){ + return false; + } + return isExpensifyCard(transaction.cardID); +} + + +function isPending(transaction: Transaction): boolean { + if(!transaction.status){ + return false; + } + return transaction.status === CONST.TRANSACTION.STATUS.PENDING; +} + +function isPosted(transaction: Transaction): boolean { + if(!transaction.status){ + return false; + } + return transaction.status === CONST.TRANSACTION.STATUS.POSTED; +} + function isReceiptBeingScanned(transaction: Transaction): boolean { return [CONST.IOU.RECEIPT_STATE.SCANREADY, CONST.IOU.RECEIPT_STATE.SCANNING].some((value) => value === transaction.receipt.state); } @@ -395,6 +418,9 @@ export { isReceiptBeingScanned, getValidWaypoints, isDistanceRequest, + isExpensifyCardTransaction, + isPending, + isPosted, getWaypoints, hasMissingSmartscanFields, getWaypointIndex, From 3b74f5371d9facb0473ea2dd7f15a4e923424865 Mon Sep 17 00:00:00 2001 From: Georgia Monahan Date: Tue, 10 Oct 2023 13:15:31 +0100 Subject: [PATCH 2/5] prettier --- src/components/ReportActionItem/MoneyRequestPreview.js | 2 +- src/libs/TransactionUtils.ts | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestPreview.js b/src/components/ReportActionItem/MoneyRequestPreview.js index bf7413776c5c..ac2933865eeb 100644 --- a/src/components/ReportActionItem/MoneyRequestPreview.js +++ b/src/components/ReportActionItem/MoneyRequestPreview.js @@ -188,7 +188,7 @@ function MoneyRequestPreview(props) { }; const getPreviewHeaderText = () => { - if(isExpensifyCardTransaction) { + if (isExpensifyCardTransaction) { let message = props.translate('iou.card'); if (TransactionUtils.isPending(props.transaction)) { diff --git a/src/libs/TransactionUtils.ts b/src/libs/TransactionUtils.ts index e17cb9672bd9..982358cb3827 100644 --- a/src/libs/TransactionUtils.ts +++ b/src/libs/TransactionUtils.ts @@ -279,22 +279,21 @@ function isDistanceRequest(transaction: Transaction): boolean { } function isExpensifyCardTransaction(transaction: Transaction): boolean { - if(!transaction.cardID){ + if (!transaction.cardID) { return false; } return isExpensifyCard(transaction.cardID); } - function isPending(transaction: Transaction): boolean { - if(!transaction.status){ + if (!transaction.status) { return false; } return transaction.status === CONST.TRANSACTION.STATUS.PENDING; } function isPosted(transaction: Transaction): boolean { - if(!transaction.status){ + if (!transaction.status) { return false; } return transaction.status === CONST.TRANSACTION.STATUS.POSTED; From bbce9fa367fe4de8463c75e470d6fe6188eea148 Mon Sep 17 00:00:00 2001 From: Georgia Monahan Date: Tue, 10 Oct 2023 20:44:59 +0100 Subject: [PATCH 3/5] move into getSettled function --- src/components/ReportActionItem/MoneyRequestPreview.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestPreview.js b/src/components/ReportActionItem/MoneyRequestPreview.js index 0f6672e5cf32..50bdedd1cb64 100644 --- a/src/components/ReportActionItem/MoneyRequestPreview.js +++ b/src/components/ReportActionItem/MoneyRequestPreview.js @@ -165,7 +165,7 @@ function MoneyRequestPreview(props) { const hasFieldErrors = TransactionUtils.hasMissingSmartscanFields(props.transaction); const isDistanceRequest = TransactionUtils.isDistanceRequest(props.transaction); const isExpensifyCardTransaction = TransactionUtils.isExpensifyCardTransaction(props.transaction); - const isSettled = ReportUtils.isSettled(props.iouReport); + const isSettled = ReportUtils.isSettled(props.iouReport.reportID); // Show the merchant for IOUs and expenses only if they are custom or not related to scanning smartscan const shouldShowMerchant = @@ -175,6 +175,9 @@ function MoneyRequestPreview(props) { const receiptImages = hasReceipt ? [ReceiptUtils.getThumbnailAndImageURIs(props.transaction.receipt.source, props.transaction.filename || '')] : []; const getSettledMessage = () => { + if (isExpensifyCardTransaction) { + return props.translate('common.done'); + } switch (lodashGet(props.action, 'originalMessage.paymentType', '')) { case CONST.IOU.PAYMENT_TYPE.EXPENSIFY: return props.translate('iou.settledExpensify'); @@ -193,9 +196,8 @@ function MoneyRequestPreview(props) { if (TransactionUtils.isPending(props.transaction)) { message += ` • ${props.translate('iou.pending')}`; - } else if (ReportUtils.isSettled(props.iouReport.reportID)) { - message += ` • ${props.translate('common.done')}`; } + return message; } From 3e8f41d9111d011872856a51e92cb3f7687cc228 Mon Sep 17 00:00:00 2001 From: Georgia Monahan Date: Wed, 11 Oct 2023 09:24:56 +0100 Subject: [PATCH 4/5] Move isExpensifyCardTransaction under distance --- .../ReportActionItem/MoneyRequestPreview.js | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestPreview.js b/src/components/ReportActionItem/MoneyRequestPreview.js index 50bdedd1cb64..8634c566f0e1 100644 --- a/src/components/ReportActionItem/MoneyRequestPreview.js +++ b/src/components/ReportActionItem/MoneyRequestPreview.js @@ -191,16 +191,6 @@ function MoneyRequestPreview(props) { }; const getPreviewHeaderText = () => { - if (isExpensifyCardTransaction) { - let message = props.translate('iou.card'); - - if (TransactionUtils.isPending(props.transaction)) { - message += ` • ${props.translate('iou.pending')}`; - } - - return message; - } - if (isDistanceRequest) { return props.translate('common.distance'); } @@ -213,6 +203,14 @@ function MoneyRequestPreview(props) { return props.translate('iou.split'); } + if (isExpensifyCardTransaction) { + let message = props.translate('iou.card'); + if (TransactionUtils.isPending(props.transaction)) { + message += ` • ${props.translate('iou.pending')}`; + } + return message; + } + let message = props.translate('iou.cash'); if (ReportUtils.isControlPolicyExpenseReport(props.iouReport) && ReportUtils.isReportApproved(props.iouReport) && !ReportUtils.isSettled(props.iouReport)) { message += ` • ${props.translate('iou.approved')}`; From ffb2e5df1c2f1b7acf412046691aa9ae4e1f63d4 Mon Sep 17 00:00:00 2001 From: Georgia Monahan Date: Wed, 11 Oct 2023 11:01:11 +0100 Subject: [PATCH 5/5] Update for distance and move settled message --- src/components/ReportActionItem/MoneyRequestPreview.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/ReportActionItem/MoneyRequestPreview.js b/src/components/ReportActionItem/MoneyRequestPreview.js index 8634c566f0e1..c7ca93e87694 100644 --- a/src/components/ReportActionItem/MoneyRequestPreview.js +++ b/src/components/ReportActionItem/MoneyRequestPreview.js @@ -175,7 +175,7 @@ function MoneyRequestPreview(props) { const receiptImages = hasReceipt ? [ReceiptUtils.getThumbnailAndImageURIs(props.transaction.receipt.source, props.transaction.filename || '')] : []; const getSettledMessage = () => { - if (isExpensifyCardTransaction) { + if (isExpensifyCardTransaction || isDistanceRequest) { return props.translate('common.done'); } switch (lodashGet(props.action, 'originalMessage.paymentType', '')) { @@ -216,8 +216,6 @@ function MoneyRequestPreview(props) { message += ` • ${props.translate('iou.approved')}`; } else if (props.iouReport.isWaitingOnBankAccount) { message += ` • ${props.translate('iou.pending')}`; - } else if (ReportUtils.isSettled(props.iouReport.reportID)) { - message += ` • ${props.translate('iou.settledExpensify')}`; } return message; };