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

9.4 KiB
Raw Blame History

İK › Ç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 ve Vardiyalar İnsan Kaynakları kökündedir. Vardiyalar wizard dosyasında üst menü App.Hr.Definitions yazılıdır, menü satırı kökte durur (bkz. §9)

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 2, FcCalendar) Grid, Card, Pivot, Chart, Scheduler Toplam · Tatil · Yarım Gün
Vardiyalar / Shifts App.Hr.Shift İnsan Kaynakları (sıra 3, 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, 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

Takvim ve vardiya başka bir hesaba (izin günü, mesai, puantaj) bağlı değildir; platformda puantaj/izin hesaplayan modül yoktur.


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)

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? Hayır; bu hesapları yapan bir modül yoktur.

Vardiyalar menüde Tanımlamalar altında değil. Menü satırı İnsan Kaynakları kökündedir; wizard dosyasındaki üst menü (App.Hr.Definitions) eski değerdir. Wizard yeniden deploy edilirse menü Tanımlamalar altına taşınabilir — yeniden deploy etmeden önce wizard'daki üst menü kökle eşitlenmelidir.


10. Dosyalar ve geri alma

Dosya İçerik
configs/seeds/host/sql/object/Hr_T_{WorkCalendar,Shift}.sql Tablolar
configs/seeds/host/wizard/{WorkCalendar,Shift}.json 2 wizard
configs/seeds/host/data/App.Hr.{WorkCalendar,Shift}.json Takvim ve vardiya verisi (ekran kayıtları dosyaya aynalanır)
api/src/Sozsoft.Platform.Application.Contracts/LookUpQueryValues.cs (TenantShiftValues) Kullanıcı ekranındaki vardiya lookup'ı

Geri alma: Wizard Manager'dan silinir; vardiya tablosu kullanıcı ekranının lookup'ı tarafından okunduğu için düşürülmemelidir.

Ek — Ekran envanteri (otomatik)

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

Çalışma Takvimi — App.Hr.WorkCalendar

Özellik Değer
Wizard wizard/WorkCalendar.json
Yol Liste (Wizard)
Menü App.Hr › App.Hr.WorkCalendar (sıra 2)
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
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
Wizard wizard/Shift.json
Yol Liste (Wizard)
Menü App.Hr.Definitions › App.Hr.Shift (sıra 9)
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 ✓
WorkingHours Çalışma Süresi (Saat) dxNumberBox ✓
IsNightShift Gece Vardiyası dxCheckBox ✓ ✓
IsActive Aktif dxCheckBox ✓ ✓