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

Enable distance splits #42302

Merged
merged 31 commits into from
Aug 7, 2024
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
115c045
Allow distance splits on start page
neil-marcellini May 16, 2024
3ee8a7a
Set split share when distanceAmount updates
neil-marcellini May 16, 2024
813f8ca
WIP split distance global create set split data
neil-marcellini May 16, 2024
cc66e80
WIP set up CreateDistanceRequestParams for split
neil-marcellini May 16, 2024
a9e267c
Prettier
neil-marcellini May 16, 2024
c9a7962
Carefully fix distance split params
neil-marcellini May 16, 2024
87010b1
Set onyxData from split or money request data
neil-marcellini May 16, 2024
d7c5424
Make distance split navigate for report or global create
neil-marcellini May 16, 2024
8ba2bd1
Simplify creating distance for split or regular request
neil-marcellini May 16, 2024
4591003
Make customUnitRateID basically required, fix tsc
neil-marcellini May 16, 2024
588b2c5
Merge branch 'main' into neil-distance-split
neil-marcellini Jun 20, 2024
336172b
Remove accidentally committed file
neil-marcellini Jun 20, 2024
67ffddc
Merge branch 'main' into neil-distance-split
neil-marcellini Jun 28, 2024
8891513
Fix creating workspace distance split and other cleanups
neil-marcellini Jun 28, 2024
261d191
Merge branch 'main' into neil-distance-split
neil-marcellini Jul 2, 2024
29a01f3
Build optimistic receipt for distance split, and move it inside optim…
neil-marcellini Jul 2, 2024
dc2d0da
Use existing split chat reportID for distance if present
neil-marcellini Jul 2, 2024
a981882
Prevent using an existingSplitChatReport with undefined id
neil-marcellini Jul 2, 2024
41dec6a
Set optimistic data marking split as a distance transaction
neil-marcellini Jul 3, 2024
1b10e40
Set waypoints pending so optimistic route shows
neil-marcellini Jul 3, 2024
c6909a4
Clear pending fields after split
neil-marcellini Jul 3, 2024
8c61759
Show optimistic distance route when the request failed
neil-marcellini Jul 3, 2024
1be11ce
Merge branch 'main' into neil-distance-split
neil-marcellini Jul 9, 2024
5188d48
Only allow global create distance for non-splits
neil-marcellini Jul 9, 2024
ff2f258
Fix missed replacement of changed variable
neil-marcellini Jul 10, 2024
e2809f4
Prettify
neil-marcellini Jul 10, 2024
0c86538
Remove leftover debug console logs
neil-marcellini Jul 10, 2024
c0b2c5e
Merge main to fix conflicts
neil-marcellini Jul 11, 2024
f406845
Merge main to fix conflicts
neil-marcellini Jul 23, 2024
55ed6c7
Remove redundant call to createDistanceRequest
neil-marcellini Aug 2, 2024
717d344
Merge branch 'main' into neil-distance-split
neil-marcellini Aug 2, 2024
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
16 changes: 10 additions & 6 deletions src/components/MoneyRequestConfirmationList.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -269,12 +269,10 @@ function MoneyRequestConfirmationList({

const hasRoute = TransactionUtils.hasRoute(transaction, isDistanceRequest);
const isDistanceRequestWithPendingRoute = isDistanceRequest && (!hasRoute || !rate) && !isMovingTransactionFromTrackExpense;
const distanceRequestAmount = DistanceRequestUtils.getDistanceRequestAmount(distance, unit ?? CONST.CUSTOM_UNITS.DISTANCE_UNIT_MILES, rate ?? 0);
const formattedAmount = isDistanceRequestWithPendingRoute
? ''
: CurrencyUtils.convertToDisplayString(
shouldCalculateDistanceAmount ? DistanceRequestUtils.getDistanceRequestAmount(distance, unit ?? CONST.CUSTOM_UNITS.DISTANCE_UNIT_MILES, rate ?? 0) : iouAmount,
isDistanceRequest ? currency : iouCurrencyCode,
);
: CurrencyUtils.convertToDisplayString(shouldCalculateDistanceAmount ? distanceRequestAmount : iouAmount, isDistanceRequest ? currency : iouCurrencyCode);

const previousTransactionAmount = usePrevious(transaction?.amount);
const previousTransactionCurrency = usePrevious(transaction?.currency);
Expand Down Expand Up @@ -330,9 +328,15 @@ function MoneyRequestConfirmationList({
return;
}

const amount = DistanceRequestUtils.getDistanceRequestAmount(distance, unit ?? CONST.CUSTOM_UNITS.DISTANCE_UNIT_MILES, rate ?? 0);
const amount = distanceRequestAmount;
IOU.setMoneyRequestAmount(transactionID, amount, currency ?? '');
}, [shouldCalculateDistanceAmount, distance, rate, unit, transactionID, currency]);

// If it's a split request among individuals, set the split shares
const participantAccountIDs: number[] = selectedParticipantsProp.map((participant) => participant.accountID ?? -1);
if (isTypeSplit && !isPolicyExpenseChat && amount && transaction?.currency) {
IOU.setSplitShares(transaction, amount, currency, participantAccountIDs);
}
}, [shouldCalculateDistanceAmount, distanceRequestAmount, transactionID, currency, isTypeSplit, isPolicyExpenseChat, selectedParticipantsProp, transaction]);

// Calculate and set tax amount in transaction draft
useEffect(() => {
Expand Down
4 changes: 3 additions & 1 deletion src/components/ReportActionItem/ReportActionItemImage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import variables from '@styles/variables';
import CONST from '@src/CONST';
import ROUTES from '@src/ROUTES';
import type {Transaction} from '@src/types/onyx';
import {isEmptyObject} from '@src/types/utils/EmptyObject';

type ReportActionItemImageProps = {
/** thumbnail URI for the image */
Expand Down Expand Up @@ -75,7 +76,8 @@ function ReportActionItemImage({
const {translate} = useLocalize();
const isDistanceRequest = !!transaction && TransactionUtils.isDistanceRequest(transaction);
const hasPendingWaypoints = transaction && TransactionUtils.isFetchingWaypointsFromServer(transaction);
const showMapAsImage = isDistanceRequest && hasPendingWaypoints;
const hasErrors = !isEmptyObject(transaction?.errors) || !isEmptyObject(transaction?.errorFields);
const showMapAsImage = isDistanceRequest && (hasErrors || hasPendingWaypoints);

if (showMapAsImage) {
return (
Expand Down
22 changes: 12 additions & 10 deletions src/libs/API/parameters/CreateDistanceRequestParams.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,25 @@
type CreateDistanceRequestParams = {
comment: string;
iouReportID: string;
chatReportID: string;
transactionID: string;
reportActionID: string;
chatReportID: string;
createdChatReportActionID: string;
createdIOUReportActionID: string;
reportPreviewReportActionID: string;
reportActionID: string;
waypoints: string;
customUnitRateID: string;
comment: string;
created: string;
iouReportID?: string;
createdIOUReportActionID?: string;
reportPreviewReportActionID?: string;
category?: string;
tag?: string;
taxCode?: string;
taxAmount?: number;
billable?: boolean;
transactionThreadReportID: string;
createdReportActionIDForThread: string;
payerEmail: string;
customUnitRateID?: string;
transactionThreadReportID?: string;
createdReportActionIDForThread?: string;
payerEmail?: string;
splits?: string;
chatType?: string;
};

export default CreateDistanceRequestParams;
4 changes: 2 additions & 2 deletions src/libs/TransactionUtils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,8 @@ function buildOptimisticTransaction(
merchant: merchant || CONST.TRANSACTION.PARTIAL_TRANSACTION_MERCHANT,
created: created || DateUtils.getDBTime(),
pendingAction: CONST.RED_BRICK_ROAD_PENDING_ACTION.ADD,
receipt,
filename,
receipt: receipt?.source ? {source: receipt.source, state: receipt.state ?? CONST.IOU.RECEIPT_STATE.SCANREADY} : {},
filename: receipt?.source ?? receipt?.name ?? filename,
category,
tag,
taxCode,
Expand Down
Loading
Loading