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)
cityName: $productPrice->location->name ?? null(locationilişkisi zaten eager-load ediliyor:includes: ['product', 'schoolType', 'location']).CheckoutService::calculateiçindeschoolIddoluysaSchool::find($schoolId)?->name’ischool_name_override’a set et — veya productPrice’aschooliliş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ı.
Related
- checkout-modeli — Checkout/items yapısı
- 2026-05-07-product-price-includes-yoksayiliyor — Aynı dönemde tespit edilen başka bir API bug’ı