Kurumsal Hesap Yapısı - Güncel Mimari

Tarih: 2025-11-24 | Platform: Muzibu | v2 - Fatura Adresleri Ayrı Tablo

İlişki Yapısı

┌─────────────────────────────────────────────────────┐
  users (Universal - değişmez)                      
  ├── id, name, email...                            
  └── subscription_id (abonelik)                    
└──────────────┬──────────────────────────────────────┘
               │
      ┌────────┴────────┐
      ▼                 ▼
┌──────────────┐    ┌────────────────────┐
 cart_addresses │    │ muzibu_corporate    
 (Fatura/Adres) │    │ _accounts           
              │    │                    
 user_id (FK) │    │ user_id (FK)       
 address_type │    │ parent_id (Self)  
 tax_office   │    │ corporate_code     
 tax_number   │    │ company_name       
 company_name │    │ max_members        
└──────────────┘    └────────────────────┘

Kurum Sahibi:
  → parent_id = NULL
  → Kendi user_id si ile cart_addresses de fatura adresi var

Kurumsal Üye:
  → parent_id = kurum_id
  → Fatura için parent ın owner user ının adresi kullanılır

Örnek Veri Akışı

muzibu_corporate_accounts
id user_id parent_id corporate_code company_name Tip
1 5 NULL ABC123 Acme Ltd Kurum Sahibi
2 10 1 NULL NULL Üye
3 12 1 NULL NULL Üye
cart_addresses (Kurum sahibinin fatura adresi)
user_id address_type company_name tax_office tax_number
5 billing Acme Ltd Kadıköy VD 1234567890

Kullanım Senaryoları

1. Kurum Sahibinin Fatura Bilgilerini Al

Kurum kaydını bul (parent_id = NULL) → user_id yi al → cart_addresses tablosundan address_type = billing olan kaydı çek

2. Üyenin Kurumsal Fatura Bilgilerini Al

Üyenin kaydını bul → parent_id ile kurumu bul → Kurumun user_id si ile cart_addresses ten fatura adresini çek

3. Toplu Fatura Listesi (Tüm Kurumlar)

parent_id = NULL olan kurumları çek → Her birinin user_id si ile cart_addresses JOIN yaparak fatura bilgilerini listele

4. Kurum Sahibi Fatura Adresini Günceller

cart_addresses tablosunda kendi user_id si ile günceller → Tüm üyeler otomatik olarak bu adresi kullanır

Bu Mimarinin Avantajları

✓ Mevcut Sistemi Kullanır

cart_addresses zaten var, yeni tablo oluşturmaya gerek yok. Tax_office, tax_number gibi alanlar hazır.

✓ Tek Noktadan Güncelleme

Kurum sahibi fatura adresini güncellediğinde tüm üyeler için geçerli olur. Tutarsızlık riski yok.

✓ Sipariş Sistemiyle Uyumlu

cart_orders tablosu zaten cart_addresses ile çalışıyor. Kurumsal siparişlerde aynı altyapı kullanılır.

✓ users Tablosu Universal

Hiçbir tenant-specific kolon eklenmez. Diğer tenantlar etkilenmez.

Sonuç

Sonraki Adımlar

  1. CorporateService güncelle - getBillingAddress() metodu ekle
  2. Model güncelle - billingAddress() relationship ekle
  3. Admin UI - Kurum sahibi için fatura adresi yönetimi
  4. Sipariş akışı - Kurumsal üye siparişinde otomatik adres seçimi