diff --git a/src/libs/API/parameters/ShareTrackedExpenseParams.ts b/src/libs/API/parameters/ShareTrackedExpenseParams.ts index cee4bc40d9ac..dac75ae5c5d5 100644 --- a/src/libs/API/parameters/ShareTrackedExpenseParams.ts +++ b/src/libs/API/parameters/ShareTrackedExpenseParams.ts @@ -20,6 +20,10 @@ type ShareTrackedExpenseParams = { taxCode: string; taxAmount: number; billable?: boolean; + policyExpenseChatReportID?: string; + policyExpenseCreatedReportActionID?: string; + adminsChatReportID?: string; + adminsCreatedReportActionID?: string; }; export default ShareTrackedExpenseParams; diff --git a/src/libs/actions/IOU.ts b/src/libs/actions/IOU.ts index ca1960eef25f..143590b7169d 100644 --- a/src/libs/actions/IOU.ts +++ b/src/libs/actions/IOU.ts @@ -22,6 +22,7 @@ import type { SendInvoiceParams, SendMoneyParams, SetNameValuePairParams, + ShareTrackedExpenseParams, SplitBillParams, StartSplitBillParams, SubmitReportParams, @@ -208,7 +209,7 @@ type TrackExpenseInformation = { actionableWhisperReportActionIDParam?: string; onyxData: OnyxData; }; -type CategorizeTrackedExpenseTransactionParams = { +type TrackedExpenseTransactionParams = { transactionID: string; amount: number; currency: string; @@ -222,11 +223,11 @@ type CategorizeTrackedExpenseTransactionParams = { billable?: boolean; receipt?: Receipt; }; -type CategorizeTrackedExpensePolicyParams = { +type TrackedExpensePolicyParams = { policyID: string; - isDraftPolicy: boolean; + isDraftPolicy?: boolean; }; -type CategorizeTrackedExpenseReportInformation = { +type TrackedExpenseReportInformation = { moneyRequestPreviewReportActionID: string; moneyRequestReportID: string; moneyRequestCreatedReportActionID: string; @@ -236,13 +237,14 @@ type CategorizeTrackedExpenseReportInformation = { transactionThreadReportID: string; reportPreviewReportActionID: string; }; -type CategorizeTrackedExpenseParams = { - onyxData: OnyxData | undefined; - reportInformation: CategorizeTrackedExpenseReportInformation; - transactionParams: CategorizeTrackedExpenseTransactionParams; - policyParams: CategorizeTrackedExpensePolicyParams; +type TrackedExpenseParams = { + onyxData?: OnyxData; + reportInformation: TrackedExpenseReportInformation; + transactionParams: TrackedExpenseTransactionParams; + policyParams: TrackedExpensePolicyParams; createdWorkspaceParams?: CreateWorkspaceParams; }; + type SendInvoiceInformation = { senderWorkspaceID: string; receiver: Partial; @@ -4118,7 +4120,7 @@ function convertTrackedExpenseToRequest( API.write(WRITE_COMMANDS.CONVERT_TRACKED_EXPENSE_TO_REQUEST, parameters, {optimisticData, successData, failureData}); } -function categorizeTrackedExpense(trackedExpenseParams: CategorizeTrackedExpenseParams) { +function categorizeTrackedExpense(trackedExpenseParams: TrackedExpenseParams) { const {onyxData, reportInformation, transactionParams, policyParams, createdWorkspaceParams} = trackedExpenseParams; const {optimisticData, successData, failureData} = onyxData ?? {}; const {transactionID} = transactionParams; @@ -4163,32 +4165,20 @@ function categorizeTrackedExpense(trackedExpenseParams: CategorizeTrackedExpense } } -function shareTrackedExpense( - policyID: string, - transactionID: string, - moneyRequestPreviewReportActionID: string, - moneyRequestReportID: string, - moneyRequestCreatedReportActionID: string, - actionableWhisperReportActionID: string, - linkedTrackedExpenseReportAction: OnyxTypes.ReportAction, - linkedTrackedExpenseReportID: string, - transactionThreadReportID: string, - reportPreviewReportActionID: string, - onyxData: OnyxData | undefined, - amount: number, - currency: string, - comment: string, - merchant: string, - created: string, - category?: string, - tag?: string, - taxCode = '', - taxAmount = 0, - billable?: boolean, - receipt?: Receipt, - createdWorkspaceParams?: CreateWorkspaceParams, -) { +function shareTrackedExpense(trackedExpenseParams: TrackedExpenseParams) { + const {onyxData, reportInformation, transactionParams, policyParams, createdWorkspaceParams} = trackedExpenseParams; const {optimisticData, successData, failureData} = onyxData ?? {}; + const {transactionID} = transactionParams; + const { + actionableWhisperReportActionID, + moneyRequestPreviewReportActionID, + moneyRequestCreatedReportActionID, + reportPreviewReportActionID, + moneyRequestReportID, + linkedTrackedExpenseReportAction, + linkedTrackedExpenseReportID, + transactionThreadReportID, + } = reportInformation; const { optimisticData: moveTransactionOptimisticData, @@ -4209,26 +4199,15 @@ function shareTrackedExpense( successData?.push(...moveTransactionSuccessData); failureData?.push(...moveTransactionFailureData); - const parameters = { - policyID, - transactionID, + const parameters: ShareTrackedExpenseParams = { + ...transactionParams, + policyID: policyParams?.policyID, moneyRequestPreviewReportActionID, moneyRequestReportID, moneyRequestCreatedReportActionID, actionableWhisperReportActionID, modifiedExpenseReportActionID, reportPreviewReportActionID, - amount, - currency, - comment, - merchant, - created, - category, - tag, - taxCode, - taxAmount, - billable, - receipt: receipt instanceof Blob ? receipt : undefined, policyExpenseChatReportID: createdWorkspaceParams?.expenseChatReportID, policyExpenseCreatedReportActionID: createdWorkspaceParams?.expenseCreatedReportActionID, adminsChatReportID: createdWorkspaceParams?.adminsChatReportID, @@ -4595,7 +4574,7 @@ function trackExpense( if (!linkedTrackedExpenseReportAction || !actionableWhisperReportActionID || !linkedTrackedExpenseReportID) { return; } - const transactionParams: CategorizeTrackedExpenseTransactionParams = { + const transactionParams: TrackedExpenseTransactionParams = { transactionID: transaction?.transactionID ?? '-1', amount, currency, @@ -4609,11 +4588,11 @@ function trackExpense( billable, receipt: trackedReceipt instanceof Blob ? trackedReceipt : undefined, }; - const policyParams: CategorizeTrackedExpensePolicyParams = { + const policyParams: TrackedExpensePolicyParams = { policyID: chatReport?.policyID ?? '-1', isDraftPolicy, }; - const reportInformation: CategorizeTrackedExpenseReportInformation = { + const reportInformation: TrackedExpenseReportInformation = { moneyRequestPreviewReportActionID: iouAction?.reportActionID ?? '-1', moneyRequestReportID: iouReport?.reportID ?? '-1', moneyRequestCreatedReportActionID: createdIOUReportActionID ?? '-1', @@ -4623,7 +4602,7 @@ function trackExpense( transactionThreadReportID: transactionThreadReportID ?? '-1', reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1', }; - const trackedExpenseParams: CategorizeTrackedExpenseParams = { + const trackedExpenseParams: TrackedExpenseParams = { onyxData, reportInformation, transactionParams, @@ -4638,31 +4617,41 @@ function trackExpense( if (!linkedTrackedExpenseReportAction || !actionableWhisperReportActionID || !linkedTrackedExpenseReportID) { return; } - shareTrackedExpense( - chatReport?.policyID ?? '-1', - transaction?.transactionID ?? '-1', - iouAction?.reportActionID ?? '-1', - iouReport?.reportID ?? '-1', - createdIOUReportActionID ?? '-1', - actionableWhisperReportActionID, - linkedTrackedExpenseReportAction, - linkedTrackedExpenseReportID, - transactionThreadReportID ?? '-1', - reportPreviewAction?.reportActionID ?? '-1', - onyxData, + const transactionParams = { + transactionID: transaction?.transactionID ?? '-1', amount, currency, comment, merchant, created, + taxCode: taxCode ?? '', + taxAmount: taxAmount ?? 0, category, tag, - taxCode, - taxAmount, billable, - trackedReceipt, + receipt: trackedReceipt instanceof Blob ? trackedReceipt : undefined, + }; + const policyParams = { + policyID: chatReport?.policyID ?? '-1', + }; + const reportInformation = { + moneyRequestPreviewReportActionID: iouAction?.reportActionID ?? '-1', + moneyRequestReportID: iouReport?.reportID ?? '-1', + moneyRequestCreatedReportActionID: createdIOUReportActionID ?? '-1', + actionableWhisperReportActionID, + linkedTrackedExpenseReportAction, + linkedTrackedExpenseReportID, + transactionThreadReportID: transactionThreadReportID ?? '-1', + reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1', + }; + const trackedExpenseParams = { + onyxData, + reportInformation, + transactionParams, + policyParams, createdWorkspaceParams, - ); + }; + shareTrackedExpense(trackedExpenseParams); break; } default: {