import { ArrowLeft, Package, Clock, User, CheckCircle2, AlertCircle, Trash2, Edit } from "lucide-react"; import { Button } from "@/Components/ui/button"; import AuthenticatedLayout from "@/Layouts/AuthenticatedLayout"; import { Head, Link, router } from "@inertiajs/react"; import { Badge } from "@/Components/ui/badge"; import { toast } from "sonner"; import ActivityLogSection from "@/Components/ActivityLog/ActivityLogSection"; interface Props { order: any; } export default function ShippingOrderShow({ order }: Props) { const isDraft = order.status === 'draft'; const isCompleted = order.status === 'completed'; const handlePost = () => { if (confirm('確定要執行過帳嗎?這將會從倉庫中扣除庫存數量。')) { router.post(route('delivery-notes.post', order.id), {}, { onSuccess: () => toast.success('過帳成功'), onError: (errors: any) => toast.error(errors.error || '過帳失敗') }); } }; const handleDelete = () => { if (confirm('確定要刪除這張出貨單嗎?')) { router.delete(route('delivery-notes.destroy', order.id)); } }; const getStatusBadge = (status: string) => { switch (status) { case 'draft': return 草稿; case 'completed': return 已完成; case 'cancelled': return 已取消; default: return {status}; } }; return (

{order.doc_no}

{getStatusBadge(order.status)}

建立日期: {new Date(order.created_at).toLocaleString()} | 建立者: {order.creator_name}

{isDraft && ( <> )} {isCompleted && (
已於 {new Date(order.posted_at).toLocaleString()} 過帳
)}
{/* 基本資訊 */}

基本資料

{order.warehouse_name}
{order.shipping_date}
{order.customer_name || '-'}
{isCompleted ? '已完成 (已扣庫存)' : '草稿 (暫存中)'}
{order.remarks || '無備註'}
{/* 品項明細 */}

出貨品項清單

{order.items.length} 個品項
{order.items.map((item: any) => ( ))}
商品名稱 / 編號 批號 數量 單價 小計
{item.product_name}
{item.product_code}
{item.batch_number || 'N/A'} {parseFloat(item.quantity).toLocaleString()} {item.unit_name} ${parseFloat(item.unit_price).toLocaleString()} ${parseFloat(item.subtotal).toLocaleString()}
{/* 活動日誌區塊 */}
{/* 右側:金額摘要 */}

結算金額

未稅小計 ${Number(order.total_amount).toLocaleString()}
營業稅 (5%) ${Number(order.tax_amount).toLocaleString()}
總計金額 ${Number(order.grand_total).toLocaleString()}
{isDraft && (

提示:尚未過帳

此單據目前僅為草稿,尚未扣除庫存。確認無誤後請點擊右上角「執行過帳」。

)}
); } function CalculatorIcon({ className }: { className?: string }) { return ( ); }