import { ChatBubble, DocumentText, ReceiptPercent, XCircle, XMark, } from "@medusajs/icons" import { AdminOrderLineItem, AdminOrderLinePreview, HttpTypes, } from "@medusajs/types" import { IconButton, Input, Text, Tooltip } from "@medusajs/ui" import { UseFormReturn } from "react-hook-form" import { useTranslation } from "react-i18next" import { Action, ActionMenu, } from "../../../../../components/common/action-menu" import { Form } from "../../../../../components/common/form" import { Thumbnail } from "../../../../../components/common/thumbnail" import { Combobox } from "../../../../../components/inputs/combobox" import { MoneyAmountCell } from "../../../../../components/table/table-cells/common/money-amount-cell" import { useReturnReasons } from "../../../../../hooks/api/return-reasons" type ExchangeInboundItemProps = { item: AdminOrderLineItem previewItem: AdminOrderLinePreview currencyCode: string index: number onRemove: () => void onUpdate: (payload: HttpTypes.AdminUpdateReturnItems) => void form: UseFormReturn } function ExchangeInboundItem({ item, previewItem, currencyCode, form, onRemove, onUpdate, index, }: ExchangeInboundItemProps) { const { t } = useTranslation() const { return_reasons = [] } = useReturnReasons({ fields: "+label" }) const formItem = form.watch(`inbound_items.${index}`) const showReturnReason = typeof formItem.reason_id === "string" const showNote = typeof formItem.note === "string" const appliedPromoCodes = (previewItem.adjustments || []).map( (adjustment) => adjustment.code ) return (
{item.title}{" "} {item.variant_sku && ({item.variant_sku})}
{item.product_title}
{appliedPromoCodes.length > 0 && (
{appliedPromoCodes.map((code) => (
{code}
))} } >
)}
{ return ( { const val = e.target.value const payload = val === "" ? null : Number(val) field.onChange(payload) if (payload) { onUpdate({ quantity: payload }) } }} /> ) }} /> {t("fields.qty")}
form.setValue(`inbound_items.${index}.reason_id`, ""), icon: , }, !showNote && { label: t("actions.addNote"), onClick: () => form.setValue(`inbound_items.${index}.note`, ""), icon: , }, { label: t("actions.remove"), onClick: onRemove, icon: , }, ].filter(Boolean) as Action[], }, ]} />
<> {/* REASON*/} {showReturnReason && (
{t("orders.returns.reason")} {t("orders.returns.reasonHint")}
{ return ( { onUpdate({ reason_id: v }) onChange(v) }} {...field} options={return_reasons.map((reason) => ({ label: reason.label, value: reason.id, }))} /> ) }} />
{ form.setValue(`inbound_items.${index}.reason_id`, null) onUpdate({ reason_id: null }) }} >
)} {/* NOTE*/} {showNote && (
{t("orders.returns.note")} {t("orders.returns.noteHint")}
{ return ( { field.onChange(field.value) onUpdate({ internal_note: field.value }) }} className="bg-ui-bg-field-component hover:bg-ui-bg-field-component-hover" /> ) }} />
{ form.setValue(`inbound_items.${index}.note`, null) onUpdate({ internal_note: null }) }} >
)}
) } export { ExchangeInboundItem }