sozsoft-platform/configs/seeds/host/docs/modules/HrTrainings.md
2026-10-04 18:04:16 +03:00

17 KiB
Raw Blame History

İK › Eğitimler (App.Hr.Trainings)

Ş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)
Tanımlar Tip ve konu tanımları İK › Tanımlar'da değil Eğitimler dalının içindedir; konu bir tipe bağlıdır ve tip seçimine göre süzülür
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

İnsan Kaynakları › Eğitimler (App.Hr.Trainings, ikon FcGraduationCap)

Sıra Menü (TR / EN) ListFormCode Alt formlar Görünümler Widget'lar
1 Eğitim Tipleri / Training Types App.Hr.TrainingType — Grid, Card, Pivot, Chart Toplam · Aktif · Pasif
2 Eğitim Konuları / Training Subjects App.Hr.TrainingSubject — Grid, Card, Pivot, Chart Toplam · Aktif · Pasif
3 Eğitimler / Trainings App.Hr.Training TrainingParticipant, TrainingFile (Id → TrainingId, menüsüz) Grid, Card, Pivot, Chart Toplam · Açık · Kapalı · Toplam Maliyet

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

İzin grubu App.Hr, modül Sas|Hr. Yetki ağacı menüyü izler: App.Hr.Trainings ara yetkisinin altında üç ekranın kökü + .Create/.Update/.Delete/.Export/.Import/.Note; TrainingParticipant ve TrainingFile App.Hr.Training altındadır. Satır süzmesi yoktur. Hiçbir yetki role otomatik atanmaz.

Rol Yetkiler
Eğitim sorumlusu App.Hr.Trainings dalının tamamı
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ı
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 kayıtta kendiliğinden tamamlanır (Hr_S_DevelopmentPlanSync, bkz. HrPerformance.md). Eğitimler ekranı bu bağı bilmez

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/host/sql/object/Hr_T_{TrainingType,TrainingSubject,Training,TrainingParticipant,TrainingFile}.sql Tablolar
configs/seeds/host/wizard/{TrainingType,TrainingSubject,Training,TrainingParticipant,TrainingFile}.json 5 wizard
configs/seeds/host/data/App.Hr.{TrainingType,TrainingSubject}.json Tanım verisi
configs/seeds/host/data/App.Reports.ReportTemplates.json Katılım Belgesi şablonu
configs/seeds/host/data/App.Menus.Menu.json, Abp.Identity.Permissions.json, App.Languages.LanguageText.json Menü, yetki, dil satırları

Kurulum: DB Migrate. Geri alma: Wizard Manager'dan alt formlar (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.

Ek — Ekran envanteri (otomatik)

Wizard dosyalarından üretilir; deploy, silme, tasarımcı kaydı ve import'ta yenilenir. Elle düzenleme bir sonraki yenilemede kaybolur.

Eğitim Tipleri — App.Hr.TrainingType

Özellik Değer
Wizard wizard/TrainingType.json
Yol Liste (Wizard)
Menü App.Hr.Trainings › App.Hr.TrainingType (sıra 1)
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
Wizard wizard/TrainingSubject.json
Yol Liste (Wizard)
Menü App.Hr.Trainings › App.Hr.TrainingSubject (sıra 2)
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

Eğitimler — App.Hr.Training

Özellik Değer
Wizard wizard/Training.json
Yol Liste (Wizard)
Menü App.Hr.Trainings › App.Hr.Training (sıra 3)
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
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 ✓

Katılımcılar — App.Hr.TrainingParticipant

Özellik Değer
Wizard wizard/TrainingParticipant.json
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ı
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
Wizard wizard/TrainingFile.json
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 ✓ ✓