{ "ListFormCode": "Sas.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.



", "DueDate": "2026-10-01T10:34:00", "Tags": "HR", "Assignees": "system@sozsoft.com", "Priority": "5", "Completed": true, "SortOrder": 2, "Timesheets": "[{\"id\":\"9c8efcea-1873-defb-8ca5-3a240a04f659\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Talep analiz edildi\",\"duration\":0.1},{\"id\":\"51b5039e-452d-b4c9-7407-3a240a072646\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Hr_T_TrainingType tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"472faf9f-a816-5f2e-5f79-3a240a073b97\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Hr_T_TrainingSubject tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"60423b33-ee26-d440-0168-3a240a075d34\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Hr_T_Training tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"fe75c8ff-de63-20ce-550a-3a240a076f6a\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Hr_T_TrainingParticipant tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"5a955586-ca3e-b04e-c9c6-3a240a077d7e\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Hr_T_TrainingFile tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"0277b484-25a2-78ea-3ab8-3a240a07f4cf\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"TrainingType.json wizard\\u0027\\u0131 deploy edildi (8 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"fc653661-f16b-9821-a2ac-3a240a082abb\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"TrainingType.json wizard\\u0027\\u0131 silindi\",\"duration\":0.0167},{\"id\":\"71f75d76-8711-6e11-e741-3a240a086d4e\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"TrainingType.json wizard\\u0027\\u0131 deploy edildi (8 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"a7a5aec4-af2f-c398-447b-3a240a08e779\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"TrainingSubject.json wizard\\u0027\\u0131 deploy edildi (18 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"110bcbac-1131-88d8-19e4-3a240a09d350\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"TrainingParticipant.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"796ed9d9-dd28-4b24-1fe8-3a240a0aa526\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"TrainingParticipant.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"320777bd-9eb4-3cf2-ed94-3a240a0ae44c\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"TrainingFile.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"b5f2b813-6b49-0648-05db-3a240a0b04c6\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Kat\\u0131l\\u0131m Belgesi rapor \\u015Fablonu kaydedildi\",\"duration\":0.0167},{\"id\":\"ae71bc2b-34be-c82e-9492-3a240a0b98ff\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"TrainingParticipant.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"8453d3ce-3f86-10cc-6ddf-3a240a0c7ddc\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Training.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"43ccf5a1-5d4b-e325-7b18-3a240a0c981c\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"12 tamamlanm\\u0131\\u015F alt g\\u00F6rev eklendi\",\"duration\":0.0167},{\"id\":\"47ad1246-b808-c1a5-450a-3a240a0cd1d0\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Analize \\u00FCretim notu eklendi\",\"duration\":0.0167},{\"id\":\"5d9092ec-9bb5-da18-8e9f-3a240a0ce535\",\"date\":\"2026-10-01\",\"userName\":\"system@sozsoft.com\",\"description\":\"Sas.DevRequests ekran\\u0131nda sat\\u0131r g\\u00FCncellendi (Status)\",\"duration\":0.0167}]", "SubTasks": "[{\"id\":\"10dc06b0-2795-74d6-418a-3a240a0c97d4\",\"title\":\"create_table: Hr_T_TrainingType\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"baa105a5-0d81-ee4e-c0e2-3a240a0c97d4\",\"title\":\"create_table: Hr_T_TrainingSubject\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"90b09cb6-6e55-95f1-98a4-3a240a0c97d4\",\"title\":\"create_table: Hr_T_Training\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"71140083-b2cb-e42a-09df-3a240a0c97d4\",\"title\":\"create_table: Hr_T_TrainingParticipant\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"58070af2-25b3-ff25-11c5-3a240a0c97d4\",\"title\":\"create_table: Hr_T_TrainingFile\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"ba684747-a5cb-e120-ccf3-3a240a0c97d4\",\"title\":\"deploy_wizard: TrainingType.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"12c89343-f59f-13ae-802d-3a240a0c97d4\",\"title\":\"deploy_wizard: TrainingSubject.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"0a5cd7a7-16e0-9121-644f-3a240a0c97d4\",\"title\":\"deploy_wizard: TrainingParticipant.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"52f0ea63-cea2-70d8-8e3c-3a240a0c97d4\",\"title\":\"deploy_wizard: TrainingFile.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"cf17163e-0932-9b28-f2c2-3a240a0c97d4\",\"title\":\"save_report_template: Kat\\u0131l\\u0131m Belgesi\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"0de0fc14-2c70-f6ef-9539-3a240a0c97d4\",\"title\":\"deploy_wizard: TrainingParticipant.json (Sertifika sat\\u0131r butonu ile g\\u00FCncelleme)\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true},{\"id\":\"e0ff237a-0ac0-c8e3-dc72-3a240a0c97d4\",\"title\":\"deploy_wizard: Training.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-01\",\"completed\":true}]", "Analysis": "

Amaç

\n

İ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\n

Görsel analizi

\n\n\n

Çözüm yolu

\n

Wizard 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

Menü yeri

\n

İnsan Kaynakları › Eğitim › {Eğitim Tipleri | Eğitim Konuları | Eğitimler}

\n\n\n\n\n\n\n\n
SeviyeKodAd (TR / EN)İkonDurum
KökHrİnsan Kaynakları / Human ResourcesFcConferenceCallVar
AraHr.TrainingsEğitim / TrainingFcGraduationCapYeni
EkranHr.TrainingTypeEğitim Tipleri / Training TypesFcListYeni
EkranHr.TrainingSubjectEğitim Konuları / Training SubjectsFcViewDetailsYeni
EkranHr.TrainingEğitimler / TrainingsFcGraduationCapYeni
\n

ModuleId: Hr · İzin grubu: Hr · Route: /admin/list/{ListFormCode}.
\nYetki: Hr › Hr.Trainings (Yeni) › Hr.TrainingType / Hr.TrainingSubject / Hr.Training
\nYetki (alt formlar): Hr › Hr.Trainings › Hr.Training › Hr.TrainingParticipant / Hr.TrainingFile

\n\n

Veri modeli

\n

Tüm tablolar kiracı + audit + soft delete (standing default). Id uniqueidentifier.

\n

Hr_T_TrainingType (yeni) — Tanım tablosu: Evet (talep: \"seçenekler olmalı\", lookup kaynağı).

\n\n\n
KolonTipZorunlu
Namenvarchar(128)✓
IsActivebit, vars. 1✓
\n\n

Hr_T_TrainingSubject (yeni) — Tanım tablosu: Evet (Eğitimler ekranının cascading lookup kaynağı).

\n\n\n\n\n
KolonTipZorunluKaynak
TrainingTypeIduniqueidentifier✓Hr_T_TrainingType
Namenvarchar(256)✓
IsEvaluatedbit, vars. 1✓\"Değerlendirilsin mi?\"
IsActivebit, vars. 1✓
\n\n

Hr_T_Training (yeni) — Tanım tablosu: Hayır (hareket kaydı).

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
KolonTipZorunluNot
TrainingTypeIduniqueidentifier✓Hr_T_TrainingType
TrainingSubjectIduniqueidentifier✓Hr_T_TrainingSubject, TrainingTypeId'ye cascade
EntryDatedate✓Giriş Tarihi, vars. bugün
BranchIduniqueidentifier✓Sas_T_Branch
StartDate / EndDatedate✓
StartTime / EndTimetime
TotalHoursdecimal(10,2)Top. Eğitim Süresi (saat)
TrainerNamenvarchar(200)Eğitim Veren Kişi
TrainingPlacenvarchar(MAX)Eğitim Yeri
TrainingInstitutionnvarchar(MAX)Eğitim Veren Kurum
Descriptionnvarchar(MAX)Açıklama
Statusnvarchar(16)✓Open / Closed, vars. Open
SkillIdsnvarchar(MAX)Yetkinlikler, Hr_T_Skill çoklu seçim
CostPlace, CostTrainer, CostAccommodation, CostTransport, CostCatering, CostOtherdecimal(18,2), vars. 0Maliyet
CostTotaldecimal(18,2)Hesaplanan, salt okunur
\n\n

Hr_T_TrainingParticipant (yeni) — Tanım tablosu: Hayır.

\n\n\n\n\n\n\n\n\n\n\n
KolonTipZorunluNot
TrainingIduniqueidentifier✓Hr_T_Training
UserIduniqueidentifier✓AbpUsers
HireDatedateAbpUsers.HireDate kopyası
DepartmentIduniqueidentifierAbpUsers.DepartmentId kopyası (Bölüm)
JobPositionIduniqueidentifierAbpUsers.JobPositionId kopyası (Görevi)
AttendanceStatusnvarchar(16)✓Attended / NotAttended / Excused (Katıldı / Katılmadı / Mazeretli), vars. Attended
EvaluationScoredecimal(5,2)0–100
ExamScoredecimal(5,2)Sınav Not Durumu, 0–100
LeaveDatedateAyrılma Tarihi
Notenvarchar(MAX)
\n\n

Hr_T_TrainingFile (yeni) — Tanım tablosu: Hayır.

\n\n\n\n\n\n
KolonTipZorunluNot
TrainingIduniqueidentifier✓Hr_T_Training
DocumentTypeIduniqueidentifierHr.DocumentType (var)
FileDatedate✓vars. bugün
FileNamenvarchar(256)✓
FileContentnvarchar(MAX)✓base64, dxImageUpload
\n\n

Alt form ağacı

\n\n\n\n
SekmeHedefTabTypeMenüİlişkiEkle / Düzenle / SilYetki yolu
KatılımcılarHr.TrainingParticipantListMenüsüzId → TrainingId✓ / ✓ / ✓Hr › Hr.Trainings › Hr.Training › Hr.TrainingParticipant
DosyalarHr.TrainingFileListMenüsüzId → TrainingId✓ / ✓ / ✓Hr › Hr.Trainings › Hr.Training › Hr.TrainingFile
\n

Yetkinlikler ve Maliyet ayrı sekme değil, ana formda grup olarak durur (Maliyet listede görünsün diye ana tabloda).

\n\n

Etkilenen kısımlar

\n\n\n

Görünümler ve davranış

\n\n\n

Kararlar

\n\n\n

Üretim planı

\n
    \n
  1. create_table: Hr_T_TrainingType
  2. \n
  3. create_table: Hr_T_TrainingSubject
  4. \n
  5. create_table: Hr_T_Training
  6. \n
  7. create_table: Hr_T_TrainingParticipant
  8. \n
  9. create_table: Hr_T_TrainingFile
  10. \n
  11. deploy_wizard: TrainingType.json
  12. \n
  13. deploy_wizard: TrainingSubject.json
  14. \n
  15. deploy_wizard: TrainingParticipant.json
  16. \n
  17. deploy_wizard: TrainingFile.json
  18. \n
  19. save_report_template: Katılım Belgesi
  20. \n
  21. deploy_wizard: TrainingParticipant.json (Sertifika satır butonu ile güncelleme)
  22. \n
  23. deploy_wizard: Training.json
  24. \n
\n\n

Üretime hazır

\n

Evet

MCP

\n

Üretilenler: Hr_T_TrainingType, Hr_T_TrainingSubject, Hr_T_Training, Hr_T_TrainingParticipant, Hr_T_TrainingFile tabloları; Hr.TrainingType, Hr.TrainingSubject, Hr.Training (menülü, İnsan Kaynakları › Eğitim), Hr.TrainingParticipant ve 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.

\n

Demo 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).

\n

Analizden sapmalar / varsayılanlar:

\n\n

DB Migrate bekleyen wizard'lar: TrainingType.json, TrainingSubject.json, TrainingParticipant.json, TrainingFile.json, Training.json.

" } ] }