298 lines
15 KiB
Markdown
298 lines
15 KiB
Markdown
|
|
<!-- module-doc: claims=App.Hr.DisciplinaryPenaltyType -->
|
|||
|
|
# İK › Disiplin Dosyaları (`App.Hr.DisciplinaryCase`)
|
|||
|
|
|
|||
|
|
Personel disiplin süreci: olay tutanağı (personel, tarih/saat/yer, tanıklar, tutanağı tutan) →
|
|||
|
|
savunma talebi ve savunma → karar (ceza türü, yürürlük/tebliğ, ücret kesintisi) → belgeler. Tamamı
|
|||
|
|
konfigürasyondur (Wizard + SQL); entity, migration ya da React kodu yoktur.
|
|||
|
|
|
|||
|
|
> Bu doküman modülün tek "nasıl çalışır" kaynağıdır. Modülde yapılan her değişiklik aynı commit'te
|
|||
|
|
> buraya yansır (`lowcode.instructions.md` §0.13).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. Amaç ve kapsam
|
|||
|
|
|
|||
|
|
| Persona | Ne yapar | Ekran |
|
|||
|
|
| --- | --- | --- |
|
|||
|
|
| İK / disiplin kurulu sekreteryası | Dosya açar, tutanağı yazar, savunma ister, savunmayı ve kararı işler, belgeleri yükler, dosyayı kapatır | Disiplin Dosyaları |
|
|||
|
|
| Yönetici (tutanağı tutan) | Olayı kaydeder | Disiplin Dosyaları |
|
|||
|
|
| İK yöneticisi | Ceza türü tanımlarını yönetir | İK › Tanımlar › Ceza Türleri |
|
|||
|
|
|
|||
|
|
Kapsam: kiracı (`IsTenant`). Satır süzmesi yoktur; disiplin kaydı hassas veridir, görünürlük yalnızca yetkiyle sınırlanır.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. Analiz ve kararlar
|
|||
|
|
|
|||
|
|
> Modül §0.13 kuralından önce üretildi; keşif turu kaydı yoktur. Kararlar artefaktlardan (wizard,
|
|||
|
|
> SQL, seed, commit `130e23bc` "Disiplin Dosyaları, Çalışma Takvimi") okunmuştur.
|
|||
|
|
|
|||
|
|
| Konu | Karar |
|
|||
|
|
| --- | --- |
|
|||
|
|
| Yol | Tek menü ekranı (dosya) + üç menüsüz alt form: Savunmalar, Kararlar, Belgeler |
|
|||
|
|
| Menü yeri | Dosya ekranı doğrudan `İnsan Kaynakları` kökünde; ceza türü İK › Tanımlar'da |
|
|||
|
|
| Dosya durumu | Open → AwaitingDefense → Decided → Closed; **elle** değiştirilir (Todo panosunda sürükleyerek ya da formdan). Savunma/karar girilmesi durumu otomatik değiştirmez |
|
|||
|
|
| Savunma süresi | Son savunma tarihi = talep tarihi + **2 gün** (formda önerilir, değiştirilebilir); talep tarihinden önce olamaz |
|
|||
|
|
| Ceza türü | Ağırlık (`Severity` 1–5) sırasıyla listelenir; karar ekranında yalnız aktif türler |
|
|||
|
|
| Ücret kesintisi | Kararda tutar olarak saklanır; bordroya aktarım yoktur |
|
|||
|
|
| Tanıklar | Çok değerli kullanıcı seçimi (`WitnessUserIds`, `dxTagBox`) |
|
|||
|
|
| Dosya numarası | `DSP-YYYY-00001` (kiracı + yıl bazında, insert sonrası SQL) |
|
|||
|
|
| Onay akışı, bildirim, rapor | Yok |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. Menü ve ekranlar
|
|||
|
|
|
|||
|
|
| Menü (TR / EN) | `ListFormCode` | Yer | Alt formlar | Görünümler | Widget'lar |
|
|||
|
|
| --- | --- | --- | --- | --- | --- |
|
|||
|
|
| Disiplin Dosyaları / Disciplinary Cases | `App.Hr.DisciplinaryCase` | `İnsan Kaynakları` (sıra 11, `FcHighPriority`) | `DisciplinaryDefense`, `DisciplinaryDecision`, `DisciplinaryFile` (`Id → CaseId`) | Grid, Card, Pivot, Chart, **Todo** | Toplam · Açık · Savunma Bekleniyor · Kapanan (Karara Bağlandı + Kapandı) |
|
|||
|
|
| Ceza Türleri / Penalty Types | `App.Hr.DisciplinaryPenaltyType` | `İnsan Kaynakları › Tanımlar` | — | Grid, Card, Pivot, Chart | — (tanım listesi) |
|
|||
|
|
|
|||
|
|
Todo panosu: başlık `Subject`, açıklama `IncidentDescription`, tarih `IncidentDate`, sütun sırası
|
|||
|
|
`Open, AwaitingDefense, Decided, Closed`.
|
|||
|
|
|
|||
|
|
Seed verisi (`data/App.Hr.DisciplinaryPenaltyType.json`): Sözlü Uyarı (1), Yazılı Uyarı (2), İhtar (3),
|
|||
|
|
Kınama (3), Ücret Kesintisi (4), Fesih (5).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. Veri modeli
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
AbpUsers ──< Hr_T_DisciplinaryCase ──< Hr_T_DisciplinaryDefense
|
|||
|
|
(UserId, ReportedById, ├──< Hr_T_DisciplinaryDecision >── Hr_T_DisciplinaryPenaltyType
|
|||
|
|
WitnessUserIds) └──< Hr_T_DisciplinaryFile >── Hr_T_DocumentType
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| Tablo | Önemli kolonlar |
|
|||
|
|
| --- | --- |
|
|||
|
|
| `Hr_T_DisciplinaryPenaltyType` | `Name`, `Severity`, `Description`, `IsActive` |
|
|||
|
|
| `Hr_T_DisciplinaryCase` | `CaseNo`, `UserId`, `DepartmentId`, `JobPositionId`, `IncidentDate`, `IncidentTime`, `IncidentPlace`, `ReportedById`, `Status`, `Subject`, `IncidentDescription` (HTML tutanak), `WitnessUserIds` |
|
|||
|
|
| `Hr_T_DisciplinaryDefense` | `CaseId`, `RequestDate`, `DueDate`, `ResponseDate`, `Status` (Requested/Submitted/NotSubmitted), `DefenseText` |
|
|||
|
|
| `Hr_T_DisciplinaryDecision` | `CaseId`, `DecisionDate`, `PenaltyTypeId`, `EffectiveDate`, `NotificationDate`, `DeductionAmount`, `Status` (Draft/Final), `DecisionText` |
|
|||
|
|
| `Hr_T_DisciplinaryFile` | `CaseId`, `DocumentTypeId`, `FileDate`, `FileName`, `FileContent` |
|
|||
|
|
|
|||
|
|
Tablo düzeyinde CHECK ya da tekil indeks yoktur; kurallar formdadır.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. İş kuralları ve hesaplar
|
|||
|
|
|
|||
|
|
| Yer | Kural |
|
|||
|
|
| --- | --- |
|
|||
|
|
| Dosya — yeni kayıt | Olay tarihi bugün, tutanağı tutan oturumdaki kullanıcı, durum `Open` |
|
|||
|
|
| Dosya — personel seçimi | Departman ve pozisyon kullanıcı kaydından kopyalanır (olay anındaki hâli saklanır) |
|
|||
|
|
| Dosya — insert sonrası | `CaseNo = 'DSP-' + yıl + '-' + 5 hane` (kiracı + yıl içinde `MAX + 1`, yalnız boşsa) |
|
|||
|
|
| Savunma — yeni kayıt | Talep tarihi bugün, durum `Requested`, son tarih talep + 2 gün |
|
|||
|
|
| Savunma — tarih kontrolü | Son tarih talep tarihinden önceyse uyarı + değişiklik geri alınır |
|
|||
|
|
| Karar — yeni kayıt | Karar tarihi bugün, durum `Draft` |
|
|||
|
|
| Belge — yeni kayıt | Tarih bugün |
|
|||
|
|
|
|||
|
|
Tavsiye edilen kullanım sırası: dosya `Open` → savunma istenince `AwaitingDefense` → karar
|
|||
|
|
`Final` olunca `Decided` → tebliğ ve belgeler tamamlanınca `Closed`. Bu sıra sistemce zorlanmaz.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. Yetki ve görünürlük
|
|||
|
|
|
|||
|
|
İzin grubu `App.Hr`, modül `Sas|Hr`. `App.Hr.DisciplinaryCase` kökü + `.Create/.Update/.Delete/.Export/.Import/.Note`;
|
|||
|
|
`DisciplinaryDefense`, `DisciplinaryDecision`, `DisciplinaryFile` onun altındadır. Ceza türü
|
|||
|
|
`App.Hr.Definitions` altındadır. Satır süzmesi yoktur. Hiçbir yetki role otomatik atanmaz.
|
|||
|
|
|
|||
|
|
| Rol | Yetkiler |
|
|||
|
|
| --- | --- |
|
|||
|
|
| İK disiplin sorumlusu | Dosya + üç alt form (tam) + ceza türü |
|
|||
|
|
| Tutanak tutan yönetici | `App.Hr.DisciplinaryCase` (+ `.Create`) — ancak bu yetki tüm dosyaları gösterir |
|
|||
|
|
|
|||
|
|
Disiplin verisi kişisel ve hassas veridir; okuma yetkisi dar tutulmalıdır.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. Entegrasyonlar
|
|||
|
|
|
|||
|
|
| Kaynak | Kullanım |
|
|||
|
|
| --- | --- |
|
|||
|
|
| `AbpUsers` | Personel, tutanağı tutan, tanıklar |
|
|||
|
|
| `Hr_T_Department`, `Hr_T_JobPosition` | Olay anındaki birim (Pivot kırılımı) |
|
|||
|
|
| `Hr_T_DocumentType` | Belge türü (ortak İK tanımı) |
|
|||
|
|
|
|||
|
|
Bildirim, onay akışı, rapor şablonu ya da bordro bağlantısı yoktur.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8. Akış örneği
|
|||
|
|
|
|||
|
|
1. Vardiya amiri **Disiplin Dosyaları**'nda yeni dosya açar: personel seçilir (departman/pozisyon
|
|||
|
|
dolar), olay tarihi/saati/yeri, konu, tutanak metni ve tanıklar girilir → `DSP-2026-00001`, durum Açık.
|
|||
|
|
2. İK **Savunmalar** sekmesine savunma talebi ekler; son tarih 2 gün sonrası önerilir; dosya panoda
|
|||
|
|
**Savunma Bekleniyor**'a çekilir.
|
|||
|
|
3. Personel savunmasını verince talep **Savunma Verildi** yapılır, metin ve tarih girilir; verilmezse **Savunma Verilmedi**.
|
|||
|
|
4. Kurul kararı **Kararlar** sekmesine girilir: ceza türü Yazılı Uyarı, yürürlük ve tebliğ tarihi, durum **Kesinleşti**; dosya **Karara Bağlandı**.
|
|||
|
|
5. İmzalı tutanak, savunma ve tebliğ belgesi **Belgeler** sekmesine yüklenir; dosya **Kapandı** yapılır.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 9. Sık sorulanlar
|
|||
|
|
|
|||
|
|
**Savunma/karar girdim, dosya durumu değişmedi.** Durum elle yönetilir; panoda sürükleyin ya da formdan seçin.
|
|||
|
|
|
|||
|
|
**Son savunma tarihi neden 2 gün sonrası?** Formdaki varsayılan öneridir; değiştirilebilir, yalnızca talep tarihinden önce olamaz.
|
|||
|
|
|
|||
|
|
**Ücret kesintisi bordroya yansıyor mu?** Hayır; karar kaydında bilgi olarak durur.
|
|||
|
|
|
|||
|
|
**Tutanak metni listede görünmüyor.** HTML alan listede gizlidir; detayda ve Todo kartında görünür.
|
|||
|
|
|
|||
|
|
**Bir yöneticinin yalnız kendi tuttuğu dosyaları görmesi mümkün mü?** Şu an değil (satır süzmesi yok). Gerekirse ayrı bir persona ekranı `DefaultFilter` (`"ReportedById" = '@USERID'`) ile açılır (Performans modülündeki kalıp).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 10. Dosyalar ve geri alma
|
|||
|
|
|
|||
|
|
| Dosya | İçerik |
|
|||
|
|
| --- | --- |
|
|||
|
|
| `configs/seeds/host/sql/object/Hr_T_Disciplinary{PenaltyType,Case,Defense,Decision,File}.sql` | Tablolar |
|
|||
|
|
| `configs/seeds/host/wizard/Disciplinary{PenaltyType,Case,Defense,Decision,File}.json` | 5 wizard |
|
|||
|
|
| `configs/seeds/host/data/App.Hr.DisciplinaryPenaltyType.json` | Ceza türleri |
|
|||
|
|
| `configs/seeds/host/data/App.Menus.Menu.json`, `Abp.Identity.Permissions.json`, `App.Languages.LanguageText.json` | Menü, yetki, dil satırları |
|
|||
|
|
|
|||
|
|
Kurulum: DB Migrate. Geri alma: Wizard Manager'dan alt formlar (`DisciplinaryDefense`, `DisciplinaryDecision`,
|
|||
|
|
`DisciplinaryFile`) önce, sonra `DisciplinaryCase` ve `DisciplinaryPenaltyType` silinir; tablolar
|
|||
|
|
yalnızca onayda seçilirse düşer.
|
|||
|
|
|
|||
|
|
<!-- module-doc:auto:begin -->
|
|||
|
|
## Ek — Ekran envanteri (otomatik)
|
|||
|
|
|
|||
|
|
> Wizard dosyalarından üretilir; deploy, silme, tasarımcı kaydı ve import'ta yenilenir. Elle düzenleme bir sonraki yenilemede kaybolur.
|
|||
|
|
|
|||
|
|
### Disiplin Dosyaları — `App.Hr.DisciplinaryCase`
|
|||
|
|
|
|||
|
|
| Özellik | Değer |
|
|||
|
|
| --- | --- |
|
|||
|
|
| Wizard | `wizard/DisciplinaryCase.json` |
|
|||
|
|
| Yol | Liste (Wizard) |
|
|||
|
|
| Menü | `App.Hr` › `App.Hr.DisciplinaryCase` (sıra 11) |
|
|||
|
|
| Yetki | `App.Hr.DisciplinaryCase` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
|
|||
|
|
| Açıklama | Disiplin Dosyaları — bir personel hakkındaki olay tutanağı ile başlayan disiplin süreci: savunma, karar ve belgeler tek dosyada. |
|
|||
|
|
| Kaynak | `Hr_T_DisciplinaryCase` · filtre `"IsDeleted" = 'false'` |
|
|||
|
|
| Görünümler | Grid, Card, Pivot, Chart, Todo (açılış grid) |
|
|||
|
|
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
|
|||
|
|
| Kapsam | Kiracı |
|
|||
|
|
| Alt formlar | `App.Hr.DisciplinaryDefense` (Id → CaseId), `App.Hr.DisciplinaryDecision` (Id → CaseId), `App.Hr.DisciplinaryFile` (Id → CaseId) |
|
|||
|
|
| Widget'lar | `App.Widget.Total`, `App.Hr.DisciplinaryCase.Widget.Open`, `App.Hr.DisciplinaryCase.Widget.AwaitingDefense`, `App.Hr.DisciplinaryCase.Widget.Closed` |
|
|||
|
|
| Todo | başlık `Subject`, durum `Status` (Open,AwaitingDefense,Decided,Closed) |
|
|||
|
|
| Komutlar | InsertAfter: SQL |
|
|||
|
|
| Form varsayılanları | IncidentDate=@DATE, ReportedById=@USERID, Status=Open |
|
|||
|
|
|
|||
|
|
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
|
|||
|
|
| --- | --- | --- | --- | --- | --- |
|
|||
|
|
| `CaseNo` | Dosya No | dxTextBox | | | |
|
|||
|
|
| `UserId` | Personel | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers · script |
|
|||
|
|
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
|
|||
|
|
| `JobPositionId` | Pozisyon | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
|
|||
|
|
| `IncidentDate` | Olay Tarihi | dxDateBox | ✓ | ✓ | |
|
|||
|
|
| `IncidentTime` | Olay Saati | dxDateBox | | ✓ | |
|
|||
|
|
| `IncidentPlace` | Olay Yeri | dxTextBox | | ✓ | |
|
|||
|
|
| `ReportedById` | Tutanağı Tutan | dxSelectBox | | ✓ | sorgu: AbpUsers |
|
|||
|
|
| `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Open, AwaitingDefense, Decided, Closed |
|
|||
|
|
| `Subject` | Konu | dxTextBox | ✓ | ✓ | |
|
|||
|
|
| `IncidentDescription` | Olay Tutanağı | dxHtmlEditor | ✓ | ✓ | |
|
|||
|
|
| `WitnessUserIds` | Tanıklar | dxTagBox | | ✓ | sorgu: AbpUsers |
|
|||
|
|
|
|||
|
|
### Ceza Türleri — `App.Hr.DisciplinaryPenaltyType`
|
|||
|
|
|
|||
|
|
| Özellik | Değer |
|
|||
|
|
| --- | --- |
|
|||
|
|
| Wizard | `wizard/DisciplinaryPenaltyType.json` |
|
|||
|
|
| Yol | Liste (Wizard) |
|
|||
|
|
| Menü | `App.Hr.Definitions` › `App.Hr.DisciplinaryPenaltyType` (sıra 12) |
|
|||
|
|
| Yetki | `App.Hr.DisciplinaryPenaltyType` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
|
|||
|
|
| Açıklama | Ceza Türleri — disiplin kararlarında verilebilecek cezalar ve ağırlıkları (sözlü uyarı, yazılı uyarı, ihtar, kınama, ücret kesintisi, fesih). |
|
|||
|
|
| Kaynak | `Hr_T_DisciplinaryPenaltyType` · filtre `"IsDeleted" = 'false'` |
|
|||
|
|
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
|
|||
|
|
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
|
|||
|
|
| Kapsam | Kiracı |
|
|||
|
|
| Form varsayılanları | Severity=1, IsActive=true |
|
|||
|
|
| Veri aynası | `data/App.Hr.DisciplinaryPenaltyType.json` |
|
|||
|
|
|
|||
|
|
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
|
|||
|
|
| --- | --- | --- | --- | --- | --- |
|
|||
|
|
| `Name` | Ad | dxTextBox | ✓ | ✓ | |
|
|||
|
|
| `Severity` | Ağırlık | dxNumberBox | ✓ | ✓ | |
|
|||
|
|
| `Description` | Açıklama | dxTextArea | | ✓ | |
|
|||
|
|
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
|
|||
|
|
|
|||
|
|
### Savunmalar — `App.Hr.DisciplinaryDefense`
|
|||
|
|
|
|||
|
|
| Özellik | Değer |
|
|||
|
|
| --- | --- |
|
|||
|
|
| Wizard | `wizard/DisciplinaryDefense.json` |
|
|||
|
|
| Yol | Liste (Wizard) |
|
|||
|
|
| Menü | Menüsüz (alt form) |
|
|||
|
|
| Yetki | `App.Hr.DisciplinaryDefense` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
|
|||
|
|
| Açıklama | Savunmalar — disiplin dosyası için personelden istenen savunma ve verilen cevap. |
|
|||
|
|
| Kaynak | `Hr_T_DisciplinaryDefense` · filtre `"IsDeleted" = 'false'` |
|
|||
|
|
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
|
|||
|
|
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
|
|||
|
|
| Kapsam | Kiracı |
|
|||
|
|
| Form varsayılanları | RequestDate=@DATE, Status=Requested |
|
|||
|
|
|
|||
|
|
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
|
|||
|
|
| --- | --- | --- | --- | --- | --- |
|
|||
|
|
| `CaseId` | Disiplin Dosyası | dxTextBox | | | |
|
|||
|
|
| `RequestDate` | Talep Tarihi | dxDateBox | ✓ | ✓ | script |
|
|||
|
|
| `DueDate` | Son Savunma Tarihi | dxDateBox | ✓ | ✓ | script |
|
|||
|
|
| `ResponseDate` | Savunma Tarihi | dxDateBox | | ✓ | |
|
|||
|
|
| `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Requested, Submitted, NotSubmitted |
|
|||
|
|
| `DefenseText` | Savunma Metni | dxTextArea | | ✓ | |
|
|||
|
|
|
|||
|
|
### Kararlar — `App.Hr.DisciplinaryDecision`
|
|||
|
|
|
|||
|
|
| Özellik | Değer |
|
|||
|
|
| --- | --- |
|
|||
|
|
| Wizard | `wizard/DisciplinaryDecision.json` |
|
|||
|
|
| Yol | Liste (Wizard) |
|
|||
|
|
| Menü | Menüsüz (alt form) |
|
|||
|
|
| Yetki | `App.Hr.DisciplinaryDecision` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
|
|||
|
|
| Açıklama | Kararlar — disiplin dosyası için verilen karar ve ceza. |
|
|||
|
|
| Kaynak | `Hr_T_DisciplinaryDecision` · filtre `"IsDeleted" = 'false'` |
|
|||
|
|
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
|
|||
|
|
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
|
|||
|
|
| Kapsam | Kiracı |
|
|||
|
|
| Form varsayılanları | DecisionDate=@DATE, Status=Draft |
|
|||
|
|
|
|||
|
|
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
|
|||
|
|
| --- | --- | --- | --- | --- | --- |
|
|||
|
|
| `CaseId` | Disiplin Dosyası | dxTextBox | | | |
|
|||
|
|
| `DecisionDate` | Karar Tarihi | dxDateBox | ✓ | ✓ | |
|
|||
|
|
| `PenaltyTypeId` | Ceza Türü | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_DisciplinaryPenaltyType |
|
|||
|
|
| `EffectiveDate` | Yürürlük Tarihi | dxDateBox | | ✓ | |
|
|||
|
|
| `NotificationDate` | Tebliğ Tarihi | dxDateBox | | ✓ | |
|
|||
|
|
| `DeductionAmount` | Kesinti Tutarı | dxNumberBox | | ✓ | |
|
|||
|
|
| `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Draft, Final |
|
|||
|
|
| `DecisionText` | Karar Metni | dxTextArea | | ✓ | |
|
|||
|
|
|
|||
|
|
### Belgeler — `App.Hr.DisciplinaryFile`
|
|||
|
|
|
|||
|
|
| Özellik | Değer |
|
|||
|
|
| --- | --- |
|
|||
|
|
| Wizard | `wizard/DisciplinaryFile.json` |
|
|||
|
|
| Yol | Liste (Wizard) |
|
|||
|
|
| Menü | Menüsüz (alt form) |
|
|||
|
|
| Yetki | `App.Hr.DisciplinaryFile` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
|
|||
|
|
| Açıklama | Disiplin Belgeleri — dosyaya ait imzalı tutanak, savunma, tebliğ gibi belgeler. |
|
|||
|
|
| Kaynak | `Hr_T_DisciplinaryFile` · filtre `"IsDeleted" = 'false'` |
|
|||
|
|
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
|
|||
|
|
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
|
|||
|
|
| Kapsam | Kiracı |
|
|||
|
|
| Form varsayılanları | FileDate=@DATE |
|
|||
|
|
|
|||
|
|
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
|
|||
|
|
| --- | --- | --- | --- | --- | --- |
|
|||
|
|
| `CaseId` | Disiplin Dosyası | dxTextBox | | | |
|
|||
|
|
| `DocumentTypeId` | Dosya Türü | dxSelectBox | | ✓ | sorgu: Hr_T_DocumentType |
|
|||
|
|
| `FileDate` | Tarih | dxDateBox | ✓ | ✓ | |
|
|||
|
|
| `FileName` | Dosya Adı | dxTextBox | ✓ | ✓ | |
|
|||
|
|
| `FileContent` | Dosya | dxImageUpload | ✓ | ✓ | |
|
|||
|
|
|
|||
|
|
<!-- module-doc:auto:end -->
|