import React, { useState, useEffect } from 'react' import { useNavigate, useParams } from 'react-router-dom' import { FaEdit, FaArrowLeft, FaPrint, FaDownload, FaShoppingCart, FaCalendar, FaBuilding, FaUser, FaPhone, FaEnvelope, FaMapMarkerAlt, FaClipboardList, FaCalculator, FaTruck, FaFileInvoiceDollar, FaExclamationCircle, } from 'react-icons/fa' import { CrmSalesOrder, CrmSalesOrderItem, SaleOrderItemStatusEnum } from '../../../types/crm' import { mockSalesOrders } from '../../../mocks/mockSalesOrders' import { getSaleOrderItemStatusnfo, getSaleOrderStatusColor, getSaleOrderStatusText, } from '../../../utils/erp' import { Container } from '@/components/shared' import { ROUTES_ENUM } from '@/routes/route.constant' const SalesOrderView: React.FC = () => { const navigate = useNavigate() const { id } = useParams() const [order, setOrder] = useState(null) const [loading, setLoading] = useState(true) useEffect(() => { if (id) { // Find the order from mock data setTimeout(() => { const foundOrder = mockSalesOrders.find((order) => order.id === id) if (foundOrder) { setOrder(foundOrder) } setLoading(false) }, 1000) } }, [id]) if (loading) { return (
) } if (!order) { return (

Sipariş Bulunamadı

Belirtilen sipariş mevcut değil.

) } return (
{/* Header */}

{order.orderNumber}

Satış Siparişi Detayları

{getSaleOrderStatusText(order.status)}
{/* Order Info Cards */}

Sipariş Tarihi

{new Date(order.orderDate).toLocaleDateString('tr-TR')}

Talep Edilen Tarih

{new Date(order.requestedDeliveryDate).toLocaleDateString('tr-TR')}

Onaylanan Tarih

{order.confirmedDeliveryDate ? new Date(order.confirmedDeliveryDate).toLocaleDateString('tr-TR') : 'Belirtilmemiş'}

Toplam Tutar

{order.totalAmount.toLocaleString('tr-TR')} {order.currency}

{/* Additional Info */}
Ödeme Koşulları:

{order.paymentTerms}

Para Birimi:

{order.currency}

Son Güncelleme:
{order.lastModificationTime ? new Date(order.lastModificationTime).toLocaleString('tr-TR') : 'Güncelleme yok'}
{/* Customer Information */}

Müşteri Bilgileri

Müşteri Detayları

Firma Adı:

{order.customer?.name || 'Müşteri bilgisi yok'}

İletişim Kişisi:

{order.customer?.primaryContact?.fullName || 'Belirtilmemiş'}

{order.customer?.primaryContact?.phone || 'Belirtilmemiş'}
{order.customer?.primaryContact?.email || 'Belirtilmemiş'}

Teslimat Adresi

{order.deliveryAddress.street}

{order.deliveryAddress.city}, {order.deliveryAddress.state}

{order.deliveryAddress.postalCode}

{order.deliveryAddress.country}

{/* Order Items */}

Sipariş Kalemleri

{order.items.map((item: CrmSalesOrderItem) => { const itemStatus = getSaleOrderItemStatusnfo(item.status) return ( ) })}
Malzeme Miktar Teslim Edilen Birim Fiyat Toplam Durum
{item.material?.code || item.materialId}
{item.material?.name || item.description}
{item.quantity} {item.material?.baseUnit?.name || 'Adet'}
{item.deliveredQuantity} {item.material?.baseUnit?.name || 'Adet'}
{((item.deliveredQuantity / item.quantity) * 100).toFixed(1)}% tamamlandı
{item.unitPrice.toLocaleString('tr-TR')} {order.currency} {item.totalAmount.toLocaleString('tr-TR')} {order.currency} {itemStatus.label}
{/* Financial Summary */}

Mali Özet

Ara Toplam: {order.subtotal.toLocaleString('tr-TR')} {order.currency}
İndirim: -{order.discountAmount.toLocaleString('tr-TR')} {order.currency}
KDV: {order.taxAmount.toLocaleString('tr-TR')} {order.currency}
Genel Toplam: {order.totalAmount.toLocaleString('tr-TR')} {order.currency}

Teslimat Durumu

Toplam Kalem: {order.items.length}

Teslim Edilenler:{' '} { order.items.filter( (item) => item.status === SaleOrderItemStatusEnum.Delivered, ).length }

Bekleyenler:{' '} { order.items.filter( (item) => item.status !== SaleOrderItemStatusEnum.Delivered, ).length }

Faturalama Durumu

Teslimat Sayısı: {order.deliveries?.length || 0}

) } export default SalesOrderView