Proje: Okul.com.tr CRM · Hub: Okul.com.tr CRM — Incidents

Semptom

/sales/checkouts/{id} detay sayfasında ürün satırlarındaki “Okul / Şehir” kolonu boş (”—”) görünüyor. Mevcut bir okul seçilmiş olsa bile.

Root Cause

okulcom-api tarafında app/Services/Admin/Checkout/CheckoutCalculationService.php::mapToSchoolProducts() (satır 69-91) şunu yapıyor:

schoolName: $productPrice->getAttribute('school_name_override') ?? $productPrice->school->name ?? null,
cityName:   $productPrice->city->name ?? null,

Ama App\Models\ProductPrice modelinde school veya city ilişkisi yok — yalnızca product, location, schoolType tanımlı. Dolayısıyla ?->name her zaman null dönüyor.

school_name_override attribute’u sadece yeni okul akışında (kullanıcı “Listede yok” işaretleyip okul adı yazdığında) CheckoutService::calculate’te (satır 370-381) set ediliyor. Mevcut okul seçildiğinde set edilmiyor.

Sonuç: items JSON’una school_name=null, city_name=null yazılıyor; detay sayfası bu yüzden boş gösteriyor.

Önerilen Fix (API)

  1. cityName: $productPrice->location->name ?? null (location ilişkisi zaten eager-load ediliyor: includes: ['product', 'schoolType', 'location']).
  2. CheckoutService::calculate içinde schoolId doluysa School::find($schoolId)?->name’i school_name_override’a set et — veya productPrice’a school ilişkisi tanımlayıp eager-load et.

Veri Etkisi

Bu bug ile kaydedilmiş tüm checkout’ların items JSON’undaki school_name/city_name alanları null. Ekip fix’i deploy ettiğinde geriye dönük migration/backfill gerekebilir.

Durum

Bug ekibe iletildi, frontend tarafında workaround uygulanmadı.