import { ChevronDown, Pencil, Trash2 } from 'lucide-react'; import { ImagePreviewButton } from '@/components/image-preview-button'; import { RowActions } from '@/components/row-actions'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { formatDateTime, formatNumber } from '@/lib/format'; import { formatCurrency } from '@/lib/utils'; import type { Purchase } from './columns'; export type PurchaseCardRowParams = { purchase: Purchase; index: number; isExpanded: boolean; onToggleExpand: () => void; onEdit: (purchase: Purchase) => void; onDelete: (purchase: Purchase) => void; }; export function PurchaseCardRow({ purchase, index, isExpanded, onToggleExpand, onEdit, onDelete, }: PurchaseCardRowParams) { const items = purchase.purchase_items ?? []; const variantCount = items.length; const rawMaterialName = items[0]?.raw_material_price?.raw_material?.name ?? '-'; const unit = items[0]?.raw_material_price?.raw_material?.unit ?? ''; const totalQty = items.reduce( (sum, item) => sum + Number(item.quantity), 0, ); return ( <>
{index}.

{purchase.supplier?.name ?? '-'}

{rawMaterialName} {variantCount > 0 && ( ({variantCount} varian) )}
{formatDateTime(purchase.created_at)} {purchase.notes && ( {purchase.notes} )}
Qty:{' '} {formatNumber(totalQty)} {unit} Sub:{' '} {formatCurrency(purchase.subtotal)} Disc:{' '} {formatCurrency(purchase.discount)} Ongkir:{' '} {formatCurrency(purchase.shipping_cost)} Total:{' '} {formatCurrency(purchase.total)}
{purchase.photo_url && (
)}
, onClick: () => onEdit(purchase), }, { label: 'Hapus', icon: ( ), onClick: () => onDelete(purchase), }, ]} wrapperClassName="flex shrink-0 items-center gap-1" />
); }