Skip to content

Commit 0be235c

Browse files
Merge pull request Expensify#80721 from mkzie2/mkzie2-issue/77663
Error when splitting expense after changing submission frequency to Instantly
2 parents d44807d + 6940a73 commit 0be235c

2 files changed

Lines changed: 46 additions & 0 deletions

File tree

src/libs/ReportSecondaryActionUtils.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,11 @@ function isSplitAction(
137137
return false;
138138
}
139139

140+
const arePaymentsDisabled = policy?.reimbursementChoice === CONST.POLICY.REIMBURSEMENT_CHOICES.REIMBURSEMENT_NO;
141+
if (isProcessingReportUtils(report) && isInstantSubmitEnabled(policy) && isSubmitAndClose(policy) && arePaymentsDisabled) {
142+
return false;
143+
}
144+
140145
const isSubmitter = isCurrentUserSubmitter(report);
141146
const isAdmin = policy?.role === CONST.POLICY.ROLE.ADMIN;
142147
const isManager = (report.managerID ?? CONST.DEFAULT_NUMBER_ID) === currentUserAccountID;

tests/unit/ReportSecondaryActionUtilsTest.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2818,6 +2818,47 @@ describe('getSecondaryTransactionThreadActions', () => {
28182818
expect(result.includes(CONST.REPORT.SECONDARY_ACTIONS.SPLIT)).toBe(false);
28192819
});
28202820

2821+
it('does not include the SPLIT option for processing report with instant submit, submit-and-close, and payments disabled', async () => {
2822+
const report = {
2823+
reportID: REPORT_ID,
2824+
policyID: POLICY_ID,
2825+
type: CONST.REPORT.TYPE.EXPENSE,
2826+
ownerAccountID: EMPLOYEE_ACCOUNT_ID,
2827+
managerID: EMPLOYEE_ACCOUNT_ID,
2828+
stateNum: CONST.REPORT.STATE_NUM.SUBMITTED,
2829+
statusNum: CONST.REPORT.STATUS_NUM.SUBMITTED,
2830+
} as unknown as Report;
2831+
2832+
const transaction = {
2833+
transactionID: 'TRANSACTION_ID',
2834+
status: CONST.TRANSACTION.STATUS.POSTED,
2835+
amount: 10,
2836+
merchant: 'Merchant',
2837+
date: '2025-01-01',
2838+
} as unknown as Transaction;
2839+
2840+
const policy = {
2841+
id: POLICY_ID,
2842+
type: CONST.POLICY.TYPE.TEAM,
2843+
isPolicyExpenseChatEnabled: true,
2844+
autoReporting: true,
2845+
autoReportingFrequency: CONST.POLICY.AUTO_REPORTING_FREQUENCIES.INSTANT,
2846+
approvalMode: CONST.POLICY.APPROVAL_MODE.OPTIONAL,
2847+
reimbursementChoice: CONST.POLICY.REIMBURSEMENT_CHOICES.REIMBURSEMENT_NO,
2848+
employeeList: {
2849+
[EMPLOYEE_EMAIL]: {email: EMPLOYEE_EMAIL, role: CONST.POLICY.ROLE.USER},
2850+
[ADMIN_EMAIL]: {email: ADMIN_EMAIL, role: CONST.POLICY.ROLE.ADMIN},
2851+
},
2852+
role: CONST.POLICY.ROLE.ADMIN,
2853+
} as unknown as Policy;
2854+
2855+
await Onyx.merge(`${ONYXKEYS.COLLECTION.POLICY}${POLICY_ID}`, policy);
2856+
await Onyx.merge(`${ONYXKEYS.COLLECTION.REPORT}${REPORT_ID}`, report);
2857+
2858+
const result = getSecondaryTransactionThreadActions(EMPLOYEE_EMAIL, EMPLOYEE_ACCOUNT_ID, report, transaction, actionR14932, {} as Transaction, policy);
2859+
expect(result.includes(CONST.REPORT.SECONDARY_ACTIONS.SPLIT)).toBe(false);
2860+
});
2861+
28212862
describe('isMergeAction', () => {
28222863
beforeEach(() => {
28232864
jest.clearAllMocks();

0 commit comments

Comments
 (0)