import { Fragment } from 'react'; import { ImagePreviewButton } from '@/components/dialogs'; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; import { formatNumber } from '@/lib/format'; import { formatCurrency } from '@/lib/utils'; import type { Restock, RestockItem } from './columns'; export function RestockItemSubRow({ restock, items: loadedItems, isLoading, }: { restock: Restock; items: RestockItem[]; isLoading: boolean; }) { const items = loadedItems ?? []; const groupedByProduct = items.reduce( (acc, item) => { const name = item.product_variant?.product?.name ?? 'Tanpa Produk'; if (!acc[name]) { acc[name] = []; } acc[name].push(item); return acc; }, {} as Record, ); let counter = 0; return (
No Foto Varian Harga Modal Qty Subtotal {isLoading ? ( Memuat item... ) : items.length === 0 ? ( Tidak ada item. ) : ( Object.entries(groupedByProduct).map( ([productName, groupItems]) => { const totalQty = groupItems.reduce( (sum, item) => sum + (item.quantity ?? 0), 0, ); const totalSubtotal = groupItems.reduce( (sum, item) => sum + (item.subtotal ?? 0), 0, ); return ( {productName} {formatNumber(totalQty)} {formatCurrency(totalSubtotal)} {groupItems.map((item) => { counter++; return ( {counter} {item.product_variant ?.photo_url ? ( ) : (
N/A
)}
{item.product_variant ?.name ?? '-'} {formatCurrency( item.unit_price, )} {formatNumber( item.quantity, )} {formatCurrency( item.subtotal, )}
); })}
); }, ) )}
); }