Cart modülündeki CheckoutPage.php tamamen Shop modülüne bağımlı:
ShopCustomer - Müşteri bilgileriShopCustomerAddress - Adres bilgileriShopOrder - Sipariş oluşturmaShopOrderItem - Sipariş kalemleriBu yapı sadece fiziksel ürün satışı için çalışır. Dijital ürün, abonelik gibi farklı satış tipleri desteklenmez.
shop_customer_addresses tablosu Shop modülünde. Bu tablo shop_customers tablosuna bağlı.
Cart bağımsız çalışamıyor çünkü adres bilgisi Shop'tan geliyor.
Checkout sayfası satılan içeriğe göre dinamik olmalı:
| Satış Tipi | Kargo Adresi | Fatura Adresi | Örnek |
|---|---|---|---|
| Fiziksel Ürün | Gerekli | Gerekli | Forklift, Transpalet |
| Dijital Ürün | Gerekli DEĞİL | Gerekli | E-kitap, Yazılım |
| Abonelik | Gerekli DEĞİL | Gerekli | Muzibu Premium |
| Hizmet | Duruma göre | Gerekli | Bakım, Kurulum |
Tüm müşteri ve adres bilgilerini yönetecek merkezi modül:
customers tablosu - Genel müşteri bilgileri (users tablosuyla ilişkili)customer_addresses tablosu - Adres bilgileri (Shop'tan bağımsız)Neden? Shop, Subscription, Booking gibi tüm modüller aynı müşteri/adres sistemini kullanabilir.
Genel sipariş yönetimi için merkezi modül:
orders tablosu - Polymorphic ilişki (ShopProduct, Subscription, Service)order_items tablosu - Sipariş kalemleri (cartable_type/id ile)Avantaj: Cart'taki polymorphic yapı Order'a aktarılır. Her türlü içerik sipariş edilebilir.
Cart modülündeki CheckoutPage'i Shop bağımlılıklarından arındır:
ShopCustomer yerine CustomerShopCustomerAddress yerine CustomerAddressShopOrder yerine OrderCart modülüne checkout route'u ekle:
/checkout - Ana checkout sayfası/checkout/success - Başarılı ödeme/checkout/failed - Başarısız ödemeShop'tan shop.checkout route'unu kaldır.
Cart modeli checkout için gerekli bilgileri içermeli:
requires_shipping - Kargo gerekli mi? (boolean)is_digital - Dijital ürün mü? (boolean)is_subscription - Abonelik mi? (boolean)Bu bilgiler CartItem'lardan hesaplanabilir (tüm item'lar dijitalse = dijital sepet).
Shop modülünden checkout ile ilgili gereksiz kodları kaldır:
CheckoutRedirectController kaldırshop.checkout route'u kaldır (cart-page.blade.php'deki link)| Tablo | Modül | Açıklama |
|---|---|---|
customers |
Customer | Merkezi müşteri tablosu (users FK) |
customer_addresses |
Customer | Müşteri adresleri (billing/shipping) |
orders |
Order | Genel siparişler (polymorphic) |
order_items |
Order | Sipariş kalemleri (polymorphic) |
Mevcut Shop tabloları korunacak (geriye uyumluluk için):
shop_customers - Mevcut veriler içinshop_customer_addresses - Mevcut veriler içinshop_orders - Mevcut siparişler içinYeni siparişler yeni tablolara yazılacak. Eski veriler migrate edilebilir.
Yeni modül oluşturmadan hızlı çözüm:
checkout_addresses tablosu ekle (JSON olarak cart'ta zaten var)Dezavantaj: Uzun vadede yine refactoring gerekecek.