Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Shows a different message when approving/paying all hold expenses #42736

Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
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
1 change: 1 addition & 0 deletions src/components/MoneyReportHeader.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,7 @@ function MoneyReportHeader({policy, report: moneyRequestReport, transactionThrea
paymentType={paymentType}
chatReport={chatReport}
moneyRequestReport={moneyRequestReport}
transactionCount={transactionIDs.length}
/>
)}
<ConfirmModal
Expand Down
15 changes: 13 additions & 2 deletions src/components/ProcessMoneyReportHoldMenu.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import React from 'react';
import React, {useMemo} from 'react';
import type {OnyxEntry} from 'react-native-onyx';
import useLocalize from '@hooks/useLocalize';
import Navigation from '@libs/Navigation/Navigation';
Expand Down Expand Up @@ -40,6 +40,9 @@ type ProcessMoneyReportHoldMenuProps = {

/** Type of action handled */
requestType?: ActionHandledType;

/** Number of transaction of a money request */
transactionCount: number;
};

function ProcessMoneyReportHoldMenu({
Expand All @@ -52,6 +55,7 @@ function ProcessMoneyReportHoldMenu({
paymentType,
chatReport,
moneyRequestReport,
transactionCount,
}: ProcessMoneyReportHoldMenuProps) {
const {translate} = useLocalize();
const isApprove = requestType === CONST.IOU.REPORT_ACTION_TYPE.APPROVE;
Expand All @@ -68,12 +72,19 @@ function ProcessMoneyReportHoldMenu({
onClose();
};

const promptText = useMemo(() => {
if (nonHeldAmount) {
return translate(isApprove ? 'iou.confirmApprovalAmount' : 'iou.confirmPayAmount');
}
return translate(isApprove ? 'iou.confirmApprovalAllHoldAmount' : 'iou.confirmPayAllHoldAmount', {transactionCount});
}, [nonHeldAmount, transactionCount, translate, isApprove]);

return (
<DecisionModal
title={translate(isApprove ? 'iou.confirmApprove' : 'iou.confirmPay')}
onClose={onClose}
isVisible={isVisible}
prompt={translate(isApprove ? 'iou.confirmApprovalAmount' : 'iou.confirmPayAmount')}
prompt={promptText}
firstOptionText={nonHeldAmount ? `${translate(isApprove ? 'iou.approveOnly' : 'iou.payOnly')} ${nonHeldAmount}` : undefined}
secondOptionText={`${translate(isApprove ? 'iou.approve' : 'iou.pay')} ${fullAmount}`}
onFirstOptionSubmit={() => onSubmit(false)}
Expand Down
1 change: 1 addition & 0 deletions src/components/ReportActionItem/ReportPreview.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -453,6 +453,7 @@ function ReportPreview({
paymentType={paymentType}
chatReport={chatReport}
moneyRequestReport={iouReport}
transactionCount={numberOfRequests}
/>
)}
</OfflineWithFeedback>
Expand Down
7 changes: 6 additions & 1 deletion src/languages/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import type {
BeginningOfChatHistoryDomainRoomPartOneParams,
CanceledRequestParams,
CharacterLimitParams,
ConfirmHoldExpenseParams,
ConfirmThatParams,
DateShouldBeAfterParams,
DateShouldBeBeforeParams,
Expand Down Expand Up @@ -772,8 +773,12 @@ export default {
keepAll: 'Keep all',
confirmApprove: 'Confirm approval amount',
confirmApprovalAmount: "Approve what's not on hold, or approve the entire report.",
confirmApprovalAllHoldAmount: ({transactionCount}: ConfirmHoldExpenseParams) =>
`${Str.pluralize('This expense is', 'These expenses are', transactionCount)} on hold. Do you want to approve anyway?`,
confirmPay: 'Confirm payment amount',
confirmPayAmount: "Pay what's not on hold, or pay all out-of-pocket spend.",
confirmPayAmount: "Pay what's not on hold, or pay the entire report.",
confirmPayAllHoldAmount: ({transactionCount}: ConfirmHoldExpenseParams) =>
`${Str.pluralize('This expense is', 'These expenses are', transactionCount)} on hold. Do you want to pay anyway?`,
payOnly: 'Pay only',
approveOnly: 'Approve only',
holdEducationalTitle: 'This expense is on',
Expand Down
15 changes: 14 additions & 1 deletion src/languages/es.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import type {
BeginningOfChatHistoryDomainRoomPartOneParams,
CanceledRequestParams,
CharacterLimitParams,
ConfirmHoldExpenseParams,
ConfirmThatParams,
DateShouldBeAfterParams,
DateShouldBeBeforeParams,
Expand Down Expand Up @@ -766,8 +767,20 @@ export default {
keepAll: 'Mantener todos',
confirmApprove: 'Confirmar importe a aprobar',
confirmApprovalAmount: 'Aprueba lo que no está bloqueado, o aprueba todo el informe.',
confirmApprovalAllHoldAmount: ({transactionCount}: ConfirmHoldExpenseParams) =>
`${Str.pluralize('Este gasto está bloqueado', 'Estos gastos están bloqueados', transactionCount)}. ¿Quieres ${Str.pluralize(
'aprobar',
'aprobarlos',
transactionCount,
)} de todos modos?`,
confirmPay: 'Confirmar importe de pago',
confirmPayAmount: 'Paga lo que no está bloqueado, o paga todos los gastos por cuenta propia.',
confirmPayAmount: 'Paga lo que no está bloqueado, o paga el informe completo.',
confirmPayAllHoldAmount: ({transactionCount}: ConfirmHoldExpenseParams) =>
`${Str.pluralize('Este gasto está bloqueado', 'Estos gastos están bloqueados', transactionCount)}. ¿Quieres ${Str.pluralize(
'pagar',
'pagarlo',
transactionCount,
)} de todos modos?`,
payOnly: 'Solo pagar',
approveOnly: 'Solo aprobar',
hold: 'Bloqueada',
Expand Down
3 changes: 3 additions & 0 deletions src/languages/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,8 @@ type DistanceRateOperationsParams = {count: number};

type ReimbursementRateParams = {unit: Unit};

type ConfirmHoldExpenseParams = {transactionCount: number};

export type {
AddressLineParams,
AdminCanceledRequestParams,
Expand All @@ -309,6 +311,7 @@ export type {
BeginningOfChatHistoryDomainRoomPartOneParams,
CanceledRequestParams,
CharacterLimitParams,
ConfirmHoldExpenseParams,
ConfirmThatParams,
DateShouldBeAfterParams,
DateShouldBeBeforeParams,
Expand Down
Loading