100 lines
4.9 KiB
Markdown
100 lines
4.9 KiB
Markdown
# 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. |