import { ChevronDown, Pencil, Trash2 } from 'lucide-react'; import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { Card, CardContent } from '@/components/ui/card'; import { ImagePreviewModal } from '@/components/image-preview-modal'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@/components/ui/tooltip'; import type { Purchase } from './columns'; function formatDateTime(dateString: string): string { const date = new Date(dateString); return date.toLocaleDateString('id-ID', { day: '2-digit', month: 'short', year: 'numeric', hour: '2-digit', minute: '2-digit', }); } function formatCurrency(amount: number): string { return new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0, }).format(amount); } function formatNumber(num: number): string { return new Intl.NumberFormat('id-ID', { maximumFractionDigits: 4, }).format(num); } 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); const [photoPreviewOpen, setPhotoPreviewOpen] = useState(false); 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 && (
)}
Edit Hapus
{purchase.photo_url && ( )} ); }