import { Order } from "@medusajs/medusa" import { useMemo } from "react" import { UseFormReturn, useWatch } from "react-hook-form" import { useTranslation } from "react-i18next" import IconTooltip from "../../../../components/molecules/icon-tooltip" import { nestedForm } from "../../../../utils/nested-form" import { formatAmountWithSymbol } from "../../../../utils/prices" import { CreateClaimFormType } from "../../details/claim/register-claim-menu" import RefundAmountForm from "../refund-amount-form" import { SummaryLineItem } from "./summary-line-item" import { SummaryShippingLine } from "./summary-shipping-line" type Props = { form: UseFormReturn order: Order } export const ClaimSummary = ({ form, order }: Props) => { const { t } = useTranslation() const { control } = form const claimItems = useWatch({ control: control, name: "return_items.items", defaultValue: [], }) const selectedClaimItems = useMemo(() => { return claimItems.filter((item) => item.return) }, [claimItems]) const claimItemShipping = useWatch({ control: control, name: "return_shipping", }) const replacementItems = useWatch({ control: control, name: "additional_items.items", defaultValue: [], }) const replacementItemShipping = useWatch({ control: control, name: "replacement_shipping", }) const claimType = useWatch({ control: control, name: "claim_type.type", }) const refundAmount = useMemo(() => { const claimItemsRefund = selectedClaimItems.reduce((acc, item) => { return acc + (item.total / item.original_quantity) * item.quantity }, 0) return { total: claimItemsRefund < 0 ? formatAmountWithSymbol({ amount: 0, currency: order.currency_code, }) : formatAmountWithSymbol({ amount: claimItemsRefund, currency: order.currency_code, }), totalAsNumber: claimItemsRefund < 0 ? 0 : claimItemsRefund, } }, [selectedClaimItems, order.currency_code]) if (!(selectedClaimItems?.length > 0 || replacementItems?.length > 0)) { return null } return (
{selectedClaimItems.length > 0 && (

{t("rma-summaries-claimed-items", "Claimed items")}

{selectedClaimItems.map((item, index) => { return ( ) })} {claimItemShipping.option && ( )}
)} {claimType !== "refund" && replacementItems.length > 0 && (

{t("rma-summaries-replacement-items", "Replacement items")}

{replacementItems.map((item, index) => { return ( ) })} {replacementItemShipping?.option && ( )}
)}

{t("rma-summaries-refund-amount", "Refund amount")}

{claimType === "refund" ? ( ) : (

{refundAmount.total}

)}
) }