2026-10-07 08:17:46 +00:00
# İnsan Kaynakları (`App.Hr`)
> Menünün altı ndaki her dal bu dosyada bir bölümdür (`module-doc:section`); dosya ve bölümler ilk deploy'da otomatik açı lı r. `module-doc:todo` işaretli alt bölümleri modülü üreten kişi ya da AI doldurur (`lowcode.instructions.md` §0.13); MCP ile üretimde talep bu bölümler doldurulmadan Testing'e alı namaz. "Ek — Ekran envanteri" bölümü wizard dosyaları ndan üretilir, elle düzenlenmez.
<!-- module - doc:section App.Hr.Definitions -->
## Tanı mlamalar (`App.Hr.Definitions`)
İK modüllerinin ortak sözlükleri. Bu doküman iki işi görür: (1) Tanı mlamalar menüsünün **dizinidir**
— her tanı mı n hangi modüle ait olduğunu ve nerede kullanı ldı ğı nı gösterir; (2) belirli bir modüle ait
olmayan genel tanı mları (kurum doktoru, yeterlilik belgesi, hastane, hastane bölümü, evrak türü, izin
türü, masraf türü, yan hak türü) anlatı r.
> 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. Dizin
`İnsan Kaynakları › Tanı mlamalar` (`App.Hr.Definitions`, ikon `FcFilingCabinet` )
| Sı ra | Menü | `ListFormCode` | Kaynak | Ayrı ntı |
| --- | --- | --- | --- | --- |
| 1 | Departmanlar | `App.Hr.Department` | Entity + seeder | **Organizasyon ve Yetkinlik** bölümü |
| 2 | Pozisyonlar | `App.Hr.JobPosition` | Entity + seeder | **Organizasyon ve Yetkinlik** bölümü |
| 3 | Yetenek Tipleri | `App.Hr.SkillType` | Entity + seeder | **Organizasyon ve Yetkinlik** bölümü |
| 4 | Yeterlilik Belgeleri | `App.Hr.Certificate` | Wizard | bu doküman |
| 5 | Evrak Türleri | `App.Hr.DocumentType` | Wizard | bu doküman |
| 6 | Aday Kaynakları | `App.Hr.CandidateSource` | Wizard | **İşe Alı m** bölümü |
| 7 | Ret Sebepleri | `App.Hr.RejectionReason` | Wizard | **İşe Alı m** bölümü |
| 8 | Değerlendirme Kriterleri | `App.Hr.EvaluationCriterion` | Wizard | **İşe Alı m** bölümü |
| 9 | Masraf Türleri | `App.Hr.ExpenseType` | Wizard | bu doküman |
| 10 | Yan Hak Türleri | `App.Hr.BenefitType` | Wizard | bu doküman |
| 11 | Vardiyalar | `App.Hr.Shift` | Wizard | **Çalı şma Takvimi ve Vardiyalar** bölümü · **Puantaj ve Devam Takibi** bölümü |
| 12 | İzin Türleri | `App.Hr.LeaveType` | Wizard | bu doküman |
| 13 | Kurum Doktorları | `App.Hr.Doctor` | Wizard | bu bölüm · **Sağlı k Kartları ** bölümü |
| 14 | Hastaneler | `App.Hr.Hospital` | Wizard | bu bölüm · **Sağlı k Kartları ** bölümü |
| 15 | Hastane Bölümleri | `App.Hr.HospitalDepartment` | Wizard | bu bölüm · **Sağlı k Kartları ** bölümü |
| 16 | Performans Dereceleri | `App.Hr.PerformanceRating` | Wizard | **Performans Yönetimi** bölümü |
| 17 | Ceza Türleri | `App.Hr.DisciplinaryPenaltyType` | Wizard | **Disiplin Dosyaları ** bölümü |
Tanı mlamalar dı şı nda duran tanı mlar: Eğitim tipi/konusu → **Eğitimler** bölümü; araç
belgesi/masrafı /gidilecek yer → **Araçlar** bölümü (her alt menüde tanı m ekranları en üstte);
çalı şma takvimi → **Çalı şma Takvimi ve Vardiyalar** bölümü.
Sı ra modül akı şı nı izler: organizasyon → işe alı m → zaman (vardiya, izin) → sağlı k → performans → disiplin.
İK menüsünün kök sı rası : Tanı mlamalar · Organizasyon Şeması · İşe Alı m · Çalı şma Takvimi · İzin Yönetimi ·
Puantaj ve Devam Takibi · Sağlı k Kartları · Eğitim · Performans · Disiplin Dosyaları · Araçlar · Ziyaretçiler ·
Olay Günlüğü · Intranet. Yetki ağacı (`AbpPermissions.Order`) aynı sı rayı izler; menüsüz çalı şan/yönetici
yetkileri (`MyLeaveRequest`, `MyTimesheet` , `MyPerformanceReview` …) modüllerinin hemen ardı ndadı r.
---
### 2. Analiz ve kararlar (genel tanı mlar)
> §0.13 kuralı ndan önce üretildiler; keşif turu kaydı yoktur. Kararlar wizard ve seed dosyaları ndan okunmuştur.
| Konu | Karar |
| --- | --- |
| Yol | Her tanı m tek Wizard liste ekranı ; veri seed dosyası na **aynalanı r** (`SeedFilePath = data/App.Hr.{Kod}.json`, ekle/güncelle/sil senkron). Ekrandan yapı lan değişiklik dosyaya yazı lı r, DB sı fı rlanı nca geri gelir |
| Aktif/Pasif | Hepsinde `IsActive` (varsayı lan aktif); lookup'lar çoğunlukla yalnı z aktifleri listeler |
| Kod alanı | İzin, masraf ve yan hak türlerinde iş kodu (`Code`, ör. `Annual` , `Meal` ) ayrı ca tutulur; yan hak kodu teklifte saklanan değerdir |
| Hazı rlı k tanı mları | İzin türü ve masraf türü **henüz bir talep ekranı na bağlı değildir** — ileride izin/masraf talep ekranları nı n (onaylı talep kalı bı , `lowcode.instructions.md` §10.7) kaynağı olmak üzere tanı mlanmı ştı r. Hastane ve hastane bölümü de şu an kullanı lmı yor |
---
### 3. Ekranlar
Hepsi Grid, Card, Pivot, Chart görünümlüdür.
| Ekran | Alanlar | Widget'lar | Seed |
| --- | --- | --- | --- |
| Kurum Doktorları | Ad soyad*, diploma no/tarihi, işyeri hekimi belge no/tarihi, T.C. kimlik no, aktif | Toplam · Aktif · Pasif | 1 |
| Yeterlilik Belgeleri | Belge adı *, aktif | Toplam · Aktif · Pasif | 16 (operatör belgeleri, kaynakçı , SRC 4, forklift, mezuniyet belgeleri, çı raklı k-ustalı k…) |
| Hastaneler | Kurum adı *, aktif | Toplam · Aktif · Pasif | 45 |
| Hastane Bölümleri | Bölüm adı *, aktif | Toplam · Aktif · Pasif | 31 |
| Evrak Türleri | Dosya grubu* (Genel / Özlük Evrakları / Sağlı k), dosya türü*, zorunlu, aktif | Toplam · Aktif · Pasif · Zorunlu | 48 |
| İzin Türleri | Kod*, ad*, cinsiyet* (All/Male/Female), yı llı k en fazla gün, ücretli, yı llı k izinden düşer, belge gerekir, yarı m gün kullanı labilir, bakiye aşı lı rsa (Engelle/Uyar), aktif | Toplam · Ücretli · Ücretsiz | 9 (Yı llı k, Mazeret, Ücretsiz, Hastalı k, Doğum 112 gün, Babalı k 5, Evlilik 3, Ölüm 3, Süt) |
| Masraf Türleri | Kod*, ad*, varsayı lan tutar, para birimi, gelir vergisine tabi, SGK'ya tabi, fiş/belge gerekir, aktif | Toplam · Aktif · Pasif | 7 (yemek, yol, konaklama, akaryakı t, telefon, temsil, kı rtasiye) |
| Yan Hak Türleri | Kod*, ad*, varsayı lan tutar, para birimi, gelir vergisine tabi, SGK'ya tabi, aktif | Toplam · Aktif · Pasif | 10 (yemek kartı , ulaşı m, özel sağlı k sigortası , BES, konut, şirket aracı , telefon, çocuk, yakacak, diğer) |
`*` zorunlu. Varsayı lanlar: izin türünde ücretli = evet, yı llı k izinden düşer/belge/yarı m gün = hayı r,
cinsiyet = Tümü; masraf ve yan hakta para birimi TRY, vergi/SGK = hayı r, masrafta fiş gerekir = evet.
---
### 4. Veri modeli
Tablolar `sql/object/Hr_T_{Doctor,Certificate,Hospital,HospitalDepartment,DocumentType,LeaveType,ExpenseType,BenefitType}.sql`
(entity yok); kiracı + audit + `IsActive` . Kolonlar §3'teki alanlarla aynı dı r. Tablo düzeyinde tekil
kı sı t yoktur.
---
### 5. İş kuralları
Hesap yoktur; yalnı z form varsayı lanları (§3). Seed dosyası aynalandı ğı için tanı mlar ekrandan
değiştirildiğinde `configs/seeds/data/App.Hr.*.json` dosyası da değişir — bu dosyalar commit'lenmelidir.
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` . Her tanı mı n kökü + `.Create/.Update/.Delete/.Export/.Import/.Note` ,
hepsi `App.Hr.Definitions` ara yetkisinin altı nda. Tanı m ekranları nı n yazma yetkisi İK'da kalmalı dı r;
lookup olarak okunmaları ekran yetkisi gerektirmez. Hiçbir yetki role otomatik atanmaz.
---
### 7. Entegrasyonlar (kim kullanı yor)
| Tanı m | Kullanan |
| --- | --- |
| Kurum Doktorları | Sağlı k Kartı (periyodik muayene, protokol, sonuç hekimleri) |
| Yeterlilik Belgeleri | Kullanı cı detayı › Eğitim ve Yetkinlik (`UserCertificate`), Performans gelişim planı (sertifika aksiyonu) |
| Evrak Türleri | Eğitim dosyaları , Disiplin belgeleri |
| Yan Hak Türleri | İşe Alı m › Teklif (`BenefitCodes`, kod ile) |
| İzin Türleri | İzin Yönetimi'nin tür kuralları (cinsiyet, yarı m gün, belge, yı llı k sı nı r, yı llı k izinden düşme, aşı m davranı şı ); `Sick` kodlu tür Sağlı k Kartı istirahatiyle eşlenir — İzin Yönetimi bölümü |
| Hastaneler, Hastane Bölümleri, Masraf Türleri | Henüz kullanan ekran yok |
---
### 8. Akı ş örneği
1. İK yeni bir yan hak tanı mlar: kod `Gym` , ad "Spor Salonu Üyeliği", varsayı lan tutar 1.500 TRY, gelir vergisine tabi.
2. Kayı t `data/App.Hr.BenefitType.json` dosyası na da yazı lı r.
3. İşe Alı m › Teklif formundaki **Yan Haklar** listesinde yeni hak seçilebilir.
---
### 9. Sı k sorulanlar
**Pasif yaptı ğı m tanı m listelerden kayboldu.** Lookup'lar yalnı z aktif kayı tları listeler; eski kayı tlarda değer korunur.
**İzin talebi nereden girilir?** Henüz izin/masraf talep ekranı yoktur; türler tanı m olarak hazı rdı r.
**Evrak Türleri "özlük dosyası " diyor ama özlük dosyası ekranı yok.** Doğru; türler şu an eğitim ve disiplin belgelerinde kullanı lı r.
---
### 10. Dosyalar
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/sql/object/Hr_T_{Doctor,Certificate,Hospital,HospitalDepartment,DocumentType,LeaveType,ExpenseType,BenefitType}.sql` | Tablolar |
| `configs/seeds/wizard/{Doctor,Certificate,Hospital,HospitalDepartment,DocumentType,LeaveType,ExpenseType,BenefitType}.json` | 8 wizard |
| `configs/seeds/data/App.Hr.{Doctor,Certificate,Hospital,HospitalDepartment,DocumentType,LeaveType,ExpenseType,BenefitType}.json` | Aynalanan tanı m verisi |
<!-- module - doc:section App.Hr.OrgChart -->
## Organizasyon ve Yetkinlik (Departman, Pozisyon, Organizasyon Şeması , Yetenek Tipleri)
Şirketin organizasyon iskeleti ve yetkinlik sözlüğü: şubeye bağlı departman ağacı , departmana bağlı
pozisyon ağacı , bunları n görsel organizasyon şeması ve yetenek tipi → yetenek → seviye sözlüğü.
Çalı şanı n departman/pozisyon/işe giriş/vardiya bilgileri ve yetkinlikleri kullanı cı kaydı nda tutulur.
Diğer bütün İK modülleri (İşe Alı m, Eğitim, Performans, Disiplin, Sağlı k Kartı …) bu tanı mları lookup
olarak kullanı r. Bu bölüm **entity + C# seeder** ile kuruludur (wizard değil); Organizasyon Şeması
özel bir React sayfası dı r.
> 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 | Departman ve pozisyon ağacı nı , yetenek sözlüğünü yönetir | İK › Tanı mlamalar › Departmanlar · Pozisyonlar · Yetenek Tipleri |
| İK / sistem yöneticisi | Çalı şanı n departman, pozisyon, işe giriş, vardiya, yetkinlik ve dil bilgilerini girer | Kimlik › Kullanı cı lar › detay (İş Bilgileri, Eğitim ve Yetkinlik sekmeleri) |
| Tüm kullanı cı lar (yetkili) | Organizasyonu departman ya da pozisyon bazı nda görür, JPG olarak dı şa aktarı r | İK › Organizasyon Şeması |
Kapsam: kiracı . Departman ve pozisyon **şube bazlı dı r** (`BranchId` zorunlu); ekranlarda satı r süzmesi yoktur.
---
### 2. Analiz ve kararlar
> Bu bölüm §0.13 kuralı ndan önce üretildi; keşif turu kaydı yoktur. Kararlar koddan
> (`ListFormSeeder_Hr.cs`, entity'ler, `OrgChartAppService`, `OrgChart.tsx`) okunmuştur.
| Konu | Karar |
| --- | --- |
| Yol | Entity + `ListFormSeeder_Hr.cs` (migration'lı tablolar); şema için özel React sayfası + AppService |
| Departman | Ağaç (`ParentId`), şubeye bağlı ; varsayı lan görünüm **Tree** ; aynı şubede ad tekil |
| Pozisyon | Ağaç (`ParentId` = üst pozisyon), departmana ve şubeye bağlı ; varsayı lan görünüm **Tree** ; aynı departmanda ad tekil |
| Yönetici ilişkisi | Departmanda yönetici alanı **yoktur** ; hiyerarşi pozisyon ağacı ndan okunur |
2026-10-14 21:12:14 +00:00
| Şemada şube | Şema **şube kökünden** başlar (2026-10-14): her iki modda üstü olmayan departman/pozisyon kendi şubesinin (`BranchId`) düğümüne bağlanı r; yalnı zca altı nda kayı t olan şubeler düğüm olur (`OrgChartAppService.WithBranchRootsAsync`, `OrgChartNodeDto.NodeType` ). Şube kartı kullanı cı listesi taşı maz |
2026-10-07 08:17:46 +00:00
| Host şubesi | Host varsayı lan şubesi sabit kimlikle kurulur (`PlatformConsts.Branches.BranchIdDefaultValue = 1c125bf3-…`); seed departman/pozisyon satı rları buna bağlı dı r, kiracı şubeleri yeni GUID alı r |
| Admin varsayı lanı | Admin kullanı cı departman **Yönetim** , pozisyon **Genel Müdür** ile kurulur |
| Yetkinlik sözlüğü | Yetenek Tipi ekranı nı n iki alt formu: Seviyeler (ad + `Progress` 0– 100 kaydı rı cı + varsayı lan) ve Yetenekler |
| Çalı şan yetkinliği | İki ayrı ölçek: **diller** `Hr_T_SkillLevel` seviyesiyle (`UserLanguage`), **diğer yetkinlikler** sabit 1– 5 ile (`Adm_T_UserSkill`) |
| Tip adı bağı mlı lı ğı | Bazı lookup'lar tip adı nı sabit yazar (`'Languages'`, `'Technical Skills'` ) — bu tipler yeniden adlandı rı lmamalı dı r |
---
### 3. Menü ve ekranlar
| Menü (TR) | `ListFormCode` / rota | Yer | Görünüm | Alt formlar |
| --- | --- | --- | --- | --- |
| Yetenek Tipleri | `App.Hr.SkillType` | Tanı mlamalar (1) | Grid | `App.Hr.SkillLevel` , `App.Hr.Skill` (`Id → SkillTypeId`) |
| Departmanlar | `App.Hr.Department` | Tanı mlamalar (2) | **Tree** (`Id`/`ParentId`, tümü açı k) | — |
| Pozisyonlar | `App.Hr.JobPosition` | Tanı mlamalar (3) | **Tree** | — |
| Organizasyon Şeması | `/admin/organization` (`@/views/admin/hr/OrgChart`) | `İnsan Kaynakları ` (4) | Özel sayfa | — |
Bu ekranlarda widget yoktur ve veri seed dosyası na aynalanmaz (`SeedSync*` kapalı ).
**Organizasyon Şeması ** (`ui/src/views/admin/hr/OrgChart.tsx`):
2026-10-14 21:12:14 +00:00
- **Mod:** Departman ya da Pozisyon. İki modda da kök düğüm **şube**dir (`NodeType = Branch`, fabrika simgesi); departman/pozisyon ağacı şubesinin altı nda açı lı r.
2026-10-07 08:17:46 +00:00
- **Kullanı cı ları göster:** Açı k/kapalı seçilebilir.
- **Yakı nlaştı rma:** %30– 300 arası , Ctrl + tekerlek ile de.
- **Dı şa aktarma:** JPG olarak.
- **Kartlar:** Derinliğe göre renklenir, alt sayı sı ve aç/kapa düğmesi taşı r, sürüklenerek yeri değiştirilir (yer kaydedilmez).
- **Kullanı cı satı rı :** Avatar gösterir; üzerine gelince profil kartı açı lı r (unvan, departman, e-posta, telefon).
---
### 4. Veri modeli
```
Sas_T_Branch ──< Hr_T_Department ( ParentId ağacı ) ─ ─ < Hr_T_JobPosition ( ParentId ağacı )
▲
AbpUsers.DepartmentId / JobPositionId / HireDate / ShiftId ┘
Hr_T_SkillType ──< Hr_T_SkillLevel ( Progress , IsDefault )
└────────< Hr_T_Skill ─ ─ < Adm_T_UserSkill ( Level 1 – 5 )
└────< UserLanguage ( SkillLevelId )
```
| Tablo | Kolonlar | Kural |
| --- | --- | --- |
| `Hr_T_Department` | `BranchId` (zorunlu), `Name` (64), `ParentId` | `UX (TenantId, BranchId, Name)` |
| `Hr_T_JobPosition` | `BranchId` (zorunlu), `DepartmentId` (zorunlu, FK Restrict), `Name` (64), `ParentId` | `UX (TenantId, Name, DepartmentId)` |
| `Hr_T_SkillType` | `Name` (128) | `UX (TenantId, Name)` ; silinince yetenek/seviye kademeli silinir |
| `Hr_T_SkillLevel` | `SkillTypeId` , `Name` , `Progress` (int, 0), `IsDefault` | `UX (TenantId, SkillTypeId, Name)` |
| `Hr_T_Skill` | `SkillTypeId` , `Name` | `UX (TenantId, SkillTypeId, Name)` |
| `Adm_T_UserSkill` | `UserId` , `SkillId` , `Level` , `Note` (512) | `CHECK Level BETWEEN 1 AND 5` ; `UX (TenantId, UserId, SkillId)` |
| `AbpUsers` (genişletme) | `DepartmentId` , `JobPositionId` , `HireDate` , `ShiftId` , sözleşme/fesih/ehliyet alanları | `PlatformModuleExtensionConfigurator` , `AbpIdentityUserExtensions` |
Entity'ler: `Entities/Tenant/Hr/Definitions/{SkillType,Skill,SkillLevel,Department,JobPosition}.cs`
(`FullAuditedEntity< Guid > , IMultiTenant`); EF yapı landı rması `PlatformDbContext.cs` .
Seed (`configs/seeds/data/`):
| Dosya | İçerik |
| --- | --- |
| `App.Hr.Department.json` | Yönetim (kök) → Üretim, Satı ş, Finans (→ Muhasebe), Bilgi İşlem |
| `App.Hr.JobPosition.json` | Genel Müdür (kök) → BT, İhracat, İç Piyasa, Üretim, Finans müdürleri; Finans Müdürü → Muhasebe Müdürü → Muhasebe Şefi |
| `App.Hr.SkillType.json` | Languages, Soft Skills, Technical Skills |
| `App.Hr.Skill.json` | 31 yetenek: 21 dil, 3 soft skill, 7 teknik |
| `App.Hr.SkillLevel.json` | Diller C2 100 · C1 85 · B2 75 · B1 60 · A2 40 · A1 10 (varsayı lan); Soft Skills Expert 100 · Advanced 80 · Intermediate 50 · Elementary 25 · Beginner 15 (varsayı lan); **Technical Skills için seviye yok** |
---
### 5. İş kuralları
| Yer | Kural |
| --- | --- |
| Departman formu | Ad → üst departman → şube; şube değişince üst departman temizlenir; üst departman listesi şubeye göre süzülür |
| Pozisyon formu | Ad → üst pozisyon → şube → departman; şube değişince departman ve üst pozisyon, departman değişince üst pozisyon temizlenir. Üst pozisyon listesi seçilen departmanı n **ve üst departmanları nı n** pozisyonları + tüm kök pozisyonlardı r (`JobPositionFullValues`) |
| Seviye — yeni kayı t | `IsDefault = true` (tek varsayı lan zorlanmaz) |
| Kullanı cı — İş Bilgileri | Departman değişince pozisyon temizlenir, pozisyon listesi departmana göre süzülür; deneme süresi sonu işe girişten önce ya da 4 aydan sonra olamaz (`PlatformIdentityAppService`) |
| Şema — Departman modu | Her departman kartı nda o departmanı n **en üst pozisyonu** ve yalnı zca o pozisyondaki kullanı cı lar gösterilir (üst pozisyonu olmayan ya da üstü başka departmanda olan; ada göre ilk) |
| Şema — Pozisyon modu | Her pozisyon bir kart; o pozisyondaki tüm kullanı cı lar |
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` :
| Yetki | Üst | Alt yetkiler |
| --- | --- | --- |
| `App.Hr.SkillType` | `App.Hr.Definitions` | Create, Update, Delete, Export, Import, Note |
| `App.Hr.SkillLevel` , `App.Hr.Skill` | `App.Hr.Definitions` | Create, Update, Delete, Export, Import |
| `App.Hr.Department` , `App.Hr.JobPosition` | `App.Hr.Definitions` | Create, Update, Delete, Export, Import |
| `App.Hr.OrgChart` | grup kökü | — (menü ve rota bu yetkiyi ister) |
Çalı şanı n iş bilgileri ve yetkinlikleri kullanı cı ekranı nı n yetkileriyle (`AbpIdentity.Users.*`) düzenlenir.
Hiçbir yetki role otomatik atanmaz.
---
### 7. Entegrasyonlar (kim kullanı yor)
| Tanı m | Kullanan modüller |
| --- | --- |
| Departman / Pozisyon | İşe Alı m (talep, ilan, teklif), Eğitim katı lı mcı sı , Disiplin dosyası , Sağlı k Kartı listesi, Performans değerlendirmesi, kullanı cı ekranı , Organizasyon Şeması |
| Yetenek / Seviye | Aday yetkinlikleri, eğitimin kazandı rdı kları , Performans yetkinlik değerlendirmesi (seviye `Progress` = puan), kullanı cı dil ve yetkinlik listeleri |
| `Adm_T_UserSkill` | Performans Yönetimi tamamlanı nca yönetici seviyesini buraya yazar (bkz. Performans Yönetimi bölümü) |
| Vardiya (`ShiftId`) | Bkz. Çalı şma Takvimi ve Vardiyalar bölümü |
---
### 8. Akı ş örneği
1. İK **Departmanlar** 'a "Kalite" departmanı nı şube Merkez, üst departman Üretim olarak ekler (ağaçta Üretim'in altı nda görünür).
2. **Pozisyonlar** 'a "Kalite Şefi"ni departman Kalite, üst pozisyon Üretim Müdürü olarak ekler.
3. Kullanı cı detayı nı n **İş Bilgileri** sekmesinde çalı şanı n departmanı Kalite, pozisyonu Kalite Şefi, işe giriş tarihi ve vardiyası girilir; **Eğitim ve Yetkinlik** sekmesine İngilizce B2 ve "Kaynak Uzmanı 4/5" eklenir.
4. **Organizasyon Şeması ** Pozisyon modunda Kalite Şefi kartı Üretim Müdürü'nün altı nda, çalı şanla birlikte görünür; şema JPG olarak dı şa aktarı lı r.
---
### 9. Sı k sorulanlar ve bilinen sı nı rlar
**Departman yöneticisi nerede?** Yok; hiyerarşi pozisyon ağacı ndadı r. (Performans modülü bu yüzden yöneticiyi değerlendirme kaydı nda tutar.)
**Şemada departman kartı nda neden tüm çalı şanlar yok?** Departman modunda yalnı z en üst pozisyondakiler gösterilir; herkes için Pozisyon modunu kullanı n.
**Şemadaki kart yerleri kaydedilmiyor.** Sürükleme yalnı z görünümü değiştirir.
**Teknik yetenekler için seviye seçilemiyor.** Seed'de Technical Skills tipine seviye tanı mlı değil; kullanı cı yetkinliği 1– 5 ölçeğiyle girilir. Performans modülünde bu tipe seviye eklenmesi gerekir.
2026-10-14 19:26:03 +00:00
**"Languages" tipinin adı nı değiştirdim, dil listesi boşaldı .** Lookup'lar tip adı nı sabit kullanı r (`TenantLanguageSkillValues`, `TenantNonLanguageSkillValues` ).
2026-10-07 08:17:46 +00:00
Kontrol edilmeli (koddan tespit edilen tutarsı zlı klar):
- Organizasyon Şeması API'si (`api/app/org-chart`) yalnı z oturum ister, `App.Hr.OrgChart` yetkisini denetlemez; menü ve rota yetkiyle korunur.
- `BranchDepartmentValues` ve `JobPositionFullValues` lookup'ları nda açı k kiracı koşulu yoktur; `JobPositionFullValues` departmandan bağı msı z tüm kök pozisyonları da listeler.
- Yetenek alt formunun popup başlı ğı Seviye ekranı nı n anahtarı nı kullanı r (`ListFormSeeder_Hr.cs`).
- Yetenek Tipi/Seviye/Yetenek yetkileri `MultiTenancySide 2` , Departman/Pozisyon `3` 'tür.
- Bir tipte birden çok varsayı lan seviye işaretlenebilir.
---
### 10. Dosyalar
| Dosya | İçerik |
| --- | --- |
| `api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Hr.cs` | Beş ekranı n ListForm tanı mı |
| `api/src/Sozsoft.Platform.Domain/Entities/Tenant/Hr/Definitions/*.cs` | Entity'ler |
| `api/src/Sozsoft.Platform.Application/OrgChart/OrgChartAppService.cs` , `Application.Contracts/OrgChart/OrgChartDto.cs` | Şema API'si (`GET departments`, `GET job-positions` ) |
| `ui/src/views/admin/hr/OrgChart.tsx` , `ui/src/services/orgChart.service.ts` | Şema sayfası |
| `ui/src/views/admin/user-management/Details.tsx` , `EducationSkillsTab.tsx` | Kullanı cı iş bilgileri ve yetkinlik sekmeleri |
2026-10-17 18:51:10 +00:00
| `api/src/Sozsoft.Platform.Domain/LookupQueryValues.cs` | Şube/departman/pozisyon/yetenek lookup'ları |
2026-10-07 08:17:46 +00:00
| `configs/seeds/data/App.Hr.{Department,JobPosition,SkillType,Skill,SkillLevel}.json` | Seed |
| `configs/seeds/data/App.Menus.Routes.json` (`admin.hr.organization`) | Şema rotası |
Bu tablolar migration'lı dı r; ekranlar seeder'dan kurulduğu için Wizard Manager'dan silinmez.
<!-- module - doc:section App.Hr.Personnel -->
## Personel Kaydı (Kimlik › Kullanı cı lar › detay)
Çalı şanı n özlük kaydı ayrı bir İK ekranı nda değil, kullanı cı detay sayfası ndadı r
(`/admin/users/detail/:userId`): iletişim ve ek bilgiler, askerlik, engellilik, nüfus/kimlik, doğum ve
aile, yabancı uyruklu belgeleri, organizasyon (departman/pozisyon/vardiya), sözleşme ve deneme süresi,
işten çı kı ş, sürücü belgesi, eğitim geçmişi, yabancı diller, yetenekler, yeterlilik belgeleri, eş ve
çocuklar, acil durum kişileri, banka ve ücret bilgileri, yan haklar, iş deneyimi. (Sağlı k Kartı sekmesi
için bkz. **Sağlı k Kartları ** bölümü.) Tek değerli alanlar `AbpUsers` genişletme kolonları nda,
çok kayı tlı lar `Adm_T_User*` tabloları ndadı r; diğer İK modüllerinin hepsi çalı şanı buradan okur.
> 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 / özlük | Personelin bütün özlük, sözleşme, eğitim, aile ve mali bilgisini girer | Kimlik › Kullanı cı lar › Detay |
| Sistem yöneticisi | Kullanı cı yı açar; listede temel alanları (departman, pozisyon, cinsiyet, adres…) düzenler | Kimlik › Kullanı cı lar |
| Yönetici | Deneme süresi bitimine 15 gün kala bildirim alı r | Bildirimler |
Kapsam: kiracı . Rota yetkisi `AbpIdentity.Users.Update` .
---
### 2. Analiz ve kararlar
> §0.13 kuralı ndan önce üretildi; keşif turu kaydı yoktur. Kararlar koddan (`Details.tsx` ve sekme
> bileşenleri, `PlatformIdentityAppService`, `ListFormSeeder_Administration.cs`, entity'ler) okunmuştur.
| Konu | Karar |
| --- | --- |
| Yer | Ayrı "personel" tablosu yok; özlük = kullanı cı . Tek değerli alanlar ABP extra property olarak `AbpUsers` kolonları |
| Çok kayı tlı bilgiler | `Adm_T_User{WorkExperience,Education,Language,Skill,Certificate,FamilyMember,EmergencyContact,Benefit}` ; detay sekmelerinde gömülü liste (`App.IdentityManagement.*`), yeni satı rı n `UserId` 'si sayfa filtresinden dolar |
| Kaydetme | Her form sekmesi kendi formuyla bütün modeli `PUT /api/app/platform-identity/user` (`UpdateUserAsync`) ile gönderir; başka sekmede kaydedilmemiş değişiklik gitmez |
| Mali bilgiler | Ayrı DTO ve uç (`GetFinancialAsync` / `UpdateFinancialAsync` , `Users.Update` yetkisi) — intranet listelerine akan `UserInfoViewModel` 'de taşı nması n diye |
| Deneme süresi | İşe giriş ile işe giriş + **4 ay** arası nda olmalı (4857 s. İK md. 15; toplu sözleşmeyle 4 ay) — hem formda hem sunucuda |
| Koşullu alanlar | Tecil bitişi yalnı z "Tecilli"de, sözleşme bitişi yalnı z "Belirli Süreli"de, yabancı uyruklu bölümü yalnı z TR dı şı uyrukta, engellilik oranı /raporu yalnı z "Engelli"de **görünür** ; gizlenince değer silinmez |
| Ölçekler | Dil seviyesi `Hr_T_SkillLevel` ile, diğer yetenekler sabit 1– 5 ile (bkz. **Organizasyon ve Yetkinlik** bölümü) |
| Saklama biçimleri | Engellilik raporu ve avatar dı şı ndaki dosyalar base64 kolonda; ehliyet sı nı fları `|` ile birleştirilmiş metin; medeni durum ve eğitim düzeyi Türkçe anahtar |
---
### 3. Ekranlar ve sekmeler
| Sekme (TR) | İçerik | Kayı t |
| --- | --- | --- |
| Genel | İletişim (e-posta, ikinci e-posta, ad, soyad, telefon, ikinci telefon, kullanı cı tipi İç/Dı ş), ek bilgiler (ev adresi, uyruk, cinsiyet), askerlik (durum: Yapı ldı /Muaf/Tecilli/Yapı lmadı + tecil bitişi), avatar (kı rpma, ≤ 2 MB), engellilik (engelli, oran %, rapor PDF/JPG/PNG ≤ 5 MB) | `UpdateUserAsync` (+ avatar `UpdateAvatarAsync` ) |
| Kimlik Bilgileri | Nüfus cüzdanı (kimlik no, seri no, veriliş yeri/tarihi, il, ilçe, köy, cilt, aile sı ra, sı ra no), doğum ve aile (doğum yeri/tarihi, baba/anne adı , medeni durum Bekar/Evli/Boşanmı ş/Dul, evlenme tarihi), yabancı uyruklu (pasaport no/geçerlilik, çalı şma izni no/bitiş) | `UpdateUserAsync` |
| İş | Organizasyon (departman → pozisyon, sicil no, SGK no, vardiya grubu, PDKS kart no — sicil/kart no ve vardiya puantajı n kişi eşlemesi ve vardiyası dı r, Puantaj ve Devam Takibi bölümü), sözleşme (çalı şma şekli Tam/Yarı Zamanlı , sözleşme türü Belirsiz/Belirli, işe başlama, sözleşme bitişi, deneme süresi bitişi, kı dem başlangı cı ), işten çı kı ş (tarih, SGK çı kı ş kodu, açı klama), sürücü belgesi (sı nı flar çoklu M…G, no, veriliş, geçerlilik), iletişim kanalları (Rocket, Telegram) + **Daha Önce Çalı ştı ğı Yerler** listesi | `UpdateUserAsync` + `App.IdentityManagement.UserWorkExperience` |
| Eğitim ve Yetenekler | En yüksek eğitim seviyesi + **Eğitim Geçmişi** , **Yabancı Diller** , **Yetenekler** , **Yeterlilik Belgeleri** listeleri | `UpdateUserAsync` + 4 liste |
| Aile / Acil Durum | **Eş ve Çocuklar** , **Acil Durum Kişileri** listeleri | 2 liste |
| Finansal | Banka adı , IBAN; ücret tipi Aylı k/Günlük/Saatlik, brüt ücret, para birimi + **Yan Haklar** listesi | `UpdateFinancialAsync` + `App.IdentityManagement.UserBenefit` |
| Sağlı k Kartı | Bkz. **Sağlı k Kartları ** bölümü | — |
| Puantaj | Yı lı n puantaj kartları + Aylı k Puantaj, Günlük Puantaj, Günlük Hareketler listeleri; bkz. **Puantaj ve Devam Takibi** bölümü §3.4 | — |
| Eğitimler | Çalı şanı n eğitim katı lı mları (`App.Hr.TrainingParticipant`, `UserId` süzgeci); bkz. **Eğitimler** bölümü | — |
| Performans | Değerlendirmeler (`App.Hr.PerformanceReview`) ve gelişim planları (`App.Hr.DevelopmentPlan`), `EmployeeId` süzgeci; bkz. **Performans Yönetimi** bölümü | — |
| Disiplin | Disiplin dosyaları (`App.Hr.DisciplinaryCase`, `UserId` süzgeci); bkz. **Disiplin Dosyaları ** bölümü | — |
Gömülü listeler (hepsi menüsüz alt liste, `Adm_T_*` ):
| Liste | Alanlar | Kural |
| --- | --- | --- |
| `UserWorkExperience` | Firma*, iş kolu* (sektör), giriş*, çı kı ş, yaptı ğı iş (HTML) | Giriş tarihine göre azalan |
| `UserEducation` | Eğitim düzeyi* (İlkokul…Doktora), okul*, bölüm, başlangı ç, mezuniyet, mezun (varsayı lan evet) | — |
| `UserLanguage` | Dil* ("Languages" tipi yetenekler), seviye (dilin seviyeleri), not | Kullanı cı × dil tekil |
| `UserSkill` | Yetenek* (dil dı şı tipler), seviye* 1– 5 (Başlangı ç…Uzman, varsayı lan 3), not | `CHECK 1– 5` ; kullanı cı × yetenek tekil |
| `UserCertificate` | Belge* (`Hr_T_Certificate`), belge no, veren kurum, düzenleme, son kullanma, not | Son kullanmaya göre artan |
| `UserFamilyMember` | Yakı nlı k* (Eş/Çocuk), ad*, soyad, TC kimlik, doğum tarihi, çalı şma durumu (Çalı şı yor/Çalı şmı yor/Öğrenci/Emekli), sigorta kapsamı nda, yan hak kapsamı nda | — |
| `UserEmergencyContact` | Ad soyad*, yakı nlı k* (Eş, Anne/Baba, Kardeş, Çocuk, Akraba, Arkadaş, Diğer), telefon* | — |
| `UserBenefit` | Yan hak türü* (`Hr_T_BenefitType`, **kod** saklanı r), tutar, başlangı ç, bitiş, not | — |
Kullanı cı listesi (`AbpIdentity.Users`) popup'ı nda düzenlenen İK alanları : departman*, pozisyon*,
cinsiyet, ev adresi (+ avatar, e-posta, ad, soyad, tip, telefon, çalı şma saati). Diğer özlük alanları
listede gizli kolon olarak durur.
---
### 4. Veri modeli
| Yer | İçerik |
| --- | --- |
| `AbpUsers` genişletme kolonları | Bütün form sekmesi alanları ; sabitler `PlatformConsts.AbpIdentity.User.*` , erişim `AbpIdentityUserExtensions` , kolon tipleri `PlatformEfCoreEntityExtensionMappings` |
| `Adm_T_UserWorkExperience` | `CompanyName` , `SectorId` (FK Sector), `StartDate` , `EndDate` , `JobDescription` |
| `Adm_T_UserEducation` | `EducationLevel` , `SchoolName` , `Department` , `StartDate` , `EndDate` , `IsGraduated` |
| `Adm_T_UserLanguage` | `SkillId` (FK Skill), `SkillLevelId` (FK SkillLevel), `Note` |
| `Adm_T_UserSkill` | `SkillId` , `Level` (1– 5), `Note` |
| `Adm_T_UserCertificate` | `CertificateId` (`Hr_T_Certificate`, FK'siz), `CertificateNo` , `IssuedBy` , `IssueDate` , `ExpiryDate` , `Note` |
| `Adm_T_UserFamilyMember` | `Relationship` , `Name` , `Surname` , `IdentityNumber` , `BirthDate` , `EmploymentStatus` , `IsInsuranceCovered` , `IsBenefitCovered` |
| `Adm_T_UserEmergencyContact` | `Name` , `Relationship` , `PhoneNumber` |
| `Adm_T_UserBenefit` | `BenefitType` (kod), `Amount` , `StartDate` , `EndDate` , `Note` |
Entity'ler `Entities/Tenant/Administration/User*.cs` (`FullAuditedEntity< Guid > , IMultiTenant`), EF
yapı landı rması `PlatformDbContext.cs` .
---
### 5. İş kuralları
| Yer | Kural |
| --- | --- |
| Deneme süresi | `HireDate ≤ ProbationEndDate ≤ HireDate + 4 ay` ; formda gün bazı nda, sunucuda (`UpdateUserAsync`) tam zamanla |
| Departman değişimi | Pozisyon temizlenir; pozisyon listesi departmana göre süzülür |
| IBAN | Formda boşluk silinir, büyük harfe çevrilir, `^[A-Z]{2}\d{2}[A-Z0-9]{11,30}$` deseni; sunucu yalnı z normalleştirir |
| Engellilik raporu | ≤ 5 MB (yalnı z formda), base64 olarak kolonda |
| Avatar | `{userId}.jpg` avatar blob kabı na yazı lı r; boş gönderim siler |
| Deneme süresi hatı rlatması | `ProbationReminderWorker` günlük çalı şı r; aktif, çı kı şı olmayan ve deneme bitişi **bugün + 15 gün** olan kullanı cı lar için `DenemeSuresiBitiyor` bildirimi üretir (tip yoksa atlar) |
| Doğum günü | `BirthDate` intranet panosundaki "Bugün Doğanlar" kutusunu besler (bkz. **Intranet** bölümü) |
---
### 6. Yetki ve görünürlük
| İşlem | Yetki |
| --- | --- |
| Detay sayfası (rota), liste "Detay" butonu | `AbpIdentity.Users.Update` |
| Gömülü listeler | okuma `AbpIdentity.Users` ; ekle/güncelle/sil `AbpIdentity.Users.Update` (Yan Haklar alanları nda ekleme `Users.Create` ) |
| Mali bilgiler, avatar | `AbpIdentity.Users.Update` (sunucuda) |
| Kullanı cı listesi ekle/güncelle | `Users.Create` / `Users.Update` |
Özlük verisi kişisel veri, sağlı k ve engellilik verisi özel nitelikli kişisel veridir (KVKK). Kullanı cı
yönetimi yetkisi yalnı z İK ve sistem yöneticilerinde olmalı dı r.
**Kontrol edilmeli — güvenlik (koddan tespit edildi):**
- `PlatformIdentityAppService.GetByIdAsync` ve `UpdateUserAsync` yalnı z oturum ister (`[Authorize]`); `Users.Update` yalnı z arayüz rotası nda denetlenir. Oturum açmı ş herhangi bir kullanı cı API'yi doğrudan çağı rarak başka birinin özlük kaydı nı (engellilik raporu dahil) okuyup güncelleyebilir.
- Banka, IBAN ve ücret alanları `AbpIdentity.Users` listesinde gizli ama okunabilir/dı şa aktarı labilir kolon olarak durur; liste okuma yetkisi olan kullanı cı kolon seçiciyle görebilir.
- Intranet doğum günü listesine giden `UserInfoViewModel` kimlik no, SGK no ve sağlı k kartı alanları nı da taşı r.
---
### 7. Entegrasyonlar
| Kullanan | Okuduğu |
| --- | --- |
| Tüm İK modülleri | Çalı şan, departman, pozisyon |
| Organizasyon Şeması | Pozisyondaki kullanı cı lar |
| Vardiyalar / Olay Günlüğü | `ShiftId` |
| Yeterlilik Belgeleri, Yan Hak Türleri, Sektörler, SGK çı kı ş kodları , Para Birimleri | Lookup kaynakları |
| Performans Yönetimi | Tamamlanan değerlendirme `Adm_T_UserSkill` 'e yazar |
| İşe Alı m | İşe alı nan adayı n kaydı kullanı cı ya `UserId` ile bağlanı r |
| Intranet | Doğum günleri, kullanı cı kartları |
| Bildirimler | Deneme süresi hatı rlatması (`DenemeSuresiBitiyor`) |
---
### 8. Akı ş örneği
1. BT kullanı cı yı listeden açar (ad, e-posta, departman, pozisyon). İK **Detay** 'a girer.
2. **Kimlik Bilgileri** : nüfus ve aile bilgileri; **Genel** : adres, uyruk, askerlik, avatar.
3. **İş** : sicil/SGK no, vardiya, sözleşme türü Belirsiz, işe başlama 01.10, deneme süresi bitişi 01.12 (4 ayı aşarsa kayı t reddedilir); önceki iş yerleri listesi.
4. **Eğitim ve Yetenekler** : lisans mezuniyeti, İngilizce B2, "Kaynak Uzmanı 4", forklift belgesi.
5. **Aile / Acil Durum** : eş ve çocuk (sigorta kapsamı nda), acil durum kişisi.
6. **Finansal** : banka/IBAN, aylı k brüt ücret TRY; yemek kartı yan hakkı .
7. 15 Kası m'da yöneticilere deneme süresinin bitmek üzere olduğu bildirimi gider.
---
### 9. Sı k sorulanlar ve bilinen sı nı rlar
**Detayda e-postayı değiştirdim, kaydolmadı .** `UpdateUserAsync` e-postayı yazmaz; e-posta kullanı cı listesindeki düzenlemeden değişir.
**Başka sekmede yaptı ğı m değişiklik kayboldu.** Her sekme ayrı kaydedilir; sekme değiştirmeden önce kaydedin.
**Sözleşmeyi Belirsiz yaptı m, bitiş tarihi hâlâ kayı tlı .** Koşullu alanlar yalnı z gizlenir, değer silinmez.
**Pozisyon listede zorunlu, detayda değil.** Doğru; kullanı cı listesi popup'ı zorunlu tutar.
**Acil durum kişisinde ad kolonu "Doktor Adı Soyadı " görünüyor.** Alan başlı ğı yanlı ş dil anahtarı nı (`App.Listform.ListformField.FullName`) kullanı yor; düzeltilmeli.
**Aile üyelerindeki sigorta/yan hak işaretleri bir yere gidiyor mu?** Şu an bunları okuyan bir ekran/rapor bulunmadı .
---
### 10. Dosyalar
| Dosya | İçerik |
| --- | --- |
| `ui/src/views/admin/user-management/Details.tsx` , `EducationSkillsTab.tsx` , `FamilyEmergencyTab.tsx` , `FinancialTab.tsx` , `userFormFields.tsx` , `useUserFieldLookup.ts` | Detay sayfası ve sekmeler |
| `ui/src/views/admin/user-management/HrRecordsTab.tsx` , `hrRecordTabs.ts` | Eğitimler / Performans / Disiplin sekmeleri: İK ekranları çalı şana süzülmüş açı lı r; sekme, ekranları ndan birini görme yetkisi varsa çizilir. Yeni bir İK modülü sekmesi `HR_RECORD_TABS` 'a satı r eklemekle açı lı r |
| `api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs` | `GetByIdAsync` , `UpdateUserAsync` , `Get/UpdateFinancialAsync` , `UpdateAvatarAsync` |
| `api/src/Sozsoft.Platform.Domain/Extensions/AbpIdentityUserExtensions.cs` , `EntityFrameworkCore/PlatformEfCoreEntityExtensionMappings.cs` | Genişletme alanları |
| `api/src/Sozsoft.Platform.Domain/Entities/Tenant/Administration/User*.cs` | Çok kayı tlı entity'ler |
| `api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs` | `AbpIdentity.Users` ve `App.IdentityManagement.*` listeleri |
| `api/src/Sozsoft.Platform.Domain/BackgroundWorkers/ProbationReminderWorker.cs` | Deneme süresi hatı rlatması |
<!-- module - doc:section App.Hr.Recruitment claims=App.Hr.CandidateSource, App.Hr.RejectionReason, App.Hr.EvaluationCriterion -->
## İşe Alı m (`App.Hr.Recruitment`)
Kadro talebinden işe alı ma kadar uçtan uca süreç: onaylı kadro talebi → iş ilanı → aday havuzu
(CV, KVKK açı k rı zası ) → başvuru (aşama panosu) → mülakat (takvim, kriter ağı rlı klı puan) →
teklif (iç onay, teklif mektubu). Tamamı konfigürasyondur (Wizard + SQL + rapor şablonu); 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 |
| --- | --- | --- |
| Talep eden yönetici | Kadro talebi açar, onaya gönderir | Kadro Talepleri |
| Onaycı | Kadro talebini ve teklifi onaylar / reddeder | Kadro Talepleri · Teklifler (Grid Workflow butonları ) |
| İK / işe alı m uzmanı | İlan açar, aday ve başvuruları yönetir, mülakat planlar, teklif hazı rlar, aday kaydı nı personele bağlar | İlanlar · Adaylar · Başvurular · Mülakatlar · Teklifler |
| Mülakatçı | Kendisine atanan mülakatta kriter bazlı puan verir | Mülakatlar (+ bildirim) |
| İK yöneticisi | Aday kaynağı , ret sebebi, değerlendirme kriteri tanı mları nı yönetir | İK › Tanı mlar |
Kapsam: kiracı (`IsTenant`). Şube, kayı tta veri olarak tutulur (satı r süzmesi yoktur).
---
### 2. Analiz ve kararlar
> Modül §0.13 kuralı ndan önce üretildi; keşif turu kaydı yoktur. Aşağı daki kararlar üretilen
> artefaktlardan (wizard, SQL, seed, commit `16fd5df0` "İşe Alı m modülü") okunmuştur.
| Konu | Karar |
| --- | --- |
| Yol | Her adı m ayrı Wizard ekranı ; ilan ve aday ekranları nda başvuru alt formu, başvuruda mülakat ve teklif alt formu |
| Kadro talebi ve teklif onayı | **Grid Workflow** (`WorkflowDto`): Start → Approval (`Onay Bekliyor`) → Inform → End `Onaylandı ` / `Reddedildi` . Onaycı **düğümün `Approver` değeridir** (seed'de platform admin e-postası ); motor onaycı yı kayı ttaki alandan okumaz — ListForm › Workflow sekmesinden değiştirilir |
| İlan kaynağı | İlan yalnı zca **onaylı ** (`ApprovalStatus = 'Onaylandı '`) kadro talebinden açı lı r; şube/departman/pozisyon/adet/çalı şma şekli talepten `copy` ile dolar |
| Aday kimliği | E-posta kiracı içinde tekildir (filtreli unique index) |
| KVKK | Açı k rı za **zorunlu** : formda zorunlu alan + tabloda `CHECK (KvkkConsent = 1)` ; rı za tarihi/yöntemi/imzalı belge saklanı r; satı r butonu **KVKK Açı k Rı za Formu** raporunu açar |
| Başvuru | Aday × ilan çifti tekildir; aşama **Todo (kanban)** panosunda yönetilir |
| Aşama ilerlemesi | Mülakat eklenince `Interview` , teklif eklenince `Offer` , teklif `Accepted` olunca `Hired` — SQL ile, **geri gitmez** |
| Mülakat puanı | Kriter başı na 1– 5; `OverallScore = Σ(puan × kriter ağı rlı ğı ) / Σ ağı rlı k` ; başvurunun `AverageScore` 'u mülakatları n ortalaması |
| Mülakatçı bildirimi | Mülakat eklenince mülakatçı ya `IseAlimMulakatAtandi` bildirimi (kanallar `UiActivity` + `Mail` ) |
| Belge numaraları | `KT-YYYY-00001` (talep), `ILN-…` (ilan), `TKL-…` (teklif) — insert sonrası SQL, kiracı + yı l bazı nda |
| Personele dönüşüm | İşe alı nan adayı n kullanı cı (personel) kaydı nı **BT elle açar** ; İK aday kaydı nı `UserId` ile o kullanı cı ya bağlar (otomatik kullanı cı açı lmaz) |
| Kanban başlı ğı | `CandidateName` / `PostingTitle` başvuruya metin olarak kopyalanı r (Todo başlı ğı metin kolon ister) |
---
### 3. Menü ve ekranlar
`İnsan Kaynakları › İşe Alı m` (`App.Hr.Recruitment`, ikon `FcManager` )
| Sı ra | Menü (TR / EN) | `ListFormCode` | Alt formlar | Görünümler | Widget'lar |
| --- | --- | --- | --- | --- | --- |
| 1 | Kadro Talepleri / Staff Requests | `App.Hr.StaffRequest` | — | Grid, Card, Pivot, Chart | Toplam · Onay Bekliyor · Onaylanan · Onaylı kadro adedi (Σ Headcount) |
| 2 | İlanlar / Job Postings | `App.Hr.JobPosting` | `JobApplication` (`Id → JobPostingId`) | Grid, Card, Pivot, Chart | Toplam · Yayı nda · Taslak · Kapalı |
| 3 | Adaylar / Candidates | `App.Hr.Candidate` | `JobApplication` (`Id → CandidateId`) | Grid, Card, Pivot, Chart | Toplam · Aktif · Pasif · Personele Dönüşen |
| 4 | Başvurular / Applications | `App.Hr.JobApplication` | `Interview` , `JobOffer` (`Id → ApplicationId`) | Grid, Card, Pivot, Chart, **Todo** | — (alt form olarak da kullanı ldı ğı için yok) |
| 5 | Mülakatlar / Interviews | `App.Hr.Interview` | `InterviewScore` (`Id → InterviewId`, menüsüz) | Grid, Card, Pivot, Chart, **Scheduler** | — |
| 6 | Teklifler / Job Offers | `App.Hr.JobOffer` | — | Grid, Card, Pivot, Chart | — |
Tanı mlar `İnsan Kaynakları › Tanı mlar` (`App.Hr.Definitions`) altı nda, verileri seed dosyası yla aynalı :
| Menü | `ListFormCode` | Seed |
| --- | --- | --- |
| Aday Kaynakları | `App.Hr.CandidateSource` | 7 kayı t: LinkedIn, Kariyer.net, Yenibiris, Şirket Web Sitesi, Referans, Kariyer Fuarı , Doğrudan Başvuru |
| Ret Sebepleri | `App.Hr.RejectionReason` | 8 kayı t; `RejectedBy` = Company / Candidate |
| Değerlendirme Kriterleri | `App.Hr.EvaluationCriterion` | 6 kayı t (ağı rlı klı ): İletişim 1, Teknik Yetkinlik 2, Problem Çözme 1.5, Takı m Çalı şması 1, Motivasyon 1, Kurum Kültürüne Uyum 1 |
Satı r butonları (`DynamicReport`, `Raporlar` kategorisi):
| Ekran | Buton | Rapor şablonu | Görünürlük |
| --- | --- | --- | --- |
| Adaylar | KVKK Açı k Rı za Formu | `475c1ab4-4600-5ef2-a43e-1366ed89b0ed` | Her satı r |
| Teklifler | Teklif Mektubu | `80d38666-423d-5e1d-8766-01f2c46be768` | `ApprovalStatus === 'Onaylandı '` |
---
### 4. Veri modeli
```
Hr_T_StaffRequest ──< Hr_T_JobPosting ─ ─ < Hr_T_JobApplication > ── Hr_T_Candidate ──> AbpUsers (UserId, personel)
│
├──< Hr_T_Interview ─ ─ < Hr_T_InterviewScore > ── Hr_T_EvaluationCriterion
└──< Hr_T_JobOffer
```
| Tablo | Önemli kolonlar | Kural |
| --- | --- | --- |
| `Hr_T_StaffRequest` | `RequestNo` , `RequestDate` , `RequestedById` , `BranchId` → `DepartmentId` → `JobPositionId` (cascade), `Headcount` , `EmploymentType` , `ExpectedStartDate` , `Reason` (NewPosition/Replacement), `ReplacedUserId` , ücret aralı ğı + `CurrencyId` , `Qualifications` (HTML), onay alanları | `Reason ≠ Replacement` ise `ReplacedUserId` temizlenir (script) |
| `Hr_T_JobPosting` | `PostingNo` , `StaffRequestId` , `Title` , `Status` (Draft/Published/Closed/Cancelled), şube/departman/pozisyon, `Headcount` , `EmploymentType` , `WorkModel` (Office/Hybrid/Remote), `Location` , `PublishDate` , `ClosingDate` , `SourceIds` (yayı n kanalları , çok değerli), açı klama/nitelikler (HTML) | Başlı k boşsa pozisyon adı kopyalanı r |
| `Hr_T_Candidate` | Kişisel bilgiler, fotoğraf, ülke → şehir, eğitim (`EducationLevel`, okul, bölüm, mezuniyet), deneyim, ücret beklentisi, `SourceId` , `SkillIds` (`Hr_T_Skill`, çok değerli), `CvDocument` , `UserId` , KVKK alanları | `UX (TenantId, Email)` ; `CHECK (KvkkConsent = 1)` |
| `Hr_T_JobApplication` | `CandidateId` , `JobPostingId` , `CandidateName` , `PostingTitle` , `ApplicationDate` , `SourceId` , `OwnerUserId` , `AverageScore` , `Stage` , `RejectionReasonId` , `RejectionNote` , `SortOrder` | `UX (TenantId, CandidateId, JobPostingId)` ; aşama `Rejected` değilse ret sebebi/notu temizlenir |
| `Hr_T_Interview` | `ApplicationId` , `Title` , `InterviewType` (Phone/Video/FaceToFace/Technical/Hr), `InterviewerUserId` , `StartDate` , `EndDate` , `Location` , `MeetingUrl` , `Status` (Planned/Completed/Cancelled/NoShow), `Recommendation` (Hire/Hold/Reject), `OverallScore` | Bitiş boşsa başlangı ç + 1 saat (script) |
| `Hr_T_InterviewScore` | `InterviewId` , `CriterionId` , `Score` , `Comment` | `CHECK (Score BETWEEN 1 AND 5)` ; `UX (InterviewId, CriterionId)` |
| `Hr_T_JobOffer` | `OfferNo` , `ApplicationId` , `CandidateName` , `OfferDate` , `ValidUntil` , `StartDate` , `GrossSalary` + `CurrencyId` , `Status` (Draft/Sent/Accepted/Declined/Expired), `ResponseDate` , pozisyon bilgileri, `BenefitCodes` (`Hr_T_BenefitType`), onay alanları | `CHECK (GrossSalary >= 0)` ; durum Accepted/Declined olunca yanı t tarihi bugün (script) |
---
### 5. İş kuralları ve hesaplar
#### 5.1 Başvuru aşamaları
```
Applied → Screening → Interview → Offer → Hired
└──→ Rejected (her aşamadan, elle)
```
| Tetik | Etki (after-command SQL) |
| --- | --- |
| Mülakat eklendi | Başvuru `Applied` /`Screening` ise → `Interview` |
| Teklif eklendi | Başvuru `Applied` /`Screening`/`Interview` ise → `Offer` ; teklif zaten `Accepted` ise → `Hired` |
| Teklif güncellendi (`Accepted`) | Başvuru henüz `Hired` değilse → `Hired` |
| Elle | Panodan sürükleme ya da formdan her aşama seçilebilir |
Otomatik ilerleme yalnı zca ileri gider; geri almak elle yapı lı r.
#### 5.2 Puanlar
- `Interview.OverallScore = Σ(Score × Criterion.Weight) / Σ Weight` (silinmemiş puanlar).
- `JobApplication.AverageScore = AVG(Interview.OverallScore)` (puanı olan mülakatlar).
- Puan eklenince, güncellenince ya da silinince ikisi de yeniden hesaplanı r.
#### 5.3 Metin kopyaları
`CandidateName` , `PostingTitle` (başvuru), `Title` (mülakat = aday – ilan), `CandidateName`
(teklif) after-command ile yazı lı r. Aday, ilan ya da başvuru güncellendiğinde **tüm** değişmiş
kopyalar topluca düzeltilir (sorgu `@Id` ile değil fark koşuluyla çalı şı r).
#### 5.4 Numaratörler
`KT-` , `ILN-` , `TKL-` + yı l + 5 hane; kiracı ve yı l bazı nda `MAX + 1` . Numara yalnı zca boşsa yazı lı r.
#### 5.5 Onay akı şı (Kadro Talebi, Teklif)
Grid Workflow; durum `ApprovalStatus` , onaylayan `ApprovalUser` , tarih `ApprovalDate` , açı klama
`ApprovalDescription` . Onay/Ret butonları nı akı ş kendisi çizer. Onaycı düğümde sabittir
(`system@sozsoft.com` seed değeri) — gerçek onaycı ListForm › Workflow'dan girilmelidir.
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` . Yetki ağacı menüyü izler: `App.Hr.Recruitment` ara yetkisinin
altı nda her ekranı n kökü + `.Create/.Update/.Delete/.Export/.Import/.Note` ; `App.Hr.InterviewScore`
mülakat yetkisinin altı ndadı r. Tanı mlar `App.Hr.Definitions` altı ndadı r. Satı r süzmesi yoktur —
ekran yetkisi olan tüm kayı tları görür. Hiçbir yetki role otomatik atanmaz.
Önerilen dağı tı m:
| Rol | Yetkiler |
| --- | --- |
| Talep eden yöneticiler | `App.Hr.StaffRequest` (+ `.Create/.Update` ) |
| Mülakatçı lar | `App.Hr.Interview` (+ `.Update` ), `App.Hr.InterviewScore` (+ `.Create/.Update/.Delete` ) |
| İşe alı m uzmanı | `App.Hr.Recruitment` dalı nı n tamamı + üç tanı m ekranı |
| Onaycı | Onaylayacağı ekranı n kökü + `.Update` |
KVKK: aday verisi kişisel veridir; Adaylar ekranı nı n yetkisi yalnı zca işe alı m ekibine verilmelidir.
---
### 7. Entegrasyonlar
| Kaynak | Kullanı m |
| --- | --- |
| `Sas_T_Branch` , `Hr_T_Department` , `Hr_T_JobPosition` | Şube → departman → pozisyon cascade (talep, ilan, teklif) |
| `Sas_H_Currency` | Ücret para birimi (varsayı lan TRY) |
| `Sas_H_Country` , `Sas_H_City` | Aday adresi (ülke → şehir cascade) |
| `Hr_T_Skill` / `Hr_T_SkillType` | Aday yetkinlikleri (`SkillIds`) |
| `Hr_T_BenefitType` | Teklifteki yan haklar (`BenefitCodes`) |
| `AbpUsers` | Talep eden, ayrı lan personel, sorumlu, mülakatçı , personele dönüşen aday |
| Bildirimler | Tip `IseAlimMulakatAtandi` ; kurallar `Custom` + `UiActivity` /`Mail`; metin `App.Hr.Interview.Notification.{Subject,Message}` , yer tutucular `[Candidate]` , `[Posting]` , `[Date]` |
| Raporlar | KVKK Açı k Rı za Formu, Teklif Mektubu (`DynamicReport`) |
---
### 8. Akı ş örneği
1. Satı ş müdürü **Kadro Talepleri** 'nde "Satı ş Temsilcisi, 2 kişi, yeni pozisyon" talebini açar →
`KT-2026-00001` ; onaya gönderir, onaycı onaylar → `Onaylandı ` .
2. İK **İlanlar** 'da talebi seçer; şube/departman/pozisyon/adet dolar, başlı k pozisyon adı olur;
yayı n kanalları nı (LinkedIn, Kariyer.net) seçip durumu **Published** yapar → `ILN-2026-00001` .
3. Gelen adaylar **Adaylar** 'a CV ve KVKK rı zası yla girilir; KVKK formu satı r butonundan bası lı r.
4. İlanı n **Başvurular** sekmesinden aday eklenir (`Applied`); kanban panosunda **Screening** 'e çekilir.
5. Başvurunun **Mülakatlar** sekmesinden teknik mülakat planlanı r → başvuru `Interview` olur,
mülakatçı ya bildirim gider; mülakatçı kriterleri puanlar → genel ve ortalama puan hesaplanı r.
6. **Teklifler** 'de teklif hazı rlanı r → başvuru `Offer` ; teklif onaya gider, onaylanı nca
**Teklif Mektubu** bası lı r.
7. Aday kabul eder, teklif **Accepted** yapı lı r → başvuru `Hired` . BT kullanı cı yı açar, İK aday
kaydı nı n **Personel** alanı na bağlar ("Personele Dönüşen" kartı artar).
---
### 9. Sı k sorulanlar
**İlan açarken kadro talebi listede yok.** Yalnı zca onaylanmı ş (`ApprovalStatus = 'Onaylandı '`) talepler listelenir.
**Onay butonu kimde görünüyor?** Akı ş düğümündeki `Approver` 'da (seed'de admin). ListForm › Workflow'dan gerçek onaycı yı yazı n.
**Başvuru aşaması geri gitmedi.** Otomatik ilerleme yalnı z ileri gider; geri almayı panodan ya da formdan elle yapı n.
**Ret sebebi alanı temizlendi.** Ret sebebi ve notu yalnı zca `Rejected` aşaması nda tutulur.
**Aday kaydı kaydedilmiyor.** KVKK rı zası işaretli olmalı (tablo da zorlar) ve e-posta kiracı da tekil olmalı .
**Aynı aday aynı ilana ikinci kez eklenemiyor.** Aday × ilan tekildir.
**Mülakat puanı nası l hesaplanı yor?** Kriter ağı rlı klı ortalama (§5.2); ağı rlı klar İK › Tanı mlar › Değerlendirme Kriterleri'nden.
**İşe alı nan aday otomatik personel olmuyor mu?** Hayı r; kullanı cı yı BT açar, İK aday kaydı na bağlar.
---
### 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/sql/object/Hr_T_{StaffRequest,JobPosting,Candidate,JobApplication,Interview,InterviewScore,JobOffer,CandidateSource,RejectionReason,EvaluationCriterion}.sql` | Tablolar, CHECK ve tekil indeksler |
| `configs/seeds/wizard/{StaffRequest,JobPosting,Candidate,JobApplication,Interview,InterviewScore,JobOffer,CandidateSource,RejectionReason,EvaluationCriterion}.json` | 10 wizard |
| `configs/seeds/data/App.Hr.{CandidateSource,RejectionReason,EvaluationCriterion}.json` | Tanı m verisi |
| `configs/seeds/data/App.Reports.ReportTemplates.json` | KVKK formu ve teklif mektubu şablonları |
| `configs/seeds/data/App.Notifications.Notification{Types,Rules}.json` | `IseAlimMulakatAtandi` tipi ve 2 kuralı |
| `configs/seeds/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 wizard'lar silinir (alt formlar önce: `InterviewScore`
→ `Interview` /`JobOffer` → `JobApplication` → diğerleri); tablolar yalnı zca onayda seçilirse düşer.
Rapor şablonları ve bildirim satı rları elle kaldı rı lı r.
<!-- module - doc:section App.Hr.WorkCalendar claims=App.Hr.Shift -->
## Çalı şma Takvimi ve Vardiyalar (`App.Hr.WorkCalendar`, `App.Hr.Shift`)
Çalı şma zamanı nı n iki temel tanı mı : resmi tatil / yarı m gün takvimi (yı llı k tekrarlı ya da tek
seferlik) ve vardiya tanı mları (saat aralı ğı , mola, gece vardiyası ). Diğer modüller bu tanı mları
lookup olarak kullanı r. Tamamı konfigürasyondur (Wizard + seed); vardiya ayrı ca kullanı cı kaydı na
bağlanı r.
> 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 | Yı lı n tatil ve yarı m günlerini girer, takvim görünümünden kontrol eder | Çalı şma Takvimi |
| İK / üretim planlama | Vardiya tanı mları nı yönetir, çalı şanı vardiyaya bağlar | Vardiyalar · Kimlik › Kullanı cı lar |
Kapsam: kiracı (`IsTenant`). Şube kı rı lı mı yoktur — takvim kiracı nı n tamamı için geçerlidir.
---
### 2. Analiz ve kararlar
> Modüller §0.13 kuralı ndan önce üretildi; keşif turu kaydı yoktur. Kararlar artefaktlardan
> (wizard, seed, commit `130e23bc` "Disiplin Dosyaları , Çalı şma Takvimi") okunmuştur.
| Konu | Karar |
| --- | --- |
| Tatil tekrarı | Sabit tarihli resmi tatiller `RecurrenceRule = FREQ=YEARLY` ile **bir kez** girilir, her yı l tekrarlar; dini bayramlar ay takvimine bağlı olduğu için **her yı l ayrı ** satı rdı r (tekrar kuralı boş) |
| Gün türü | `Holiday` (tam gün tatil) / `HalfDay` (arife, yarı m gün) |
| Görünüm | Liste görünümlerine ek olarak **Scheduler** (takvim) görünümü; `AllDay` her zaman `true` |
| Vardiya saatleri | `StartTime` / `EndTime` `SS:dd` metin; çalı şma süresi elle girilir (otomatik hesap yok) |
| Gece vardiyası | Bayrak (`IsNightShift`) — sağlı k kartı ndaki "gece çalı şabilir" sonucuyla birlikte değerlendirilir, otomatik kontrol yoktur |
| Vardiya bağı | Kullanı cı kaydı nda `ShiftId` alanı (`LookupQueryValues.TenantShiftValues`: "Ad (başlangı ç-bitiş)") |
| Menü yeri | Çalı şma Takvimi `İnsan Kaynakları ` kökünde; Vardiyalar bir tanı m olduğu için `İnsan Kaynakları › Tanı mlamalar` altı nda (yetkisi de `App.Hr.Definitions` 'ı n altı ndadı r) |
---
### 3. Menü ve ekranlar
| Menü (TR / EN) | `ListFormCode` | Yer | Görünümler | Widget'lar |
| --- | --- | --- | --- | --- |
| Çalı şma Takvimi / Work Calendar | `App.Hr.WorkCalendar` | `İnsan Kaynakları ` (sı ra 4, `FcCalendar` ) | Grid, Card, Pivot, Chart, **Scheduler** | Toplam · Tatil · Yarı m Gün |
| Vardiyalar / Shifts | `App.Hr.Shift` | `İnsan Kaynakları › Tanı mlar` (sı ra 11, `FcClock` ) | Grid, Card, Pivot, Chart | Toplam · Aktif · Pasif |
Scheduler eşlemesi: metin `Name` , başlangı ç `StartDate` , bitiş `EndDate` , tüm gün `AllDay` ,
tekrar `RecurrenceRule` .
Seed verisi:
- Çalı şma takvimi, 16 satı r (`data/App.Hr.WorkCalendar.json`):
- Yı llı k tekrarlı tatiller: Yı lbaşı , 23 Nisan, 1 Mayı s, 19 Mayı s, 15 Temmuz, 30 Ağustos, 29 Ekim.
- Yı llı k tekrarlı yarı m gün: 28 Ekim arifesi.
- Yı la özel satı rlar: 2026 ve 2027 Ramazan/Kurban bayramları ve arifeleri.
- Vardiyalar, 3 satı r (`data/App.Hr.Shift.json`): Sabah 08:00– 16:00, Akşam 16:00– 00:00, Gece 00:00– 08:00 (gece vardiyası ).
---
### 4. Veri modeli
| Tablo | Kolonlar |
| --- | --- |
| `Hr_T_WorkCalendar` | `Name` , `StartDate` , `EndDate` , `DayType` (Holiday/HalfDay), `RecurrenceRule` (boş / `FREQ=YEARLY` ), `AllDay` , `IsActive` |
| `Hr_T_Shift` | `Name` , `StartTime` , `EndTime` , `BreakMinutes` , `LateToleranceMinutes` , `EarlyLeaveToleranceMinutes` , `WorkingHours` , `IsNightShift` , `IsActive` |
| `AbpUsers.ShiftId` | Çalı şanı n vardiyası (genişletme kolonu) |
Entity yoktur (wizard tabloları ); `sql/object/Hr_T_{WorkCalendar,Shift}.sql` .
---
### 5. İş kuralları
| Yer | Kural |
| --- | --- |
| Takvim — yeni kayı t | Gün türü `Holiday` , tekrar `FREQ=YEARLY` , tüm gün, aktif |
| Takvim — çok günlü tatil | Başlangı ç– bitiş aralı ğı olarak tek satı rda girilebilir |
| Vardiya — yeni kayı t | Gece vardiyası hayı r, aktif |
| Vardiya — toleranslar | Geç kalma / erken çı kı ş toleransı (dk); boşsa Ayarlar › İnsan Kaynakları › Puantaj'daki genel değer |
Takvim İzin Yönetimi'nin gün sayı sı nı (İzin Yönetimi bölümü), takvim ve vardiya Puantaj ve Devam Takibi'nin
gün tipini, vardiya saatini, molası nı ve toleransı nı (Puantaj ve Devam Takibi bölümü) besler.
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` . Her ekranı n kökü + `.Create/.Update/.Delete/.Export/.Import/.Note` .
Hiçbir yetki role otomatik atanmaz. Takvimin okunması tüm çalı şanlara açı labilir; düzenleme İK'da kalmalı dı r.
---
### 7. Entegrasyonlar
| Kullanan | Nası l |
| --- | --- |
| Kimlik › Kullanı cı lar | `ShiftId` alanı vardiya lookup'ı |
| Olay Günlüğü (`App.Hr.EventLog`) | Olay kaydı nda vardiya seçimi |
| Sağlı k Kartları | Vardiyalı / gece çalı şabilir sonucu (bilgi; vardiya tanı mı yla otomatik eşleşmez) |
| İzin Yönetimi | Takvim tatilleri izin gününden düşülür (`Hr_F_LeaveWorkDays`). Takvim satı rı eklenince/değişince/silinince denk gelen izinlerin gün sayı sı yeniden hesaplanı r (`Hr_S_WorkCalendarAfterSave`) |
| Puantaj ve Devam Takibi | Tatil → Resmî tatil, arife → yarı m vardiya (`Hr_F_WorkCalendarDayType`); vardiya saat/mola/tolerans → `Hr_V_AttendanceShift` . Takvim kaydı ilgili günleri hemen yeniden hesaplar (kapalı ay hariç); vardiya değişikliği gece işinde ya da Puantaj Dönemleri kaydı nda yansı r |
---
### 8. Akı ş örneği
1. Yı l başı nda İK **Çalı şma Takvimi** 'nde o yı lı n dini bayram satı rları nı ekler (sabit tatiller zaten yı llı k tekrarlı dı r) ve Scheduler görünümünde yı lı kontrol eder.
2. Üretim için **Vardiyalar** 'a "Hafta Sonu 08:00– 20:00, mola 60 dk, çalı şma 11 saat" eklenir.
3. Kullanı cı ekranı nda çalı şanları n **Vardiya** alanı güncellenir; Olay Günlüğü kayı tları nda da bu vardiyalar seçilir.
---
### 9. Sı k sorulanlar ve bilinen sı nı rlar
**Ramazan Bayramı gelecek yı l görünmüyor.** Dini bayramlar yı la özeldir; her yı l yeni satı r girilir.
**Çalı şma süresi neden hesaplanmı yor?** Vardiya saatleri metindir, süre elle girilir.
**Takvim izin/puantaj hesabı nı etkiliyor mu?** Evet: izin gün sayı sı ndan tatiller düşülür, puantajda tatil
günü Resmî tatil, arife yarı m gün sayı lı r. Takvim satı rı kaydedilince denk gelen günlerin izin gün sayı sı ve
puantajı hemen yeniden hesaplanı r (yı llı k tekrarlı satı rda bu yı l ve gelecek yı l; kapalı puantaj ayı yazı lmaz).
Bir satı rı n tarihi değiştirildiğinde eski tarihlerin puantajı gece işinde ya da Puantaj Dönemleri kaydı nda düzelir.
**Vardiyalar nerede?** `İnsan Kaynakları › Tanı mlamalar` altı nda (sı ra 11); menü satı rı , wizard dosyası ve
yetki ağacı aynı yeri gösterir.
---
### 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/sql/object/Hr_T_{WorkCalendar,Shift}.sql` | Tablolar |
| `configs/seeds/wizard/{WorkCalendar,Shift}.json` | 2 wizard |
| `configs/seeds/data/App.Hr.{WorkCalendar,Shift}.json` | Takvim ve vardiya verisi (ekran kayı tları dosyaya aynalanı r) |
2026-10-17 18:51:10 +00:00
| `api/src/Sozsoft.Platform.Domain/LookupQueryValues.cs` (`TenantShiftValues`) | Kullanı cı ekranı ndaki vardiya lookup'ı |
2026-10-07 08:17:46 +00:00
Geri alma: Wizard Manager'dan silinir; vardiya tablosu kullanı cı ekranı nı n lookup'ı tarafı ndan okunduğu için düşürülmemelidir.
<!-- module - doc:section App.Hr.Leave -->
## İzin Yönetimi (`App.Hr.Leave`)
İzin talebi, iki aşamalı onay (departman müdürü → İK), yı llı k izin bakiyesi ve rapor (istirahat)
eşlemesi. **İnsan Kaynakları menüsü yalnı z İK içindir** : tüm talepleri ve bakiyeleri İK izler.
Çalı şan ve müdür izinle ilgili her şeyi **Intranet › Dashboard** 'daki widget'lardan yapar. Wizard
ekranları , SQL nesneleri ve custom component widget'ları yla kuruludur. Çerçeve dı şı nda iki ek
vardı r (kullanı cı onayı yla): Grid Workflow'da kayı ttan okunan onaycı (`@Kolon`) ve kullanı cı
detayı ndaki **İzinler** sekmesi.
> 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 |
| --- | --- | --- |
| Çalı şan | Bakiyesini izler, izin talebi açar, taleplerinin onay durumunu takip eder, henüz karar verilmemiş talebini düzeltir/siler | Intranet panosu: **İzinlerim** widget'ı → İzin Talebi Oluştur · Taleplerim · Bakiyem · Profil › İzinlerim (bakiye + talepler salt okunur, İzin Talebi Oluştur) |
| Departman müdürü | Departmanı nı n taleplerini onaylar/reddeder | Intranet panosu: **Ekibimin İzinleri** widget'ı → Ekibimin İzin Talepleri |
| İK | Tüm talepleri izler, ikinci onayı verir, çalı şan adı na talep girer, bakiyeleri izler, açı lı ş/devir düzeltmesi girer, çalı şma günlerini ve kademeleri ayarlar | İK › İzin Yönetimi › İzin Talepleri · İzin Bakiyeleri · Ayarlar › İnsan Kaynakları › İzin · Kullanı cı detayı › İzinler |
| Sağlı k birimi | Raporu Sağlı k Kartı 'na girer; kayı t izin listesine onaylı düşer | İK › Sağlı k Kartları › İstirahat Raporları |
Kapsam: kiracı (`IsTenant`). Şube kı rı lı mı yoktur.
---
### 2. Analiz ve kararlar
#### 2.1 Talep
> İnsan Kaynakları › İzin Yönetimi. Kullanı cı Intranet Dashboard'dan kendi bakiye raporunu izler,
> izin talebi oluşturur, bir butonla taleplerini ve onay durumları nı takip eder (Performansı m
> widget'ı ndaki Değerlendirmelerim gibi). İzin türüne göre gerekli alanlar doldurulur; bakiye
> yetmezse talep engellenir veya uyarı verilir; aynı tarihlerde çakı şan talep oluşturulamaz.
> Sağlı k Kartı › İstirahatler ile Rapor türündeki izin tek kayı ttı r. İzin bakiyesi kullanı cı
> kartı nda gösterilir. Alanlar: izin türü, başlangı ç/bitiş tarihi ve saati, yarı m gün, gün sayı sı
> (otomatik), açı klama, ek belge, durum. Yı llı k hak çalı şma yı lı na göre hesaplanı r. Onay önce
> departman müdürü (İş Pozisyonları 'ndaki departman müdürü), sonra İK. Talep gelince yöneticiye
> bildirim gider. İK menüsü yalnı z İK kullanı r; widget'lar Aktif Anketler'in altı na (sol kolon).
#### 2.2 Depodan okunanlar (sorulmadı )
- İzin türleri `Hr_T_LeaveType` (İK › Tanı mlamalar): cinsiyet, yı llı k en fazla gün, ücretli, yı llı k izinden düşer, belge gerekir, yarı m gün.
- Rapor kayı tları `Adm_T_UserSickLeave` ; iki ekran kullanı r: Sağlı k Kartı (`App.Hr.HealthCardSickLeave`) ve kullanı cı detayı (`App.IdentityManagement.UserSickLeave`).
- Kı dem `AbpUsers.SeniorityStartDate` (boşsa `HireDate` ), doğum `BirthDate` , cinsiyet `Gender` , departman/pozisyon `DepartmentId` /`JobPositionId`.
- Tatiller `Hr_T_WorkCalendar` (`Holiday` / `HalfDay` , `FREQ=YEARLY` tekrar).
- Pozisyon ağacı `Hr_T_JobPosition` (`DepartmentId` + `ParentId` ); departmanda "müdür" alanı yoktur.
- Grid Workflow onaycı yı düğümde sabit tutuyordu — kayda göre değişen müdür için motor eki gerekti.
#### 2.3 Keşif turu cevapları
| # | Soru | Seçilen |
| --- | --- | --- |
| 1 | Onay akı şı | Grid Workflow + motor eki: düğüm onaycı sı `@Kolon` ise kayı ttan okunur |
| 2 | Müdür nası l bulunur | Departmanı n en üst pozisyonu (üst pozisyonu başka departmanda ya da üstü olmayan); çalı şan o pozisyondaysa bir üst pozisyonun sahibi; birden çok müdür varsa herhangi biri |
| 3 | Yı llı k hak | İş Kanunu md.53 kademeleri + devir (kullanı lmayan izin devreder) |
| 4 | Bakiye yetersiz | İzin türü bazı nda İK seçer: `BalanceExceedAction` = Engelle / Uyar ve kaydet |
| 5 | İK onaycı sı | Düğümde sabit kullanı cı (lar) (İzin Talepleri akı şı nı n "İK Onayı " düğümü) |
| 6 | Gün sayı sı | Ayarlar › İnsan Kaynakları › İzin'deki çalı şma günleri + Çalı şma Takvimi tatilleri (kullanı cı kararı : tüm İK ayarları bu grupta) |
| 7 | Rapor talebi | Onay akı şı ndan geçer; onaylanı nca Sağlı k Kartı 'nda görünür (onay beklerken sağlı k kartı na ve puantaja düşmez), reddedilirse kalkar |
| 8 | Kullanı cı kartı | Kullanı cı detayı na **İzinler** sekmesi (bakiye özeti + talepler + defter) |
| 9 | Üstü olmayan pozisyon (Genel Müdür) | Müdür adı mı atlanı r, talep doğrudan İK Onayı 'na gider (üretim sı rası nda soruldu) |
#### 2.4 Üretimde verilen kararlar
| Konu | Karar | Neden |
| --- | --- | --- |
| Persona ekranı nda akı ş | **İzin Taleplerim** ekranı nda Workflow yoktur; ilk adı mı (`Müdür Onayı ` + müdür kullanı cı adları ) kayı t sonrası prosedür yazar | Workflow alanları nı yazabilen persona ekranı , çalı şanı n durumu API ile "Onaylandı " yapması na izin verirdi; alanlar İK yetkisine kilitli |
| Müdür ekranı | **Ekibimin İzin Talepleri** ayrı ekran, aynı akı ş başlı kları yla; satı r `ManagerIds` ile süzülür | Akı ş düğümleri ekrana bağlı dı r, durum başlı kla eşleşir (`FindCurrentCriteria`) |
| İK onaycı sı nı n tek kaynağı | Kayı t sonrası prosedür İK adı mı na girerken onaycı yı **İzin Talepleri** akı şı nı n "İK Onayı " düğümünden okur | Ekibimin İzin Talepleri akı şı ndaki İK düğümü ayrı düzenlenirse sapma olması n |
| Yöneticinin geçişleri | Müdür yalnı z Müdür Onayı → İK Onayı / Reddedildi yapabilir; başka geçiş geri alı nı r | Workflow alanları müdür ekranı nda yazı labilir olmak zorunda (motor ekranı n kayı t yolunu kullanı r) |
| Bakiye defteri | Hak ediş yı lı başı na satı r; 0. yı l düzeltmeler ve ilk hak edişten önceki kullanı m | Devirli kümülatif bakiyenin denetlenebilir dökümü |
| Açı lı ş bakiyesi | **Bakiye Düzeltmeleri** (± gün) | Devirli hesapta sistem öncesi kullanı m girilmezse geçmiş bütün yı llar kullanı lmamı ş görünür |
| Bildirim | Uygulama içi + toast (`IzinTalebiOnayBekliyor`, `IzinTalebiSonuclandi` ); Workflow `Inform` düğümü kullanı lmadı | Inform yalnı z e-posta gönderir ve onaycı sı sabittir |
| Ek belge | `dxImageUpload` (base64, `nvarchar(MAX)` ), listede gizli | Platform standardı |
| En üst pozisyon | Prosedür `RequiresManagerApproval` 'ı yazar (1 = müdür onayı gerekir, 0 = atlanı r); İzin Talepleri akı şı nda Başlangı ç ile Müdür Onayı arası nda bu kolona bakan karşı laştı rma düğümü vardı r, çalı şanı n kendi talebinde prosedür durumu doğrudan İK Onayı yapar | Motorun karşı laştı rma düğümü yalnı z sayı sal kolon okur (`EvaluateCondition`) ve satı rı ekranı n sorgusundan alı r; kolon İzin Talepleri'nde gizli alandı r |
| Form günü | Gün formda tarayı cı da önizlenir (hafta içi gün, yarı m günde 0,5), kalı cı değer prosedürün hesabı dı r; İzin Türü lookup'ı cascade değildir | Cascade ebeveyni çocuğu kilitler ve değiştiğinde temizler; ayrı ntı §5.1 |
| Bildirim başlı ğı | Bildirim panelinde ve etkinlik kaydı nda tip adı yerine kaydı n `Subject` 'i gösterilir (bütün modüller) | Tip adı (`PerformansDurumDegisti`) koddur; konu çevrilmiş metindir |
#### 2.5 Varsayı lan kalanlar
- Çalı şma günleri Pzt– Cum; kademeler 14 / 20 / 26, genç/yaşlı en az 20 (ayarlarda değiştirilir).
- İzin türü varsayı lanı : yı llı k izinden düşen ya da yı llı k sı nı rı olan türler **Engelle** , diğerleri **Uyar ve kaydet** (seed).
- Rapor kaydı `SickLeaveType = Disease` , gün sayı sı takvim günü (Sağlı k Kartı kuralı ); izin talebindeki gün çalı şma günüdür.
---
### 3. Menü ve ekranlar
#### 3.1 İK menüsü
`İnsan Kaynakları › İzin Yönetimi` (`App.Hr.Leave`, sı ra 14, `FcOvertime` ) — yalnı z İK.
| Sı ra | Menü (TR / EN) | `ListFormCode` | Wizard | Kaynak | Alt formlar | Widget'lar |
| --- | --- | --- | --- | --- | --- | --- |
2026-10-09 11:33:26 +00:00
| 1 | İzin Talepleri / Leave Requests | `App.Hr.LeaveRequest` | `Hr_LeaveRequest.json` | `Hr_T_LeaveRequest` | — | Müdür Onayı nda · İK Onayı nda · Onaylanan (bu yı l) · Reddedilen (bu yı l) |
| 2 | İzin Bakiyeleri / Leave Balances | `App.Hr.LeaveBalance` | `Hr_LeaveBalance.json` | `Hr_V_LeaveSummary` (salt okunur) | `LeaveBalanceAdjustment` , `LeaveBalanceYear` (`Id → EmployeeId`) | Çalı şan · Toplam Kalan Gün · Eksi Bakiye · Onay Bekleyen Gün |
2026-10-07 08:17:46 +00:00
Menüsüz alt formlar: **Bakiye Düzeltmeleri** (`App.Hr.LeaveBalanceAdjustment`, `Hr_T_LeaveBalanceAdjustment` ),
**İzin Defteri** (`App.Hr.LeaveBalanceYear`, `Hr_V_LeaveBalanceYear` , salt okunur).
Görünümler: hepsi Grid, Card, Pivot, Chart.
#### 3.2 Çalı şana ve müdüre ait ekranlar (menüsüz)
| Ekran | `ListFormCode` | Satı r süzmesi | Yapı labilen |
| --- | --- | --- | --- |
| İzin Taleplerim | `App.Hr.MyLeaveRequest` | `EmployeeId = @USERID` | Ekle; karar verilmeden düzelt/sil. `EmployeeId` sunucuda `@USERID` ile yazı lı r |
| Bakiyem | `App.Hr.MyLeaveBalance` | `EmployeeId = @USERID` | Defteri görür |
| Ekibimin İzin Talepleri | `App.Hr.TeamLeaveRequest` | `ManagerIds` içinde kullanı cı | Müdür adı mı nda Onayla / Reddet |
Talep formu doğrudan açı lı r: `/admin/form/App.Hr.MyLeaveRequest` .
#### 3.3 Intranet › Dashboard widget'ları
Sol kolon (`Column: 0`), Aktif Anketler'in (30) altı nda; kayı tlar `data/App.DeveloperKit.IntranetWidgets.json` .
| `Code` · sı ra | Bileşen | `PermissionName` | Gösterir | Butonlar |
| --- | --- | --- | --- | --- |
| `my-leave` · 35 | `MyLeaveWidget` | `App.Hr.MyLeaveRequest` | Kalan / kullanı lan / onay bekleyen gün, sonraki hak ediş, süren ilk 3 talep ve durumu | İzin Talebi Oluştur · Taleplerim · Bakiyem |
| `team-leave` · 36 | `TeamLeaveWidget` | `App.Hr.TeamLeaveRequest` | Onayı mı bekleyen talep sayı sı ve ilk 5'i, bugün izinde olanlar | Onay Bekleyenler |
Bileşenler code modunda, rotası zdı r; veriyi ekranları n kendi sorgusundan okur
(`GET /api/app/list-form-select/select`). Bakiye kartları `App.Hr.MyLeaveBalance` yetkisi yoksa gizlenir.
#### 3.4 Kullanı cı detayı › İzinler
`ui/src/views/admin/user-management/LeaveTab.tsx` : İzin Bakiyeleri satı rı ndan altı kart (hak edilen,
düzeltme, kullanı lan, bekleyen, kalan, kullanı labilir), altı nda kullanı cı ya süzülmüş **İzin Talepleri**
ve **İzin Defteri** listeleri. Her parça kendi ekran yetkisiyle görünür; İK buradan çalı şan adı na talep
ekleyebilir (yeni satı rı n `EmployeeId` 'si süzgeçten dolar).
#### 3.5 Ayarlar
Ayarlar › İnsan Kaynakları › İzin (`App.HrSettings` › `App.HrSettings.Leave` , sağlayı cı lar `T|G|D` ):
| Kod | Varsayı lan |
| --- | --- |
| `App.HrSettings.Leave.Work{Monday…Sunday}` | Pzt– Cum `True` , Cmt– Paz `False` |
| `App.HrSettings.Leave.AnnualDays1To5` / `AnnualDays5To15` / `AnnualDays15Plus` | 14 / 20 / 26 |
| `App.HrSettings.Leave.MinDaysYoungOld` | 20 |
SQL tarafı ayarı `dbo.Hr_F_HrSetting` ile ABP'nin sı rası yla okur (kiracı → genel → tanı m varsayı lanı ).
---
### 4. Veri modeli
```
AbpUsers ──< Hr_T_LeaveRequest > ── Hr_T_LeaveType
│ └── Adm_T_UserSickLeave (SickLeaveId, Rapor türünde)
└──< Hr_T_LeaveBalanceAdjustment
Hr_V_LeaveBalanceYear (defter) ──▶ Hr_V_LeaveSummary (çalı şan başı na toplam)
```
| Nesne | Önemli kolonlar | Kural |
| --- | --- | --- |
2026-10-14 21:12:14 +00:00
| `Hr_T_LeaveRequest` | `BranchId` (şube, zorunlu — standart şube sözleşmesi, ekran `IsBranch` ; `Hr_S_LeaveSickLeaveSync` raporu izne çevirirken çalı şanı n departman şubesini, yoksa çalı şana / işlemi yapana atanmı ş ilk şubeyi yazar), `RequestNo` , `EmployeeId` /`EmployeeName`/`DepartmentId`/`JobPositionId`, `LeaveTypeId` , `StartDate` /`EndDate` (tarih+saat), `IsHalfDay` , `HalfDayPart` (Morning/Afternoon), `Days` (0,5 adı mlı ), `Description` , `DocumentFileName` /`DocumentContent`, `BalanceWarning` , `SickLeaveId` , `ManagerIds` /`ManagerUserNames`, `RequiresManagerApproval` (int, 1/0), `ApprovalStatus` /`ApprovalUser`/`ApprovalDate`/`ApprovalDescription`, `LastNotifiedStatus` , `IsActive` | `EndDate ≥ StartDate` ; kiracı + tam audit |
2026-10-07 08:17:46 +00:00
| `Hr_T_LeaveBalanceAdjustment` | `EmployeeId` , `AdjustmentDate` , `Days` (≠ 0, ±), `Reason` , `IsActive` | — |
| `Hr_T_LeaveType` (+ kolon) | `BalanceExceedAction` (`Block`/`Warn`, varsayı lan `Block` ) | Kayı psı z `ALTER ADD` |
| `Hr_V_LeaveBalanceYear` | `Id` (`{EmployeeId}-{YearNo}`), `YearNo` , `AccrualDate` , `PeriodEndDate` , `EntitledDays` , `UsedDays` , `PendingDays` , `RemainingDays` , `CumulativeRemainingDays` , `NextAccrualDate` , `NextAccrualDays` | Görünüm |
| `Hr_V_LeaveSummary` | `Id` (= kullanı cı ), `ServiceYears` , `EntitledDays` , `AdjustmentDays` , `UsedDays` , `PendingDays` , `RemainingDays` , `AvailableDays` , `NextAccrualDate/Days` , `IsActive` | Görünüm |
Durum değerleri (Workflow düğüm başlı kları ): `Onaya Gönderildi` · `Müdür Onayı ` · `İK Onayı ` · `Onaylandı ` · `Reddedildi` .
---
### 5. İş kuralları ve hesaplar
#### 5.1 Gün sayı sı (`Hr_F_LeaveWorkDays`)
Başlangı ç– bitiş tarihleri (saat dikkate alı nmaz) arası ndaki her gün: ayarlarda çalı şma günü değilse 0;
Çalı şma Takvimi'nde `Holiday` ise 0, `HalfDay` ise 0,5; aksi 1. Yı llı k tekrarlı satı r başlangı ç
yı lı ndan itibaren her yı l aynı gün/aya düşer. Yarı m gün talepte sonuç en fazla 0,5'tir.
Formda gün veri girerken dolar (Başlangı ç, Bitiş ve Yarı m Gün alanları nı n `EditorScript` 'i, `custom` tarifi).
Bu bir önizlemedir: iki tarih arası ndaki hafta içi günler sayı lı r, yarı m günde 0,5 yazı lı r; Çalı şma Günleri
ayarı ve Çalı şma Takvimi tatilleri formda düşülmez. Kayı tta prosedür günü `Hr_F_LeaveWorkDays` ile yeniden
hesaplar ve kayı tlı değer odur.
| Olay | Formda |
| --- | --- |
| Başlangı ç / Bitiş değişir | Gün yeniden hesaplanı r; yarı m gün açı kken Başlangı ç değişirse Bitiş onu izler |
| Yarı m Gün işaretlenir | Bitiş = Başlangı ç, Gün 0,5, Yarı m Gün Dilimi açı lı r |
| Yarı m Gün kaldı rı lı r | Dilim temizlenip kilitlenir, Gün tam gün olarak hesaplanı r |
Notlar:
- **Dilim kilidi `custom` kuralı dı r** (`readOnly` tarifi değil). Grid popup'ı nda editörler yeniden çizilince
kural açı lı ş olayı yla (`isReady`) tekrar çalı şı r; o anda form verisi güncel değildir (`form.getEditor` popup
editörünü döndürmez) ve tarif Yarı m Gün'ü eski hâliyle okuyup kilidi geri kapatı rdı . Kural bu çalı şmada
değeri grid'in düzenlenen satı rı ndan (`editor.component.cellValue`) okur; form sayfası nda form verisinden.
- **Dilimin script'i yoktur.** Form sayfası script'li bir editör değişince `formData` 'yı baştan yazar; bu sı rada
açı lı r liste temizlenip yeniden dolar ve script'i olsaydı kendini tetikleyip sonsuz döngüye girerdi.
Tutarlı lı ğı prosedür sağlar: yarı m gün değilse dilim silinir, yarı m günde boş dilim `Morning` olur.
- **İzin Türü düz bir lookup'tı r**, cascade kullanı lmaz: bool ebeveyn `false` iken çocuğu kilitler, tarih
değişince değeri silerdi.
#### 5.2 Yı llı k hak ve bakiye (`Hr_V_LeaveBalanceYear`)
| Değer | Formül |
| --- | --- |
| Hak ediş tarihi | Kı dem başlangı cı + n yı l (n = 1, 2, …), bugün ve (varsa) işten çı kı ş tarihine kadar |
| Hak edilen | n ≤ 5 → `AnnualDays1To5` ; 6 ≤ n ≤ 14 → `AnnualDays5To15` ; n ≥ 15 → `AnnualDays15Plus` . Hak ediş tarihindeki yaş ≤ 18 ya da ≥ 50 ise en az `MinDaysYoungOld` |
| Kullanı lan / bekleyen | Yı llı k izinden düşen türdeki onaylı / onay bekleyen taleplerin günü; talep başlangı cı nı n düştüğü hak ediş dönemine yazı lı r |
| 0. yı l | Düzeltmelerin toplamı ve ilk hak edişten önce başlayan talepler |
| Kalan | Σ(hak edilen + düzeltme) − Σ kullanı lan (devirli) |
| Kullanı labilir | Kalan − onay bekleyen |
#### 5.3 Kayı t sonrası (`Hr_S_LeaveRequestAfterSave`)
Her ekleme/güncellemede (Workflow kararı dahil) çalı şı r; `THROW` kaydı geri alı r.
1. Çalı şan adı , departman, pozisyon kullanı cı kartı ndan; talep no `IZN-YYYY-00001` . (İK formunda çalı şan seçilince departman ve pozisyon formda da hemen dolar: Çalı şan lookup'ı iki kolonu döndürür, `copy` tarifi yazar.)
2. Müdür (§2.3 karar 2) bulunur → `ManagerIds` , `ManagerUserNames` . Bulunamazsa: çalı şanı n pozisyonunun üst pozisyonu yoksa (Genel Müdür) `RequiresManagerApproval = 0` yazı lı r ve müdür adı mı atlanı r; değilse ve talep müdür adı mı na kadar ise `THROW 51110` (yapı landı rma eksik).
3. Müdür ekranı ndan izinsiz geçiş önceki duruma geri alı nı r.
4. Çalı şanı n yeni talebi `Müdür Onayı ` 'na (müdür adı mı atlanı yorsa `İK Onayı ` 'na) alı nı r; adı ma girerken onaycı yazı lı r (müdür adı mı → `ManagerUserNames` , İK adı mı → İzin Talepleri akı şı nı n "İK Onayı " düğümü).
5. Gün sayı sı hesaplanı r.
6. Talep sonuçlanmamı şsa doğrulanı r:
| Kod | Kural |
| --- | --- |
| 51111 | Tür cinsiyeti çalı şana uymuyor |
| 51112 | Tür yarı m güne izin vermiyor |
| 51113 | Yarı m günde başlangı ç ve bitiş aynı gün olmalı |
| 51114 | Tür belge istiyor, belge yok |
| 51115 | Aralı kta çalı şma günü yok |
| 51116 | Reddedilmemiş başka bir talep ya da talebe bağlı olmayan istirahat aynı güne düşüyor (aynı günün iki ayrı yarı sı serbest) |
| 51117 | Yı llı k izinden düşen türde gün > kullanı labilir bakiye, ya da türün yı llı k sı nı rı aşı lı yor — tür `Block` ise; `Warn` ise kayı t yapı lı r, uyarı `BalanceWarning` 'e yazı lı r |
| 51118 | Talebin (yeni ya da eski) tarihleri kapalı puantaj dönemine düşüyor — ekleme, düzeltme, karar ve silme reddedilir (`Hr_F_TimesheetPeriodClosed`; eski tarihleri `Hr_S_LeaveRequestGuard` denetler) |
| 51119 | Tarihler çalı şanı n işe giriş – işten çı kı ş aralı ğı nı n dı şı nda |
7. Rapor (`Code = Sick`) türünde talep **onaylandı ğı nda** istirahat satı rı açı lı r/güncellenir; reddedilen, onay bekleyen ya da türü değişen talebin istirahati kalkar. Rapor türü dı şı ndaki talebin gün sayı sı rapora denk gelen günleri saymaz (`Hr_F_LeaveNetDays`); rapor değişince çalı şanı n diğer taleplerinin gün sayı sı yenilenir (`Hr_S_LeaveDaysRefresh`).
8. Silinen talep (silme sonrası komut aynı prosedürü çağı rı r): bağlı istirahat kalkar, puantaj yeniden hesaplanı r.
9. Durum bildirim taşı yan bir değere geçtiyse bir kez bildirim gider, `LastNotifiedStatus` güncellenir.
10. Puantaj: talebin günleri yeniden hesaplanı r; tarihi değişen talebin eski günlerini hesap kendisi aralı ğa katar.
#### 5.4 Satı r koruması (`Hr_S_LeaveRequestGuard`, before-command)
| Aktör | Kural |
| --- | --- |
| Çalı şan | Yalnı z kendi talebi (`51100`); durum `Onaya Gönderildi` /`Müdür Onayı ` değilse düzeltme/silme yok (`51101`) |
| Müdür | Silemez (`51102`); `ManagerIds` içinde olmalı (`51103`); talep `Müdür Onayı ` 'nda olmalı (`51104`) |
| İK | Serbest |
| Hepsi | Talebin kayı ttaki (eski) tarihleri kapalı puantaj dönemine düşüyorsa düzeltme/silme yok (`51118`) |
Alan kilidi: persona ekranları nda çalı şanı n/müdürün değiştirmemesi gereken alanları n yazma yetkisi
`App.Hr.LeaveRequest.Create/.Update` 'e bağlı dı r; sunucu yetkisi olmayan alanı düşürür. Bu yüzden
çalı şan/müdür rolüne İzin Talepleri'nin `.Create/.Update` yetkisi verilmez.
#### 5.5 Rapor ↔ izin (tek kayı t)
| Nereden | Ne olur |
| --- | --- |
| İzin talebi, tür Rapor | Onayda `Adm_T_UserSickLeave` satı rı açı lı r (`SickLeaveId`); onaylı talep güncellenince güncellenir, silinince/reddedilince kalkar |
| Sağlı k Kartı › İstirahat Raporları ya da kullanı cı detayı › İstirahatler | `Hr_S_LeaveSickLeaveSync` : onaylı Rapor talebi açı lı r (onay akı şı na girmez), güncellemede tarih/gün, silmede (silme sonrası komut aynı prosedürü çağı rı r) talep kalkar. Rapora denk gelen yı llı k izin günleri bakiyeye döner. Kapalı puantaj ayı na düşen rapor kaydedilmez (`51120`). Kiracı da `Sick` kodlu tür yoksa eşleme yapı lmaz |
| Çalı şma Takvimi | Takvim satı rı kaydedilince denk gelen taleplerin gün sayı sı yeniden hesaplanı r (`Hr_S_WorkCalendarAfterSave`) |
#### 5.6 Onay akı şı (Grid Workflow)
`Onaya Gönderildi` (Start) → `Müdür Onayı Gerekli mi?` (Compare, `RequiresManagerApproval = 1` ) →
evet: `Müdür Onayı ` (Approval, `@ManagerUserNames` ) / hayı r: doğrudan `İK Onayı ` (Approval, seed'de
`system@sozsoft.com` ) → `Onaylandı ` (End); iki onay adı mı nı n reddi → `Reddedildi` (End).
Karşı laştı rma düğümü yalnı z İzin Talepleri akı şı ndadı r (akı ş İK grid'inden eklenen kayı tta orada başlar);
Ekibimin İzin Talepleri akı şı başlatı lmaz, yalnı z müdür adı mı ndan ilerler. Akı ş iki ekranda aynı başlı klarla durur. İK onaycı sı İzin
Talepleri › ListForm › Workflow › "İK Onayı " düğümünden değiştirilir (§2.4).
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` . Dal `App.Hr.Leave` → `App.Hr.LeaveRequest` , `App.Hr.LeaveBalance`
(altı nda `LeaveBalanceAdjustment` , `LeaveBalanceYear` ). Kökte menüsüz `App.Hr.MyLeaveRequest` ,
`App.Hr.MyLeaveBalance` , `App.Hr.TeamLeaveRequest` . Ayar: `App.HrSettings` › `App.HrSettings.Leave`
(Administration grubu, `App.Setting` altı nda). Her ekranda `.Create/.Update/.Delete/.Export/.Import/.Note` .
**Hiçbir yetki role otomatik atanmaz.**
| Rol | Verilecek yetkiler |
| --- | --- |
| Tüm çalı şanlar | `App.Hr.MyLeaveRequest` (+ `.Create/.Update/.Delete` ), `App.Hr.MyLeaveBalance` |
| Müdürler | Yukarı dakiler + `App.Hr.TeamLeaveRequest` (+ `.Update` — Workflow kararı güncelleme yetkisi ister) |
| İK | `App.Hr.Leave` dalı nı n tamamı + `App.HrSettings.Leave` |
Widget'lar liste okuma yetkisiyle görünür (İzinlerim `App.Hr.MyLeaveRequest` , Ekibimin İzinleri `App.Hr.TeamLeaveRequest` ).
---
### 7. Entegrasyonlar
| Kaynak | Kullanı m |
| --- | --- |
| `AbpUsers` | Çalı şan, kı dem, doğum tarihi, cinsiyet, departman/pozisyon; onaycı kullanı cı adları |
| `Hr_T_JobPosition` / `Hr_T_Department` | Departman müdürü çözümü |
| `Hr_T_LeaveType` | Tür kuralları (cinsiyet, yarı m gün, belge, yı llı k sı nı r, yı llı k izinden düşme, aşı m davranı şı ) |
| `Hr_T_WorkCalendar` | Tatil ve yarı m günler |
| `AbpSettings` / `Sas_H_SettingDefinition` | Çalı şma günleri ve kademeler |
| `Adm_T_UserSickLeave` | Rapor eşlemesi |
| Puantaj ve Devam Takibi | `Hr_S_LeaveRequestAfterSave` sonunda talebin günleri `Hr_S_TimesheetCalculate` ile yeniden hesaplanı r: onaylı izin İzinli, rapor Raporlu gün olur; ücretli izne denk gelen tatil İzinli değil tatil, ücretsiz izin hafta sonu dahil İzinli yazı lı r. Tarihi değişen ya da silinen talebin eski günleri aynı işlemde düzelir (Puantaj ve Devam Takibi bölümü §7.1). Kapalı puantaj ayı na düşen talep değiştirilemez; onay bekleyen talebi olan ay kapatı lamaz. Çalı şma günü ayarları puantajda hafta tatilini de belirler |
| Bildirimler | `IzinTalebiOnayBekliyor` (müdür / İK onaycı sı ), `IzinTalebiSonuclandi` (çalı şan); kurallar `Custom` + `UiActivity` /`UiToast`. Metinler `App.Hr.Leave.Notification.{Approval,Result}.{Subject,Message}` (TR), yer tutucular `[Employee]` , `[LeaveType]` , `[StartDate]` , `[EndDate]` , `[Days]` , `[Status]` . Yazan: `Hr_S_LeaveNotify` |
---
### 8. Akı ş örneği
1. İK Ayarlar › İnsan Kaynakları › İzin'de Cumartesi'yi çalı şma günü yapar (gerekirse); eski çalı şanlar için İzin Bakiyeleri › Bakiye Düzeltmeleri'ne sistem öncesi kullanı lan günleri eksi olarak girer.
2. Muhasebe Şefi panodaki **İzinlerim** widget'ı nda kalan 18 günü görür, **İzin Talebi Oluştur** ile 3 günlük yı llı k izin açar.
3. Gün kayı tta 3 hesaplanı r, talep `Müdür Onayı ` 'na düşer, Muhasebe Müdürü bildirim alı r.
4. Müdür **Ekibimin İzinleri** → Onay Bekleyenler'den talebi seçip **Onayla** der → talep `İK Onayı ` 'na geçer, İK onaycı sı bildirim alı r.
5. İK İzin Talepleri'nde onaylar → `Onaylandı ` ; çalı şan bildirim alı r, bakiye 15'e iner.
6. Çalı şan rapor alı r, Rapor türünde talep açı p raporu ekler → Sağlı k Kartı › İstirahat Raporları 'nda görünür; aynı onay akı şı ndan geçer.
7. Sağlı k birimi başka bir raporu doğrudan Sağlı k Kartı 'na girer → İzin Talepleri'nde onaylı Rapor talebi olarak görünür.
---
### 9. Sı k sorulanlar
**"Departman müdürü bulunamadı " hatası .** Çalı şanı n kullanı cı kartı nda departman ve pozisyon dolu olmalı ; departmanı n en üst pozisyonunda (ya da üst pozisyonlarda) aktif bir kullanı cı bulunmalı (§5.3 adı m 2). Üst pozisyonu olmayan çalı şan (Genel Müdür) bu hatayı almaz; talebi doğrudan İK onayı na gider.
**Genel Müdür'ün talebini kim onaylar?** Müdür adı mı atlanı r, yalnı z İK onaylar (§2.3 karar 9).
**Gün sayı sı beklenenden az.** Hafta sonu, ayarlarda kapalı gün ve Çalı şma Takvimi tatilleri sayı lmaz; arife 0,5 sayı lı r.
**Bakiye çok yüksek görünüyor.** Devirli hesap kı dem başlangı cı ndan bugüne bütün yı lları sayar; sistem öncesi kullanı lan izin Bakiye Düzeltmeleri'ne eksi olarak girilmelidir.
**Bakiyem/İzinlerim'de kı dem uyarı sı .** Kullanı cı kartı nda Kı dem Başlangı ç ya da İşe Giriş tarihi yok.
**Talebimi değiştiremiyorum.** Müdür karar verdikten sonra çalı şan değiştiremez/silemez (`51101`); İK ile görüşülür.
**Müdür Onayla butonunu görmüyor.** Rolünde `App.Hr.TeamLeaveRequest.Update` olmalı ; talep `Müdür Onayı ` 'nda ve kullanı cı o departmanı n müdürü olmalı .
**İK onaycı sı nası l değişir?** İzin Talepleri › ListForm › Workflow › "İK Onayı " düğümü. Ekibimin İzin Talepleri'ndeki aynı düğüm akı şı ilerletir; onaycı kayda İzin Talepleri düğümünden yazı lı r.
**Bildirim gelmiyor.** Kiracı da `IzinTalebiOnayBekliyor` / `IzinTalebiSonuclandi` tipi ve `Custom` kuralları olmalı (yeni kiracı ya kopyalanı r, mevcut kiracı da Administration › Bildirimler'den eklenir).
**Kullanı cı detayı ndaki İstirahatler'den girilen rapor izinlere düşmüyor.** O ekranı n kancaları C# seeder'dadı r (`ListFormSeeder_Administration`); daha önce kurulmuş bir veritabanı nda ekran yeniden kurulmadı kça kanca yoktur. Sağlı k Kartı ekranı wizard'dı r ve migrate ile güncellenir.
---
### 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/sql/object/Hr_T_LeaveRequest.sql` , `Hr_T_LeaveBalanceAdjustment.sql` , `Hr_T_LeaveType.sql` (`BalanceExceedAction`) | Tablolar |
| `…/Hr_F_HrSetting.sql` , `Hr_F_LeaveWorkDays.sql` | Ayar okuma, gün sayı sı |
| `…/Hr_V_LeaveBalanceYear.sql` , `Hr_V_LeaveSummary.sql` | Bakiye görünümleri |
| `…/Hr_S_LeaveRequestAfterSave.sql` , `Hr_S_LeaveRequestGuard.sql` , `Hr_S_LeaveNotify.sql` , `Hr_S_LeaveSickLeaveSync.sql` | Prosedürler |
2026-10-09 11:33:26 +00:00
| `configs/seeds/wizard/{LeaveRequest,MyLeaveRequest,TeamLeaveRequest,LeaveBalance,LeaveBalanceAdjustment,LeaveBalanceYear,MyLeaveBalance}.json` | 7 wizard; `Hr_LeaveType.json` (alan), `Hr_HealthCardSickLeave.json` (kancalar) |
2026-10-07 08:17:46 +00:00
| `configs/seeds/data/App.DeveloperKit.CustomComponents/{23744edc-eda9-512e-8079-fe2e8e5fd2a8,3b7b16c6-aa96-5765-8e19-fe5e727feb52}.json` | `MyLeaveWidget` , `TeamLeaveWidget` |
| `configs/seeds/data/App.DeveloperKit.IntranetWidgets.json` , `App.SettingDefinitions.json` , `App.Notifications.Notification{Types,Rules}.json` , `App.Menus.Menu.json` , `Abp.Identity.Permissions.json` , `App.Languages.LanguageText.json` , `App.Hr.LeaveType.json` | Seed satı rları |
| `api/src/Sozsoft.Platform.Application/ListForms/ListFormWorkflowAppService.cs` | `@Kolon` onaycı |
| `api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs` | Kullanı cı detayı istirahat kancaları |
| `ui/src/views/admin/listForm/workflow/WorkflowCriteria.tsx` | Tasarı mcı da alan onaycı sı seçeneği |
| `ui/src/views/admin/user-management/LeaveTab.tsx` , `Details.tsx` | İzinler sekmesi |
Kurulum: DB Migrate (SQL nesneleri, ekranlar `WizardDataSeeder` , satı rlar `ListFormSeedDataApplier` ),
ardı ndan rollere yetki (§6). Ayar tanı mları uygulama yeniden başlayı nca ayar ekranı nda görünür.
Geri alma: Wizard Manager'dan 7 wizard silinir (alt formlar önce); tabloları düşürmek onayda seçilirse olur.
Widget bileşenleri ve pano kayı tları , bildirim tip/kural satı rları , ayar tanı mları , `Hr_F_*` /`Hr_V_*`/`Hr_S_Leave*`
nesneleri elle kaldı rı lı r. `BalanceExceedAction` kolonu kalı r (kayı psı z ekleme geri alı nmaz).
<!-- module - doc:section App.Hr.Attendance -->
## Puantaj ve Devam Takibi (`App.Hr.Attendance`)
Günlük giriş/çı kı ş hareketlerinden (PDKS, Excel aktarı mı , elle giriş) çalı şan × gün puantajı ;
personel bazlı aylı k puantaj, dönem kapanı şı ve PDKS'nin hareket gönderdiği uç. Kişi eşlemesi kullanı cı
kartı ndaki PDKS Kart No / Sicil No alanları yladı r.
İzin Yönetimi (onaylı izin → İzinli), Sağlı k Kartı (istirahat → Raporlu), Çalı şma Takvimi (resmî
tatil / arife) ve Vardiyalar (saat, mola, tolerans) puantajı n girdisidir. Çalı şan kendi puantajı nı
**Intranet › Dashboard**'daki **Puantajı m** widget'ı ndan izler; İK menüsü İK içindir. Wizard ekranları ,
SQL nesneleri, custom component widget'ı , Custom Endpoint ve zamanlanmı ş işle kuruludur. Çerçeve dı şı nda
tek ek vardı r (kullanı cı onayı yla): kullanı cı detayı ndaki **Puantaj** sekmesi.
> 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 |
| --- | --- | --- |
| Çalı şan | Seçtiği ayı n net saatini, geç kalma/erken çı kı ş dakikası nı , fazla mesaisini, devamsı z/izinli/raporlu günlerini ve yı llı k toplamı (270 saatlik fazla mesai sı nı rı yla) görür | Intranet panosu: **Puantajı m** widget'ı → Puantajı m (aylar) → ayı n günleri · Profil › Puantajı m (aylı k puantaj salt okunur) |
| İK | Hareketleri izler/düzeltir, elle takip edilen çalı şanı n gelmediği günü işaretler, aylı k puantajı izler, ayı yeniden hesaplar ve kapatı r, çalı şanı n PDKS Kart No'sunu kullanı cı kartı na (İş sekmesi) girer, toleransı ve fazla mesai kuralları nı ayarlar | İK › Puantaj ve Devam Takibi · Ayarlar › İnsan Kaynakları › Puantaj · Kullanı cı detayı › Puantaj |
| PDKS (servis kullanı cı sı ) | Kart okutmaları nı toplu gönderir | `POST /api/app/custom-endpoint/hr/attendance/` |
Kapsam: kiracı (`IsTenant`). Şube kı rı lı mı yoktur.
---
### 2. Analiz ve kararlar
#### 2.1 Talep
> Human Resources → Puantaj ve Devam Takibi modülü: günlük hareketler, personel bazlı aylı k puantaj.
> Intranet › Dashboard'da aylı k puantajı ma ulaşabileceğim, ilgili ayı n durumunu ve yı llı k toplamı gösteren
> widget (sol kolon, anket tarafı ). Kolonlar: ilk giriş, son çı kı ş, net çalı şma süresi, mola düşümü, geç
> kalma (dk), erken çı kı ş (dk), fazla mesai (saat), gün tipi (çalı şma, hafta tatili, resmî tatil, izinli,
> raporlu, devamsı z). Tolerans vardiya bazı nda (ör. 10 dk), ayarlardan dinamik. Haftalı k 45 saati aşan
> çalı şma fazla mesaidir, ücreti %50 zamlı dı r (4857 md. 41), yı llı k üst sı nı r 270 saat; ayarlardan
> yönetilir. Veri elle yazı labilir ya da PDKS'den akabilir. Kullanı cı detayı nda İzinler gibi bir Puantaj
> sekmesi. Diğer modüllerle core koda dokunmadan entegre olmalı .
#### 2.2 Depodan okunanlar (sorulmadı )
- Vardiya `Hr_T_Shift` (`StartTime`/`EndTime` `SS:dd` metin, `BreakMinutes` , `WorkingHours` , gece vardiyası ); çalı şanı n vardiyası `AbpUsers.ShiftId` .
- Tatiller `Hr_T_WorkCalendar` (`Holiday` / `HalfDay` , `FREQ=YEARLY` ); hafta tatili İzin Yönetimi'nin `App.HrSettings.Leave.Work{Gün}` ayarları .
- Onaylı izin `Hr_T_LeaveRequest.ApprovalStatus = 'Onaylandı '` ; rapor `Adm_T_UserSickLeave` .
- İstihdam `AbpUsers.HireDate` / `TerminationDate` ; departman/pozisyon `DepartmentId` / `JobPositionId` .
- Kullanı cı kartı nda (İş sekmesi) PDKS Kart No (`AbpUsers.PdksCardNo`) ve Sicil No (`RegistrationNo`) alanları var; ayrı kart tablosu açı lmadı .
- Zamanlanmı ş işin saklı yordamı parametresiz çağrı lı r (`PlatformBackgroundWorker`); Custom Endpoint gövdesindeki dizi ham JSON metni olarak bağlanı r.
#### 2.3 Keşif turu cevapları
| # | Soru | Seçilen |
| --- | --- | --- |
| 1 | Veri modeli | Ham hareket (`Hr_T_AttendanceLog`) + hesaplanan gün (`Hr_T_Timesheet`); İK günü elle düzeltebilir, düzeltilen gün yeniden hesapta ezilmez |
| 2 | Tolerans yeri | Vardiyada (`LateToleranceMinutes`, `EarlyLeaveToleranceMinutes` ), boşsa Ayarlar › Puantaj (10 dk) |
| 3 | Geç kalma dakikası | Tolerans aşı lı rsa dakikanı n tamamı yazı lı r, aşı lmazsa 0 |
| 4 | Fazla mesai | Haftalı k (Pzt– Paz) birikim 45 saati aştı ğı günden itibaren aşan kı sı m o günlere; hafta tatili ve resmî tatildeki çalı şmanı n tamamı ; yı llı k 270 saati aşan satı r işaretlenir (engellemez) |
| 5 | PDKS | Excel import + API ucu (Custom Endpoint); kişi eşlemesi kullanı cı kartı ndaki PDKS Kart No, Sicil No ya da kullanı cı adı yla |
| 6 | Mola | `MAX(vardiya molası , gün içi okutulan çı kı ş→giriş aralı kları )` |
| 7 | Hesap zamanı | Hareket kaydı nda (o hafta) + gece işi (okutması z günler) + dönem kaydı (ay) |
| 8 | Kapanı ş | İK ayı kilitler, onay akı şı yok; müdür ekranı /widget'ı yok |
| 9 | Kullanı cı detayı sekmesi | Core istisnası onaylandı (`Details.tsx` + `TimesheetTab.tsx` , İzinler sekmesi emsali) |
| 10 | Elle takip (üretim sı rası nda) | Elle takipte yalnı z gelinmeyen gün yazı lı r; yazı lmayan iş günü "geldi" kabul edilir |
#### 2.4 Üretimde verilen kararlar
| Konu | Karar | Neden |
| --- | --- | --- |
| Takip türü | Çalı şan bazı nda otomatik: kullanı cı kartı nda PDKS Kart No'su olan çalı şan **ilk PDKS/aktarı m okutması nı n gününden itibaren** okutmayla takip edilir (okutması z iş günü Devamsı z); diğerleri elle takip edilir (kayı tsı z iş günü vardiya saatleriyle `IsAssumed` ). Elle girilen hareket takip türünü değiştirmez | Ayrı bir ayar gerektirmez; kartı n sonradan verilmesi geçmiş günleri devamsı za çevirmez |
| Gün sı nı rı | Hareketin iş günü vardiya bitişi ile bir sonraki başlangı ç arası ndaki boşluğun ortası ndan ayrı lı r (`Hr_V_AttendanceShift.DayOffset`) | Gece vardiyası nı n 23:50 okutması vardiyanı n başladı ğı ertesi güne yazı lı r |
| Okutma yönü | `In` / `Out` / `Auto` ; `Auto` sı raya göre giriş/çı kı ş sayı lı r | PDKS'lerin çoğu yön göndermez |
| Elle düzeltme | Günlük Puantaj'da kaydedilen gün `IsManual = 1` olur; otomatiğe dönmek için satı r silinir (yeniden hesap aynı günü kurar) | Ekrandan "elle mi" bilgisini ayrı ca istemeden yeniden hesabı n düzeltmeyi ezmesini önler |
| Kapalı dönem | Hesap kapalı ayı n günlerini yazmaz, yalnı z haftalı k birikime alı r; ekrandan gelen hareket/gün değişikliği `THROW` ile geri alı nı r; PDKS/gece işi okutmayı `ClosedPeriod` hatası yla işaretler | PDKS gönderimi tek bir eski okutma yüzünden durması n |
| Kurulum sı rası | Vardiya çözümü view'dadı r (`Hr_V_AttendanceShift`) | SQL nesneleri dosya adı na göre kurulur; `Hr_F_*` fonksiyonları `Hr_T_*` tabloları ndan önce oluşur |
| Gece işi kapsamı | `Scope = Host ve Kiracı lar` ; prosedür veritabanı ndaki bütün kiracı ları işler ve aynı gün işlenen kiracı yı dönemin `NightlyAt` değeriyle atlar | Saklı yordam kiracı parametresi almaz |
| İzin entegrasyonu | `Hr_S_LeaveRequestAfterSave` ve `Hr_S_LeaveSickLeaveSync` sonunda talebin/raporun günleri yeniden hesaplanı r | Onaylı izin ve rapor anı nda puantaja düşer; çekirdek koda dokunulmaz |
| Aylı k özet anahtarı | `PeriodKey = {EmployeeId}-{YYYYMM}` hem view'ı n `Id` 'si hem günlük satı rı n kolonudur | Alt form ilişkisi tek alanla kurulur |
| Widget sı nı fları | Bileşen sı nı fları `className` literalleriyle yazı lı r, koşullu kı sı m dizge birleştirmeyle eklenir | Safelist üreteci şablon dizgisindeki ifadeyi sı nı f sanı r |
#### 2.5 Varsayı lan kalanlar
- Varsayı lan vardiya 08:00– 18:00, mola 60 dk (vardiyası olmayan çalı şan için, ayarlarda değişir).
- İzinli/raporlu gün haftalı k 45 saat birikimine 0 katkı verir; o gün okutma varsa net süre birikime girer.
- Yarı m gün izinli günde geç/erken yazı lmaz; arifede (`HalfDay`) vardiya süresinin yarı sı nda biter.
- Yalnı z giriş okutması olan gün `IsIncomplete` (Eksik Okutma) işaretlenir, net süre 0'dı r.
---
### 3. Menü ve ekranlar
#### 3.1 İK menüsü
`İnsan Kaynakları › Puantaj ve Devam Takibi` (`App.Hr.Attendance`, sı ra 15, `FcAlarmClock` ) — yalnı z İK.
| Sı ra | Menü (TR / EN) | `ListFormCode` | Kaynak | Alt formlar | Widget'lar |
| --- | --- | --- | --- | --- | --- |
| 1 | Günlük Hareketler / Attendance Events | `App.Hr.AttendanceLog` | `Hr_T_AttendanceLog` | — | Bugün · PDKS (bu ay) · Manuel (bu ay) · Hatalı |
| 2 | Günlük Puantaj / Daily Timesheet | `App.Hr.Timesheet` | `Hr_T_Timesheet` | — | Devamsı z gün · Geç kalı nan gün · Fazla mesai saati · Eksik okutma (bu ay) |
| 3 | Aylı k Puantaj / Monthly Timesheet | `App.Hr.TimesheetMonthly` | `Hr_V_TimesheetMonthly` (salt okunur) | `App.Hr.Timesheet` (`Id → PeriodKey`) | Çalı şan · Fazla mesai · Devamsı z gün (bu ay) · Yı llı k sı nı rı aşan |
| 4 | Puantaj Dönemleri / Timesheet Periods | `App.Hr.TimesheetPeriod` | `Hr_T_TimesheetPeriod` | — | Açı k · Kapalı · Toplam |
Görünümler: hepsi Grid, Card, Pivot, Chart. Günlük Puantaj'da ekleme yoktur (günleri hesap kurar).
Koşullu biçim: gün tipi (Devamsı z kı rmı zı , Raporlu mor, İzinli mavi, tatiller gri), geç/erken/fazla
mesai > 0, hareket hatası , aylı k satı rda yı llı k sı nı rı n aşı lması (satı r).
#### 3.2 Çalı şana ait ekranlar (menüsüz)
| Ekran | `ListFormCode` | Satı r süzmesi | Yapı labilen |
| --- | --- | --- | --- |
| Puantajı m | `App.Hr.MyTimesheet` | `EmployeeId = @USERID` (`Hr_V_TimesheetMonthly`) | Ayları görür; detayda ayı n günleri |
| Puantaj Günlerim | `App.Hr.MyTimesheetDay` | `EmployeeId = @USERID` (`Hr_T_Timesheet`) | Puantajı m'ı n sekmesi (`Id → PeriodKey`), salt okunur |
#### 3.3 Intranet › Dashboard widget'ı
Sol kolon (`Column: 0`), İzinlerim'in (35/36) altı nda; kayı t `data/App.DeveloperKit.IntranetWidgets.json` .
| `Code` · sı ra | Bileşen | `PermissionName` | Gösterir | Buton |
| --- | --- | --- | --- | --- |
| `my-timesheet` · 37 | `MyTimesheetWidget` | `App.Hr.MyTimesheet` | Ay seçici (varsayı lan içinde bulunulan ay); net saat, çalı şı lan gün, fazla mesai, geç kalma dk, erken çı kı ş dk, devamsı z gün; izinli/raporlu/tatil günü; yı l toplamı (net saat, geç kalma, devamsı z) ve fazla mesai / yı llı k sı nı r çubuğu | Puantajı m |
Bileşen code modunda, rotası zdı r; veriyi Puantajı m ekranı nı n sorgusundan okur (`GET /api/app/list-form-select/select`).
#### 3.4 Kullanı cı detayı › Puantaj
`ui/src/views/admin/user-management/TimesheetTab.tsx` : içinde bulunulan yı lı n sekiz kartı (çalı şma günü,
net saat, fazla mesai — yı llı k sı nı rı aşı nca kı rmı zı —, geç kalma, erken çı kı ş, devamsı z, izinli, raporlu),
altı nda kullanı cı ya süzülmüş **Aylı k Puantaj** , **Günlük Puantaj** ve **Günlük Hareketler** listeleri. Her
parça kendi ekran yetkisiyle görünür; yeni hareket satı rı nı n `EmployeeId` 'si süzgeçten dolar.
#### 3.5 Ayarlar
Ayarlar › İnsan Kaynakları › Puantaj (`App.HrSettings` › `App.HrSettings.Attendance` , sağlayı cı lar `T|G|D` ):
| Kod | Varsayı lan | Kullanı m |
| --- | --- | --- |
| `App.HrSettings.Attendance.LateToleranceMinutes` | 10 | Vardiyada tolerans yoksa |
| `App.HrSettings.Attendance.EarlyLeaveToleranceMinutes` | 10 | Vardiyada tolerans yoksa |
| `App.HrSettings.Attendance.WeeklyLimitHours` | 45 | Haftalı k fazla mesai sı nı rı |
| `App.HrSettings.Attendance.OvertimeRate` | 1.5 | Zamlı fazla mesai saati çarpanı (Aylı k Puantaj) |
| `App.HrSettings.Attendance.AnnualOvertimeLimitHours` | 270 | Yı llı k sı nı r (işaret, widget çubuğu) |
| `App.HrSettings.Attendance.DefaultShiftStart` / `DefaultShiftEnd` | 08:00 / 18:00 | Vardiyası olmayan çalı şan |
| `App.HrSettings.Attendance.DefaultBreakMinutes` | 60 | Vardiyası (ya da vardiya molası ) olmayan çalı şan |
Hafta tatili İzin Yönetimi'nin çalı şma günü ayarları ndan (`App.HrSettings.Leave.Work{Gün}`) okunur.
---
### 4. Veri modeli
| Tablo / nesne | Kolonlar | Not |
| --- | --- | --- |
| `AbpUsers` (mevcut) | `PdksCardNo` , `RegistrationNo` , `ShiftId` , `HireDate` , `TerminationDate` | Kişi eşlemesi, vardiya, istihdam aralı ğı |
| `Hr_T_AttendanceLog` | `EmployeeId` (boş olabilir), `CardNo` , `EventTime` (yerel saat), `Direction` (In/Out/Auto), `Source` (Manual/Pdks/Import), `DeviceCode` , `Note` , `WorkDate` (hesaplanı r), `IsProcessed` , `ProcessError` (UnknownCard/ClosedPeriod) | `IsProcessed = 0` satı rları işlenmeyi bekler |
| `Hr_T_Timesheet` | `EmployeeId` , `WorkDate` , `PeriodYear` , `PeriodMonth` , `PeriodKey` , `ShiftId` , `DayType` (Work/WeeklyOff/Holiday/Leave/Sick/Training/Absent), `LeaveTypeId` (izinli/raporlu günün türü), `TrainingId` (eğitim günü), `FirstIn` , `LastOut` , `BreakMinutes` , `NetMinutes` , `NetHours` , `LateMinutes` , `EarlyLeaveMinutes` , `OvertimeHours` , `IsManual` , `IsIncomplete` , `IsAssumed` , `Note` , `CalculatedAt` | Çalı şan × gün tek etkin satı r |
| `Hr_T_TimesheetPeriod` | `PeriodYear` , `PeriodMonth` , `Status` (Open/Closed), `CalculatedAt` , `ClosedAt` , `ClosedById` , `NightlyAt` , `Note` | Kiracı da yı l+ay tekil (prosedür denetler) |
| `Hr_T_Shift` (+) | `LateToleranceMinutes` , `EarlyLeaveToleranceMinutes` | Vardiyalar ekranı nda düzenlenir |
| `Hr_V_AttendanceShift` | Çalı şanı n dakika cinsinden vardiyası , mola, toleranslar, `DayOffset` | Varsayı lanlar ayardan |
| `Hr_V_TimesheetMonthly` | Çalı şan × ay toplamları , `UnpaidLeaveDays` (ücretsiz türdeki izinli gün — bordroda eksik gün), `TrainingDays` , `OvertimePaidHours` , `YearOvertimeHours` , `AnnualOvertimeLimit` , `IsOverAnnualLimit` , `PeriodStatus` | `Id = PeriodKey` |
Entity yoktur (wizard tabloları ); `sql/object/` .
---
### 5. İş kuralları ve hesaplar
#### 5.1 Prosedürler
| Nesne | Ne yapar | Çağı ran |
| --- | --- | --- |
| `Hr_S_TimesheetCalculate @TenantId, @EmployeeId, @From, @To, @ActorId` | Aralı ğı tam haftalara genişletip (bugünle sı nı rlı ) çalı şan × gün satı rları nı kurar/günceller; kapalı ayı yazmaz | Aşağı dakilerin hepsi, izin ve rapor prosedürleri |
| `Hr_S_AttendanceProcess @FailOnClosed` | İşlenmemiş hareketlerde kart → çalı şan, iş günü, hata; etkilenen günleri (eski + yeni) yeniden hesaplar | Günlük Hareketler kayı t/silme, PDKS ucu, gece işi |
| `Hr_S_AttendanceImport @TenantId, @UserId, @Items` | PDKS gönderimini (`CardNo`, `RegistrationNo` ya da `UserName` ; `EventTime` , `Direction` , `DeviceCode` ) yazar, tekrarı atlar; `Received/Inserted/Skipped/Errors` döner | Custom Endpoint |
| `Hr_S_TimesheetPeriodAfterSave @PeriodId, @ActorId` | Yı l/ay doğrulama ve tekillik; açı k dönemde ayı yeniden hesaplar; kapatmada son hesap + kilit | Puantaj Dönemleri kayı t |
| `Hr_S_TimesheetNightly` | Kart numarası sonradan girilen "Kart tanı msı z" okutmaları yeniden kuyruğa alı r ve işler; her kiracı için ayı n dönemini açar, dünün ayı nı ve kapanmamı şsa önceki ayı hesaplar | Zamanlanmı ş iş `Timesheet Nightly` (02:00) |
| `Hr_F_WorkCalendarDayType @TenantId, @Day` | Güne düşen `Holiday` / `HalfDay` | Hesap |
| `Hr_F_TimesheetPeriodClosed @TenantId, @From, @To` | Aralı ğı n değdiği aylardan biri kapalı dönem mi | İzin, rapor ve izin guard prosedürleri |
| `Hr_S_TrainingSync @TrainingId, @UserId, @ActorId` | Katı lı mcı nı n (boşsa bütün katı lı mcı ları n) eğitim günlerini yeniden hesaplar, bağlı gelişim aksiyonunu tamamlar | Eğitimler ve Katı lı mcı lar kayı t/silme |
| `Hr_S_WorkCalendarAfterSave @CalendarId, @ActorId` | Takvim satı rı na denk gelen izinlerin gün sayı sı nı ve puantajı yeniden hesaplar | Çalı şma Takvimi kayı t/silme |
#### 5.2 Günün hesabı
1. **Gün tipi** (öncelik sı rası yla):
1. rapor (Sağlı k Kartı istirahati; takvim günü, hafta sonu dahil) → `Sick` ;
2. onaylı **ücretsiz** izin (`LeaveType.IsPaid = 0`: ücretsiz izin, doğum izni; takvim günü) → `Leave` ;
3. takvim tatili → `Holiday` ; ayarda çalı şma günü değil → `WeeklyOff` ;
4. onaylı **ücretli** izin → `Leave` (ücretli izne denk gelen tatil izin günü değildir, 4857 md. 56 — izin gün sayı sı yla aynı kural); yarı m gün izinde okutma varsa `Work` ;
5. okutma var → `Work` ;
6. eğitime "Katı ldı " işaretli katı lı mcı → `Training` (vardiya saatleriyle, `IsAssumed` );
7. elle takip edilen çalı şan → `Work` (`IsAssumed`, vardiya saatleri); geçmiş gün → `Absent` ; kartlı çalı şanı n okutması z bugünü yazı lmaz.
İzinli/raporlu günde `LeaveTypeId` , eğitim gününde `TrainingId` yazı lı r. İstihdam dı şı ndaki okutması z gün yazı lmaz.
2. **İlk giriş / son çı kı ş** : ilk `In` (yoksa ilk okutma) / son `Out` (ilk girişten sonraysa).
3. **Mola** = `MAX(vardiya molası , ilk giriş– son çı kı ş arası ndaki çı kı ş→giriş aralı kları )` , brüt süreyi aşamaz; elle düzeltilen günde girilen mola.
4. **Net** = son çı kı ş − ilk giriş − mola.
5. **Geç kalma** = ilk giriş − vardiya başlangı cı , tolerans aşı lı rsa tamamı ; **erken çı kı ş** = vardiya bitişi (arifede yarı süre) − son çı kı ş, tolerans aşı lı rsa tamamı . Yalnı z `Work` gününde; eğitim günü haftalı k birikime çalı şma gibi girer.
6. **Fazla mesai** = `WeeklyOff` /`Holiday` gününde net sürenin tamamı ; diğer günlerde haftanı n kümülatif netinin sı nı rı aştı ğı kı sı m (`max(0, kümülatif − sı nı r) − max(0, önceki kümülatif − sı nı r)`).
7. Kaynağı kalkan gün: tek çalı şanlı k hesap, artı k hiçbir izin/rapor/katı lı mla örtüşmeyen `Leave` /`Sick`/`Training` günlerini (talebin tarihi değişti, rapor ya da katı lı m silindi) aralı ğa katar; eski günler aynı işlemde düzelir.
8. Aylı k view: `OvertimePaidHours = OvertimeHours × OvertimeRate` ; `YearOvertimeHours` ocaktan o aya birikim; `IsOverAnnualLimit` sı nı r aşı mı .
#### 5.3 Ekran komutları
| Ekran | Komut |
| --- | --- |
| Günlük Hareketler | Ekle/düzenle/sil sonrası satı r işlenmemiş işaretlenir → `Hr_S_AttendanceProcess 1` (kapalı dönemde kayı t geri alı nı r) |
| Günlük Puantaj | Düzenle/sil öncesi kapalı dönem kontrolü; düzenleme sonrası `IsManual = 1, IsAssumed = 0` ve günün haftası yeniden hesaplanı r; silme sonrası gün otomatik yeniden kurulur |
| Puantaj Dönemleri | Kayı t sonrası `Hr_S_TimesheetPeriodAfterSave` ; kapalı dönem silinemez; ayda onay bekleyen izin varsa kapatı lamaz |
Hata kodları : 51200 (kapalı döneme hareket), 51201 (kapalı dönemin günü), 51210 (PDKS gövdesi), 51220– 51223
(dönem; 51223 onay bekleyen izin), 51118 (kapalı döneme izin), 51120 (kapalı döneme rapor).
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` . Kök `App.Hr.Attendance` (sı ra 9); dört ekran altı nda, her biri
`.Create/.Update/.Delete/.Export/.Import/.Note` ile. `App.Hr.MyTimesheet` (sı ra 10) kökte,
`App.Hr.MyTimesheetDay` onun altı nda. Ayar yetkisi `App.HrSettings.Attendance` (`App.Administration`
grubu, `App.HrSettings` altı nda). Hiçbir yetki role otomatik atanmaz.
| Rol | Yetkiler |
| --- | --- |
| Tüm çalı şanlar | `App.Hr.MyTimesheet` , `App.Hr.MyTimesheetDay` (widget ve Puantajı m) |
| İK | `App.Hr.Attendance` dalı nı n tamamı , `App.HrSettings.Attendance` |
| PDKS servis kullanı cı sı | `PDKS` rolü + `App.DeveloperKit.CustomEndpoints.Post` |
---
### 7. Entegrasyonlar
| Modül | Yön | Nası l |
| --- | --- | --- |
| Kimlik › Kullanı cı lar | → puantaj | PDKS Kart No / Sicil No kişi eşlemesi, vardiya, işe giriş/çı kı ş; kart numarası değişikliği gece işinde yansı r |
| İzin Yönetimi | → puantaj | `Hr_S_LeaveRequestAfterSave` (kayı t, karar, silme) sonunda talebin günleri — tarihi değiştiyse eski günleri de — yeniden hesaplanı r; onaylı izin `Leave` |
| Sağlı k Kartı › İstirahatler | ↔ izin, → puantaj | `Hr_S_LeaveSickLeaveSync` (kayı t, silme) raporu onaylı Rapor talebine eşler, rapora denk gelen izin günlerini bakiyeye döndürür (`Hr_S_LeaveDaysRefresh`), günleri yeniden hesaplar; rapor `Sick` |
| Eğitimler | → puantaj | Katı ldı işaretli katı lı mcı nı n eğitim günleri `Training` ; eğitim/katı lı mcı kaydı `Hr_S_TrainingSync` ile hemen yansı r |
| Çalı şma Takvimi | → izin, → puantaj | Tatil `Holiday` , arife `HalfDay` (yarı m vardiya); takvim kaydı denk gelen izinlerin gün sayı sı nı ve puantajı hemen yeniler (`Hr_S_WorkCalendarAfterSave`) |
| Vardiyalar / kullanı cı vardiyası | → puantaj | Saat, mola, tolerans; değişiklik gece işinde ya da dönem kaydı nda yansı r |
| İzin ayarları | → puantaj | Hafta tatili günleri |
2026-10-07 14:34:49 +00:00
| PDKS | → hareket | Custom Endpoint `POST /api/app/custom-endpoint/hr/attendance/` (`data/App.DeveloperKit.CustomEndpoints/3c8b861f-abfa-5db3-8d93-8c1a08605ac5.json`, `PermissionsJson` : rol `PDKS` ) |
2026-10-07 08:17:46 +00:00
| Excel | → hareket | Günlük Hareketler import'u aynı kayı t yolundan (`InsertAfterCommand`) geçer; `Source` boş gelir ve `Import` yazı lı r |
| Intranet | ← puantaj | `my-timesheet` widget'ı |
| Kullanı cı detayı | ← puantaj | Puantaj sekmesi |
#### 7.1 Çakı şma kuralları (modüller birbirine zı t sonuç vermez)
| Durum | Kural | Nerede |
| --- | --- | --- |
| Raporlu gün | Devamsı z yazı lmaz; `Sick` her şeyin önündedir (okutma olsa da) | `Hr_S_TimesheetCalculate` |
| Yı llı k izin sı rası nda rapor | Rapora denk gelen izin günü izinden sayı lmaz, bakiyeye döner; puantajda `Sick` | `Hr_F_LeaveNetDays` , `Hr_S_LeaveDaysRefresh` |
| Rapor talebi onay beklerken | Sağlı k kartı na ve puantaja düşmez; onayla istirahat kaydı oluşur, redde kalkar | `Hr_S_LeaveRequestAfterSave` |
| Ücretli izne denk gelen tatil | Puantajda `Holiday` /`WeeklyOff`; izin gün sayı sı na girmez (4857 md. 56) | hesap + `Hr_F_LeaveWorkDays` |
| Ücretsiz izin / doğum izni | Hafta tatili ve genel tatil dahil `Leave` (ücret doğmaz); aylı kta `UnpaidLeaveDays` | hesap + aylı k view |
| Eğitime katı lan | Okutması yoksa devamsı z değil `Training` ; okutması varsa `Work` | hesap |
| Kapalı puantaj ayı | İzin talebi ve rapor eklenemez/değiştirilemez/silinemez (51118, 51120); onay bekleyen izni olan ay kapatı lamaz (51223) | guard + kayı t prosedürleri + dönem kaydı |
| İstihdam dı şı | İzin tarihleri işe giriş – işten çı kı ş arası nda olmalı (51119); puantaj istihdam dı şı nda gün yazmaz | `Hr_S_LeaveRequestAfterSave` , hesap |
| Takvime sonradan girilen bayram | Denk gelen izinlerin gün sayı sı ve puantaj hemen yenilenir | `Hr_S_WorkCalendarAfterSave` |
PDKS gövdesi:
```json
{ "Items": [ { "CardNo": "000123", "EventTime": "2026-10-05T08:02:00", "Direction": "In", "DeviceCode": "GATE-1" } ] }
```
`Items` dizi ya da JSON metni olabilir; `CardNo` yerine `UserName` gönderilebilir. Endpoint kaydı
kiracı ya aittir (`CustomEndpoint` `IMultiTenant` ): seed satı rı host'a kurulur, kiracı da Developer Kit ›
Custom Endpoints'ten aynı SQL ve parametrelerle eklenir.
---
### 8. Akı ş örneği
1. İK üretim çalı şanları nı n kullanı cı kartı na (İş sekmesi) PDKS Kart No girer; ofis çalı şanları nda alan boştur (elle takip).
2. PDKS her 5 dakikada okutmaları uca gönderir; **Günlük Hareketler** 'e düşer, Günlük Puantaj o hafta için güncellenir. Tanı msı z kart "Kart tanı msı z" görünür; numara kullanı cı kartı na girilince gece işi okutmayı işler.
3. Gece 02:00'de iş dünü kurar: kartlı çalı şanı n okutması z iş günü Devamsı z, elle takip edilen çalı şanı n günü vardiya saatleriyle Varsayı lan çalı şma.
4. Ofis çalı şanı bir gün gelmez; İK **Günlük Puantaj** 'da o günü Devamsı z yapar (gün Elle olur).
5. Ay sonunda İK **Aylı k Puantaj** 'ı kontrol eder, yı llı k sı nı rı aşanları görür; **Puantaj Dönemleri** 'nde ayı Kapalı yapar.
6. Çalı şan panodaki **Puantajı m** 'da ayı nı ve yı l toplamı nı görür, butonla ayları na ve günlerine iner.
---
### 9. Sı k sorulanlar ve bilinen sı nı rlar
**Okutması olmayan çalı şan neden hep "geldi" görünüyor?** Kullanı cı kartı nda PDKS Kart No yoksa (ya da henüz PDKS okutması gelmediyse) elle takip edilir; gelinmeyen gün Günlük Puantaj'da işaretlenir. İlk PDKS okutması ndan itibaren okutmayla takip edilir.
**Düzelttiğim gün neden yeniden hesapta değişmiyor?** Elle düzeltilen gün korunur. Otomatiğe döndürmek için satı rı silin.
**Vardiya/takvim/ayar değişti, puantaj eski.** Gece işi dünün ve önceki ayı n günlerini yeniler; hemen yansı tmak için Puantaj Dönemleri'nde ilgili ayı kaydedin.
**Kapalı aya PDKS okutması geldi.** Okutma `Kapalı dönem` hatası yla kalı r; dönem açı lı p kaydedilirse hareket ekranı ndan düzenlenerek işlenir.
**Fazla mesai hafta tatilinde neden tamamı ?** Talepte istenen kural (hafta tatili ve resmî tatilde çalı şma fazla mesaidir); haftalı k 45 saat birikimine bu günler katı lmaz.
**İzin talebinin tarihi değişti, eski günler ne olur?** Aynı kayı tta düzelir: tek çalı şanlı k hesap kaynağı kalmayan izinli/raporlu/eğitim günlerini aralı ğa katar.
**Hasta raporu alan çalı şan devamsı z mı yazı lı r?** Hayı r. Rapor günleri (hafta sonu dahil) `Raporlu` dur; aynı güne izin ya da okutma düşse bile rapor önce gelir. Yı llı k izindeyken rapor alı ndı ysa o günler izinden düşmez, bakiyeye döner.
**Eğitimdeki çalı şan devamsı z görünüyor.** Katı lı mcı satı rı nda durum "Katı ldı " olmalı dı r; "Katı lmadı /Mazeretli" günler normal hesaplanı r.
**Çalı şma Takvimi kaydı sonrası hangi günler yenilenir?** Satı rı n tarihleri (yı llı k tekrarlı da bu yı l ve gelecek yı l). Tarihi değiştirilen satı rı n eski günleri gece işinde ya da dönem kaydı nda düzelir.
---
### 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/sql/object/Hr_T_{AttendanceLog,Timesheet,TimesheetPeriod}.sql` | Tablolar |
| `configs/seeds/sql/object/Hr_T_Shift.sql` | Vardiya toleransı kolonları |
| `configs/seeds/sql/object/Hr_V_{AttendanceShift,TimesheetMonthly}.sql` | View'lar |
| `configs/seeds/sql/object/Hr_F_{WorkCalendarDayType,TimesheetPeriodClosed,LeaveNetDays}.sql` | Takvim günü türü, kapalı dönem, rapordan arı nmı ş izin günü |
| `configs/seeds/sql/object/Hr_S_{TimesheetCalculate,AttendanceProcess,AttendanceImport,TimesheetPeriodAfterSave,TimesheetNightly}.sql` | Hesap ve tetikler |
| `configs/seeds/sql/object/Hr_S_{LeaveRequestAfterSave,LeaveRequestGuard,LeaveSickLeaveSync,LeaveDaysRefresh}.sql` | İzin/rapor → puantaj tetiği, kapalı dönem guard'ı , rapor → izin günü |
| `configs/seeds/sql/object/Hr_S_{TrainingSync,WorkCalendarAfterSave}.sql` | Eğitim ve takvim → puantaj tetiği |
| `configs/seeds/wizard/{LeaveRequest,MyLeaveRequest,HealthCardSickLeave,Training,TrainingParticipant,WorkCalendar}.json` | Tetik komutları (silme dahil) |
| `api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs` (`UserSickLeave`) | Kullanı cı detayı ndaki istirahat listesinin silme tetiği |
| `configs/seeds/wizard/{AttendanceLog,Timesheet,TimesheetMonthly,TimesheetPeriod,MyTimesheet,MyTimesheetDay}.json` | 6 wizard |
2026-10-09 11:33:26 +00:00
| `configs/seeds/wizard/Hr_Shift.json` | Tolerans alanları |
2026-10-07 08:17:46 +00:00
| `configs/seeds/data/App.DeveloperKit.CustomComponents/1bca19aa-e144-5e4c-b23b-9eddd4dafd19.json` | `MyTimesheetWidget` |
| `configs/seeds/data/App.DeveloperKit.IntranetWidgets.json` | `my-timesheet` |
2026-10-07 14:34:49 +00:00
| `configs/seeds/data/App.DeveloperKit.CustomEndpoints/3c8b861f-abfa-5db3-8d93-8c1a08605ac5.json` | PDKS ucu |
2026-10-07 08:17:46 +00:00
| `configs/seeds/data/App.BackgroundWorkers.RecurringJobs.json` | `Timesheet Nightly` |
| `configs/seeds/data/App.SettingDefinitions.json` | `App.HrSettings.Attendance.*` |
| `configs/seeds/data/{App.Menus.Menu,Abp.Identity.Permissions,App.Languages.LanguageText}.json` | Menü, yetki, dil |
| `ui/src/views/admin/user-management/{TimesheetTab,Details}.tsx` | Kullanı cı detayı › Puantaj |
Geri alma: Wizard Manager'dan altı ekran silinir; widget, endpoint, iş ve ayar satı rları kendi
ekranları ndan kaldı rı lı r. İzin/rapor prosedürlerindeki `Hr_S_TimesheetCalculate` çağrı sı kaldı rı lmadan
prosedür silinmemelidir. Tablolar düşürülmez.
<!-- module - doc:section App.Hr.HealthCard -->
## Sağlı k Kartları (`App.Hr.HealthCard`)
İşyeri hekimliği için çalı şan sağlı k kartı : soy/özgeçmiş, anamnez, laboratuvar ve fizik muayene
bulguları , çalı şmaya elverişlilik sonucu (vardiya/gece çalı şması dahil), periyodik muayeneler,
revir (hasta protokol defteri) başvuruları ve istirahat raporları . Kart ayrı bir tablo değildir:
tek kayı tlı k bölümler doğrudan çalı şanı n kullanı cı satı rı nda (`AbpUsers` genişletme kolonları ),
çok kayı tlı bölümler `Adm_T_User*` tabloları ndadı r. Tamamı konfigürasyon + platformun kullanı cı
detay ekranı dı r.
> 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 |
| --- | --- | --- |
| İşyeri hekimi / sağlı k personeli | Kartı doldurur, periyodik muayene ve revir başvurusu girer, elverişlilik sonucunu yazar | Sağlı k Kartları (detay sekmeleri) |
| İK | Kart durumunu izler, istirahat raporları nı girer; hekim, hastane ve bölüm tanı mları nı yönetir | Sağlı k Kartları · İK › Tanı mlar |
| Sistem yöneticisi | Aynı veriyi kullanı cı detayı nda görür | Kimlik › Kullanı cı lar › detay › Sağlı k Kartı sekmesi |
Kapsam: kiracı . Liste, kiracı nı n **tüm kullanı cı ları dı r** (aktif/pasif); satı r süzmesi yoktur.
---
### 2. Analiz ve kararlar
> Modül §0.13 kuralı ndan önce üretildi; keşif turu kaydı yoktur. Kararlar artefaktlardan (wizard,
> entity, `HealthCardTab.tsx`) okunmuştur.
| Konu | Karar |
| --- | --- |
| Veri yeri | Kart başı na tek değer taşı yan alanlar (kan grubu, anamnez, muayene bulguları , sonuç) ** `AbpUsers` genişletme kolonları dı r** — ayrı kart tablosu yok |
| Liste | Sağlı k Kartları ekranı `AbpUsers` üzerinde salt okunur listedir (ekle/düzenle/sil kapalı ); kart bilgileri detaydaki sekmelerden düzenlenir |
| Tek kayı tlı k sekmeler | Soy/Özgeçmiş, Laboratuvar– Fizik Muayene, Anamnez, Sonuç: aynı kullanı cı satı rı nı düzenleyen alt formlar (`Id → Id`, yalnı z güncelleme) |
| Çok kayı tlı sekmeler | Periyodik Muayeneler, Hasta Protokol Defteri, İstirahat Raporları : `Adm_T_UserPeriodicExamination` , `Adm_T_UserPatientProtocol` , `Adm_T_UserSickLeave` (`Id → UserId`) |
| İkinci giriş | Kullanı cı detayı ndaki **Sağlı k Kartı ** sekmesi (`HealthCardTab.tsx`) aynı kolonları ve aynı üç tabloyu (`App.IdentityManagement.User{PeriodicExamination,PatientProtocol,SickLeave}` listeleriyle) düzenler |
| Hekim | Kurum doktoru tanı mı (`Hr_T_Doctor`); periyodik muayenede seçilince diploma no kopyalanı r |
| Koşullu alanlar | Anamnezde "evet" denmeyen sorunun not alanı , protokolde sonuç "Sevk" değilse sevk yeri kilitlidir (`readOnly` script) |
---
### 3. Menü ve ekranlar
| Menü (TR / EN) | `ListFormCode` | Yer | Kaynak | Alt formlar |
| --- | --- | --- | --- | --- |
| Sağlı k Kartları / Health Cards | `App.Hr.HealthCard` | `İnsan Kaynakları ` (sı ra 7, `FcInspection` ) | `AbpUsers` | aşağı daki 7 sekme |
| Sekme | `ListFormCode` (menüsüz) | Kaynak | İlişki | Düzenleme |
| --- | --- | --- | --- | --- |
| Soy / Özgeçmiş | `App.Hr.HealthCardHistory` | `AbpUsers` | `Id → Id` | Yalnı z güncelleme |
| Laboratuvar – Fizik Muayene | `App.Hr.HealthCardLabPhysical` | `AbpUsers` | `Id → Id` | Yalnı z güncelleme |
| Anamnez | `App.Hr.HealthCardAnamnesis` | `AbpUsers` | `Id → Id` | Yalnı z güncelleme |
| Sonuç | `App.Hr.HealthCardResult` | `AbpUsers` | `Id → Id` | Yalnı z güncelleme |
| Periyodik Muayeneler | `App.Hr.HealthCardPeriodicExamination` | `Adm_T_UserPeriodicExamination` | `Id → UserId` | Ekle/düzenle/sil |
| Hasta Protokol Defteri | `App.Hr.HealthCardPatientProtocol` | `Adm_T_UserPatientProtocol` | `Id → UserId` | Ekle/düzenle/sil |
| İstirahat Raporları | `App.Hr.HealthCardSickLeave` | `Adm_T_UserSickLeave` | `Id → UserId` | Ekle/düzenle/sil; kayı t sonrası İzin Yönetimi'ne eşlenir (İzin Yönetimi bölümü §5.5) |
Widget'lar (liste): Toplam · Aktif · Pasif kullanı cı .
Tanı mlar (`İnsan Kaynakları › Tanı mlamalar`):
| Menü | `ListFormCode` | Seed |
| --- | --- | --- |
| Kurum Doktorları | `App.Hr.Doctor` | 1 kayı t (diploma, işyeri hekimi belge no/tarihi, T.C. kimlik) |
| Hastaneler | `App.Hr.Hospital` | 45 kurum (devlet/özel hastaneler, sağlı k ocağı , işyeri hekimliği…) |
| Hastane Bölümleri | `App.Hr.HospitalDepartment` | 31 bölüm |
---
### 4. Veri modeli
| Yer | Alanlar |
| --- | --- |
| `AbpUsers` — kimlik (liste) | `Name` , `Surname` , `IdentityNumber` , `BirthDate` , `Gender` , `BloodType` , `Email` , `PhoneNumber` , `DepartmentId` , `JobPositionId` , `HireDate` , `SskNo` , `IsActive` |
| `AbpUsers` — soy/özgeçmiş | Anne/baba/kardeş/çocuk sağlı k durumu (Alive/Disease/Deceased) + not, `BloodType` (8 grup), `ChronicDisease` , tetanoz/hepatit/diğer aşı |
| `AbpUsers` — anamnez | Şikâyetler (`Complaint*`: göğüs ağrı sı , balgamlı öksürük, nefes darlı ğı , çarpı ntı , eklem/bel ağrı sı , ishal/kabı zlı k), tanı lar (`Diagnosis*`: diyabet, kalp, böbrek, sarı lı k, ülser, işitme, görme, sinir sistemi, deri, besin zehirlenmesi), evet/hayı r + not soruları (hastanede yatı ş, ameliyat, iş kazası , meslek hastalı ğı muayenesi, malulen emeklilik, süren tedavi), sigara/alkol (None/Occasionally/Normal/Quit + not) |
| `AbpUsers` — lab/fizik | `Lab*` (biyolojik, kan, idrar, radyolojik, odyometri, SFT, psikolojik, diğer), `Exam*` (duyu, göz, KBB, deri, kalp-damar, solunum, sindirim, ürogenital, kas-iskelet, nörolojik, psikiyatrik, diğer, tansiyon, nabı z, boy, kilo) |
| `AbpUsers` — sonuç | `FitForWorkJob` , `FitForWorkCondition` , `FitnessDoctorId` , `ShiftWorkFit` , `NightWorkFit` , `ShiftNightDoctorId` |
| `Adm_T_UserPeriodicExamination` | `UserId` , `ExamDate` , `Examination` , `Result` , `DoctorId` , `DoctorDiplomaNo` |
| `Adm_T_UserPatientProtocol` | `UserId` , `SequenceNo` , `ProtocolDate` , `ProtocolType` (Disease/WorkAccident/OccupationalDisease/Control/Other), `ProtocolResult` (TreatmentDischarged/Rest/Referral), `RestDays` , `ReferralPlace` , `DoctorId` |
| `Adm_T_UserSickLeave` | `UserId` , `StartDate` , `EndDate` , `Days` , `SickLeaveType` (Disease/WorkAccident/OccupationalDisease/Maternity), `Institution` , `Clinic` , `SickLeaveReason` |
| `Hr_T_Doctor` / `Hr_T_Hospital` / `Hr_T_HospitalDepartment` | Tanı mlar |
Entity'ler: `Entities/Tenant/Administration/User{PeriodicExamination,PatientProtocol,SickLeave}.cs` ;
genişletme kolonları `AbpIdentityUserExtensions` ve EF genişletme eşlemeleri.
---
### 5. İş kuralları
| Yer | Kural |
| --- | --- |
| Anamnez | Evet/hayı r sorusu işaretli değilse not alanı salt okunur; sigara/alkol "Kullanmı yor" ise not kilitli |
| Periyodik muayene | Yeni satı rda tarih bugün; hekim seçilince diploma no kopyalanı r |
| Protokol | Yeni satı rda tarih bugün; sonuç "Sevk" değilse sevk yeri kilitli |
| İstirahat | `Days = days(Başlangı ç, Bitiş)` (bitiş dahil); bitiş başlangı çtan önceyse uyarı |
| Liste | Kayı t eklenemez/silinemez — kartı n sahibi kullanı cı kaydı dı r |
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` . `App.Hr.HealthCard` kökü; yedi sekme onun altı ndadı r. Tanı mlar
`App.Hr.Definitions` altı ndadı r. Kullanı cı detayı ndaki sekme, kullanı cı ekranı nı n yetkileriyle
(`AbpIdentity.Users` / `.Update` ) çalı şı r. Hiçbir yetki role otomatik atanmaz.
Sağlı k verisi **özel nitelikli kişisel veridir** (KVKK md. 6): Sağlı k Kartları ve alt sekmelerinin
yetkisi yalnı z işyeri hekimi ve yetkili sağlı k personeline verilmelidir. Kullanı cı detayı na erişen
yöneticiler de bu sekmeyi görebileceği için kullanı cı yönetimi yetkisi de buna göre sı nı rlanmalı dı r.
---
### 7. Entegrasyonlar
| Kaynak | Kullanı m |
| --- | --- |
| `AbpUsers` (+ `Hr_T_Department` , `Hr_T_JobPosition` ) | Kartı n sahibi ve kimlik bilgisi |
| Kullanı cı detayı (`views/admin/user-management/HealthCardTab.tsx`) | Aynı verinin ikinci düzenleme yeri |
| `Hr_T_Doctor` | Periyodik muayene, protokol, sonuç hekimleri |
Hastane ve hastane bölümü tanı mları **henüz hiçbir sekmeye bağlı değildir** (istirahatte kurum/klinik
serbest metindir). Bildirim, periyodik muayene hatı rlatması ya da rapor şablonu yoktur.
---
### 8. Akı ş örneği
1. İşe giren çalı şanı n kartı listede hazı rdı r (kullanı cı açı ldı ğı anda). Hekim **Soy/Özgeçmiş** ve
**Anamnez** sekmelerini doldurur.
2. İşe giriş muayenesi bulguları **Laboratuvar – Fizik Muayene** 'ye, kararı **Sonuç** 'a yazı lı r
(vardiyalı /gece çalı şabilir + hekimler).
3. Yı llı k kontrol **Periyodik Muayeneler** 'e eklenir.
4. Çalı şan revire gelince **Hasta Protokol Defteri** 'ne kayı t açı lı r (tür Hastalı k, sonuç İstirahat, 1 gün).
5. Dı şarı dan alı nan rapor **İstirahat Raporları ** 'na girilir; gün sayı sı hesaplanı r.
---
### 9. Sı k sorulanlar
**Listeye neden kayı t eklenemiyor?** Kart kullanı cı kaydı dı r; yeni çalı şan Kimlik › Kullanı cı lar'dan açı lı r.
**Sağlı k kartı verisi nerede tutuluyor?** Tek değerli alanlar `AbpUsers` kolonları nda, muayene/protokol/istirahat ayrı tablolarda (§4).
**Kullanı cı detayı ndaki Sağlı k Kartı sekmesiyle bu ekran aynı mı ?** Evet; aynı veriyi iki yerden düzenlerler.
**Hastane tanı mı nerede kullanı lı yor?** Şu an hiçbir yerde; ileride istirahat/sevk alanları na lookup olarak bağlanmak üzere duruyor.
**İstirahat raporu izinlere yansı yor mu?** Evet, tek kayı ttı r: buradan (ya da kullanı cı detayı ndaki İstirahatler'den) girilen rapor İK › İzin Yönetimi'nde onaylı Rapor (`Sick`) talebi olur; çalı şanı n Intranet'ten açtı ğı Rapor talebi de bu sekmeye düşer (`Hr_S_LeaveSickLeaveSync`, ayrı ntı İzin Yönetimi bölümü §5.5). Rapor yı llı k izin bakiyesinden düşmez; yı llı k izindeyken alı nan raporun günleri izinden sayı lmaz, bakiyeye döner. Çalı şanı n rapor talebi sağlı k kartı na onaylanı nca düşer. Raporun günleri (hafta sonu dahil) puantajda Raporlu olur, devamsı z yazı lmaz (`Hr_S_LeaveSickLeaveSync` sonunda yeniden hesap, Puantaj ve Devam Takibi bölümü §7.1). Kapalı puantaj ayı na düşen rapor kaydedilemez/silinemez; önce İK dönemi açar.
---
### 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/wizard/HealthCard{,History,LabPhysical,Anamnesis,Result,PeriodicExamination,PatientProtocol,SickLeave}.json` | 8 wizard |
| `configs/seeds/wizard/{Doctor,Hospital,HospitalDepartment}.json` , `data/App.Hr.{Doctor,Hospital,HospitalDepartment}.json` | Tanı m ekranları ve verisi |
| `api/src/Sozsoft.Platform.Domain/Entities/Tenant/Administration/User{PeriodicExamination,PatientProtocol,SickLeave}.cs` | Çok kayı tlı sekmelerin entity'leri (migration'lı ) |
| `ui/src/views/admin/user-management/HealthCardTab.tsx` | Kullanı cı detayı ndaki sekme |
Kart sekmelerini kaldı rmak wizard'ları siler; `AbpUsers` kolonları ve `Adm_T_User*` tabloları
entity/migration'a bağlı olduğu için kalı r.
2026-10-08 06:24:59 +00:00
<!-- module - doc:section App.Hr.Training claims=App.Hr.TrainingType, App.Hr.TrainingSubject -->
## Eğitimler (`App.Hr.Training`)
2026-10-07 08:17:46 +00:00
Şirket içi ve dı şı eğitimlerin kaydı : eğitim tipi → konu tanı mları , eğitim oturumu (tarih/saat,
süre, yer, eğitmen, maliyet, kazandı rdı ğı yetkinlikler), katı lı mcı lar (katı lı m durumu, puan,
katı lı m belgesi) ve eğitim dosyaları . Tamamı konfigürasyondur (Wizard + rapor şablonu); 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 / eğitim sorumlusu | Tip ve konu tanı mlar, eğitim açar, katı lı mcı ekler, katı lı m/puan girer, dosya yükler, katı lı m belgesi basar | Eğitim Tipleri · Eğitim Konuları · Eğitimler |
| Yönetim | Eğitim adedi, açı k/kapalı durum ve toplam maliyeti izler (widget, Pivot, Chart) | Eğitimler |
Kapsam: kiracı (`IsTenant`). Eğitim bir şubeye bağlı dı r (`BranchId` zorunlu); satı r süzmesi yoktur.
---
### 2. Analiz ve kararlar
> Modül §0.13 kuralı ndan önce üretildi; keşif turu kaydı yoktur. Kararlar artefaktlardan
> (wizard, SQL, seed, commit `36546d0c` "Human Resources -> Eğitim bilgileri") okunmuştur.
| Konu | Karar |
| --- | --- |
| Yol | Wizard ekranları ; eğitim kaydı nı n altı nda Katı lı mcı lar ve Dosyalar sekmeleri (menüsüz alt formlar) |
2026-10-08 06:24:59 +00:00
| Tanı mlar | Tip ve konu tanı mları **İK › Tanı mlamalar** altı ndadı r (önceden `App.Hr.Trainings` ara menüsündeydi; ara menü kaldı rı ldı , Eğitimler doğrudan `App.Hr` altı na alı ndı ); konu bir tipe bağlı dı r ve tip seçimine göre süzülür |
2026-10-07 08:17:46 +00:00
| Süre | `Toplam Süre (saat) = gün sayı sı (bitiş dahil) × günlük saat (bitiş – başlangı ç saati)` — formda hesaplanı r |
| Maliyet | Altı kalem (yer, eğitmen, konaklama, ulaşı m, ikram, diğer) toplanarak `CostTotal` formda hesaplanı r |
| Yetkinlik | Eğitimin kazandı rdı ğı yetkinlikler `SkillIds` (çok değerli, `Hr_T_Skill` ) olarak saklanı r; çalı şan profiline (`Adm_T_UserSkill`) **yazı lmaz** |
| Katı lı mcı | Personel seçilince işe giriş tarihi, departman ve pozisyon kullanı cı kaydı ndan kopyalanı r (eğitim anı ndaki hâli saklanı r) |
| Katı lı m durumu | Attended / NotAttended / Excused; varsayı lan **Attended** |
| Katı lı m belgesi | Yalnı zca `Attended` satı rda görünen satı r butonu → **Katı lı m Belgesi** raporu (`DynamicReport`) |
| Dosyalar | Belge türü `Hr_T_DocumentType` (ortak İK tanı mı ); dosya içeriği base64 (`dxImageUpload`) |
---
### 3. Menü ve ekranlar
2026-10-08 06:24:59 +00:00
Eğitimler doğrudan `İnsan Kaynakları ` altı ndadı r (`App.Hr.Training`, sı ra 8, ikon `FcGraduationCap` );
tip ve konu tanı mları `İnsan Kaynakları › Tanı mlamalar` altı ndadı r.
2026-10-07 08:17:46 +00:00
2026-10-08 06:24:59 +00:00
| Menü yeri | Menü (TR / EN) | `ListFormCode` | Alt formlar | Görünümler | Widget'lar |
2026-10-07 08:17:46 +00:00
| --- | --- | --- | --- | --- | --- |
2026-10-08 06:24:59 +00:00
| Tanı mlamalar (sı ra 19) | Eğitim Tipleri / Training Types | `App.Hr.TrainingType` | — | Grid, Card, Pivot, Chart | Toplam · Aktif · Pasif |
| Tanı mlamalar (sı ra 20) | Eğitim Konuları / Training Subjects | `App.Hr.TrainingSubject` | — | Grid, Card, Pivot, Chart | Toplam · Aktif · Pasif |
| İnsan Kaynakları (sı ra 8) | Eğitimler / Trainings | `App.Hr.Training` | `TrainingParticipant` , `TrainingFile` (`Id → TrainingId`, menüsüz) | Grid, Card, Pivot, Chart | Toplam · Açı k · Kapalı · Toplam Maliyet |
2026-10-07 08:17:46 +00:00
Seed verisi: 8 eğitim tipi (Oryantasyon, İş Başı , Teknik Oryantasyon, Grup, Firma Dı şı , Eğitim
İçerikli Sosyal Faaliyet, Akademi, Rotasyon) ve 18 eğitim konusu (`data/App.Hr.{TrainingType,TrainingSubject}.json`).
Satı r butonu: Katı lı mcı lar › **Katı lı m Belgesi** — rapor `3840a20d-3233-4d17-bc06-ccfd8d87b32a` ,
görünürlük `AttendanceStatus === 'Attended'` .
---
### 4. Veri modeli
```
Hr_T_TrainingType ──< Hr_T_TrainingSubject
│ │
└──────< Hr_T_Training > ──── Sas_T_Branch
├──< Hr_T_TrainingParticipant > ── AbpUsers (+ Department, JobPosition)
└──< Hr_T_TrainingFile > ── Hr_T_DocumentType
```
| Tablo | Önemli kolonlar | Kural |
| --- | --- | --- |
| `Hr_T_TrainingType` | `Name` , `IsActive` | — |
| `Hr_T_TrainingSubject` | `TrainingTypeId` , `Name` , `IsEvaluated` (değerlendirilsin mi), `IsActive` | — |
| `Hr_T_Training` | `TrainingTypeId` , `TrainingSubjectId` (tipe göre cascade), `EntryDate` , `BranchId` , `StartDate` , `EndDate` , `StartTime` , `EndTime` , `TotalHours` , `Status` (Open/Closed), `TrainerName` , `TrainingPlace` , `TrainingInstitution` , `Description` , `SkillIds` , `CostPlace` , `CostTrainer` , `CostAccommodation` , `CostTransport` , `CostCatering` , `CostOther` , `CostTotal` | Bitiş başlangı çtan önce olamaz (form) |
| `Hr_T_TrainingParticipant` | `TrainingId` , `UserId` , `HireDate` , `DepartmentId` , `JobPositionId` , `AttendanceStatus` , `EvaluationScore` , `ExamScore` , `LeaveDate` , `Note` | — |
| `Hr_T_TrainingFile` | `TrainingId` , `DocumentTypeId` , `FileDate` , `FileName` , `FileContent` | Dosya zorunlu |
Tablo düzeyinde CHECK ya da tekil indeks yoktur; kurallar formdadı r.
---
### 5. İş kuralları ve hesaplar
Hesapları n tamamı `EditorScript` 'tir (sunucu tarafı nda after-command yoktur):
| Alan | Kural |
| --- | --- |
| `EntryDate` | Yeni kayı tta bugün |
| `Status` | Yeni kayı tta `Open` |
| `TotalHours` | Başlangı ç/bitiş tarihi ya da saatlerinden biri değişince `round(days(StartDate, EndDate) × hours(StartTime, EndTime), 2)` ; dört alan dolu olmalı |
| `EndDate` | Başlangı çtan önceyse uyarı + değişiklik geri alı nı r |
| `CostTotal` | Altı maliyet kaleminden biri değişince toplam |
| Katı lı mcı `UserId` | Seçilince `HireDate` , `DepartmentId` , `JobPositionId` kopyalanı r |
| `AttendanceStatus` | Yeni satı rda `Attended` |
| Dosya `FileDate` | Yeni satı rda bugün |
| Tip/Konu `IsActive` , `IsEvaluated` | Yeni kayı tta `true` |
Saat hesabı aynı günlük saat aralı ğı nı n her gün tekrarlandı ğı nı varsayar; gün sayı sı na bitiş günü dahildir.
---
### 6. Yetki ve görünürlük
2026-10-08 06:24:59 +00:00
İzin grubu `App.Hr` , modül `Sas|Hr` . Yetki ağacı menüyü izler: `App.Hr.TrainingType` ve
`App.Hr.TrainingSubject` `App.Hr.Definitions` altı nda, `App.Hr.Training` grubun kökündedir; her biri
`.Create/.Update/.Delete/.Export/.Import/.Note` taşı r. `TrainingParticipant` ve `TrainingFile`
`App.Hr.Training` altı ndadı r. Satı r süzmesi yoktur. Hiçbir yetki role otomatik atanmaz.
2026-10-07 08:17:46 +00:00
| Rol | Yetkiler |
| --- | --- |
2026-10-08 06:24:59 +00:00
| Eğitim sorumlusu | `App.Hr.Training` dalı nı n tamamı + `App.Hr.TrainingType` , `App.Hr.TrainingSubject` |
2026-10-07 08:17:46 +00:00
| Bölüm yöneticisi (izleme) | `App.Hr.Training` + `App.Hr.TrainingParticipant` (salt okuma) |
---
### 7. Entegrasyonlar
| Kaynak | Kullanı m |
| --- | --- |
| `Sas_T_Branch` | Eğitimin şubesi |
| `AbpUsers` | Katı lı mcı ; işe giriş tarihi, departman, pozisyon kopyası |
| Kullanı cı detayı › Eğitimler | Katı lı mcı lar ekranı çalı şana süzülmüş açı lı r; satı r eklemek çalı şanı eğitime katı lı mcı yapar (Personel Kaydı bölümü) |
| `Hr_T_Department` , `Hr_T_JobPosition` | Katı lı mcı nı n o anki birimi (Pivot kı rı lı mı ) |
| `Hr_T_Skill` / `Hr_T_SkillType` | Eğitimin kazandı rdı ğı yetkinlikler |
| `Hr_T_DocumentType` | Eğitim dosyası türü |
| Raporlar | Katı lı m Belgesi (`DynamicReport`, `Raporlar` kategorisi) |
| Performans Yönetimi | Gelişim planı aksiyonu bir eğitime bağlanabilir (`Hr_T_DevelopmentPlan.TrainingId`); çalı şan o eğitimde **Attended** ise aksiyon kendiliğinden tamamlanı r: plan kaydı nda ve katı lı mcı kaydı nda (`Hr_S_DevelopmentPlanSync`, `Hr_S_TrainingSync` ; bkz. Performans Yönetimi bölümü) |
| Puantaj ve Devam Takibi | **Katı ldı ** işaretli katı lı mcı nı n başlangı ç– bitiş arası ndaki iş günleri puantajda `Eğitimde` (vardiya saatleriyle) yazı lı r, okutması olmadı ğı için devamsı z sayı lmaz. Eğitim ya da katı lı mcı eklenince, değişince, silinince `Hr_S_TrainingSync` günleri hemen yeniden hesaplar (Puantaj ve Devam Takibi bölümü §7.1) |
---
### 8. Akı ş örneği
1. İK **Eğitimler** 'de "İş Sağlı ğı ve Güvenliği" kaydı nı açar: tip Grup Eğitimi, konu İSG, şube
Merkez, 3– 4 Kası m 09:00– 17:00 → toplam süre 16 saat; eğitmen ve yer maliyetini girer → toplam
maliyet hesaplanı r; kazandı rdı ğı yetkinliği (İSG) seçer.
2. **Katı lı mcı lar** sekmesine personeli ekler; departman/pozisyon kopyalanı r, durum Katı ldı .
3. Gelmeyen personeli **Katı lmadı ** , raporlu olanı **Mazeretli** yapar; sı nav/değerlendirme puanları nı girer.
4. Katı lanları n satı rı ndan **Katı lı m Belgesi** bası lı r; imzalı liste **Dosyalar** sekmesine yüklenir.
5. Eğitim **Kapalı ** yapı lı r; widget'taki toplam maliyete eklenir.
---
### 9. Sı k sorulanlar
**Toplam süre hesaplanmı yor.** Başlangı ç/bitiş tarihi ve başlangı ç/bitiş saatinin dördü de dolu olmalı .
**Katı lı m belgesi butonu görünmüyor.** Yalnı zca katı lı m durumu "Katı ldı " olan satı rda çı kar.
**Eğitim konusu listesi boş.** Konu, seçilen eğitim tipine göre süzülür; önce tip seçin.
**Eğitimdeki yetkinlik çalı şan profiline yazı lı yor mu?** Hayı r; `SkillIds` eğitimin bilgisidir. Profil, Performans Yönetimi'nde tamamlanan değerlendirmeden güncellenir.
**Katı lı mcı nı n departmanı sonradan değişti, eğitimde eski görünüyor.** Bilinçli: eğitim anı ndaki birim saklanı r.
---
### 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/sql/object/Hr_T_{TrainingType,TrainingSubject,Training,TrainingParticipant,TrainingFile}.sql` | Tablolar |
| `configs/seeds/wizard/{TrainingType,TrainingSubject,Training,TrainingParticipant,TrainingFile}.json` | 5 wizard |
| `configs/seeds/data/App.Hr.{TrainingType,TrainingSubject}.json` | Tanı m verisi |
| `configs/seeds/data/App.Reports.ReportTemplates.json` | Katı lı m Belgesi şablonu |
| `configs/seeds/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 (`TrainingParticipant`, `TrainingFile` )
önce, sonra `Training` , `TrainingSubject` , `TrainingType` silinir; tablolar yalnı zca onayda seçilirse
düşer. Gelişim planları ndaki `TrainingId` bağları silinmez, boşa düşer.
<!-- module - doc:section App.Hr.Performance claims=App.Hr.PerformanceRating -->
## Performans Yönetimi (`App.Hr.Performance`)
Dönem bazlı performans süreci: İK dönemi açar, çalı şan hedeflerini ve öz değerlendirmesini yapar,
yönetici değerlendirir, isteğe bağlı 360 derece geri bildirim toplanı r, İK kalibre eder, sonuç
gelişim planı na ve çalı şanı n yetkinlik profiline yansı r. **İnsan Kaynakları menüsü İK
departmanı nı ndı r** (şartları belirler, değerlendirmeleri takip eder ve girer); çalı şan ve yönetici
kendisiyle ilgili her şeyi **Intranet › Dashboard** 'daki widget'lardan takip eder. Tamamı konfigürasyondur (Wizard + Custom
Component + SQL nesneleri); yeni 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 | Dönem ve yetkinlik seti tanı mlar, tüm değerlendirmeleri izler, 360 değerlendiricisi atar, kalibre eder, gelişim planları nı izler | Dönemler · Tüm Değerlendirmeler · Kalibrasyon · Gelişim Planları · Performans Dereceleri |
| Çalı şan | Hedeflerini girer, gerçekleşeni ve öz değerlendirmesini yazar, yöneticiye gönderir, gelişim aksiyonları nı n ilerlemesini günceller | Intranet panosu: **Performansı m** widget'ı → Değerlendirmelerim · Gelişim Planı m · Profil › Performansı m (Değerlendirmelerim · Hedeflerim · Gelişim Planı m · 360 Taleplerim salt okunur) |
| Yönetici | Hedefleri onaylar, yetkinlik seviyesini ve yorumunu verir, kalibrasyona gönderir, gelişim aksiyonu planlar | Intranet panosu: **Ekibimin Performansı ** widget'ı → Ekibimin Değerlendirmeleri |
| 360 değerlendiricisi | Kendisine atanan çalı şanı n yetkinliklerini puanlar ve gönderir | Intranet panosu: **360 Taleplerim** widget'ı → 360 Taleplerim |
Kapsam: kiracı (`IsTenant`). Şube/birim kı rı lı mı yoktur.
---
### 2. Analiz ve kararlar
#### 2.1 Talep
> İnsan Kaynakları › Performans Yönetimi: değerlendirme dönemi tanı mı , hedefler (KPI/OKR, ağı rlı k %,
> gerçekleşme), yetkinlik değerlendirmesi (Skill Types üzerinden), öz değerlendirme + yönetici
> değerlendirmesi, isteğe bağlı 360 derece, kalibrasyon ekranı , gelişim planı ; uygulamanı n diğer
> özellikleriyle entegre.
#### 2.2 Depodan okunanlar (sorulmadı )
- Çalı şan = `AbpUsers` (`DepartmentId`, `JobPositionId` taşı r).
- Yetkinlik zinciri `Hr_T_SkillType → Hr_T_Skill → Hr_T_SkillLevel` (`Progress` 0– 100); çalı şan profili `Adm_T_UserSkill` (`Level` 1– 5).
- Kök menü `App.Hr` , izin grubu `App.Hr` , modül `Hr` ; tanı mlar `App.Hr.Definitions` altı nda.
- **Yönetici ilişkisi ne `AbpUsers` 'ta ne `Hr_T_Department` 'ta vardı r** — bu yüzden sorudur.
#### 2.3 Keşif turu cevapları
| # | Soru | Seçilen | Gerekçe |
| --- | --- | --- | --- |
| 1 | Ekran yapı sı | Wizard ekranları + çalı şana ait özet (Custom Component) | Liste/form kalı bı na sı ğan her şey Wizard; özet ilk sürümde İK menüsünde "Performansı m" panosuydu, §2.4'teki kararla Intranet widget'ları na taşı ndı |
| 2 | Yönetici nereden gelir | Değerlendirme kaydı nda seçilir (`ManagerId`, `AbpUsers` lookup) | Platform tablosu şeması değişmez (çerçeve içi) |
| 3 | Genel puan formülü | Dönemde ağı rlı k tanı mlı : Genel = Hedef puanı × a + Yetkinlik puanı × b | Dönem bazı nda değiştirilebilir (varsayı lan 60/40) |
| 4 | Akı ş | Durum alanı yla, onaysı z (WorkflowDto yok) | Geçiş kuralları prosedürde |
| 5 | Yetkinlik ölçeği | `SkillLevel` + `Progress %` ; tamamlanı nca `UserSkill` 'e yazı lı r | Skill Types'ı n kendi seviyeleri kullanı lı r, profil güncel kalı r |
| 6 | Hedef gerçekleşme | Yönlü, %150 tavanlı | Artan/Azalan hedef ayrı mı , aşı m ödüllendirilir ama sı nı rlı dı r |
| 7 | 360 | Dönem bayrağı , bilgi amaçlı | Ortalama gösterilir, genel puana girmez |
| 8 | Görünürlük | Rol + kullanı cı süzmesi | İK hepsini, diğerleri kendi/ekibinin kaydı nı görür |
#### 2.4 Onaylanan tariften sapmalar (üretimde verilen kararlar)
| Tarifte | Üretilen | Neden |
| --- | --- | --- |
| Gelişim planı nda Gantt | **Scheduler** (takvim) + Todo | Gantt `ParentIdExpr` ister; aksiyonlar arası nda hiyerarşi yok |
| Derece ölçeği "Performans › Tanı mlar" | **İK › Tanı mlar** (`App.Hr.Definitions`) | İK tanı mları nı n (aday kaynağı , değerlendirme kriteri…) mevcut yeri |
| Dönem ekranı nda "Değerlendirmeler" sekmesi | Yalnı z **Yetkinlik Seti** sekmesi | Widget'lı menü ekranı alt form olamaz (standing default 13); değerlendirmeler Tüm Değerlendirmeler'de döneme göre süzülür |
| Persona alt formları | Hedef/yetkinlik/gelişim için İK, çalı şan, yönetici olmak üzere **üçer ayrı menüsüz ekran** | Alan kilidi ve satı r süzmesi ekran bazı ndadı r |
| Todo kart başlı ğı | `EmployeeName` kolonu eklendi (prosedür doldurur) | Todo başlı ğı metin kolon ister (İşe Alı m'daki `CandidateName` kalı bı ) |
| Eğitim entegrasyonu | Plan eğitime katı lı mcı **yazmaz** ; çalı şan eğitime "Katı ldı " işlenmişse plan kendiliğinden tamamlanı r | `Hr_T_TrainingParticipant.AttendanceStatus` "planlandı " değeri taşı mı yor |
| "Performansı m" panosu ve persona listeleri İK › Performans Yönetimi menüsünde | Persona listeleri **menüsüz** ; özetleri Intranet › Dashboard'da üç ayrı widget (Performansı m, Ekibimin Performansı , 360 Taleplerim), widget'taki bağlantı listeyi açar | İK menüsü İK departmanı nı ndı r; çalı şan kendisiyle ilgili bilgiyi Intranet'ten takip eder (kullanı cı kararı , 2026-10-04). Widget içeriği özet + bağlantı dı r; pano kolonları dar olduğu için liste gömülmez |
#### 2.5 Varsayı lan kalanlar
- Derece ölçeği (host seed'i): 1 Beklentinin Çok Altı nda 0– 50 (%5) · 2 Geliştirilmeli 50– 70 (%15) · 3 Beklenen Düzeyde 70– 90 (%60) · 4 Beklentinin Üstünde 90– 110 (%15) · 5 Olağanüstü 110+ (%5). Alt sı nı r dahil, üst sı nı r hariç.
- Ağı rlı k toplamı 100 değilse kayı t engellenmez; yalnı zca hedef belirleme aşaması ndan çı kı ş engellenir.
- Bildirim kanalları : `UiActivity` + `UiToast` .
---
### 3. Menü ve ekranlar
#### 3.1 İK menüsü
`İnsan Kaynakları › Performans Yönetimi` (`App.Hr.Performance`, ikon `FcBullish` ) — yalnı z İK.
| Sı ra | Menü (TR / EN) | `ListFormCode` | Wizard dosyası | Alt formlar | Görünümler |
| --- | --- | --- | --- | --- | --- |
2026-10-09 11:33:26 +00:00
| 1 | Değerlendirme Dönemleri / Review Periods | `App.Hr.PerformancePeriod` | `Hr_PerformancePeriod.json` | `PerformancePeriodSkill` | Grid, Card, Pivot, Chart |
| 2 | Tüm Değerlendirmeler / All Reviews | `App.Hr.PerformanceReview` | `Hr_PerformanceReview.json` | `PerformanceGoal` , `PerformanceCompetency` , `PerformanceFeedback` (→ `PerformanceFeedbackScore` ), `ReviewDevelopmentPlan` | Grid, Card, Pivot, Chart, Todo |
| 3 | Kalibrasyon / Calibration | `App.Hr.PerformanceCalibration` | `Hr_PerformanceCalibration.json` | — | Grid, Card, Pivot, Chart |
| 4 | Gelişim Planları / Development Plans | `App.Hr.DevelopmentPlan` | `Hr_DevelopmentPlan.json` | — | Grid, Card, Pivot, Chart, Todo, Scheduler |
| — | Performans Dereceleri (İK › Tanı mlar) | `App.Hr.PerformanceRating` | `Hr_PerformanceRating.json` | — | Grid, Card, Pivot, Chart; veri `data/App.Hr.PerformanceRating.json` ile aynalı |
2026-10-07 08:17:46 +00:00
Widget şeritleri:
| Ekran | Kartlar |
| --- | --- |
| Dönemler | Toplam · Aktif · Kalibrasyonda · Kapanan |
| Tüm Değerlendirmeler | Toplam · Hedef/Öz Değerlendirme · Yönetici Değerlendirmesinde · Kalibrasyonda · Tamamlanan |
| Kalibrasyon | Kalibrasyonda · Tamamlanan · Ortalama Puan · Ortalama Kalibre Puan |
| Gelişim Planları | Toplam · Açı k Aksiyon · Geciken · Tamamlanan |
#### 3.2 Çalı şana ait ekranlar (menüsüz)
Menüde yer almazlar; Intranet panosundaki widget'tan `/admin/list/{ListFormCode}` adresiyle açı lı rlar.
Menüsüz wizard oldukları ndan widget şeritleri yoktur (deploy menüsüz ekranı n `Widgets` 'ı nı düşürür);
özetleri panodaki widget'tadı r.
| Ekran (TR / EN) | `ListFormCode` | Wizard dosyası | Satı r süzmesi | Alt formlar | Görünümler |
| --- | --- | --- | --- | --- | --- |
2026-10-09 11:33:26 +00:00
| Değerlendirmelerim / My Reviews | `App.Hr.MyPerformanceReview` | `Hr_MyPerformanceReview.json` | `EmployeeId = @USERID` | `MyPerformanceGoal` , `MyPerformanceCompetency` , `MyDevelopmentPlan` | Grid, Card, Pivot, Chart, Todo |
| Ekibimin Değerlendirmeleri / Team Reviews | `App.Hr.TeamPerformanceReview` | `Hr_TeamPerformanceReview.json` | `ManagerId = @USERID` | `TeamPerformanceGoal` , `TeamPerformanceCompetency` , `TeamDevelopmentPlan` | Grid, Card, Pivot, Chart, Todo |
| 360 Taleplerim / My 360 Requests | `App.Hr.My360Feedback` | `Hr_My360Feedback.json` | `ReviewerId = @USERID` | `My360FeedbackScore` | Grid, Card, Pivot, Chart |
| Gelişim Planı m / My Development Plan | `App.Hr.MyDevelopmentPlan` | `Hr_MyDevelopmentPlan.json` | `EmployeeId = @USERID` | — (Değerlendirmelerim'in sekmesi; widget'tan tek liste olarak da açı lı r) | Grid |
2026-10-07 08:17:46 +00:00
#### 3.3 Intranet › Dashboard widget'ları
`Sas_T_IntranetWidget` kayı tları (`data/App.DeveloperKit.IntranetWidgets.json`, `SourceType: 1` =
Custom) üç custom component'i sağ kolona (`Column: 2`) yerleştirir. Widget'ı yalnı z `PermissionName`
yetkisi olan kullanı cı alı r (sunucu süzer, `IntranetAppService.GetWidgetsAsync` ); kullanı cı panoda
yerini değiştirebilir, gizleyebilir.
| `Code` · sı ra | Bileşen | `PermissionName` | Gösterir | Açtı ğı liste |
| --- | --- | --- | --- | --- |
| `my-performance` · 70 | `MyPerformanceWidget` | `App.Hr.MyPerformanceReview` | Aktif (tamamlanmamı ş) değerlendirmenin aşaması ve hedef/yetkinlik/genel puanı ; tamamlanan sayı sı ve ortalama puanı ; `App.Hr.MyDevelopmentPlan` yetkisi varsa açı k ve geciken gelişim aksiyonu | Değerlendirmelerim, Gelişim Planı m |
| `team-performance` · 80 | `TeamPerformanceWidget` | `App.Hr.TeamPerformanceReview` | Değerlendirmemi bekleyen (`ManagerReview`), hedef/öz değerlendirmede, tamamlanan, toplam; bekleyen ilk 5 çalı şanı n adı | Ekibimin Değerlendirmeleri |
| `my-360-feedback` · 90 | `My360FeedbackWidget` | `App.Hr.My360Feedback` | Bekleyen ve gönderilen 360 talebi | 360 Taleplerim |
Bileşenler code modundadı r ve rotası zdı r (`RoutePath: null`). Veriyi ekranı n kendi sorgusundan okur
(`GET /api/app/list-form-select/select?listFormCode=…`): satı r süzmesi (`DefaultFilter`), kiracı ve
liste yetkisi ListForm'da kalı r, bileşen yalnı zca sayar — ayrı endpoint ya da SQL yoktur. Başlı klar
`App.DashboardWidget.{MyPerformance,TeamPerformance,My360Feedback}` , boş durum ve aktif değerlendirme
metinleri `App.DashboardWidget.Performance.*` ; kart etiketleri İK şeritlerindeki
`App.Hr.Performance.Widget.*` anahtarları dı r.
---
### 4. Veri modeli
Hepsi `sql/object/Hr_T_*.sql` ; kiracı + tam audit + `IsActive` , `Guid` anahtar.
```
Hr_T_PerformancePeriod ──< Hr_T_PerformancePeriodSkill > ── Hr_T_Skill
│
└──< Hr_T_PerformanceReview > ── AbpUsers (EmployeeId, ManagerId)
│ └── Hr_T_PerformanceRating (RatingId)
├──< Hr_T_PerformanceGoal
├──< Hr_T_PerformanceCompetency > ── Hr_T_Skill / Hr_T_SkillLevel × 3
├──< Hr_T_PerformanceFeedback ─ ─ < Hr_T_PerformanceFeedbackScore > ── Hr_T_SkillLevel
└──< Hr_T_DevelopmentPlan > ── Hr_T_Skill / Hr_T_Training / Hr_T_Certificate / AbpUsers (Mentor)
```
| Tablo | Önemli kolonlar | Tekillik / kural |
| --- | --- | --- |
| `Hr_T_PerformanceRating` | `Level` , `Name` , `MinScore` , `MaxScore` , `Color` , `TargetDistribution` | `(TenantId, Level)` tekil; `MinScore < MaxScore` |
| `Hr_T_PerformancePeriod` | `StartDate` , `EndDate` , `SelfReviewDueDate` , `ManagerReviewDueDate` , `GoalWeight` , `CompetencyWeight` , `Is360Enabled` , `Status` | Ağı rlı k toplamı = 100 (CHECK); `Status` ∈ Planned, Active, Calibration, Closed |
| `Hr_T_PerformancePeriodSkill` | `PeriodId` , `SkillId` , `ExpectedLevelId` | `(PeriodId, SkillId)` tekil |
2026-10-14 21:12:14 +00:00
| `Hr_T_PerformanceReview` | `BranchId` (şube, zorunlu — standart şube sözleşmesi, ekran `IsBranch` ; `Hr_S_PerformancePeriodActivate` dönemi açarken çalı şanı n departman şubesini, yoksa çalı şana / işlemi yapana atanmı ş ilk şubeyi yazar), `PeriodId` , `EmployeeId` , `EmployeeName` , `ManagerId` , `DepartmentId` , `JobPositionId` , `Status` , `LastStatus` , `GoalScore` , `CompetencyScore` , `Feedback360Score` , `OverallScore` , `CalibratedScore` , `RatingId` , yorumlar, gönderim tarihleri | `(PeriodId, EmployeeId)` tekil; `Status` ∈ GoalSetting, SelfReview, ManagerReview, Calibration, Completed; `CalibratedScore` 0– 150 |
2026-10-07 08:17:46 +00:00
| `Hr_T_PerformanceGoal` | `GoalType` (KPI/OKR), `Title` , `Direction` (Increasing/Decreasing), `Unit` , `TargetValue` , `ActualValue` , `Weight` , `AchievementRate` | `TargetValue > 0` , `0 < Weight ≤ 100` |
| `Hr_T_PerformanceCompetency` | `SkillId` , `ExpectedLevelId` , `SelfLevelId` , `ManagerLevelId` , `Score` | `(ReviewId, SkillId)` tekil |
| `Hr_T_PerformanceFeedback` | `ReviewerId` , `Relation` (Peer/Subordinate/Superior/InternalCustomer), `Status` (Pending/Submitted), `Score` , `Comment` , `SubmittedDate` | `(ReviewId, ReviewerId)` tekil |
| `Hr_T_PerformanceFeedbackScore` | `FeedbackId` , `SkillId` , `LevelId` , `Comment` | `(FeedbackId, SkillId)` tekil |
| `Hr_T_DevelopmentPlan` | `EmployeeId` , `ReviewId` , `SkillId` , `Title` , `ActionType` , `TrainingId` , `CertificateId` , `MentorId` , `StartDate` , `DueDate` , `Status` , `Progress` | `ActionType` ∈ Training, Mentoring, Project, Reading, Certificate, Other; `Status` ∈ Planned, InProgress, Completed, Cancelled; `Progress` 0– 100 |
Seviye listeleri (`ExpectedLevelId`, `SelfLevelId` , `ManagerLevelId` , `LevelId` ) seçilen yetkinliğin
`SkillTypeId` 'sine göre süzülür (lookup cascade `SkillId` → `@param0` ).
---
### 5. İş kuralları ve hesaplar
#### 5.1 Formüller (`Hr_S_PerformanceReviewRecalc`)
| Değer | Formül |
| --- | --- |
| Hedef gerçekleşme % | Artan: `Gerçekleşen / Hedef × 100` · Azalan: `Hedef / Gerçekleşen × 100` (gerçekleşen ≤ 0 ise 150) · sonuç **0– 150** aralı ğı na kı rpı lı r · gerçekleşen boşsa boş |
| Hedef puanı | `Σ(Gerçekleşme% × Ağı rlı k) / 100` (gerçekleşmesi boş hedef 0 sayı lı r; hedef yoksa boş) |
| Yetkinlik satı r puanı | Yönetici seviyesinin `Hr_T_SkillLevel.Progress` değeri |
| Yetkinlik puanı | Puanı dolu yetkinlik satı rları nı n ortalaması |
| 360 satı r puanı | Değerlendiricinin verdiği seviyelerin `Progress` ortalaması |
| 360 ortalaması | `Status = Submitted` geri bildirimlerin ortalaması — **genel puana girmez** |
| Genel puan | `(Hedef puanı × GoalWeight + Yetkinlik puanı × CompetencyWeight) / 100` (eksik bileşen 0; ikisi de boşsa boş) |
| Derece | `COALESCE(KalibrePuan, GenelPuan)` değerinin düştüğü aralı k (`MinScore ≤ x < MaxScore `, aynı kiracı nı n aktif dereceleri ) |
Formda gerçekleşme % anlı k önizlenir (`ActualValue`/`TargetValue`/`Direction` alanları nı n
`EditorScript` 'i); kalı cı değer her kayı tta prosedürle yeniden hesaplanı r. Dönemde ağı rlı k
alanları ndan biri değişince diğeri `100 - x` olur (`EditorScript`).
#### 5.2 Durum akı şı (`Hr_S_PerformanceReviewAfterSave`)
```
GoalSetting ──(Yönetici)──▶ SelfReview ──(Çalı şan)──▶ ManagerReview ──(Yönetici)──▶ Calibration ──(İK)──▶ Completed
▲ ◀──(Yönetici iade)──┘ ◀──(Yönetici iade)──┘
```
| Aktör (ekran) | İzinli geçişler |
| --- | --- |
| İK (Tüm Değerlendirmeler, Kalibrasyon) | Her geçiş |
| Çalı şan (Değerlendirmelerim) | SelfReview → ManagerReview |
| Yönetici (Ekibimin Değerlendirmeleri) | GoalSetting → SelfReview · SelfReview → GoalSetting · ManagerReview → SelfReview · ManagerReview → Calibration |
- **GoalSetting'ten çı kı ş** için en az bir hedef olmalı ve ağı rlı k toplamı tam **100** olmalı dı r (her aktör için).
- İzinsiz geçiş hata vermez, **kayı t sonrası durum `LastStatus`'a geri alı nı r** (kayı t yenilenince eski aşama görünür).
- Geçiş damgaları : → ManagerReview `SelfSubmittedDate` , → Calibration `ManagerSubmittedDate` , → Completed `CompletedDate` .
- → **Completed** : yönetici seviyeleri `Adm_T_UserSkill` 'e yazı lı r (`Level = ⌈Progress / 20⌉`, 1– 5; var olan kayı t güncellenir, `Note = "Performans: {Dönem}"` ).
- Her kayı tta: `EmployeeName` /`DepartmentId`/`JobPositionId` çalı şandan tamamlanı r, dönemin eksik yetkinlikleri eklenir, puanlar yeniden hesaplanı r.
- Todo panosunda kartı sürüklemek de aynı kuraldan geçer.
#### 5.3 Satı r ve aşama güvenliği (`Hr_S_PerformanceGuard`, before-command)
Persona ekranları satı rı `DefaultFilter` ile süzer; kayı t uçları satı rı yalnı zca `Id` ile
güncellediği için aynı kural yazma tarafı nda prosedürle uygulanı r. Kural dı şı istek
`THROW 51000– 51005` ile reddedilir.
| Aktör | Sahiplik | Değerlendirme kaydı | Hedef / Yetkinlik | Gelişim planı | 360 |
| --- | --- | --- | --- | --- | --- |
| Çalı şan | `EmployeeId = kullanı cı ` | GoalSetting, SelfReview | GoalSetting, SelfReview | Her aşama (yalnı z ilerleme/not) | — |
| Yönetici | `ManagerId = kullanı cı ` | GoalSetting, SelfReview, ManagerReview | aynı | Her aşama | — |
| Değerlendirici | `Feedback.ReviewerId = kullanı cı ` | — | — | — | GoalSetting → ManagerReview arası |
| İK | — | Serbest | Serbest | Serbest | Serbest |
Dönem `Closed` ise İK dı şı ndaki her yazma reddedilir. "Gelişim Planı m" guard prosedüründen değil,
yalnı zca satı rı n `EmployeeId` 'sini denetleyen komuttan geçer (`THROW 51020`); aksiyon dönemden
bağı msı z olabildiği için kapalı dönemde de ilerleme güncellenebilir.
**Alan kilidi:** persona ekranı nda çalı şanı n/yöneticinin değiştirmemesi gereken alanlar salt
okunur çizilir **ve** yazma yetkisi İK ekranı nı n `.Create` /`.Update` yetkisine bağlanı r;
sunucu, kullanı cı nı n yetkisi olmayan alanı güncelleme isteğinden düşürür (`ListFormFieldManager.CanUpdate`).
| Ekran | Düzenlenebilir alanlar |
| --- | --- |
| Değerlendirmelerim | `Status` , `SelfComment` |
| Hedeflerim | Yönetici yorumu ve gerçekleşme % dı şı nda hepsi |
| Yetkinliklerim | `SelfLevelId` , `SelfComment` (ekleme/silme yok) |
| Gelişim Planı m | `Status` , `Progress` , `EmployeeNote` (ekleme/silme yok) |
| Ekibimin Değerlendirmeleri | `Status` , `ManagerComment` |
| Ekip Hedefleri | Öz yorum ve gerçekleşme % dı şı nda hepsi |
| Ekip Yetkinlikleri | Öz seviye ve öz yorum dı şı nda hepsi (ekleme/silme var) |
| Ekip Gelişim Planı | Çalı şan notu dı şı nda hepsi |
| 360 Taleplerim | `Status` , `Comment` ; puan satı rları nda `LevelId` , `Comment` |
| Kalibrasyon | `Status` , `CalibratedScore` , `CalibrationNote` |
#### 5.4 Kancalar
| Ekran | Komut | Ne çalı şı r |
| --- | --- | --- |
| Dönemler | Insert/UpdateAfter | `Hr_S_PerformancePeriodActivate` — dönem **Active** ise kiracı nı n aktif her kullanı cı sı na değerlendirme açar (var olana dokunmaz), dönemin yetkinlik setini eksik değerlendirmelere kopyalar, yeni açı lanlara bildirim gönderir |
| Yetkinlik Seti | Insert/UpdateAfter | Aynı prosedür (sonradan eklenen yetkinlik açı k değerlendirmelere eklenir) |
| Değerlendirme ekranları | InsertAfter / UpdateAfter | `Hr_S_PerformanceReviewAfterSave @rid, @kullanı cı , N'Hr' \| 'Employee' \| 'Manager'` |
| Persona ekranları | Insert/Update/DeleteBefore | `Hr_S_PerformanceGuard` |
| Hedef / Yetkinlik / 360 ekranları | After | `Hr_S_PerformanceReviewRecalc` |
| 360 (İK) | InsertBefore | Dönemde 360 kapalı ysa ya da değerlendirici çalı şanı n kendisiyse reddeder |
| 360 (İK) | InsertAfter | `Hr_S_PerformanceFeedbackOpen` — değerlendirmenin yetkinlikleri için puan satı rları nı açar, değerlendiriciye bildirim gönderir |
| 360 ekranları | UpdateAfter | `Status = Submitted` iken `SubmittedDate` damgalanı r, puan yeniden hesaplanı r |
| Gelişim planı ekranları | Insert/UpdateAfter | `Hr_S_DevelopmentPlanSync` — eğitime "Katı ldı " işlenen ya da `Completed` aksiyonu %100 ve Tamamlandı yapar |
Güncelleme komutunda `@Id` bir dizidir (`IN @Id ` ile açı lı r); aktör ` UpdateFieldsDefaultValue`
ile yazı lan `@LastModifierId` 'den okunur. Ekleme komutunda `@Id` tekildir, aktör `@CreatorId` 'dir.
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` . Her ekranı n kök yetkisi + `.Create/.Update/.Delete/.Export/.Import/.Note`
Menüsüz alt formları n yetkisi ana ekranı n altı ndadı r; menüsüz persona ekranları nı n
(Değerlendirmelerim, Ekibimin Değerlendirmeleri, 360 Taleplerim) yetkisi menü dalı olmadı ğı ndan
`App.Hr` grubunun kökündedir (deploy menüsüz ekranı böyle yazar).
**Hiçbir yetki role otomatik atanmaz** — rol ekranı ndan verilir.
Önerilen dağı tı m:
| Rol | Verilecek yetkiler |
| --- | --- |
| Tüm çalı şanlar | `App.Hr.MyPerformanceReview` (+ `.Update` ), `App.Hr.MyPerformanceGoal` (+ `.Create/.Update/.Delete` ), `App.Hr.MyPerformanceCompetency` (+ `.Update` ), `App.Hr.MyDevelopmentPlan` (+ `.Update` ), `App.Hr.My360Feedback` (+ `.Update` ), `App.Hr.My360FeedbackScore` (+ `.Update` ) |
| Yöneticiler | Yukarı dakiler + `App.Hr.TeamPerformanceReview` (+ `.Update` ), `App.Hr.TeamPerformanceGoal` , `App.Hr.TeamPerformanceCompetency` , `App.Hr.TeamDevelopmentPlan` (+ `.Create/.Update/.Delete` ) |
| İK | `App.Hr.Performance` dalı nı n tamamı + `App.Hr.PerformanceRating` |
Persona ekranları ndaki kilitli alanlar İK ekranı nı n yetkisine bağlı olduğundan, çalı şan/yönetici
rolüne **İK ekranları nı n `.Update`/`.Create` yetkisi verilmez** ; verilirse persona ekranları nda
kilitli alanlar o kullanı cı için yazı labilir hâle gelir.
Intranet widget'ı listenin okuma yetkisiyle görünür: Performansı m `App.Hr.MyPerformanceReview` ,
Ekibimin Performansı `App.Hr.TeamPerformanceReview` , 360 Taleplerim `App.Hr.My360Feedback` . Ayrı
widget yetkisi yoktur — listeyi açamayan kullanı cı ya özet de gösterilmez.
---
### 7. Entegrasyonlar
| Kaynak | Kullanı m |
| --- | --- |
| `AbpUsers` | Çalı şan, yönetici, değerlendirici, mentor; departman/pozisyon kopyası |
| Kullanı cı detayı › Performans | Değerlendirmeler ve Gelişim Planları ekranları çalı şana süzülmüş açı lı r (Personel Kaydı bölümü) |
| `Hr_T_Department` , `Hr_T_JobPosition` | Değerlendirmenin organizasyon kı rı lı mı (Pivot/Chart) |
| `Hr_T_SkillType` / `Hr_T_Skill` / `Hr_T_SkillLevel` | Dönem yetkinlik seti, beklenen/öz/yönetici/360 seviyeleri, puan (`Progress`) |
| `Adm_T_UserSkill` | Tamamlanan değerlendirmenin yönetici seviyeleri kullanı cı profiline yazı lı r |
| `Hr_T_Training` / `Hr_T_TrainingParticipant` | Gelişim aksiyonu bir eğitime bağlanı r; katı lı m "Katı ldı " ise aksiyon tamamlanı r |
| `Hr_T_Certificate` | Sertifika aksiyonları |
| Bildirimler | Tipler `PerformansDurumDegisti` , `Performans360Talebi` ; kurallar `Custom` + `UiActivity` /`UiToast` (yalnı z kanalı belirler). Metinler `App.Hr.Performance.Notification.{Status,Feedback}.{Subject,Message}` (TR), yer tutucular `[Employee]` , `[Period]` , `[Status]` . Yazan: `Hr_S_PerformanceNotify` |
Bildirim alı cı ları : → GoalSetting / SelfReview / Completed çalı şana; → ManagerReview / Completed
yöneticiye; dönem aktivasyonunda yeni açı lan her değerlendirmenin çalı şanı na; 360 eklenince
değerlendiriciye.
---
### 8. Akı ş örneği
1. İK **Yetkinlik Seti** 'ni hazı rlar (ör. İletişim → beklenen B2), **Dönemler** 'de "2026 Yı l Sonu"nu
60/40 ağı rlı k ve 360 açı k olarak girer, durumu **Aktif** yapar → tüm aktif çalı şanlara
değerlendirme açı lı r, yetkinlikler kopyalanı r, çalı şanlar bildirim alı r.
2. İK **Tüm Değerlendirmeler** 'de her kaydı n **Yönetici** 'sini seçer.
3. Çalı şan Intranet panosundaki **Performansı m** widget'ı ndan **Değerlendirmelerim** 'i açar,
**Hedeflerim** 'de hedeflerini girer (ağı rlı k toplamı 100).
4. Yönetici **Ekibimin Performansı ** widget'ı ndan **Ekibimin Değerlendirmeleri** 'ni açar, hedefleri gözden geçirir, durumu **Öz Değerlendirme**
yapar → çalı şan bildirim alı r.
5. Çalı şan gerçekleşenleri, öz seviyelerini ve yorumunu girer, durumu **Yönetici Değerlendirmesi**
yapar → yönetici bildirim alı r.
6. İK 360 sekmesinde değerlendirici ekler → değerlendiriciler panodaki **360 Taleplerim** widget'ı ndan talebi açı p puanlayı p gönderir.
7. Yönetici seviyeleri ve yorumu girer, gelişim aksiyonu planlar (ör. "İleri Excel" eğitimi),
durumu **Kalibrasyon** yapar.
8. İK **Kalibrasyon** 'da dağı lı mı (Chart/Pivot, derece × departman) hedef dağı lı mla karşı laştı rı r,
gerekenlerin **Kalibre Puan**ı nı girer, durumu **Tamamlandı ** yapar → derece kesinleşir,
yetkinlikler `UserSkill` 'e yazı lı r, çalı şan ve yönetici bildirim alı r.
9. Çalı şan eğitime "Katı ldı " işlendiğinde gelişim aksiyonu bir sonraki kayı tta kendiliğinden tamamlanı r.
---
### 9. Sı k sorulanlar
**Durumu değiştirdim ama kayı t eski aşamaya döndü.** O geçiş sizin rolünüze açı k değil (§5.2) ya da
hedef belirlemeden çı karken ağı rlı k toplamı 100 değil. Geçersiz geçiş hata vermez, geri alı nı r.
**"Değerlendirme bu aşamada bu işlem için açı k değil" hatası .** Guard tablosu (§5.3): çalı şan
yönetici değerlendirmesi başladı ktan sonra hedef/yetkinlik değiştiremez; kalibrasyon ve sonrası
yalnı z İK'dadı r; dönem kapalı ysa yalnı z İK yazar.
**Genel puan neden hedef puanı ndan düşük/yüksek?** Genel = (Hedef × GoalWeight + Yetkinlik ×
CompetencyWeight) / 100. Yetkinlik puanı yalnı zca yönetici seviyesinden gelir; öz seviye ve 360
puana girmez.
**Gerçekleşme %150'de kalı yor.** Tavan bilinçlidir (§2.3, karar 6).
**Derece boş.** Kiracı da derece ölçeği tanı mlı değil. Host seed'i (`data/App.Hr.PerformanceRating.json`)
host içindir; her kiracı İK › Tanı mlar › Performans Dereceleri'ni kendisi girer.
**Teknik yetkinlikte seviye listesi boş.** Seed'de "Technical Skills" tipine seviye tanı mlı değildir
(Organizasyon ve Yetkinlik bölümü §9). İK › Tanı mlamalar › Yetenek Tipleri › Teknik Yetenekler › Seviyeler'e
`Progress` değerli seviyeler eklenmeden bu yetkinlikler puanlanamaz.
**Yöneticiyi kim belirliyor?** İK, değerlendirme kaydı ndaki `ManagerId` alanı ndan. Platformda
kullanı cı /departman üzerinde yönetici ilişkisi yoktur (§2.2).
**Yeni işe giren çalı şana değerlendirme nası l açı lı r?** Aktif dönem kaydı nı yeniden kaydetmek
eksik değerlendirmeleri açar; ya da İK Tüm Değerlendirmeler'den elle ekler.
**360 puanı neden genel puanda yok?** Karar 7: bilgi amaçlı dı r; `Feedback360Score` olarak gösterilir.
**Bildirim gelmiyor.** Kiracı da `PerformansDurumDegisti` / `Performans360Talebi` tipi ve `Custom`
kuralları olmalı ; yeni kiracı ya host seed'inden kopyalanı r, mevcut kiracı da Administration ›
Bildirimler'den eklenir.
**Değerlendirmelerim / Ekibimin Değerlendirmeleri menüde yok.** Bilinçli: İK menüsü İK içindir (§2.4).
Çalı şan ve yönetici Intranet › Dashboard'daki widget'tan açar. Widget görünmüyorsa rolüne liste
yetkisi verilmemiştir (§6) ya da kullanı cı widget'ı panoda gizlemiştir (tasarı m modundan geri açı lı r).
**Çalı şan kendi gelişim aksiyonunu ekleyemiyor.** "Gelişim Planı m" ekleme kapalı dı r; aksiyonu
yönetici (Ekip Gelişim Planı ) ya da İK açar.
---
### 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/sql/object/Hr_T_Performance{Rating,Period,PeriodSkill,Review,Goal,Competency,Feedback,FeedbackScore}.sql` , `Hr_T_DevelopmentPlan.sql` | Tablolar, CHECK ve tekil indeksler |
| `configs/seeds/sql/object/Hr_S_Performance{Notify,ReviewRecalc,PeriodActivate,Guard,ReviewAfterSave,FeedbackOpen}.sql` , `Hr_S_DevelopmentPlanSync.sql` | Prosedürler |
| `configs/seeds/wizard/{PerformanceRating,PerformancePeriodSkill,PerformancePeriod,PerformanceGoal,PerformanceCompetency,PerformanceFeedbackScore,PerformanceFeedback,ReviewDevelopmentPlan,PerformanceReview,MyPerformanceGoal,MyPerformanceCompetency,MyDevelopmentPlan,MyPerformanceReview,TeamPerformanceGoal,TeamPerformanceCompetency,TeamDevelopmentPlan,TeamPerformanceReview,My360FeedbackScore,My360Feedback,PerformanceCalibration,DevelopmentPlan}.json` | 21 wizard (List) |
| `configs/seeds/data/App.DeveloperKit.CustomComponents/{b2d9fa60-b052-5039-a0fc-146f4e5b2e8c,98a5c0b9-c8d6-5e83-ae76-d9ccb5b70cba,d669129d-52fe-56e1-972d-d20fe1b3360e}.json` | `MyPerformanceWidget` , `TeamPerformanceWidget` , `My360FeedbackWidget` (code modu, rotası z) |
| `configs/seeds/data/App.DeveloperKit.IntranetWidgets.json` | `my-performance` , `team-performance` , `my-360-feedback` pano kayı tları |
| `configs/seeds/data/App.Hr.PerformanceRating.json` | 5 kademeli derece ölçeği |
| `configs/seeds/data/App.Menus.Menu.json` , `Abp.Identity.Permissions.json` , `App.Languages.LanguageText.json` | Menü, yetki, dil satı rları (wizard'lara ait) |
| `configs/seeds/data/App.Notifications.Notification{Types,Rules}.json` | 2 tip, 4 kural |
| `ui/safelist.txt` | Widget bileşenlerinin Tailwind sı nı fları (`twSafelistGenerator` derlemede yeniler) |
Kurulum: DB Migrate (tablolar/prosedürler `sql/object` , ekranlar `WizardDataSeeder` , satı rlar
`ListFormSeedDataApplier` ). Ardı ndan rollere yetki verilir (§6).
Geri alma: Wizard Manager'dan talebin wizard'ları silinir (alt formlar önce); tabloyu düşürmek
yalnı zca onayda seçilirse olur. Widget bileşenleri ve pano kayı tları , bildirim tip/kural satı rları , derece seed'i ve
`Hr_S_*` prosedürleri elle kaldı rı lı r. `Adm_T_UserSkill` 'e yazı lmı ş seviyeler kullanı cı verisidir,
geri alı nmaz.
<!-- module - doc:section App.Hr.DisciplinaryCase claims=App.Hr.DisciplinaryPenaltyType -->
## 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 10, `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` |
2026-10-14 21:12:14 +00:00
| `Hr_T_DisciplinaryCase` | `BranchId` (şube, zorunlu — standart şube sözleşmesi, ekran `IsBranch` ), `CaseNo` , `UserId` , `DepartmentId` , `JobPositionId` , `IncidentDate` , `IncidentTime` , `IncidentPlace` , `ReportedById` , `Status` , `Subject` , `IncidentDescription` (HTML tutanak), `WitnessUserIds` |
2026-10-07 08:17:46 +00:00
| `Hr_T_DisciplinaryDefense` | `CaseId` , `RequestDate` , `DueDate` , `ResponseDate` , `Status` (Requested/Submitted/NotSubmitted), `DefenseText` (HTML) |
| `Hr_T_DisciplinaryDecision` | `CaseId` , `DecisionDate` , `PenaltyTypeId` , `EffectiveDate` , `NotificationDate` , `DeductionAmount` , `Status` (Draft/Final), `DecisionText` (HTML) |
| `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 |
| Kullanı cı detayı › Disiplin | Disiplin Dosyaları ekranı çalı şana süzülmüş açı lı r (Personel Kaydı bölümü) |
| `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/sql/object/Hr_T_Disciplinary{PenaltyType,Case,Defense,Decision,File}.sql` | Tablolar |
| `configs/seeds/wizard/Disciplinary{PenaltyType,Case,Defense,Decision,File}.json` | 5 wizard |
| `configs/seeds/data/App.Hr.DisciplinaryPenaltyType.json` | Ceza türleri |
| `configs/seeds/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:section App.Hr.Vehicles -->
## Araçlar (`App.Hr.Vehicles`)
Şirket araç filosu yönetimi: araç ve şoför kayı tları , araç/şoför belgeleri (ruhsat, sigorta,
muayene, ehliyet, psikoteknik), trafik cezaları ve kazalar, fatura bazlı araç masrafları ve
güvenlik kulübesinden araç giriş– çı kı ş takibi (km, süre, gidilen yer). 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 |
| --- | --- | --- |
| Filo / idari işler sorumlusu | Araç, şoför, belge ve masraf tanı mları nı yönetir; araç belgelerini ve masraf faturaları nı girer | Araç Belgeleri · Araçlar · Gidilecek Yerler · Şoför Tanı mlama · Masraf Tanı mlama · Masraf Girişleri |
| Güvenlik personeli | Aracı n çı kı şı nı ve dönüşünü (km, saat, kullanan personel) kaydeder | Araç Giriş-Çı kı ş Takip |
| Yönetim | Dı şarı daki araç sayı sı , toplam km ve masrafı izler | Widget'lar, Pivot, Chart |
Kapsam: kiracı (`IsTenant`). Araç bir şubeye (tesis) bağlı dı r; satı r süzmesi yoktur.
---
### 2. Analiz ve kararlar
> Modül §0.13 kuralı ndan önce üretildi; keşif turu kaydı yoktur. Kararlar artefaktlardan (wizard,
> SQL, seed, commit'ler `7be0b4ed` "Human Resources -> Araçlar" ve `021a8a34` "Araçlar düzenlemesi")
> okunmuştur.
| Konu | Karar |
| --- | --- |
| Yol | Wizard ekranları ; aracı n altı nda Belgeler, şoförün altı nda Belgeler / Cezalar / Kazalar, masraf girişinin altı nda Kalemler (menüsüz alt formlar) |
| Belge tanı mı | Tek tanı m tablosu (`Hr_T_VehicleDocument`) iki eksenle ayrı lı r: **grup** (Vehicle / Driver) ve **tip** (Insurance, Document, Tax, Toll, Inspection, Maintenance, Penalty, Accident). Her alt form kendi kümesini süzer |
| Araç durumu | `Arrived` (Geldi — şirkette) / `Left` (Gitti — dı şarı da); giriş– çı kı ş kaydı ndan güncellenir |
| Araç km'si | `CurrentKm` giriş– çı kı ş kaydı nı n giriş km'sinden güncellenir; yeni çı kı şta önerilen çı kı ş km'si budur |
| Zimmet | Şoföre en fazla **5 araç** zimmetlenir (`Vehicle1Id`…`Vehicle5Id` sabit kolonlar) |
| Şoför km'si | Şoförün `TotalKm` 'si, kullandı ğı tüm hareketlerin yapı lan km toplamı dı r (SQL) |
| Masraf | Fatura başlı ğı + kalemler; `Net Tutar = Miktar × Tutar × (1 − İskonto% / 100)` formda hesaplanı r |
| Muayene/sigorta tarihleri | Araç kaydı nda başlangı ç– bitiş tarihleri olarak tutulur; **hatı rlatma/bildirim yoktur** |
| Hareket numarası | `MovementNo` kiracı bazı nda `MAX + 1` (insert sonrası SQL) |
---
### 3. Menü ve ekranlar
`İnsan Kaynakları › Araçlar` (`App.Hr.Vehicles`, ikon `FcAutomotive` )
| Sı ra | Menü (TR / EN) | `ListFormCode` | Alt formlar | Widget'lar |
| --- | --- | --- | --- | --- |
| 1 | Araç Belgeleri / Vehicle Documents | `App.Hr.VehicleDocument` | — | Toplam · Aktif · Pasif |
| 2 | Masraf Tanı mlama / Expense Definitions | `App.Hr.VehicleExpenseDefinition` | — | Toplam · Aktif · Pasif |
| 3 | Gidilecek Yerler / Destinations | `App.Hr.VehicleDestination` | — | Toplam · Aktif · Pasif |
| 4 | Araçlar / Vehicles | `App.Hr.Vehicle` | `VehicleFile` (`Id → VehicleId`) | Toplam · Geldi · Gitti · Pasif |
| 5 | Şoför Tanı mlama / Drivers | `App.Hr.Driver` | `DriverDocument` , `DriverPenalty` , `DriverAccident` (`Id → DriverId`) | Toplam · Zimmetli Araçlı · Toplam Km |
| 6 | Araç Giriş-Çı kı ş Takip / Vehicle Gate Log | `App.Hr.VehicleMovement` | — | Toplam · Gitti · Bugün |
| 7 | Masraf Girişleri / Vehicle Expenses | `App.Hr.VehicleExpense` | `VehicleExpenseLine` (`Id → VehicleExpenseId`) | Toplam · Bugün · Toplam Tutar (net kalemler) |
Tüm ekranlar Grid, Card, Pivot, Chart görünümleriyle gelir; özel görünüm (Todo, Scheduler) yoktur.
Seed verisi:
- 17 belge tanı mı (`data/App.Hr.VehicleDocument.json`). Örnekler: trafik sigortası , ruhsat, K2, MTV, OGS/HGS, egzoz/genel muayene, takograf (araç); sürücü belgesi, psikoteknik, SRC 4, kı rmı zı ı şı k ve hı z cezası (şoför).
- 9 masraf tanı mı (`data/App.Hr.VehicleExpenseDefinition.json`): sigorta, vergi, bakı m, muayene × 2, geçiş × 2, ceza, yakı t.
---
### 4. Veri modeli
```
Sas_T_Branch ──< Hr_T_Vehicle ─ ─ < Hr_T_VehicleFile > ── Hr_T_VehicleDocument (grup Vehicle)
│ ▲
│ └── Hr_T_Driver.Vehicle1..5Id ── AbpUsers (UserId)
│ ├──< Hr_T_DriverDocument > ── VehicleDocument (grup Driver, ceza/kaza hariç)
│ ├──< Hr_T_DriverPenalty > ── VehicleDocument (tip Penalty)
│ └──< Hr_T_DriverAccident > ── VehicleDocument (tip Accident)
├──< Hr_T_VehicleExpense ─ ─ < Hr_T_VehicleExpenseLine > ── Hr_T_VehicleExpenseDefinition
│ └── Hr_T_VehicleDestination (firma)
└──< Hr_T_VehicleMovement > ── AbpUsers (gönderen, güvenlik, kullanan), Hr_T_VehicleDestination
```
| Tablo | Önemli kolonlar |
| --- | --- |
| `Hr_T_VehicleDocument` | `DocumentGroup` (Vehicle/Driver), `DocumentType` (8 tip), `Name` , `IsActive` |
| `Hr_T_Vehicle` | `BranchId` (tesis), `Name` , `Brand` , `Model` , `BodyType` , `UsagePlace` , `RegistrationDate` , `PlateNumber` , `Status` (Arrived/Left), `CurrentKm` , muayene / sigorta / egzoz / takograf başlangı ç– bitiş tarihleri, `IsActive` |
| `Hr_T_VehicleFile` | `VehicleId` , `VehicleDocumentId` , `FileName` , `FileContent` |
| `Hr_T_VehicleDestination` | `Name` , `Distance` (km), `IsActive` |
| `Hr_T_Driver` | `UserId` , `Vehicle1Id` …`Vehicle5Id`, `TotalKm` |
| `Hr_T_DriverDocument` | `DriverId` , `VehicleDocumentId` , `FileName` , `FileContent` |
| `Hr_T_DriverPenalty` | `DriverId` , `PenaltyDate` , `Amount` , `Description` , `VehicleDocumentId` , dosya |
| `Hr_T_DriverAccident` | `DriverId` , `AccidentDate` , `VehicleDocumentId` , `Description` , dosya |
| `Hr_T_VehicleExpenseDefinition` | `ExpenseType` , `Name` , `IsActive` |
| `Hr_T_VehicleExpense` | `VehicleId` , `InvoiceNo` , `InvoiceDate` , `DestinationId` (firma), `VehicleDocumentId` , dosya |
| `Hr_T_VehicleExpenseLine` | `VehicleExpenseId` , `ExpenseDefinitionId` , `DetailName` , `Quantity` , `Amount` , `DiscountRate` , `NetAmount` , `Description` |
| `Hr_T_VehicleMovement` | `MovementNo` , `ExitDate` , `ExitTime` (SS:dd metin), `BranchId` , `ExitKm` , `SenderUserId` , `SecurityUserId` , `DriverUserId` , `VehicleId` , `DestinationId` , `Reason` , `Location` , `EntrySecurityUserId` , `EntryDate` , `EntryBranchId` , `EntryTime` , `EntryKm` , `TravelledKm` , `Status` , `DurationMinutes` , `ExpectedKm` |
Tablo düzeyinde CHECK ya da tekil indeks yoktur (plaka tekilliği zorlanmaz); kurallar form ve SQL'dedir.
---
### 5. İş kuralları ve hesaplar
#### 5.1 Giriş– çı kı ş (`App.Hr.VehicleMovement`)
Form script'leri:
| Olay | Kural |
| --- | --- |
| Form açı lı şı | Çı kı ş tarihi bugün, çı kı ş saati şimdi, durum `Left` |
| Araç seçimi | `ExpectedKm` = aracı n `CurrentKm` 'si; çı kı ş km boşsa aynı değer yazı lı r |
| Çı kı ş km | `ExpectedKm` 'den küçükse uyarı + `ExpectedKm` yazı lı r; giriş km varsa yapı lan km yeniden hesaplanı r |
| Giriş km | Çı kı ş km'den küçükse uyarı + geri alı nı r. Doluysa durum `Arrived` , `TravelledKm = EntryKm − ExitKm` , giriş tarihi/saati boşsa şimdi. Boşsa durum `Left` , yapı lan km boş |
| Tarih/saat değişimi | `DurationMinutes` = giriş − çı kı ş (dakika; saat `SS:dd` biçiminde olmalı ) |
Sunucu komutları :
| Komut | Etki |
| --- | --- |
| Insert sonrası | `MovementNo` atanı r; aracı n `Status` 'u ve (giriş km varsa) `CurrentKm` 'si hareketten yazı lı r; kullanan personelin şoför kaydı ndaki `TotalKm` yeniden toplanı r |
| Delete sonrası | Şoför `TotalKm` yeniden toplanı r; aracı n `CurrentKm` 'si son girişin km'sine, `Status` 'u son hareketin durumuna döner (hareket yoksa `Arrived` ) |
| Update sonrası | **Yok** — bkz. §9 |
#### 5.2 Masraf
`NetAmount = round(Quantity × Amount × (1 − DiscountRate / 100), 2)` ; miktar, tutar ya da iskonto
değişince formda hesaplanı r. Fatura tarihi yeni kayı tta bugündür. "Toplam Tutar" widget'ı
silinmemiş tüm kalemlerin toplamı dı r.
#### 5.3 Belge süzmesi
| Ekran | Listelenen belge tanı mları |
| --- | --- |
| Araç › Belgeler, Masraf Girişi | `DocumentGroup = 'Vehicle'` |
| Şoför › Belgeler | `DocumentGroup = 'Driver'` ve tip `Penalty` /`Accident` dı şı |
| Şoför › Cezalar | `DocumentType = 'Penalty'` |
| Şoför › Kazalar | `DocumentType = 'Accident'` |
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` . Yetki ağacı menüyü izler: `App.Hr.Vehicles` ara yetkisinin
altı nda yedi ekranı n kökü + `.Create/.Update/.Delete/.Export/.Import/.Note` ; alt formlar (`VehicleFile`,
`DriverDocument` , `DriverPenalty` , `DriverAccident` , `VehicleExpenseLine` ) ana ekranları nı n altı ndadı r.
Satı r süzmesi yoktur. Hiçbir yetki role otomatik atanmaz.
| Rol | Yetkiler |
| --- | --- |
| Filo sorumlusu | `App.Hr.Vehicles` dalı nı n tamamı |
| Güvenlik | `App.Hr.VehicleMovement` (+ `.Create/.Update` ) |
| Muhasebe (masraf) | `App.Hr.VehicleExpense` , `App.Hr.VehicleExpenseLine` |
---
### 7. Entegrasyonlar
| Kaynak | Kullanı m |
| --- | --- |
| `Sas_T_Branch` | Aracı n tesisi; hareketin çı kı ş/giriş şubesi |
| `AbpUsers` | Şoför, gönderen personel, güvenlik personeli, kullanan personel |
Bildirim, zamanlanmı ş iş ya da rapor şablonu yoktur.
---
### 8. Akı ş örneği
1. Filo sorumlusu **Araçlar** 'a "34 ABC 123"ü girer (şube Merkez, km 45.000, muayene/sigorta bitiş
tarihleri); **Belgeler** sekmesine ruhsat ve trafik sigortası nı yükler.
2. **Şoför Tanı mlama** 'da personeli şoför yapar, aracı zimmet 1'e bağlar; sürücü belgesini yükler.
3. Güvenlik **Araç Giriş-Çı kı ş Takip** 'te yeni kayı t açar: tarih/saat dolar, araç seçilince çı kı ş
km 45.000 olur; kullanan personel ve gidilen yer seçilir → araç **Dı şarı da** .
4. Dönüşte giriş km'si (45.180) girilir → durum Şirkette, yapı lan km 180, süre dakika olarak hesaplanı r.
5. Yakı t faturası **Masraf Girişleri** 'ne başlı k + kalem (yakı t, 40 lt × 45 ₺) olarak girilir.
6. Gelen hı z cezası şoförün **Cezalar** sekmesine tutar ve belgeyle eklenir.
---
### 9. Sı k sorulanlar ve bilinen sı nı rlar
**Plakası aynı iki araç girilebiliyor mu?** Evet; tabloda tekil kı sı t yoktur.
**Muayene/sigorta bitişi yaklaşı nca uyarı geliyor mu?** Hayı r; tarihler yalnı zca kayı ttadı r.
Hatı rlatma için zamanlanmı ş iş + bildirim tipi eklenmelidir (yok).
**Bir şoföre 5'ten fazla araç zimmetlenebilir mi?** Hayı r; kolonlar sabittir.
**Masraf girişindeki "Firma Adı " neden Gidilecek Yerler'den geliyor?** Masraf firması ayrı bir
tanı m olarak açı lmamı ş, gidilecek yer tanı mı kullanı lmı ştı r.
**Kontrol edilmeli — dönüş güncellemeyle girildiğinde araç/şoför güncellenmiyor.** Giriş– çı kı ş
ekranı nda yalnı zca insert ve delete sonrası komut vardı r. Çı kı ş kaydı açı lı p dönüş **aynı kaydı
düzenleyerek** girildiğinde aracı n `Status` /`CurrentKm`'si ve şoförün `TotalKm` 'si güncellenmez
(bir sonraki ekleme ya da silmeye kadar).
**Kontrol edilmeli — yalnı z çı kı ş girilen kayı tta aracı n km'si.** Formda `EntryKm` varsayı lanı
`0` 'dı r. Insert sonrası komut `@EntryKm` boş değilse aracı n `CurrentKm` 'sini ona eşitler. Giriş km
temizlenmeden kaydedilen bir çı kı ş kaydı aracı n km'sini 0'a çekebilir.
---
### 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/sql/object/Hr_T_{VehicleDocument,Vehicle,VehicleFile,VehicleDestination,Driver,DriverDocument,DriverPenalty,DriverAccident,VehicleExpenseDefinition,VehicleExpense,VehicleExpenseLine,VehicleMovement}.sql` | Tablolar |
| `configs/seeds/wizard/{VehicleDocument,Vehicle,VehicleFile,VehicleDestination,Driver,DriverDocument,DriverPenalty,DriverAccident,VehicleExpenseDefinition,VehicleExpense,VehicleExpenseLine,VehicleMovement}.json` | 12 wizard |
| `configs/seeds/data/App.Hr.{VehicleDocument,VehicleExpenseDefinition}.json` | Tanı m verisi |
| `configs/seeds/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 önce, ana ekranlar sonra silinir;
tablolar yalnı zca onayda seçilirse düşer.
<!-- module - doc:section App.Hr.Visitor -->
## Ziyaretçiler (`App.Hr.Visitor`)
Güvenlik/resepsiyon için ziyaretçi giriş– çı kı ş defteri: kim, hangi firmadan, kimi ziyarete, ne
zaman geldi, hangi kartı aldı , ne zaman çı ktı . Tamamı konfigürasyondur (tek Wizard ekranı ).
> 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 |
| --- | --- | --- |
| Güvenlik / resepsiyon | Ziyaretçiyi girişte kaydeder, kart verir, çı kı şta çı kı ş saatini işler | Ziyaretçiler |
| İK / idari işler | Günlük ziyaretçi sayı sı nı , içeride kalanları ve geçmişi izler | Ziyaretçiler (widget, Pivot) |
Kapsam: kiracı (`IsTenant`). Her kayı t bir şubeye bağlı dı r; satı r süzmesi yoktur.
---
### 2. Analiz ve kararlar
> Modül §0.13 kuralı ndan önce üretildi; keşif turu kaydı yoktur. Kararlar wizard ve SQL'den okunmuştur.
| Konu | Karar |
| --- | --- |
| Yol | Tek Wizard liste ekranı |
| Ziyaretçi kimliği | Ziyaretçi ayrı bir kişi kartı değildir; her ziyaret satı rı nda ad soyad serbest metindir (tekrar gelen ziyaretçi yeniden yazı lı r) |
| Firma | Serbest metin + **otomatik tamamlama** (daha önce girilen firma adları ndan) |
| Ziyaretçi tipi | Sabit liste: Ziyaretçi, Müşteri, Tedarikçi, Taşeron, Kurye (değerler Türkçe anahtardı r) |
| İçeride mi? | `ExitTime` boşsa ziyaretçi içeride sayı lı r |
| Bildirim | Ziyaret edilen personele bildirim **gönderilmez** |
---
### 3. Menü ve ekran
| Menü (TR / EN) | `ListFormCode` | Yer | Görünümler | Widget'lar (bugün) |
| --- | --- | --- | --- | --- |
| Ziyaretçiler / Visitors | `App.Hr.Visitor` | `İnsan Kaynakları ` (sı ra 12, `FcBusinessman` ) | Grid, Card, Pivot, Chart | Bugün Gelen · İçeride · Çı kı ş Yapan |
Widget'lar yalnı z **bugünün** (`VisitDate = bugün`) kayı tları nı sayar.
---
### 4. Veri modeli
`Hr_T_Visitor` (`sql/object/Hr_T_Visitor.sql`, entity yok):
| Kolon | Açı klama |
| --- | --- |
| `BranchId` | Şube (zorunlu) |
| `VisitorType` | Ziyaretçi tipi (varsayı lan "Ziyaretçi") |
| `VisitDate` | Ziyaret tarihi |
| `EntryTime` / `ExitTime` | Giriş / çı kı ş zamanı (`datetime`) |
| `CardNo` | Verilen ziyaretçi kartı |
| `VisitorFullName` | Ziyaretçi adı soyadı (zorunlu) |
| `VisitedUserId` | Ziyaret edilen personel (`AbpUsers`, zorunlu) |
| `CompanyName` | Firma |
| `VisitReason` | Ziyaret sebebi |
---
### 5. İş kuralları
| Yer | Kural |
| --- | --- |
| Yeni kayı t | Ziyaret tarihi bugün, giriş saati şimdi, tip "Ziyaretçi" |
| Çı kı ş | Kayı t düzenlenip çı kı ş saati girilir; otomatik çı kı ş yoktur |
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` ; `App.Hr.Visitor` + `.Create/.Update/.Delete/.Export/.Import/.Note` .
Güvenliğe kök + `.Create/.Update` yeter. Hiçbir yetki role otomatik atanmaz. Ziyaretçi adı kişisel
veridir; saklama süresi için periyodik temizlik yoktur.
---
### 7. Entegrasyonlar
`Sas_T_Branch` (şube), `AbpUsers` (ziyaret edilen personel). Bildirim, rapor ya da zamanlanmı ş iş yoktur.
---
### 8. Akı ş örneği
1. Tedarikçi temsilcisi gelir; güvenlik yeni kayı t açar (tarih/saat dolu), tip Tedarikçi, ad soyad,
firma (otomatik tamamlamadan), ziyaret edilen satı n alma uzmanı , kart no 12.
2. "İçeride" kartı 1 artar.
3. Çı kı şta kayı t açı lı p çı kı ş saati girilir; "Çı kı ş Yapan" kartı artar.
---
### 9. Sı k sorulanlar
**Tekrar gelen ziyaretçinin bilgileri neden dolmuyor?** Ziyaretçi kartı yoktur; yalnı z firma adı otomatik tamamlanı r.
**Gün sonunda içeride kalanlar nası l görülür?** Bugünün "İçeride" kartı ya da `ExitTime` boş filtresi.
**Ziyaret edilen kişiye haber gidiyor mu?** Hayı r.
---
### 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/sql/object/Hr_T_Visitor.sql` | Tablo |
2026-10-09 11:33:26 +00:00
| `configs/seeds/wizard/Hr_Visitor.json` | Wizard |
2026-10-07 08:17:46 +00:00
Geri alma: Wizard Manager'dan silinir; tablo yalnı zca onayda seçilirse düşer.
<!-- module - doc:section App.Hr.EventLog -->
## Olay Günlüğü (`App.Hr.EventLog`)
Vardiya amiri, güvenlik odası ve gözlem odası nı n tuttuğu vardiya defteri: tarih– saat, kaynak,
olayı yaşayan/kaydeden personel, vardiya, önem derecesi (1– 5) ve açı klama. Tamamı konfigürasyondur
(tek Wizard ekranı ).
> 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 |
| --- | --- | --- |
| Vardiya amiri / güvenlik / gözlem odası | Vardiyada yaşanan önemli olayları kaydeder | Olay Günlüğü |
| Yönetim / İK | Günün olayları nı ve önemli/kritik kayı tları izler; gerekirse disiplin dosyası açar | Olay Günlüğü (widget, Pivot) |
Kapsam: kiracı (`IsTenant`). Şube isteğe bağlı dı r; satı r süzmesi yoktur.
---
### 2. Analiz ve kararlar
> Modül §0.13 kuralı ndan önce üretildi; keşif turu kaydı yoktur. Kararlar wizard ve SQL'den okunmuştur.
| Konu | Karar |
| --- | --- |
| Yol | Tek Wizard liste ekranı |
| Kaynak | Sabit liste: Vardiya Amiri (`ShiftSupervisor`), Güvenlik Odası (`SecurityRoom`), Gözlem Odası (`ObservationRoom`) |
| Önem | 1– 5 yı ldı z: Rutin, Düşük, Önemli, Çok Önemli, Kritik; **4 ve üstü** "önemli" kartı nda sayı lı r |
| Saat | `EventTime` `SS:dd` metin; yeni kayı tta şimdiki saat |
| Vardiya | Vardiya tanı mı ndan seçilir (`Hr_T_Shift`) |
| Disiplin bağı | Olaydan disiplin dosyası na otomatik geçiş **yoktur** ; dosya elle açı lı r |
---
### 3. Menü ve ekran
| Menü (TR / EN) | `ListFormCode` | Yer | Görünümler | Widget'lar |
| --- | --- | --- | --- | --- |
| Olay Günlüğü / Event Log | `App.Hr.EventLog` | `İnsan Kaynakları ` (sı ra 13, `FcViewDetails` ) | Grid, Card, Pivot, Chart | Toplam · Bugün · Önemli (önem ≥ 4) |
---
### 4. Veri modeli
`Hr_T_EventLog` (`sql/object/Hr_T_EventLog.sql`, entity yok):
| Kolon | Açı klama |
| --- | --- |
| `LogSource` | Kayı t kaynağı (zorunlu) |
| `BranchId` | Şube |
| `UserId` | Vardiya amiri / olayı yaşayan personel (zorunlu) |
| `EventDate` , `EventTime` | Olay tarihi ve saati (zorunlu) |
| `Importance` | 1– 5 (varsayı lan 1) |
| `ShiftId` | Vardiya |
| `Description` | Açı klama |
---
### 5. İş kuralları
| Yer | Kural |
| --- | --- |
| Yeni kayı t | Olay saati boşsa şimdiki saat yazı lı r |
| Önem kartı | `Importance >= 4` |
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` ; `App.Hr.EventLog` + `.Create/.Update/.Delete/.Export/.Import/.Note` .
Kayı t tutanlara kök + `.Create` (ve gerekiyorsa `.Update` ) yeter; silme yalnı z yöneticide kalmalı dı r.
Hiçbir yetki role otomatik atanmaz.
---
### 7. Entegrasyonlar
`Sas_T_Branch` , `AbpUsers` , `Hr_T_Shift` (bkz. Çalı şma Takvimi ve Vardiyalar bölümü). Kritik olay için bildirim yoktur.
---
### 8. Akı ş örneği
1. Gece vardiyası nda güvenlik odası "B kapı sı alarmı " olayı nı kaynak Güvenlik Odası , önem 3, vardiya Gece ile kaydeder.
2. Vardiya amiri bir iş kazası nı önem 5 ile girer → "Önemli" kartı artar.
3. Sabah İK önemli kayı tları süzer; gerekiyorsa Disiplin Dosyaları 'nda elle dosya açar.
---
### 9. Sı k sorulanlar
**Kritik olayda yöneticiye bildirim gidiyor mu?** Hayı r; widget ve filtre ile izlenir.
**Olay disiplin dosyası na bağlanabiliyor mu?** Hayı r; iki kayı t arası nda bağ yoktur.
---
### 10. Dosyalar ve geri alma
| Dosya | İçerik |
| --- | --- |
| `configs/seeds/sql/object/Hr_T_EventLog.sql` | Tablo |
2026-10-09 11:33:26 +00:00
| `configs/seeds/wizard/Hr_EventLog.json` | Wizard |
2026-10-07 08:17:46 +00:00
Geri alma: Wizard Manager'dan silinir; tablo yalnı zca onayda seçilirse düşer.
<!-- module - doc:section App.Hr.Intranet -->
## Intranet (`App.Hr.Intranet`)
Kurum içi iletişim: ana sayfa panosu (bugün doğanlar, dokümanlar, aktif anketler, sosyal duvar,
duyurular, yaklaşan etkinlikler), bunları n yönetim ekranları (duyuru, anket, sosyal paylaşı m,
etkinlik), doküman kütüphanesi ve kullanı cı lar arası mesajlaşma. Bu modül **entity + C# seeder +
özel React sayfaları yla** kuruludur (wizard değil); pano kutuları Developer Kit › Intranet Widgets
kaydı yla yönetilir.
> 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 |
| --- | --- | --- |
| Tüm çalı şanlar | Panoyu görür; duyuru okur/beğenir/yorumlar, anket doldurur, paylaşı m yapar, beğenir, yorumlar, ankete oy verir, etkinliği beğenir/yorumlar, doküman indirir, mesajlaşı r | `/admin/dashboard` · mesajlaşma penceresi |
| İK / iç iletişim | Duyuru, anket (soru/seçenek), etkinlik ve tanı mları nı yönetir; yanı tları ve etkileşimleri izler | İK › Intranet › Duyurular · Anketler · Sosyal Paylaşı mlar · Etkinlik Türleri/Kategorileri · Etkinlikler |
| İK / doküman sorumlusu | Doküman yükler, yayı na alı r/kaldı rı r | İK › Intranet › Dokümanlar (`/admin/intranet-documents`) |
| Sistem yöneticisi | Pano kutuları nı (hazı r ya da custom component) tanı mlar, sı rası nı ve yetkisini belirler | Developer Kit › Intranet Widgets |
Kapsam: kiracı . Bütün tablolar `IMultiTenant` ; satı r süzmesi yoktur.
---
### 2. Analiz ve kararlar
> Modül §0.13 kuralı ndan önce üretildi; keşif turu kaydı yoktur. Kararlar koddan
> (`ListFormSeeder_Hr.cs`, `Entities/Tenant/Hr/Intranet`, `IntranetAppService`, `views/intranet`) okunmuştur.
| Konu | Karar |
| --- | --- |
| Yol | Yönetim ekranları entity + seeder ListForm'u; pano ve etkileşimler özel React + `IntranetAppService` |
| Modül yeri | Intranet İK'dadı r: menü `App.Hr.Intranet` , yetkiler `App.Hr.Intranet.*` , tablolar `Hr_T_*` ; pano kutusu kaydı (`Sas_T_IntranetWidget`) Saas › Developer Kit'te kalı r |
| Pano kutuları | Veritabanı kaydı dı r (kod, kolon, sı ra, yetki, aktiflik). **Builtin** kutu koda kayı tlı React bileşenidir (`id` = kayı t `Code` ); **Custom** kutu Developer Kit custom component'idir (Props JSON ile) |
| Kullanı cı yerleşimi | Pano tasarı m modunda sürükle-bı rak, gizle/göster, kolon oranı hazı r ayarları ; tercih **tarayı cı da (localStorage)** saklanı r, sunucuya yazı lmaz |
| Doğum günleri | Her pano isteğinde kullanı cı ları n `BirthDate` genişletme alanı ndan canlı hesaplanı r (gün + ay) |
| Duyuru panoda | Kutu yalnı z **sabitlenmiş** (`IsPinned`) duyuruları , en fazla 3 tane gösterir |
| Anket | `Status = active` anketler; kullanı cı yanı tı nı sonradan **güncelleyebilir** ; anonim ankette yanı t `UserId` taşı maz |
| Sosyal medya | Bir paylaşı mda tek medya kaydı (resim(ler), video ya da anket); yüklenen dosya **base64 data URL** olarak `SocialMedia.Urls` 'e yazı lı r |
| Doküman yayı nı | Fiziksel CDN klasörleri: `intranet` (yayı nda) ve `intranet/_passive` (yayı nda değil); yayı na alma = klasörler arası taşı ma |
| Mesajlaşma | Yalnı z tablo öneki ile İK'dadı r (`Hr_T_Messenger*`); menüsü/yetkisi yoktur, kabuk düzenine gömülü pencere + SignalR |
| Bildirim / zamanlanmı ş iş | Yok |
---
### 3. Menü ve ekranlar
`İnsan Kaynakları › Intranet` (`App.Hr.Intranet`, sı ra 14)
| Sı ra | Menü | `ListFormCode` / rota | Alt formlar | Widget'lar |
| --- | --- | --- | --- | --- |
| 1 | Etkinlik Türleri | `App.Hr.Intranet.Events.EventType` | — | — |
| 2 | Etkinlik Kategorisi | `App.Hr.Intranet.Events.EventCategory` | — | — |
| 3 | Duyurular | `App.Hr.Intranet.Announcement` | `…Announcement.AnnouncementLike` , `…Announcement.AnnouncementComment` (`Id → AnnouncementId`) | Aktif · Sabitlenmiş · Süresi dolan · Toplam görüntülenme |
| 4 | Anketler | `App.Hr.Intranet.Survey` | `SurveyQuestion` (→ `SurveyQuestionOption` ), `SurveyResponse` (→ `SurveyAnswer` ) — iki seviyeli | Aktif · Pasif · Toplam yanı t |
| 5 | Sosyal Paylaşı mlar | `App.Hr.Intranet.SocialPost` | `SocialComment` , `SocialMedia` (→ `SocialPollOption` ), `SocialLike` (`Id → SocialPostId`) | Toplam · Bugün · Toplam beğeni |
| 6 | Etkinlikler | `App.Hr.Intranet.Events.Event` | `EventLike` , `EventComment` (`Id → EventId`) | Yaklaşan · Yayı nda · Taslak · İptal |
| 7 | Dokümanlar | `/admin/intranet-documents` (özel sayfa) | — | — |
Diğer giriş noktaları :
| Ne | Nerede |
| --- | --- |
| Pano | `/admin/dashboard` (`views/Dashboard.tsx` → `views/intranet/Dashboard.tsx` ); rota yetkisizdir, menüde ayrı kaydı yoktur |
| Pano kutusu tanı mı | Developer Kit › Intranet Widgets (`App.DeveloperKit.IntranetWidgets`, `Sas_T_IntranetWidget` ); veri `data/App.DeveloperKit.IntranetWidgets.json` 'a aynalanı r |
| Mesajlaşma | Uygulama kabuğundaki `MessengerWidget` |
Pano kutuları (seed):
| Kod | Kolon / sı ra | Yetki | Ne gösterir |
| --- | --- | --- | --- |
| `today-birthdays` | Sol / 10 | `AbpIdentity.Users.Widget` | Bugün doğanlar: avatar, ad, yaş, departman |
| `documents` | Sol / 20 | `App.Files.Widget` | Yayı ndaki ilk 3 doküman (tür, boyut, tarih, indir) |
| `active-surveys` | Sol / 30 | `App.Hr.Intranet.Survey.Widget` | Aktif anketler (kalan gün, soru/yanı t sayı sı , doldurdum/doldur) |
| `my-leave` | Sol / 35 | `App.Hr.MyLeaveRequest` | Custom `MyLeaveWidget` : izin bakiyesi, süren talepler → İzin Talebi Oluştur · Taleplerim · Bakiyem |
| `team-leave` | Sol / 36 | `App.Hr.TeamLeaveRequest` | Custom `TeamLeaveWidget` : müdürün onayı nı bekleyen izin talepleri, bugün izinde olanlar → Onay Bekleyenler |
| `my-timesheet` | Sol / 37 | `App.Hr.MyTimesheet` | Custom `MyTimesheetWidget` : seçilen ayı n puantajı (net saat, geç/erken dk, fazla mesai, devamsı z/izinli/raporlu) ve yı l toplamı , 270 saatlik fazla mesai çubuğu → Puantajı m |
2026-10-09 12:24:53 +00:00
| `diary` | Sol / 38 | `App.Prj.Diary.Widget` | Builtin (`widgets/Diary.tsx`) Güncem: bugün / bu hafta saat, bugünkü kayı t, son 5 günce (son 30 gün); Günce Yaz butonu çekirdek `DiaryEntry` diyaloğunu açar, kapanı nca özet yenilenir; kayı t Günce Listesi'ne (`App.Prj.Diary`) yazı lı r, kaydetmek için ayrı ca `App.Prj.Diary` + `.Create` gerekir |
2026-10-07 08:17:46 +00:00
| `social-wall` | Orta / 40 | `App.Hr.Intranet.SocialPost.Widget` | Sosyal duvar (Tümü / Paylaşı mları m, sonsuz kaydı rma 10'arlı ) |
| `announcements` | Sağ / 50 | `App.Hr.Intranet.Announcement.Widget` | Sabitlenmiş duyurular (en fazla 3) |
| `upcoming-events` | Sağ / 60 | `App.Hr.Intranet.Events.Event.Widget` | Bugünden sonraki yayı nlanmı ş ilk 3 etkinlik |
| `my-performance` | Sağ / 70 | `App.Hr.MyPerformanceReview` | Custom `MyPerformanceWidget` : aktif performans değerlendirmesi, puanlar, gelişim aksiyonları → Değerlendirmelerim |
| `team-performance` | Sağ / 80 | `App.Hr.TeamPerformanceReview` | Custom `TeamPerformanceWidget` : yöneticinin ekip değerlendirmeleri → Ekibimin Değerlendirmeleri |
| `my-360-feedback` | Sağ / 90 | `App.Hr.My360Feedback` | Custom `My360FeedbackWidget` : kullanı cı ya atanan 360 talepleri → 360 Taleplerim |
2026-10-09 12:24:53 +00:00
İlk altı kutu ve `diary` Builtin'dir (koddaki `Code` ). `my-leave` / `team-leave` İzin Yönetimi'nin (İzin Yönetimi bölümü §3.3), `my-timesheet` Puantaj ve Devam Takibi'nin (Puantaj ve Devam Takibi bölümü §3.3), son üçü Performans Yönetimi'nin çalı şana ait özetleridir:
2026-10-07 08:17:46 +00:00
İK menüsü İK departmanı nı ndı r, çalı şan kendi değerlendirmesini buradan takip eder; listeler menüsüzdür ve
kutudaki bağlantı yla açı lı r. Ayrı ntı : Performans Yönetimi bölümü §3.3.
---
### 4. Veri modeli
Entity'ler `Entities/Tenant/Hr/Intranet` (`FullAuditedEntity< Guid > , IMultiTenant`); tablolar migration'lı dı r.
| Tablo | Önemli kolonlar | Kural |
| --- | --- | --- |
| `Hr_T_Announcement` | `Title` , `Excerpt` , `Content` (HTML), `ImageUrl` , `Category` (general/event/urgent/announcement), `UserId` , `PublishDate` , `ExpiryDate` , `IsPinned` , `ViewCount` , `Likes` , `Attachments` | Başlı k kiracı da tekil |
| `Hr_T_AnnouncementComment` / `Hr_T_AnnouncementLike` | `AnnouncementId` , `UserId` , (`Content`) | Beğeni kullanı cı başı na tekil |
| `Hr_T_Survey` | `Title` , `Description` , `Deadline` , `Responses` , `Status` , `IsAnonymous` | Başlı k kiracı da tekil |
| `Hr_T_SurveyQuestion` | `SurveyId` , `QuestionText` , `Type` (rating/multiple-choice/text/textarea/yes-no), `Order` , `IsRequired` | — |
| `Hr_T_SurveyQuestionOption` | `QuestionId` , `Text` , `Order` | — |
| `Hr_T_SurveyResponse` / `Hr_T_SurveyAnswer` | `SurveyId` , `UserId` , `SubmissionTime` / `ResponseId` , `QuestionId` , `QuestionType` , `Value` | — |
| `Hr_T_SocialPost` | `UserId` , `Content` , `LikeCount` , `IsLiked` , `IsOwnPost` | — |
| `Hr_T_SocialMedia` | `SocialPostId` (1:1), `Type` (image/video/poll), `Urls` , `PollQuestion` , `PollTotalVotes` , `PollEndsAt` , `PollUserVoteId` | — |
| `Hr_T_SocialPollOption` | `SocialMediaId` , `Text` , `Votes` | — |
| `Hr_T_SocialComment` / `Hr_T_SocialLike` | `SocialPostId` , `UserId` , (`Content`) | Beğeni kullanı cı başı na tekil |
| `Hr_T_SocialLocation` | Konum bilgisi | Kullanan ekran/servis yok |
| `Hr_T_EventType` / `Hr_T_EventCategory` | `Name` | Kiracı da tekil |
| `Hr_T_Event` | `CategoryId` , `TypeId` , `Date` , `Name` , `Description` , `Place` , `Status` (published/draft/cancelled), `UserId` , `ParticipantsCount` , `Likes` , `isPublished` , `Photos` | `(CategoryId, TypeId, Name)` tekil |
| `Hr_T_EventComment` / `Hr_T_EventLike` | `EventId` , `UserId` , (`Content`) | Beğeni tekil |
| `Sas_T_IntranetWidget` | `Code` , `Name` , `LabelKey` , `SourceType` (0 Builtin / 1 Custom), `ComponentName` , `PermissionName` , `Column` (0 sol / 1 orta / 2 sağ), `Order` , `Props` , `IsActive` | Kod kiracı da tekil |
| `Hr_T_MessengerConversation` / `Hr_T_MessengerConversationMessage` | Konuşma (katı lı mcı lar, son mesaj) / mesaj (gönderen, alı cı lar, metin, ekler, zaman) | — |
---
### 5. İş kuralları (`IntranetAppService`)
| İşlem | Kural |
| --- | --- |
| Pano verisi | Doğum günleri (bugün), `intranet` klasöründeki dosyalar (`_passive` hariç), son 50 duyuru, `active` anketler + kullanı cı nı n yanı tı , `isPublished` son 50 etkinlik, aktif ve yetkisi verilmiş pano kutuları . Duyuru için tarih/sabitleme süzmesi, anket için son tarih süzmesi **sunucuda yoktur** |
| Duyuru aç | Her açı lı şta `ViewCount + 1` |
| Beğeni (duyuru, paylaşı m, etkinlik) | Aç/kapa: beğeni satı rı eklenir/silinir, sayaç ±1 |
| Yorum | Satı r eklenir; listelenirken yazar bilgisi doldurulur |
| Anket yanı tı | Kullanı cı nı n önceki yanı tı varsa cevaplar güncellenir; yoksa yeni yanı t + `Responses + 1` ; anonimde `UserId` boş |
| Paylaşı m | İsteğe bağlı tek medya ya da 2– 6 seçenekli anket; yalnı z sahibi silebilir |
| Ankete oy | Seçenek ve toplam oy +1, `PollUserVoteId` = seçenek; tekrar oy UI'da engellenir |
| Doküman | Yüklemede görünen ad zorunlu (uzantı korunur); yayı na al/kaldı r = klasör taşı ma; silme toplu |
| Mesaj | Aynı kiracı daki aktif kullanı cı lara (en fazla 100 kişi listelenir); en fazla 10 ek; çevrimiçi durumu SignalR (`/messengerhub`) |
---
### 6. Yetki ve görünürlük
İzin grubu `App.Hr` , modül `Sas|Hr` . Kök `App.Hr.Intranet` ; her yönetim ekranı nı n kökü + standart alt
yetkiler (`.Create/.Update/.Delete/.Export/.Import`, ana ekranlarda `.Note` ). Duyuru, Anket, Sosyal
Paylaşı m ve Etkinlik ayrı ca ** `.Widget` ** taşı r — pano kutusunu görme yetkisidir. Dokümanlar:
`App.Hr.Intranet.Document` + `.Create` (yükle) / `.Update` (yayı na al/kaldı r) / `.Delete` .
Intranet Widgets: `App.DeveloperKit.IntranetWidgets` (+ CRUD). Hiçbir yetki role otomatik atanmaz.
Önerilen dağı tı m:
| Rol | Yetkiler |
| --- | --- |
| Tüm çalı şanlar | `AbpIdentity.Users.Widget` , `App.Files.Widget` , dört `.Widget` yetkisi, `App.Hr.Intranet.Document` (okuma); performans kutuları için Performans Yönetimi bölümü §6 |
| İç iletişim | `App.Hr.Intranet` dalı nı n tamamı |
| Sistem yöneticisi | `App.DeveloperKit.IntranetWidgets` |
**Kontrol edilmeli — güvenlik:** `IntranetAppService` , `MessengerAppService` ve dosya yöneticisi servisi
yalnı z oturum ister (`[Authorize]`); `App.Hr.Intranet.*` yetkilerini sunucuda denetlemez. Pano
kutuları nı n yetkisi (`PermissionName`) sunucuda süzülür, doküman yetkileri ise **yalnı z arayüzde**
uygulanı r.
---
### 7. Entegrasyonlar
| Kaynak | Kullanı m |
| --- | --- |
| `AbpUsers` (+ departman, pozisyon) | Doğum günleri, yazar/kullanı cı kartları , mesajlaşma rehberi |
| Dosya yöneticisi / CDN (`intranet`, `intranet/_passive` ) | Doküman kütüphanesi ve pano doküman kutusu |
| Developer Kit › Custom Components | Custom pano kutuları |
| SignalR (`/messengerhub`) | Mesajlaşma ve çevrimiçi durumu |
| Organizasyon Şeması | Kullanı cı satı rları nda sosyal duvarı n `UserProfileCard` bileşenini kullanı r |
---
### 8. Akı ş örneği
1. İç iletişim **Duyurular** 'a "Yeni ofis açı lı şı "nı görsel ve HTML içerikle ekler, **sabitler** → panonun sağ kolonunda görünür.
2. **Anketler** 'de "Çalı şan Memnuniyet Anketi"ni anonim ve aktif açar; **Sorular** sekmesine puanlama, çoktan seçmeli (seçenekleriyle) ve metin soruları ekler.
3. Çalı şan panoda anketi doldurur, sonradan yanı tı nı günceller; İK **Yanı tlar** sekmesinden sonuçları görür (anonimde kişi boş).
4. **Etkinlikler** 'de "Jazz Akşamı " tarih, yer ve fotoğraflarla yayı nlanı r → "Yaklaşan Etkinlikler" kutusunda çı kar; çalı şanlar beğenir/yorumlar.
5. Çalı şan sosyal duvarda iki seçenekli bir anket paylaşı r; diğerleri oy verir.
6. Doküman sorumlusu "İzin Prosedürü.pdf"i yükler ve yayı na alı r → pano doküman kutusunda indirilebilir olur.
7. Sistem yöneticisi Intranet Widgets'a bir custom component'i (ör. kurum KPI kartı ) orta kolona ekler.
---
### 9. Sı k sorulanlar ve bilinen sı nı rlar
**Duyuru panoda görünmüyor.** Kutu yalnı z sabitlenmiş duyuruları (en fazla 3) gösterir; listelenmek için **Sabitle** işaretli olmalı .
**Süresi dolmuş duyuru/anket hâlâ görünüyor.** Sunucuda son tarih süzmesi yoktur; duyuru sabitlemesi kaldı rı lmalı , anket `passive` yapı lmalı dı r.
**Pano yerleşimim başka bilgisayarda yok.** Yerleşim tarayı cı da saklanı r.
**Pano kutusu görünmüyor.** Kayı t aktif olmalı ve kullanı cı da `PermissionName` yetkisi bulunmalı ; Custom kutuda bileşen aktif olmalı .
**Yanı tları mı değiştirebilir miyim?** Evet; anketi tekrar açı p kaydetmek önceki yanı tı günceller.
Kontrol edilmeli (koddan tespit edilenler):
- Ankete oy sunucuda kullanı cı bazı nda tutulmaz (`PollUserVoteId` tek kolon); aynı kullanı cı API'yi doğrudan çağı rarak tekrar oy verebilir.
- `SocialPost.IsLiked` beğenen son kullanı cı ya göre veritabanı na yazı lı r; listelerken sunucu kullanı cı ya göre yeniden hesaplar.
- Duyuru modalı ndaki ekler bölümü dizi bekler, `Attachments` metindir; ekler görünmeyebilir.
- Anket entity açı klaması `draft|active|closed` der, ekran `active|passive` sunar.
- Sosyal paylaşı mda yüklenen medya base64 olarak veritabanı na yazı lı r; büyük dosyalar tabloyu büyütür.
- `Hr_T_EventPhoto` tablosu ve `sql/object/Hr_T_EventPhoto.sql` yoktur (referans dokümanda geçer); etkinlik fotoğrafları `Hr_T_Event.Photos` kolonundadı r.
---
### 10. Dosyalar
| Dosya | İçerik |
| --- | --- |
| `api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Hr.cs` | Yönetim ekranları |
| `api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Saas.cs` | Intranet Widgets ekranı |
| `api/src/Sozsoft.Platform.Domain/Entities/Tenant/Hr/Intranet/*.cs` , `Entities/Tenant/Administration/IntranetWidget.cs` , `Entities/Tenant/Messenger*.cs` | Entity'ler |
| `api/src/Sozsoft.Platform.Application/Intranet/IntranetAppService.cs` , `Messenger/MessengerAppService.cs` | Servisler |
| `ui/src/views/intranet/Dashboard.tsx` , `widgets/*` , `SocialWall/*` , `documents/IntranetDocuments.tsx` | Pano, kutular, sosyal duvar, doküman sayfası |
| `ui/src/components/template/MessengerWidget.tsx` | Mesajlaşma penceresi |
| `configs/seeds/data/App.Hr.Intranet.*.json` , `App.DeveloperKit.IntranetWidgets.json` | Örnek veri ve pano kutuları |
Örnek veri:
- 5 duyuru (3'ü sabitlenmiş).
- 3 anket, 10 soru ve 13 seçenek.
- 6 paylaşı m: 4 medya (2 resim, 1 video, 1 anket), 8 yorum.
- 50 etkinlik türü, 5 kategori, 3 etkinlik ve 9 yorum.
<!-- 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.
### Tanı mlamalar (`App.Hr.Definitions`)
#### Yeterlilik Belgeleri — `App.Hr.Certificate`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Certificate.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.Certificate` (sı ra 4) |
| Yetki | `App.Hr.Certificate` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Yeterlilik Belgeleri — personelin sahip olabileceği mesleki yeterlilik ve mezuniyet belgeleri. |
| Geliştirme talebi | Human Resources -> Definitions |
| Kaynak | `Hr_T_Certificate` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Veri aynası | `data/App.Hr.Certificate.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Belge Adı | dxTextBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Evrak Türleri — `App.Hr.DocumentType`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_DocumentType.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.DocumentType` (sı ra 5) |
| Yetki | `App.Hr.DocumentType` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Evrak Türleri — personel ve süreç belgelerinin türleri (CV, dilekçe, ibraname, sağlı k raporu…), grupları yla. |
| Geliştirme talebi | Human Resources -> Definitions |
| Kaynak | `Hr_T_DocumentType` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` , `App.Listform.ListformField.IsRequired` |
| Veri aynası | `data/App.Hr.DocumentType.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `GroupName` | Dosya Grubu | dxSelectBox | ✓ | ✓ | liste: Genel, Özlük Evrakları , Sağlı k |
| `Name` | Dosya Türü | dxTextBox | ✓ | ✓ | |
| `IsRequired` | Zorunlu | dxCheckBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Masraf Türleri — `App.Hr.ExpenseType`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_ExpenseType.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.ExpenseType` (sı ra 9) |
| Yetki | `App.Hr.ExpenseType` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Masraf Türleri — personel masraf kalemleri (yemek, yol, konaklama, akaryakı t, telefon, temsil, kı rtasiye) ve vergi/SGK özellikleri. |
| Kaynak | `Hr_T_ExpenseType` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Form varsayı lanları | CurrencyId=TRY, IsTaxable=false, IsSgkSubject=false, RequiresReceipt=true, IsActive=true |
| Veri aynası | `data/App.Hr.ExpenseType.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Code` | Kod | dxTextBox | ✓ | ✓ | |
| `Name` | Adı | dxTextBox | ✓ | ✓ | |
| `DefaultAmount` | Varsayı lan Tutar | dxNumberBox | | ✓ | |
| `CurrencyId` | Para Birimi | dxSelectBox | | ✓ | sorgu: Sas_H_Currency |
| `IsTaxable` | Gelir Vergisine Tabi | dxCheckBox | ✓ | ✓ | |
| `IsSgkSubject` | SGK'ya Tabi | dxCheckBox | ✓ | ✓ | |
| `RequiresReceipt` | Fiş / Belge Gerekir | dxCheckBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Yan Hak Türleri — `App.Hr.BenefitType`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_BenefitType.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.BenefitType` (sı ra 10) |
| Yetki | `App.Hr.BenefitType` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Yan Hak Türleri — çalı şanlara sağlanan yan haklar (yemek kartı , ulaşı m, özel sağlı k sigortası , BES, konut, şirket aracı , telefon, çocuk ve yakacak yardı mı …). |
| Kaynak | `Hr_T_BenefitType` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Form varsayı lanları | CurrencyId=TRY, IsTaxable=false, IsSgkSubject=false, IsActive=true |
| Veri aynası | `data/App.Hr.BenefitType.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Code` | Kod | dxTextBox | ✓ | ✓ | |
| `Name` | Adı | dxTextBox | ✓ | ✓ | |
| `DefaultAmount` | Varsayı lan Tutar | dxNumberBox | | ✓ | |
| `CurrencyId` | Para Birimi | dxSelectBox | | ✓ | sorgu: Sas_H_Currency |
| `IsTaxable` | Gelir Vergisine Tabi | dxCheckBox | ✓ | ✓ | |
| `IsSgkSubject` | SGK'ya Tabi | dxCheckBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### İzin Türleri — `App.Hr.LeaveType`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_LeaveType.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.LeaveType` (sı ra 12) |
| Yetki | `App.Hr.LeaveType` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | İzin Türleri — izin çeşitleri ve kuralları (yı llı k, mazeret, ücretsiz, hastalı k, doğum, babalı k, evlilik, ölüm, süt izni). |
| Kaynak | `Hr_T_LeaveType` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Paid` , `App.Widget.Unpaid` |
| Form varsayı lanları | IsPaid=true, DeductsFromAnnualLeave=false, RequiresDocument=false, AllowHalfDay=false, Gender=All, IsActive=true, BalanceExceedAction=Block |
| Veri aynası | `data/App.Hr.LeaveType.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Code` | Kod | dxTextBox | ✓ | ✓ | |
| `Name` | Adı | dxTextBox | ✓ | ✓ | |
| `Gender` | Cinsiyet | dxSelectBox | ✓ | ✓ | liste: All, Male, Female |
| `MaxDaysPerYear` | Yı llı k En Fazla Gün | dxNumberBox | | ✓ | |
| `IsPaid` | Ücretli | dxCheckBox | ✓ | ✓ | |
| `DeductsFromAnnualLeave` | Yı llı k İzinden Düşer | dxCheckBox | ✓ | ✓ | |
| `RequiresDocument` | Belge Gerekir | dxCheckBox | ✓ | ✓ | |
| `AllowHalfDay` | Yarı m Gün Kullanı labilir | dxCheckBox | ✓ | ✓ | |
| `BalanceExceedAction` | Bakiye Aşı lı rsa | dxRadioGroup | ✓ | ✓ | liste: Block, Warn |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Kurum Doktorları — `App.Hr.Doctor`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Doctor.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.Doctor` (sı ra 13) |
| Yetki | `App.Hr.Doctor` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Kurum Doktorları — işyeri hekimleri ve belge bilgileri. |
| Geliştirme talebi | Human Resources -> Definitions |
| Kaynak | `Hr_T_Doctor` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Veri aynası | `data/App.Hr.Doctor.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `FullName` | Doktor Adı Soyadı | dxTextBox | ✓ | ✓ | |
| `DiplomaNo` | Diploma No | dxTextBox | | ✓ | |
| `DiplomaDate` | Diploma Tarihi | dxDateBox | | ✓ | |
| `OhsCertificateNo` | İşyeri Hekimi Belge No | dxTextBox | | ✓ | |
| `OhsCertificateDate` | İşyeri Hekimi Belge Tarihi | dxDateBox | | ✓ | |
| `IdentityNo` | T.C. Kimlik No | dxTextBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Hastaneler — `App.Hr.Hospital`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Hospital.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.Hospital` (sı ra 14) |
| Yetki | `App.Hr.Hospital` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Hastaneler — hastane ve sağlı k kurumu tanı mları . |
| Geliştirme talebi | Human Resources -> Definitions |
| Kaynak | `Hr_T_Hospital` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Veri aynası | `data/App.Hr.Hospital.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Kurum Adı | dxTextBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Hastane Bölümleri — `App.Hr.HospitalDepartment`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_HospitalDepartment.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.HospitalDepartment` (sı ra 15) |
| Yetki | `App.Hr.HospitalDepartment` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Hastane Bölümleri — hastane klinik/bölüm tanı mları (acil, dahiliye, kardiyoloji…). |
| Geliştirme talebi | Human Resources -> Definitions |
| Kaynak | `Hr_T_HospitalDepartment` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Veri aynası | `data/App.Hr.HospitalDepartment.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Bölüm Adı | dxTextBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
### İşe Alı m (`App.Hr.Recruitment`)
#### Kadro Talepleri — `App.Hr.StaffRequest`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_StaffRequest.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Recruitment` › `App.Hr.StaffRequest` (sı ra 1) |
| Yetki | `App.Hr.StaffRequest` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Kadro Talepleri — bir departmanı n yeni ya da boşalan bir pozisyon için personel istemesi ve bu isteğin onay süreci. İşe alı m sürecinin ilk adı mı dı r; ilan yalnı zca onaylanmı ş talepten açı lı r. |
| Kaynak | `Hr_T_StaffRequest` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Pending` , `App.Hr.StaffRequest.Widget.Approved` , `App.Hr.StaffRequest.Widget.Headcount` |
| Komutlar | InsertAfter: SQL |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | IsActive=true, RequestDate=@DATE, RequestedById=@USERID, Headcount=1, EmploymentType=FullTime, Reason=NewPosition, CurrencyId=TRY, BranchId= |
2026-10-07 08:17:46 +00:00
| Onay akı şı | Start 'Onaya Gönderildi' → Approval 'Onay Bekliyor' → Inform 'Onay Bilgisi' → Inform 'Ret Bilgisi' → End 'Onaylandı ' → End 'Reddedildi' |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `RequestNo` | Talep No | dxTextBox | | ✓ | |
| `RequestDate` | Talep Tarihi | dxDateBox | ✓ | ✓ | |
| `RequestedById` | Talep Eden | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
| `DepartmentId` | Departman | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Department (← BranchId) |
| `JobPositionId` | İş Pozisyonu | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_JobPosition (← DepartmentId) |
| `Headcount` | Kadro Adedi | dxNumberBox | ✓ | ✓ | |
| `EmploymentType` | Çalı şma Şekli | dxSelectBox | ✓ | ✓ | liste: FullTime, PartTime, Contract, Intern, Seasonal |
| `ExpectedStartDate` | Beklenen Başlangı ç | dxDateBox | | ✓ | |
| `Reason` | Talep Nedeni | dxRadioGroup | ✓ | ✓ | liste: NewPosition, Replacement · script |
| `ReplacedUserId` | Ayrı lan Personel | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `MinSalary` | Asgari Ücret | dxNumberBox | | ✓ | |
| `MaxSalary` | Azami Ücret | dxNumberBox | | ✓ | |
| `CurrencyId` | Para Birimi | dxSelectBox | | ✓ | sorgu: Sas_H_Currency |
| `Qualifications` | Aranan Nitelikler | dxHtmlEditor | | ✓ | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `ApprovalStatus` | Onay Durumu | dxTextBox | | ✓ | |
| `ApprovalUser` | Onaylayan | dxTextBox | | ✓ | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | ✓ | |
| `ApprovalDescription` | Onay Açı klaması | dxTextArea | | ✓ | |
#### İlanlar — `App.Hr.JobPosting`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_JobPosting.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Recruitment` › `App.Hr.JobPosting` (sı ra 2) |
| Yetki | `App.Hr.JobPosting` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | İlanlar — onaylanmı ş kadro taleplerinden açı lan iş ilanları ve ilana gelen başvurular. |
| Kaynak | `Hr_T_JobPosting` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.JobApplication` (Id → JobPostingId) |
| Widget'lar | `App.Widget.Total` , `App.Widget.Published` , `App.Widget.Draft` , `App.Hr.JobPosting.Widget.Closed` |
| Komutlar | InsertAfter: SQL · UpdateAfter: SQL |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | IsActive=true, Status=Draft, Headcount=1, EmploymentType=FullTime, WorkModel=Office, PublishDate=@DATE, BranchId= |
2026-10-07 08:17:46 +00:00
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `PostingNo` | İlan No | dxTextBox | | ✓ | |
| `StaffRequestId` | Kadro Talebi | dxSelectBox | | ✓ | sorgu: Hr_T_StaffRequest · script |
| `Title` | İlan Başlı ğı | dxTextBox | ✓ | ✓ | |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Draft, Published, Closed, Cancelled |
| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
| `DepartmentId` | Departman | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Department (← BranchId) |
| `JobPositionId` | İş Pozisyonu | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_JobPosition (← DepartmentId) |
| `Headcount` | Kadro Adedi | dxNumberBox | ✓ | ✓ | |
| `EmploymentType` | Çalı şma Şekli | dxSelectBox | ✓ | ✓ | liste: FullTime, PartTime, Contract, Intern, Seasonal |
| `WorkModel` | Çalı şma Modeli | dxSelectBox | ✓ | ✓ | liste: Office, Hybrid, Remote |
| `Location` | Lokasyon | dxTextBox | | ✓ | |
| `PublishDate` | Yayı n Tarihi | dxDateBox | | ✓ | |
| `ClosingDate` | Son Başvuru Tarihi | dxDateBox | | ✓ | |
| `SourceIds` | Yayı n Kanalları | dxTagBox | | ✓ | sorgu: Hr_T_CandidateSource |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `Description` | Açı klama | dxHtmlEditor | | ✓ | |
| `Requirements` | Aranan Nitelikler | dxHtmlEditor | | ✓ | |
#### Adaylar — `App.Hr.Candidate`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Candidate.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Recruitment` › `App.Hr.Candidate` (sı ra 3) |
| Yetki | `App.Hr.Candidate` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Adaylar — CV ve KVKK açı k rı zası ile tutulan aday havuzu. Bir aday birden fazla ilana başvurabilir. |
| Kaynak | `Hr_T_Candidate` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.JobApplication` (Id → CandidateId) |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` , `App.Hr.Candidate.Widget.Converted` |
| Komutlar | UpdateAfter: SQL |
| Form varsayı lanları | Country=Türkiye, IsActive=true, KvkkConsentDate=@NOW, KvkkConsentMethod=Written, CurrencyId=TRY |
| Butonlar | `App.Hr.Candidate.KvkkConsentForm` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Photo` | Fotoğraf | dxImageUpload | | ✓ | |
| `FirstName` | Adı | dxTextBox | ✓ | ✓ | |
| `LastName` | Soyadı | dxTextBox | ✓ | ✓ | |
| `Email` | E-posta | dxTextBox | ✓ | ✓ | |
| `PhoneNumber` | Telefon | dxTextBox | | ✓ | |
| `Gender` | Cinsiyet | dxSelectBox | | ✓ | liste: Male, Female |
| `BirthDate` | Doğum Tarihi | dxDateBox | | ✓ | |
| `Country` | Ülke | dxSelectBox | | ✓ | sorgu: Sas_H_Country |
| `City` | Şehir | dxSelectBox | | ✓ | sorgu: Sas_H_City (← Country) |
| `Address` | Adres | dxTextBox | | ✓ | |
| `EducationLevel` | Eğitim Düzeyi | dxSelectBox | | ✓ | liste: Primary, HighSchool, Associate, Bachelor, Master, Doctorate |
| `School` | Okul | dxTextBox | | ✓ | |
| `Major` | Bölüm | dxTextBox | | ✓ | |
| `GraduationYear` | Mezuniyet Yı lı | dxNumberBox | | ✓ | |
| `ExperienceYears` | Deneyim (Yı l) | dxNumberBox | | ✓ | |
| `CurrentCompany` | Mevcut Firma | dxTextBox | | ✓ | |
| `CurrentTitle` | Mevcut Ünvan | dxTextBox | | ✓ | |
| `ExpectedSalary` | Ücret Beklentisi | dxNumberBox | | ✓ | |
| `CurrencyId` | Para Birimi | dxSelectBox | | ✓ | sorgu: Sas_H_Currency |
| `SourceId` | Kaynak | dxSelectBox | | ✓ | sorgu: Hr_T_CandidateSource |
| `LinkedInUrl` | LinkedIn | dxTextBox | | ✓ | |
| `UserId` | Personel | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `SkillIds` | Yetkinlikler | dxTagBox | | ✓ | sorgu: Hr_T_Skill |
| `CvDocument` | CV | dxImageUpload | | ✓ | |
| `Notes` | Notlar | dxTextBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `KvkkConsent` | Adayı n KVKK kapsamı nda açı k rı zası alı ndı | dxCheckBox | ✓ | ✓ | |
| `KvkkConsentDate` | Rı za Tarihi | dxDateBox | ✓ | ✓ | |
| `KvkkConsentMethod` | Rı za Alma Yöntemi | dxSelectBox | ✓ | ✓ | liste: Written, Electronic, Email |
| `KvkkConsentDocument` | İmzalı Rı za Belgesi | dxImageUpload | | ✓ | |
#### Başvurular — `App.Hr.JobApplication`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_JobApplication.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Recruitment` › `App.Hr.JobApplication` (sı ra 4) |
| Yetki | `App.Hr.JobApplication` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Başvurular — bir adayı n bir ilana başvurusu ve başvurunun aşama takibi (kanban panosu). |
| Kaynak | `Hr_T_JobApplication` · 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.Interview` (Id → ApplicationId), `App.Hr.JobOffer` (Id → ApplicationId) |
| Todo | başlı k `CandidateName` , durum `Stage` (Applied,Screening,Interview,Offer,Hired,Rejected) |
| Komutlar | InsertAfter: SQL · UpdateAfter: SQL |
| Form varsayı lanları | IsActive=true, ApplicationDate=@DATE, Stage=Applied, OwnerUserId=@USERID |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `CandidateId` | Aday | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Candidate · script |
| `JobPostingId` | İlan | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_JobPosting |
| `CandidateName` | Aday | dxTextBox | | | |
| `PostingTitle` | İlan | dxTextBox | | | |
| `ApplicationDate` | Başvuru Tarihi | dxDateBox | ✓ | ✓ | |
| `SourceId` | Kaynak | dxSelectBox | | ✓ | sorgu: Hr_T_CandidateSource |
| `OwnerUserId` | Sorumlu | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `AverageScore` | Ortalama Puan | dxNumberBox | | ✓ | |
| `Stage` | Aşama | dxSelectBox | ✓ | ✓ | liste: Applied, Screening, Interview, Offer, Hired, Rejected · script |
| `RejectionReasonId` | Ret Sebebi | dxSelectBox | | ✓ | sorgu: Hr_T_RejectionReason |
| `RejectionNote` | Ret Açı klaması | dxTextArea | | ✓ | |
| `SortOrder` | Sı ralama | dxNumberBox | | | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `Notes` | Notlar | dxTextArea | | ✓ | |
#### Mülakatlar — `App.Hr.Interview`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Interview.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Recruitment` › `App.Hr.Interview` (sı ra 5) |
| Yetki | `App.Hr.Interview` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Mülakatlar — başvuru için mülakat planlama, mülakatçı ataması ve kriter bazlı puanlama. |
| Kaynak | `Hr_T_Interview` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart, Scheduler (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.InterviewScore` (Id → InterviewId) |
| Komutlar | InsertAfter: SQL · UpdateAfter: SQL · DeleteAfter: SQL |
| Form varsayı lanları | IsActive=true, InterviewType=FaceToFace, Status=Planned, InterviewerUserId=@USERID |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ApplicationId` | Başvuru | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_JobApplication |
| `Title` | Başlı k | dxTextBox | | | |
| `InterviewType` | Mülakat Türü | dxSelectBox | ✓ | ✓ | liste: Phone, Video, FaceToFace, Technical, Hr |
| `InterviewerUserId` | Mülakatçı | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `StartDate` | Başlangı ç | dxDateBox | ✓ | ✓ | script |
| `EndDate` | Bitiş | dxDateBox | ✓ | ✓ | |
| `Location` | Yer | dxTextBox | | ✓ | |
| `MeetingUrl` | Toplantı Bağlantı sı | dxTextBox | | ✓ | |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Planned, Completed, Cancelled, NoShow |
| `Recommendation` | Öneri | dxSelectBox | | ✓ | liste: Hire, Hold, Reject |
| `OverallScore` | Genel Puan | dxNumberBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `Notes` | Notlar | dxTextArea | | ✓ | |
#### Aday Kaynakları — `App.Hr.CandidateSource`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_CandidateSource.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.CandidateSource` (sı ra 6) |
| Yetki | `App.Hr.CandidateSource` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Aday Kaynakları — adayları n ve ilanları n hangi kanaldan geldiğini/yayı nlandı ğı nı tanı mlayan liste (LinkedIn, Kariyer.net, referans, kariyer fuarı …). |
| Kaynak | `Hr_T_CandidateSource` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Form varsayı lanları | IsActive=true |
| Veri aynası | `data/App.Hr.CandidateSource.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Adı | dxTextBox | ✓ | ✓ | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Teklifler — `App.Hr.JobOffer`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_JobOffer.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Recruitment` › `App.Hr.JobOffer` (sı ra 6) |
| Yetki | `App.Hr.JobOffer` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Teklifler — işe alı nması düşünülen adaya yapı lan ücret ve şart teklifi, iç onayı ve teklif mektubu. |
| Kaynak | `Hr_T_JobOffer` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertAfter: SQL · UpdateAfter: SQL |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | IsActive=true, OfferDate=@DATE, Status=Draft, CurrencyId=TRY, EmploymentType=FullTime, WorkModel=Office, BranchId= |
2026-10-07 08:17:46 +00:00
| Butonlar | `App.Hr.JobOffer.OfferLetter` |
| Onay akı şı | Start 'Onaya Gönderildi' → Approval 'Onay Bekliyor' → Inform 'Onay Bilgisi' → Inform 'Ret Bilgisi' → End 'Onaylandı ' → End 'Reddedildi' |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `OfferNo` | Teklif No | dxTextBox | | ✓ | |
| `ApplicationId` | Başvuru | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_JobApplication · script |
| `CandidateName` | Aday | dxTextBox | | | |
| `OfferDate` | Teklif Tarihi | dxDateBox | ✓ | ✓ | |
| `ValidUntil` | Geçerlilik Tarihi | dxDateBox | | ✓ | |
| `StartDate` | İşe Başlama Tarihi | dxDateBox | | ✓ | |
| `GrossSalary` | Brüt Maaş | dxNumberBox | ✓ | ✓ | |
| `CurrencyId` | Para Birimi | dxSelectBox | ✓ | ✓ | sorgu: Sas_H_Currency |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Draft, Sent, Accepted, Declined, Expired · script |
| `ResponseDate` | Yanı t Tarihi | dxDateBox | | ✓ | |
| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
| `DepartmentId` | Departman | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Department (← BranchId) |
| `JobPositionId` | İş Pozisyonu | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_JobPosition (← DepartmentId) |
| `EmploymentType` | Çalı şma Şekli | dxSelectBox | ✓ | ✓ | liste: FullTime, PartTime, Contract, Intern, Seasonal |
| `WorkModel` | Çalı şma Modeli | dxSelectBox | ✓ | ✓ | liste: Office, Hybrid, Remote |
| `BenefitCodes` | Yan Haklar | dxTagBox | | ✓ | sorgu: Hr_T_BenefitType |
| `Notes` | Notlar | dxTextBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `ApprovalStatus` | Onay Durumu | dxTextBox | | ✓ | |
| `ApprovalUser` | Onaylayan | dxTextBox | | ✓ | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | ✓ | |
| `ApprovalDescription` | Onay Açı klaması | dxTextBox | | ✓ | |
#### Ret Sebepleri — `App.Hr.RejectionReason`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_RejectionReason.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.RejectionReason` (sı ra 7) |
| Yetki | `App.Hr.RejectionReason` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Ret Sebepleri — bir başvurunun şirket ya da aday tarafı ndan neden kapatı ldı ğı nı sı nı flandı ran liste. |
| Kaynak | `Hr_T_RejectionReason` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Form varsayı lanları | IsActive=true, RejectedBy=Company |
| Veri aynası | `data/App.Hr.RejectionReason.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Adı | dxTextBox | ✓ | ✓ | |
| `RejectedBy` | Reddeden | dxRadioGroup | ✓ | ✓ | liste: Company, Candidate |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Değerlendirme Kriterleri — `App.Hr.EvaluationCriterion`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_EvaluationCriterion.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.EvaluationCriterion` (sı ra 8) |
| Yetki | `App.Hr.EvaluationCriterion` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Değerlendirme Kriterleri — mülakatlarda puanlanan kriterler ve ağı rlı kları (iletişim, teknik yetkinlik, problem çözme…). |
| Kaynak | `Hr_T_EvaluationCriterion` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Form varsayı lanları | IsActive=true, Weight=1 |
| Veri aynası | `data/App.Hr.EvaluationCriterion.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Adı | dxTextBox | ✓ | ✓ | |
| `Weight` | Ağı rlı k | dxNumberBox | ✓ | ✓ | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Mülakat Puanları — `App.Hr.InterviewScore`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_InterviewScore.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.InterviewScore` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Mülakat Puanları — mülakatta her değerlendirme kriterine verilen 1– 5 puan. |
| Kaynak | `Hr_T_InterviewScore` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertAfter: SQL · UpdateAfter: SQL · DeleteAfter: SQL |
| Form varsayı lanları | IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `InterviewId` | Mülakat | dxTextBox | | | |
| `CriterionId` | Kriter | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_EvaluationCriterion |
| `Score` | Puan | dxSelectBox | ✓ | ✓ | liste: 1, 2, 3, 4, 5 |
| `Comment` | Yorum | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
### Çalı şma Takvimi ve Vardiyalar (`App.Hr.WorkCalendar`, `App.Hr.Shift`)
#### Çalı şma Takvimi — `App.Hr.WorkCalendar`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_WorkCalendar.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr` › `App.Hr.WorkCalendar` (sı ra 4) |
| Yetki | `App.Hr.WorkCalendar` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Çalı şma Takvimi — resmi tatiller, arife (yarı m gün) ve çalı şı lmayan günler. |
| Kaynak | `Hr_T_WorkCalendar` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart, Scheduler (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Hr.WorkCalendar.DayType.Holiday` , `App.Hr.WorkCalendar.DayType.HalfDay` |
| Komutlar | InsertAfter: `Hr_S_WorkCalendarAfterSave` · UpdateAfter: `Hr_S_WorkCalendarAfterSave` · DeleteAfter: `Hr_S_WorkCalendarAfterSave` |
| Form varsayı lanları | DayType=Holiday, RecurrenceRule=FREQ=YEARLY, AllDay=true, IsActive=true |
| Veri aynası | `data/App.Hr.WorkCalendar.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Adı | dxTextBox | ✓ | ✓ | |
| `StartDate` | Başlangı ç Tarihi | dxDateBox | ✓ | ✓ | |
| `EndDate` | Bitiş Tarihi | dxDateBox | ✓ | ✓ | |
| `DayType` | Gün Türü | dxSelectBox | ✓ | ✓ | liste: Holiday, HalfDay |
| `RecurrenceRule` | Tekrarlama Kuralı | dxSelectBox | | ✓ | liste: FREQ=YEARLY |
| `AllDay` | Tüm Gün | dxCheckBox | | | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Vardiyalar — `App.Hr.Shift`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Shift.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.Shift` (sı ra 11) |
| Yetki | `App.Hr.Shift` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Vardiyalar — çalı şma vardiyaları nı n tanı mı (sabah, akşam, gece…). |
| Geliştirme talebi | Human Resources -> Olay Günlüğü |
| Kaynak | `Hr_T_Shift` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Form varsayı lanları | IsNightShift=false, IsActive=true |
| Veri aynası | `data/App.Hr.Shift.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Vardiya Adı | dxTextBox | ✓ | ✓ | |
| `StartTime` | Başlangı ç Saati | dxTextBox | | ✓ | |
| `EndTime` | Bitiş Saati | dxTextBox | | ✓ | |
| `BreakMinutes` | Mola (dk) | dxNumberBox | | ✓ | |
| `LateToleranceMinutes` | Geç Kalma Toleransı (dk) | dxNumberBox | | ✓ | |
| `EarlyLeaveToleranceMinutes` | Erken Çı kı ş Toleransı (dk) | dxNumberBox | | ✓ | |
| `WorkingHours` | Çalı şma Süresi (Saat) | dxNumberBox | | ✓ | |
| `IsNightShift` | Gece Vardiyası | dxCheckBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
### İzin Yönetimi (`App.Hr.Leave`)
#### İzin Talepleri — `App.Hr.LeaveRequest`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_LeaveRequest.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Leave` › `App.Hr.LeaveRequest` (sı ra 1) |
| Yetki | `App.Hr.LeaveRequest` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | İzin Talepleri — kurumdaki bütün izin talepleri ve onay durumları . Yalnı z İnsan Kaynakları kullanı r. |
| Kaynak | `Hr_T_LeaveRequest` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Hr.Leave.Widget.ManagerApproval` , `App.Hr.Leave.Widget.HrApproval` , `App.Hr.Leave.Widget.Approved` , `App.Hr.Leave.Widget.Rejected` |
| Komutlar | InsertAfter: `Hr_S_LeaveRequestAfterSave` · UpdateBefore: `Hr_S_LeaveRequestGuard` · UpdateAfter: `Hr_S_LeaveRequestAfterSave` · DeleteBefore: `Hr_S_LeaveRequestGuard` · DeleteAfter: `Hr_S_LeaveRequestAfterSave` |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | IsHalfDay=false, StartDate=@DATE, EndDate=@DATE, BranchId= |
2026-10-07 08:17:46 +00:00
| Onay akı şı | Start 'Onaya Gönderildi' → Compare 'Müdür Onayı Gerekli mi?' → Approval 'Müdür Onayı ' → Approval 'İK Onayı ' → End 'Onaylandı ' → End 'Reddedildi' |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `RequestNo` | Talep No | dxTextBox | | ✓ | |
2026-10-14 21:12:14 +00:00
| `BranchId` | Tesis Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
2026-10-07 08:17:46 +00:00
| `EmployeeId` | Çalı şan | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers · script |
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
| `JobPositionId` | İş Pozisyonu | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
| `LeaveTypeId` | İzin Türü | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_LeaveType |
| `StartDate` | Başlangı ç Tarihi | dxDateBox | ✓ | ✓ | script |
| `EndDate` | Bitiş Tarihi | dxDateBox | ✓ | ✓ | script |
| `IsHalfDay` | Yarı m Gün | dxCheckBox | | ✓ | script |
| `HalfDayPart` | Yarı m Gün Dilimi | dxSelectBox | | ✓ | liste: Morning, Afternoon |
| `Days` | Gün | dxNumberBox | | ✓ | |
| `BalanceWarning` | Bakiye Uyarı sı | dxTextBox | | ✓ | |
| `ManagerUserNames` | Departman Müdürleri | dxTextBox | | | |
| `RequiresManagerApproval` | Müdür Onayı Gerekli | dxNumberBox | | | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `DocumentFileName` | Belge Adı | dxTextBox | | ✓ | |
| `DocumentContent` | Belge (rapor vb.) | dxImageUpload | | ✓ | |
| `ApprovalStatus` | Onay Durumu | dxTextBox | | ✓ | |
| `ApprovalUser` | Onaylayan | dxTextBox | | ✓ | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | ✓ | |
| `ApprovalDescription` | Onay Açı klaması | dxTextBox | | ✓ | |
#### İzin Bakiyeleri — `App.Hr.LeaveBalance`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_LeaveBalance.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Leave` › `App.Hr.LeaveBalance` (sı ra 2) |
| Yetki | `App.Hr.LeaveBalance` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | İzin Bakiyeleri — her çalı şanı n yı llı k izin bakiyesi. |
| Kaynak | `Hr_V_LeaveSummary` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.LeaveBalanceAdjustment` (Id → EmployeeId), `App.Hr.LeaveBalanceYear` (Id → EmployeeId) |
| Widget'lar | `App.Widget.Total` , `App.Hr.Leave.Widget.RemainingDays` , `App.Hr.Leave.Widget.NegativeBalance` , `App.Hr.Leave.Widget.PendingDays` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeName` | Çalı şan Adı | dxTextBox | | ✓ | |
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
| `JobPositionId` | İş Pozisyonu | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
| `SeniorityStartDate` | Kı dem Başlangı cı | dxDateBox | | ✓ | |
| `ServiceYears` | Kı dem Yı lı | dxNumberBox | | ✓ | |
| `EntitledDays` | Hak Edilen Gün | dxNumberBox | | ✓ | |
| `AdjustmentDays` | Düzeltme Günü | dxNumberBox | | ✓ | |
| `UsedDays` | Kullanı lan Gün | dxNumberBox | | ✓ | |
| `PendingDays` | Onay Bekleyen Gün | dxNumberBox | | ✓ | |
| `RemainingDays` | Kalan Gün | dxNumberBox | | ✓ | |
| `AvailableDays` | Kullanı labilir Gün | dxNumberBox | | ✓ | |
| `NextAccrualDate` | Sonraki Hak Ediş | dxDateBox | | ✓ | |
| `NextAccrualDays` | Sonraki Hak Ediş Günü | dxNumberBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Bakiye Düzeltmeleri — `App.Hr.LeaveBalanceAdjustment`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_LeaveBalanceAdjustment.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.LeaveBalanceAdjustment` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Bakiye Düzeltmeleri — çalı şanı n yı llı k izin bakiyesine elle yapı lan ekleme ve düşümler. |
| Kaynak | `Hr_T_LeaveBalanceAdjustment` · 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ı | IsActive=true, AdjustmentDate=@DATE |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `AdjustmentDate` | Düzeltme Tarihi | dxDateBox | ✓ | ✓ | |
| `Days` | Gün | dxNumberBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `Reason` | Neden | dxTextArea | ✓ | ✓ | |
#### İzin Defteri — `App.Hr.LeaveBalanceYear`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_LeaveBalanceYear.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.LeaveBalanceYear` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | İzin Defteri — çalı şanı n yı llı k izninin yı l yı l dökümü. |
| Kaynak | `Hr_V_LeaveBalanceYear` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `YearNo` | Hizmet Yı lı | dxNumberBox | | ✓ | |
| `AccrualDate` | Hak Ediş Tarihi | dxDateBox | | ✓ | |
| `PeriodEndDate` | Dönem Sonu | dxDateBox | | ✓ | |
| `EntitledDays` | Hak Edilen Gün | dxNumberBox | | ✓ | |
| `UsedDays` | Kullanı lan Gün | dxNumberBox | | ✓ | |
| `PendingDays` | Onay Bekleyen Gün | dxNumberBox | | ✓ | |
| `RemainingDays` | Kalan Gün | dxNumberBox | | ✓ | |
| `CumulativeRemainingDays` | Kümülatif Bakiye | dxNumberBox | | ✓ | |
| `NextAccrualDate` | Sonraki Hak Ediş | dxDateBox | | ✓ | |
| `NextAccrualDays` | Sonraki Hak Ediş Günü | dxNumberBox | | ✓ | |
#### İzin Taleplerim — `App.Hr.MyLeaveRequest`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_MyLeaveRequest.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.MyLeaveRequest` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | İzin Taleplerim — oturum açan çalı şanı n kendi izin talepleri ve onay durumları . |
| Kaynak | `Hr_T_LeaveRequest` · filtre `"IsDeleted" = 'false' AND "EmployeeId" = '@USERID'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertAfter: `Hr_S_LeaveRequestAfterSave` · UpdateBefore: `Hr_S_LeaveRequestGuard` · UpdateAfter: `Hr_S_LeaveRequestAfterSave` · DeleteBefore: `Hr_S_LeaveRequestGuard` · DeleteAfter: `Hr_S_LeaveRequestAfterSave` |
| Form varsayı lanları | IsHalfDay=false, StartDate=@DATE, EndDate=@DATE |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `RequestNo` | Talep No | dxTextBox | | ✓ | |
| `LeaveTypeId` | İzin Türü | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_LeaveType |
| `StartDate` | Başlangı ç Tarihi | dxDateBox | ✓ | ✓ | script |
| `EndDate` | Bitiş Tarihi | dxDateBox | ✓ | ✓ | script |
| `IsHalfDay` | Yarı m Gün | dxCheckBox | | ✓ | script |
| `HalfDayPart` | Yarı m Gün Dilimi | dxSelectBox | | ✓ | liste: Morning, Afternoon |
| `Days` | Gün | dxNumberBox | | ✓ | |
| `BalanceWarning` | Bakiye Uyarı sı | dxTextBox | | ✓ | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `DocumentFileName` | Belge Adı | dxTextBox | | ✓ | |
| `DocumentContent` | Belge (rapor vb.) | dxImageUpload | | ✓ | |
| `ApprovalStatus` | Onay Durumu | dxTextBox | | ✓ | |
| `ApprovalUser` | Onaylayan | dxTextBox | | ✓ | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | ✓ | |
| `ApprovalDescription` | Onay Açı klaması | dxTextBox | | ✓ | |
#### Ekibimin İzin Talepleri — `App.Hr.TeamLeaveRequest`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TeamLeaveRequest.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.TeamLeaveRequest` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Ekibimin İzin Talepleri — müdürü olduğunuz departmandaki çalı şanları n izin talepleri. |
| Kaynak | `Hr_T_LeaveRequest` · filtre `"IsDeleted" = 'false' AND '\|' + "ManagerIds" + '\|' LIKE '%\|@USERID\|%'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Komutlar | UpdateBefore: `Hr_S_LeaveRequestGuard` · UpdateAfter: `Hr_S_LeaveRequestAfterSave` |
| Onay akı şı | Start 'Onaya Gönderildi' → Approval 'Müdür Onayı ' → Approval 'İK Onayı ' → End 'Onaylandı ' → End 'Reddedildi' |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `RequestNo` | Talep No | dxTextBox | | ✓ | |
| `EmployeeId` | Çalı şan | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
| `JobPositionId` | İş Pozisyonu | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
| `LeaveTypeId` | İzin Türü | dxSelectBox | | ✓ | sorgu: Hr_T_LeaveType |
| `StartDate` | Başlangı ç Tarihi | dxDateBox | | ✓ | |
| `EndDate` | Bitiş Tarihi | dxDateBox | | ✓ | |
| `IsHalfDay` | Yarı m Gün | dxCheckBox | | ✓ | |
| `HalfDayPart` | Yarı m Gün Dilimi | dxSelectBox | | ✓ | liste: Morning, Afternoon |
| `Days` | Gün | dxNumberBox | | ✓ | |
| `BalanceWarning` | Bakiye Uyarı sı | dxTextBox | | ✓ | |
| `ManagerUserNames` | Departman Müdürleri | dxTextBox | | | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `DocumentFileName` | Belge Adı | dxTextBox | | ✓ | |
| `DocumentContent` | Belge (rapor vb.) | dxImageUpload | | ✓ | |
| `ApprovalStatus` | Onay Durumu | dxTextBox | | ✓ | |
| `ApprovalUser` | Onaylayan | dxTextBox | | ✓ | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | ✓ | |
| `ApprovalDescription` | Onay Açı klaması | dxTextArea | | ✓ | |
#### Bakiyem — `App.Hr.MyLeaveBalance`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_MyLeaveBalance.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.MyLeaveBalance` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Bakiyem — yı llı k izin hakkı nı zı n ve kullanı mı nı zı n yı l yı l dökümü. |
| Kaynak | `Hr_V_LeaveBalanceYear` · filtre `"EmployeeId" = '@USERID'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `YearNo` | Hizmet Yı lı | dxNumberBox | | ✓ | |
| `AccrualDate` | Hak Ediş Tarihi | dxDateBox | | ✓ | |
| `PeriodEndDate` | Dönem Sonu | dxDateBox | | ✓ | |
| `EntitledDays` | Hak Edilen Gün | dxNumberBox | | ✓ | |
| `UsedDays` | Kullanı lan Gün | dxNumberBox | | ✓ | |
| `PendingDays` | Onay Bekleyen Gün | dxNumberBox | | ✓ | |
| `RemainingDays` | Kalan Gün | dxNumberBox | | ✓ | |
| `CumulativeRemainingDays` | Kümülatif Bakiye | dxNumberBox | | ✓ | |
| `NextAccrualDate` | Sonraki Hak Ediş | dxDateBox | | ✓ | |
| `NextAccrualDays` | Sonraki Hak Ediş Günü | dxNumberBox | | ✓ | |
### Puantaj ve Devam Takibi (`App.Hr.Attendance`)
#### Günlük Hareketler — `App.Hr.AttendanceLog`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_AttendanceLog.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Attendance` › `App.Hr.AttendanceLog` (sı ra 1) |
| Yetki | `App.Hr.AttendanceLog` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Günlük Hareketler — PDKS'den (kart okuyucu), Excel aktarı mı ndan gelen ya da elle girilen ham giriş/çı kı ş okutmaları . |
| Kaynak | `Hr_T_AttendanceLog` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Hr.Attendance.Widget.Today` , `App.Hr.Attendance.Widget.Pdks` , `App.Hr.Attendance.Widget.Manual` , `App.Hr.Attendance.Widget.Error` |
| Komutlar | InsertAfter: `Hr_S_AttendanceProcess` · UpdateAfter: `Hr_S_AttendanceProcess` · DeleteAfter: `Hr_S_AttendanceProcess` |
| Form varsayı lanları | Direction=Auto, Source=Manual |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `CardNo` | Kart No | dxTextBox | | ✓ | |
| `EventTime` | Zaman | dxDateBox | ✓ | ✓ | |
| `Direction` | Yön | dxSelectBox | ✓ | ✓ | liste: In, Out, Auto |
| `Source` | Kaynak | dxSelectBox | | ✓ | liste: Manual, Pdks, Import |
| `DeviceCode` | Cihaz | dxTextBox | | ✓ | |
| `WorkDate` | İş Günü | dxDateBox | | | |
| `ProcessError` | Hata | dxSelectBox | | | liste: UnknownCard, ClosedPeriod |
| `Note` | Not | dxTextArea | | ✓ | |
#### Günlük Puantaj — `App.Hr.Timesheet`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Timesheet.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Attendance` › `App.Hr.Timesheet` (sı ra 2) |
| Yetki | `App.Hr.Timesheet` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Günlük Puantaj — çalı şan × gün satı rı : ilk giriş, son çı kı ş, net çalı şma süresi, mola düşümü, geç kalma (dk), erken çı kı ş (dk), fazla mesai (saat) ve gün tipi (çalı şma, hafta tatili, resmî tatil, izinli, raporlu, eğitimde, devamsı z). |
| Kaynak | `Hr_T_Timesheet` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Hr.Attendance.Widget.Absent` , `App.Hr.Attendance.Widget.Late` , `App.Hr.Attendance.Widget.Overtime` , `App.Hr.Attendance.Widget.Incomplete` |
| Komutlar | UpdateBefore: SQL · UpdateAfter: `Hr_S_TimesheetCalculate` · DeleteBefore: SQL · DeleteAfter: `Hr_S_TimesheetCalculate` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `WorkDate` | İş Günü | dxDateBox | | ✓ | |
| `DayType` | Gün Tipi | dxSelectBox | ✓ | ✓ | liste: Work, WeeklyOff, Holiday, Training, Leave, Sick, Absent |
| `LeaveTypeId` | İzin Türü | dxSelectBox | | ✓ | sorgu: Hr_T_LeaveType |
| `TrainingId` | Eğitim | dxSelectBox | | | sorgu: Hr_T_Training |
| `ShiftId` | Vardiya | dxSelectBox | | | sorgu: Hr_T_Shift |
| `FirstIn` | İlk Giriş | dxDateBox | | ✓ | |
| `LastOut` | Son Çı kı ş | dxDateBox | | ✓ | |
| `NetHours` | Net Çalı şma (saat) | dxNumberBox | | | |
| `BreakMinutes` | Mola Düşümü (dk) | dxNumberBox | | ✓ | |
| `LateMinutes` | Geç Kalma (dk) | dxNumberBox | | | |
| `EarlyLeaveMinutes` | Erken Çı kı ş (dk) | dxNumberBox | | | |
| `OvertimeHours` | Fazla Mesai (saat) | dxNumberBox | | | |
| `IsAssumed` | Varsayı lan | dxCheckBox | | | |
| `IsManual` | Elle | dxCheckBox | | | |
| `IsIncomplete` | Eksik Okutma | dxCheckBox | | | |
| `Note` | Not | dxTextArea | | ✓ | |
| `PeriodYear` | Yı l | dxNumberBox | | | |
| `PeriodMonth` | Ay | dxNumberBox | | | |
| `PeriodKey` | Dönem Anahtarı | dxTextBox | | | |
#### Aylı k Puantaj — `App.Hr.TimesheetMonthly`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TimesheetMonthly.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Attendance` › `App.Hr.TimesheetMonthly` (sı ra 3) |
| Yetki | `App.Hr.TimesheetMonthly` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Aylı k Puantaj — Günlük Puantaj'ı n personel bazlı aylı k toplamı (salt okunur). |
| Kaynak | `Hr_V_TimesheetMonthly` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.Timesheet` (Id → PeriodKey) |
| Widget'lar | `App.Hr.Attendance.Widget.Employees` , `App.Hr.Attendance.Widget.Overtime` , `App.Hr.Attendance.Widget.Absent` , `App.Hr.Attendance.Widget.OverLimit` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
| `JobPositionId` | Pozisyon | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
| `PeriodYear` | Yı l | dxNumberBox | | ✓ | |
| `PeriodMonth` | Ay | dxNumberBox | | ✓ | |
| `PeriodStatus` | Dönem Durumu | dxSelectBox | | ✓ | liste: Open, Closed |
| `WorkDays` | Çalı şma Günü | dxNumberBox | | ✓ | |
| `NetHours` | Net Çalı şma (saat) | dxNumberBox | | ✓ | |
| `LateMinutes` | Geç Kalma (dk) | dxNumberBox | | ✓ | |
| `LateDays` | Geç Kalı nan Gün | dxNumberBox | | ✓ | |
| `EarlyLeaveMinutes` | Erken Çı kı ş (dk) | dxNumberBox | | ✓ | |
| `EarlyLeaveDays` | Erken Çı kı lan Gün | dxNumberBox | | ✓ | |
| `OvertimeHours` | Fazla Mesai (saat) | dxNumberBox | | ✓ | |
| `OvertimePaidHours` | Zamlı Fazla Mesai (saat) | dxNumberBox | | ✓ | |
| `WeeklyOffDays` | Hafta Tatili | dxNumberBox | | ✓ | |
| `HolidayDays` | Resmî Tatil | dxNumberBox | | ✓ | |
| `LeaveDays` | İzinli Gün | dxNumberBox | | ✓ | |
| `UnpaidLeaveDays` | Ücretsiz İzinli Gün | dxNumberBox | | ✓ | |
| `TrainingDays` | Eğitim Günü | dxNumberBox | | ✓ | |
| `SickDays` | Raporlu Gün | dxNumberBox | | ✓ | |
| `AbsentDays` | Devamsı z Gün | dxNumberBox | | ✓ | |
| `IncompleteDays` | Eksik Okutmalı Gün | dxNumberBox | | ✓ | |
| `AssumedDays` | Varsayı lan Gün | dxNumberBox | | ✓ | |
| `YearOvertimeHours` | Yı llı k Fazla Mesai (saat) | dxNumberBox | | ✓ | |
| `AnnualOvertimeLimit` | Yı llı k Fazla Mesai Sı nı rı | dxNumberBox | | ✓ | |
| `IsOverAnnualLimit` | Yı llı k Sı nı r Aşı ldı | dxNumberBox | | | |
#### Puantaj Dönemleri — `App.Hr.TimesheetPeriod`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TimesheetPeriod.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Attendance` › `App.Hr.TimesheetPeriod` (sı ra 4) |
| Yetki | `App.Hr.TimesheetPeriod` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Puantaj Dönemleri — aylı k puantaj dönemleri: yeniden hesaplama ve kapanı ş. |
| Kaynak | `Hr_T_TimesheetPeriod` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Hr.Attendance.Widget.Open` , `App.Hr.Attendance.Widget.Closed` , `App.Widget.Total` |
| Komutlar | InsertAfter: `Hr_S_TimesheetPeriodAfterSave` · UpdateAfter: `Hr_S_TimesheetPeriodAfterSave` · DeleteBefore: SQL |
| Form varsayı lanları | PeriodYear=@YEAR, PeriodMonth=@MONTH, Status=Open |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `PeriodYear` | Yı l | dxNumberBox | ✓ | ✓ | |
| `PeriodMonth` | Ay | dxNumberBox | ✓ | ✓ | |
| `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Open, Closed |
| `CalculatedAt` | Hesaplanma | dxDateBox | | | |
| `ClosedAt` | Kapanı ş | dxDateBox | | | |
| `ClosedById` | Kapatan | dxSelectBox | | | sorgu: AbpUsers |
| `NightlyAt` | Gece İşi | dxDateBox | | | |
| `Note` | Not | dxTextArea | | ✓ | |
#### Puantajı m — `App.Hr.MyTimesheet`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_MyTimesheet.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.MyTimesheet` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Puantajı m — kendi aylı k puantajı nı z: ay ay çalı şma günü, net saat, geç kalma, erken çı kı ş, fazla mesai ve izinli/raporlu/devamsı z günler. |
| Kaynak | `Hr_V_TimesheetMonthly` · filtre `"EmployeeId" = '@USERID'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.MyTimesheetDay` (Id → PeriodKey) |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `PeriodYear` | Yı l | dxNumberBox | | ✓ | |
| `PeriodMonth` | Ay | dxNumberBox | | ✓ | |
| `PeriodStatus` | Dönem Durumu | dxSelectBox | | ✓ | liste: Open, Closed |
| `WorkDays` | Çalı şma Günü | dxNumberBox | | ✓ | |
| `NetHours` | Net Çalı şma (saat) | dxNumberBox | | ✓ | |
| `LateMinutes` | Geç Kalma (dk) | dxNumberBox | | ✓ | |
| `LateDays` | Geç Kalı nan Gün | dxNumberBox | | ✓ | |
| `EarlyLeaveMinutes` | Erken Çı kı ş (dk) | dxNumberBox | | ✓ | |
| `EarlyLeaveDays` | Erken Çı kı lan Gün | dxNumberBox | | ✓ | |
| `OvertimeHours` | Fazla Mesai (saat) | dxNumberBox | | ✓ | |
| `OvertimePaidHours` | Zamlı Fazla Mesai (saat) | dxNumberBox | | ✓ | |
| `WeeklyOffDays` | Hafta Tatili | dxNumberBox | | ✓ | |
| `HolidayDays` | Resmî Tatil | dxNumberBox | | ✓ | |
| `LeaveDays` | İzinli Gün | dxNumberBox | | ✓ | |
| `UnpaidLeaveDays` | Ücretsiz İzinli Gün | dxNumberBox | | ✓ | |
| `TrainingDays` | Eğitim Günü | dxNumberBox | | ✓ | |
| `SickDays` | Raporlu Gün | dxNumberBox | | ✓ | |
| `AbsentDays` | Devamsı z Gün | dxNumberBox | | ✓ | |
| `IncompleteDays` | Eksik Okutmalı Gün | dxNumberBox | | ✓ | |
| `AssumedDays` | Varsayı lan Gün | dxNumberBox | | ✓ | |
| `YearOvertimeHours` | Yı llı k Fazla Mesai (saat) | dxNumberBox | | ✓ | |
| `AnnualOvertimeLimit` | Yı llı k Fazla Mesai Sı nı rı | dxNumberBox | | ✓ | |
| `IsOverAnnualLimit` | Yı llı k Sı nı r Aşı ldı | dxNumberBox | | | |
#### Puantaj Günlerim — `App.Hr.MyTimesheetDay`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_MyTimesheetDay.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.MyTimesheetDay` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Puantaj Günlerim — puantajı nı zı n günleri: ilk giriş, son çı kı ş, net çalı şma, mola, geç kalma, erken çı kı ş, fazla mesai ve gün tipi. |
| Kaynak | `Hr_T_Timesheet` · filtre `"IsDeleted" = 'false' AND "EmployeeId" = '@USERID'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `WorkDate` | İş Günü | dxDateBox | | | |
| `DayType` | Gün Tipi | dxSelectBox | | | liste: Work, WeeklyOff, Holiday, Training, Leave, Sick, Absent |
| `LeaveTypeId` | İzin Türü | dxSelectBox | | | sorgu: Hr_T_LeaveType |
| `TrainingId` | Eğitim | dxSelectBox | | | sorgu: Hr_T_Training |
| `FirstIn` | İlk Giriş | dxDateBox | | | |
| `LastOut` | Son Çı kı ş | dxDateBox | | | |
| `NetHours` | Net Çalı şma (saat) | dxNumberBox | | | |
| `BreakMinutes` | Mola Düşümü (dk) | dxNumberBox | | | |
| `LateMinutes` | Geç Kalma (dk) | dxNumberBox | | | |
| `EarlyLeaveMinutes` | Erken Çı kı ş (dk) | dxNumberBox | | | |
| `OvertimeHours` | Fazla Mesai (saat) | dxNumberBox | | | |
| `IsAssumed` | Varsayı lan | dxCheckBox | | | |
| `IsManual` | Elle | dxCheckBox | | | |
| `IsIncomplete` | Eksik Okutma | dxCheckBox | | | |
| `Note` | Not | dxTextBox | | | |
| `PeriodKey` | Dönem Anahtarı | dxTextBox | | | |
### Sağlı k Kartları (`App.Hr.HealthCard`)
#### Sağlı k Kartları — `App.Hr.HealthCard`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_HealthCard.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr` › `App.Hr.HealthCard` (sı ra 7) |
| Yetki | `App.Hr.HealthCard` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Sağlı k Kartları — işyeri hekimliği için her çalı şanı n sağlı k kartı . Liste kiracı nı n bütün kullanı cı ları dı r; kart bilgileri detay sekmelerinden girilir. |
| Geliştirme talebi | Human Resources -> Health Card |
| Kaynak | `AbpUsers` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.HealthCardHistory` (Id → Id), `App.Hr.HealthCardLabPhysical` (Id → Id), `App.Hr.HealthCardAnamnesis` (Id → Id), `App.Hr.HealthCardResult` (Id → Id), `App.Hr.HealthCardPeriodicExamination` (Id → UserId), `App.Hr.HealthCardPatientProtocol` (Id → UserId), `App.Hr.HealthCardSickLeave` (Id → UserId) |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Ad | dxTextBox | | ✓ | |
| `Surname` | Soyad | dxTextBox | | ✓ | |
| `IdentityNumber` | T.C. Kimlik No | dxTextBox | | ✓ | |
| `BirthDate` | Doğum Tarihi | dxDateBox | | ✓ | |
| `Gender` | Cinsiyet | dxSelectBox | | ✓ | liste: Male, Female |
| `BloodType` | Kan Grubu | dxTextBox | | ✓ | |
| `Email` | E-posta | dxTextBox | | ✓ | |
| `PhoneNumber` | Telefon | dxTextBox | | ✓ | |
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
| `JobPositionId` | Pozisyon | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
| `HireDate` | İşe Giriş Tarihi | dxDateBox | | ✓ | |
| `SskNo` | SSK No | dxTextBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Soy / Özgeçmiş — `App.Hr.HealthCardHistory`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_HealthCardHistory.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.HealthCardHistory` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Soy / Özgeçmiş — çalı şanı n aile sağlı k geçmişi, kan grubu, kronik hastalı kları ve aşı ları . |
| Geliştirme talebi | Human Resources -> Health Card |
| Kaynak | `AbpUsers` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `MotherHealthStatus` | Anne | dxSelectBox | | ✓ | liste: Alive, Disease, Deceased |
| `MotherHealthNote` | Anne Notu | dxTextBox | | ✓ | |
| `FatherHealthStatus` | Baba | dxSelectBox | | ✓ | liste: Alive, Disease, Deceased |
| `FatherHealthNote` | Baba Notu | dxTextBox | | ✓ | |
| `SiblingHealthStatus` | Kardeş | dxSelectBox | | ✓ | liste: Alive, Disease, Deceased |
| `SiblingHealthNote` | Kardeş Notu | dxTextBox | | ✓ | |
| `ChildHealthStatus` | Çocuk | dxSelectBox | | ✓ | liste: Alive, Disease, Deceased |
| `ChildHealthNote` | Çocuk Notu | dxTextBox | | ✓ | |
| `BloodType` | Kan Grubu | dxSelectBox | | ✓ | liste: 0 Rh+, 0 Rh-, A Rh+, A Rh-, B Rh+, B Rh-, AB Rh+, AB Rh- |
| `ChronicDisease` | Doğuştan / Kronik Hastalı k | dxTextBox | | ✓ | |
| `TetanusVaccination` | Tetanoz | dxTextBox | | ✓ | |
| `HepatitisVaccination` | Hepatit | dxTextBox | | ✓ | |
| `OtherVaccination` | Diğer | dxTextBox | | ✓ | |
#### Laboratuvar - Fizik Muayene — `App.Hr.HealthCardLabPhysical`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_HealthCardLabPhysical.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.HealthCardLabPhysical` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Laboratuvar – Fizik Muayene — işe giriş ya da periyodik muayenedeki tahlil ve fizik muayene bulguları . |
| Geliştirme talebi | Human Resources -> Health Card |
| Kaynak | `AbpUsers` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `LabBiologicalAnalysis` | Biyolojik Analizler | dxTextBox | | ✓ | |
| `LabBlood` | Kan | dxTextBox | | ✓ | |
| `LabUrine` | İdrar | dxTextBox | | ✓ | |
| `LabRadiological` | Radyolojik Analizler | dxTextBox | | ✓ | |
| `LabRadiologicalPhysiological` | Radyolojik Fizyolojik | dxTextBox | | ✓ | |
| `LabAudiometry` | Odyometri | dxTextBox | | ✓ | |
| `LabPulmonaryFunction` | Solunum Fonksiyon Testi | dxTextBox | | ✓ | |
| `LabPsychologicalTests` | Psikolojik Testler | dxTextBox | | ✓ | |
| `LabOther` | Diğer Laboratuvar Bulguları | dxTextBox | | ✓ | |
| `ExamSensoryOrgans` | Duyu Organları | dxTextBox | | ✓ | |
| `ExamEye` | Göz | dxTextBox | | ✓ | |
| `ExamEnt` | Kulak-Burun-Boğaz | dxTextBox | | ✓ | |
| `ExamSkin` | Deri | dxTextBox | | ✓ | |
| `ExamCardiovascular` | Kalp-Damar Sistemi Muayenesi | dxTextBox | | ✓ | |
| `ExamRespiratory` | Solunum Sistemi Muayenesi | dxTextBox | | ✓ | |
| `ExamDigestive` | Sindirim Sistemi Muayenesi | dxTextBox | | ✓ | |
| `ExamUrogenital` | Ürogenital Sistem Muayenesi | dxTextBox | | ✓ | |
| `ExamMusculoskeletal` | Kas-İskelet Sistemi Muayenesi | dxTextBox | | ✓ | |
| `ExamNeurological` | Nörolojik Muayene | dxTextBox | | ✓ | |
| `ExamPsychiatric` | Psikiyatrik Muayene | dxTextBox | | ✓ | |
| `ExamOther` | Diğer Muayene Bulguları | dxTextBox | | ✓ | |
| `ExamBloodPressure` | Tansiyon | dxTextBox | | ✓ | |
| `ExamPulse` | Nabı z / dk | dxTextBox | | ✓ | |
| `ExamHeight` | Boy (cm) | dxNumberBox | | ✓ | |
| `ExamWeight` | Kilo (kg) | dxNumberBox | | ✓ | |
#### Anamnez — `App.Hr.HealthCardAnamnesis`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_HealthCardAnamnesis.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.HealthCardAnamnesis` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Anamnez — çalı şanı n sağlı k geçmişine dair soru formu. |
| Geliştirme talebi | Human Resources -> Health Card |
| Kaynak | `AbpUsers` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ComplaintChestPain` | Göğüs Ağrı sı | dxCheckBox | | ✓ | |
| `ComplaintProductiveCough` | Balgamlı Öksürük | dxCheckBox | | ✓ | |
| `ComplaintDyspnea` | Nefes Darlı ğı | dxCheckBox | | ✓ | |
| `ComplaintPalpitation` | Çarpı ntı | dxCheckBox | | ✓ | |
| `ComplaintJointPain` | Eklem Ağrı sı | dxCheckBox | | ✓ | |
| `ComplaintBackPain` | Bel Ağrı sı | dxCheckBox | | ✓ | |
| `ComplaintDiarrheaConstipation` | İshal veya Kabı zlı k | dxCheckBox | | ✓ | |
| `DiagnosisDiabetes` | Şeker Hastalı ğı | dxCheckBox | | ✓ | |
| `DiagnosisHeartDisease` | Kalp Hastalı ğı | dxCheckBox | | ✓ | |
| `DiagnosisKidneyDisease` | Böbrek Hastalı ğı | dxCheckBox | | ✓ | |
| `DiagnosisJaundice` | Sarı lı k | dxCheckBox | | ✓ | |
| `DiagnosisPepticUlcer` | Mide / Oniki Parmak Ülseri | dxCheckBox | | ✓ | |
| `DiagnosisHearingLoss` | İşitme Kaybı | dxCheckBox | | ✓ | |
| `DiagnosisVisionImpairment` | Görme Bozukluğu | dxCheckBox | | ✓ | |
| `DiagnosisNervousSystemDisease` | Sinir Sistemi Hastalı ğı | dxCheckBox | | ✓ | |
| `DiagnosisSkinDisease` | Deri Hastalı ğı | dxCheckBox | | ✓ | |
| `DiagnosisFoodPoisoning` | Besin Zehirlenmesi | dxCheckBox | | ✓ | |
| `Hospitalized` | 3. Hastanede yattı nı z mı ? | dxCheckBox | | ✓ | script |
| `HospitalizedNote` | Hastanede Yatı ş Notu | dxTextBox | | ✓ | |
| `HadSurgery` | 4. Ameliyat oldunuz mu? | dxCheckBox | | ✓ | script |
| `HadSurgeryNote` | Ameliyat Notu | dxTextBox | | ✓ | |
| `HadWorkAccident` | 5. İş kazası geçirdiniz mi? | dxCheckBox | | ✓ | script |
| `HadWorkAccidentNote` | İş Kazası Notu | dxTextBox | | ✓ | |
| `OccupationalDiseaseExam` | 6. Meslek hastalı ğı şüphesiyle tetkik veya muayene oldunuz mu? | dxCheckBox | | ✓ | script |
| `OccupationalDiseaseExamNote` | Meslek Hastalı ğı Muayene Notu | dxTextBox | | ✓ | |
| `DisabilityPension` | 7. Malulen emeklilik aldı nı z mı ? | dxCheckBox | | ✓ | script |
| `DisabilityPensionNote` | Malulen Emeklilik Notu | dxTextBox | | ✓ | |
| `UnderTreatment` | 8. Şu anda bir tedavi görüyor musunuz? | dxCheckBox | | ✓ | script |
| `UnderTreatmentNote` | Tedavi Notu | dxTextBox | | ✓ | |
| `Smoking` | 9. Sigara kullanı yor musunuz? | dxSelectBox | | ✓ | liste: None, Occasionally, Normal, Quit · script |
| `SmokingNote` | Sigara Notu | dxTextBox | | ✓ | |
| `Alcohol` | 10. Alkol kullanı yor musunuz? | dxSelectBox | | ✓ | liste: None, Occasionally, Normal, Quit · script |
| `AlcoholNote` | Alkol Notu | dxTextBox | | ✓ | |
#### Sonuç — `App.Hr.HealthCardResult`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_HealthCardResult.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.HealthCardResult` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Sonuç — işyeri hekiminin çalı şmaya elverişlilik kararı . |
| Geliştirme talebi | Human Resources -> Health Card |
| Kaynak | `AbpUsers` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `FitForWorkJob` | Çalı şmaya Elverişli - İş | dxTextBox | | ✓ | |
| `FitForWorkCondition` | Çalı şmaya Elverişli - Koşul | dxTextBox | | ✓ | |
| `FitnessDoctorId` | Doktor | dxSelectBox | | ✓ | sorgu: Hr_T_Doctor |
| `ShiftWorkFit` | Vardiyalı Çalı şabilir | dxCheckBox | | ✓ | |
| `NightWorkFit` | Gece Çalı şabilir | dxCheckBox | | ✓ | |
| `ShiftNightDoctorId` | Vardiya / Gece Çalı şması Doktoru | dxSelectBox | | ✓ | sorgu: Hr_T_Doctor |
#### Periyodik Muayeneler — `App.Hr.HealthCardPeriodicExamination`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_HealthCardPeriodicExamination.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.HealthCardPeriodicExamination` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Periyodik Muayeneler — çalı şanı n yasal periyodik sağlı k muayeneleri. |
| Geliştirme talebi | Human Resources -> Health Card |
| Kaynak | `Adm_T_UserPeriodicExamination` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `UserId` | Kullanı cı | dxSelectBox | | | sorgu: AbpUsers |
| `ExamDate` | Tarih | dxDateBox | ✓ | ✓ | script |
| `Examination` | Muayene | dxTextBox | ✓ | ✓ | |
| `Result` | Sonuç | dxTextBox | | ✓ | |
| `DoctorId` | Doktor | dxSelectBox | | ✓ | sorgu: Hr_T_Doctor · script |
| `DoctorDiplomaNo` | Diploma No | dxTextBox | | ✓ | |
#### Hasta Protokol Defteri — `App.Hr.HealthCardPatientProtocol`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_HealthCardPatientProtocol.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.HealthCardPatientProtocol` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Hasta Protokol Defteri — çalı şanı n revir başvuruları . |
| Geliştirme talebi | Human Resources -> Health Card |
| Kaynak | `Adm_T_UserPatientProtocol` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `UserId` | Kullanı cı | dxSelectBox | | | sorgu: AbpUsers |
| `SequenceNo` | Sı ra No | dxNumberBox | | ✓ | |
| `ProtocolDate` | Tarih | dxDateBox | ✓ | ✓ | script |
| `ProtocolType` | Protokol Türü | dxSelectBox | ✓ | ✓ | liste: Disease, WorkAccident, OccupationalDisease, Control, Other |
| `ProtocolResult` | Sonuç | dxSelectBox | | ✓ | liste: TreatmentDischarged, Rest, Referral · script |
| `RestDays` | İstirahat Günü | dxNumberBox | | ✓ | |
| `ReferralPlace` | Sevk Yeri | dxTextBox | | ✓ | |
| `DoctorId` | Doktor | dxSelectBox | | ✓ | sorgu: Hr_T_Doctor |
#### İstirahat Raporları — `App.Hr.HealthCardSickLeave`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_HealthCardSickLeave.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.HealthCardSickLeave` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | İstirahat Raporları — çalı şanı n aldı ğı istirahat (rapor) kayı tları . |
| Geliştirme talebi | Human Resources -> Health Card |
| Kaynak | `Adm_T_UserSickLeave` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertAfter: `Hr_S_LeaveSickLeaveSync` · UpdateAfter: `Hr_S_LeaveSickLeaveSync` · DeleteAfter: `Hr_S_LeaveSickLeaveSync` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `UserId` | Kullanı cı | dxSelectBox | | | sorgu: AbpUsers |
| `StartDate` | Başlangı ç Tarihi | dxDateBox | ✓ | ✓ | script |
| `EndDate` | Bitiş Tarihi | dxDateBox | ✓ | ✓ | script |
| `Days` | Gün | dxNumberBox | ✓ | ✓ | |
| `SickLeaveType` | İstirahat Türü | dxSelectBox | ✓ | ✓ | liste: Disease, WorkAccident, OccupationalDisease, Maternity |
| `Institution` | Kurum | dxTextBox | | ✓ | |
| `Clinic` | Klinik | dxTextBox | | ✓ | |
| `SickLeaveReason` | İstirahat Nedeni | dxTextBox | | ✓ | |
2026-10-08 06:24:59 +00:00
### Eğitimler (`App.Hr.Training`)
#### Eğitimler — `App.Hr.Training`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Training.json` |
2026-10-08 06:24:59 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr` › `App.Hr.Training` (sı ra 8) |
| Yetki | `App.Hr.Training` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Eğitimler — düzenlenen her eğitim oturumu: tarih/saat, süre, yer, eğitmen, maliyet, kazandı rdı ğı yetkinlikler, katı lı mcı lar ve dosyalar. |
| Geliştirme talebi | Human Resources -> Eğitim |
| Kaynak | `Hr_T_Training` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.TrainingParticipant` (Id → TrainingId), `App.Hr.TrainingFile` (Id → TrainingId) |
| Widget'lar | `App.Widget.Total` , `App.Hr.Training.Widget.Open` , `App.Hr.Training.Widget.Closed` , `App.Hr.Training.Widget.Cost` |
| Komutlar | UpdateAfter: `Hr_S_TrainingSync` · DeleteAfter: `Hr_S_TrainingSync` |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | BranchId= |
2026-10-08 06:24:59 +00:00
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `TrainingTypeId` | Eğitim Tipi | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_TrainingType |
| `TrainingSubjectId` | Eğitim Konusu | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_TrainingSubject (← TrainingTypeId) |
| `EntryDate` | Giriş Tarihi | dxDateBox | ✓ | ✓ | script |
| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
| `StartDate` | Eğitim Baş. Tarihi | dxDateBox | ✓ | ✓ | script |
| `EndDate` | Bit. Tarihi | dxDateBox | ✓ | ✓ | script |
| `StartTime` | Eğitim Baş. Saati | dxDateBox | | ✓ | script |
| `EndTime` | Bit. Saati | dxDateBox | | ✓ | script |
| `TotalHours` | Top. Eğitim Süresi (Saat) | dxNumberBox | | ✓ | |
| `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Open, Closed · script |
| `TrainerName` | Eğitim Veren Kişi | dxTextBox | | ✓ | |
| `TrainingPlace` | Eğitim Yeri | dxTextBox | | ✓ | |
| `TrainingInstitution` | Eğitim Veren Kurum | dxTextBox | | ✓ | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `SkillIds` | Yetkinlikler | dxTagBox | | ✓ | sorgu: Hr_T_Skill |
| `CostPlace` | Eğitim Yeri Maliyeti | dxNumberBox | | ✓ | script |
| `CostTrainer` | Eğitmen Maliyeti | dxNumberBox | | ✓ | script |
| `CostAccommodation` | Konaklama | dxNumberBox | | ✓ | script |
| `CostTransport` | Ulaşı m | dxNumberBox | | ✓ | script |
| `CostCatering` | İkram | dxNumberBox | | ✓ | script |
| `CostOther` | Diğer | dxNumberBox | | ✓ | script |
| `CostTotal` | Toplam Maliyet | dxNumberBox | | ✓ | |
2026-10-07 08:17:46 +00:00
#### Eğitim Tipleri — `App.Hr.TrainingType`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TrainingType.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
2026-10-08 06:24:59 +00:00
| Menü | `App.Hr.Definitions` › `App.Hr.TrainingType` (sı ra 19) |
2026-10-07 08:17:46 +00:00
| Yetki | `App.Hr.TrainingType` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Eğitim Tipleri — eğitimlerin türü (oryantasyon, iş başı , grup, firma dı şı , akademi, rotasyon…). |
| Geliştirme talebi | Human Resources -> Eğitim |
| Kaynak | `Hr_T_TrainingType` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Veri aynası | `data/App.Hr.TrainingType.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Adı | dxTextBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | script |
#### Eğitim Konuları — `App.Hr.TrainingSubject`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TrainingSubject.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
2026-10-08 06:24:59 +00:00
| Menü | `App.Hr.Definitions` › `App.Hr.TrainingSubject` (sı ra 20) |
2026-10-07 08:17:46 +00:00
| Yetki | `App.Hr.TrainingSubject` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Eğitim Konuları — bir eğitim tipine bağlı konu başlı kları (İSG, siber güvenlik, iş başı eğitimi…). |
| Geliştirme talebi | Human Resources -> Eğitim |
| Kaynak | `Hr_T_TrainingSubject` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Veri aynası | `data/App.Hr.TrainingSubject.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `TrainingTypeId` | Eğitim Tipi | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_TrainingType |
| `Name` | Eğitim Konusu | dxTextBox | ✓ | ✓ | |
| `IsEvaluated` | Değerlendirilsin mi? | dxCheckBox | ✓ | ✓ | script |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | script |
#### Katı lı mcı lar — `App.Hr.TrainingParticipant`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TrainingParticipant.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.TrainingParticipant` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Katı lı mcı lar — eğitime katı lan personel ve katı lı m sonucu. |
| Geliştirme talebi | Human Resources -> Eğitim |
| Kaynak | `Hr_T_TrainingParticipant` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertAfter: `Hr_S_TrainingSync` · UpdateAfter: `Hr_S_TrainingSync` · DeleteAfter: `Hr_S_TrainingSync` |
| Butonlar | `App.Hr.TrainingParticipant.Certificate` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `TrainingId` | Eğitim | dxSelectBox | | | sorgu: Hr_T_Training |
| `UserId` | Adı Soyadı | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers · script |
| `HireDate` | İşe Giriş Tarihi | dxDateBox | | ✓ | |
| `DepartmentId` | Bölüm | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
| `JobPositionId` | Görevi | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
| `AttendanceStatus` | Katı lı m Durumu | dxSelectBox | ✓ | ✓ | liste: Attended, NotAttended, Excused · script |
| `EvaluationScore` | Değerlendirme Puanı | dxNumberBox | | ✓ | |
| `ExamScore` | Sı nav Notu | dxNumberBox | | ✓ | |
| `LeaveDate` | Ayrı lma Tarihi | dxDateBox | | ✓ | |
| `Note` | Not | dxTextArea | | ✓ | |
#### Dosyalar — `App.Hr.TrainingFile`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TrainingFile.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.TrainingFile` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Eğitim Dosyaları — eğitime ait doküman ve dijital kaynaklar (sunum, imzalı katı lı m listesi, sertifika örneği…). |
| Geliştirme talebi | Human Resources -> Eğitim |
| Kaynak | `Hr_T_TrainingFile` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `TrainingId` | Eğitim | dxTextBox | | | |
| `DocumentTypeId` | Dosya Türü | dxSelectBox | | ✓ | sorgu: Hr_T_DocumentType |
| `FileDate` | Tarih | dxDateBox | ✓ | ✓ | script |
| `FileName` | Dosya Adı | dxTextBox | ✓ | ✓ | |
| `FileContent` | Dosya | dxImageUpload | ✓ | ✓ | |
### Performans Yönetimi (`App.Hr.Performance`)
#### Değerlendirme Dönemleri — `App.Hr.PerformancePeriod`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_PerformancePeriod.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Performance` › `App.Hr.PerformancePeriod` (sı ra 1) |
| Yetki | `App.Hr.PerformancePeriod` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Değerlendirme Dönemleri — performans değerlendirmesinin yapı ldı ğı dönem (ör. 2026 Yı l Sonu), puan ağı rlı kları ve 360 derece ayarı . |
| Kaynak | `Hr_T_PerformancePeriod` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.PerformancePeriodSkill` (Id → PeriodId) |
| Widget'lar | `App.Widget.Total` , `App.Hr.Performance.Widget.ActivePeriod` , `App.Hr.Performance.Widget.Calibration` , `App.Hr.Performance.Widget.ClosedPeriod` |
| Komutlar | InsertAfter: `Hr_S_PerformancePeriodActivate` · UpdateAfter: `Hr_S_PerformancePeriodActivate` |
| Form varsayı lanları | Status=Planned, GoalWeight=60, CompetencyWeight=40, Is360Enabled=false, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Ad | dxTextBox | ✓ | ✓ | |
| `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Planned, Active, Calibration, Closed |
| `StartDate` | Başlangı ç Tarihi | dxDateBox | ✓ | ✓ | |
| `EndDate` | Bitiş Tarihi | dxDateBox | ✓ | ✓ | |
| `SelfReviewDueDate` | Öz Değerlendirme Son Tarihi | dxDateBox | | ✓ | |
| `ManagerReviewDueDate` | Yönetici Değerlendirmesi Son Tarihi | dxDateBox | | ✓ | |
| `GoalWeight` | Hedef Ağı rlı ğı % | dxNumberBox | ✓ | ✓ | script |
| `CompetencyWeight` | Yetkinlik Ağı rlı ğı % | dxNumberBox | ✓ | ✓ | script |
| `Is360Enabled` | 360 Derece Açı k | dxCheckBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `Description` | Açı klama | dxTextBox | | ✓ | |
#### Tüm Değerlendirmeler — `App.Hr.PerformanceReview`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_PerformanceReview.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Performance` › `App.Hr.PerformanceReview` (sı ra 2) |
| Yetki | `App.Hr.PerformanceReview` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Tüm Değerlendirmeler — bütün dönemlerin bütün çalı şan değerlendirmeleri; İK süreci uçtan uca buradan izler ve yönetir. |
| Kaynak | `Hr_T_PerformanceReview` · 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.PerformanceGoal` (Id → ReviewId), `App.Hr.PerformanceCompetency` (Id → ReviewId), `App.Hr.PerformanceFeedback` (Id → ReviewId), `App.Hr.ReviewDevelopmentPlan` (Id → ReviewId, EmployeeId → EmployeeId) |
| Widget'lar | `App.Widget.Total` , `App.Hr.Performance.Widget.InGoalOrSelf` , `App.Hr.Performance.Widget.ManagerReview` , `App.Hr.Performance.Widget.Calibration` , `App.Hr.Performance.Widget.Completed` |
| Todo | başlı k `EmployeeName` , durum `Status` (GoalSetting,SelfReview,ManagerReview,Calibration,Completed) |
| Komutlar | InsertAfter: `Hr_S_PerformanceReviewAfterSave` · UpdateAfter: `Hr_S_PerformanceReviewAfterSave` |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | Status=GoalSetting, IsActive=true, BranchId= |
2026-10-07 08:17:46 +00:00
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
2026-10-14 21:12:14 +00:00
| `BranchId` | Tesis Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
2026-10-07 08:17:46 +00:00
| `EmployeeId` | Çalı şan | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers · script |
| `EmployeeName` | Çalı şan Adı | dxTextBox | | | |
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
| `JobPositionId` | Pozisyon | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
2026-10-14 21:12:14 +00:00
| `PeriodId` | Dönem | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_PerformancePeriod |
| `ManagerId` | Yönetici | dxSelectBox | | ✓ | sorgu: AbpUsers |
2026-10-07 08:17:46 +00:00
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: GoalSetting, SelfReview, ManagerReview, Calibration, Completed |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `GoalScore` | Hedef Puanı | dxNumberBox | | ✓ | |
| `CompetencyScore` | Yetkinlik Puanı | dxNumberBox | | ✓ | |
| `Feedback360Score` | 360 Ortalaması | dxNumberBox | | ✓ | |
| `OverallScore` | Genel Puan | dxNumberBox | | ✓ | |
| `CalibratedScore` | Kalibre Puan | dxNumberBox | | ✓ | |
| `RatingId` | Derece | dxSelectBox | | ✓ | sorgu: Hr_T_PerformanceRating |
| `SelfComment` | Öz Değerlendirme Yorumu | dxTextArea | | ✓ | |
| `ManagerComment` | Yönetici Yorumu | dxTextArea | | ✓ | |
| `CalibrationNote` | Kalibrasyon Notu | dxTextArea | | ✓ | |
| `SelfSubmittedDate` | Öz Değerlendirme Gönderimi | dxDateBox | | ✓ | |
| `ManagerSubmittedDate` | Yönetici Değerlendirmesi Gönderimi | dxDateBox | | ✓ | |
| `CompletedDate` | Tamamlanma | dxDateBox | | ✓ | |
#### Kalibrasyon — `App.Hr.PerformanceCalibration`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_PerformanceCalibration.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Performance` › `App.Hr.PerformanceCalibration` (sı ra 3) |
| Yetki | `App.Hr.PerformanceCalibration` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Kalibrasyon — yöneticilerin gönderdiği değerlendirmelerin İK tarafı ndan birlikte gözden geçirilip puanları n dengelenmesi. |
| Kaynak | `Hr_T_PerformanceReview` · filtre `"IsDeleted" = 'false' AND "Status" IN ('Calibration', 'Completed')` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Hr.Performance.Widget.Calibration` , `App.Hr.Performance.Widget.Completed` , `App.Hr.Performance.Widget.AverageScore` , `App.Hr.Performance.Widget.AverageCalibrated` |
| Komutlar | UpdateAfter: `Hr_S_PerformanceReviewAfterSave` |
| Form varsayı lanları | Status=GoalSetting, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `PeriodId` | Dönem | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_PerformancePeriod |
| `EmployeeId` | Çalı şan | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers · script |
| `EmployeeName` | Çalı şan Adı | dxTextBox | | | |
| `ManagerId` | Yönetici | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
| `JobPositionId` | Pozisyon | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: GoalSetting, SelfReview, ManagerReview, Calibration, Completed |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `GoalScore` | Hedef Puanı | dxNumberBox | | ✓ | |
| `CompetencyScore` | Yetkinlik Puanı | dxNumberBox | | ✓ | |
| `Feedback360Score` | 360 Ortalaması | dxNumberBox | | ✓ | |
| `OverallScore` | Genel Puan | dxNumberBox | | ✓ | |
| `CalibratedScore` | Kalibre Puan | dxNumberBox | | ✓ | |
| `RatingId` | Derece | dxSelectBox | | ✓ | sorgu: Hr_T_PerformanceRating |
| `SelfComment` | Öz Değerlendirme Yorumu | dxTextArea | | ✓ | |
| `ManagerComment` | Yönetici Yorumu | dxTextArea | | ✓ | |
| `CalibrationNote` | Kalibrasyon Notu | dxTextArea | | ✓ | |
| `SelfSubmittedDate` | Öz Değerlendirme Gönderimi | dxDateBox | | ✓ | |
| `ManagerSubmittedDate` | Yönetici Değerlendirmesi Gönderimi | dxDateBox | | ✓ | |
| `CompletedDate` | Tamamlanma | dxDateBox | | ✓ | |
#### Gelişim Planları — `App.Hr.DevelopmentPlan`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_DevelopmentPlan.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Performance` › `App.Hr.DevelopmentPlan` (sı ra 4) |
| Yetki | `App.Hr.DevelopmentPlan` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Gelişim Planları — bütün çalı şanları n gelişim aksiyonları ; yetkinlik, eğitim ve sertifikalarla bağlantı lı . |
| Kaynak | `Hr_T_DevelopmentPlan` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart, Scheduler, Todo (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Hr.Performance.Widget.Open` , `App.Hr.Performance.Widget.Overdue` , `App.Hr.Performance.Widget.Completed` |
| Todo | başlı k `Title` , durum `Status` (Planned,InProgress,Completed,Cancelled) |
| Komutlar | InsertAfter: `Hr_S_DevelopmentPlanSync` · UpdateAfter: `Hr_S_DevelopmentPlanSync` |
| Form varsayı lanları | ActionType=Training, Status=Planned, Progress=0, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `ReviewId` | Değerlendirme | dxSelectBox | | ✓ | sorgu: Hr_T_PerformanceReview |
| `Title` | Aksiyon | dxTextBox | ✓ | ✓ | |
| `ActionType` | Aksiyon Türü | dxSelectBox | ✓ | ✓ | liste: Training, Mentoring, Project, Reading, Certificate, Other |
| `SkillId` | Yetkinlik | dxSelectBox | | ✓ | sorgu: Hr_T_Skill |
| `TrainingId` | Eğitim | dxSelectBox | | ✓ | sorgu: Hr_T_Training |
| `CertificateId` | Sertifika | dxSelectBox | | ✓ | sorgu: Hr_T_Certificate |
| `MentorId` | Mentor | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `StartDate` | Başlangı ç Tarihi | dxDateBox | | ✓ | |
| `DueDate` | Bitiş Tarihi | dxDateBox | | ✓ | |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Planned, InProgress, Completed, Cancelled |
| `Progress` | İlerleme % | dxNumberBox | | ✓ | |
| `EmployeeNote` | Çalı şan Notu | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Performans Dereceleri — `App.Hr.PerformanceRating`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_PerformanceRating.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.PerformanceRating` (sı ra 16) |
| Yetki | `App.Hr.PerformanceRating` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Performans Dereceleri — genel performans puanı nı n hangi dereceye karşı lı k geldiğini ve kalibrasyonda hedeflenen dağı lı mı tanı mlayan ölçek. |
| Kaynak | `Hr_T_PerformanceRating` · 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ı | IsActive=true |
| Veri aynası | `data/App.Hr.PerformanceRating.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Level` | Seviye | dxNumberBox | ✓ | ✓ | |
| `Name` | Ad | dxTextBox | ✓ | ✓ | |
| `MinScore` | Alt Puan | dxNumberBox | ✓ | ✓ | |
| `MaxScore` | Üst Puan (hariç) | dxNumberBox | ✓ | ✓ | |
| `TargetDistribution` | Hedef Dağı lı m % | dxNumberBox | | ✓ | |
| `Color` | Renk | dxColorBox | | ✓ | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Yetkinlik Seti — `App.Hr.PerformancePeriodSkill`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_PerformancePeriodSkill.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.PerformancePeriodSkill` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Yetkinlik Seti — dönemde her çalı şanı n değerlendirileceği yetkinlikler ve beklenen seviyeleri. |
| Kaynak | `Hr_T_PerformancePeriodSkill` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertAfter: `Hr_S_PerformancePeriodActivate` · UpdateAfter: `Hr_S_PerformancePeriodActivate` |
| Form varsayı lanları | IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `PeriodId` | Dönem | dxTextBox | | | |
| `SkillId` | Yetkinlik | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Skill |
| `ExpectedLevelId` | Beklenen Seviye | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Hedefler — `App.Hr.PerformanceGoal`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_PerformanceGoal.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.PerformanceGoal` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Hedefler — değerlendirmenin ağı rlı klı KPI / OKR hedefleri ve gerçekleşmeleri (İK görünümü). |
| Kaynak | `Hr_T_PerformanceGoal` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertAfter: `Hr_S_PerformanceReviewRecalc` · UpdateAfter: `Hr_S_PerformanceReviewRecalc` · DeleteAfter: `Hr_S_PerformanceReviewRecalc` |
| Form varsayı lanları | GoalType=KPI, Direction=Increasing, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ReviewId` | Değerlendirme | dxTextBox | | | |
| `GoalType` | Tür | dxRadioGroup | ✓ | ✓ | liste: KPI, OKR |
| `Title` | Hedef | dxTextBox | ✓ | ✓ | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `Direction` | Yön | dxSelectBox | ✓ | ✓ | liste: Increasing, Decreasing · script |
| `Unit` | Birim | dxTextBox | | ✓ | |
| `TargetValue` | Hedef Değer | dxNumberBox | ✓ | ✓ | script |
| `Weight` | Ağı rlı k % | dxNumberBox | ✓ | ✓ | |
| `ActualValue` | Gerçekleşen | dxNumberBox | | ✓ | script |
| `AchievementRate` | Gerçekleşme % | dxNumberBox | | ✓ | |
| `SelfComment` | Öz Yorum | dxTextArea | | ✓ | |
| `ManagerComment` | Yönetici Yorumu | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Yetkinlikler — `App.Hr.PerformanceCompetency`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_PerformanceCompetency.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.PerformanceCompetency` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Yetkinlikler — değerlendirmede yetkinliklerin beklenen, öz ve yönetici seviyeleri (İK görünümü). |
| Kaynak | `Hr_T_PerformanceCompetency` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertAfter: `Hr_S_PerformanceReviewRecalc` · UpdateAfter: `Hr_S_PerformanceReviewRecalc` · DeleteAfter: `Hr_S_PerformanceReviewRecalc` |
| Form varsayı lanları | IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ReviewId` | Değerlendirme | dxTextBox | | | |
| `SkillId` | Yetkinlik | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Skill |
| `ExpectedLevelId` | Beklenen Seviye | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `SelfLevelId` | Öz Seviye | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `ManagerLevelId` | Yönetici Seviyesi | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `Score` | Puan | dxNumberBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `SelfComment` | Öz Yorum | dxTextArea | | ✓ | |
| `ManagerComment` | Yönetici Yorumu | dxTextArea | | ✓ | |
#### 360 Puanları — `App.Hr.PerformanceFeedbackScore`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_PerformanceFeedbackScore.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.PerformanceFeedbackScore` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | 360 Puanları — 360 derece değerlendiricisinin yetkinlik bazı nda verdiği seviyeler (İK görünümü). |
| Kaynak | `Hr_T_PerformanceFeedbackScore` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertAfter: `Hr_S_PerformanceReviewRecalc` · UpdateAfter: `Hr_S_PerformanceReviewRecalc` · DeleteAfter: `Hr_S_PerformanceReviewRecalc` |
| Form varsayı lanları | IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `FeedbackId` | Geri Bildirim | dxTextBox | | | |
| `SkillId` | Yetkinlik | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Skill |
| `LevelId` | Seviye | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `Comment` | Yorum | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### 360 Derece — `App.Hr.PerformanceFeedback`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_PerformanceFeedback.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.PerformanceFeedback` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | 360 Derece — değerlendirmeye atanan 360 derece değerlendiriciler (akran, ast, üst, iç müşteri). |
| Kaynak | `Hr_T_PerformanceFeedback` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.PerformanceFeedbackScore` (Id → FeedbackId) |
| Komutlar | InsertBefore: SQL · InsertAfter: `Hr_S_PerformanceFeedbackOpen` , `Hr_S_PerformanceReviewRecalc` · UpdateAfter: `Hr_S_PerformanceReviewRecalc` · DeleteAfter: `Hr_S_PerformanceReviewRecalc` |
| Form varsayı lanları | Relation=Peer, Status=Pending, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ReviewId` | Değerlendirme | dxSelectBox | | | sorgu: Hr_T_PerformanceReview |
| `ReviewerId` | Değerlendirici | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `Relation` | İlişki | dxSelectBox | ✓ | ✓ | liste: Peer, Subordinate, Superior, InternalCustomer |
| `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Pending, Submitted |
| `Score` | Puan | dxNumberBox | | ✓ | |
| `SubmittedDate` | Gönderim Tarihi | dxDateBox | | ✓ | |
| `Comment` | Yorum | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Gelişim Planı — `App.Hr.ReviewDevelopmentPlan`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_ReviewDevelopmentPlan.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.ReviewDevelopmentPlan` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Gelişim Planı — değerlendirmeden çı kan gelişim aksiyonları (İK görünümü). |
| Kaynak | `Hr_T_DevelopmentPlan` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertAfter: `Hr_S_DevelopmentPlanSync` · UpdateAfter: `Hr_S_DevelopmentPlanSync` |
| Form varsayı lanları | ActionType=Training, Status=Planned, Progress=0, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxTextBox | | | |
| `ReviewId` | Değerlendirme | dxTextBox | | | |
| `Title` | Aksiyon | dxTextBox | ✓ | ✓ | |
| `ActionType` | Aksiyon Türü | dxSelectBox | ✓ | ✓ | liste: Training, Mentoring, Project, Reading, Certificate, Other |
| `SkillId` | Yetkinlik | dxSelectBox | | ✓ | sorgu: Hr_T_Skill |
| `TrainingId` | Eğitim | dxSelectBox | | ✓ | sorgu: Hr_T_Training |
| `CertificateId` | Sertifika | dxSelectBox | | ✓ | sorgu: Hr_T_Certificate |
| `MentorId` | Mentor | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `StartDate` | Başlangı ç Tarihi | dxDateBox | | ✓ | |
| `DueDate` | Bitiş Tarihi | dxDateBox | | ✓ | |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Planned, InProgress, Completed, Cancelled |
| `Progress` | İlerleme % | dxNumberBox | | ✓ | |
| `EmployeeNote` | Çalı şan Notu | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Hedeflerim — `App.Hr.MyPerformanceGoal`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_MyPerformanceGoal.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.MyPerformanceGoal` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Hedeflerim — çalı şanı n kendi değerlendirmesindeki hedefler. |
| Kaynak | `Hr_T_PerformanceGoal` · filtre `"IsDeleted" = 'false' AND "ReviewId" IN (SELECT "Id" FROM "Hr_T_PerformanceReview" WHERE "EmployeeId" = '@USERID')` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertBefore: `Hr_S_PerformanceGuard` · InsertAfter: `Hr_S_PerformanceReviewRecalc` · UpdateBefore: `Hr_S_PerformanceGuard` · UpdateAfter: `Hr_S_PerformanceReviewRecalc` · DeleteBefore: `Hr_S_PerformanceGuard` · DeleteAfter: `Hr_S_PerformanceReviewRecalc` |
| Form varsayı lanları | GoalType=KPI, Direction=Increasing, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ReviewId` | Değerlendirme | dxTextBox | | | |
| `GoalType` | Tür | dxRadioGroup | ✓ | ✓ | liste: KPI, OKR |
| `Title` | Hedef | dxTextBox | ✓ | ✓ | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `Direction` | Yön | dxSelectBox | ✓ | ✓ | liste: Increasing, Decreasing · script |
| `Unit` | Birim | dxTextBox | | ✓ | |
| `TargetValue` | Hedef Değer | dxNumberBox | ✓ | ✓ | script |
| `Weight` | Ağı rlı k % | dxNumberBox | ✓ | ✓ | |
| `ActualValue` | Gerçekleşen | dxNumberBox | | ✓ | script |
| `AchievementRate` | Gerçekleşme % | dxNumberBox | | ✓ | |
| `SelfComment` | Öz Yorum | dxTextArea | | ✓ | |
| `ManagerComment` | Yönetici Yorumu | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Yetkinliklerim — `App.Hr.MyPerformanceCompetency`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_MyPerformanceCompetency.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.MyPerformanceCompetency` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Yetkinliklerim — çalı şanı n yetkinlik öz değerlendirmesi. |
| Kaynak | `Hr_T_PerformanceCompetency` · filtre `"IsDeleted" = 'false' AND "ReviewId" IN (SELECT "Id" FROM "Hr_T_PerformanceReview" WHERE "EmployeeId" = '@USERID')` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Komutlar | UpdateBefore: `Hr_S_PerformanceGuard` · UpdateAfter: `Hr_S_PerformanceReviewRecalc` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ReviewId` | Değerlendirme | dxTextBox | | | |
| `SkillId` | Yetkinlik | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Skill |
| `ExpectedLevelId` | Beklenen Seviye | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `SelfLevelId` | Öz Seviye | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `ManagerLevelId` | Yönetici Seviyesi | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `Score` | Puan | dxNumberBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `SelfComment` | Öz Yorum | dxTextArea | | ✓ | |
| `ManagerComment` | Yönetici Yorumu | dxTextArea | | ✓ | |
#### Gelişim Planı m — `App.Hr.MyDevelopmentPlan`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_MyDevelopmentPlan.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.MyDevelopmentPlan` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Gelişim Planı m — çalı şanı n kendi gelişim aksiyonları . |
| Kaynak | `Hr_T_DevelopmentPlan` · filtre `"IsDeleted" = 'false' AND "EmployeeId" = '@USERID'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Komutlar | UpdateBefore: SQL · UpdateAfter: `Hr_S_DevelopmentPlanSync` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxTextBox | | | |
| `ReviewId` | Değerlendirme | dxTextBox | | | |
| `Title` | Aksiyon | dxTextBox | ✓ | ✓ | |
| `ActionType` | Aksiyon Türü | dxSelectBox | ✓ | ✓ | liste: Training, Mentoring, Project, Reading, Certificate, Other |
| `SkillId` | Yetkinlik | dxSelectBox | | ✓ | sorgu: Hr_T_Skill |
| `TrainingId` | Eğitim | dxSelectBox | | ✓ | sorgu: Hr_T_Training |
| `CertificateId` | Sertifika | dxSelectBox | | ✓ | sorgu: Hr_T_Certificate |
| `MentorId` | Mentor | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `StartDate` | Başlangı ç Tarihi | dxDateBox | | ✓ | |
| `DueDate` | Bitiş Tarihi | dxDateBox | | ✓ | |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Planned, InProgress, Completed, Cancelled |
| `Progress` | İlerleme % | dxNumberBox | | ✓ | |
| `EmployeeNote` | Çalı şan Notu | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Değerlendirmelerim — `App.Hr.MyPerformanceReview`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_MyPerformanceReview.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.MyPerformanceReview` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Değerlendirmelerim — oturum açan çalı şanı n kendi performans değerlendirmeleri. |
| Kaynak | `Hr_T_PerformanceReview` · filtre `"IsDeleted" = 'false' AND "EmployeeId" = '@USERID'` |
| 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.MyPerformanceGoal` (Id → ReviewId), `App.Hr.MyPerformanceCompetency` (Id → ReviewId), `App.Hr.MyDevelopmentPlan` (Id → ReviewId, EmployeeId → EmployeeId) |
| Todo | başlı k `EmployeeName` , durum `Status` (GoalSetting,SelfReview,ManagerReview,Calibration,Completed) |
| Komutlar | UpdateBefore: `Hr_S_PerformanceGuard` · UpdateAfter: `Hr_S_PerformanceReviewAfterSave` |
| Form varsayı lanları | Status=GoalSetting, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `PeriodId` | Dönem | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_PerformancePeriod |
| `EmployeeId` | Çalı şan | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers · script |
| `EmployeeName` | Çalı şan Adı | dxTextBox | | | |
| `ManagerId` | Yönetici | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
| `JobPositionId` | Pozisyon | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: GoalSetting, SelfReview, ManagerReview, Calibration, Completed |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `GoalScore` | Hedef Puanı | dxNumberBox | | ✓ | |
| `CompetencyScore` | Yetkinlik Puanı | dxNumberBox | | ✓ | |
| `Feedback360Score` | 360 Ortalaması | dxNumberBox | | ✓ | |
| `OverallScore` | Genel Puan | dxNumberBox | | ✓ | |
| `CalibratedScore` | Kalibre Puan | dxNumberBox | | ✓ | |
| `RatingId` | Derece | dxSelectBox | | ✓ | sorgu: Hr_T_PerformanceRating |
| `SelfComment` | Öz Değerlendirme Yorumu | dxTextArea | | ✓ | |
| `ManagerComment` | Yönetici Yorumu | dxTextArea | | ✓ | |
| `CalibrationNote` | Kalibrasyon Notu | dxTextArea | | ✓ | |
| `SelfSubmittedDate` | Öz Değerlendirme Gönderimi | dxDateBox | | ✓ | |
| `ManagerSubmittedDate` | Yönetici Değerlendirmesi Gönderimi | dxDateBox | | ✓ | |
| `CompletedDate` | Tamamlanma | dxDateBox | | ✓ | |
#### Ekip Hedefleri — `App.Hr.TeamPerformanceGoal`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TeamPerformanceGoal.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.TeamPerformanceGoal` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Ekip Hedefleri — yöneticinin, ekibindeki çalı şanı n hedefleri üzerindeki görünümü. |
| Kaynak | `Hr_T_PerformanceGoal` · filtre `"IsDeleted" = 'false' AND "ReviewId" IN (SELECT "Id" FROM "Hr_T_PerformanceReview" WHERE "ManagerId" = '@USERID')` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertBefore: `Hr_S_PerformanceGuard` · InsertAfter: `Hr_S_PerformanceReviewRecalc` · UpdateBefore: `Hr_S_PerformanceGuard` · UpdateAfter: `Hr_S_PerformanceReviewRecalc` · DeleteBefore: `Hr_S_PerformanceGuard` · DeleteAfter: `Hr_S_PerformanceReviewRecalc` |
| Form varsayı lanları | GoalType=KPI, Direction=Increasing, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ReviewId` | Değerlendirme | dxTextBox | | | |
| `GoalType` | Tür | dxRadioGroup | ✓ | ✓ | liste: KPI, OKR |
| `Title` | Hedef | dxTextBox | ✓ | ✓ | |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `Direction` | Yön | dxSelectBox | ✓ | ✓ | liste: Increasing, Decreasing · script |
| `Unit` | Birim | dxTextBox | | ✓ | |
| `TargetValue` | Hedef Değer | dxNumberBox | ✓ | ✓ | script |
| `Weight` | Ağı rlı k % | dxNumberBox | ✓ | ✓ | |
| `ActualValue` | Gerçekleşen | dxNumberBox | | ✓ | script |
| `AchievementRate` | Gerçekleşme % | dxNumberBox | | ✓ | |
| `SelfComment` | Öz Yorum | dxTextArea | | ✓ | |
| `ManagerComment` | Yönetici Yorumu | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Ekip Yetkinlikleri — `App.Hr.TeamPerformanceCompetency`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TeamPerformanceCompetency.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.TeamPerformanceCompetency` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Ekip Yetkinlikleri — yöneticinin yetkinlik değerlendirmesi; yönetici seviyesi yetkinlik puanı nı belirler. |
| Kaynak | `Hr_T_PerformanceCompetency` · filtre `"IsDeleted" = 'false' AND "ReviewId" IN (SELECT "Id" FROM "Hr_T_PerformanceReview" WHERE "ManagerId" = '@USERID')` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertBefore: `Hr_S_PerformanceGuard` · InsertAfter: `Hr_S_PerformanceReviewRecalc` · UpdateBefore: `Hr_S_PerformanceGuard` · UpdateAfter: `Hr_S_PerformanceReviewRecalc` · DeleteBefore: `Hr_S_PerformanceGuard` · DeleteAfter: `Hr_S_PerformanceReviewRecalc` |
| Form varsayı lanları | IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ReviewId` | Değerlendirme | dxTextBox | | | |
| `SkillId` | Yetkinlik | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Skill |
| `ExpectedLevelId` | Beklenen Seviye | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `SelfLevelId` | Öz Seviye | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `ManagerLevelId` | Yönetici Seviyesi | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `Score` | Puan | dxNumberBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `SelfComment` | Öz Yorum | dxTextArea | | ✓ | |
| `ManagerComment` | Yönetici Yorumu | dxTextArea | | ✓ | |
#### Ekip Gelişim Planı — `App.Hr.TeamDevelopmentPlan`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TeamDevelopmentPlan.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.TeamDevelopmentPlan` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Ekip Gelişim Planı — yöneticinin ekibindeki çalı şan için planladı ğı gelişim aksiyonları . |
| Kaynak | `Hr_T_DevelopmentPlan` · filtre `"IsDeleted" = 'false' AND "ReviewId" IN (SELECT "Id" FROM "Hr_T_PerformanceReview" WHERE "ManagerId" = '@USERID')` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Komutlar | InsertBefore: `Hr_S_PerformanceGuard` · InsertAfter: `Hr_S_DevelopmentPlanSync` · UpdateBefore: `Hr_S_PerformanceGuard` · UpdateAfter: `Hr_S_DevelopmentPlanSync` · DeleteBefore: `Hr_S_PerformanceGuard` |
| Form varsayı lanları | ActionType=Training, Status=Planned, Progress=0, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `EmployeeId` | Çalı şan | dxTextBox | | | |
| `ReviewId` | Değerlendirme | dxTextBox | | | |
| `Title` | Aksiyon | dxTextBox | ✓ | ✓ | |
| `ActionType` | Aksiyon Türü | dxSelectBox | ✓ | ✓ | liste: Training, Mentoring, Project, Reading, Certificate, Other |
| `SkillId` | Yetkinlik | dxSelectBox | | ✓ | sorgu: Hr_T_Skill |
| `TrainingId` | Eğitim | dxSelectBox | | ✓ | sorgu: Hr_T_Training |
| `CertificateId` | Sertifika | dxSelectBox | | ✓ | sorgu: Hr_T_Certificate |
| `MentorId` | Mentor | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `Description` | Açı klama | dxTextArea | | ✓ | |
| `StartDate` | Başlangı ç Tarihi | dxDateBox | | ✓ | |
| `DueDate` | Bitiş Tarihi | dxDateBox | | ✓ | |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Planned, InProgress, Completed, Cancelled |
| `Progress` | İlerleme % | dxNumberBox | | ✓ | |
| `EmployeeNote` | Çalı şan Notu | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### Ekibimin Değerlendirmeleri — `App.Hr.TeamPerformanceReview`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_TeamPerformanceReview.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.TeamPerformanceReview` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Ekibimin Değerlendirmeleri — kullanı cı nı n yönetici olarak atandı ğı çalı şanları n değerlendirmeleri. |
| Kaynak | `Hr_T_PerformanceReview` · filtre `"IsDeleted" = 'false' AND "ManagerId" = '@USERID'` |
| 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.TeamPerformanceGoal` (Id → ReviewId), `App.Hr.TeamPerformanceCompetency` (Id → ReviewId), `App.Hr.TeamDevelopmentPlan` (Id → ReviewId, EmployeeId → EmployeeId) |
| Todo | başlı k `EmployeeName` , durum `Status` (GoalSetting,SelfReview,ManagerReview,Calibration,Completed) |
| Komutlar | UpdateBefore: `Hr_S_PerformanceGuard` · UpdateAfter: `Hr_S_PerformanceReviewAfterSave` |
| Form varsayı lanları | Status=GoalSetting, IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `PeriodId` | Dönem | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_PerformancePeriod |
| `EmployeeId` | Çalı şan | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers · script |
| `EmployeeName` | Çalı şan Adı | dxTextBox | | | |
| `ManagerId` | Yönetici | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department |
| `JobPositionId` | Pozisyon | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition |
| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: GoalSetting, SelfReview, ManagerReview, Calibration, Completed |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
| `GoalScore` | Hedef Puanı | dxNumberBox | | ✓ | |
| `CompetencyScore` | Yetkinlik Puanı | dxNumberBox | | ✓ | |
| `Feedback360Score` | 360 Ortalaması | dxNumberBox | | ✓ | |
| `OverallScore` | Genel Puan | dxNumberBox | | ✓ | |
| `CalibratedScore` | Kalibre Puan | dxNumberBox | | ✓ | |
| `RatingId` | Derece | dxSelectBox | | ✓ | sorgu: Hr_T_PerformanceRating |
| `SelfComment` | Öz Değerlendirme Yorumu | dxTextArea | | ✓ | |
| `ManagerComment` | Yönetici Yorumu | dxTextArea | | ✓ | |
| `CalibrationNote` | Kalibrasyon Notu | dxTextArea | | ✓ | |
| `SelfSubmittedDate` | Öz Değerlendirme Gönderimi | dxDateBox | | ✓ | |
| `ManagerSubmittedDate` | Yönetici Değerlendirmesi Gönderimi | dxDateBox | | ✓ | |
| `CompletedDate` | Tamamlanma | dxDateBox | | ✓ | |
#### Yetkinlik Puanları — `App.Hr.My360FeedbackScore`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_My360FeedbackScore.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.My360FeedbackScore` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Yetkinlik Puanları — 360 değerlendiricisinin kendi talebinde her yetkinliğe verdiği seviye. |
| Kaynak | `Hr_T_PerformanceFeedbackScore` · filtre `"IsDeleted" = 'false' AND "FeedbackId" IN (SELECT "Id" FROM "Hr_T_PerformanceFeedback" WHERE "ReviewerId" = '@USERID')` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Komutlar | UpdateBefore: `Hr_S_PerformanceGuard` · UpdateAfter: `Hr_S_PerformanceReviewRecalc` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `FeedbackId` | Geri Bildirim | dxTextBox | | | |
| `SkillId` | Yetkinlik | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Skill |
| `LevelId` | Seviye | dxSelectBox | | ✓ | sorgu: Hr_T_SkillLevel (← SkillId) |
| `Comment` | Yorum | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
#### 360 Taleplerim — `App.Hr.My360Feedback`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_My360Feedback.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.My360Feedback` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | 360 Taleplerim — kullanı cı ya değerlendirici olarak atanan 360 derece değerlendirme talepleri. |
| Kaynak | `Hr_T_PerformanceFeedback` · filtre `"IsDeleted" = 'false' AND "ReviewerId" = '@USERID'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.My360FeedbackScore` (Id → FeedbackId) |
| Komutlar | UpdateBefore: `Hr_S_PerformanceGuard` · UpdateAfter: `Hr_S_PerformanceReviewRecalc` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ReviewId` | Değerlendirme | dxSelectBox | | | sorgu: Hr_T_PerformanceReview |
| `ReviewerId` | Değerlendirici | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `Relation` | İlişki | dxSelectBox | ✓ | ✓ | liste: Peer, Subordinate, Superior, InternalCustomer |
| `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Pending, Submitted |
| `Score` | Puan | dxNumberBox | | ✓ | |
| `SubmittedDate` | Gönderim Tarihi | dxDateBox | | ✓ | |
| `Comment` | Yorum | dxTextArea | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | | ✓ | |
### Disiplin Dosyaları (`App.Hr.DisciplinaryCase`)
#### Disiplin Dosyaları — `App.Hr.DisciplinaryCase`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_DisciplinaryCase.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr` › `App.Hr.DisciplinaryCase` (sı ra 10) |
| 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 |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | IncidentDate=@DATE, ReportedById=@USERID, Status=Open, BranchId= |
2026-10-07 08:17:46 +00:00
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `CaseNo` | Dosya No | dxTextBox | | | |
2026-10-14 21:12:14 +00:00
| `BranchId` | Tesis Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
2026-10-07 08:17:46 +00:00
| `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 |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_DisciplinaryPenaltyType.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Definitions` › `App.Hr.DisciplinaryPenaltyType` (sı ra 17) |
| 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 |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_DisciplinaryDefense.json` |
2026-10-07 08:17:46 +00:00
| 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 | dxHtmlEditor | | ✓ | |
#### Kararlar — `App.Hr.DisciplinaryDecision`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_DisciplinaryDecision.json` |
2026-10-07 08:17:46 +00:00
| 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 | dxHtmlEditor | | ✓ | |
#### Belgeler — `App.Hr.DisciplinaryFile`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_DisciplinaryFile.json` |
2026-10-07 08:17:46 +00:00
| 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 | ✓ | ✓ | |
### Araçlar (`App.Hr.Vehicles`)
#### Araç Belgeleri — `App.Hr.VehicleDocument`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_VehicleDocument.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleDocument` (sı ra 1) |
| Yetki | `App.Hr.VehicleDocument` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Araç Belgeleri — araç ve şoför kayı tları nda kullanı lan belge tanı mları (ruhsat, sigorta, muayene, MTV, OGS/HGS, ehliyet, psikoteknik, ceza ve kaza belgeleri). |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleDocument` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Form varsayı lanları | IsActive=true |
| Veri aynası | `data/App.Hr.VehicleDocument.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `DocumentGroup` | Belge Grubu | dxSelectBox | ✓ | ✓ | liste: Vehicle, Driver |
| `DocumentType` | Belge Tipi | dxSelectBox | ✓ | ✓ | liste: Insurance, Document, Tax, Toll, Inspection, Maintenance, Penalty, Accident |
| `Name` | Belge Adı | dxTextBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Masraf Tanı mlama — `App.Hr.VehicleExpenseDefinition`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_VehicleExpenseDefinition.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleExpenseDefinition` (sı ra 2) |
| Yetki | `App.Hr.VehicleExpenseDefinition` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Masraf Tanı mlama — araç masraf kalemleri (sigorta, vergi, bakı m, muayene, geçiş, ceza, yakı t…). |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleExpenseDefinition` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Form varsayı lanları | IsActive=true |
| Veri aynası | `data/App.Hr.VehicleExpenseDefinition.json` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `ExpenseType` | Masraf Tipi | dxTextBox | ✓ | ✓ | |
| `Name` | Masraf Adı | dxTextBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Gidilecek Yerler — `App.Hr.VehicleDestination`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_VehicleDestination.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleDestination` (sı ra 3) |
| Yetki | `App.Hr.VehicleDestination` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Gidilecek Yerler — araçlarla gidilen tanı mlı yerler ve uzaklı kları . |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleDestination` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Active` , `App.Widget.Passive` |
| Form varsayı lanları | IsActive=true |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `Name` | Gidilecek Yerin Adı | dxTextBox | ✓ | ✓ | |
| `Distance` | Uzaklı ğı (km) | dxNumberBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
#### Araçlar — `App.Hr.Vehicle`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Vehicle.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.Vehicle` (sı ra 4) |
| Yetki | `App.Hr.Vehicle` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Araçlar — şubeye ait şirket araçları , anlı k durumu (şirkette/dı şarı da), güncel km'si ve muayene/sigorta tarihleri. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_Vehicle` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.VehicleFile` (Id → VehicleId) |
| Widget'lar | `App.Widget.Total` , `App.Hr.Vehicle.Widget.Arrived` , `App.Hr.Vehicle.Widget.Left` , `App.Widget.Passive` |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | IsActive=true, BranchId= |
2026-10-07 08:17:46 +00:00
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `BranchId` | Tesis Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
| `Name` | Araç Adı | dxTextBox | ✓ | ✓ | |
| `Brand` | Markası | dxTextBox | | ✓ | |
| `Model` | Modeli | dxTextBox | | ✓ | |
| `BodyType` | Cinsi | dxTextBox | | ✓ | |
| `UsagePlace` | Kullanı ldı ğı Yer | dxTextBox | | ✓ | |
| `RegistrationDate` | Tescil Tarihi | dxDateBox | | ✓ | |
| `PlateNumber` | Plakası | dxTextBox | ✓ | ✓ | |
| `Status` | Durumu | dxSelectBox | | ✓ | liste: Arrived, Left |
| `CurrentKm` | Araç Km'si | dxNumberBox | | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
| `InspectionStart` | Muayene Başlangı ç | dxDateBox | | ✓ | |
| `InspectionEnd` | Muayene Bitiş | dxDateBox | | ✓ | |
| `InsuranceStart` | Sigorta Başlangı ç | dxDateBox | | ✓ | |
| `InsuranceEnd` | Sigorta Bitiş | dxDateBox | | ✓ | |
| `EmissionStart` | Egzoz Muayene Başlangı ç | dxDateBox | | ✓ | |
| `EmissionEnd` | Egzoz Muayene Bitiş | dxDateBox | | ✓ | |
| `TachographStart` | Takograf Kalib. Başlangı ç | dxDateBox | | ✓ | |
| `TachographEnd` | Takograf Kalib. Bitiş | dxDateBox | | ✓ | |
#### Şoför Tanı mlama — `App.Hr.Driver`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Driver.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.Driver` (sı ra 5) |
| Yetki | `App.Hr.Driver` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Şoför Tanı mlama — şirket araçları nı kullanan personel, zimmetli araçları ve sürüş geçmişi. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_Driver` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.DriverDocument` (Id → DriverId), `App.Hr.DriverPenalty` (Id → DriverId), `App.Hr.DriverAccident` (Id → DriverId) |
| Widget'lar | `App.Widget.Total` , `App.Hr.Driver.Widget.WithVehicle` , `App.Hr.Driver.Widget.TotalKm` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `UserId` | Sicil No / Adı Soyadı | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `Vehicle1Id` | Zimmetli Araç 1 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle |
| `Vehicle2Id` | Zimmetli Araç 2 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle |
| `Vehicle3Id` | Zimmetli Araç 3 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle |
| `Vehicle4Id` | Zimmetli Araç 4 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle |
| `Vehicle5Id` | Zimmetli Araç 5 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle |
| `TotalKm` | Yapı lan KM | dxNumberBox | | ✓ | |
#### Araç Giriş-Çı kı ş Takip — `App.Hr.VehicleMovement`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_VehicleMovement.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleMovement` (sı ra 6) |
| Yetki | `App.Hr.VehicleMovement` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Araç Giriş-Çı kı ş Takip — güvenliğin tuttuğu araç hareket defteri: araç şirketten ne zaman, kimle, hangi km ile çı ktı , ne zaman döndü. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleMovement` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Hr.Vehicle.Widget.Left` , `App.Widget.Today` |
| Komutlar | InsertAfter: SQL · DeleteAfter: SQL |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | EntryKm=0, BranchId= |
2026-10-07 08:17:46 +00:00
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `MovementNo` | Hareket No | dxNumberBox | | | |
| `ExitDate` | Çı kı ş Tarihi | dxDateBox | ✓ | ✓ | script |
| `BranchId` | Çı kı ş Şube | dxSelectBox | | ✓ | sorgu: Sas_T_Branch |
| `ExitTime` | Çı kı ş Saati | dxTextBox | ✓ | ✓ | script |
| `ExitKm` | Çı kı ş Km | dxNumberBox | ✓ | ✓ | script |
| `SenderUserId` | Gönderen Personel | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `SecurityUserId` | Güvenlik Personeli | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `DriverUserId` | Kullanan Personel | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `VehicleId` | Araç Adı / Plaka | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Vehicle · script |
| `DestinationId` | Gidilen Yer | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDestination |
| `Reason` | Gidiş Sebebi | dxTextBox | | ✓ | |
| `Location` | Konum | dxTextBox | | ✓ | |
| `EntrySecurityUserId` | Giriş Yapan Güvenlik Per. | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `EntryDate` | Giriş Tarihi | dxDateBox | | ✓ | script |
| `EntryBranchId` | Giriş Şube | dxSelectBox | | ✓ | sorgu: Sas_T_Branch |
| `EntryTime` | Giriş Saati | dxTextBox | | ✓ | script |
| `EntryKm` | Giriş Km | dxNumberBox | | ✓ | script |
| `TravelledKm` | Yapı lan Km | dxNumberBox | | ✓ | |
| `Status` | Durum | dxSelectBox | | ✓ | liste: Arrived, Left |
| `DurationMinutes` | Gezinti Süresi / Dk | dxNumberBox | | ✓ | |
| `ExpectedKm` | Olması Gereken Km | dxNumberBox | | ✓ | |
#### Masraf Girişleri — `App.Hr.VehicleExpense`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_VehicleExpense.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleExpense` (sı ra 7) |
| Yetki | `App.Hr.VehicleExpense` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Masraf Girişleri — araç için gelen her fatura/fiş: başlı k bilgileri ve kalemleri. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleExpense` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alt formlar | `App.Hr.VehicleExpenseLine` (Id → VehicleExpenseId) |
| Widget'lar | `App.Widget.Total` , `App.Widget.Today` , `App.Widget.TotalRevenue` |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `VehicleId` | Araç Adı | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Vehicle |
| `InvoiceNo` | Fatura No | dxTextBox | ✓ | ✓ | |
| `InvoiceDate` | Fatura Tarihi | dxDateBox | ✓ | ✓ | script |
| `DestinationId` | Firma Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDestination |
| `VehicleDocumentId` | Belge Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDocument |
| `FileName` | Dosya Adı | dxTextBox | | ✓ | |
| `FileContent` | Dosya | dxImageUpload | | ✓ | |
#### Araç Belgeleri — `App.Hr.VehicleFile`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_VehicleFile.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.VehicleFile` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Araç Dosyaları — araca yüklenen belgeler (ruhsat, poliçe, muayene raporu…). |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleFile` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `VehicleId` | Araç | dxSelectBox | | | sorgu: Hr_T_Vehicle |
| `VehicleDocumentId` | Belge Adı | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_VehicleDocument |
| `FileName` | Dosya Adı | dxTextBox | ✓ | ✓ | |
| `FileContent` | Dosya | dxImageUpload | ✓ | ✓ | |
#### Şoför Belgeleri — `App.Hr.DriverDocument`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_DriverDocument.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.DriverDocument` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Şoför Belgeleri — şoföre ait belgeler (sürücü belgesi, psikoteknik, SRC…). |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_DriverDocument` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `DriverId` | Şoför | dxSelectBox | | | sorgu: Hr_T_Driver |
| `VehicleDocumentId` | Belge Adı | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_VehicleDocument |
| `FileName` | Dosya Adı | dxTextBox | ✓ | ✓ | |
| `FileContent` | Dosya | dxImageUpload | ✓ | ✓ | |
#### Ceza Belgeleri — `App.Hr.DriverPenalty`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_DriverPenalty.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.DriverPenalty` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Şoför Cezaları — şoföre kesilen trafik cezaları . |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_DriverPenalty` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `DriverId` | Şoför | dxSelectBox | | | sorgu: Hr_T_Driver |
| `PenaltyDate` | Ceza Tarihi | dxDateBox | ✓ | ✓ | |
| `Amount` | Tutarı | dxNumberBox | | ✓ | |
| `Description` | Ceza Açı klama | dxTextBox | | ✓ | |
| `VehicleDocumentId` | Belge Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDocument |
| `FileName` | Dosya Adı | dxTextBox | | ✓ | |
| `FileContent` | Dosya | dxImageUpload | | ✓ | |
#### Kaza Belgeleri — `App.Hr.DriverAccident`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_DriverAccident.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.DriverAccident` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Şoför Kazaları — şoförün karı ştı ğı trafik kazaları ve belgeleri. |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_DriverAccident` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `DriverId` | Şoför | dxSelectBox | | | sorgu: Hr_T_Driver |
| `AccidentDate` | Kaza Tarihi | dxDateBox | ✓ | ✓ | |
| `VehicleDocumentId` | Belge Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDocument |
| `Description` | Kaza Açı klama | dxTextBox | | ✓ | |
| `FileName` | Dosya Adı | dxTextBox | | ✓ | |
| `FileContent` | Dosya | dxImageUpload | | ✓ | |
#### Masraf Kalemleri — `App.Hr.VehicleExpenseLine`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_VehicleExpenseLine.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | Menüsüz (alt form) |
| Yetki | `App.Hr.VehicleExpenseLine` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Masraf Kalemleri — bir masraf faturası nı n satı rları . |
| Geliştirme talebi | Human Resources -> Araçlar |
| Kaynak | `Hr_T_VehicleExpenseLine` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `VehicleExpenseId` | Masraf Girişi | dxTextBox | | | |
| `ExpenseDefinitionId` | Masraf Adı | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_VehicleExpenseDefinition |
| `DetailName` | Masraf Detay Adı | dxTextBox | | ✓ | |
| `Quantity` | Miktar | dxNumberBox | ✓ | ✓ | script |
| `Amount` | Tutarı | dxNumberBox | ✓ | ✓ | script |
| `DiscountRate` | İskonto Oranı (%) | dxNumberBox | ✓ | ✓ | script |
| `NetAmount` | Net Tutar | dxNumberBox | ✓ | ✓ | |
| `Description` | Masraf Açı klama | dxTextBox | | ✓ | |
### Ziyaretçiler (`App.Hr.Visitor`)
#### Ziyaretçiler — `App.Hr.Visitor`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_Visitor.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr` › `App.Hr.Visitor` (sı ra 12) |
| Yetki | `App.Hr.Visitor` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Ziyaretçiler — güvenlik/resepsiyonun tuttuğu ziyaretçi giriş-çı kı ş defteri. |
| Geliştirme talebi | Human Resources -> Ziyaretçi Takip Listesi |
| Kaynak | `Hr_T_Visitor` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Hr.Visitor.Widget.Today` , `App.Hr.Visitor.Widget.Inside` , `App.Hr.Visitor.Widget.Exited` |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | BranchId= |
2026-10-07 08:17:46 +00:00
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `VisitDate` | Ziyaret Tarihi | dxDateBox | ✓ | ✓ | script |
| `VisitorType` | Ziyaretçi Tipi | dxSelectBox | ✓ | ✓ | liste: Ziyaretçi, Müşteri, Tedarikçi, Taşeron, Kurye · script |
| `EntryTime` | Giriş Saati | dxDateBox | ✓ | ✓ | script |
| `ExitTime` | Çı kı ş Saati | dxDateBox | | ✓ | |
| `CardNo` | Kart No | dxTextBox | | ✓ | |
| `VisitedUserId` | Ziyaret Edilen Personel | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `VisitorFullName` | Ziyaretçi Adı Soyadı | dxTextBox | ✓ | ✓ | |
| `CompanyName` | Firma Adı | dxAutocomplete | | ✓ | sorgu: Hr_T_Visitor |
| `VisitReason` | Ziyaret Sebebi | dxTextArea | | ✓ | |
| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch |
### Olay Günlüğü (`App.Hr.EventLog`)
#### Olay Günlüğü — `App.Hr.EventLog`
| Özellik | Değer |
| --- | --- |
2026-10-09 11:33:26 +00:00
| Wizard | `wizard/Hr_EventLog.json` |
2026-10-07 08:17:46 +00:00
| Yol | Liste (Wizard) |
| Menü | `App.Hr` › `App.Hr.EventLog` (sı ra 13) |
| Yetki | `App.Hr.EventLog` + `.Create` , `.Update` , `.Delete` , `.Export` , `.Import` , `.Note` |
| Açı klama | Olay Günlüğü — vardiya amiri, güvenlik odası ve gözlem odası nı n vardiya sı rası nda kaydettiği önemli olaylar. |
| Geliştirme talebi | Human Resources -> Olay Günlüğü |
| Kaynak | `Hr_T_EventLog` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açı lı ş grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
| Widget'lar | `App.Widget.Total` , `App.Widget.Today` , `App.Hr.EventLog.Widget.Important` |
2026-10-14 21:12:14 +00:00
| Form varsayı lanları | BranchId= |
2026-10-07 08:17:46 +00:00
| Alan | Başlı k | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `LogSource` | Kaynak | dxSelectBox | ✓ | ✓ | liste: ShiftSupervisor, SecurityRoom, ObservationRoom |
| `BranchId` | Şube Adı | dxSelectBox | | ✓ | sorgu: Sas_T_Branch |
| `UserId` | Vardiya Amiri / Olayı Yaşayan | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `EventDate` | Olay Tarihi | dxDateBox | ✓ | ✓ | script |
| `EventTime` | Olay Saati | dxTextBox | ✓ | ✓ | |
| `Importance` | Önem Durumu | dxSelectBox | ✓ | ✓ | liste: 1, 2, 3, 4, 5 |
| `ShiftId` | Vardiya | dxSelectBox | | ✓ | sorgu: Hr_T_Shift |
| `Description` | Açı klama | dxTextArea | | ✓ | |
<!-- module - doc:auto:end -->