Files
citrus-cms/resources/views/guide/hand-over.md
T
2026-04-28 21:15:09 +03:00

100 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Hand-Over Modülü Dokümantasyonu
Bu belge, `resources/views/admin/type/hand-over.blade.php` dosyasındaki Hand-Over modülü için sütun yapılarını, veri etkileşimlerini ve otomatik durum (status) mantığını açıklar.
## 1. Genel Yapı ve Sütun Grupları
Modül, dinamik olarak ayarlanan sayıda (varsayılan: 3) kontrol aşamasından oluşan bir onay sürecini yönetir. Veriler ana gruplar altında toplanır:
### General Info (Genel Bilgiler)
Temel proje ve paket bilgilerinin girildiği alandır.
- **Object, Location, Work Type, Project**: Paketin ait olduğu lokasyon ve proje detayları.
- **Volumes (Hacimler)**:
- `collected_volumes`: Toplanan hacim.
- `not_collected_volumes`: Toplanmayan hacim (Varsayılan: 1).
- `total_volumes`: **Otomatik Hesaplanır**. (`collected_volumes` + `not_collected_volumes`). Bu alan salt okunurdur.
### Control Aşamaları (Control 1, Control 2, ...)
Her bir kontrol aşaması (varsayılan olarak 3 adet) aşağıdaki standart sütunları içerir:
- **Controller**: Bu aşamadan sorumlu alt yüklenici veya firma (Seçim listesinden atanır).
- **Date (1, 2, 3)**: İşlem tarihleri.
- **Status**: Aşamanın durumu (`Agreed`, `Comment`, `Revision`).
- **Comments**: Varsa notlar veya ret nedenleri.
- **Responsible**: İşlemi yapan kişi.
**Otomatik İşlem:**
- Bir kontrol aşamasına tarih (`date`) girildiğinde, `responsible` alanı boş ise, o anki oturum açmış kullanıcının adı otomatik olarak doldurulur.
### Location Info
Arşivleme ve konum bilgilerini içerir.
- **Archive**: Arşiv durumu.
---
## 2. Final Status (Nihai Durum) Mantığı
`Final Status` sütunu, tüm kontrol aşamalarındaki (Control 1, 2, 3...) durumlara bakarak **otomatik olarak** belirlenir. Bu sütun elle değiştirilemez (salt okunurdur).
Mantık sıralaması aşağıdaki gibidir:
1. **Hiçbir Kontrolcü Atanmamışsa:** Durum boştur.
2. **Yorum (Comment) Varsa:** Herhangi bir aşamada "Comment / замечание" durumu varsa, `Final Status`, yorum yapan **ilk** kontrolcünün (firma) adı olur. (Öncelik yorumlardadır).
3. **Tümü Onaylıysa (Agreed):** Atanan **tüm** kontrolcüler "Agreed / подписано" durumundaysa, `Final Status` **"Archive"** olur.
4. **Sıradaki Kontrolcü:** Yukarıdakiler gerçekleşmemişse, sistem sırayla kontrol eder:
- Eğer bir aşama "Agreed" ise ve bir sonraki aşamaya kontrolcü atanmışsa, `Final Status` bir sonraki kontrolcünün adı olur. Bu, dosyanın bir sonraki birime geçtiğini gösterir.
### Akış Diyagramı (Flowchart)
Aşağıdaki diyagram `updateFinalStatus` fonksiyonunun çalışma mantığını özetler:
```mermaid
graph TD
Start[Değişiklik Algılandı] --> CheckController{Kontrolcü\nAtanmış mı?}
CheckController -- Hayır --> StatusEmpty[Durum: Boş]
CheckController -- Evet --> CheckComment{Herhangi biri\n'Comment' mi?}
CheckComment -- Evet --> SetCommenter[Durum: İlk Yorum\nYapanın Adı]
CheckComment -- Hayır --> CheckAllAgreed{HEPSİ\n'Agreed' mi?}
CheckAllAgreed -- Evet --> SetArchive[Durum: 'Archive']
CheckAllAgreed -- Hayır --> FindNext[Sıradaki Aşama Kontrolü]
FindNext --> IsCurrentAgreed{Mevcut Aşama\n'Agreed' mi?}
IsCurrentAgreed -- Evet --> CheckNextAssigned{Sonraki Kontrolcü\nVar mı?}
CheckNextAssigned -- Evet --> SetNext[Durum: Sonraki\nKontrolcünün Adı]
CheckNextAssigned -- Hayır --> KeepCurrent[Durum Değişmez]
IsCurrentAgreed -- Hayır --> KeepCurrent
```
## 3. ID Status (Genel Durum) Mantığı
`id_status` sütunu, satırın genel durumunu temsil eder ve `Agreed`, `Comment`, `Revision` veya `Archive` değerlerinden birini alır. Bu sütun da **otomatik olarak** hesaplanır.
Mantık şu şekildedir:
1. **Tümü Onaylıysa:** Tüm kontrol aşamaları (`control*_id_status`) "Agreed / подписано" durumundaysa, `id_status` **"Agreed / подписано"** olur.
2. **Değilse:** Eğer herhangi bir aşama "Agreed" değilse, `id_status` **"Archive"** sütunundaki değeri alır.
### ID Status Akış Diyagramı
```mermaid
graph TD
Start[Değişiklik Algılandı] --> CheckMultiAgreed{Tüm Kontroller\n'Agreed' mi?}
CheckMultiAgreed -- Evet --> SetAgreed[Durum: 'Agreed']
CheckMultiAgreed -- Hayır --> GetArchive{Archive Değeri\nNedir?}
GetArchive --> SetFromArchive[Durum: Archive Sütunundaki Değer]
```
## 3. Veri Kaynakları ve İlişkiler
Sütunlar aşağıdaki veri kaynaklarından beslenir:
- **Object / Project**: `weld_logs` tablosundan dinamik olarak çekilir.
- **Work Type**: `work_types` tablosundan gelir.
- **Controller**: `subcontractors` (alt yükleniciler) tablosundan listelenir.
- **Responsible**: `work_permit_documents` tablosundaki kayıtlı personeller arasından seçilir.
Bu yapı, kullanıcı hatalarını en aza indirmek ve onay sürecinin (kimde olduğu bilgisinin) otomatik olarak takip edilmesini sağlamak amacıyla tasarlanmıştır.