Skip to content

Commit

Permalink
Merge pull request #54650 from ChavdaSachin/refactor/IOU.shareTracked…
Browse files Browse the repository at this point in the history
…Expense

refactor shareTrackedExpense function
  • Loading branch information
neil-marcellini authored Jan 21, 2025
2 parents e10c3c9 + e9de5d8 commit 059368f
Show file tree
Hide file tree
Showing 2 changed files with 62 additions and 69 deletions.
4 changes: 4 additions & 0 deletions src/libs/API/parameters/ShareTrackedExpenseParams.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ type ShareTrackedExpenseParams = {
taxCode: string;
taxAmount: number;
billable?: boolean;
policyExpenseChatReportID?: string;
policyExpenseCreatedReportActionID?: string;
adminsChatReportID?: string;
adminsCreatedReportActionID?: string;
};

export default ShareTrackedExpenseParams;
127 changes: 58 additions & 69 deletions src/libs/actions/IOU.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import type {
SendInvoiceParams,
SendMoneyParams,
SetNameValuePairParams,
ShareTrackedExpenseParams,
SplitBillParams,
StartSplitBillParams,
SubmitReportParams,
Expand Down Expand Up @@ -208,7 +209,7 @@ type TrackExpenseInformation = {
actionableWhisperReportActionIDParam?: string;
onyxData: OnyxData;
};
type CategorizeTrackedExpenseTransactionParams = {
type TrackedExpenseTransactionParams = {
transactionID: string;
amount: number;
currency: string;
Expand All @@ -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;
Expand All @@ -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<OnyxTypes.PersonalDetails>;
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down Expand Up @@ -4595,7 +4574,7 @@ function trackExpense(
if (!linkedTrackedExpenseReportAction || !actionableWhisperReportActionID || !linkedTrackedExpenseReportID) {
return;
}
const transactionParams: CategorizeTrackedExpenseTransactionParams = {
const transactionParams: TrackedExpenseTransactionParams = {
transactionID: transaction?.transactionID ?? '-1',
amount,
currency,
Expand All @@ -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',
Expand All @@ -4623,7 +4602,7 @@ function trackExpense(
transactionThreadReportID: transactionThreadReportID ?? '-1',
reportPreviewReportActionID: reportPreviewAction?.reportActionID ?? '-1',
};
const trackedExpenseParams: CategorizeTrackedExpenseParams = {
const trackedExpenseParams: TrackedExpenseParams = {
onyxData,
reportInformation,
transactionParams,
Expand All @@ -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: {
Expand Down

0 comments on commit 059368f

Please sign in to comment.