{ "ListFormCode": "App.DevRequests", "KeyFieldName": "Id", "GeneratedAt": "2026-10-01T10:29:00.7111349Z", "Order": 0, "Rows": [ { "Id": "c8017276-eef2-4ede-b060-ec86339fee18", "TenantId": null, "UserName": "system@sozsoft.com", "RequestDate": null, "Status": "Staging", "Title": "Human Resources -> Eğitim", "Description": "
Human Resources menüsünün içerisinde Eğitim isimli bir alt menü oluşturulmalı. Aşağıdaki komponentler bu alt menünün altına yerleştirilmeli.
Eğitim Tipleri : Eğitim Tipleri Oryantasyon Eğitimi, İş Başı Eğitimi, Teknik Oryantasyon Eğitimi, Grup Eğitimi, Firma Dışı Eğitimi, Eğitim İçerikli Sosyal Faaliyet, Akademi Eğitimleri, Rotasyon Eğitimleri seçenekleri olmalı. Bu bilgiler demo olarak otomatik eklenmeli.
Eğitim Konuları : Eğitim Tipi sütunu Eğtim Tipleri listesinden gelmeli. Demo veri eklenirken Eğitim Tipi listesinde Id değeri kullanılmalı. Yoksa Eğitim Tipi sütunu boş görünmemeli.
Eğitimler : Yukarıda bahsedilen eğitim tiplerine ait fotoğraflarını gönderiyorum. Ancak beklentim sadece bir eğitim ekranına ihtiyacım var. Bu resimleri birleştirerek tek bir komponent tasarlamalısın. Eğitim ekranının üzerinde Eğitim tipi seçilmeli ve o tipe bağlı olarak yukarıdaki listedeki Eğitim Konusu seçilmeli. Yani cascading olarak çalışmalı. Diğer sütunlar resimlerdeki ortak ve artan tüm bilgileri içerecek şekilde oluşturulmalıdır. Eğitimler listesinin detayında Katılımcılar, Maliyet ve Yetkinlikler girilebilmeli. Yekinlikler -> Skill Types içerisinde seçilebilmeli hatta bunun listesi olmayabilir Eğitim kaydında birden fazla seçilebilen yetkinler sütunu da olabilir. Her katılımcının katılıma durumu, değerlendirme puanı, sınav notu gibi bilgiler girilebilmelidir. Eğitimle alakalı birden fazla eğitim kaynağı olan dijital dosyaları da bu eğtiimin içerisine kaydedebilmeliyim. DepartmanId ve BirimId sütunlarını oluşturmana gerek yok.
Eğitime katılan tüm katılımcılar eğer katıldıysa Sertifika alabilmeli. Sertifika raporu aşağıdaki gibi hazırlanmalı. Uygulamada Rapor Kategorileri, Report Templates seçenekleri var. Bu Sertifika raporu için Standart Taahhütname gibi bir rapor hazırlanabilir. DynamicReport ile hazırlanabilmeli. Raporlar kategorisinde Standard Taahhütname gibi statik bir rapor ekle. Katılım durumu onay kutusu yerine üç seçenekli bir liste olacak: Katıldı / Katılmadı / Mazeretli. |
Yine eğitimin içerisinde Maliyet bilgileri girebileceğimiz bir group olmalı. aşağıda resimdeki detayları o kısma yazabilmeliyim. Bu bilgiler Eğitim listesinde görünebilmelidir.
İK, eski sistemdeki 8 ayrı eğitim formunu (İş Başı, Oryantasyon, Teknik Oryantasyon, Grup, Dış, Sosyal Faaliyet, Akademi, Rotasyon) tek bir Eğitim ekranında toplamak; katılımcı, katılım durumu, puan/not, dosya, yetkinlik ve maliyet bilgisini aynı kayıtta tutmak ve katılan personele Katılım Belgesi basmak istiyor.
\n\nWizard List ekranları (tanımlar + ana ekran + alt formlar) ve DynamicReport şablonu. Tüm ihtiyaçlar (cascading lookup, TagBox, hesaplanan alan, alt form sekmeleri, satır butonu) ListForm sözleşmesiyle karşılanır; custom component gerekmez.
\n\nİnsan Kaynakları › Eğitim › {Eğitim Tipleri | Eğitim Konuları | Eğitimler}
| Seviye | Kod | Ad (TR / EN) | İkon | Durum |
|---|---|---|---|---|
| Kök | App.Hr | İnsan Kaynakları / Human Resources | FcConferenceCall | Var |
| Ara | App.Hr.Trainings | Eğitim / Training | FcGraduationCap | Yeni |
| Ekran | App.Hr.TrainingType | Eğitim Tipleri / Training Types | FcList | Yeni |
| Ekran | App.Hr.TrainingSubject | Eğitim Konuları / Training Subjects | FcViewDetails | Yeni |
| Ekran | App.Hr.Training | Eğitimler / Trainings | FcGraduationCap | Yeni |
ModuleId: Hr · İzin grubu: App.Hr · Route: /admin/list/{ListFormCode}.
\nYetki: App.Hr › App.Hr.Trainings (Yeni) › App.Hr.TrainingType / App.Hr.TrainingSubject / App.Hr.Training
\nYetki (alt formlar): App.Hr › App.Hr.Trainings › App.Hr.Training › App.Hr.TrainingParticipant / App.Hr.TrainingFile
Tüm tablolar kiracı + audit + soft delete (standing default). Id uniqueidentifier.
\nHr_T_TrainingType (yeni) — Tanım tablosu: Evet (talep: \"seçenekler olmalı\", lookup kaynağı).
\n| Kolon | Tip | Zorunlu |
|---|---|---|
| Name | nvarchar(128) | ✓ |
| IsActive | bit, vars. 1 | ✓ |
Hr_T_TrainingSubject (yeni) — Tanım tablosu: Evet (Eğitimler ekranının cascading lookup kaynağı).
\n| Kolon | Tip | Zorunlu | Kaynak |
|---|---|---|---|
| TrainingTypeId | uniqueidentifier | ✓ | Hr_T_TrainingType |
| Name | nvarchar(256) | ✓ | |
| IsEvaluated | bit, vars. 1 | ✓ | \"Değerlendirilsin mi?\" |
| IsActive | bit, vars. 1 | ✓ |
Hr_T_Training (yeni) — Tanım tablosu: Hayır (hareket kaydı).
\n| Kolon | Tip | Zorunlu | Not |
|---|---|---|---|
| TrainingTypeId | uniqueidentifier | ✓ | Hr_T_TrainingType |
| TrainingSubjectId | uniqueidentifier | ✓ | Hr_T_TrainingSubject, TrainingTypeId'ye cascade |
| EntryDate | date | ✓ | Giriş Tarihi, vars. bugün |
| BranchId | uniqueidentifier | ✓ | Sas_T_Branch |
| StartDate / EndDate | date | ✓ | |
| StartTime / EndTime | time | ||
| TotalHours | decimal(10,2) | Top. Eğitim Süresi (saat) | |
| TrainerName | nvarchar(200) | Eğitim Veren Kişi | |
| TrainingPlace | nvarchar(MAX) | Eğitim Yeri | |
| TrainingInstitution | nvarchar(MAX) | Eğitim Veren Kurum | |
| Description | nvarchar(MAX) | Açıklama | |
| Status | nvarchar(16) | ✓ | Open / Closed, vars. Open |
| SkillIds | nvarchar(MAX) | Yetkinlikler, Hr_T_Skill çoklu seçim | |
| CostPlace, CostTrainer, CostAccommodation, CostTransport, CostCatering, CostOther | decimal(18,2), vars. 0 | Maliyet | |
| CostTotal | decimal(18,2) | Hesaplanan, salt okunur |
Hr_T_TrainingParticipant (yeni) — Tanım tablosu: Hayır.
\n| Kolon | Tip | Zorunlu | Not |
|---|---|---|---|
| TrainingId | uniqueidentifier | ✓ | Hr_T_Training |
| UserId | uniqueidentifier | ✓ | AbpUsers |
| HireDate | date | AbpUsers.HireDate kopyası | |
| DepartmentId | uniqueidentifier | AbpUsers.DepartmentId kopyası (Bölüm) | |
| JobPositionId | uniqueidentifier | AbpUsers.JobPositionId kopyası (Görevi) | |
| AttendanceStatus | nvarchar(16) | ✓ | Attended / NotAttended / Excused (Katıldı / Katılmadı / Mazeretli), vars. Attended |
| EvaluationScore | decimal(5,2) | 0–100 | |
| ExamScore | decimal(5,2) | Sınav Not Durumu, 0–100 | |
| LeaveDate | date | Ayrılma Tarihi | |
| Note | nvarchar(MAX) |
Hr_T_TrainingFile (yeni) — Tanım tablosu: Hayır.
\n| Kolon | Tip | Zorunlu | Not |
|---|---|---|---|
| TrainingId | uniqueidentifier | ✓ | Hr_T_Training |
| DocumentTypeId | uniqueidentifier | App.Hr.DocumentType (var) | |
| FileDate | date | ✓ | vars. bugün |
| FileName | nvarchar(256) | ✓ | |
| FileContent | nvarchar(MAX) | ✓ | base64, dxImageUpload |
| Sekme | Hedef | TabType | Menü | İlişki | Ekle / Düzenle / Sil | Yetki yolu |
|---|---|---|---|---|---|---|
| Katılımcılar | App.Hr.TrainingParticipant | List | Menüsüz | Id → TrainingId | ✓ / ✓ / ✓ | App.Hr › App.Hr.Trainings › App.Hr.Training › App.Hr.TrainingParticipant |
| Dosyalar | App.Hr.TrainingFile | List | Menüsüz | Id → TrainingId | ✓ / ✓ / ✓ | App.Hr › App.Hr.Trainings › App.Hr.Training › App.Hr.TrainingFile |
Yetkinlikler ve Maliyet ayrı sekme değil, ana formda grup olarak durur (Maliyet listede görünsün diye ana tabloda).
\n\nApp.Hr.Trainings ve ara yetkisi.CascadeParentFields: TrainingTypeId; TrainingTypeId değişince TrainingSubjectId boşaltılır (CascadeEmptyFields). Konu lookup'ı yalnızca aktif konuları getirir; gridde ad her zaman görünür (lookup filtresiz display).(gün sayısı) × (EndTime − StartTime) saat hesaplanır, elle düzeltilebilir.Hr_T_Skill (görüntü: \"{SkillType} - {Skill}\"), aktif kayıtlar.AttendanceStatus = 'Attended' iken görünür.FileContent nvarchar(MAX)'a dxImageUpload ile kaydedilir; PDF/Office dosyaları için yükleyicinin kabul ettiği türler ImageUploadOptions ile genişletilir, dosya başına 10 MB sınır (onay).App.Hr.TrainingParticipant) üzerinde çalışır; yer tutucular için katılımcı ekranına salt okunur birleştirme alanları eklenir: ParticipantFullName (AbpUsers.Name + Surname), TrainingSubjectName, TrainingEndDate, TrainingTotalHours, TrainerName (ColumnJoinTableDto ile Hr_T_Training / Hr_T_TrainingSubject) (onay).Evet
Üretilenler: Hr_T_TrainingType, Hr_T_TrainingSubject, Hr_T_Training, Hr_T_TrainingParticipant, Hr_T_TrainingFile tabloları; App.Hr.TrainingType, App.Hr.TrainingSubject, App.Hr.Training (menülü, İnsan Kaynakları › Eğitim), App.Hr.TrainingParticipant ve App.Hr.TrainingFile (menüsüz alt form) ekranları; \"Raporlar\" kategorisinde Katılım Belgesi şablonu (Id 3840a20d-3233-4d17-bc06-ccfd8d87b32a) ve Katılımcılar satırında yalnızca AttendanceStatus = 'Attended' iken görünen Sertifika butonu.
\nDemo veri: 8 Eğitim Tipi sabit Id'lerle (a1e00001-0000-4000-8000-00000000000N); [image-1]'deki 18 konu bu Id'lerle (analizde 19 yazıyordu, görselde 18 satır var).
\nAnalizden sapmalar / varsayılanlar:
\ntime tipini desteklemediği için StartTime/EndTime datetime (saat editörü); decimal kolonlar platform gereği decimal(18,4).DB Migrate bekleyen wizard'lar: TrainingType.json, TrainingSubject.json, TrainingParticipant.json, TrainingFile.json, Training.json.
" } ] }