{{-- Kademeli (sınıf) fiyatlandırma bloğu — stil + etkileşim. Quick-view başına BİR kez include. --}}
<style>
    .pcc-toggle { display:flex; align-items:center; gap:.6rem; margin:0; font-size:.85rem; color:#0f172a; font-weight:600; cursor:pointer;
        background:linear-gradient(135deg,#f5f3ff,#eef2ff); border:1px solid #e0e7ff; border-radius:12px; padding:.7rem .9rem; }
    .pcc-toggle input { width:20px; height:20px; accent-color:#4f46e5; cursor:pointer; flex-shrink:0; }
    .pcc-toggle b { color:#4338ca; }

    .pcc-groupbar { display:flex; align-items:center; gap:.7rem; flex-wrap:wrap; margin:1rem 0 0;
        background:#f8fafc; border:1px solid #eef2f7; border-radius:12px; padding:.6rem .8rem; }
    .pcc-groupbar label { margin:0; font-size:.78rem; font-weight:800; color:#334155; display:inline-flex; align-items:center; gap:.4rem; }
    .pcc-groupbar label i { color:#6366f1; }
    .pcc-groupbar select { flex:1; min-width:200px; border:1.5px solid #e2e8f0; background:#fff; border-radius:10px;
        padding:.45rem .7rem; font-size:.84rem; font-weight:700; color:#0f172a; cursor:pointer; transition:.15s; }
    .pcc-groupbar select:focus { outline:none; border-color:#4f46e5; box-shadow:0 0 0 3px rgba(79,70,229,.12); }

    .pcc-capbar { display:flex; align-items:center; justify-content:space-between; gap:.6rem; flex-wrap:wrap; margin:1rem 0 .7rem; }
    .pcc-capbar > span { font-size:.8rem; font-weight:700; color:#334155; }
    .pcc-capbar small { color:#94a3b8; font-weight:600; }
    .pcc-capbar i { color:#6366f1; }
    .pcc-mini { display:inline-flex; align-items:center; gap:5px; border:1px solid #ddd6fe; background:#f5f3ff; color:#6d28d9;
        font-size:.74rem; font-weight:800; padding:5px 11px; border-radius:9px; cursor:pointer; transition:.15s; }
    .pcc-mini:hover { background:#6d28d9; color:#fff; border-color:#6d28d9; }

    .pcc-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:.7rem; }
    .pcc-cell label { display:flex; align-items:center; gap:.4rem; font-size:.76rem; font-weight:700; color:#475569; margin-bottom:.35rem; }
    .pcc-code { width:22px; height:22px; border-radius:7px; display:grid; place-items:center; font-size:.66rem; font-weight:800; color:#fff;
        background:linear-gradient(135deg,#6366f1,#4338ca); flex-shrink:0; }
    .pcc-base { font-size:.6rem; font-weight:800; text-transform:uppercase; color:#4338ca; background:#eef2ff; border:1px solid #e0e7ff; padding:1px 6px; border-radius:20px; }
    .pcc-cell input { width:100%; border:1.5px solid #e2e8f0; background:#fff; border-radius:10px; padding:.5rem .7rem; font-size:.9rem; font-weight:700; color:#0f172a; text-align:center; transition:.15s; }
    .pcc-cell input:focus { outline:none; border-color:#4f46e5; box-shadow:0 0 0 3px rgba(79,70,229,.12); }

    .pcc-total { margin-top:.8rem; font-size:.82rem; font-weight:600; color:#475569; background:#f8fafc; border:1px solid #eef2f7; border-radius:10px; padding:.5rem .8rem; }
    .pcc-hint { font-size:.72rem; color:#94a3b8; margin:.6rem 0 0; }
    .pcc-hint i { color:#6366f1; }
</style>

<script>
(function () {
    if (window.__pccInit) return;
    window.__pccInit = true;

    function blockOf(el) { return el.closest('[data-pcc]'); }

    function sumOf(block) {
        var s = 0;
        block.querySelectorAll('[data-pcc-cap]').forEach(function (i) { s += parseInt(i.value, 10) || 0; });
        return s;
    }

    function renderTotal(block) {
        var max = parseInt(block.dataset.pccMax, 10) || 0;
        var sum = sumOf(block);
        var el = block.querySelector('[data-pcc-total]');
        if (!el) return;
        var over = max > 0 && sum > max;
        var short = (max > 0 && sum > 0 && sum < max) ? (max - sum) : 0;
        var highest = block.dataset.pccHighest || '';
        el.innerHTML = 'Toplam: <b>' + sum + '</b>' + (max > 0 ? (' / ' + max + ' kişi (kelle)') : '') +
            (over ? ' <b style="color:#ef4444">— maksimumu aşıyor</b>' : (max > 0 && sum <= max ? ' <span style="color:#16a34a">✓</span>' : '')) +
            (short > 0 && highest
                ? '<div style="margin-top:.35rem;font-size:.74rem;color:#4338ca;font-weight:700"><i class="fas fa-note-sticky"></i> Kalan <b>' + short + '</b> kişi en yüksek sınıf (<b>' + highest + '</b>) üzerinden fiyatlandırılır — tur tarihlerine not düşülür.</div>'
                : '');
        el.style.borderColor = over ? '#fecaca' : '#eef2f7';
        el.style.background = over ? '#fef2f2' : '#f8fafc';
    }

    // Aşımı, son değiştirilen alandan düş
    function clampAfterChange(block, changed) {
        var max = parseInt(block.dataset.pccMax, 10) || 0;
        if (max <= 0 || !changed) return;
        var sum = sumOf(block);
        if (sum > max) {
            var over = sum - max;
            var v = (parseInt(changed.value, 10) || 0) - over;
            changed.value = Math.max(0, v);
        }
    }

    function collect(block) {
        var caps = {};
        block.querySelectorAll('[data-pcc-cap]').forEach(function (i) {
            caps[i.getAttribute('data-class-id')] = parseInt(i.value, 10) || 0;
        });
        var toggle = block.querySelector('[data-pcc-toggle]');
        var payload = { use_pricing_classes: (toggle && toggle.checked) ? 1 : 0, class_capacities: caps };
        var grp = block.querySelector('[data-pcc-group]');
        if (grp && grp.value) payload.pricing_class_group_id = grp.value;
        return payload;
    }

    var pccT;
    function save(block) {
        clearTimeout(pccT);
        pccT = setTimeout(function () {
            if (!window.PQV) return;
            PQV.send(block.dataset.pccSave, 'POST', collect(block)).then(function (r) {
                PQV.toast((r.data && r.data.message) || (r.ok ? 'Kaydedildi' : 'Hata'), r.ok ? 'success' : 'error');
            });
        }, 500);
    }

    function autosplit(block) {
        var max = parseInt(block.dataset.pccMax, 10) || 0;
        var inputs = block.querySelectorAll('[data-pcc-cap]');
        var n = inputs.length;
        if (!n) return;
        var base = max > 0 ? Math.floor(max / n) : 0;
        var rem = max > 0 ? (max - base * n) : 0;
        inputs.forEach(function (i, idx) { i.value = base + (idx < rem ? 1 : 0); });
        renderTotal(block);
        save(block);
    }

    // Quick-view'in bu bloğun bulunduğu sekme id'si (yeniden yükleme sonrası aynı sekmede kal)
    function currentTab(el) {
        var panel = el.closest('.qv-tab-panel');
        return (panel && panel.id) ? panel.id.replace(/^qv-tab-/, '') : null;
    }

    // Toggle aç/kapa → kaydet, ardından quick-view'i yenile.
    // Sınıf modu; Fiyatlandırma ve Tarihler sekmelerindeki pazaryeri×sınıf fiyat
    // matrislerini (sunucu tarafında) yeniden şekillendirdiği için tam yenileme gerekir.
    document.addEventListener('change', function (e) {
        var t = e.target.closest('[data-pcc-toggle]');
        if (!t) return;
        var block = blockOf(t);
        var body = block.querySelector('[data-pcc-body]');
        if (body) body.style.display = t.checked ? '' : 'none';
        clearTimeout(pccT); // bekleyen kapasite kaydını iptal et; toggle'ı hemen gönder
        if (!window.PQV) return;
        PQV.send(block.dataset.pccSave, 'POST', collect(block)).then(function (r) {
            PQV.toast((r.data && r.data.message) || (r.ok ? 'Kaydedildi' : 'Hata'), r.ok ? 'success' : 'error');
            if (r.ok && typeof PQV.reload === 'function') PQV.reload(currentTab(block), block);
        });
    });

    // Sınıflandırma grubu değişimi → hemen kaydet + quick-view'i yenile
    // (kapasite alanları ve fiyat matrisleri yeni grubun sınıflarına göre yeniden çizilmeli)
    document.addEventListener('change', function (e) {
        var sel = e.target.closest('[data-pcc-group]');
        if (!sel) return;
        var block = blockOf(sel);
        clearTimeout(pccT);
        if (!window.PQV) return;
        PQV.send(block.dataset.pccSave, 'POST', collect(block)).then(function (r) {
            PQV.toast((r.data && r.data.message) || (r.ok ? 'Sınıflandırma değiştirildi' : 'Hata'), r.ok ? 'success' : 'error');
            if (r.ok && typeof PQV.reload === 'function') PQV.reload(currentTab(block), block);
        });
    });

    // Kapasite değişimi (change → kaydet; blur/enter)
    document.addEventListener('change', function (e) {
        var inp = e.target.closest('[data-pcc-cap]');
        if (!inp) return;
        var block = blockOf(inp);
        clampAfterChange(block, inp);
        renderTotal(block);
        save(block);
    });

    // Yazarken canlı toplam (kayıt yok)
    document.addEventListener('input', function (e) {
        var inp = e.target.closest('[data-pcc-cap]');
        if (!inp) return;
        renderTotal(blockOf(inp));
    });

    // Otomatik böl
    document.addEventListener('click', function (e) {
        var b = e.target.closest('[data-pcc-autosplit]');
        if (!b) return;
        e.preventDefault();
        autosplit(blockOf(b));
    });

    // İlk yüklemede toplamları çiz
    document.querySelectorAll('[data-pcc]').forEach(renderTotal);
})();
</script>
