# Spool Release Workflow Guide / Spool Release İş Akışı Rehberi ## 1. Scope & Purpose / Kapsam ve Amaç - **EN:** This guide explains how the Spool Release NDT, Spool Release Paint, and Spool Area Release screens work together, covering release triggers, automatic updates, and rollback logic. - **TR:** Bu rehber Spool Release NDT, Spool Release Paint ve Spool Area Release ekranlarının birlikte nasıl çalıştığını, tetikleyicileri, otomatik güncellemeleri ve geri alma (rollback) mantığını açıklar. ## 2. Key Files / Ana Dosyalar - **`resources/views/admin/type/spool-release-ndt.blade.php`** – Shared template; `$paint` değişkeni set edildiğinde Paint modu açılır (`resources/views/admin/type/spool-release-paint.blade.php` sadece bu dosyayı `@include` eder). - **`resources/views/admin/type/spool-release/rollback.blade.php`** – Statü geri alma zinciri. - **`resources/views/admin/type/spool-release/*`** – Spool listesi, weld/paint info panelleri, release listeleri ve paint follow-up güncelleyicileri gibi parçalar. - **`resources/views/admin/type/spool-area-release.blade.php` + `resources/views/admin-ajax/spool-area-release.blade.php`** – Tüm spool’ların özet ekranı ve veri kaynağı. ## 3. Layout & Widgets / Arayüz ve Bileşenler ### Left Column – Spool List & Checklists - **EN:** Checklist modal (`admin.type.spool-release.checklist-system`) and document upload widget switch between NDT vs Paint folders based on `$paint`. - **TR:** Checklist modülü ve doküman yükleme bileşeni `$paint` değerine göre NDT ya da Paint klasörlerine yönlenir. - **EN:** `spool-list` grid (DevExtreme) fetches data via `?ajax=spool-list`, supports multi-select and exports. Selecting rows auto-posts `iso_number` & `spool_number` back to the main form. - **TR:** `spool-list` grid’i (`?ajax=spool-list`) çoklu seçim ve dışa aktarma sunar; seçilen satırlar formda `iso_number`/`spool_number` alanlarını doldurur. ### Middle Column – Weld/Paint Info Form - **EN:** The form mirrors `iso_number` & `spool_number` filters, shows painting cycles (grouped per ISO), NDT % and PWHT badges, and lowest spool status (via `getLowestSpoolStatus`). - **TR:** Form, seçilen ISO/SPL bilgilerini tekrar gösterir, boyama çevrimlerini listeler, NDT % ve PWHT etiketlerini, ayrıca `getLowestSpoolStatus` ile hesaplanan minimum statüyü sunar. - **EN:** For SHOP vs FIELD toggling, `$field` flag is stored in session (`oturum("type_of_joint", ...)`) to render specialized field lists. - **TR:** SHOP / FIELD geçişi oturumda saklanan `$field` bayrağıyla yapılır; bu bayrak belirli alan listelerini (ör. `spool-list-field`) yükler. ### Right Column – Release Lists - **EN:** `ndt-release-list` or `ndt-release-paint-list` show recent release numbers with rollback icons for each row. - **TR:** `ndt-release-list` veya `ndt-release-paint-list` panelleri, son release numaralarını ve her satır için rollback ikonunu gösterir. ## 4. Release Actions / Release İşlemleri ### NDT Release (`ndt_release=ok`) - **EN:** Generates `ndt_release_no` from `setting("ndt_release_number_pattern")` via `get_counter`, stamps `ndt_release_check`, `ndt_release_date`, and pushes `spool_status` to `Paint`. - **TR:** `setting("ndt_release_number_pattern")` kalıbından `get_counter` ile numara üretir, `ndt_release_check`, `ndt_release_date` alanlarını doldurur ve `spool_status` değerini `Paint` yapar. - **EN:** Query is limited to `iso_number` & `spool_number`, ensures `spool_ndt_check_no` exists but `ndt_release_date` is null. - **TR:** Sorgu seçilen ISO/SPL ile sınırlandırılır, `spool_ndt_check_no` dolu ama `ndt_release_date` boş kayıtlar hedeflenir. ### NDT + Paint Release (`ndt_paint_release=ok`) - **EN:** Accepts comma-separated ISO/SPL pairs, loops through them, and issues paint release numbers using `setting("paint_release_number_pattern")`. - **TR:** Virgülle ayrılmış ISO/SPL çiftlerini döngü ile işler, `setting("paint_release_number_pattern")` ile yeni numaralar üretir. - **EN:** `spool_status` becomes `Paint` when `painting_cycle` exists, otherwise `Completed`; both `ndt_release_*` fields are stamped in one shot. - **TR:** `painting_cycle` varsa `spool_status` `Paint` olur, yoksa `Completed`; `ndt_release_*` alanları aynı anda doldurulur. - **EN:** Includes `admin.type.spool-release.paint-follow-up-updater`, which backfills `paint_follow_ups`, `construction_paint_logs`, and maps brand info from `incoming_control_paints` without overwriting existing values. - **TR:** `admin.type.spool-release.paint-follow-up-updater` dosyası tetiklenir; `paint_follow_ups`, `construction_paint_logs` ve `incoming_control_paints` tablolarını mevcut veriyi bozmadan günceller. ### Paint Mode Differences - **EN:** When `$paint` is set (Spool Release Paint screen), the left upload widget points to `004_QA/0016_Spool_Paint_Release_Checklist`, and the central table renders `paint-info` partial instead of `weld-info`. - **TR:** `$paint` aktif olduğunda (Spool Release Paint), yükleme klasörü `004_QA/0016_Spool_Paint_Release_Checklist` olur ve orta bölüm `paint-info` parçasını kullanır. - **EN:** SHOP/FIELD radio toggles limit queries by `type_of_joint` and influences which list partial (`spool-list-field`) is loaded. - **TR:** SHOP/FIELD butonları sorguları `type_of_joint` değerine göre filtreler ve hangi liste parçasının (`spool-list-field`) yükleneceğini belirler. ## 5. Rollback Logic / Rollback Mantığı - **EN:** `spool-release/rollback.blade.php` inspects the current `spool_status` per selected ISO/SPL pair and steps one level backward (Completed → Paint → NDT Release → Spool Release → Manufacturing). Relevant date/number fields are nulled to keep consistency. - **TR:** `spool-release/rollback.blade.php`, seçilen her ISO/SPL çifti için mevcut `spool_status` değerini bir önceki aşamaya çeker (Completed → Paint → NDT Release → Spool Release → Manufacturing) ve ilgili tarih/numara alanlarını sıfırlar. - **EN:** Supports batch rollback: `iso_number` and `spool_number` strings are split, paired by index, and updated in a loop. Success message shows previous/current states and total affected rows. - **TR:** Toplu rollback desteklenir; `iso_number` ve `spool_number` değerleri virgül ile ayrılır, indeks bazlı eşleştirilir ve döngüyle güncellenir. Sonuç mesajında eski/yeni statüler ile etkilenen satır sayısı gösterilir. - **EN:** Rollback is blocked if no update data is generated (e.g., unsupported status transitions); users receive an error toast. - **TR:** Desteklenmeyen statülerde güncelleme yapılmadığında rollback iptal olur ve kullanıcıya hata mesajı gönderilir. ## 6. Spool Area Release Overview / Spool Area Release Özeti - **EN:** `spool-area-release.blade.php` is a DevExtreme grid backed by `?ajax=spool-area-release`. It groups by ISO/SPL, aggregates status-related dates, and color-codes columns for Manufacturing, Spool Release, and Paint Release phases. - **TR:** `spool-area-release.blade.php`, `?ajax=spool-area-release` tarafından beslenen DevExtreme grid’idir; ISO/SPL bazında gruplanır, statü tarihlerini toplar ve üretim/NDTR/Paint aşamalarını renk kodlarıyla gösterir. - **EN:** AJAX layer computes `min_status_order` with a CASE expression so statuses can be sorted (Waiting → Manufacturing → QC → Paint → Completed). `getLowestSpoolStatus` is reapplied client-side to flag inconsistencies (⚠️). - **TR:** AJAX katmanı CASE ifadeleriyle `min_status_order` hesaplar (Waiting → Manufacturing → QC → Paint → Completed). İstemci tarafında `getLowestSpoolStatus` tekrar çalıştırılarak tutarsızlıklar ⚠️ ikonu ile işaretlenir. - **EN:** Detail modal (`spoolDetailModal`) reuses the same endpoint with `filter_iso_number/filter_spool_number` to show all joints, while toolbar buttons generate Clearance/Paint Release PDFs from selected rows. - **TR:** Detay modalı (`spoolDetailModal`) aynı endpoint’i `filter_iso_number/filter_spool_number` parametreleriyle çağırıp tüm joint’leri gösterir; araç çubuğu butonları seçilen satırlardan Clearance/Paint Release PDF’leri üretir. ## 7. Operational Checklist / Operasyonel Kontrol Listesi 1. **EN:** Filter or pick ISO/SPL rows in Spool List → **TR:** Spool List’te ISO/SPL seçin. 2. **EN:** Use the center form to verify painting cycles, NDT %, PWHT, and spool status → **TR:** Orta formda boyama çevrimlerini, NDT %, PWHT ve spool statüsünü doğrulayın. 3. **EN:** Upload checklist PDFs if needed; SHOP/FIELD toggle applies proper templates → **TR:** Gerekirse checklist PDF’lerini yükleyin; SHOP/FIELD seçimi doğru şablonları açar. 4. **EN:** Trigger `NDT Release` when only NDT clearance is required; use `NDT & Paint Release` when paint cycle is already defined → **TR:** Sadece NDT onayı gerekiyorsa `NDT Release` butonunu, boyama çevrimi hazırsa `NDT & Paint Release` butonunu kullanın. 5. **EN:** Monitor automatic paint follow-up updates via notifications (Log::debug + `bilgi()` toast) → **TR:** Otomatik paint follow-up güncellemelerini log ve `bilgi()` bildirimlerinden takip edin. 6. **EN:** If a mistake happens, use rollback icons in the release list to revert statuses in bulk → **TR:** Hata durumunda release listesinde yer alan rollback ikonlarıyla statüleri toplu olarak geri alın. 7. **EN:** Review consolidated progress inside Spool Area Release; generate registers or drill into detail modal as needed → **TR:** Spool Area Release ekranından genel ilerlemeyi kontrol edin; gerekirse register üretin veya detay modala inin. ## 8. Data & Integration Notes / Veri ve Entegrasyon Notları - **EN:** All release flows operate on `weld_logs`; status counts for charts also rely on this table. Paint follow-up sync touches `paint_follow_ups`, `construction_paint_logs`, `incoming_control_paints`, and MTO aggregates. - **TR:** Tüm release akışları `weld_logs` tablosu üzerinde çalışır; grafikler de bu tabloya dayanır. Paint follow-up senkronu `paint_follow_ups`, `construction_paint_logs`, `incoming_control_paints` ve MTO özetlerini kullanır. - **EN:** Number generators (`get_counter`) respect patterns from `settings`; ensure counters are configured for `ndt_release_number_pattern`, `paint_release_number_pattern`, `CLN`, `L1/L2/L3`. - **TR:** Numara üreticileri (`get_counter`) `settings` tablosundaki kalıpları kullanır; `ndt_release_number_pattern`, `paint_release_number_pattern`, `CLN`, `L1/L2/L3` sayaçlarının tanımlı olduğundan emin olun. - **EN:** Temperature snapshots for paint sync come from `setting("temperatures")`, indexed by day-of-year; missing data aborts the updater to avoid wrong entries. - **TR:** Paint senkronizasyonundaki sıcaklık değerleri `setting("temperatures")` dizisinden (yılın günü indeksli) alınır; veri yoksa güncelleme iptal edilir. ## 9. Troubleshooting / Sorun Giderme - **EN:** Release button hidden? Confirm `spool_ndt_check` is filled and current status equals `NDT Release`. Also ensure `painting_cycle` exists when attempting paint release. - **TR:** Release butonu görünmüyor mu? `spool_ndt_check` alanının dolu ve mevcut statünün `NDT Release` olduğundan emin olun. Paint release için `painting_cycle` kaydını kontrol edin. - **EN:** Rollback unavailable? Requested status may already be at the earliest phase or no matching ISO/SPL pair exists; verify selections on the left grid. - **TR:** Rollback çalışmıyor mu? Statü zaten en erken aşamada olabilir veya eşleşen ISO/SPL bulunmamış olabilir; sol grid’deki seçimi doğrulayın. - **EN:** Spool Area data mismatch? Use the detail modal to inspect raw rows; `⚠️` icons usually mean inconsistent dates between joints of the same spool. - **TR:** Spool Area verisi tutarsız mı? Detay modalla ham satırları inceleyin; `⚠️` ikonları aynı spool’daki joint’ler arasında tarih uyumsuzluğu olduğuna işaret eder. --- - **EN:** Keeping these interactions in sync ensures NDT and Paint releases move smoothly from detailed forms to the consolidated area dashboard. - **TR:** Bu etkileşimleri senkron tutmak, ayrıntılı formlardan konsolide alan paneline kadar NDT ve Paint release süreçlerinin sorunsuz ilerlemesini sağlar.