diff --git a/src/libs/actions/Policy/Policy.ts b/src/libs/actions/Policy/Policy.ts index d2a679804ec3..00a748d04c8f 100644 --- a/src/libs/actions/Policy/Policy.ts +++ b/src/libs/actions/Policy/Policy.ts @@ -197,6 +197,7 @@ type DuplicatePolicyDataOptions = { parts: Record; file?: File | CustomRNImageManipulatorResult; policyCategories?: PolicyCategories; + localCurrency: string; }; type SetWorkspaceReimbursementActionParams = { @@ -2698,7 +2699,7 @@ function createDraftWorkspace( } function buildDuplicatePolicyData(policy: Policy, options: DuplicatePolicyDataOptions) { - const {policyName = '', policyID = generatePolicyID(), file, welcomeNote, parts, targetPolicyID = generatePolicyID(), policyCategories} = options; + const {policyName = '', policyID = generatePolicyID(), file, welcomeNote, parts, targetPolicyID = generatePolicyID(), policyCategories, localCurrency} = options; const { adminsChatReportID, @@ -2722,8 +2723,12 @@ function buildDuplicatePolicyData(policy: Policy, options: DuplicatePolicyDataOp const isRulesOptionSelected = parts?.expenses; const isWorkflowsOptionSelected = parts?.exportLayouts; const isPerDiemOptionSelected = parts?.perDiem; + const isOverviewOptionSelected = parts?.overview; + + const outputCurrency = isOverviewOptionSelected ? policy?.outputCurrency : localCurrency; + const policyMemberAccountIDs = isMemberOptionSelected ? Object.values(getMemberAccountIDsForWorkspace(policy?.employeeList, false, false)) : []; - const {customUnitID, customUnitRateID} = buildOptimisticDistanceRateCustomUnits(policy?.outputCurrency); + const {customUnitID, customUnitRateID} = buildOptimisticDistanceRateCustomUnits(outputCurrency); const optimisticAnnounceChat = ReportUtils.buildOptimisticAnnounceChat(targetPolicyID, [...policyMemberAccountIDs]); const announceRoomChat = optimisticAnnounceChat.announceChatData; @@ -2774,6 +2779,8 @@ function buildDuplicatePolicyData(policy: Policy, options: DuplicatePolicyDataOp }, avatarURL: file?.uri, originalFileName: file?.name, + outputCurrency, + address: isOverviewOptionSelected ? policy?.address : undefined, }, }, { diff --git a/src/pages/workspace/duplicate/WorkspaceDuplicateSelectFeaturesForm.tsx b/src/pages/workspace/duplicate/WorkspaceDuplicateSelectFeaturesForm.tsx index b53eda346fb0..8613fa16735d 100644 --- a/src/pages/workspace/duplicate/WorkspaceDuplicateSelectFeaturesForm.tsx +++ b/src/pages/workspace/duplicate/WorkspaceDuplicateSelectFeaturesForm.tsx @@ -8,6 +8,7 @@ import SelectionList from '@components/SelectionList'; import MultiSelectListItem from '@components/SelectionList/ListItem/MultiSelectListItem'; import type {ConfirmButtonOptions, ListItem} from '@components/SelectionList/types'; import Text from '@components/Text'; +import useCurrentUserPersonalDetails from '@hooks/useCurrentUserPersonalDetails'; import useLocalize from '@hooks/useLocalize'; import useOnyx from '@hooks/useOnyx'; import usePolicy from '@hooks/usePolicy'; @@ -48,6 +49,7 @@ function WorkspaceDuplicateSelectFeaturesForm({policyID}: WorkspaceDuplicateForm const customUnitRates: Record = customUnits?.rates ?? {}; const allRates = Object.values(customUnitRates)?.length; const [bankAccountList] = useOnyx(ONYXKEYS.BANK_ACCOUNT_LIST, {canBeMissing: true}); + const currentUserPersonalDetails = useCurrentUserPersonalDetails(); const accountingIntegrations = Object.values(CONST.POLICY.CONNECTIONS.NAME); const connectedIntegration = getAllValidConnectedIntegration(policy, accountingIntegrations); @@ -225,11 +227,22 @@ function WorkspaceDuplicateSelectFeaturesForm({policyID}: WorkspaceDuplicateForm distance: selectedItems.includes('distanceRates'), invoices: selectedItems.includes('invoices'), exportLayouts: selectedItems.includes('workflows'), + overview: selectedItems.includes('overview'), }, file: duplicatedWorkspaceAvatar, + localCurrency: currentUserPersonalDetails?.localCurrencyCode ?? '', }); Navigation.closeRHPFlow(); - }, [duplicateWorkspace?.name, duplicateWorkspace?.policyID, policy, policyCategories, selectedItems, translate, duplicatedWorkspaceAvatar]); + }, [ + duplicateWorkspace?.name, + duplicateWorkspace?.policyID, + policy, + policyCategories, + selectedItems, + translate, + duplicatedWorkspaceAvatar, + currentUserPersonalDetails?.localCurrencyCode, + ]); const confirmDuplicateAndHideModal = useCallback(() => { setIsDuplicateModalOpen(false); diff --git a/tests/actions/PolicyTest.ts b/tests/actions/PolicyTest.ts index 7e7f27e536b2..616148d5ea08 100644 --- a/tests/actions/PolicyTest.ts +++ b/tests/actions/PolicyTest.ts @@ -290,6 +290,7 @@ describe('actions/Policy', () => { invoices: true, exportLayouts: true, }, + localCurrency: 'USD', }; Policy.duplicateWorkspace(fakePolicy, options);