diff --git a/src/libs/ReportUtils.ts b/src/libs/ReportUtils.ts index 1b19f950391e..8b5e6af8cfa1 100644 --- a/src/libs/ReportUtils.ts +++ b/src/libs/ReportUtils.ts @@ -10824,6 +10824,10 @@ function isWorkspaceEligibleForReportChange(newPolicy: OnyxEntry, report return false; } + if (!newPolicy?.isPolicyExpenseChatEnabled) { + return false; + } + // We can only move the iou report to the workspace if the manager is the payer of the new policy if (isIOUReport(report)) { return isPaidGroupPolicyPolicyUtils(newPolicy) && isWorkspacePayer(managerLogin ?? '', newPolicy); diff --git a/tests/unit/PolicyUtilsTest.ts b/tests/unit/PolicyUtilsTest.ts index 65e2018c7033..1bae25b5819d 100644 --- a/tests/unit/PolicyUtilsTest.ts +++ b/tests/unit/PolicyUtilsTest.ts @@ -650,6 +650,7 @@ describe('PolicyUtils', () => { const newPolicy = { ...createRandomPolicy(1, CONST.POLICY.TYPE.PERSONAL), + isPolicyExpenseChatEnabled: true, employeeList: { [currentUserLogin]: {email: currentUserLogin, role: CONST.POLICY.ROLE.USER}, }, @@ -675,6 +676,7 @@ describe('PolicyUtils', () => { const newPolicy = { ...createRandomPolicy(1, CONST.POLICY.TYPE.TEAM), reimbursementChoice: CONST.POLICY.REIMBURSEMENT_CHOICES.REIMBURSEMENT_MANUAL, + isPolicyExpenseChatEnabled: true, employeeList: { [currentUserLogin]: {email: currentUserLogin, role: CONST.POLICY.ROLE.ADMIN}, }, @@ -696,6 +698,7 @@ describe('PolicyUtils', () => { it('returns false if the manager is not the payer of the new policy', async () => { const newPolicy = { ...createRandomPolicy(1, CONST.POLICY.TYPE.TEAM), + isPolicyExpenseChatEnabled: true, role: CONST.POLICY.ROLE.ADMIN, employeeList: { [approverEmail]: {email: approverEmail, role: CONST.POLICY.ROLE.USER}, @@ -714,6 +717,32 @@ describe('PolicyUtils', () => { const result = isWorkspaceEligibleForReportChange(newPolicy, report, policies); expect(result).toBe(false); }); + + it('returns false if policies are not policyExpenseChatEnabled', async () => { + const currentUserLogin = employeeEmail; + const currentUserAccountID = employeeAccountID; + + const newPolicy = { + ...createRandomPolicy(1, CONST.POLICY.TYPE.TEAM), + reimbursementChoice: CONST.POLICY.REIMBURSEMENT_CHOICES.REIMBURSEMENT_MANUAL, + isPolicyExpenseChatEnabled: false, + employeeList: { + [currentUserLogin]: {email: currentUserLogin, role: CONST.POLICY.ROLE.ADMIN}, + }, + }; + const policies = {[`${ONYXKEYS.COLLECTION.POLICY}${newPolicy.id}`]: newPolicy}; + await Onyx.set(`${ONYXKEYS.COLLECTION.POLICY}${newPolicy.id}`, newPolicy); + const report = { + ...createRandomReport(0), + type: CONST.REPORT.TYPE.IOU, + stateNum: CONST.REPORT.STATE_NUM.SUBMITTED, + ownerAccountID: approverAccountID, + managerID: currentUserAccountID, + }; + + const result = isWorkspaceEligibleForReportChange(newPolicy, report, policies); + expect(result).toBe(false); + }); }); describe('isUserInvitedToWorkspace', () => { diff --git a/tests/unit/ReportSecondaryActionUtilsTest.ts b/tests/unit/ReportSecondaryActionUtilsTest.ts index bb20293592e9..a4c63010fe40 100644 --- a/tests/unit/ReportSecondaryActionUtilsTest.ts +++ b/tests/unit/ReportSecondaryActionUtilsTest.ts @@ -480,6 +480,7 @@ describe('getSecondaryAction', () => { id: POLICY_ID, type: CONST.POLICY.TYPE.TEAM, reimbursementChoice: CONST.POLICY.REIMBURSEMENT_CHOICES.REIMBURSEMENT_MANUAL, + isPolicyExpenseChatEnabled: true, employeeList: { [EMPLOYEE_EMAIL]: {email: EMPLOYEE_EMAIL, role: CONST.POLICY.ROLE.ADMIN}, [MANAGER_EMAIL]: {email: MANAGER_EMAIL, role: CONST.POLICY.ROLE.USER}, @@ -513,6 +514,7 @@ describe('getSecondaryAction', () => { id: POLICY_ID, type: CONST.POLICY.TYPE.TEAM, role: CONST.POLICY.ROLE.ADMIN, + isPolicyExpenseChatEnabled: true, employeeList: { [ADMIN_EMAIL]: {email: ADMIN_EMAIL, role: CONST.POLICY.ROLE.ADMIN}, [EMPLOYEE_EMAIL]: {email: EMPLOYEE_EMAIL, role: CONST.POLICY.ROLE.USER}, @@ -542,6 +544,7 @@ describe('getSecondaryAction', () => { const newPolicy = { id: POLICY_ID, type: CONST.POLICY.TYPE.TEAM, + isPolicyExpenseChatEnabled: true, employeeList: { [MANAGER_EMAIL]: {email: MANAGER_EMAIL, role: CONST.POLICY.ROLE.USER}, [EMPLOYEE_EMAIL]: {email: EMPLOYEE_EMAIL, role: CONST.POLICY.ROLE.USER}, @@ -611,6 +614,7 @@ describe('getSecondaryAction', () => { id: POLICY_ID, type: CONST.POLICY.TYPE.TEAM, approver: APPROVER_EMAIL, + isPolicyExpenseChatEnabled: true, employeeList: { [APPROVER_EMAIL]: {email: APPROVER_EMAIL, role: CONST.POLICY.ROLE.USER}, [EMPLOYEE_EMAIL]: {email: EMPLOYEE_EMAIL, role: CONST.POLICY.ROLE.USER}, @@ -652,6 +656,7 @@ describe('getSecondaryAction', () => { id: POLICY_ID, type: CONST.POLICY.TYPE.TEAM, role: CONST.POLICY.ROLE.ADMIN, + isPolicyExpenseChatEnabled: true, employeeList: { [ADMIN_EMAIL]: {email: ADMIN_EMAIL, role: CONST.POLICY.ROLE.ADMIN}, [EMPLOYEE_EMAIL]: {login: EMPLOYEE_EMAIL, role: CONST.POLICY.ROLE.USER},