Skip to content

Commit 6335360

Browse files
Merge pull request Expensify#84984 from Expensify/revert-84512-issue-83884
Revert "Feat: Add 'Move to report' in the 'More' menu of a one-expense report"
2 parents b9bdd88 + a3b8a6c commit 6335360

5 files changed

Lines changed: 6 additions & 251 deletions

File tree

src/CONST/index.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1225,7 +1225,6 @@ const CONST = {
12251225
MERGE: 'merge',
12261226
DUPLICATE: 'duplicate',
12271227
DUPLICATE_REPORT: 'duplicateReport',
1228-
MOVE_EXPENSE: 'moveExpense',
12291228
},
12301229
PRIMARY_ACTIONS: {
12311230
SUBMIT: 'submit',
@@ -1262,7 +1261,6 @@ const CONST = {
12621261
REJECT_BULK: 'rejectBulk',
12631262
MERGE: 'merge',
12641263
DUPLICATE: 'duplicate',
1265-
MOVE_EXPENSE: 'moveExpense',
12661264
},
12671265
ADD_EXPENSE_OPTIONS: {
12681266
CREATE_NEW_EXPENSE: 'createNewExpense',
@@ -8633,7 +8631,6 @@ const CONST = {
86338631
ADD_EXPENSE_UNREPORTED: 'MoreMenu-AddExpenseUnreported',
86348632
PAY: 'MoreMenu-Pay',
86358633
DUPLICATE_REPORT: 'MoreMenu-DuplicateReport',
8636-
MOVE_EXPENSE: 'MoreMenu-MoveExpense',
86378634
},
86388635
REPORT_PREVIEW: {
86398636
CARD: 'ReportPreview-Card',

src/components/MoneyReportHeader.tsx

Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,10 @@ import {
6363
import type {KYCFlowEvent, TriggerKYCFlow} from '@libs/PaymentUtils';
6464
import {selectPaymentType} from '@libs/PaymentUtils';
6565
import {getConnectedIntegration, getValidConnectedIntegration, hasDynamicExternalWorkflow} from '@libs/PolicyUtils';
66-
import {
67-
getIOUActionForReportID,
68-
getIOUActionForTransactionID,
69-
getOriginalMessage,
70-
getReportAction,
71-
hasPendingDEWApprove,
72-
hasPendingDEWSubmit,
73-
isMoneyRequestAction,
74-
} from '@libs/ReportActionsUtils';
66+
import {getIOUActionForReportID, getOriginalMessage, getReportAction, hasPendingDEWApprove, hasPendingDEWSubmit, isMoneyRequestAction} from '@libs/ReportActionsUtils';
7567
import {getAllExpensesToHoldIfApplicable, getReportPrimaryAction, isMarkAsResolvedAction} from '@libs/ReportPrimaryActionUtils';
7668
import {getSecondaryExportReportActions, getSecondaryReportActions} from '@libs/ReportSecondaryActionUtils';
7769
import {
78-
canEditFieldOfMoneyRequest,
79-
canUserPerformWriteAction as canUserPerformWriteActionReportUtils,
8070
changeMoneyRequestHoldStatus,
8171
generateReportID,
8272
getAddExpenseDropdownOptions,
@@ -95,7 +85,6 @@ import {
9585
isAllowedToApproveExpenseReport,
9686
isCurrentUserSubmitter,
9787
isDM,
98-
isExpenseReport,
9988
isExported as isExportedUtils,
10089
isInvoiceReport as isInvoiceReportUtil,
10190
isOpenExpenseReport,
@@ -293,7 +282,6 @@ function MoneyReportHeader({
293282
'Checkmark',
294283
'ReportCopy',
295284
'Printer',
296-
'DocumentMerge',
297285
] as const);
298286
const [lastDistanceExpenseType] = useOnyx(ONYXKEYS.NVP_LAST_DISTANCE_EXPENSE_TYPE);
299287
const [reportMetadata] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_METADATA}${moneyRequestReport?.reportID}`);
@@ -377,7 +365,6 @@ function MoneyReportHeader({
377365
const [downloadErrorModalVisible, setDownloadErrorModalVisible] = useState(false);
378366
const [isPDFModalVisible, setIsPDFModalVisible] = useState(false);
379367
const [introSelected] = useOnyx(ONYXKEYS.NVP_INTRO_SELECTED);
380-
const [outstandingReportsByPolicyID] = useOnyx(ONYXKEYS.DERIVED.OUTSTANDING_REPORTS_BY_POLICY_ID);
381368
const currentTransaction = transactions.at(0);
382369
const [originalIOUTransaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${getNonEmptyStringOnyxID(currentTransaction?.comment?.originalTransactionID)}`);
383370
const [originalTransaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${getNonEmptyStringOnyxID(transaction?.comment?.originalTransactionID)}`);
@@ -464,24 +451,6 @@ function MoneyReportHeader({
464451
const isArchivedReport = useReportIsArchived(moneyRequestReport?.reportID);
465452
const isChatReportArchived = useReportIsArchived(chatReport?.reportID);
466453

467-
const canMoveSingleExpense = useMemo(() => {
468-
if (nonPendingDeleteTransactions.length !== 1) {
469-
return false;
470-
}
471-
472-
const transactionToMove = nonPendingDeleteTransactions.at(0);
473-
if (!transactionToMove) {
474-
return false;
475-
}
476-
477-
const iouReportAction = getIOUActionForTransactionID(reportActions, transactionToMove.transactionID);
478-
const canMoveExpense = canEditFieldOfMoneyRequest(iouReportAction, CONST.EDIT_REQUEST_FIELD.REPORT, undefined, isChatReportArchived, outstandingReportsByPolicyID);
479-
480-
const canUserPerformWriteAction = canUserPerformWriteActionReportUtils(moneyRequestReport, isChatReportArchived);
481-
482-
return canMoveExpense && canUserPerformWriteAction;
483-
}, [nonPendingDeleteTransactions, reportActions, isChatReportArchived, outstandingReportsByPolicyID, moneyRequestReport]);
484-
485454
const [archiveReason] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_ACTIONS}${moneyRequestReport?.reportID}`, {selector: getArchiveReason});
486455

487456
const [reportNameValuePairs] = useOnyx(`${ONYXKEYS.COLLECTION.REPORT_NAME_VALUE_PAIRS}${moneyRequestReport?.reportID}`);
@@ -520,7 +489,7 @@ function MoneyReportHeader({
520489
> | null>(null);
521490

522491
const {selectedTransactionIDs, currentSearchQueryJSON, currentSearchKey, currentSearchHash, currentSearchResults} = useSearchStateContext();
523-
const {removeTransaction, clearSelectedTransactions, setSelectedTransactions} = useSearchActionsContext();
492+
const {removeTransaction, clearSelectedTransactions} = useSearchActionsContext();
524493
const shouldCalculateTotals = useSearchShouldCalculateTotals(currentSearchKey, currentSearchQueryJSON?.hash, true);
525494

526495
const [shouldFailAllRequests] = useOnyx(ONYXKEYS.NETWORK, {selector: shouldFailAllRequestsSelector});
@@ -1366,7 +1335,6 @@ function MoneyReportHeader({
13661335
reportActions,
13671336
reportMetadata,
13681337
policies,
1369-
outstandingReportsByPolicyID,
13701338
isChatReportArchived,
13711339
});
13721340
}, [
@@ -1384,7 +1352,6 @@ function MoneyReportHeader({
13841352
policies,
13851353
isChatReportArchived,
13861354
bankAccountList,
1387-
outstandingReportsByPolicyID,
13881355
]);
13891356

13901357
const secondaryExportActions = useMemo(() => {
@@ -1663,25 +1630,6 @@ function MoneyReportHeader({
16631630
Navigation.navigate(ROUTES.REPORT_WITH_ID_CHANGE_WORKSPACE.getRoute(moneyRequestReport.reportID, Navigation.getActiveRoute()));
16641631
},
16651632
},
1666-
[CONST.REPORT.SECONDARY_ACTIONS.MOVE_EXPENSE]: {
1667-
text: translate('iou.moveExpenses'),
1668-
icon: expensifyIcons.DocumentMerge,
1669-
value: CONST.REPORT.SECONDARY_ACTIONS.MOVE_EXPENSE,
1670-
sentryLabel: CONST.SENTRY_LABEL.MORE_MENU.MOVE_EXPENSE,
1671-
shouldShow: canMoveSingleExpense,
1672-
onSelected: () => {
1673-
if (!moneyRequestReport || nonPendingDeleteTransactions.length !== 1) {
1674-
return;
1675-
}
1676-
const transactionToMove = nonPendingDeleteTransactions.at(0);
1677-
if (!transactionToMove?.transactionID) {
1678-
return;
1679-
}
1680-
const iouType = isExpenseReport(moneyRequestReport) ? CONST.IOU.TYPE.SUBMIT : CONST.IOU.TYPE.REQUEST;
1681-
setSelectedTransactions([transactionToMove.transactionID]);
1682-
Navigation.navigate(ROUTES.MONEY_REQUEST_EDIT_REPORT.getRoute(CONST.IOU.ACTION.EDIT, iouType, moneyRequestReport.reportID, true, Navigation.getActiveRoute()));
1683-
},
1684-
},
16851633
[CONST.REPORT.SECONDARY_ACTIONS.CHANGE_APPROVER]: {
16861634
text: translate('iou.changeApprover.title'),
16871635
icon: expensifyIcons.Workflows,

src/components/MoneyRequestHeader.tsx

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ import {
4343
getPolicyExpenseChat,
4444
isCurrentUserSubmitter,
4545
isDM,
46-
isExpenseReport as isExpenseReportUtils,
4746
isOpenReport,
4847
isSelfDM,
4948
navigateToDetailsPage,
@@ -120,7 +119,6 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
120119
'ArrowCollapse',
121120
'ArrowSplit',
122121
'Checkmark',
123-
'DocumentMerge',
124122
'ExpenseCopy',
125123
'Flag',
126124
'Hourglass',
@@ -168,8 +166,7 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
168166
const isDuplicate = isDuplicateTransactionUtils(transaction, email ?? '', accountID, report, policy, transactionViolations);
169167
const reportID = report?.reportID;
170168
const {currentSearchHash} = useSearchStateContext();
171-
const {removeTransaction, setSelectedTransactions} = useSearchActionsContext();
172-
const [outstandingReportsByPolicyID] = useOnyx(ONYXKEYS.DERIVED.OUTSTANDING_REPORTS_BY_POLICY_ID);
169+
const {removeTransaction} = useSearchActionsContext();
173170
const {isExpenseSplit} = getOriginalTransactionWithSplitInfo(transaction, originalTransaction);
174171
const [allTransactions] = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION);
175172
const [allReports] = useOnyx(ONYXKEYS.COLLECTION.REPORT);
@@ -428,19 +425,8 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
428425
if (!transaction || !parentReportAction || !parentReport) {
429426
return [];
430427
}
431-
return getSecondaryTransactionThreadActions(
432-
currentUserLogin ?? '',
433-
accountID,
434-
parentReport,
435-
transaction,
436-
parentReportAction,
437-
originalTransaction,
438-
policy,
439-
report,
440-
outstandingReportsByPolicyID,
441-
isChatIOUReportArchived,
442-
);
443-
}, [parentReport, transaction, parentReportAction, currentUserLogin, policy, report, originalTransaction, accountID, outstandingReportsByPolicyID, isChatIOUReportArchived]);
428+
return getSecondaryTransactionThreadActions(currentUserLogin ?? '', accountID, parentReport, transaction, parentReportAction, originalTransaction, policy, report);
429+
}, [parentReport, transaction, parentReportAction, currentUserLogin, policy, report, originalTransaction, accountID]);
444430

445431
const dismissModalAndUpdateUseHold = () => {
446432
setIsHoldEducationalModalVisible(false);
@@ -653,19 +639,6 @@ function MoneyRequestHeader({report, parentReportAction, policy, onBackButtonPre
653639
}
654640
},
655641
},
656-
[CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.MOVE_EXPENSE]: {
657-
text: translate('iou.moveExpenses'),
658-
icon: expensifyIcons.DocumentMerge,
659-
value: CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.MOVE_EXPENSE,
660-
onSelected: () => {
661-
if (!parentReport || !transaction?.transactionID) {
662-
return;
663-
}
664-
const iouType = isExpenseReportUtils(parentReport) ? CONST.IOU.TYPE.SUBMIT : CONST.IOU.TYPE.TRACK;
665-
setSelectedTransactions([transaction.transactionID]);
666-
Navigation.navigate(ROUTES.MONEY_REQUEST_EDIT_REPORT.getRoute(CONST.IOU.ACTION.EDIT, iouType, parentReport.reportID, true, Navigation.getActiveRoute()));
667-
},
668-
},
669642
};
670643

671644
const applicableSecondaryActions = secondaryActions.map((action) => secondaryActionsImplementation[action]).filter((action): action is NonNullable<typeof action> => !!action);

src/libs/ReportSecondaryActionUtils.ts

Lines changed: 1 addition & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,7 @@ import type {OnyxCollection, OnyxEntry} from 'react-native-onyx';
22
import type {ValueOf} from 'type-fest';
33
import CONST from '@src/CONST';
44
import ONYXKEYS from '@src/ONYXKEYS';
5-
import type {
6-
BankAccountList,
7-
ExportTemplate,
8-
OutstandingReportsByPolicyIDDerivedValue,
9-
Policy,
10-
Report,
11-
ReportAction,
12-
ReportMetadata,
13-
ReportNameValuePairs,
14-
Transaction,
15-
TransactionViolation,
16-
} from '@src/types/onyx';
5+
import type {BankAccountList, ExportTemplate, Policy, Report, ReportAction, ReportMetadata, ReportNameValuePairs, Transaction, TransactionViolation} from '@src/types/onyx';
176
import {isApprover as isApproverUtils} from './actions/Policy/Member';
187
import {areTransactionsEligibleForMerge} from './MergeTransactionUtils';
198
import {getLoginByAccountID} from './PersonalDetailsUtils';
@@ -46,11 +35,9 @@ import {getReportPrimaryAction, isPrimaryPayAction} from './ReportPrimaryActionU
4635
import {
4736
canAddTransaction,
4837
canDeleteMoneyRequestReport,
49-
canEditFieldOfMoneyRequest,
5038
canEditReportPolicy,
5139
canHoldUnholdReportAction,
5240
canRejectReportAction,
53-
canUserPerformWriteAction as canUserPerformWriteActionReportUtils,
5441
doesReportContainRequestsFromMultipleUsers,
5542
getTransactionDetails,
5643
hasExportError as hasExportErrorUtils,
@@ -848,7 +835,6 @@ function getSecondaryReportActions({
848835
reportActions,
849836
reportMetadata,
850837
policies,
851-
outstandingReportsByPolicyID,
852838
isChatReportArchived = false,
853839
}: {
854840
currentUserLogin: string;
@@ -864,7 +850,6 @@ function getSecondaryReportActions({
864850
reportActions?: ReportAction[];
865851
reportMetadata?: OnyxEntry<ReportMetadata>;
866852
policies?: OnyxCollection<Policy>;
867-
outstandingReportsByPolicyID?: OutstandingReportsByPolicyIDDerivedValue;
868853
canUseNewDotSplits?: boolean;
869854
isChatReportArchived?: boolean;
870855
}): Array<ValueOf<typeof CONST.REPORT.SECONDARY_ACTIONS>> {
@@ -976,19 +961,6 @@ function getSecondaryReportActions({
976961
options.push(CONST.REPORT.SECONDARY_ACTIONS.CHANGE_WORKSPACE);
977962
}
978963

979-
if (reportTransactions.length === 1 && reportActions) {
980-
const transaction = reportTransactions.at(0);
981-
if (transaction?.transactionID) {
982-
const iouReportAction = getIOUActionForTransactionID(reportActions, transaction.transactionID);
983-
const canMoveExpense = canEditFieldOfMoneyRequest(iouReportAction, CONST.EDIT_REQUEST_FIELD.REPORT, undefined, isChatReportArchived, outstandingReportsByPolicyID);
984-
const canUserPerformWriteAction = canUserPerformWriteActionReportUtils(report, isChatReportArchived);
985-
986-
if (canMoveExpense && canUserPerformWriteAction) {
987-
options.push(CONST.REPORT.SECONDARY_ACTIONS.MOVE_EXPENSE);
988-
}
989-
}
990-
}
991-
992964
const isApprovalEnabled = policy?.approvalMode && policy.approvalMode !== CONST.POLICY.APPROVAL_MODE.OPTIONAL;
993965
if (isExpenseReportUtils(report) && isProcessingReportUtils(report) && isPolicyAdmin(policy) && isApprovalEnabled) {
994966
options.push(CONST.REPORT.SECONDARY_ACTIONS.CHANGE_APPROVER);
@@ -1039,8 +1011,6 @@ function getSecondaryTransactionThreadActions(
10391011
originalTransaction: OnyxEntry<Transaction>,
10401012
policy: OnyxEntry<Policy>,
10411013
transactionThreadReport?: OnyxEntry<Report>,
1042-
outstandingReportsByPolicyID?: OutstandingReportsByPolicyIDDerivedValue,
1043-
isChatReportArchived?: boolean,
10441014
): Array<ValueOf<typeof CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS>> {
10451015
const options: Array<ValueOf<typeof CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS>> = [];
10461016

@@ -1068,15 +1038,6 @@ function getSecondaryTransactionThreadActions(
10681038
options.push(CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.DUPLICATE);
10691039
}
10701040

1071-
if (
1072-
reportTransaction?.transactionID &&
1073-
reportAction &&
1074-
canEditFieldOfMoneyRequest(reportAction, CONST.EDIT_REQUEST_FIELD.REPORT, undefined, isChatReportArchived, outstandingReportsByPolicyID) &&
1075-
canUserPerformWriteActionReportUtils(parentReport, isChatReportArchived)
1076-
) {
1077-
options.push(CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.MOVE_EXPENSE);
1078-
}
1079-
10801041
options.push(CONST.REPORT.TRANSACTION_SECONDARY_ACTIONS.VIEW_DETAILS);
10811042

10821043
if (isDeleteAction(parentReport, [reportTransaction], reportAction ? [reportAction] : [])) {

0 commit comments

Comments
 (0)