Skip to content

Commit c7d2f53

Browse files
authored
Merge pull request Expensify#63323 from ZhenjaHorbach/split-expense-flow-fix-new-bugs
Split expense flow (bug fixes)
2 parents 0312361 + b6e5226 commit c7d2f53

2 files changed

Lines changed: 19 additions & 8 deletions

File tree

src/libs/actions/IOU.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11906,6 +11906,7 @@ function saveSplitTransactions(draftTransaction: OnyxEntry<OnyxTypes.Transaction
1190611906
policyParams,
1190711907
transactionParams,
1190811908
moneyRequestReportID: report?.reportID,
11909+
existingTransaction: originalTransaction,
1190911910
existingTransactionID,
1191011911
isSplitExpense: true,
1191111912
});

src/pages/iou/SplitExpenseEditPage.tsx

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import FixedFooter from '@components/FixedFooter';
77
import HeaderWithBackButton from '@components/HeaderWithBackButton';
88
import MenuItemWithTopDescription from '@components/MenuItemWithTopDescription';
99
import ScreenWrapper from '@components/ScreenWrapper';
10+
import ScrollView from '@components/ScrollView';
1011
import useLocalize from '@hooks/useLocalize';
1112
import useThemeStyles from '@hooks/useThemeStyles';
1213
import {removeSplitExpenseField, updateSplitExpenseField} from '@libs/actions/IOU';
@@ -15,9 +16,11 @@ import Navigation from '@libs/Navigation/Navigation';
1516
import type {PlatformStackScreenProps} from '@libs/Navigation/PlatformStackNavigation/types';
1617
import type {SplitExpenseParamList} from '@libs/Navigation/types';
1718
import Parser from '@libs/Parser';
18-
import {getPolicy} from '@libs/PolicyUtils';
19+
import {getPolicy, getTagLists} from '@libs/PolicyUtils';
1920
import type {TransactionDetails} from '@libs/ReportUtils';
2021
import {getParsedComment, getReportOrDraftReport, getTransactionDetails} from '@libs/ReportUtils';
22+
import {hasEnabledTags} from '@libs/TagsOptionsListUtils';
23+
import {getTag} from '@libs/TransactionUtils';
2124
import CONST from '@src/CONST';
2225
import ONYXKEYS from '@src/ONYXKEYS';
2326
import ROUTES from '@src/ROUTES';
@@ -31,9 +34,13 @@ function SplitExpenseEditPage({route}: SplitExpensePageProps) {
3134
const {translate} = useLocalize();
3235

3336
const {reportID, transactionID, splitExpenseTransactionID = '', backTo} = route.params;
37+
const report = getReportOrDraftReport(reportID);
3438

3539
const [splitExpenseDraftTransaction] = useOnyx(`${ONYXKEYS.COLLECTION.SPLIT_TRANSACTION_DRAFT}${CONST.IOU.OPTIMISTIC_TRANSACTION_ID}`, {canBeMissing: false});
3640
const splitExpenseDraftTransactionDetails = useMemo<Partial<TransactionDetails>>(() => getTransactionDetails(splitExpenseDraftTransaction) ?? {}, [splitExpenseDraftTransaction]);
41+
const policy = getPolicy(report?.policyID);
42+
const [policyCategories] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_CATEGORIES}${report?.policyID}`, {canBeMissing: false});
43+
const [policyTags] = useOnyx(`${ONYXKEYS.COLLECTION.POLICY_TAGS}${report?.policyID}`, {canBeMissing: false});
3744

3845
const [transaction] = useOnyx(`${ONYXKEYS.COLLECTION.TRANSACTION}${transactionID}`, {canBeMissing: false});
3946
const transactionDetails = useMemo<Partial<TransactionDetails>>(() => getTransactionDetails(transaction) ?? {}, [transaction]);
@@ -45,8 +52,11 @@ function SplitExpenseEditPage({route}: SplitExpensePageProps) {
4552
const currentAmount = transactionDetailsAmount >= 0 ? Math.abs(Number(splitExpenseDraftTransactionDetails?.amount)) : Number(splitExpenseDraftTransactionDetails?.amount);
4653
const currentDescription = getParsedComment(Parser.htmlToMarkdown(splitExpenseDraftTransactionDetails?.comment ?? ''));
4754

48-
const report = getReportOrDraftReport(reportID);
49-
const policy = getPolicy(report?.policyID);
55+
const transactionTag = getTag(splitExpenseDraftTransaction);
56+
const policyTagLists = useMemo(() => getTagLists(policyTags), [policyTags]);
57+
58+
const shouldShowTag = !!policy?.areTagsEnabled && !!(transactionTag || hasEnabledTags(policyTagLists));
59+
const shouldShowCategory = !!policy?.areCategoriesEnabled && !!policyCategories;
5060

5161
return (
5262
<ScreenWrapper testID={SplitExpenseEditPage.displayName}>
@@ -59,7 +69,7 @@ function SplitExpenseEditPage({route}: SplitExpensePageProps) {
5969
})}
6070
onBackButtonPress={() => Navigation.goBack(backTo)}
6171
/>
62-
<View style={[styles.flex1]}>
72+
<ScrollView>
6373
<MenuItemWithTopDescription
6474
shouldShowRightIcon
6575
shouldRenderAsHTML
@@ -81,7 +91,7 @@ function SplitExpenseEditPage({route}: SplitExpensePageProps) {
8191
titleWrapperStyle={styles.flex1}
8292
numberOfLinesTitle={2}
8393
/>
84-
{!!policy?.areCategoriesEnabled && (
94+
{shouldShowCategory && (
8595
<MenuItemWithTopDescription
8696
shouldShowRightIcon
8797
key={translate('common.category')}
@@ -103,12 +113,12 @@ function SplitExpenseEditPage({route}: SplitExpensePageProps) {
103113
titleStyle={styles.flex1}
104114
/>
105115
)}
106-
{!!policy?.areTagsEnabled && (
116+
{shouldShowTag && (
107117
<MenuItemWithTopDescription
108118
shouldShowRightIcon
109119
key={translate('workspace.common.tags')}
110120
description={translate('workspace.common.tags')}
111-
title={splitExpenseDraftTransactionDetails?.tag}
121+
title={transactionTag}
112122
numberOfLinesTitle={2}
113123
onPress={() => {
114124
Navigation.navigate(
@@ -146,7 +156,7 @@ function SplitExpenseEditPage({route}: SplitExpensePageProps) {
146156
style={[styles.moneyRequestMenuItem]}
147157
titleStyle={styles.flex1}
148158
/>
149-
</View>
159+
</ScrollView>
150160
<FixedFooter style={styles.mtAuto}>
151161
{Number(splitExpensesList?.length) > 2 && (
152162
<Button

0 commit comments

Comments
 (0)