573 lines
34 KiB
Markdown
573 lines
34 KiB
Markdown
<!-- module-doc: claims=App.Hr.CandidateSource, App.Hr.RejectionReason, App.Hr.EvaluationCriterion -->
|
||
# İK › İş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/host/sql/object/Hr_T_{StaffRequest,JobPosting,Candidate,JobApplication,Interview,InterviewScore,JobOffer,CandidateSource,RejectionReason,EvaluationCriterion}.sql` | Tablolar, CHECK ve tekil indeksler |
|
||
| `configs/seeds/host/wizard/{StaffRequest,JobPosting,Candidate,JobApplication,Interview,InterviewScore,JobOffer,CandidateSource,RejectionReason,EvaluationCriterion}.json` | 10 wizard |
|
||
| `configs/seeds/host/data/App.Hr.{CandidateSource,RejectionReason,EvaluationCriterion}.json` | Tanım verisi |
|
||
| `configs/seeds/host/data/App.Reports.ReportTemplates.json` | KVKK formu ve teklif mektubu şablonları |
|
||
| `configs/seeds/host/data/App.Notifications.Notification{Types,Rules}.json` | `IseAlimMulakatAtandi` tipi ve 2 kuralı |
|
||
| `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 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: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.
|
||
|
||
### Kadro Talepleri — `App.Hr.StaffRequest`
|
||
|
||
| Özellik | Değer |
|
||
| --- | --- |
|
||
| Wizard | `wizard/StaffRequest.json` |
|
||
| 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 |
|
||
| Form varsayılanları | IsActive=true, RequestDate=@DATE, RequestedById=@USERID, Headcount=1, EmploymentType=FullTime, Reason=NewPosition, CurrencyId=TRY |
|
||
| 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 |
|
||
| --- | --- |
|
||
| Wizard | `wizard/JobPosting.json` |
|
||
| 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 |
|
||
| Form varsayılanları | IsActive=true, Status=Draft, Headcount=1, EmploymentType=FullTime, WorkModel=Office, PublishDate=@DATE |
|
||
|
||
| 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 |
|
||
| --- | --- |
|
||
| Wizard | `wizard/Candidate.json` |
|
||
| 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ı | 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 |
|
||
| --- | --- |
|
||
| Wizard | `wizard/JobApplication.json` |
|
||
| 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 |
|
||
| --- | --- |
|
||
| Wizard | `wizard/Interview.json` |
|
||
| 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 |
|
||
| --- | --- |
|
||
| Wizard | `wizard/CandidateSource.json` |
|
||
| 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 |
|
||
| --- | --- |
|
||
| Wizard | `wizard/JobOffer.json` |
|
||
| 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 |
|
||
| Form varsayılanları | IsActive=true, OfferDate=@DATE, Status=Draft, CurrencyId=TRY, EmploymentType=FullTime, WorkModel=Office |
|
||
| 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 |
|
||
| --- | --- |
|
||
| Wizard | `wizard/RejectionReason.json` |
|
||
| 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 |
|
||
| --- | --- |
|
||
| Wizard | `wizard/EvaluationCriterion.json` |
|
||
| 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 |
|
||
| --- | --- |
|
||
| Wizard | `wizard/InterviewScore.json` |
|
||
| 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 | | ✓ | |
|
||
|
||
<!-- module-doc:auto:end -->
|