From e6db756de35590f89600e4727b1885416cfbf86e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Mon, 5 Oct 2026 00:18:13 +0300 Subject: [PATCH] Puantaj ve DEvam Takibi --- .../lowcode-reference.instructions.md | 4 +- README.md | 4 + .../ListFormSeeder_Administration.cs | 2 +- .../host/data/Abp.Identity.Permissions.json | 532 +- .../App.BackgroundWorkers.RecurringJobs.json | 10 + .../1bca19aa-e144-5e4c-b23b-9eddd4dafd19.json | 29 + .../23744edc-eda9-512e-8079-fe2e8e5fd2a8.json | 2 +- .../3b7b16c6-aa96-5765-8e19-fe5e727feb52.json | 2 +- .../App.DeveloperKit.CustomEndpoints.json | 11 + .../App.DeveloperKit.IntranetWidgets.json | 13 + .../host/data/App.Languages.LanguageText.json | 1784 ++++++- configs/seeds/host/data/App.Menus.Menu.json | 157 +- .../host/data/App.SettingDefinitions.json | 136 + .../seeds/host/docs/modules/HrAttendance.md | 552 +++ .../seeds/host/docs/modules/HrDefinitions.md | 251 +- .../host/docs/modules/HrDisciplinaryCase.md | 15 +- configs/seeds/host/docs/modules/HrEventLog.md | 4 +- .../seeds/host/docs/modules/HrHealthCard.md | 8 +- configs/seeds/host/docs/modules/HrIntranet.md | 15 +- configs/seeds/host/docs/modules/HrLeave.md | 21 +- .../seeds/host/docs/modules/HrPerformance.md | 1 + .../seeds/host/docs/modules/HrPersonnel.md | 7 +- .../seeds/host/docs/modules/HrRecruitment.md | 50 +- .../seeds/host/docs/modules/HrTrainings.md | 6 +- configs/seeds/host/docs/modules/HrVehicles.md | 164 +- configs/seeds/host/docs/modules/HrVisitor.md | 4 +- .../seeds/host/docs/modules/HrWorkCalendar.md | 32 +- .../host/sql/object/Hr_F_LeaveNetDays.sql | 32 + .../sql/object/Hr_F_TimesheetPeriodClosed.sql | 25 + .../sql/object/Hr_F_WorkCalendarDayType.sql | 25 + .../host/sql/object/Hr_S_AttendanceImport.sql | 77 + .../sql/object/Hr_S_AttendanceProcess.sql | 96 + .../host/sql/object/Hr_S_LeaveDaysRefresh.sql | 19 + .../sql/object/Hr_S_LeaveRequestAfterSave.sql | 72 +- .../sql/object/Hr_S_LeaveRequestGuard.sql | 17 +- .../sql/object/Hr_S_LeaveSickLeaveSync.sql | 26 +- .../sql/object/Hr_S_TimesheetCalculate.sql | 426 ++ .../host/sql/object/Hr_S_TimesheetNightly.sql | 72 + .../object/Hr_S_TimesheetPeriodAfterSave.sql | 55 + .../host/sql/object/Hr_S_TrainingSync.sql | 50 + .../sql/object/Hr_S_WorkCalendarAfterSave.sql | 50 + .../host/sql/object/Hr_T_AttendanceLog.sql | 38 + .../host/sql/object/Hr_T_LeaveRequest.sql | 4 - .../seeds/host/sql/object/Hr_T_LeaveType.sql | 5 - configs/seeds/host/sql/object/Hr_T_Shift.sql | 2 + .../seeds/host/sql/object/Hr_T_Timesheet.sql | 50 + .../host/sql/object/Hr_T_TimesheetPeriod.sql | 28 + .../host/sql/object/Hr_V_AttendanceShift.sql | 32 + .../host/sql/object/Hr_V_TimesheetMonthly.sql | 52 + configs/seeds/host/wizard/AttendanceLog.json | 2141 ++++++++ configs/seeds/host/wizard/BenefitType.json | 2 +- .../seeds/host/wizard/CandidateSource.json | 2 +- configs/seeds/host/wizard/Certificate.json | 2 +- .../seeds/host/wizard/DisciplinaryCase.json | 8 +- .../host/wizard/DisciplinaryDecision.json | 6 +- .../host/wizard/DisciplinaryDefense.json | 6 +- .../host/wizard/DisciplinaryPenaltyType.json | 2 +- configs/seeds/host/wizard/Doctor.json | 2 +- configs/seeds/host/wizard/DocumentType.json | 2 +- configs/seeds/host/wizard/Driver.json | 2 +- .../host/wizard/EvaluationCriterion.json | 2 +- configs/seeds/host/wizard/EventLog.json | 2 +- configs/seeds/host/wizard/ExpenseType.json | 2 +- configs/seeds/host/wizard/HealthCard.json | 2 +- .../host/wizard/HealthCardSickLeave.json | 6 +- configs/seeds/host/wizard/Hospital.json | 2 +- .../seeds/host/wizard/HospitalDepartment.json | 2 +- configs/seeds/host/wizard/LeaveRequest.json | 10 +- configs/seeds/host/wizard/LeaveType.json | 2 +- configs/seeds/host/wizard/MyLeaveRequest.json | 2 +- configs/seeds/host/wizard/MyTimesheet.json | 3987 +++++++++++++++ configs/seeds/host/wizard/MyTimesheetDay.json | 2896 +++++++++++ .../seeds/host/wizard/RejectionReason.json | 2 +- configs/seeds/host/wizard/Shift.json | 284 +- configs/seeds/host/wizard/Timesheet.json | 3622 ++++++++++++++ .../seeds/host/wizard/TimesheetMonthly.json | 4306 +++++++++++++++++ .../seeds/host/wizard/TimesheetPeriod.json | 1966 ++++++++ configs/seeds/host/wizard/Training.json | 8 +- .../host/wizard/TrainingParticipant.json | 10 +- configs/seeds/host/wizard/Vehicle.json | 2 +- configs/seeds/host/wizard/VehicleExpense.json | 2 +- .../host/wizard/VehicleExpenseDefinition.json | 2 +- .../seeds/host/wizard/VehicleMovement.json | 2 +- configs/seeds/host/wizard/Visitor.json | 2 +- configs/seeds/host/wizard/WorkCalendar.json | 12 +- ui/safelist.txt | 9 +- .../views/admin/user-management/Details.tsx | 29 + .../admin/user-management/HrRecordsTab.tsx | 37 + .../admin/user-management/TimesheetTab.tsx | 109 + .../admin/user-management/hrRecordTabs.ts | 30 + 90 files changed, 24121 insertions(+), 472 deletions(-) create mode 100644 configs/seeds/host/data/App.DeveloperKit.CustomComponents/1bca19aa-e144-5e4c-b23b-9eddd4dafd19.json create mode 100644 configs/seeds/host/docs/modules/HrAttendance.md create mode 100644 configs/seeds/host/sql/object/Hr_F_LeaveNetDays.sql create mode 100644 configs/seeds/host/sql/object/Hr_F_TimesheetPeriodClosed.sql create mode 100644 configs/seeds/host/sql/object/Hr_F_WorkCalendarDayType.sql create mode 100644 configs/seeds/host/sql/object/Hr_S_AttendanceImport.sql create mode 100644 configs/seeds/host/sql/object/Hr_S_AttendanceProcess.sql create mode 100644 configs/seeds/host/sql/object/Hr_S_LeaveDaysRefresh.sql create mode 100644 configs/seeds/host/sql/object/Hr_S_TimesheetCalculate.sql create mode 100644 configs/seeds/host/sql/object/Hr_S_TimesheetNightly.sql create mode 100644 configs/seeds/host/sql/object/Hr_S_TimesheetPeriodAfterSave.sql create mode 100644 configs/seeds/host/sql/object/Hr_S_TrainingSync.sql create mode 100644 configs/seeds/host/sql/object/Hr_S_WorkCalendarAfterSave.sql create mode 100644 configs/seeds/host/sql/object/Hr_T_AttendanceLog.sql create mode 100644 configs/seeds/host/sql/object/Hr_T_Timesheet.sql create mode 100644 configs/seeds/host/sql/object/Hr_T_TimesheetPeriod.sql create mode 100644 configs/seeds/host/sql/object/Hr_V_AttendanceShift.sql create mode 100644 configs/seeds/host/sql/object/Hr_V_TimesheetMonthly.sql create mode 100644 configs/seeds/host/wizard/AttendanceLog.json create mode 100644 configs/seeds/host/wizard/MyTimesheet.json create mode 100644 configs/seeds/host/wizard/MyTimesheetDay.json create mode 100644 configs/seeds/host/wizard/Timesheet.json create mode 100644 configs/seeds/host/wizard/TimesheetMonthly.json create mode 100644 configs/seeds/host/wizard/TimesheetPeriod.json create mode 100644 ui/src/views/admin/user-management/HrRecordsTab.tsx create mode 100644 ui/src/views/admin/user-management/TimesheetTab.tsx create mode 100644 ui/src/views/admin/user-management/hrRecordTabs.ts diff --git a/.github/instructions/lowcode-reference.instructions.md b/.github/instructions/lowcode-reference.instructions.md index 183c5eef..6930919e 100644 --- a/.github/instructions/lowcode-reference.instructions.md +++ b/.github/instructions/lowcode-reference.instructions.md @@ -1377,7 +1377,7 @@ listesinde `Hr` varsa görür (modül listesi boş kiracıda süzme yoktur — ` | **Definitions › Leave Type** | `App.Hr.LeaveType` | `Hr_T_LeaveType` | tenant | İzin türü: `Code`, `Name`, `Gender` (`All`/`Male`/`Female`), `MaxDaysPerYear`, `IsPaid`, `DeductsFromAnnualLeave`, `RequiresDocument`, `AllowHalfDay`, `BalanceExceedAction` (`Block`/`Warn`), `IsActive`. İzin Yönetimi'nin tür kuralları; `Sick` kodlu tür Sağlık Kartı istirahatiyle eşlenir. Wizard `wizard/LeaveType.json`, tablo `sql/object/Hr_T_LeaveType.sql`, seed `data/App.Hr.LeaveType.json` (Türkiye standart izin türleri). | | **Definitions › Expense Type** | `App.Hr.ExpenseType` | `Hr_T_ExpenseType` | tenant | Masraf türü: `Code`, `Name`, `DefaultAmount`, `CurrencyId` (`Sas_H_Currency` lookup'ı), `IsTaxable`, `IsSgkSubject`, `RequiresReceipt`, `IsActive`. Masraf beyanı ekranlarının lookup'ı. Wizard `wizard/ExpenseType.json`, tablo `sql/object/Hr_T_ExpenseType.sql`, seed `data/App.Hr.ExpenseType.json`. | | **Definitions › Benefit Type** | `App.Hr.BenefitType` | `Hr_T_BenefitType` | tenant | Yan hak türü: `Code`, `Name`, `DefaultAmount`, `CurrencyId`, `IsTaxable`, `IsSgkSubject`, `IsActive`. Kodu kullanıcının yan hak kaydında (`Adm_T_UserBenefit.BenefitType`, Identity › Users › Benefits) değer olarak saklanır; kod değiştirilirse eski kayıtlar eşleşmez. Wizard `wizard/BenefitType.json`, tablo `sql/object/Hr_T_BenefitType.sql`, seed `data/App.Hr.BenefitType.json`. | -| **Shift** | `App.Hr.Shift` | `Hr_T_Shift` | tenant | Vardiya: `Name`, `StartTime`/`EndTime` (`HH:mm`), `BreakMinutes`, `WorkingHours`, `IsNightShift`, `IsActive`. Seed `data/App.Hr.Shift.json`. | +| **Shift** | `App.Hr.Shift` | `Hr_T_Shift` | tenant | Vardiya: `Name`, `StartTime`/`EndTime` (`HH:mm`), `BreakMinutes`, `LateToleranceMinutes`/`EarlyLeaveToleranceMinutes` (boşsa Ayarlar › Puantaj), `WorkingHours`, `IsNightShift`, `IsActive`. Seed `data/App.Hr.Shift.json`. | | **Event Log** | `App.Hr.EventLog` | `Hr_T_EventLog` | tenant | Olay günlüğü: vardiya amiri / güvenlik odası / gözlem odası gibi kaynakların (`LogSource` statik lookup) gün içi kayıtları — `BranchId`, `UserId` (olayı yaşayan), `EventDate`/`EventTime`, `Importance`, `ShiftId` (`Hr_T_Shift`), `Description`. Wizard `wizard/EventLog.json`, tablo `sql/object/Hr_T_EventLog.sql`. | | **Trainings › Training Type / Subject** | `App.Hr.TrainingType` · `App.Hr.TrainingSubject` | `Hr_T_TrainingType` · `Hr_T_TrainingSubject` | tenant | Eğitim türü (`Name`, `IsActive`) ve konusu (`TrainingTypeId`, `Name`, `IsEvaluated`, `IsActive`). Wizard; seed `data/App.Hr.{TrainingType,TrainingSubject}.json`. | | **Trainings › Training** | `App.Hr.Training` (alt formlar `App.Hr.TrainingParticipant`, `App.Hr.TrainingFile`) | `Hr_T_Training` · `Hr_T_TrainingParticipant` · `Hr_T_TrainingFile` | tenant | Eğitim kaydı: tür → konu cascade (`TrainingSubjectId` ← `TrainingTypeId`), şube, tarih/saat + `TotalHours`, `Status` (`Open`/`Closed`), eğitmen/yer/kurum, kazandırdığı yetkinlikler (`SkillIds` — `dxTagBox`, `Hr_T_Skill`), maliyet kalemleri + `CostTotal`. Katılımcı alt formu kullanıcıyı `AbpUsers`'tan seçer, `HireDate`/`DepartmentId`/`JobPositionId` kopyalanır; `AttendanceStatus`, değerlendirme/sınav puanı. Dosya alt formu `DocumentTypeId` (`Hr_T_DocumentType`) taşır. Katılım belgesi `Raporlar` kategorisindeki "Katılım Belgesi" şablonudur (`App.Hr.TrainingParticipant`). Wizard. | @@ -1397,6 +1397,7 @@ listesinde `Hr` varsa görür (modül listesi boş kiracıda süzme yoktur — ` | **Recruitment › Job Offer** | `App.Hr.JobOffer` | `Hr_T_JobOffer` | tenant | Teklif: `OfferNo` (`TKL-…`), başvuru seçilince pozisyon bilgileri ilandan `copy` ile dolar, brüt ücret + para birimi, yan haklar (`Hr_T_BenefitType` kodları), `Status` (`Draft`/`Sent`/`Accepted`/`Declined`/`Expired`, yanıt tarihi otomatik). İç onay **Grid Workflow** (Kadro Talebi ile aynı akış). Onaylı satırda **Teklif Mektubu** butonu (`DynamicReport`, `Raporlar` kategorisi). Wizard. | | **Performance Management** | `App.Hr.Performance` dalı (yalnız İK): `PerformancePeriod`, `PerformanceReview`, `PerformanceCalibration`, `DevelopmentPlan`; tanım `App.Hr.PerformanceRating` (İK › Tanımlar). Çalışana ait `MyPerformanceReview`, `TeamPerformanceReview`, `My360Feedback` menüsüzdür; Intranet › Dashboard'daki custom widget'lardan (`MyPerformanceWidget`, `TeamPerformanceWidget`, `My360FeedbackWidget`) açılır | `Hr_T_PerformanceRating` · `Hr_T_PerformancePeriod` · `Hr_T_PerformancePeriodSkill` · `Hr_T_PerformanceReview` · `Hr_T_PerformanceGoal` · `Hr_T_PerformanceCompetency` · `Hr_T_PerformanceFeedback` · `Hr_T_PerformanceFeedbackScore` · `Hr_T_DevelopmentPlan` | tenant | Dönem → değerlendirme (hedef KPI/OKR + yetkinlik `Hr_T_Skill`/`Hr_T_SkillLevel` + isteğe bağlı 360) → kalibrasyon → gelişim planı. **Aynı tabloya persona ekranları**: İK (tümü), çalışan (`EmployeeId = '@USERID'`), yönetici (`ManagerId = '@USERID'`), 360 değerlendiricisi (`ReviewerId = '@USERID'`); kilitli alanlar İK ekranının yetkisine bağlıdır (sunucu düşürür), satır sahipliği ve aşama kuralı `Hr_S_PerformanceGuard` (before-command). Hesap ve durum geçişi `Hr_S_PerformanceReviewRecalc` / `Hr_S_PerformanceReviewAfterSave`; tamamlanan değerlendirme `Adm_T_UserSkill`'e yazar. Widget'lar veriyi ekranın kendi sorgusundan (`list-form-select/select`) okur. Çalışma şekli ve kararlar: `configs/seeds/host/docs/modules/HrPerformance.md`. Wizard + Custom Component (pano kutusu). | | **Leave Management** | `App.Hr.Leave` dalı (yalnız İK): `LeaveRequest` (Grid Workflow: Müdür Onayı `@ManagerUserNames` → İK Onayı; üst pozisyonu olmayan çalışanda müdür adımı `RequiresManagerApproval` karşılaştırmasıyla atlanır), `LeaveBalance` (alt formlar `LeaveBalanceAdjustment`, `LeaveBalanceYear`). Çalışana ait `MyLeaveRequest`, `MyLeaveBalance` ve müdüre ait `TeamLeaveRequest` menüsüzdür; Intranet › Dashboard'daki `MyLeaveWidget` / `TeamLeaveWidget`'tan açılır; kullanıcı detayında **İzinler** sekmesi | `Hr_T_LeaveRequest` · `Hr_T_LeaveBalanceAdjustment` · görünümler `Hr_V_LeaveBalanceYear` · `Hr_V_LeaveSummary` | tenant | Gün sayısı `Hr_F_LeaveWorkDays` (Ayarlar › İnsan Kaynakları › İzin çalışma günleri + `Hr_T_WorkCalendar`); bakiye İş Kanunu md.53 kademeleri (ayarlardan) + devir + düzeltme; müdür = departmanın en üst pozisyonunun sahibi. Doğrulama, müdür çözümü, rapor ↔ `Adm_T_UserSickLeave` eşlemesi ve bildirim `Hr_S_LeaveRequestAfterSave`; satır koruması `Hr_S_LeaveRequestGuard`; Sağlık Kartı tarafı `Hr_S_LeaveSickLeaveSync`. SQL'den ayar okuma `Hr_F_HrSetting` (kiracı → genel → varsayılan). Çalışma şekli: `configs/seeds/host/docs/modules/HrLeave.md`. Wizard + Custom Component + küçük UI/motor eki. | +| **Timesheet & Attendance** | `App.Hr.Attendance` dalı (yalnız İK): `AttendanceLog` (ham okutma; Excel import), `Timesheet` (çalışan × gün; düzenlenen gün `IsManual`), `TimesheetMonthly` (salt okunur aylık özet, alt form `Timesheet` `Id → PeriodKey`), `TimesheetPeriod` (ay yeniden hesap / kapanış). Çalışana ait `MyTimesheet` (+ alt form `MyTimesheetDay`) menüsüzdür; Intranet › Dashboard'daki `MyTimesheetWidget`'tan açılır; kullanıcı detayında **Puantaj** sekmesi | `Hr_T_AttendanceLog` · `Hr_T_Timesheet` · `Hr_T_TimesheetPeriod` · görünümler `Hr_V_AttendanceShift` · `Hr_V_TimesheetMonthly` | tenant | Hesap `Hr_S_TimesheetCalculate` (gün tipi: rapor > ücretsiz izin > `Hr_T_WorkCalendar` tatili > hafta tatili (İzin çalışma günü ayarları) > ücretli izin > okutma > eğitim katılımı (`Training`) > varsayılan çalışma / devamsız; izinli günde `LeaveTypeId`, eğitim gününde `TrainingId`; mola `MAX(vardiya, okutulan)`; geç/erken vardiya toleransı aşılırsa tamamı; fazla mesai haftalık 45 saati aşan kısım + tatil çalışması). Kişi eşlemesi `AbpUsers.PdksCardNo` / `RegistrationNo`; kartı olan çalışan ilk PDKS okutmasından itibaren okutmayla, diğerleri elle (kayıtsız gün `IsAssumed`) takip edilir. Tetikler: hareket kaydı `Hr_S_AttendanceProcess`, PDKS Custom Endpoint `Hr_S_AttendanceImport` (`/hr/attendance/`), dönem `Hr_S_TimesheetPeriodAfterSave`, gece işi `Hr_S_TimesheetNightly`, izin/rapor prosedürleri, `Hr_S_TrainingSync`, `Hr_S_WorkCalendarAfterSave`. Modüller arası çakışma kuralları (raporlu gün devamsız değildir, rapora denk gelen izin günü bakiyeye döner, kapalı aya izin/rapor yazılmaz) `HrAttendance.md` §7.1'dedir. Ayarlar `App.HrSettings.Attendance.*`. Çalışma şekli: `configs/seeds/host/docs/modules/HrAttendance.md`. Wizard + Custom Component + Custom Endpoint + zamanlanmış iş + küçük UI eki. | | **Org Chart** | `App.Hr.OrgChart` · `/admin/organization` | `Hr_T_Department` · `Hr_T_JobPosition` | tenant | Departman/ünvan verisinin organizasyon şeması görünümü (özel React sayfası `hr/OrgChart`, veri `api/app/org-chart`). Menü ve route aynı yetkiyi ister. | | **Intranet › Announcement** | `App.Hr.Intranet.Announcement` (alt formlar Like/Comment) | `Hr_T_Announcement` · `Hr_T_AnnouncementLike` · `Hr_T_AnnouncementComment` | tenant | Duyuru + beğeni + yorum: **ana kayıt / alt etkileşim** kalıbının hazır örneği. | | **Intranet › Survey** | `App.Hr.Intranet.Survey` (alt form Question → Option; Response → Answer) | `Hr_T_Survey` · `Hr_T_SurveyQuestion` · `Hr_T_SurveyQuestionOption` · `Hr_T_SurveyResponse` · `Hr_T_SurveyAnswer` | tenant | Anket motoru; soru–seçenek–yanıt zinciri **iki seviyeli alt form** ihtiyacının referansıdır. | @@ -1516,6 +1517,7 @@ alanları da doldurur (`lowcode` §0.9). | "işe alım, kadro talebi, ilan, aday / CV, mülakat, teklif" | İK › Recruitment | Var olan `Hr_T_StaffRequest` / `Hr_T_JobPosting` / `Hr_T_Candidate` / `Hr_T_JobApplication` / `Hr_T_Interview` / `Hr_T_JobOffer` ekranını genişlet; personel kullanıcısını BT elle açar, aday kaydına `UserId` ile bağlanır | | "performans değerlendirme, hedef / KPI / OKR, yetkinlik değerlendirmesi, 360, kalibrasyon, gelişim planı" | İK › Performance Management | Var olan `Hr_T_Performance*` / `Hr_T_DevelopmentPlan` ekranını genişlet; yeni persona ekranı aynı tabloya `DefaultFilter` + `Hr_S_PerformanceGuard` ile açılır (`configs/seeds/host/docs/modules/HrPerformance.md`) | | "izin talebi, izin onayı, izin bakiyesi, yıllık izin hakkı, rapor/istirahat izni" | İK › Leave Management | Var olan `Hr_T_LeaveRequest` ekranını genişlet; persona ekranı aynı tabloya `DefaultFilter` + `Hr_S_LeaveRequestGuard` ile açılır, bakiye `Hr_V_LeaveSummary`'den okunur (`configs/seeds/host/docs/modules/HrLeave.md`) | +| "puantaj, devam takibi, PDKS, giriş-çıkış, geç kalma, fazla mesai, devamsızlık" | İK › Timesheet & Attendance | Var olan `Hr_T_AttendanceLog` / `Hr_T_Timesheet` ekranlarını genişlet; hesap `Hr_S_TimesheetCalculate`'te tek yerdedir, kural değişikliği oraya yazılır (`configs/seeds/host/docs/modules/HrAttendance.md`) | | "yapay zekâ cevaplasın" | Saas › Definitions › AiBot | Bot tanımı; `/admin/ai` bu tanımı kullanır | ### 12.7 Canlı referans uygulamalar diff --git a/README.md b/README.md index 60f11926..36e52aee 100644 --- a/README.md +++ b/README.md @@ -949,6 +949,9 @@ custom component ile üretilmiştir: İK menüsü şartları ve takibi taşır, Intranet panosundaki widget'lardan açılır; çalışma şekli [HrPerformance.md](configs/seeds/host/docs/modules/HrPerformance.md). **İzin Yönetimi** (`App.Hr.Leave`) aynı kalıptadır (talep, Müdür → İK Grid Workflow onayı, İş Kanunu md.53 bakiyesi, rapor ↔ Sağlık Kartı eşlemesi, kullanıcı detayında İzinler sekmesi); çalışma şekli [HrLeave.md](configs/seeds/host/docs/modules/HrLeave.md). +**Puantaj ve Devam Takibi** (`App.Hr.Attendance`) hareketlerden (PDKS ucu, Excel, elle) günlük ve aylık puantaj kurar; +izin, rapor, çalışma takvimi ve vardiyadan beslenir, kullanıcı detayında Puantaj sekmesi ve Intranet'te Puantajım widget'ı vardır; +çalışma şekli [HrAttendance.md](configs/seeds/host/docs/modules/HrAttendance.md). **Yetki kodları** `PlatformConsts.AppCodes` içinde merkezî olarak tanımlıdır ve `configs/seeds/host/data/Abp.Identity.Permissions.json` ile seed edilir (gruplar: @@ -1216,6 +1219,7 @@ başlığındaki ⓘ simgesi ise ekranın kendi ayrıntılı açıklamasını g | Performans Yönetimi | İK › Performans Yönetimi (`App.Hr.Performance`) | [HrPerformance.md](configs/seeds/host/docs/modules/HrPerformance.md) | | İşe Alım | İK › İşe Alım (`App.Hr.Recruitment`) | [HrRecruitment.md](configs/seeds/host/docs/modules/HrRecruitment.md) | | İzin Yönetimi | İK › İzin Yönetimi (`App.Hr.Leave`) | [HrLeave.md](configs/seeds/host/docs/modules/HrLeave.md) | +| Puantaj ve Devam Takibi | İK › Puantaj ve Devam Takibi (`App.Hr.Attendance`) | [HrAttendance.md](configs/seeds/host/docs/modules/HrAttendance.md) | | Eğitimler | İK › Eğitimler (`App.Hr.Trainings`) | [HrTrainings.md](configs/seeds/host/docs/modules/HrTrainings.md) | | Araçlar | İK › Araçlar (`App.Hr.Vehicles`) | [HrVehicles.md](configs/seeds/host/docs/modules/HrVehicles.md) | | Disiplin Dosyaları | İK › Disiplin Dosyaları (`App.Hr.DisciplinaryCase`) | [HrDisciplinaryCase.md](configs/seeds/host/docs/modules/HrDisciplinaryCase.md) | diff --git a/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs b/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs index e2cf6f70..8f547288 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs @@ -4465,7 +4465,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep }), InsertAfterCommand = "EXEC dbo.Hr_S_LeaveSickLeaveSync @Id, @CreatorId", UpdateAfterCommand = "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Adm_T_UserSickLeave WHERE Id IN @Id); EXEC dbo.Hr_S_LeaveSickLeaveSync @_id, @LastModifierId", - DeleteAfterCommand = "UPDATE Hr_T_LeaveRequest SET IsDeleted = 1, DeletionTime = GETUTCDATE(), DeleterId = @DeleterId WHERE SickLeaveId IN @Id AND IsDeleted = 0", + DeleteAfterCommand = "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Adm_T_UserSickLeave WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_LeaveSickLeaveSync @_id, @DeleterId; END", EditingOptionJson = DefaultEditingOptionJson(listFormName, 700, 450, true, true, true, true, false), EditingFormJson = JsonSerializer.Serialize(new List { diff --git a/configs/seeds/host/data/Abp.Identity.Permissions.json b/configs/seeds/host/data/Abp.Identity.Permissions.json index e79a5286..db171f5a 100644 --- a/configs/seeds/host/data/Abp.Identity.Permissions.json +++ b/configs/seeds/host/data/Abp.Identity.Permissions.json @@ -4509,7 +4509,7 @@ "Name": "App.Hr.SkillType", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.SkillType", - "Order": 1, + "Order": 3, "IsEnabled": true, "MultiTenancySide": 2, "Modules": "Sas|Hr" @@ -4579,7 +4579,7 @@ "Name": "App.Hr.SkillLevel", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.SkillLevel", - "Order": 2, + "Order": 4, "IsEnabled": true, "MultiTenancySide": 2, "Modules": "Sas|Hr" @@ -4639,7 +4639,7 @@ "Name": "App.Hr.Skill", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.Skill", - "Order": 3, + "Order": 5, "IsEnabled": true, "MultiTenancySide": 2, "Modules": "Sas|Hr" @@ -4699,7 +4699,7 @@ "Name": "App.Hr.Department", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.Department", - "Order": 4, + "Order": 1, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -4759,7 +4759,7 @@ "Name": "App.Hr.JobPosition", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.JobPosition", - "Order": 5, + "Order": 2, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -4819,7 +4819,7 @@ "Name": "App.Hr.OrgChart", "ParentName": null, "DisplayName": "App.Hr.OrgChart", - "Order": 3, + "Order": 2, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -4829,7 +4829,7 @@ "Name": "App.Hr.Doctor", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.Doctor", - "Order": 6, + "Order": 15, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -4899,7 +4899,7 @@ "Name": "App.Hr.Certificate", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.Certificate", - "Order": 7, + "Order": 6, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -4969,7 +4969,7 @@ "Name": "App.Hr.Hospital", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.Hospital", - "Order": 8, + "Order": 16, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -5039,7 +5039,7 @@ "Name": "App.Hr.HospitalDepartment", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.HospitalDepartment", - "Order": 9, + "Order": 17, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -5109,7 +5109,7 @@ "Name": "App.Hr.DocumentType", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.DocumentType", - "Order": 10, + "Order": 7, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -5179,7 +5179,7 @@ "Name": "App.Hr.Visitor", "ParentName": null, "DisplayName": "App.Hr.Visitor", - "Order": 4, + "Order": 19, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -5739,7 +5739,7 @@ "Name": "App.Hr.HealthCard", "ParentName": null, "DisplayName": "App.Hr.HealthCard", - "Order": 12, + "Order": 11, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -5809,7 +5809,7 @@ "Name": "App.Hr.Trainings", "ParentName": null, "DisplayName": "App.Hr.Trainings", - "Order": 13, + "Order": 12, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -6169,7 +6169,7 @@ "Name": "App.Hr.Vehicles", "ParentName": null, "DisplayName": "App.Hr.Vehicles", - "Order": 14, + "Order": 18, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -6319,7 +6319,7 @@ "Name": "App.Hr.Vehicle", "ParentName": "App.Hr.Vehicles", "DisplayName": "App.Hr.Vehicle", - "Order": 2, + "Order": 4, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -6669,7 +6669,7 @@ "Name": "App.Hr.Driver", "ParentName": "App.Hr.Vehicles", "DisplayName": "App.Hr.Driver", - "Order": 4, + "Order": 5, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -6739,7 +6739,7 @@ "Name": "App.Hr.VehicleExpenseDefinition", "ParentName": "App.Hr.Vehicles", "DisplayName": "App.Hr.VehicleExpenseDefinition", - "Order": 5, + "Order": 2, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -6879,7 +6879,7 @@ "Name": "App.Hr.VehicleExpense", "ParentName": "App.Hr.Vehicles", "DisplayName": "App.Hr.VehicleExpense", - "Order": 6, + "Order": 7, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -6949,7 +6949,7 @@ "Name": "App.Hr.VehicleMovement", "ParentName": "App.Hr.Vehicles", "DisplayName": "App.Hr.VehicleMovement", - "Order": 7, + "Order": 6, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -7019,7 +7019,7 @@ "Name": "App.Hr.Shift", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.Shift", - "Order": 11, + "Order": 13, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -7089,7 +7089,7 @@ "Name": "App.Hr.EventLog", "ParentName": null, "DisplayName": "App.Hr.EventLog", - "Order": 15, + "Order": 20, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -7159,7 +7159,7 @@ "Name": "App.Hr.Intranet", "ParentName": null, "DisplayName": "App.Hr.Intranet", - "Order": 16, + "Order": 21, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -7169,7 +7169,7 @@ "Name": "App.Hr.Intranet.Announcement", "ParentName": "App.Hr.Intranet", "DisplayName": "App.Hr.Intranet.Announcement", - "Order": 1, + "Order": 3, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -7369,7 +7369,7 @@ "Name": "App.Hr.Intranet.Survey", "ParentName": "App.Hr.Intranet", "DisplayName": "App.Hr.Intranet.Survey", - "Order": 2, + "Order": 4, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -7709,7 +7709,7 @@ "Name": "App.Hr.Intranet.SocialPost", "ParentName": "App.Hr.Intranet", "DisplayName": "App.Hr.Intranet.SocialPost", - "Order": 3, + "Order": 5, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -8029,7 +8029,7 @@ "Name": "App.Hr.Intranet.Events.EventType", "ParentName": "App.Hr.Intranet", "DisplayName": "App.Hr.Intranet.Events.EventType", - "Order": 4, + "Order": 1, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -8089,7 +8089,7 @@ "Name": "App.Hr.Intranet.Events.EventCategory", "ParentName": "App.Hr.Intranet", "DisplayName": "App.Hr.Intranet.Events.EventCategory", - "Order": 5, + "Order": 2, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -8389,7 +8389,7 @@ "Name": "App.Hr.LeaveType", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.LeaveType", - "Order": 12, + "Order": 14, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -8459,7 +8459,7 @@ "Name": "App.Hr.ExpenseType", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.ExpenseType", - "Order": 13, + "Order": 11, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -8529,7 +8529,7 @@ "Name": "App.Hr.BenefitType", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.BenefitType", - "Order": 14, + "Order": 12, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -8599,7 +8599,7 @@ "Name": "App.Hr.WorkCalendar", "ParentName": null, "DisplayName": "App.Hr.WorkCalendar", - "Order": 2, + "Order": 4, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -8669,7 +8669,7 @@ "Name": "App.Hr.DisciplinaryPenaltyType", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.DisciplinaryPenaltyType", - "Order": 15, + "Order": 19, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -9019,7 +9019,7 @@ "Name": "App.Hr.Recruitment", "ParentName": null, "DisplayName": "App.Hr.Recruitment", - "Order": 18, + "Order": 3, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -9029,7 +9029,7 @@ "Name": "App.Hr.CandidateSource", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.CandidateSource", - "Order": 16, + "Order": 8, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -9099,7 +9099,7 @@ "Name": "App.Hr.RejectionReason", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.RejectionReason", - "Order": 17, + "Order": 9, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -9169,7 +9169,7 @@ "Name": "App.Hr.EvaluationCriterion", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.EvaluationCriterion", - "Order": 18, + "Order": 10, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -9729,7 +9729,7 @@ "Name": "App.Hr.PerformanceRating", "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.PerformanceRating", - "Order": 19, + "Order": 18, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -9869,7 +9869,7 @@ "Name": "App.Hr.Performance", "ParentName": null, "DisplayName": "App.Hr.Performance", - "Order": 20, + "Order": 13, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -10579,7 +10579,7 @@ "Name": "App.Hr.MyPerformanceReview", "ParentName": null, "DisplayName": "App.Hr.MyPerformanceReview", - "Order": 21, + "Order": 14, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -10859,7 +10859,7 @@ "Name": "App.Hr.TeamPerformanceReview", "ParentName": null, "DisplayName": "App.Hr.TeamPerformanceReview", - "Order": 22, + "Order": 15, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -10999,7 +10999,7 @@ "Name": "App.Hr.My360Feedback", "ParentName": null, "DisplayName": "App.Hr.My360Feedback", - "Order": 23, + "Order": 16, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -11209,7 +11209,7 @@ "Name": "App.Hr.Leave", "ParentName": null, "DisplayName": "App.Hr.Leave", - "Order": 24, + "Order": 5, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -11499,7 +11499,7 @@ "Name": "App.Hr.MyLeaveRequest", "ParentName": null, "DisplayName": "App.Hr.MyLeaveRequest", - "Order": 25, + "Order": 6, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -11569,7 +11569,7 @@ "Name": "App.Hr.MyLeaveBalance", "ParentName": null, "DisplayName": "App.Hr.MyLeaveBalance", - "Order": 26, + "Order": 7, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -11639,7 +11639,7 @@ "Name": "App.Hr.TeamLeaveRequest", "ParentName": null, "DisplayName": "App.Hr.TeamLeaveRequest", - "Order": 27, + "Order": 8, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" @@ -11723,6 +11723,446 @@ "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.Attendance", + "ParentName": null, + "DisplayName": "App.Hr.Attendance", + "Order": 9, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Administration", + "Name": "App.HrSettings.Attendance", + "ParentName": "App.HrSettings", + "DisplayName": "App.HrSettings.Attendance", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.AttendanceLog", + "ParentName": "App.Hr.Attendance", + "DisplayName": "App.Hr.AttendanceLog", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.AttendanceLog.Create", + "ParentName": "App.Hr.AttendanceLog", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.AttendanceLog.Update", + "ParentName": "App.Hr.AttendanceLog", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.AttendanceLog.Delete", + "ParentName": "App.Hr.AttendanceLog", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.AttendanceLog.Export", + "ParentName": "App.Hr.AttendanceLog", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.AttendanceLog.Import", + "ParentName": "App.Hr.AttendanceLog", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.AttendanceLog.Note", + "ParentName": "App.Hr.AttendanceLog", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.Timesheet", + "ParentName": "App.Hr.Attendance", + "DisplayName": "App.Hr.Timesheet", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.Timesheet.Create", + "ParentName": "App.Hr.Timesheet", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.Timesheet.Update", + "ParentName": "App.Hr.Timesheet", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.Timesheet.Delete", + "ParentName": "App.Hr.Timesheet", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.Timesheet.Export", + "ParentName": "App.Hr.Timesheet", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.Timesheet.Import", + "ParentName": "App.Hr.Timesheet", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.Timesheet.Note", + "ParentName": "App.Hr.Timesheet", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetMonthly", + "ParentName": "App.Hr.Attendance", + "DisplayName": "App.Hr.TimesheetMonthly", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetMonthly.Create", + "ParentName": "App.Hr.TimesheetMonthly", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetMonthly.Update", + "ParentName": "App.Hr.TimesheetMonthly", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetMonthly.Delete", + "ParentName": "App.Hr.TimesheetMonthly", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetMonthly.Export", + "ParentName": "App.Hr.TimesheetMonthly", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetMonthly.Import", + "ParentName": "App.Hr.TimesheetMonthly", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetMonthly.Note", + "ParentName": "App.Hr.TimesheetMonthly", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetPeriod", + "ParentName": "App.Hr.Attendance", + "DisplayName": "App.Hr.TimesheetPeriod", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetPeriod.Create", + "ParentName": "App.Hr.TimesheetPeriod", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetPeriod.Update", + "ParentName": "App.Hr.TimesheetPeriod", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetPeriod.Delete", + "ParentName": "App.Hr.TimesheetPeriod", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetPeriod.Export", + "ParentName": "App.Hr.TimesheetPeriod", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetPeriod.Import", + "ParentName": "App.Hr.TimesheetPeriod", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.TimesheetPeriod.Note", + "ParentName": "App.Hr.TimesheetPeriod", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheet", + "ParentName": null, + "DisplayName": "App.Hr.MyTimesheet", + "Order": 10, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheet.Create", + "ParentName": "App.Hr.MyTimesheet", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheet.Update", + "ParentName": "App.Hr.MyTimesheet", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheet.Delete", + "ParentName": "App.Hr.MyTimesheet", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheet.Export", + "ParentName": "App.Hr.MyTimesheet", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheet.Import", + "ParentName": "App.Hr.MyTimesheet", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheet.Note", + "ParentName": "App.Hr.MyTimesheet", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheetDay", + "ParentName": "App.Hr.MyTimesheet", + "DisplayName": "App.Hr.MyTimesheetDay", + "Order": 7, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheetDay.Create", + "ParentName": "App.Hr.MyTimesheetDay", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheetDay.Update", + "ParentName": "App.Hr.MyTimesheetDay", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheetDay.Delete", + "ParentName": "App.Hr.MyTimesheetDay", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheetDay.Export", + "ParentName": "App.Hr.MyTimesheetDay", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheetDay.Import", + "ParentName": "App.Hr.MyTimesheetDay", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" + }, + { + "GroupName": "App.Hr", + "Name": "App.Hr.MyTimesheetDay.Note", + "ParentName": "App.Hr.MyTimesheetDay", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Sas|Hr" } ] } diff --git a/configs/seeds/host/data/App.BackgroundWorkers.RecurringJobs.json b/configs/seeds/host/data/App.BackgroundWorkers.RecurringJobs.json index 6d360fd6..c21414ba 100644 --- a/configs/seeds/host/data/App.BackgroundWorkers.RecurringJobs.json +++ b/configs/seeds/host/data/App.BackgroundWorkers.RecurringJobs.json @@ -52,6 +52,16 @@ "BeforeSp": null, "AfterSp": null, "IsActive": true + }, + { + "Id": "34037693-7614-5ffe-a4ac-42d95bd68faa", + "Name": "Timesheet Nightly", + "Cron": "0 2 * * *", + "WorkerType": 2, + "Scope": 3, + "BeforeSp": "Hr_S_TimesheetNightly", + "AfterSp": null, + "IsActive": true } ] } diff --git a/configs/seeds/host/data/App.DeveloperKit.CustomComponents/1bca19aa-e144-5e4c-b23b-9eddd4dafd19.json b/configs/seeds/host/data/App.DeveloperKit.CustomComponents/1bca19aa-e144-5e4c-b23b-9eddd4dafd19.json new file mode 100644 index 00000000..f8a98b5e --- /dev/null +++ b/configs/seeds/host/data/App.DeveloperKit.CustomComponents/1bca19aa-e144-5e4c-b23b-9eddd4dafd19.json @@ -0,0 +1,29 @@ +{ + "ListFormCode": "App.DeveloperKit.CustomComponents", + "KeyFieldName": "Id", + "GeneratedAt": "2026-10-05T06:00:00Z", + "Order": 0, + "Rows": [ + { + "Id": "1bca19aa-e144-5e4c-b23b-9eddd4dafd19", + "Name": "MyTimesheetWidget", + "RoutePath": null, + "Description": "Intranet panosu: çalışanın aylık puantajı (seçilen ay) ve yıllık toplamı, fazla mesai sınırı; Puantajım bağlantısı", + "IsActive": true, + "Dependencies": [], + "Code": "// Calisanin kendi puantaj ozeti. Veri Puantajim ekraninin sorgusundan okunur: satir suzmesi\n// (EmployeeId = oturum acan kullanici) ve yetki ListForm'da kalir, bilesen yalnizca toplar.\nconst MONTHLY = 'App.Hr.MyTimesheet'\n\nconst loadMonths = async () => {\n const response = await apiService.fetchData({\n method: 'GET',\n url: '/api/app/list-form-select/select',\n params: { listFormCode: MONTHLY, take: 500 },\n })\n return response.data?.data ?? []\n}\n\nconst num = (value) => Number(value ?? 0)\nconst format = (value) => {\n const number = num(value)\n return Number.isInteger(number) ? String(number) : number.toFixed(1)\n}\nconst sum = (rows, field) => rows.reduce((total, row) => total + num(row[field]), 0)\nconst periodOf = (row) => num(row.PeriodYear) * 100 + num(row.PeriodMonth)\nconst periodLabel = (period) => `${String(period % 100).padStart(2, '0')}.${Math.floor(period / 100)}`\n\nconst Stat = ({ label, value, className }) => (\n
\n
{value}
\n
{label}
\n
\n)\n\nconst MyTimesheetWidget = () => {\n const [rows, setRows] = useState([])\n const [period, setPeriod] = useState(0)\n const [loading, setLoading] = useState(true)\n\n useEffect(() => {\n let active = true\n loadMonths()\n .then((data) => {\n if (!active) return\n const now = new Date()\n const current = now.getFullYear() * 100 + now.getMonth() + 1\n const periods = data.map(periodOf)\n setRows(data)\n setPeriod(periods.includes(current) ? current : Math.max(current, ...periods))\n })\n .catch(() => {})\n .finally(() => active && setLoading(false))\n return () => {\n active = false\n }\n }, [])\n\n const t = (key, params) => translate(`::App.DashboardWidget.Timesheet.${key}`, params)\n const periods = [...new Set(rows.map(periodOf))].sort((a, b) => b - a)\n const month = rows.find((row) => periodOf(row) === period) ?? {}\n const yearRows = rows.filter((row) => num(row.PeriodYear) === Math.floor(period / 100))\n const yearOvertime = sum(yearRows, 'OvertimeHours')\n const limit = num(yearRows[0]?.AnnualOvertimeLimit) || 270\n const ratio = Math.min(100, Math.round((yearOvertime / limit) * 100))\n const barColor = ratio >= 100 ? 'bg-red-500' : ratio >= 80 ? 'bg-orange-500' : 'bg-indigo-500'\n\n return (\n
\n
\n
\n \n

\n {translate('::App.DashboardWidget.MyTimesheet')}\n

\n
\n {periods.length > 0 && (\n setPeriod(Number(event.target.value))}\n className=\"rounded-md border border-gray-300 bg-white px-2 py-1 text-xs text-gray-700 dark:border-gray-600 dark:bg-gray-900 dark:text-gray-200\"\n >\n {periods.map((value) => (\n \n ))}\n \n )}\n
\n
\n {loading ? (\n
...
\n ) : rows.length === 0 ? (\n
{t('NoData')}
\n ) : (\n <>\n
\n \n \n \n 0 ? 'text-orange-500' : 'text-gray-900 dark:text-white'}\n />\n 0 ? 'text-orange-500' : 'text-gray-900 dark:text-white'}\n />\n 0 ? 'text-red-600' : 'text-gray-900 dark:text-white'}\n />\n
\n
\n {t('LeaveDays', { days: format(month.LeaveDays) })}\n {t('SickDays', { days: format(month.SickDays) })}\n {t('HolidayDays', { days: format(num(month.HolidayDays) + num(month.WeeklyOffDays)) })}\n
\n
\n
\n {t('Year', { year: Math.floor(period / 100) })}\n
\n
\n
\n
{format(sum(yearRows, 'NetHours'))}
\n {t('NetHours')}\n
\n
\n
{format(sum(yearRows, 'LateMinutes'))}
\n {t('Late')}\n
\n
\n
{format(sum(yearRows, 'AbsentDays'))}
\n {t('Absent')}\n
\n
\n
\n {t('OvertimeLimit', { used: format(yearOvertime), limit: format(limit) })}\n
\n
\n
\n
\n
\n \n )}\n
\n \n {t('Open')}\n \n
\n
\n
\n )\n}\n\nexport default MyTimesheetWidget\n", + "Props": null, + "DataSources": [], + "SeoTitle": null, + "SeoDescription": null, + "SeoKeywords": null, + "SeoOgImage": null, + "SeoCanonicalUrl": null, + "SeoNoIndex": true, + "SeoIncludeInSitemap": false, + "SeoChangeFrequency": null, + "SeoPriority": null, + "SeoStructuredData": null + } + ] +} diff --git a/configs/seeds/host/data/App.DeveloperKit.CustomComponents/23744edc-eda9-512e-8079-fe2e8e5fd2a8.json b/configs/seeds/host/data/App.DeveloperKit.CustomComponents/23744edc-eda9-512e-8079-fe2e8e5fd2a8.json index f4b313a2..1cf344eb 100644 --- a/configs/seeds/host/data/App.DeveloperKit.CustomComponents/23744edc-eda9-512e-8079-fe2e8e5fd2a8.json +++ b/configs/seeds/host/data/App.DeveloperKit.CustomComponents/23744edc-eda9-512e-8079-fe2e8e5fd2a8.json @@ -11,7 +11,7 @@ "Description": "Intranet panosu: çalışanın izin bakiyesi, süren talepleri ve izin talebi/taleplerim/bakiyem bağlantıları", "IsActive": true, "Dependencies": [], - "Code": "// Calisanin kendi izin ozeti. Veri ekranlarin kendi sorgusundan okunur: satir suzmesi\n// (EmployeeId = oturum acan kullanici) ve yetki ListForm'da kalir, bilesen yalnizca toplar.\nconst REQUESTS = 'App.Hr.MyLeaveRequest'\nconst BALANCE = 'App.Hr.MyLeaveBalance'\nconst OPEN_STATUSES = ['Onaya Gönderildi', 'Müdür Onayı', 'İK Onayı']\n\nconst loadRows = async (listFormCode) => {\n const response = await apiService.fetchData({\n method: 'GET',\n url: '/api/app/list-form-select/select',\n params: { listFormCode, take: 500 },\n })\n return response.data?.data ?? []\n}\n\nconst formatDays = (value) => {\n const number = Number(value ?? 0)\n return Number.isInteger(number) ? String(number) : number.toFixed(1)\n}\n\nconst formatDate = (value) => {\n if (!value) return '-'\n const [year, month, day] = String(value).slice(0, 10).split('-')\n return `${day}.${month}.${year}`\n}\n\nconst Stat = ({ label, value, className }) => (\n
\n
{value}
\n
{label}
\n
\n)\n\nconst MyLeaveWidget = () => {\n const [requests, setRequests] = useState([])\n const [ledger, setLedger] = useState([])\n const [loading, setLoading] = useState(true)\n const canSeeBalance = checkPermission(BALANCE)\n\n useEffect(() => {\n let active = true\n Promise.all([loadRows(REQUESTS), canSeeBalance ? loadRows(BALANCE) : Promise.resolve([])])\n .then(([requestRows, ledgerRows]) => {\n if (!active) return\n setRequests(requestRows)\n setLedger(ledgerRows)\n })\n .catch(() => {})\n .finally(() => active && setLoading(false))\n return () => {\n active = false\n }\n }, [canSeeBalance])\n\n const sum = (field) => ledger.reduce((total, row) => total + Number(row[field] ?? 0), 0)\n const remaining = sum('RemainingDays')\n const hasSeniority = ledger.some((row) => Number(row.YearNo) > 0) || ledger.some((row) => row.NextAccrualDate)\n const next = ledger.find((row) => row.NextAccrualDate)\n const open = requests\n .filter((row) => !row.ApprovalStatus || OPEN_STATUSES.includes(row.ApprovalStatus))\n .sort((a, b) => String(a.StartDate).localeCompare(String(b.StartDate)))\n\n return (\n
\n
\n \n

\n {translate('::App.DashboardWidget.MyLeave')}\n

\n
\n
\n {loading ? (\n
...
\n ) : (\n <>\n {canSeeBalance && (\n <>\n
\n \n \n \n
\n {next ? (\n
\n {translate('::App.DashboardWidget.Leave.NextAccrual', {\n date: formatDate(next.NextAccrualDate),\n days: formatDays(next.NextAccrualDays),\n })}\n
\n ) : (\n !hasSeniority && (\n
\n {translate('::App.DashboardWidget.Leave.NoSeniority')}\n
\n )\n )}\n \n )}\n
\n
\n {translate('::App.DashboardWidget.Leave.OpenRequests')}\n
\n {open.length === 0 ? (\n
\n {translate('::App.DashboardWidget.Leave.NoOpenRequest')}\n
\n ) : (\n
    \n {open.slice(0, 3).map((row) => (\n \n \n {formatDate(row.StartDate)} – {formatDate(row.EndDate)} · {formatDays(row.Days)}{' '}\n {translate('::App.DashboardWidget.Leave.Days')}\n \n \n {row.ApprovalStatus}\n \n \n ))}\n
\n )}\n
\n \n )}\n
\n \n {translate('::App.DashboardWidget.Leave.CreateRequest')}\n \n \n {translate('::App.DashboardWidget.Leave.MyRequests')}\n \n {canSeeBalance && (\n \n {translate('::App.DashboardWidget.Leave.MyBalance')}\n \n )}\n
\n
\n
\n )\n}\n\nexport default MyLeaveWidget\n", + "Code": "// Calisanin kendi izin ozeti. Veri ekranlarin kendi sorgusundan okunur: satir suzmesi\n// (EmployeeId = oturum acan kullanici) ve yetki ListForm'da kalir, bilesen yalnizca toplar.\nconst REQUESTS = 'App.Hr.MyLeaveRequest'\nconst BALANCE = 'App.Hr.MyLeaveBalance'\nconst OPEN_STATUSES = ['Onaya Gönderildi', 'Müdür Onayı', 'İK Onayı']\n\nconst loadRows = async (listFormCode) => {\n const response = await apiService.fetchData({\n method: 'GET',\n url: '/api/app/list-form-select/select',\n params: { listFormCode, take: 500 },\n })\n return response.data?.data ?? []\n}\n\nconst formatDays = (value) => {\n const number = Number(value ?? 0)\n return Number.isInteger(number) ? String(number) : number.toFixed(1)\n}\n\nconst formatDate = (value) => {\n if (!value) return '-'\n const [year, month, day] = String(value).slice(0, 10).split('-')\n return `${day}.${month}.${year}`\n}\n\nconst Stat = ({ label, value, className }) => (\n
\n
{value}
\n
{label}
\n
\n)\n\nconst MyLeaveWidget = () => {\n const [requests, setRequests] = useState([])\n const [ledger, setLedger] = useState([])\n const [loading, setLoading] = useState(true)\n const canSeeBalance = checkPermission(BALANCE)\n\n useEffect(() => {\n let active = true\n Promise.all([loadRows(REQUESTS), canSeeBalance ? loadRows(BALANCE) : Promise.resolve([])])\n .then(([requestRows, ledgerRows]) => {\n if (!active) return\n setRequests(requestRows)\n setLedger(ledgerRows)\n })\n .catch(() => {})\n .finally(() => active && setLoading(false))\n return () => {\n active = false\n }\n }, [canSeeBalance])\n\n const sum = (field) => ledger.reduce((total, row) => total + Number(row[field] ?? 0), 0)\n const remaining = sum('RemainingDays')\n const hasSeniority = ledger.some((row) => Number(row.YearNo) > 0) || ledger.some((row) => row.NextAccrualDate)\n const next = ledger.find((row) => row.NextAccrualDate)\n const open = requests\n .filter((row) => !row.ApprovalStatus || OPEN_STATUSES.includes(row.ApprovalStatus))\n .sort((a, b) => String(a.StartDate).localeCompare(String(b.StartDate)))\n\n return (\n
\n
\n \n

\n {translate('::App.DashboardWidget.MyLeave')}\n

\n
\n
\n {loading ? (\n
...
\n ) : (\n <>\n {canSeeBalance && (\n <>\n
\n \n \n \n
\n {next ? (\n
\n {translate('::App.DashboardWidget.Leave.NextAccrual', {\n date: formatDate(next.NextAccrualDate),\n days: formatDays(next.NextAccrualDays),\n })}\n
\n ) : (\n !hasSeniority && (\n
\n {translate('::App.DashboardWidget.Leave.NoSeniority')}\n
\n )\n )}\n \n )}\n
\n
\n {translate('::App.DashboardWidget.Leave.OpenRequests')}\n
\n {open.length === 0 ? (\n
\n {translate('::App.DashboardWidget.Leave.NoOpenRequest')}\n
\n ) : (\n
    \n {open.slice(0, 3).map((row) => (\n \n \n {formatDate(row.StartDate)} – {formatDate(row.EndDate)} · {formatDays(row.Days)}{' '}\n {translate('::App.DashboardWidget.Leave.Days')}\n \n \n {row.ApprovalStatus}\n \n \n ))}\n
\n )}\n
\n \n )}\n
\n \n {translate('::App.DashboardWidget.Leave.CreateRequest')}\n \n \n {translate('::App.DashboardWidget.Leave.MyRequests')}\n \n {canSeeBalance && (\n \n {translate('::App.DashboardWidget.Leave.MyBalance')}\n \n )}\n
\n
\n
\n )\n}\n\nexport default MyLeaveWidget\n", "Props": null, "DataSources": [], "SeoTitle": null, diff --git a/configs/seeds/host/data/App.DeveloperKit.CustomComponents/3b7b16c6-aa96-5765-8e19-fe5e727feb52.json b/configs/seeds/host/data/App.DeveloperKit.CustomComponents/3b7b16c6-aa96-5765-8e19-fe5e727feb52.json index 96ad9275..68031066 100644 --- a/configs/seeds/host/data/App.DeveloperKit.CustomComponents/3b7b16c6-aa96-5765-8e19-fe5e727feb52.json +++ b/configs/seeds/host/data/App.DeveloperKit.CustomComponents/3b7b16c6-aa96-5765-8e19-fe5e727feb52.json @@ -11,7 +11,7 @@ "Description": "Intranet panosu: departman müdürünün onayını bekleyen izin talepleri ve bugün izinde olanlar", "IsActive": true, "Dependencies": [], - "Code": "// Departman muduru icin ekibin izin ozeti. Satirlar ekranin kendi sorgusundan gelir: liste\n// yalniz muduru oldugu departmanin taleplerini dondurur (ManagerIds suzmesi ListForm'da).\nconst REQUESTS = 'App.Hr.TeamLeaveRequest'\nconst MANAGER_STEP = 'Müdür Onayı'\nconst APPROVED = 'Onaylandı'\n\nconst loadRows = async (listFormCode) => {\n const response = await apiService.fetchData({\n method: 'GET',\n url: '/api/app/list-form-select/select',\n params: { listFormCode, take: 500 },\n })\n return response.data?.data ?? []\n}\n\nconst formatDays = (value) => {\n const number = Number(value ?? 0)\n return Number.isInteger(number) ? String(number) : number.toFixed(1)\n}\n\nconst formatDate = (value) => {\n if (!value) return '-'\n const [year, month, day] = String(value).slice(0, 10).split('-')\n return `${day}.${month}.${year}`\n}\n\nconst Stat = ({ label, value, className }) => (\n
\n
{value}
\n
{label}
\n
\n)\n\nconst TeamLeaveWidget = () => {\n const [rows, setRows] = useState([])\n const [loading, setLoading] = useState(true)\n\n useEffect(() => {\n let active = true\n loadRows(REQUESTS)\n .then((result) => active && setRows(result))\n .catch(() => {})\n .finally(() => active && setLoading(false))\n return () => {\n active = false\n }\n }, [])\n\n const today = new Date().toISOString().slice(0, 10)\n const awaiting = rows\n .filter((row) => row.ApprovalStatus === MANAGER_STEP)\n .sort((a, b) => String(a.StartDate).localeCompare(String(b.StartDate)))\n const onLeave = rows.filter(\n (row) =>\n row.ApprovalStatus === APPROVED &&\n String(row.StartDate).slice(0, 10) <= today &&\n String(row.EndDate).slice(0, 10) >= today,\n )\n\n return (\n
\n
\n \n

\n {translate('::App.DashboardWidget.TeamLeave')}\n

\n
\n
\n {loading ? (\n
...
\n ) : (\n <>\n
\n \n \n
\n {awaiting.length === 0 ? (\n
\n {translate('::App.DashboardWidget.Leave.NoPending')}\n
\n ) : (\n
    \n {awaiting.slice(0, 5).map((row) => (\n \n {row.EmployeeName}\n \n {formatDate(row.StartDate)} · {formatDays(row.Days)} {translate('::App.DashboardWidget.Leave.Days')}\n \n \n ))}\n
\n )}\n \n )}\n
\n \n {translate('::App.DashboardWidget.Leave.OpenApprovals')} →\n \n
\n
\n
\n )\n}\n\nexport default TeamLeaveWidget\n", + "Code": "// Departman muduru icin ekibin izin ozeti. Satirlar ekranin kendi sorgusundan gelir: liste\n// yalniz muduru oldugu departmanin taleplerini dondurur (ManagerIds suzmesi ListForm'da).\nconst REQUESTS = 'App.Hr.TeamLeaveRequest'\nconst MANAGER_STEP = 'Müdür Onayı'\nconst APPROVED = 'Onaylandı'\n\nconst loadRows = async (listFormCode) => {\n const response = await apiService.fetchData({\n method: 'GET',\n url: '/api/app/list-form-select/select',\n params: { listFormCode, take: 500 },\n })\n return response.data?.data ?? []\n}\n\nconst formatDays = (value) => {\n const number = Number(value ?? 0)\n return Number.isInteger(number) ? String(number) : number.toFixed(1)\n}\n\nconst formatDate = (value) => {\n if (!value) return '-'\n const [year, month, day] = String(value).slice(0, 10).split('-')\n return `${day}.${month}.${year}`\n}\n\nconst Stat = ({ label, value, className }) => (\n
\n
{value}
\n
{label}
\n
\n)\n\nconst TeamLeaveWidget = () => {\n const [rows, setRows] = useState([])\n const [loading, setLoading] = useState(true)\n\n useEffect(() => {\n let active = true\n loadRows(REQUESTS)\n .then((result) => active && setRows(result))\n .catch(() => {})\n .finally(() => active && setLoading(false))\n return () => {\n active = false\n }\n }, [])\n\n const today = new Date().toISOString().slice(0, 10)\n const awaiting = rows\n .filter((row) => row.ApprovalStatus === MANAGER_STEP)\n .sort((a, b) => String(a.StartDate).localeCompare(String(b.StartDate)))\n const onLeave = rows.filter(\n (row) =>\n row.ApprovalStatus === APPROVED &&\n String(row.StartDate).slice(0, 10) <= today &&\n String(row.EndDate).slice(0, 10) >= today,\n )\n\n return (\n
\n
\n \n

\n {translate('::App.DashboardWidget.TeamLeave')}\n

\n
\n
\n {loading ? (\n
...
\n ) : (\n <>\n
\n \n \n
\n {awaiting.length === 0 ? (\n
\n {translate('::App.DashboardWidget.Leave.NoPending')}\n
\n ) : (\n
    \n {awaiting.slice(0, 5).map((row) => (\n \n {row.EmployeeName}\n \n {formatDate(row.StartDate)} · {formatDays(row.Days)} {translate('::App.DashboardWidget.Leave.Days')}\n \n \n ))}\n
\n )}\n \n )}\n
\n \n {translate('::App.DashboardWidget.Leave.OpenApprovals')} →\n \n
\n
\n
\n )\n}\n\nexport default TeamLeaveWidget\n", "Props": null, "DataSources": [], "SeoTitle": null, diff --git a/configs/seeds/host/data/App.DeveloperKit.CustomEndpoints.json b/configs/seeds/host/data/App.DeveloperKit.CustomEndpoints.json index 8e275c4d..5f680c03 100644 --- a/configs/seeds/host/data/App.DeveloperKit.CustomEndpoints.json +++ b/configs/seeds/host/data/App.DeveloperKit.CustomEndpoints.json @@ -13,6 +13,17 @@ "Sql": "SELECT * FROM Sas_H_Language WHERE IsEnabled = @IsEnabled AND CultureName = @CultureName", "ParametersJson": "[{\"Type\":\"Path\",\"Name\":\"CultureName\",\"DefaultValue\":\"ar\",\"Path\":\"/dil/:CultureName/\",\"IsRequired\":false},{\"Type\":\"Static\",\"Name\":\"IsEnabled\",\"DefaultValue\":\"true\",\"Path\":null,\"IsRequired\":false}]", "PermissionsJson": "[{\"ResourceType\":\"User\",\"ResourceId\":\"system@sozsoft.com\"}]" + }, + { + "Id": "3c8b861f-abfa-5db3-8d93-8c1a08605ac5", + "Name": "HrAttendancePdks", + "Description": "PDKS hareket aktarımı: POST /api/app/custom-endpoint/hr/attendance/ { \"Items\": [{ \"CardNo\", \"UserName\", \"EventTime\", \"Direction\", \"DeviceCode\" }] }", + "Url": "/hr/attendance/", + "Method": "POST", + "DataSourceCode": "Default", + "Sql": "EXEC dbo.Hr_S_AttendanceImport @TenantId, @UserId, @Items", + "ParametersJson": "[{\"Type\":\"Static\",\"Name\":\"TenantId\",\"DefaultValue\":\"@TENANTID\",\"Path\":null,\"IsRequired\":false},{\"Type\":\"Static\",\"Name\":\"UserId\",\"DefaultValue\":\"@USERID\",\"Path\":null,\"IsRequired\":false},{\"Type\":\"Body\",\"Name\":\"Items\",\"DefaultValue\":\"\",\"Path\":null,\"IsRequired\":true}]", + "PermissionsJson": "[{\"ResourceType\":\"Role\",\"ResourceId\":\"PDKS\"}]" } ] } diff --git a/configs/seeds/host/data/App.DeveloperKit.IntranetWidgets.json b/configs/seeds/host/data/App.DeveloperKit.IntranetWidgets.json index cc1be4ee..9841d311 100644 --- a/configs/seeds/host/data/App.DeveloperKit.IntranetWidgets.json +++ b/configs/seeds/host/data/App.DeveloperKit.IntranetWidgets.json @@ -145,6 +145,19 @@ "Order": 36, "Props": "", "IsActive": true + }, + { + "Id": "23c5bd91-f801-5204-bee4-7fe62118f327", + "Code": "my-timesheet", + "Name": "My Timesheet", + "LabelKey": "App.DashboardWidget.MyTimesheet", + "SourceType": 1, + "ComponentName": "MyTimesheetWidget", + "PermissionName": "App.Hr.MyTimesheet", + "Column": 0, + "Order": 37, + "Props": "", + "IsActive": true } ] } diff --git a/configs/seeds/host/data/App.Languages.LanguageText.json b/configs/seeds/host/data/App.Languages.LanguageText.json index 21aa7808..3403060f 100644 --- a/configs/seeds/host/data/App.Languages.LanguageText.json +++ b/configs/seeds/host/data/App.Languages.LanguageText.json @@ -72823,14 +72823,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Hr.HealthCardSickLeave.Desc", - "Value": "Sick Leaves — the employee's sick leave records.\nWhere: the Sick Leaves tab of Health Cards.\nFields: start and end date, days (end inclusive, automatic), type (Disease, Work accident, Occupational disease, Maternity), institution, clinic, reason.\nSingle record: a report entered here appears in Human Resources › Leave Management as an approved leave request of type Sick, and a sick leave requested by the employee on the Intranet appears in this tab. Deleting the report removes the leave request too. Sick leave does not reduce the annual leave balance." + "Value": "Sick Leaves — the employee's sick leave records.\nWhere: the Sick Leaves tab of Health Cards.\nFields: start and end date, days (end inclusive, automatic), type (Disease, Work accident, Occupational disease, Maternity), institution, clinic, reason.\nSingle record: a report entered here appears in Human Resources › Leave Management as an approved leave request of type Sick, and a sick leave requested by the employee on the Intranet appears in this tab. Deleting the report removes the leave request too. Sick leave does not reduce the annual leave balance; annual leave days falling into the report return to the balance. The days are Sick in the timesheet; a report falling into a closed timesheet period cannot be saved." }, { "Id": "322c1d92-eb0c-5fa0-a288-e44e205392d0", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Hr.HealthCardSickLeave.Desc", - "Value": "İstirahat Raporları — çalışanın aldığı istirahat (rapor) kayıtları.\nNerede: Sağlık Kartları ekranında kaydın İstirahat Raporları sekmesi.\nAlanlar: başlangıç ve bitiş tarihi, gün (bitiş dahil, otomatik), istirahat türü (Hastalık, İş kazası, Meslek hastalığı, Doğum), kurum, klinik, neden.\nTek kayıt: buradan girilen rapor İnsan Kaynakları › İzin Yönetimi'nde Rapor (Sick) türünde onaylı izin talebi olarak görünür; çalışanın Intranet'ten girdiği rapor talebi de bu sekmeye düşer. Silinen rapor izin talebinden de kalkar. Rapor yıllık izin bakiyesinden düşmez." + "Value": "İstirahat Raporları — çalışanın aldığı istirahat (rapor) kayıtları.\nNerede: Sağlık Kartları ekranında kaydın İstirahat Raporları sekmesi.\nAlanlar: başlangıç ve bitiş tarihi, gün (bitiş dahil, otomatik), istirahat türü (Hastalık, İş kazası, Meslek hastalığı, Doğum), kurum, klinik, neden.\nTek kayıt: buradan girilen rapor İnsan Kaynakları › İzin Yönetimi'nde Rapor (Sick) türünde onaylı izin talebi olarak görünür; çalışanın Intranet'ten girdiği rapor talebi de bu sekmeye düşer. Silinen rapor izin talebinden de kalkar. Rapor yıllık izin bakiyesinden düşmez; rapora denk gelen yıllık izin günleri bakiyeye döner. Günler puantajda Raporlu yazılır; kapalı puantaj dönemine düşen rapor kaydedilemez." }, { "Id": "5eaec5c5-a0ef-5c61-b30c-5387475720e1", @@ -73047,14 +73047,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Hr.TrainingParticipant.Desc", - "Value": "Participants — employees attending a training and their attendance result.\nWhere: the Participants tab of a Training record (no menu entry).\nFields:\n• UserId → employee; hire date, department and position are copied (state at training time)\n• AttendanceStatus → Attended (default) / Not attended / Excused\n• Evaluation score, exam score, leave date, note\nButton: rows with Attended print the Attendance Certificate.\nRelated: Attended completes a linked development action in Performance Management." + "Value": "Participants — employees attending a training and their attendance result.\nWhere: the Participants tab of a Training record (no menu entry).\nFields:\n• UserId → employee; hire date, department and position are copied (state at training time)\n• AttendanceStatus → Attended (default) / Not attended / Excused\n• Evaluation score, exam score, leave date, note\nButton: rows with Attended print the Attendance Certificate.\nRelated: Attended completes a linked development action in Performance Management and marks the training days as Training in the timesheet (not absent)." }, { "Id": "765f15f7-36b6-5a3d-aa6f-7d7264316032", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Hr.TrainingParticipant.Desc", - "Value": "Katılımcılar — eğitime katılan personel ve katılım sonucu.\nNerede: Eğitimler ekranında kaydın Katılımcılar sekmesi (menüde ayrıca yoktur).\nAlanlar:\n• UserId → personel; seçilince işe giriş tarihi, bölüm ve görev kopyalanır (eğitim anındaki hâl saklanır)\n• AttendanceStatus → Katıldı (varsayılan) / Katılmadı / Mazeretli\n• Değerlendirme puanı, sınav notu, ayrılma tarihi, not\nButon: Katıldı durumundaki satırda Katılım Belgesi raporu basılır.\nİlişkili: Katıldı kaydı, Performans Yönetimi'nde bu eğitime bağlı gelişim aksiyonunu tamamlar." + "Value": "Katılımcılar — eğitime katılan personel ve katılım sonucu.\nNerede: Eğitimler ekranında kaydın Katılımcılar sekmesi (menüde ayrıca yoktur).\nAlanlar:\n• UserId → personel; seçilince işe giriş tarihi, bölüm ve görev kopyalanır (eğitim anındaki hâl saklanır)\n• AttendanceStatus → Katıldı (varsayılan) / Katılmadı / Mazeretli\n• Değerlendirme puanı, sınav notu, ayrılma tarihi, not\nButon: Katıldı durumundaki satırda Katılım Belgesi raporu basılır.\nİlişkili: Katıldı kaydı, Performans Yönetimi'nde bu eğitime bağlı gelişim aksiyonunu tamamlar ve eğitim günlerini puantajda Eğitimde yazar (devamsız sayılmaz)." }, { "Id": "c06e0830-74c0-543a-90a2-daf025c4269a", @@ -73271,14 +73271,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Hr.Training.Desc", - "Value": "Trainings — each training session: dates/times, duration, place, trainer, cost, skills gained, participants and files.\nWhere: Human Resources › Training › Trainings. The detail has Participants and Files tabs.\nFields:\n• Type → Subject (filtered by type), entry date, branch\n• Start/end date and time → total hours = days × daily hours (automatic)\n• Status → Open / Closed; trainer, place, institution\n• SkillIds → skills gained (informational, not written to the employee profile)\n• Cost items (place, trainer, accommodation, transport, catering, other) → total cost automatic\nRelated: a Performance Management development action can link to a training; when the employee is marked Attended the action completes itself.\nWidgets: total, open, closed trainings and total cost." + "Value": "Trainings — each training session: dates/times, duration, place, trainer, cost, skills gained, participants and files.\nWhere: Human Resources › Training › Trainings. The detail has Participants and Files tabs.\nFields:\n• Type → Subject (filtered by type), entry date, branch\n• Start/end date and time → total hours = days × daily hours (automatic)\n• Status → Open / Closed; trainer, place, institution\n• SkillIds → skills gained (informational, not written to the employee profile)\n• Cost items (place, trainer, accommodation, transport, catering, other) → total cost automatic\nRelated: a Performance Management development action can link to a training; when the employee is marked Attended the action completes itself. Work days between the start and end date are Training days in the timesheet of attending participants; changing the dates recalculates them.\nWidgets: total, open, closed trainings and total cost." }, { "Id": "9d752979-4711-52fa-9d5b-84c76fc7a74c", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Hr.Training.Desc", - "Value": "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.\nNerede: İnsan Kaynakları › Eğitim › Eğitimler. Detayda Katılımcılar ve Dosyalar sekmeleri vardır.\nAlanlar:\n• Tip → Konu (tipe göre süzülür), giriş tarihi, şube\n• Başlangıç/bitiş tarihi ve saati → Toplam süre = gün sayısı × günlük saat (otomatik)\n• Status → Açık / Kapalı; eğitmen, eğitim yeri, eğitim veren kurum\n• SkillIds → eğitimin kazandırdığı yetkinlikler (bilgi amaçlı, çalışan profiline yazılmaz)\n• Maliyet kalemleri (yer, eğitmen, konaklama, ulaşım, ikram, diğer) → toplam maliyet otomatik\nİlişkili: Performans Yönetimi'ndeki gelişim aksiyonu bir eğitime bağlanabilir; çalışan bu eğitimde Katıldı olarak işlenirse aksiyon kendiliğinden tamamlanır.\nWidget'lar: toplam, açık, kapalı eğitim ve toplam maliyet." + "Value": "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.\nNerede: İnsan Kaynakları › Eğitim › Eğitimler. Detayda Katılımcılar ve Dosyalar sekmeleri vardır.\nAlanlar:\n• Tip → Konu (tipe göre süzülür), giriş tarihi, şube\n• Başlangıç/bitiş tarihi ve saati → Toplam süre = gün sayısı × günlük saat (otomatik)\n• Status → Açık / Kapalı; eğitmen, eğitim yeri, eğitim veren kurum\n• SkillIds → eğitimin kazandırdığı yetkinlikler (bilgi amaçlı, çalışan profiline yazılmaz)\n• Maliyet kalemleri (yer, eğitmen, konaklama, ulaşım, ikram, diğer) → toplam maliyet otomatik\nİlişkili: Performans Yönetimi'ndeki gelişim aksiyonu bir eğitime bağlanabilir; çalışan bu eğitimde Katıldı olarak işlenirse aksiyon kendiliğinden tamamlanır. Başlangıç–bitiş arasındaki iş günleri katılımcının puantajında Eğitimde yazılır; tarih değişince yeniden hesaplanır.\nWidget'lar: toplam, açık, kapalı eğitim ve toplam maliyet." }, { "Id": "8efb30fc-f40b-5465-ba0f-0ad4b2584571", @@ -76883,14 +76883,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Hr.WorkCalendar.Desc", - "Value": "Work Calendar — public holidays, half days (eves) and non-working days.\nWhere: Human Resources › Work Calendar. The Scheduler view shows the year.\nFields:\n• Name, start and end date (multi-day holiday in one row)\n• DayType → Holiday / Half day\n• RecurrenceRule → Yearly (fixed-date holidays entered once) or empty (religious holidays entered each year)\nNote: not linked to leave or time-keeping calculations. Records are mirrored to the seed file." + "Value": "Work Calendar — public holidays, half days (eves) and non-working days.\nWhere: Human Resources › Work Calendar. The Scheduler view shows the year.\nFields:\n• Name, start and end date (multi-day holiday in one row)\n• DayType → Holiday / Half day\n• RecurrenceRule → Yearly (fixed-date holidays entered once) or empty (religious holidays entered each year)\nRelated: leave days exclude these days and the timesheet marks them as public holidays; saving, changing or deleting a row recalculates the leave days and the timesheet of the affected dates (closed timesheet months are not rewritten). Records are mirrored to the seed file." }, { "Id": "b1582eb7-c76d-5ae1-a3f2-8aadb4ff5cdf", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Hr.WorkCalendar.Desc", - "Value": "Çalışma Takvimi — resmi tatiller, arife (yarım gün) ve çalışılmayan günler.\nNerede: İnsan Kaynakları › Çalışma Takvimi. Takvim (Scheduler) görünümünde yıl üzerinde görülür.\nAlanlar:\n• Ad, başlangıç ve bitiş tarihi (çok günlü tatil tek satırda)\n• DayType → Tatil / Yarım Gün\n• RecurrenceRule → Her yıl (sabit tarihli resmi tatiller bir kez girilir) ya da boş (dini bayramlar her yıl ayrı girilir)\nDikkat: takvim izin ya da puantaj hesabına bağlı değildir. Kayıtlar seed dosyasına da yazılır." + "Value": "Çalışma Takvimi — resmi tatiller, arife (yarım gün) ve çalışılmayan günler.\nNerede: İnsan Kaynakları › Çalışma Takvimi. Takvim (Scheduler) görünümünde yıl üzerinde görülür.\nAlanlar:\n• Ad, başlangıç ve bitiş tarihi (çok günlü tatil tek satırda)\n• DayType → Tatil / Yarım Gün\n• RecurrenceRule → Her yıl (sabit tarihli resmi tatiller bir kez girilir) ya da boş (dini bayramlar her yıl ayrı girilir)\nİlişkili: izin günleri bu günleri saymaz, puantaj bu günleri resmî tatil yazar; satır eklenince, değişince ya da silinince denk gelen izinlerin gün sayısı ve puantaj yeniden hesaplanır (kapalı puantaj ayı yazılmaz). Kayıtlar seed dosyasına da yazılır." }, { "Id": "2644799a-0a6a-5b06-a8f4-ab2426d01890", @@ -82945,14 +82945,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Hr.LeaveRequest.Desc", - "Value": "Leave Requests — every leave request in the company, with its approval state. Used only by Human Resources.\nWhere: Human Resources › Leave Management › Leave Requests. Employees request leave from the My Leaves widget on Intranet › Dashboard; managers approve from the Team Leaves widget.\nFields:\n• RequestNo → assigned automatically as IZN-YYYY-00001\n• Employee → department and position are copied from the user card\n• Leave type, start/end date and time, half day (morning/afternoon)\n• Days → calculated on save from the working days in Settings › Human Resources and the holidays in Work Calendar (half day = 0.5)\n• Description and supporting document (report etc.; required when the leave type requires a document)\nRules: overlapping requests are rejected; when the annual balance or the yearly limit of the type is exceeded the request is blocked or saved with a warning, as set on the leave type. Gender-specific types are only valid for that gender.\nApproval: Grid Workflow — Department Manager → HR → Approved / Rejected. The manager is the holder of the top position of the employee's department (Job Positions); the HR approver is set on the 'İK Onayı' node. Each step notifies the next approver; the result notifies the employee.\nSick leave: requests of type Sick and Health Card › Sick Leaves are the same record.\nWidgets: awaiting manager, awaiting HR, approved and rejected requests." + "Value": "Leave Requests — every leave request in the company, with its approval state. Used only by Human Resources.\nWhere: Human Resources › Leave Management › Leave Requests. Employees request leave from the My Leaves widget on Intranet › Dashboard; managers approve from the Team Leaves widget.\nFields:\n• RequestNo → assigned automatically as IZN-YYYY-00001\n• Employee → department and position are copied from the user card\n• Leave type, start/end date and time, half day (morning/afternoon)\n• Days → calculated on save from the working days in Settings › Human Resources and the holidays in Work Calendar (half day = 0.5); days covered by a sick leave are not counted and return to the balance\n• Description and supporting document (report etc.; required when the leave type requires a document)\nRules: overlapping requests are rejected; when the annual balance or the yearly limit of the type is exceeded the request is blocked or saved with a warning, as set on the leave type. Gender-specific types are only valid for that gender. Dates must be within the employee's hire and termination dates. A request falling into a closed timesheet period cannot be added, changed or deleted.\nApproval: Grid Workflow — Department Manager → HR → Approved / Rejected. The manager is the holder of the top position of the employee's department (Job Positions); the HR approver is set on the 'İK Onayı' node. Each step notifies the next approver; the result notifies the employee.\nSick leave: requests of type Sick and Health Card › Sick Leaves are the same record; a sick leave request appears on the health card once approved.\nWidgets: awaiting manager, awaiting HR, approved and rejected requests." }, { "Id": "a190f3b4-9b7c-5ca4-ad5b-d910754ee364", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Hr.LeaveRequest.Desc", - "Value": "İzin Talepleri — kurumdaki bütün izin talepleri ve onay durumları. Yalnız İnsan Kaynakları kullanır.\nNerede: İnsan Kaynakları › İzin Yönetimi › İzin Talepleri. Çalışan talebini Intranet › Dashboard'daki İzinlerim widget'ından açar; müdür Ekibimin İzinleri widget'ından onaylar.\nAlanlar:\n• RequestNo → IZN-YYYY-00001 biçiminde otomatik verilir\n• Çalışan → departman ve pozisyon kullanıcı kartından kopyalanır\n• İzin türü, başlangıç/bitiş tarih ve saati, yarım gün (sabah/öğleden sonra)\n• Gün → kayıtta Ayarlar › İnsan Kaynakları'ndaki çalışma günleri ve Çalışma Takvimi'ndeki tatillerden hesaplanır (yarım gün = 0,5)\n• Açıklama ve ek belge (rapor vb.; türü belge istiyorsa zorunlu)\nKurallar: aynı tarihlerle çakışan talep reddedilir; yıllık izin bakiyesi ya da türün yıllık sınırı aşılırsa türdeki ayara göre talep engellenir veya uyarıyla kaydedilir. Cinsiyete özel türler yalnız o cinsiyete açıktır.\nOnay: Grid Workflow — Departman Müdürü → İK → Onaylandı / Reddedildi. Müdür, çalışanın departmanındaki en üst pozisyonun (İş Pozisyonları) sahibidir; İK onaycısı 'İK Onayı' düğümünde tanımlıdır. Her adım sıradaki onaycıya, sonuç çalışana bildirim gönderir.\nRapor: Rapor (Sick) türündeki talep ile Sağlık Kartı › İstirahatler aynı kayıttır; hangisinden girilirse diğerinde görünür.\nWidget'lar: müdür onayında, İK onayında, onaylanan ve reddedilen talepler." + "Value": "İzin Talepleri — kurumdaki bütün izin talepleri ve onay durumları. Yalnız İnsan Kaynakları kullanır.\nNerede: İnsan Kaynakları › İzin Yönetimi › İzin Talepleri. Çalışan talebini Intranet › Dashboard'daki İzinlerim widget'ından açar; müdür Ekibimin İzinleri widget'ından onaylar.\nAlanlar:\n• RequestNo → IZN-YYYY-00001 biçiminde otomatik verilir\n• Çalışan → departman ve pozisyon kullanıcı kartından kopyalanır\n• İzin türü, başlangıç/bitiş tarih ve saati, yarım gün (sabah/öğleden sonra)\n• Gün → kayıtta Ayarlar › İnsan Kaynakları'ndaki çalışma günleri ve Çalışma Takvimi'ndeki tatillerden hesaplanır (yarım gün = 0,5); rapora denk gelen gün sayılmaz, bakiyeye döner\n• Açıklama ve ek belge (rapor vb.; türü belge istiyorsa zorunlu)\nKurallar: aynı tarihlerle çakışan talep reddedilir; yıllık izin bakiyesi ya da türün yıllık sınırı aşılırsa türdeki ayara göre talep engellenir veya uyarıyla kaydedilir. Cinsiyete özel türler yalnız o cinsiyete açıktır. Tarihler çalışanın işe giriş ve işten çıkış tarihleri arasında olmalıdır. Kapalı puantaj dönemine düşen talep eklenemez, değiştirilemez, silinemez.\nOnay: Grid Workflow — Departman Müdürü → İK → Onaylandı / Reddedildi. Müdür, çalışanın departmanındaki en üst pozisyonun (İş Pozisyonları) sahibidir; İK onaycısı 'İK Onayı' düğümünde tanımlıdır. Her adım sıradaki onaycıya, sonuç çalışana bildirim gönderir.\nRapor: Rapor (Sick) türündeki talep ile Sağlık Kartı › İstirahatler aynı kayıttır; Sağlık Kartı'ndan girilen rapor onaylı talep olur, çalışanın rapor talebi onaylanınca sağlık kartına düşer.\nWidget'lar: müdür onayında, İK onayında, onaylanan ve reddedilen talepler." }, { "Id": "2d6c0ae7-2f93-5124-9dfa-ade49f33d08f", @@ -83919,6 +83919,1770 @@ "ResourceName": "Platform", "Key": "Abp.Identity.User.Leaves", "Value": "İzinler" + }, + { + "Id": "264fc02f-ca2d-5212-bad9-710d03d64b0b", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Work", + "Value": "Work Day" + }, + { + "Id": "b3842d48-2a40-5bad-bfcf-11a9c23eca30", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Work", + "Value": "Çalışma" + }, + { + "Id": "9c876245-4bd1-53d2-bc96-66c2e154f313", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.WeeklyOff", + "Value": "Weekly Rest Day" + }, + { + "Id": "09b0bb9c-da82-5f57-96d1-054eae1bf1df", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.WeeklyOff", + "Value": "Hafta Tatili" + }, + { + "Id": "91e81c9c-9453-59c6-aad9-392ce57d3d2e", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Holiday", + "Value": "Public Holiday" + }, + { + "Id": "45809baa-49bf-506c-bf3f-1297daf49a7b", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Holiday", + "Value": "Resmî Tatil" + }, + { + "Id": "26bf5020-03a7-5b95-aa75-56f713e41a4d", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Leave", + "Value": "On Leave" + }, + { + "Id": "b83430d8-7a24-565a-99d7-cf2183848d29", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Leave", + "Value": "İzinli" + }, + { + "Id": "92d50c91-29f7-5145-96a5-e32f9460c924", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Sick", + "Value": "Sick Leave" + }, + { + "Id": "867026ec-72fd-5430-82cb-592bd0af84f7", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Sick", + "Value": "Raporlu" + }, + { + "Id": "82f611f7-b121-5ac5-a802-507d7f7d1197", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Absent", + "Value": "Absent" + }, + { + "Id": "a748c59b-d2b3-5668-9604-ccda1f25d32a", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Absent", + "Value": "Devamsız" + }, + { + "Id": "3deb8ccf-931a-5ec6-8852-9c4f2ec9dfa6", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance", + "Value": "Timesheet & Attendance" + }, + { + "Id": "6c1f19f5-5e22-5166-915d-5397fee0de85", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance", + "Value": "Puantaj ve Devam Takibi" + }, + { + "Id": "3f9e5d7c-67b9-560a-a9ba-851e503ca8b5", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Today", + "Value": "Today" + }, + { + "Id": "47524442-a73a-51a5-b97f-21055e979c72", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Today", + "Value": "Bugün" + }, + { + "Id": "adfeef22-f854-50a3-adcf-cfa88ce877f0", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Pdks", + "Value": "PDKS (this month)" + }, + { + "Id": "78d74c59-a216-5fcf-96c9-e7221d4233de", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Pdks", + "Value": "PDKS (bu ay)" + }, + { + "Id": "48548c87-1ea8-51cb-8bd5-93dc89237cc5", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Manual", + "Value": "Manual (this month)" + }, + { + "Id": "1f87aa9e-538b-5f57-816a-944048a86310", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Manual", + "Value": "Manuel (bu ay)" + }, + { + "Id": "1a9da082-58b3-53f2-bd21-2f61624f1c59", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Error", + "Value": "Unprocessed" + }, + { + "Id": "5b550a97-a28f-58e2-90cd-df1d055ea397", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Error", + "Value": "Hatalı" + }, + { + "Id": "49291166-67f5-5629-9185-848e6d576417", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Absent", + "Value": "Absent days (this month)" + }, + { + "Id": "1f29e4a8-dc6a-5fcd-a033-114a48055430", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Absent", + "Value": "Devamsız gün (bu ay)" + }, + { + "Id": "b99a091c-2e55-5e04-afb0-bc333e65e2c6", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Late", + "Value": "Late days (this month)" + }, + { + "Id": "6e74f4f3-22bd-56d5-80c6-578b188b9c9e", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Late", + "Value": "Geç kalınan gün (bu ay)" + }, + { + "Id": "9fcc22e3-1422-5c90-bb5a-93c4147e5d31", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Overtime", + "Value": "Overtime hours (this month)" + }, + { + "Id": "23ddb543-65cf-5ff6-852e-bba79180c871", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Overtime", + "Value": "Fazla mesai saati (bu ay)" + }, + { + "Id": "fbc844a3-ef5a-5924-a681-0dd00dac5437", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Incomplete", + "Value": "Missing punch (this month)" + }, + { + "Id": "1b37bc57-77ef-57cc-bddf-9652bc42f02a", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Incomplete", + "Value": "Eksik okutma (bu ay)" + }, + { + "Id": "c4d98fea-34f1-53ae-acbc-174f92663d60", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Employees", + "Value": "Employees (this month)" + }, + { + "Id": "108d5b19-4864-52aa-948c-1573d4cc5066", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Employees", + "Value": "Çalışan (bu ay)" + }, + { + "Id": "b389dfc6-44f9-5b5f-9520-c1b544b806e7", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.OverLimit", + "Value": "Over annual overtime limit" + }, + { + "Id": "fb8a0f6d-1314-5660-bfc6-982839bb55b3", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.OverLimit", + "Value": "Yıllık fazla mesai sınırını aşan" + }, + { + "Id": "312ebdaa-6afd-5c0a-80c7-109df5142b12", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Open", + "Value": "Open periods" + }, + { + "Id": "acc5fe17-ffc4-5f03-aa0b-cdfcfe494791", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Open", + "Value": "Açık dönem" + }, + { + "Id": "0f5655ac-048e-5d7d-b51e-b09f6d5c116b", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Closed", + "Value": "Closed periods" + }, + { + "Id": "31901539-3f33-5360-af38-17421a7abaaf", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Widget.Closed", + "Value": "Kapalı dönem" + }, + { + "Id": "ab3891d7-6894-584a-8971-68a3f2382567", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Direction.In", + "Value": "In" + }, + { + "Id": "ee344501-5aad-5d55-97de-5e35f975df95", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Direction.In", + "Value": "Giriş" + }, + { + "Id": "ed1cec91-026e-50cc-8905-9af2e24a2d9e", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Direction.Out", + "Value": "Out" + }, + { + "Id": "1dafbfe8-e6ba-523a-82d4-535d726dda1e", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Direction.Out", + "Value": "Çıkış" + }, + { + "Id": "be34b4ad-4e8c-5228-ba19-6ea7e43173a5", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Direction.Auto", + "Value": "Automatic" + }, + { + "Id": "8e4d39e8-69bf-56aa-b70f-651bc7f341fd", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Direction.Auto", + "Value": "Otomatik" + }, + { + "Id": "187bd6b7-27ed-5b7d-a7e0-8aea27ceb8b0", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Source.Manual", + "Value": "Manual" + }, + { + "Id": "947ddc29-7c01-5aee-9d8a-f9405552d180", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Source.Manual", + "Value": "Manuel" + }, + { + "Id": "654f0f97-2434-5475-b4a7-84adb5f26674", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Source.Pdks", + "Value": "PDKS" + }, + { + "Id": "5e672cb6-800a-5576-b17f-8c013351a70a", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Source.Pdks", + "Value": "PDKS" + }, + { + "Id": "097abf18-8a5a-586b-9bb4-1b20ab401533", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Source.Import", + "Value": "Excel Import" + }, + { + "Id": "467de3cb-47e7-596b-af26-c853f408cf18", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Source.Import", + "Value": "Excel Aktarımı" + }, + { + "Id": "d17f924c-3b1e-57eb-9c05-717ca76a9b50", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Error.UnknownCard", + "Value": "Card not defined" + }, + { + "Id": "a4db76c1-01d7-5ff3-ab1a-bac79ed9ea25", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Error.UnknownCard", + "Value": "Kart tanımsız" + }, + { + "Id": "b5fcdff4-3464-5d76-9d99-a40788efb704", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Error.ClosedPeriod", + "Value": "Closed period" + }, + { + "Id": "4dd62de7-4e6a-59fb-9c54-b8ccc19cc1a7", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Error.ClosedPeriod", + "Value": "Kapalı dönem" + }, + { + "Id": "81dd8a8d-061c-52b1-8466-9488cd46738d", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.PeriodStatus.Open", + "Value": "Open" + }, + { + "Id": "61c7f735-692c-59b1-8ad1-a59287e348ae", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.PeriodStatus.Open", + "Value": "Açık" + }, + { + "Id": "083b9abf-895f-565f-84d1-cbf305a17bfc", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.PeriodStatus.Closed", + "Value": "Closed" + }, + { + "Id": "c769618c-9184-549a-bdcb-6c7de5a6536e", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.PeriodStatus.Closed", + "Value": "Kapalı" + }, + { + "Id": "50d2a7a9-21fe-5dac-be1f-33aeb67150b4", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Log", + "Value": "Attendance Event" + }, + { + "Id": "474f1d14-1ead-5f8f-9f04-619e9aec2a47", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Log", + "Value": "Hareket" + }, + { + "Id": "a50626ab-91e0-5e26-b8f9-7fe19b47c1ad", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.Source", + "Value": "Source" + }, + { + "Id": "79614c89-89be-5ba3-8faa-db93efffe4a0", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.Source", + "Value": "Kaynak" + }, + { + "Id": "3bdd6862-a35e-567e-86c0-91b488f525db", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.DeviceCode", + "Value": "Device" + }, + { + "Id": "7115029b-52a3-5087-9a88-b603f0402bbf", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.DeviceCode", + "Value": "Cihaz" + }, + { + "Id": "7eca5fba-4e7f-5f52-8f9a-9716fefa560f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.WorkDate", + "Value": "Work Date" + }, + { + "Id": "24aab620-7e00-5c3e-97b5-a2e04abd9c15", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.WorkDate", + "Value": "İş Günü" + }, + { + "Id": "79c0ece6-197c-5712-b016-ca65b71a90d1", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.ProcessError", + "Value": "Error" + }, + { + "Id": "e986533f-2c4f-5e4a-a185-24757630e477", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.ProcessError", + "Value": "Hata" + }, + { + "Id": "b1a7fae9-8a5b-5a14-81f4-86ff2e2577f5", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.AttendanceLog", + "Value": "Attendance Events" + }, + { + "Id": "93622130-9b99-5cc4-937f-b12f2274f47c", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.AttendanceLog", + "Value": "Günlük Hareketler" + }, + { + "Id": "4dbce51c-9765-58fe-b056-e2bc4f8fd1b5", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.AttendanceLog.Title", + "Value": "Attendance Events" + }, + { + "Id": "0ffe5007-81ed-599a-b935-e91e448f542b", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.AttendanceLog.Title", + "Value": "Günlük Hareketler" + }, + { + "Id": "1222bcc1-7aeb-57f1-b7fa-2ca84d5a4d59", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.AttendanceLog.Desc", + "Value": "Attendance Events — raw entry/exit punches coming from PDKS (card readers), Excel import or entered manually.\nWhere: Human Resources › Timesheet & Attendance › Attendance Events.\nFields: employee (or the card / registration number; the employee is resolved from the PDKS Card No and Registration No fields of the user card), time, direction (In / Out / Automatic — automatic punches alternate in/out by order), source, device, work date (calculated), error.\nCalculation: every save, import and PDKS call assigns the punch to the work day of the employee's shift (a night-shift punch at 23:50 belongs to the next day) and recalculates that week of the Daily Timesheet.\nErrors: 'Card not defined' — enter the number as PDKS Card No on the user card (Work tab); the nightly job processes the punch; punches of a closed period cannot be added, changed or deleted.\nEmployees without a PDKS card number (or before their first PDKS punch) are tracked manually: days without a record count as worked, HR only marks absences in the Daily Timesheet." + }, + { + "Id": "ca8fc18b-a679-5993-8ace-8bbeb8e386e0", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.AttendanceLog.Desc", + "Value": "Günlük Hareketler — PDKS'den (kart okuyucu), Excel aktarımından gelen ya da elle girilen ham giriş/çıkış okutmaları.\nNerede: İnsan Kaynakları › Puantaj ve Devam Takibi › Günlük Hareketler.\nAlanlar: çalışan (ya da kart / sicil no; çalışan kullanıcı kartındaki PDKS Kart No ve Sicil No alanlarından bulunur), zaman, yön (Giriş / Çıkış / Otomatik — otomatik okutmalar sırayla giriş/çıkış sayılır), kaynak, cihaz, iş günü (hesaplanır), hata.\nHesap: her kayıt, aktarım ve PDKS çağrısı okutmayı çalışanın vardiyasına göre iş gününe yazar (gece vardiyasındaki 23:50 okutması ertesi günündür) ve Günlük Puantaj'da o haftayı yeniden hesaplar.\nHatalar: 'Kart tanımsız' — numara kullanıcı kartında (İş sekmesi) PDKS Kart No olarak girilince gece işi okutmayı işler; kapalı döneme ait okutma eklenemez, değiştirilemez, silinemez.\nPDKS kart numarası olmayan (ya da ilk PDKS okutmasından önceki) çalışan elle takip edilir: kayıt girilmeyen gün çalışılmış sayılır, İK yalnız gelinmeyen günü Günlük Puantaj'da işaretler." + }, + { + "Id": "9eebefd6-68b1-5814-b77e-ce837d82f51c", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Day", + "Value": "Timesheet Day" + }, + { + "Id": "2830d371-c1d5-5e3f-8370-3cbb1dfa9bc5", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Day", + "Value": "Puantaj Günü" + }, + { + "Id": "d7547469-79df-5cb3-85b6-6aa5238d8c5d", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.FirstIn", + "Value": "First In" + }, + { + "Id": "05a07941-babd-5c7e-8654-9e99663fb2f6", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.FirstIn", + "Value": "İlk Giriş" + }, + { + "Id": "74af74de-c2f7-5f2c-a84a-73d402f068ff", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LastOut", + "Value": "Last Out" + }, + { + "Id": "6226ea88-6a67-553d-8505-55a28bbe9722", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LastOut", + "Value": "Son Çıkış" + }, + { + "Id": "a4ae42f9-23ed-5ebf-a61a-95e666a10ee3", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.NetHours", + "Value": "Net Hours" + }, + { + "Id": "972b3dfd-2697-55b3-930c-11df4696b62a", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.NetHours", + "Value": "Net Çalışma (saat)" + }, + { + "Id": "318bf0fe-9b48-54b1-9258-103301322813", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LateMinutes", + "Value": "Late (min)" + }, + { + "Id": "314781a1-10fb-546f-a21b-1f07da4b91fe", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LateMinutes", + "Value": "Geç Kalma (dk)" + }, + { + "Id": "8b74349a-b0b0-51db-93a0-c19dc065de44", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.EarlyLeaveMinutes", + "Value": "Early Leave (min)" + }, + { + "Id": "2bfc5dec-c078-50b6-8dd3-e37bdb8d0f32", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.EarlyLeaveMinutes", + "Value": "Erken Çıkış (dk)" + }, + { + "Id": "a3cad7cc-e08a-5b72-9717-c358bbd8a1a2", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.OvertimeHours", + "Value": "Overtime (h)" + }, + { + "Id": "fd7d3e50-6c4a-5a65-9d53-ca47f6b0cb32", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.OvertimeHours", + "Value": "Fazla Mesai (saat)" + }, + { + "Id": "787bc643-b3f5-5b1c-939d-066b8b1062ad", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IsAssumed", + "Value": "Assumed" + }, + { + "Id": "ad4762e1-8cf1-5b78-ba90-8ad87750efea", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IsAssumed", + "Value": "Varsayılan" + }, + { + "Id": "d56cbeed-44f1-55bb-849f-0d390e1d93af", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IsManual", + "Value": "Manual" + }, + { + "Id": "ed8bd324-8558-57be-8849-dd9ad650c4b3", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IsManual", + "Value": "Elle" + }, + { + "Id": "82477b41-c9ab-5367-8445-1f3b7f0daaae", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IsIncomplete", + "Value": "Missing Punch" + }, + { + "Id": "5b051357-41e2-501b-ba30-c01178224ef8", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IsIncomplete", + "Value": "Eksik Okutma" + }, + { + "Id": "2c0b2dd1-69ec-56d5-8640-64e52735b61c", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PeriodKey", + "Value": "Period Key" + }, + { + "Id": "01df0b26-cbf5-540e-a9f7-abae0510823a", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PeriodKey", + "Value": "Dönem Anahtarı" + }, + { + "Id": "1c8c5fd3-2727-52cd-94bb-7c240d05ec1f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Timesheet", + "Value": "Daily Timesheet" + }, + { + "Id": "f6b05d83-a1c0-56fd-afdb-178d8162350d", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Timesheet", + "Value": "Günlük Puantaj" + }, + { + "Id": "5d28911b-6638-527c-8bfa-362cbe070220", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Timesheet.Title", + "Value": "Daily Timesheet" + }, + { + "Id": "d484321e-2b32-54e2-bd18-25cef55477ac", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Timesheet.Title", + "Value": "Günlük Puantaj" + }, + { + "Id": "2d58e37b-19b3-5ef5-ba55-978030c438f0", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Timesheet.Desc", + "Value": "Daily Timesheet — one row per employee and day: first in, last out, net working time, break deduction, late arrival (min), early leave (min), overtime (hours) and day type (work, weekly rest, public holiday, on leave, sick leave, training, absent).\nWhere: Human Resources › Timesheet & Attendance › Daily Timesheet; also the tab of a row in Monthly Timesheet.\nCalculation: from the punches for employees with a PDKS card number (from their first PDKS punch on); others are tracked manually — a work day without a record counts as worked with the shift hours (marked Assumed). Break = shift break or the scanned break if longer; net = last out − first in − break. Late/early minutes are written in full once the shift tolerance (Settings › Human Resources › Timesheet when the shift has none) is exceeded. Overtime: all work on weekly rest days and public holidays, otherwise the part of the week (Mon–Sun) above the weekly limit (45 h, Labour Law art. 41). Day type priority: sick leave (Health Cards, calendar days) > unpaid leave (unpaid leave types, calendar days) > public holiday > weekly rest > paid leave (a holiday within paid leave is not a leave day, Labour Law art. 56 — the same rule as the leave day count) > work with punches > training (participant marked Attended) > work / absent. The leave type of the day is shown.\nCorrection: editing a day (e.g. setting a manually tracked employee's day to Absent) marks it Manual — recalculation keeps its inputs; delete the row to return it to automatic. Days of a closed period cannot be changed.\nAutomation: punches, leave requests, sick leaves, trainings and work calendar changes recalculate the affected days immediately (old dates of a moved record included); a nightly job builds the days without punches." + }, + { + "Id": "2f41c337-eba1-5d3b-9bd6-94d0aaadd306", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Timesheet.Desc", + "Value": "Günlük Puantaj — çalışan × gün satırı: ilk giriş, son çıkış, net çalışma süresi, mola düşümü, geç kalma (dk), erken çıkış (dk), fazla mesai (saat) ve gün tipi (çalışma, hafta tatili, resmî tatil, izinli, raporlu, eğitimde, devamsız).\nNerede: İnsan Kaynakları › Puantaj ve Devam Takibi › Günlük Puantaj; ayrıca Aylık Puantaj satırının sekmesi.\nHesap: PDKS kart numarası olan çalışanda (ilk PDKS okutmasından itibaren) okutmalardan; diğerleri elle takip edilir — kayıt girilmeyen iş günü vardiya saatleriyle çalışılmış sayılır (Varsayılan işaretlenir). Mola = vardiya molası, okutulan mola daha uzunsa o; net = son çıkış − ilk giriş − mola. Geç/erken dakika vardiya toleransı (vardiyada yoksa Ayarlar › İnsan Kaynakları › Puantaj) aşılınca tamamıyla yazılır. Fazla mesai: hafta tatili ve resmî tatilde çalışmanın tamamı, diğer günlerde haftanın (Pzt–Paz) haftalık sınırı (45 saat, 4857 md. 41) aşan kısmı. Gün tipi önceliği: raporlu (Sağlık Kartı, takvim günü) > ücretsiz izin (ücretsiz izin türleri, takvim günü) > resmî tatil > hafta tatili > ücretli izin (ücretli izne denk gelen tatil izin günü değildir, 4857 md. 56 — izin gün sayısıyla aynı kural) > okutmalı çalışma > eğitim (katılımcı Katıldı) > çalışma / devamsız. Günün izin türü de görünür.\nDüzeltme: gün düzenlenince (ör. elle takip edilen çalışanın gelmediği gün Devamsız yapılınca) Elle işaretlenir, yeniden hesap girdilerini korur; otomatiğe dönmek için satır silinir. Kapalı dönemin günü değiştirilemez.\nOtomasyon: hareket, izin, rapor, eğitim ve çalışma takvimi kaydı ilgili günleri (tarihi değişen kaydın eski günleri dahil) hemen yeniden hesaplar; okutmasız günleri gece işi kurar." + }, + { + "Id": "bf668898-e2e1-5e11-8107-220339852ad7", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PeriodStatus", + "Value": "Period Status" + }, + { + "Id": "2fbb01db-59a7-5e75-97ca-453d59206296", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PeriodStatus", + "Value": "Dönem Durumu" + }, + { + "Id": "7d1844f4-2a43-5ecb-a1f5-cb8c2e96f492", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.WorkDays", + "Value": "Work Days" + }, + { + "Id": "30664017-028c-5613-b97c-bc6ca1e46fac", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.WorkDays", + "Value": "Çalışma Günü" + }, + { + "Id": "5792138e-76ef-5dac-b44e-4a8c869f2e23", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LateDays", + "Value": "Late Days" + }, + { + "Id": "eadab2e0-c257-5929-aada-17aea579c651", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LateDays", + "Value": "Geç Kalınan Gün" + }, + { + "Id": "ab889c95-7c23-5d00-b47b-03bb625e3bcb", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.EarlyLeaveDays", + "Value": "Early Leave Days" + }, + { + "Id": "7813fce9-4c41-5998-8d5c-78b4c3f8e53f", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.EarlyLeaveDays", + "Value": "Erken Çıkılan Gün" + }, + { + "Id": "de9bddb4-13f3-54ba-85ad-724a744f23a5", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.OvertimePaidHours", + "Value": "Overtime Pay Hours" + }, + { + "Id": "4480b405-96c0-53ef-bebf-65e356eb9756", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.OvertimePaidHours", + "Value": "Zamlı Fazla Mesai (saat)" + }, + { + "Id": "467d54bd-1026-594b-aece-b8cb3ab45fc9", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.WeeklyOffDays", + "Value": "Weekly Rest Days" + }, + { + "Id": "abbb5a95-9142-5f80-b850-0d749127d667", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.WeeklyOffDays", + "Value": "Hafta Tatili" + }, + { + "Id": "39ed3c8d-bd15-5f33-9335-dc030ec31b52", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.HolidayDays", + "Value": "Public Holidays" + }, + { + "Id": "d7f3ed95-d9f5-5498-a652-59871513fe07", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.HolidayDays", + "Value": "Resmî Tatil" + }, + { + "Id": "7ada00d6-84c4-52b9-af43-a23f71851172", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LeaveDays", + "Value": "Leave Days" + }, + { + "Id": "ad462bae-0bd5-5981-aa9a-df3f641a83a8", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LeaveDays", + "Value": "İzinli Gün" + }, + { + "Id": "b136f0d3-d4ef-5cb7-a874-015759b868b5", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.SickDays", + "Value": "Sick Leave Days" + }, + { + "Id": "084ca49d-bd9f-5e20-83f8-1fea5bc04c59", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.SickDays", + "Value": "Raporlu Gün" + }, + { + "Id": "fd661f81-2eb8-50cb-abf5-08ba2eab3d39", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.AbsentDays", + "Value": "Absent Days" + }, + { + "Id": "84ce1a05-fb8b-5387-b01a-68a9ea3abda5", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.AbsentDays", + "Value": "Devamsız Gün" + }, + { + "Id": "052b7355-e75b-5b1e-9cd3-6130dc9b67f0", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IncompleteDays", + "Value": "Missing Punch Days" + }, + { + "Id": "67c6c40e-1758-5089-b927-b3cbbb87488c", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IncompleteDays", + "Value": "Eksik Okutmalı Gün" + }, + { + "Id": "2b4628e6-897f-5b35-9f63-031cde392e98", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.AssumedDays", + "Value": "Assumed Days" + }, + { + "Id": "635513b7-48be-5fe0-b664-71a40aff9607", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.AssumedDays", + "Value": "Varsayılan Gün" + }, + { + "Id": "633ba72a-4750-5a14-872a-82b33036251f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.YearOvertimeHours", + "Value": "Overtime This Year (h)" + }, + { + "Id": "05b0a7dc-5f12-505a-a8a9-c147462cd86a", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.YearOvertimeHours", + "Value": "Yıllık Fazla Mesai (saat)" + }, + { + "Id": "da0f99b1-7e4d-5560-b9f2-a0f98d90804a", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.AnnualOvertimeLimit", + "Value": "Annual Overtime Limit (h)" + }, + { + "Id": "f3f75cd7-45a9-578d-835d-b495ab630e5d", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.AnnualOvertimeLimit", + "Value": "Yıllık Fazla Mesai Sınırı" + }, + { + "Id": "f17b3c40-015d-57cc-b2fb-d9f7dacd83a5", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IsOverAnnualLimit", + "Value": "Over Annual Limit" + }, + { + "Id": "0848fc8f-e053-534f-94c1-1b6f6cd3da47", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IsOverAnnualLimit", + "Value": "Yıllık Sınır Aşıldı" + }, + { + "Id": "e9791b98-668c-5836-bd17-1dd7076c00d0", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetMonthly", + "Value": "Monthly Timesheet" + }, + { + "Id": "85656ae9-8958-5b4d-82d5-7de943826b60", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetMonthly", + "Value": "Aylık Puantaj" + }, + { + "Id": "96acc8cf-5547-55bc-a551-a502eb3f76dc", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetMonthly.Title", + "Value": "Monthly Timesheet" + }, + { + "Id": "e3ca2b83-4c3a-5921-8e4c-aae815638e50", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetMonthly.Title", + "Value": "Aylık Puantaj" + }, + { + "Id": "b167b071-ab38-574c-9f81-18f43dcfebf3", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetMonthly.Desc", + "Value": "Monthly Timesheet — per-employee monthly totals of the Daily Timesheet (read only).\nWhere: Human Resources › Timesheet & Attendance › Monthly Timesheet; the row detail shows the month's days. The same figures are on the Timesheet tab of the user card and, for the employee, in the My Timesheet widget on Intranet › Dashboard.\nColumns: work days, net hours, late minutes/days, early leave minutes, overtime hours, overtime pay hours (overtime × rate; 1.5 = 50% premium, Labour Law art. 41), weekly rest / public holiday / leave (of which unpaid — missing days for payroll) / training / sick / absent days, overtime cumulated since January.\nAnnual limit: rows whose yearly overtime exceeds the limit (270 h) are highlighted; the rate and the limit are set in Settings › Human Resources › Timesheet.\nPeriod: the status comes from Timesheet Periods; a closed month is locked." + }, + { + "Id": "22833338-8722-5cba-8403-269e06250a96", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetMonthly.Desc", + "Value": "Aylık Puantaj — Günlük Puantaj'ın personel bazlı aylık toplamı (salt okunur).\nNerede: İnsan Kaynakları › Puantaj ve Devam Takibi › Aylık Puantaj; satır detayında ayın günleri görünür. Aynı rakamlar kullanıcı kartının Puantaj sekmesinde, çalışan için Intranet › Dashboard'daki Puantajım widget'ındadır.\nKolonlar: çalışma günü, net saat, geç kalma dk/gün, erken çıkış dk, fazla mesai saati, zamlı fazla mesai (fazla mesai × çarpan; 1,5 = %50 zam, 4857 md. 41), hafta tatili / resmî tatil / izinli (ücretsiz kısmı ayrıca — bordroda eksik gün) / eğitim / raporlu / devamsız gün, ocaktan bu yana fazla mesai.\nYıllık sınır: yıllık fazla mesaisi sınırı (270 saat) aşan satır renklenir; çarpan ve sınır Ayarlar › İnsan Kaynakları › Puantaj'dadır.\nDönem: durum Puantaj Dönemleri'nden gelir; kapalı ay kilitlidir." + }, + { + "Id": "14f3fee2-c77a-51d5-90d1-aeb49559a903", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Period", + "Value": "Timesheet Period" + }, + { + "Id": "c2cc9af1-b64b-5007-a592-8fae8b911a1c", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Period", + "Value": "Puantaj Dönemi" + }, + { + "Id": "137435b5-9d6e-589b-9882-dcb35f39b1a4", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.CalculatedAt", + "Value": "Calculated At" + }, + { + "Id": "bc179be5-387f-55cc-a68c-da7e9cf2d015", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.CalculatedAt", + "Value": "Hesaplanma" + }, + { + "Id": "4da29fde-5d55-5930-ba62-c0ddc254337b", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.ClosedAt", + "Value": "Closed At" + }, + { + "Id": "09da9865-e81c-5b2a-8237-fb936cf03b80", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.ClosedAt", + "Value": "Kapanış" + }, + { + "Id": "c322e4ac-5ed8-5b8c-9a86-2bfa4c1beabe", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.ClosedById", + "Value": "Closed By" + }, + { + "Id": "7c02d1b5-3a85-5130-8de1-1583cb0a7045", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.ClosedById", + "Value": "Kapatan" + }, + { + "Id": "99b36983-8433-55f8-b9f4-f000fc6ac91e", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.NightlyAt", + "Value": "Nightly Run" + }, + { + "Id": "491a8a0d-f0bd-580c-8343-f3f1afeef0d8", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.NightlyAt", + "Value": "Gece İşi" + }, + { + "Id": "e4a1927c-a2f2-5c98-bf3a-60a9c52fe4c7", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetPeriod", + "Value": "Timesheet Periods" + }, + { + "Id": "a17ea006-38ff-5128-80ef-27883953ea9e", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetPeriod", + "Value": "Puantaj Dönemleri" + }, + { + "Id": "c1ecbc76-a382-5ef1-bc45-edb1e053a689", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetPeriod.Title", + "Value": "Timesheet Periods" + }, + { + "Id": "1fa628ba-e011-5ea7-944d-d6f2c44b2a4d", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetPeriod.Title", + "Value": "Puantaj Dönemleri" + }, + { + "Id": "c92f9f0d-0ae8-5518-a309-27dd26721089", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetPeriod.Desc", + "Value": "Timesheet Periods — monthly timesheet periods: recalculation and closing.\nWhere: Human Resources › Timesheet & Attendance › Timesheet Periods.\nUse: saving an open period recalculates the whole month for all employees (use it after changing shifts, the work calendar or settings). Setting the status to Closed recalculates once more and locks the month: its punches and days can no longer be added, changed or deleted, PDKS punches of that month are marked 'Closed period', leave requests and sick leaves of the month cannot be changed. A month with leave requests awaiting approval cannot be closed. Reopen to correct.\nAutomation: the nightly job opens the period of the current month by itself and recalculates the current and the previous (not closed) month." + }, + { + "Id": "8eb8b255-6351-5856-aa82-aed57e6f741d", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.TimesheetPeriod.Desc", + "Value": "Puantaj Dönemleri — aylık puantaj dönemleri: yeniden hesaplama ve kapanış.\nNerede: İnsan Kaynakları › Puantaj ve Devam Takibi › Puantaj Dönemleri.\nKullanım: açık dönem kaydedilince ay bütün çalışanlar için yeniden hesaplanır (vardiya, çalışma takvimi ya da ayar değişikliğinden sonra kullanılır). Durum Kapalı yapılınca son kez hesaplanır ve ay kilitlenir: hareket ve günler eklenemez, değiştirilemez, silinemez; o aya düşen PDKS okutmaları 'Kapalı dönem' işaretlenir, ayın izin ve rapor kayıtları değiştirilemez. Onay bekleyen izin talebi olan ay kapatılamaz. Düzeltme için dönem yeniden açılır.\nOtomasyon: gece işi içinde bulunulan ayın dönemini kendiliğinden açar, bu ayı ve kapanmamışsa önceki ayı yeniden hesaplar." + }, + { + "Id": "722a126e-339e-54f8-b5ab-200b59ae0698", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheet", + "Value": "My Timesheet" + }, + { + "Id": "6393aba1-0153-5e6f-8329-cc13a2c64dd4", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheet", + "Value": "Puantajım" + }, + { + "Id": "01ae5d7d-a479-58dd-999a-7dc5881ddbdb", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheet.Title", + "Value": "My Timesheet" + }, + { + "Id": "28ae6a6d-2f0d-5b6b-9c4f-88359ef37404", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheet.Title", + "Value": "Puantajım" + }, + { + "Id": "240dee96-c9d2-54e4-9f69-5fba0884b360", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheet.Desc", + "Value": "My Timesheet — your own monthly timesheet: work days, net hours, late arrivals, early leaves, overtime and leave/sick/absent days month by month.\nWhere: not on the menu; opened from the My Timesheet widget on Intranet › Dashboard. The row detail lists the days of the month.\nCalculation: Human Resources prepares the timesheet from the PDKS punches or, if you are tracked manually, from your shift hours (days without a record count as worked). Overtime is the work above 45 hours a week and all work on weekly rest days and public holidays; the yearly limit is 270 hours.\nQuestions and corrections about a day go to Human Resources." + }, + { + "Id": "b71144e9-2e75-5dc0-b4ae-2f0a42c78994", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheet.Desc", + "Value": "Puantajım — kendi aylık puantajınız: ay ay çalışma günü, net saat, geç kalma, erken çıkış, fazla mesai ve izinli/raporlu/devamsız günler.\nNerede: menüde yer almaz; Intranet › Dashboard'daki Puantajım widget'ından açılır. Satır detayında ayın günleri listelenir.\nHesap: İnsan Kaynakları puantajı PDKS okutmalarından, elle takip ediliyorsanız vardiya saatlerinizden (kayıt girilmeyen gün çalışılmış sayılır) hazırlar. Fazla mesai haftalık 45 saati aşan çalışma ile hafta tatili ve resmî tatildeki çalışmanın tamamıdır; yıllık sınır 270 saattir.\nBir günle ilgili sorular ve düzeltmeler İnsan Kaynakları'na iletilir." + }, + { + "Id": "be2f0de3-b6ab-5195-9138-921753c37d12", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheetDay", + "Value": "My Timesheet Days" + }, + { + "Id": "a35c8244-3b2c-5150-bf2f-0c5238099a03", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheetDay", + "Value": "Puantaj Günlerim" + }, + { + "Id": "4dd28993-e0a5-5059-89af-cf49019e479b", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheetDay.Title", + "Value": "My Timesheet Days" + }, + { + "Id": "db43a3b4-3c58-590f-951c-5476d253205a", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheetDay.Title", + "Value": "Puantaj Günlerim" + }, + { + "Id": "3b17259b-2bce-5a27-ba4e-d224f411dd8a", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheetDay.Desc", + "Value": "My Timesheet Days — the days of your timesheet: first in, last out, net working time, break, late arrival, early leave, overtime and day type.\nWhere: the tab of a month in My Timesheet (Intranet › Dashboard › My Timesheet widget).\nMarks: Assumed — you are tracked manually and the day was taken from your shift hours; Manual — corrected by Human Resources; Missing Punch — an entry without exit.\nLate and early minutes are written once your shift's tolerance is exceeded. Days of a training you attended are Training days." + }, + { + "Id": "2ac2186b-854c-5d46-9fb3-648bc089a9d0", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.MyTimesheetDay.Desc", + "Value": "Puantaj Günlerim — puantajınızın günleri: ilk giriş, son çıkış, net çalışma, mola, geç kalma, erken çıkış, fazla mesai ve gün tipi.\nNerede: Puantajım'da bir ayın sekmesi (Intranet › Dashboard › Puantajım widget'ı).\nİşaretler: Varsayılan — elle takip ediliyorsunuz ve gün vardiya saatlerinizden alındı; Elle — İnsan Kaynakları düzeltti; Eksik Okutma — çıkışı olmayan giriş.\nGeç ve erken dakika vardiyanızın toleransı aşılınca yazılır. Katıldığınız eğitimin günleri Eğitimde yazılır." + }, + { + "Id": "7fdd788b-0093-549a-8fc9-358cb2f5b6eb", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance", + "Value": "Timesheet" + }, + { + "Id": "0a222dc9-ff2d-5319-9890-2722efe0ac89", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance", + "Value": "Puantaj" + }, + { + "Id": "513b81a8-f5cc-5b75-a72b-b189b12f2496", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.LateToleranceMinutes", + "Value": "Late arrival tolerance (min)" + }, + { + "Id": "4ed9a89d-a81c-558c-8a2c-dcee68b67ffe", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.LateToleranceMinutes", + "Value": "Geç kalma toleransı (dk)" + }, + { + "Id": "01303afa-0b58-56a1-8ba8-96cef4bc225f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.LateToleranceMinutes.Description", + "Value": "Arrivals within this many minutes after the shift start are not late. Used when the shift has no tolerance of its own (Human Resources › Shifts)." + }, + { + "Id": "cc247db2-fcae-54e4-ad7f-9a4a3ec0fbb1", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.LateToleranceMinutes.Description", + "Value": "Vardiya başlangıcından sonraki bu kadar dakika geç kalma sayılmaz. Vardiyada (İnsan Kaynakları › Vardiyalar) ayrı tolerans yoksa kullanılır." + }, + { + "Id": "12c3f58d-896d-54a6-9522-63153f14b72b", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.EarlyLeaveToleranceMinutes", + "Value": "Early leave tolerance (min)" + }, + { + "Id": "3c05fa86-2a7d-56c1-a564-d0ea689b8dcf", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.EarlyLeaveToleranceMinutes", + "Value": "Erken çıkış toleransı (dk)" + }, + { + "Id": "85ad2d2d-2c98-5230-9794-98d1fe9bb50a", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.EarlyLeaveToleranceMinutes.Description", + "Value": "Leaving within this many minutes before the shift end is not early leave. Used when the shift has no tolerance of its own." + }, + { + "Id": "3b734a5c-f7aa-54cc-bbc0-99ecfaac4c7f", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.EarlyLeaveToleranceMinutes.Description", + "Value": "Vardiya bitişinden önceki bu kadar dakika erken çıkış sayılmaz. Vardiyada ayrı tolerans yoksa kullanılır." + }, + { + "Id": "ccf201bd-8d3a-5540-a82c-84f58ce3012f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.WeeklyLimitHours", + "Value": "Weekly working time limit (h)" + }, + { + "Id": "baf2cd08-9d6e-5ebe-91f5-68fc6b758c77", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.WeeklyLimitHours", + "Value": "Haftalık çalışma sınırı (saat)" + }, + { + "Id": "85e49da0-08e5-5a75-90c2-abf6a0db608d", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.WeeklyLimitHours.Description", + "Value": "Work above this weekly (Mon–Sun) total is overtime (Labour Law art. 41). Work on weekly rest days and public holidays is always overtime." + }, + { + "Id": "04255cc3-64af-55f7-813a-e23fecca3b54", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.WeeklyLimitHours.Description", + "Value": "Haftalık (Pzt–Paz) toplamı bu sınırı aşan çalışma fazla mesaidir (4857 md. 41). Hafta tatili ve resmî tatildeki çalışma her zaman fazla mesaidir." + }, + { + "Id": "9cc14b7e-6eeb-5ae3-a319-7a3f2a7a1d9b", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.OvertimeRate", + "Value": "Overtime pay rate" + }, + { + "Id": "78c44704-3d40-5e60-afd8-6f9090f94ca4", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.OvertimeRate", + "Value": "Fazla mesai ücret çarpanı" + }, + { + "Id": "2d8e91c0-6f00-510a-b685-09d7c6b4f1a7", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.OvertimeRate.Description", + "Value": "Overtime hours are multiplied by this rate in the Monthly Timesheet (1.5 = 50% premium, Labour Law art. 41)." + }, + { + "Id": "712937cf-8512-5485-bc65-141dfddb8426", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.OvertimeRate.Description", + "Value": "Aylık Puantaj'da fazla mesai saati bu çarpanla zamlı saate çevrilir (1,5 = %50 zam, 4857 md. 41)." + }, + { + "Id": "d3b7ebf1-76e6-5696-a4f6-8a431ef0d183", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.AnnualOvertimeLimitHours", + "Value": "Annual overtime limit (h)" + }, + { + "Id": "3fefaa4d-d150-54b3-9add-297f72d4cce6", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.AnnualOvertimeLimitHours", + "Value": "Yıllık fazla mesai sınırı (saat)" + }, + { + "Id": "3120bb82-1d75-5e80-9680-c0f9a1027e53", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.AnnualOvertimeLimitHours.Description", + "Value": "Employees whose overtime since January exceeds this limit are highlighted (Labour Law art. 41)." + }, + { + "Id": "c96644da-3c88-5feb-8548-9c3d9357ecba", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.AnnualOvertimeLimitHours.Description", + "Value": "Ocaktan bu yana fazla mesaisi bu sınırı aşan çalışan işaretlenir (4857 md. 41)." + }, + { + "Id": "9870bbd9-3a63-5ada-8864-50cc848eed6f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultShiftStart", + "Value": "Default shift start (HH:mm)" + }, + { + "Id": "25433ad4-d7cb-5eca-8ca7-c564b5670f72", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultShiftStart", + "Value": "Varsayılan vardiya başlangıcı (SS:dd)" + }, + { + "Id": "d03c8a44-d1ba-5dc3-98c0-0e0ce784971f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultShiftStart.Description", + "Value": "Used for employees without a shift on the user card." + }, + { + "Id": "7a2f3af1-9eb9-5db1-acc2-10439bbc5767", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultShiftStart.Description", + "Value": "Kullanıcı kartında vardiyası olmayan çalışan için kullanılır." + }, + { + "Id": "821dac62-2873-5af0-93b6-0d93c83bbb1e", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultShiftEnd", + "Value": "Default shift end (HH:mm)" + }, + { + "Id": "3fb54871-71c5-5017-b789-341a9a05a38d", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultShiftEnd", + "Value": "Varsayılan vardiya bitişi (SS:dd)" + }, + { + "Id": "61375ca9-d763-589c-aaca-675378b81feb", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultShiftEnd.Description", + "Value": "Used for employees without a shift on the user card." + }, + { + "Id": "53118c6b-4a59-53ee-ae8b-caea4dea59f7", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultShiftEnd.Description", + "Value": "Kullanıcı kartında vardiyası olmayan çalışan için kullanılır." + }, + { + "Id": "e948df1a-73e4-540c-a70a-dc7b1e8372f1", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultBreakMinutes", + "Value": "Default break (min)" + }, + { + "Id": "c48061ee-2407-5e4c-bf70-15691bfaf8cf", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultBreakMinutes", + "Value": "Varsayılan mola (dk)" + }, + { + "Id": "a498901e-9529-5433-ad2e-d2b7d3a42221", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultBreakMinutes.Description", + "Value": "Break deducted for employees without a shift (or a shift without break). A longer scanned break is deducted instead." + }, + { + "Id": "12a5cd8e-1d69-5e34-9409-6c8ac2760a22", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.HrSettings.Attendance.DefaultBreakMinutes.Description", + "Value": "Vardiyası (ya da vardiyasında molası) olmayan çalışandan düşülen mola. Okutulan mola daha uzunsa o düşülür." + }, + { + "Id": "2d5b3871-37cb-5d3e-b60a-2aeb707ed320", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.MyTimesheet", + "Value": "My Timesheet" + }, + { + "Id": "a45c8017-69e9-52a5-a768-39e772f476d2", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.MyTimesheet", + "Value": "Puantajım" + }, + { + "Id": "340dd8e3-8d4b-5d19-a3b2-2aaf77205677", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.NetHours", + "Value": "Net hours" + }, + { + "Id": "e2abd4fd-6e3d-5c8a-9d75-1ac7c36a5a7a", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.NetHours", + "Value": "Net saat" + }, + { + "Id": "cf60ff98-7239-590f-a369-063d27b9db11", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.WorkDays", + "Value": "Work days" + }, + { + "Id": "a69cddd0-8821-526e-9919-69904474d235", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.WorkDays", + "Value": "Çalışılan gün" + }, + { + "Id": "3c3603ff-f10c-50f3-a88d-2f2acc0cca4a", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.Overtime", + "Value": "Overtime (h)" + }, + { + "Id": "471b0ddb-ce3a-58e3-84c6-eb4e6c6751a0", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.Overtime", + "Value": "Fazla mesai (sa)" + }, + { + "Id": "5531d502-4113-5e92-b713-87b04b81add1", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.Late", + "Value": "Late (min)" + }, + { + "Id": "425bf28e-0a03-58d8-98e7-4c1a007bd471", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.Late", + "Value": "Geç kalma (dk)" + }, + { + "Id": "ccb20427-cb0f-5fb2-8423-8acd9757b110", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.EarlyLeave", + "Value": "Early leave (min)" + }, + { + "Id": "15630d89-a43f-598c-ba8b-e93f3cefc019", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.EarlyLeave", + "Value": "Erken çıkış (dk)" + }, + { + "Id": "9fc6330b-6b01-57b7-91ae-7da88c55852d", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.Absent", + "Value": "Absent days" + }, + { + "Id": "53a4d02a-be87-5ca8-984f-e2209eda8ce4", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.Absent", + "Value": "Devamsız gün" + }, + { + "Id": "510975e6-d48c-5746-9a1f-e80eece68472", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.LeaveDays", + "Value": "On leave: {days} d" + }, + { + "Id": "0b847388-d66a-5657-8ca1-71403c856f6d", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.LeaveDays", + "Value": "İzinli: {days} gün" + }, + { + "Id": "d9eebc50-0d93-539c-9637-ccacee30715f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.SickDays", + "Value": "Sick leave: {days} d" + }, + { + "Id": "9612e646-bb2b-55e1-8108-03cda8fc8703", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.SickDays", + "Value": "Raporlu: {days} gün" + }, + { + "Id": "8f03522c-1bf3-5d32-9282-a9ee9ad959b3", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.HolidayDays", + "Value": "Rest/holiday: {days} d" + }, + { + "Id": "ec0af42f-1ecc-54d4-8ea7-27ba768189d6", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.HolidayDays", + "Value": "Tatil: {days} gün" + }, + { + "Id": "ed76801c-5d24-5a96-807f-5d00bd426091", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.Year", + "Value": "{year} total" + }, + { + "Id": "61c2f37d-843c-53b6-bf93-2533abe6fe10", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.Year", + "Value": "{year} toplamı" + }, + { + "Id": "e9c92e7a-94d7-5f57-9cb6-08d42c2dfdf9", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.OvertimeLimit", + "Value": "Overtime: {used} / {limit} h annual limit" + }, + { + "Id": "40bb7612-3f8c-50a9-a99e-ca32935ddfdf", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.OvertimeLimit", + "Value": "Fazla mesai: {used} / {limit} saat yıllık sınır" + }, + { + "Id": "d0ae4fc6-ed63-55e5-a8e0-10b6dff7c998", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.NoData", + "Value": "Your timesheet has not been prepared yet." + }, + { + "Id": "ed4ea35b-6456-592f-9654-434492a4b7df", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.NoData", + "Value": "Puantajınız henüz oluşmadı." + }, + { + "Id": "02b15a63-cecb-57f2-84af-6c4b07693964", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.Open", + "Value": "My Timesheet" + }, + { + "Id": "ab966f80-b36e-5207-a4c7-77707f7cf446", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.DashboardWidget.Timesheet.Open", + "Value": "Puantajım" + }, + { + "Id": "a5131031-2d59-5180-b73b-eaf3aefe5018", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LateToleranceMinutes", + "Value": "Late Tolerance (min)" + }, + { + "Id": "b0518949-5ec7-552a-9bac-af86bdff9f54", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LateToleranceMinutes", + "Value": "Geç Kalma Toleransı (dk)" + }, + { + "Id": "1967c207-6323-512d-b6e8-e5733c57ba68", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.EarlyLeaveToleranceMinutes", + "Value": "Early Leave Tolerance (min)" + }, + { + "Id": "5dd687a5-bb42-52b1-a922-e11b73aea4ee", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.EarlyLeaveToleranceMinutes", + "Value": "Erken Çıkış Toleransı (dk)" + }, + { + "Id": "0d314d60-c30a-5fc4-91e0-29ca41a41006", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.Timesheet", + "Value": "Timesheet" + }, + { + "Id": "0496d7a3-9752-53aa-9295-abfcb5f7a003", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.Timesheet", + "Value": "Puantaj" + }, + { + "Id": "758f56ad-2a89-5e7e-91aa-cc17315d3689", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Training", + "Value": "Training" + }, + { + "Id": "83d3e25d-e193-5016-b6b7-4cc03e38b7da", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.DayType.Training", + "Value": "Eğitimde" + }, + { + "Id": "457c5fee-9b38-5f4b-9389-d0876146b701", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.UnpaidLeaveDays", + "Value": "Unpaid Leave Days" + }, + { + "Id": "2bab6ac0-c1b2-56b2-a58e-f3e89c9da815", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.UnpaidLeaveDays", + "Value": "Ücretsiz İzinli Gün" + }, + { + "Id": "e40e275b-9398-57b8-832e-3fb8691c9db3", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.TrainingDays", + "Value": "Training Days" + }, + { + "Id": "27dbca01-dffb-5442-9446-32fbe0900fd3", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.TrainingDays", + "Value": "Eğitim Günü" + }, + { + "Id": "a18d5dc7-4f1d-5524-84f4-55a6411a3d9a", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Time", + "Value": "Working Time" + }, + { + "Id": "73f4ecb9-9648-53ac-8615-036fb6f0aa05", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Time", + "Value": "Çalışma Süreleri" + }, + { + "Id": "9e57d383-83c5-5c45-96d7-61ba3fc67077", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Overtime", + "Value": "Overtime" + }, + { + "Id": "4844264f-d8b1-5796-9222-bbee6ee91729", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Overtime", + "Value": "Fazla Mesai" + }, + { + "Id": "b7c2cc2d-b439-540a-962f-e949416c1008", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Days", + "Value": "Day Distribution" + }, + { + "Id": "54fc490c-95e9-5e36-a451-2958492acea2", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Hr.Attendance.Group.Days", + "Value": "Gün Dağılımı" + }, + { + "Id": "152c6bf7-ea80-5a8b-9d63-fec14e090bc8", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.Trainings", + "Value": "Trainings" + }, + { + "Id": "682a3b48-fea3-5d43-8a41-4d8b21014fcf", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.Trainings", + "Value": "Eğitimler" + }, + { + "Id": "8536ef25-b6d4-523f-91ca-fbb9a49f5ce0", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.Performance", + "Value": "Performance" + }, + { + "Id": "24666e51-9e01-5010-b7d3-c2a54613aa43", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.Performance", + "Value": "Performans" + }, + { + "Id": "7b9bd102-6f54-5501-9938-4987a8744437", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.Disciplinary", + "Value": "Disciplinary" + }, + { + "Id": "b343e198-a153-5dcf-960a-501fb51a00b2", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.Disciplinary", + "Value": "Disiplin" } ] } diff --git a/configs/seeds/host/data/App.Menus.Menu.json b/configs/seeds/host/data/App.Menus.Menu.json index 2c276c49..46aac262 100644 --- a/configs/seeds/host/data/App.Menus.Menu.json +++ b/configs/seeds/host/data/App.Menus.Menu.json @@ -1343,7 +1343,7 @@ "Id": "eb9c8310-8498-4963-ba4d-8e56bcb42b5b", "Code": "App.Hr.SkillType", "DisplayName": "App.Hr.SkillType", - "Order": 1, + "Order": 3, "Url": "/admin/list/App.Hr.SkillType", "Icon": "FcMindMap", "ParentCode": "App.Hr.Definitions", @@ -1358,7 +1358,7 @@ "Id": "ed7bd2c5-36b0-49d8-a441-8c4426a53a28", "Code": "App.Hr.Department", "DisplayName": "App.Hr.Department", - "Order": 2, + "Order": 1, "Url": "/admin/list/App.Hr.Department", "Icon": "FcDepartment", "ParentCode": "App.Hr.Definitions", @@ -1373,7 +1373,7 @@ "Id": "f6d15b30-3404-4982-a035-97c986999f1e", "Code": "App.Hr.JobPosition", "DisplayName": "App.Hr.JobPosition", - "Order": 3, + "Order": 2, "Url": "/admin/list/App.Hr.JobPosition", "Icon": "FcDebt", "ParentCode": "App.Hr.Definitions", @@ -1388,7 +1388,7 @@ "Id": "9b1449bd-d898-43fb-96e0-50ab865b7072", "Code": "App.Hr.OrgChart", "DisplayName": "App.Hr.OrgChart", - "Order": 4, + "Order": 2, "Url": "/admin/organization", "Icon": "FaSitemap", "ParentCode": "App.Hr", @@ -1403,7 +1403,7 @@ "Id": "a866f244-67b4-4015-80c6-632abfab03ef", "Code": "App.Hr.Doctor", "DisplayName": "App.Hr.Doctor", - "Order": 4, + "Order": 13, "Url": "/admin/list/App.Hr.Doctor", "Icon": "FcPortraitMode", "ParentCode": "App.Hr.Definitions", @@ -1418,7 +1418,7 @@ "Id": "a6ddfb7b-db3e-4dec-a981-af9b193f9ea5", "Code": "App.Hr.Certificate", "DisplayName": "App.Hr.Certificate", - "Order": 5, + "Order": 4, "Url": "/admin/list/App.Hr.Certificate", "Icon": "FcDiploma2", "ParentCode": "App.Hr.Definitions", @@ -1433,7 +1433,7 @@ "Id": "fc69c8ac-6bec-4ee1-a30d-73f257b43338", "Code": "App.Hr.Hospital", "DisplayName": "App.Hr.Hospital", - "Order": 6, + "Order": 14, "Url": "/admin/list/App.Hr.Hospital", "Icon": "FcOrganization", "ParentCode": "App.Hr.Definitions", @@ -1448,7 +1448,7 @@ "Id": "b3cf12f0-062a-4b1f-ad20-748f9459d8c4", "Code": "App.Hr.HospitalDepartment", "DisplayName": "App.Hr.HospitalDepartment", - "Order": 7, + "Order": 15, "Url": "/admin/list/App.Hr.HospitalDepartment", "Icon": "FcList", "ParentCode": "App.Hr.Definitions", @@ -1463,7 +1463,7 @@ "Id": "4a83ad06-d841-454e-a9ac-7d83e6bcd7d3", "Code": "App.Hr.DocumentType", "DisplayName": "App.Hr.DocumentType", - "Order": 8, + "Order": 5, "Url": "/admin/list/App.Hr.DocumentType", "Icon": "FcDocument", "ParentCode": "App.Hr.Definitions", @@ -1478,7 +1478,7 @@ "Id": "ae8c7c61-8b57-4335-bacb-d54bcce3d661", "Code": "App.Hr.Visitor", "DisplayName": "App.Hr.Visitor", - "Order": 8, + "Order": 12, "Url": "/admin/list/App.Hr.Visitor", "Icon": "FcBusinessman", "ParentCode": "App.Hr", @@ -1493,7 +1493,7 @@ "Id": "8803f8c5-e85b-491d-9330-a9dd5a95f1a1", "Code": "App.Hr.HealthCard", "DisplayName": "App.Hr.HealthCard", - "Order": 5, + "Order": 7, "Url": "/admin/list/App.Hr.HealthCard", "Icon": "FcInspection", "ParentCode": "App.Hr", @@ -1508,7 +1508,7 @@ "Id": "aa47dc14-483f-41ad-83f5-f304050db135", "Code": "App.Hr.Trainings", "DisplayName": "App.Hr.Trainings", - "Order": 6, + "Order": 8, "Url": null, "Icon": "FcGraduationCap", "ParentCode": "App.Hr", @@ -1568,7 +1568,7 @@ "Id": "18146db0-b2aa-49d8-b39c-0165a1d85e53", "Code": "App.Hr.Vehicles", "DisplayName": "App.Hr.Vehicles", - "Order": 7, + "Order": 11, "Url": null, "Icon": "FcAutomotive", "ParentCode": "App.Hr", @@ -1598,7 +1598,7 @@ "Id": "e07191b4-f6b0-42f2-a19a-fd22a41abf39", "Code": "App.Hr.Vehicle", "DisplayName": "App.Hr.Vehicle", - "Order": 2, + "Order": 4, "Url": "/admin/list/App.Hr.Vehicle", "Icon": "FcAutomotive", "ParentCode": "App.Hr.Vehicles", @@ -1628,7 +1628,7 @@ "Id": "e61fd31e-265b-410e-9e71-4862aea4bdff", "Code": "App.Hr.Driver", "DisplayName": "App.Hr.Driver", - "Order": 4, + "Order": 5, "Url": "/admin/list/App.Hr.Driver", "Icon": "FcBusinessman", "ParentCode": "App.Hr.Vehicles", @@ -1643,7 +1643,7 @@ "Id": "d2672ea5-55a2-43fc-8832-901cfd3bcf4d", "Code": "App.Hr.VehicleExpenseDefinition", "DisplayName": "App.Hr.VehicleExpenseDefinition", - "Order": 5, + "Order": 2, "Url": "/admin/list/App.Hr.VehicleExpenseDefinition", "Icon": "FcList", "ParentCode": "App.Hr.Vehicles", @@ -1658,7 +1658,7 @@ "Id": "be5ca380-4054-4cc5-80f6-67bee385a145", "Code": "App.Hr.VehicleExpense", "DisplayName": "App.Hr.VehicleExpense", - "Order": 6, + "Order": 7, "Url": "/admin/list/App.Hr.VehicleExpense", "Icon": "FcMoneyTransfer", "ParentCode": "App.Hr.Vehicles", @@ -1673,7 +1673,7 @@ "Id": "65918815-4fd4-49b7-aed1-477e0acc4e16", "Code": "App.Hr.VehicleMovement", "DisplayName": "App.Hr.VehicleMovement", - "Order": 7, + "Order": 6, "Url": "/admin/list/App.Hr.VehicleMovement", "Icon": "FcInspection", "ParentCode": "App.Hr.Vehicles", @@ -1688,10 +1688,10 @@ "Id": "0f1b3f0c-f9d8-4f09-9506-59fb19272176", "Code": "App.Hr.Shift", "DisplayName": "App.Hr.Shift", - "Order": 3, + "Order": 11, "Url": "/admin/list/App.Hr.Shift", "Icon": "FcClock", - "ParentCode": "App.Hr", + "ParentCode": "App.Hr.Definitions", "RequiredPermissionName": "App.Hr.Shift", "CssClass": null, "Target": null, @@ -1703,7 +1703,7 @@ "Id": "5786d92e-0501-4775-bf1b-697a41a90f40", "Code": "App.Hr.EventLog", "DisplayName": "App.Hr.EventLog", - "Order": 9, + "Order": 13, "Url": "/admin/list/App.Hr.EventLog", "Icon": "FcViewDetails", "ParentCode": "App.Hr", @@ -1718,7 +1718,7 @@ "Id": "aaef98c6-ab15-4097-9d32-d611db7de57d", "Code": "App.Hr.Intranet", "DisplayName": "App.Hr.Intranet", - "Order": 10, + "Order": 14, "Url": null, "Icon": "FcConferenceCall", "ParentCode": "App.Hr", @@ -1733,7 +1733,7 @@ "Id": "5cef6234-ae2d-4963-b7aa-84f58c5d1e8a", "Code": "App.Hr.Intranet.Announcement", "DisplayName": "App.Hr.Intranet.Announcement", - "Order": 1, + "Order": 3, "Url": "/admin/list/App.Hr.Intranet.Announcement", "Icon": "FcAdvertising", "ParentCode": "App.Hr.Intranet", @@ -1748,7 +1748,7 @@ "Id": "8eea0d26-4da7-4def-8228-bd340b518b29", "Code": "App.Hr.Intranet.Survey", "DisplayName": "App.Hr.Intranet.Survey", - "Order": 2, + "Order": 4, "Url": "/admin/list/App.Hr.Intranet.Survey", "Icon": "FcTodoList", "ParentCode": "App.Hr.Intranet", @@ -1763,7 +1763,7 @@ "Id": "216da72b-e243-4f07-afaa-04a7b79dc977", "Code": "App.Hr.Intranet.SocialPost", "DisplayName": "App.Hr.Intranet.SocialPost", - "Order": 3, + "Order": 5, "Url": "/admin/list/App.Hr.Intranet.SocialPost", "Icon": "FcComments", "ParentCode": "App.Hr.Intranet", @@ -1778,7 +1778,7 @@ "Id": "01246207-7a2e-43cc-82b1-3a475b242926", "Code": "App.Hr.Intranet.Events.EventType", "DisplayName": "App.Hr.Intranet.Events.EventType", - "Order": 4, + "Order": 1, "Url": "/admin/list/App.Hr.Intranet.Events.EventType", "Icon": "FcPlanner", "ParentCode": "App.Hr.Intranet", @@ -1793,7 +1793,7 @@ "Id": "319118e2-1a91-44e2-8f4d-45b7327d4975", "Code": "App.Hr.Intranet.Events.EventCategory", "DisplayName": "App.Hr.Intranet.Events.EventCategory", - "Order": 5, + "Order": 2, "Url": "/admin/list/App.Hr.Intranet.Events.EventCategory", "Icon": "FcTreeStructure", "ParentCode": "App.Hr.Intranet", @@ -1838,7 +1838,7 @@ "Id": "ee299353-fc0d-5a4b-b766-fd3729feb196", "Code": "App.Hr.LeaveType", "DisplayName": "App.Hr.LeaveType", - "Order": 9, + "Order": 12, "Url": "/admin/list/App.Hr.LeaveType", "Icon": "FcPlanner", "ParentCode": "App.Hr.Definitions", @@ -1853,7 +1853,7 @@ "Id": "ef40a47d-2d4a-5f21-b6a2-c70c078a7b0d", "Code": "App.Hr.ExpenseType", "DisplayName": "App.Hr.ExpenseType", - "Order": 10, + "Order": 9, "Url": "/admin/list/App.Hr.ExpenseType", "Icon": "FcMoneyTransfer", "ParentCode": "App.Hr.Definitions", @@ -1868,7 +1868,7 @@ "Id": "479a8e6f-ffca-56aa-af6d-584b231459ca", "Code": "App.Hr.BenefitType", "DisplayName": "App.Hr.BenefitType", - "Order": 11, + "Order": 10, "Url": "/admin/list/App.Hr.BenefitType", "Icon": "FcDonate", "ParentCode": "App.Hr.Definitions", @@ -1883,7 +1883,7 @@ "Id": "f35eff0e-a0d8-5f4c-8b34-4bd3e6ffb9c5", "Code": "App.Hr.WorkCalendar", "DisplayName": "App.Hr.WorkCalendar", - "Order": 2, + "Order": 4, "Url": "/admin/list/App.Hr.WorkCalendar", "Icon": "FcCalendar", "ParentCode": "App.Hr", @@ -1898,7 +1898,7 @@ "Id": "76a5d279-bbc1-564d-9430-fe068da2a396", "Code": "App.Hr.DisciplinaryPenaltyType", "DisplayName": "App.Hr.DisciplinaryPenaltyType", - "Order": 12, + "Order": 17, "Url": "/admin/list/App.Hr.DisciplinaryPenaltyType", "Icon": "FcList", "ParentCode": "App.Hr.Definitions", @@ -1913,7 +1913,7 @@ "Id": "1a81c7be-ef52-5332-8118-0e83b9bb49e1", "Code": "App.Hr.DisciplinaryCase", "DisplayName": "App.Hr.DisciplinaryCase", - "Order": 11, + "Order": 10, "Url": "/admin/list/App.Hr.DisciplinaryCase", "Icon": "FcHighPriority", "ParentCode": "App.Hr", @@ -1928,7 +1928,7 @@ "Id": "3651b5de-4588-4632-9ce1-35352059e2e2", "Code": "App.Hr.Recruitment", "DisplayName": "App.Hr.Recruitment", - "Order": 12, + "Order": 3, "Url": null, "Icon": "FcManager", "ParentCode": "App.Hr", @@ -1943,7 +1943,7 @@ "Id": "1b88ddd5-4875-442c-91e6-25f49f4bda05", "Code": "App.Hr.CandidateSource", "DisplayName": "App.Hr.CandidateSource", - "Order": 13, + "Order": 6, "Url": "/admin/list/App.Hr.CandidateSource", "Icon": "FcFeedback", "ParentCode": "App.Hr.Definitions", @@ -1958,7 +1958,7 @@ "Id": "f44ad474-e089-4852-b069-98856e791330", "Code": "App.Hr.RejectionReason", "DisplayName": "App.Hr.RejectionReason", - "Order": 14, + "Order": 7, "Url": "/admin/list/App.Hr.RejectionReason", "Icon": "FcCancel", "ParentCode": "App.Hr.Definitions", @@ -1973,7 +1973,7 @@ "Id": "b4717d28-e5ee-44ee-8219-472f85450bdf", "Code": "App.Hr.EvaluationCriterion", "DisplayName": "App.Hr.EvaluationCriterion", - "Order": 15, + "Order": 8, "Url": "/admin/list/App.Hr.EvaluationCriterion", "Icon": "FcRating", "ParentCode": "App.Hr.Definitions", @@ -2093,7 +2093,7 @@ "Id": "3dc572da-bad3-4fab-991c-0fc7e1d0cded", "Code": "App.Hr.Performance", "DisplayName": "App.Hr.Performance", - "Order": 13, + "Order": 9, "Url": null, "Icon": "FcBullish", "ParentCode": "App.Hr", @@ -2123,7 +2123,7 @@ "Id": "fcb6d389-df5a-4f9f-a18c-d91373ae08bb", "Code": "App.Hr.PerformanceReview", "DisplayName": "App.Hr.PerformanceReview", - "Order": 4, + "Order": 2, "Url": "/admin/list/App.Hr.PerformanceReview", "Icon": "FcInspection", "ParentCode": "App.Hr.Performance", @@ -2153,7 +2153,7 @@ "Id": "b1e055bd-3373-48ba-a4f4-2b3a0202f843", "Code": "App.Hr.DevelopmentPlan", "DisplayName": "App.Hr.DevelopmentPlan", - "Order": 2, + "Order": 4, "Url": "/admin/list/App.Hr.DevelopmentPlan", "Icon": "FcBullish", "ParentCode": "App.Hr.Performance", @@ -2168,7 +2168,7 @@ "Id": "c3ac8beb-302f-5285-89a5-9c98d2f19524", "Code": "App.Hr.Leave", "DisplayName": "App.Hr.Leave", - "Order": 14, + "Order": 5, "Url": null, "Icon": "FcOvertime", "ParentCode": "App.Hr", @@ -2208,6 +2208,81 @@ "IsDisabled": false, "ElementId": null, "ModuleId": "Hr" + }, + { + "Id": "5ccc44eb-7930-5b1e-9ef6-cadae2d2cc4d", + "Code": "App.Hr.Attendance", + "DisplayName": "App.Hr.Attendance", + "Order": 6, + "Url": null, + "Icon": "FcAlarmClock", + "ParentCode": "App.Hr", + "RequiredPermissionName": null, + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Hr" + }, + { + "Id": "11b83726-66b6-5d76-9256-3e70a2c8559b", + "Code": "App.Hr.AttendanceLog", + "DisplayName": "App.Hr.AttendanceLog", + "Order": 1, + "Url": "/admin/list/App.Hr.AttendanceLog", + "Icon": "FcTimeline", + "ParentCode": "App.Hr.Attendance", + "RequiredPermissionName": "App.Hr.AttendanceLog", + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Hr" + }, + { + "Id": "f762d84c-ac12-5d44-a0fd-cdc25e5dc7f4", + "Code": "App.Hr.Timesheet", + "DisplayName": "App.Hr.Timesheet", + "Order": 2, + "Url": "/admin/list/App.Hr.Timesheet", + "Icon": "FcPlanner", + "ParentCode": "App.Hr.Attendance", + "RequiredPermissionName": "App.Hr.Timesheet", + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Hr" + }, + { + "Id": "5b3b092f-f91f-5954-bd43-839c5cc9cfde", + "Code": "App.Hr.TimesheetMonthly", + "DisplayName": "App.Hr.TimesheetMonthly", + "Order": 3, + "Url": "/admin/list/App.Hr.TimesheetMonthly", + "Icon": "FcDataSheet", + "ParentCode": "App.Hr.Attendance", + "RequiredPermissionName": "App.Hr.TimesheetMonthly", + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Hr" + }, + { + "Id": "6e96e0fe-bd55-54c1-afbf-e262238ad15b", + "Code": "App.Hr.TimesheetPeriod", + "DisplayName": "App.Hr.TimesheetPeriod", + "Order": 4, + "Url": "/admin/list/App.Hr.TimesheetPeriod", + "Icon": "FcLock", + "ParentCode": "App.Hr.Attendance", + "RequiredPermissionName": "App.Hr.TimesheetPeriod", + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Hr" } ] } diff --git a/configs/seeds/host/data/App.SettingDefinitions.json b/configs/seeds/host/data/App.SettingDefinitions.json index cf60b237..eb6bf33f 100644 --- a/configs/seeds/host/data/App.SettingDefinitions.json +++ b/configs/seeds/host/data/App.SettingDefinitions.json @@ -1413,6 +1413,142 @@ "IsVisibleToClients": false, "IsInherited": false, "IsEncrypted": false + }, + { + "Id": "739c2cf2-4916-52f9-8e98-ba6241886617", + "Code": "App.HrSettings.Attendance.LateToleranceMinutes", + "MainGroupKey": "App.HrSettings", + "SubGroupKey": "App.HrSettings.Attendance", + "Order": 105, + "NameKey": "App.HrSettings.Attendance.LateToleranceMinutes", + "DescriptionKey": "App.HrSettings.Attendance.LateToleranceMinutes.Description", + "RequiredPermissionName": "App.HrSettings.Attendance", + "Providers": "T|G|D", + "DefaultValue": "10", + "DataType": "Number", + "SelectOptions": "{}", + "IsVisibleToClients": false, + "IsInherited": false, + "IsEncrypted": false + }, + { + "Id": "b2a49a01-b1db-570c-a16c-ef4b0eacd7e8", + "Code": "App.HrSettings.Attendance.EarlyLeaveToleranceMinutes", + "MainGroupKey": "App.HrSettings", + "SubGroupKey": "App.HrSettings.Attendance", + "Order": 106, + "NameKey": "App.HrSettings.Attendance.EarlyLeaveToleranceMinutes", + "DescriptionKey": "App.HrSettings.Attendance.EarlyLeaveToleranceMinutes.Description", + "RequiredPermissionName": "App.HrSettings.Attendance", + "Providers": "T|G|D", + "DefaultValue": "10", + "DataType": "Number", + "SelectOptions": "{}", + "IsVisibleToClients": false, + "IsInherited": false, + "IsEncrypted": false + }, + { + "Id": "ffb1bda6-0f98-5209-b51f-8a510a3250e7", + "Code": "App.HrSettings.Attendance.WeeklyLimitHours", + "MainGroupKey": "App.HrSettings", + "SubGroupKey": "App.HrSettings.Attendance", + "Order": 107, + "NameKey": "App.HrSettings.Attendance.WeeklyLimitHours", + "DescriptionKey": "App.HrSettings.Attendance.WeeklyLimitHours.Description", + "RequiredPermissionName": "App.HrSettings.Attendance", + "Providers": "T|G|D", + "DefaultValue": "45", + "DataType": "Number", + "SelectOptions": "{}", + "IsVisibleToClients": false, + "IsInherited": false, + "IsEncrypted": false + }, + { + "Id": "766856a3-2c94-587c-952c-8c9a817eef8a", + "Code": "App.HrSettings.Attendance.OvertimeRate", + "MainGroupKey": "App.HrSettings", + "SubGroupKey": "App.HrSettings.Attendance", + "Order": 108, + "NameKey": "App.HrSettings.Attendance.OvertimeRate", + "DescriptionKey": "App.HrSettings.Attendance.OvertimeRate.Description", + "RequiredPermissionName": "App.HrSettings.Attendance", + "Providers": "T|G|D", + "DefaultValue": "1.5", + "DataType": "Number", + "SelectOptions": "{}", + "IsVisibleToClients": false, + "IsInherited": false, + "IsEncrypted": false + }, + { + "Id": "94009195-23eb-5e7a-bcf5-80fe468e2baa", + "Code": "App.HrSettings.Attendance.AnnualOvertimeLimitHours", + "MainGroupKey": "App.HrSettings", + "SubGroupKey": "App.HrSettings.Attendance", + "Order": 109, + "NameKey": "App.HrSettings.Attendance.AnnualOvertimeLimitHours", + "DescriptionKey": "App.HrSettings.Attendance.AnnualOvertimeLimitHours.Description", + "RequiredPermissionName": "App.HrSettings.Attendance", + "Providers": "T|G|D", + "DefaultValue": "270", + "DataType": "Number", + "SelectOptions": "{}", + "IsVisibleToClients": false, + "IsInherited": false, + "IsEncrypted": false + }, + { + "Id": "3ab1284f-ac54-5796-a078-cffb86286f2f", + "Code": "App.HrSettings.Attendance.DefaultShiftStart", + "MainGroupKey": "App.HrSettings", + "SubGroupKey": "App.HrSettings.Attendance", + "Order": 110, + "NameKey": "App.HrSettings.Attendance.DefaultShiftStart", + "DescriptionKey": "App.HrSettings.Attendance.DefaultShiftStart.Description", + "RequiredPermissionName": "App.HrSettings.Attendance", + "Providers": "T|G|D", + "DefaultValue": "08:00", + "DataType": "Text", + "SelectOptions": "{}", + "IsVisibleToClients": false, + "IsInherited": false, + "IsEncrypted": false + }, + { + "Id": "3f30406e-7ce0-5805-8765-dddd98cff80a", + "Code": "App.HrSettings.Attendance.DefaultShiftEnd", + "MainGroupKey": "App.HrSettings", + "SubGroupKey": "App.HrSettings.Attendance", + "Order": 111, + "NameKey": "App.HrSettings.Attendance.DefaultShiftEnd", + "DescriptionKey": "App.HrSettings.Attendance.DefaultShiftEnd.Description", + "RequiredPermissionName": "App.HrSettings.Attendance", + "Providers": "T|G|D", + "DefaultValue": "18:00", + "DataType": "Text", + "SelectOptions": "{}", + "IsVisibleToClients": false, + "IsInherited": false, + "IsEncrypted": false + }, + { + "Id": "65b21d85-efac-5357-84a7-918f774b70cd", + "Code": "App.HrSettings.Attendance.DefaultBreakMinutes", + "MainGroupKey": "App.HrSettings", + "SubGroupKey": "App.HrSettings.Attendance", + "Order": 112, + "NameKey": "App.HrSettings.Attendance.DefaultBreakMinutes", + "DescriptionKey": "App.HrSettings.Attendance.DefaultBreakMinutes.Description", + "RequiredPermissionName": "App.HrSettings.Attendance", + "Providers": "T|G|D", + "DefaultValue": "60", + "DataType": "Number", + "SelectOptions": "{}", + "IsVisibleToClients": false, + "IsInherited": false, + "IsEncrypted": false } ] } diff --git a/configs/seeds/host/docs/modules/HrAttendance.md b/configs/seeds/host/docs/modules/HrAttendance.md new file mode 100644 index 00000000..af2b4fb9 --- /dev/null +++ b/configs/seeds/host/docs/modules/HrAttendance.md @@ -0,0 +1,552 @@ +# İK › Puantaj ve Devam Takibi (`App.Hr.Attendance`) + +Günlük giriş/çıkış hareketlerinden (PDKS, Excel aktarımı, elle giriş) çalışan × gün puantajı; +personel bazlı aylık puantaj, dönem kapanışı ve PDKS'nin hareket gönderdiği uç. Kişi eşlemesi kullanıcı +kartındaki PDKS Kart No / Sicil No alanlarıyladır. +İzin Yönetimi (onaylı izin → İzinli), Sağlık Kartı (istirahat → Raporlu), Çalışma Takvimi (resmî +tatil / arife) ve Vardiyalar (saat, mola, tolerans) puantajın girdisidir. Çalışan kendi puantajını +**Intranet › Dashboard**'daki **Puantajım** widget'ından izler; İK menüsü İK içindir. Wizard ekranları, +SQL nesneleri, custom component widget'ı, Custom Endpoint ve zamanlanmış işle kuruludur. Çerçeve dışında +tek ek vardır (kullanıcı onayıyla): kullanıcı detayındaki **Puantaj** sekmesi. + +> 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 | +| --- | --- | --- | +| Çalışan | Seçtiği ayın net saatini, geç kalma/erken çıkış dakikasını, fazla mesaisini, devamsız/izinli/raporlu günlerini ve yıllık toplamı (270 saatlik fazla mesai sınırıyla) görür | Intranet panosu: **Puantajım** widget'ı → Puantajım (aylar) → ayın günleri | +| İK | Hareketleri izler/düzeltir, elle takip edilen çalışanın gelmediği günü işaretler, aylık puantajı izler, ayı yeniden hesaplar ve kapatır, çalışanın PDKS Kart No'sunu kullanıcı kartına (İş sekmesi) girer, toleransı ve fazla mesai kurallarını ayarlar | İK › Puantaj ve Devam Takibi · Ayarlar › İnsan Kaynakları › Puantaj · Kullanıcı detayı › Puantaj | +| PDKS (servis kullanıcısı) | Kart okutmalarını toplu gönderir | `POST /api/app/custom-endpoint/hr/attendance/` | + +Kapsam: kiracı (`IsTenant`). Şube kırılımı yoktur. + +--- + +## 2. Analiz ve kararlar + +### 2.1 Talep + +> Human Resources → Puantaj ve Devam Takibi modülü: günlük hareketler, personel bazlı aylık puantaj. +> Intranet › Dashboard'da aylık puantajıma ulaşabileceğim, ilgili ayın durumunu ve yıllık toplamı gösteren +> widget (sol kolon, anket tarafı). Kolonlar: ilk giriş, son çıkış, net çalışma süresi, mola düşümü, geç +> kalma (dk), erken çıkış (dk), fazla mesai (saat), gün tipi (çalışma, hafta tatili, resmî tatil, izinli, +> raporlu, devamsız). Tolerans vardiya bazında (ör. 10 dk), ayarlardan dinamik. Haftalık 45 saati aşan +> çalışma fazla mesaidir, ücreti %50 zamlıdır (4857 md. 41), yıllık üst sınır 270 saat; ayarlardan +> yönetilir. Veri elle yazılabilir ya da PDKS'den akabilir. Kullanıcı detayında İzinler gibi bir Puantaj +> sekmesi. Diğer modüllerle core koda dokunmadan entegre olmalı. + +### 2.2 Depodan okunanlar (sorulmadı) + +- Vardiya `Hr_T_Shift` (`StartTime`/`EndTime` `SS:dd` metin, `BreakMinutes`, `WorkingHours`, gece vardiyası); çalışanın vardiyası `AbpUsers.ShiftId`. +- Tatiller `Hr_T_WorkCalendar` (`Holiday` / `HalfDay`, `FREQ=YEARLY`); hafta tatili İzin Yönetimi'nin `App.HrSettings.Leave.Work{Gün}` ayarları. +- Onaylı izin `Hr_T_LeaveRequest.ApprovalStatus = 'Onaylandı'`; rapor `Adm_T_UserSickLeave`. +- İstihdam `AbpUsers.HireDate` / `TerminationDate`; departman/pozisyon `DepartmentId` / `JobPositionId`. +- Kullanıcı kartında (İş sekmesi) PDKS Kart No (`AbpUsers.PdksCardNo`) ve Sicil No (`RegistrationNo`) alanları var; ayrı kart tablosu açılmadı. +- Zamanlanmış işin saklı yordamı parametresiz çağrılır (`PlatformBackgroundWorker`); Custom Endpoint gövdesindeki dizi ham JSON metni olarak bağlanır. + +### 2.3 Keşif turu cevapları + +| # | Soru | Seçilen | +| --- | --- | --- | +| 1 | Veri modeli | Ham hareket (`Hr_T_AttendanceLog`) + hesaplanan gün (`Hr_T_Timesheet`); İK günü elle düzeltebilir, düzeltilen gün yeniden hesapta ezilmez | +| 2 | Tolerans yeri | Vardiyada (`LateToleranceMinutes`, `EarlyLeaveToleranceMinutes`), boşsa Ayarlar › Puantaj (10 dk) | +| 3 | Geç kalma dakikası | Tolerans aşılırsa dakikanın tamamı yazılır, aşılmazsa 0 | +| 4 | Fazla mesai | Haftalık (Pzt–Paz) birikim 45 saati aştığı günden itibaren aşan kısım o günlere; hafta tatili ve resmî tatildeki çalışmanın tamamı; yıllık 270 saati aşan satır işaretlenir (engellemez) | +| 5 | PDKS | Excel import + API ucu (Custom Endpoint); kişi eşlemesi kullanıcı kartındaki PDKS Kart No, Sicil No ya da kullanıcı adıyla | +| 6 | Mola | `MAX(vardiya molası, gün içi okutulan çıkış→giriş aralıkları)` | +| 7 | Hesap zamanı | Hareket kaydında (o hafta) + gece işi (okutmasız günler) + dönem kaydı (ay) | +| 8 | Kapanış | İK ayı kilitler, onay akışı yok; müdür ekranı/widget'ı yok | +| 9 | Kullanıcı detayı sekmesi | Core istisnası onaylandı (`Details.tsx` + `TimesheetTab.tsx`, İzinler sekmesi emsali) | +| 10 | Elle takip (üretim sırasında) | Elle takipte yalnız gelinmeyen gün yazılır; yazılmayan iş günü "geldi" kabul edilir | + +### 2.4 Üretimde verilen kararlar + +| Konu | Karar | Neden | +| --- | --- | --- | +| Takip türü | Çalışan bazında otomatik: kullanıcı kartında PDKS Kart No'su olan çalışan **ilk PDKS/aktarım okutmasının gününden itibaren** okutmayla takip edilir (okutmasız iş günü Devamsız); diğerleri elle takip edilir (kayıtsız iş günü vardiya saatleriyle `IsAssumed`). Elle girilen hareket takip türünü değiştirmez | Ayrı bir ayar gerektirmez; kartın sonradan verilmesi geçmiş günleri devamsıza çevirmez | +| Gün sınırı | Hareketin iş günü vardiya bitişi ile bir sonraki başlangıç arasındaki boşluğun ortasından ayrılır (`Hr_V_AttendanceShift.DayOffset`) | Gece vardiyasının 23:50 okutması vardiyanın başladığı ertesi güne yazılır | +| Okutma yönü | `In` / `Out` / `Auto`; `Auto` sıraya göre giriş/çıkış sayılır | PDKS'lerin çoğu yön göndermez | +| Elle düzeltme | Günlük Puantaj'da kaydedilen gün `IsManual = 1` olur; otomatiğe dönmek için satır silinir (yeniden hesap aynı günü kurar) | Ekrandan "elle mi" bilgisini ayrıca istemeden yeniden hesabın düzeltmeyi ezmesini önler | +| Kapalı dönem | Hesap kapalı ayın günlerini yazmaz, yalnız haftalık birikime alır; ekrandan gelen hareket/gün değişikliği `THROW` ile geri alınır; PDKS/gece işi okutmayı `ClosedPeriod` hatasıyla işaretler | PDKS gönderimi tek bir eski okutma yüzünden durmasın | +| Kurulum sırası | Vardiya çözümü view'dadır (`Hr_V_AttendanceShift`) | SQL nesneleri dosya adına göre kurulur; `Hr_F_*` fonksiyonları `Hr_T_*` tablolarından önce oluşur | +| Gece işi kapsamı | `Scope = Host ve Kiracılar`; prosedür veritabanındaki bütün kiracıları işler ve aynı gün işlenen kiracıyı dönemin `NightlyAt` değeriyle atlar | Saklı yordam kiracı parametresi almaz | +| İzin entegrasyonu | `Hr_S_LeaveRequestAfterSave` ve `Hr_S_LeaveSickLeaveSync` sonunda talebin/raporun günleri yeniden hesaplanır | Onaylı izin ve rapor anında puantaja düşer; çekirdek koda dokunulmaz | +| Aylık özet anahtarı | `PeriodKey = {EmployeeId}-{YYYYMM}` hem view'ın `Id`'si hem günlük satırın kolonudur | Alt form ilişkisi tek alanla kurulur | +| Widget sınıfları | Bileşen sınıfları `className` literalleriyle yazılır, koşullu kısım dizge birleştirmeyle eklenir | Safelist üreteci şablon dizgisindeki ifadeyi sınıf sanır | + +### 2.5 Varsayılan kalanlar + +- Varsayılan vardiya 08:00–18:00, mola 60 dk (vardiyası olmayan çalışan için, ayarlarda değişir). +- İzinli/raporlu gün haftalık 45 saat birikimine 0 katkı verir; o gün okutma varsa net süre birikime girer. +- Yarım gün izinli günde geç/erken yazılmaz; arifede (`HalfDay`) vardiya süresinin yarısında biter. +- Yalnız giriş okutması olan gün `IsIncomplete` (Eksik Okutma) işaretlenir, net süre 0'dır. + +--- + +## 3. Menü ve ekranlar + +### 3.1 İK menüsü + +`İnsan Kaynakları › Puantaj ve Devam Takibi` (`App.Hr.Attendance`, sıra 15, `FcAlarmClock`) — yalnız İK. + +| Sıra | Menü (TR / EN) | `ListFormCode` | Kaynak | Alt formlar | Widget'lar | +| --- | --- | --- | --- | --- | --- | +| 1 | Günlük Hareketler / Attendance Events | `App.Hr.AttendanceLog` | `Hr_T_AttendanceLog` | — | Bugün · PDKS (bu ay) · Manuel (bu ay) · Hatalı | +| 2 | Günlük Puantaj / Daily Timesheet | `App.Hr.Timesheet` | `Hr_T_Timesheet` | — | Devamsız gün · Geç kalınan gün · Fazla mesai saati · Eksik okutma (bu ay) | +| 3 | Aylık Puantaj / Monthly Timesheet | `App.Hr.TimesheetMonthly` | `Hr_V_TimesheetMonthly` (salt okunur) | `App.Hr.Timesheet` (`Id → PeriodKey`) | Çalışan · Fazla mesai · Devamsız gün (bu ay) · Yıllık sınırı aşan | +| 4 | Puantaj Dönemleri / Timesheet Periods | `App.Hr.TimesheetPeriod` | `Hr_T_TimesheetPeriod` | — | Açık · Kapalı · Toplam | + +Görünümler: hepsi Grid, Card, Pivot, Chart. Günlük Puantaj'da ekleme yoktur (günleri hesap kurar). +Koşullu biçim: gün tipi (Devamsız kırmızı, Raporlu mor, İzinli mavi, tatiller gri), geç/erken/fazla +mesai > 0, hareket hatası, aylık satırda yıllık sınırın aşılması (satır). + +### 3.2 Çalışana ait ekranlar (menüsüz) + +| Ekran | `ListFormCode` | Satır süzmesi | Yapılabilen | +| --- | --- | --- | --- | +| Puantajım | `App.Hr.MyTimesheet` | `EmployeeId = @USERID` (`Hr_V_TimesheetMonthly`) | Ayları görür; detayda ayın günleri | +| Puantaj Günlerim | `App.Hr.MyTimesheetDay` | `EmployeeId = @USERID` (`Hr_T_Timesheet`) | Puantajım'ın sekmesi (`Id → PeriodKey`), salt okunur | + +### 3.3 Intranet › Dashboard widget'ı + +Sol kolon (`Column: 0`), İzinlerim'in (35/36) altında; kayıt `data/App.DeveloperKit.IntranetWidgets.json`. + +| `Code` · sıra | Bileşen | `PermissionName` | Gösterir | Buton | +| --- | --- | --- | --- | --- | +| `my-timesheet` · 37 | `MyTimesheetWidget` | `App.Hr.MyTimesheet` | Ay seçici (varsayılan içinde bulunulan ay); net saat, çalışılan gün, fazla mesai, geç kalma dk, erken çıkış dk, devamsız gün; izinli/raporlu/tatil günü; yıl toplamı (net saat, geç kalma, devamsız) ve fazla mesai / yıllık sınır çubuğu | Puantajım | + +Bileşen code modunda, rotasızdır; veriyi Puantajım ekranının sorgusundan okur (`GET /api/app/list-form-select/select`). + +### 3.4 Kullanıcı detayı › Puantaj + +`ui/src/views/admin/user-management/TimesheetTab.tsx`: içinde bulunulan yılın sekiz kartı (çalışma günü, +net saat, fazla mesai — yıllık sınırı aşınca kırmızı —, geç kalma, erken çıkış, devamsız, izinli, raporlu), +altında kullanıcıya süzülmüş **Aylık Puantaj**, **Günlük Puantaj** ve **Günlük Hareketler** listeleri. Her +parça kendi ekran yetkisiyle görünür; yeni hareket satırının `EmployeeId`'si süzgeçten dolar. + +### 3.5 Ayarlar + +Ayarlar › İnsan Kaynakları › Puantaj (`App.HrSettings` › `App.HrSettings.Attendance`, sağlayıcılar `T|G|D`): + +| Kod | Varsayılan | Kullanım | +| --- | --- | --- | +| `App.HrSettings.Attendance.LateToleranceMinutes` | 10 | Vardiyada tolerans yoksa | +| `App.HrSettings.Attendance.EarlyLeaveToleranceMinutes` | 10 | Vardiyada tolerans yoksa | +| `App.HrSettings.Attendance.WeeklyLimitHours` | 45 | Haftalık fazla mesai sınırı | +| `App.HrSettings.Attendance.OvertimeRate` | 1.5 | Zamlı fazla mesai saati çarpanı (Aylık Puantaj) | +| `App.HrSettings.Attendance.AnnualOvertimeLimitHours` | 270 | Yıllık sınır (işaret, widget çubuğu) | +| `App.HrSettings.Attendance.DefaultShiftStart` / `DefaultShiftEnd` | 08:00 / 18:00 | Vardiyası olmayan çalışan | +| `App.HrSettings.Attendance.DefaultBreakMinutes` | 60 | Vardiyası (ya da vardiya molası) olmayan çalışan | + +Hafta tatili İzin Yönetimi'nin çalışma günü ayarlarından (`App.HrSettings.Leave.Work{Gün}`) okunur. + +--- + +## 4. Veri modeli + +| Tablo / nesne | Kolonlar | Not | +| --- | --- | --- | +| `AbpUsers` (mevcut) | `PdksCardNo`, `RegistrationNo`, `ShiftId`, `HireDate`, `TerminationDate` | Kişi eşlemesi, vardiya, istihdam aralığı | +| `Hr_T_AttendanceLog` | `EmployeeId` (boş olabilir), `CardNo`, `EventTime` (yerel saat), `Direction` (In/Out/Auto), `Source` (Manual/Pdks/Import), `DeviceCode`, `Note`, `WorkDate` (hesaplanır), `IsProcessed`, `ProcessError` (UnknownCard/ClosedPeriod) | `IsProcessed = 0` satırları işlenmeyi bekler | +| `Hr_T_Timesheet` | `EmployeeId`, `WorkDate`, `PeriodYear`, `PeriodMonth`, `PeriodKey`, `ShiftId`, `DayType` (Work/WeeklyOff/Holiday/Leave/Sick/Training/Absent), `LeaveTypeId` (izinli/raporlu günün türü), `TrainingId` (eğitim günü), `FirstIn`, `LastOut`, `BreakMinutes`, `NetMinutes`, `NetHours`, `LateMinutes`, `EarlyLeaveMinutes`, `OvertimeHours`, `IsManual`, `IsIncomplete`, `IsAssumed`, `Note`, `CalculatedAt` | Çalışan × gün tek etkin satır | +| `Hr_T_TimesheetPeriod` | `PeriodYear`, `PeriodMonth`, `Status` (Open/Closed), `CalculatedAt`, `ClosedAt`, `ClosedById`, `NightlyAt`, `Note` | Kiracıda yıl+ay tekil (prosedür denetler) | +| `Hr_T_Shift` (+) | `LateToleranceMinutes`, `EarlyLeaveToleranceMinutes` | Vardiyalar ekranında düzenlenir | +| `Hr_V_AttendanceShift` | Çalışanın dakika cinsinden vardiyası, mola, toleranslar, `DayOffset` | Varsayılanlar ayardan | +| `Hr_V_TimesheetMonthly` | Çalışan × ay toplamları, `UnpaidLeaveDays` (ücretsiz türdeki izinli gün — bordroda eksik gün), `TrainingDays`, `OvertimePaidHours`, `YearOvertimeHours`, `AnnualOvertimeLimit`, `IsOverAnnualLimit`, `PeriodStatus` | `Id = PeriodKey` | + +Entity yoktur (wizard tabloları); `sql/object/`. + +--- + +## 5. İş kuralları ve hesaplar + +### 5.1 Prosedürler + +| Nesne | Ne yapar | Çağıran | +| --- | --- | --- | +| `Hr_S_TimesheetCalculate @TenantId, @EmployeeId, @From, @To, @ActorId` | Aralığı tam haftalara genişletip (bugünle sınırlı) çalışan × gün satırlarını kurar/günceller; kapalı ayı yazmaz | Aşağıdakilerin hepsi, izin ve rapor prosedürleri | +| `Hr_S_AttendanceProcess @FailOnClosed` | İşlenmemiş hareketlerde kart → çalışan, iş günü, hata; etkilenen günleri (eski + yeni) yeniden hesaplar | Günlük Hareketler kayıt/silme, PDKS ucu, gece işi | +| `Hr_S_AttendanceImport @TenantId, @UserId, @Items` | PDKS gönderimini (`CardNo`, `RegistrationNo` ya da `UserName`; `EventTime`, `Direction`, `DeviceCode`) yazar, tekrarı atlar; `Received/Inserted/Skipped/Errors` döner | Custom Endpoint | +| `Hr_S_TimesheetPeriodAfterSave @PeriodId, @ActorId` | Yıl/ay doğrulama ve tekillik; açık dönemde ayı yeniden hesaplar; kapatmada son hesap + kilit | Puantaj Dönemleri kayıt | +| `Hr_S_TimesheetNightly` | Kart numarası sonradan girilen "Kart tanımsız" okutmaları yeniden kuyruğa alır ve işler; her kiracı için ayın dönemini açar, dünün ayını ve kapanmamışsa önceki ayı hesaplar | Zamanlanmış iş `Timesheet Nightly` (02:00) | +| `Hr_F_WorkCalendarDayType @TenantId, @Day` | Güne düşen `Holiday` / `HalfDay` | Hesap | +| `Hr_F_TimesheetPeriodClosed @TenantId, @From, @To` | Aralığın değdiği aylardan biri kapalı dönem mi | İzin, rapor ve izin guard prosedürleri | +| `Hr_S_TrainingSync @TrainingId, @UserId, @ActorId` | Katılımcının (boşsa bütün katılımcıların) eğitim günlerini yeniden hesaplar, bağlı gelişim aksiyonunu tamamlar | Eğitimler ve Katılımcılar kayıt/silme | +| `Hr_S_WorkCalendarAfterSave @CalendarId, @ActorId` | Takvim satırına denk gelen izinlerin gün sayısını ve puantajı yeniden hesaplar | Çalışma Takvimi kayıt/silme | + +### 5.2 Günün hesabı + +1. **Gün tipi** (öncelik sırasıyla): + 1. rapor (Sağlık Kartı istirahati; takvim günü, hafta sonu dahil) → `Sick`; + 2. onaylı **ücretsiz** izin (`LeaveType.IsPaid = 0`: ücretsiz izin, doğum izni; takvim günü) → `Leave`; + 3. takvim tatili → `Holiday`; ayarda çalışma günü değil → `WeeklyOff`; + 4. onaylı **ücretli** izin → `Leave` (ücretli izne denk gelen tatil izin günü değildir, 4857 md. 56 — izin gün sayısıyla aynı kural); yarım gün izinde okutma varsa `Work`; + 5. okutma var → `Work`; + 6. eğitime "Katıldı" işaretli katılımcı → `Training` (vardiya saatleriyle, `IsAssumed`); + 7. elle takip edilen çalışan → `Work` (`IsAssumed`, vardiya saatleri); geçmiş gün → `Absent`; kartlı çalışanın okutmasız bugünü yazılmaz. + + İzinli/raporlu günde `LeaveTypeId`, eğitim gününde `TrainingId` yazılır. İstihdam dışındaki okutmasız gün yazılmaz. +2. **İlk giriş / son çıkış**: ilk `In` (yoksa ilk okutma) / son `Out` (ilk girişten sonraysa). +3. **Mola** = `MAX(vardiya molası, ilk giriş–son çıkış arasındaki çıkış→giriş aralıkları)`, brüt süreyi aşamaz; elle düzeltilen günde girilen mola. +4. **Net** = son çıkış − ilk giriş − mola. +5. **Geç kalma** = ilk giriş − vardiya başlangıcı, tolerans aşılırsa tamamı; **erken çıkış** = vardiya bitişi (arifede yarı süre) − son çıkış, tolerans aşılırsa tamamı. Yalnız `Work` gününde; eğitim günü haftalık birikime çalışma gibi girer. +6. **Fazla mesai** = `WeeklyOff`/`Holiday` gününde net sürenin tamamı; diğer günlerde haftanın kümülatif netinin sınırı aştığı kısım (`max(0, kümülatif − sınır) − max(0, önceki kümülatif − sınır)`). +7. Kaynağı kalkan gün: tek çalışanlık hesap, artık hiçbir izin/rapor/katılımla örtüşmeyen `Leave`/`Sick`/`Training` günlerini (talebin tarihi değişti, rapor ya da katılım silindi) aralığa katar; eski günler aynı işlemde düzelir. +8. Aylık view: `OvertimePaidHours = OvertimeHours × OvertimeRate`; `YearOvertimeHours` ocaktan o aya birikim; `IsOverAnnualLimit` sınır aşımı. + +### 5.3 Ekran komutları + +| Ekran | Komut | +| --- | --- | +| Günlük Hareketler | Ekle/düzenle/sil sonrası satır işlenmemiş işaretlenir → `Hr_S_AttendanceProcess 1` (kapalı dönemde kayıt geri alınır) | +| Günlük Puantaj | Düzenle/sil öncesi kapalı dönem kontrolü; düzenleme sonrası `IsManual = 1, IsAssumed = 0` ve günün haftası yeniden hesaplanır; silme sonrası gün otomatik yeniden kurulur | +| Puantaj Dönemleri | Kayıt sonrası `Hr_S_TimesheetPeriodAfterSave`; kapalı dönem silinemez; ayda onay bekleyen izin varsa kapatılamaz | + +Hata kodları: 51200 (kapalı döneme hareket), 51201 (kapalı dönemin günü), 51210 (PDKS gövdesi), 51220–51223 +(dönem; 51223 onay bekleyen izin), 51118 (kapalı döneme izin), 51120 (kapalı döneme rapor). + +--- + +## 6. Yetki ve görünürlük + +İzin grubu `App.Hr`, modül `Sas|Hr`. Kök `App.Hr.Attendance` (sıra 9); dört ekran altında, her biri +`.Create/.Update/.Delete/.Export/.Import/.Note` ile. `App.Hr.MyTimesheet` (sıra 10) kökte, +`App.Hr.MyTimesheetDay` onun altında. Ayar yetkisi `App.HrSettings.Attendance` (`App.Administration` +grubu, `App.HrSettings` altında). Hiçbir yetki role otomatik atanmaz. + +| Rol | Yetkiler | +| --- | --- | +| Tüm çalışanlar | `App.Hr.MyTimesheet`, `App.Hr.MyTimesheetDay` (widget ve Puantajım) | +| İK | `App.Hr.Attendance` dalının tamamı, `App.HrSettings.Attendance` | +| PDKS servis kullanıcısı | `PDKS` rolü + `App.DeveloperKit.CustomEndpoints.Post` | + +--- + +## 7. Entegrasyonlar + +| Modül | Yön | Nasıl | +| --- | --- | --- | +| Kimlik › Kullanıcılar | → puantaj | PDKS Kart No / Sicil No kişi eşlemesi, vardiya, işe giriş/çıkış; kart numarası değişikliği gece işinde yansır | +| İzin Yönetimi | → puantaj | `Hr_S_LeaveRequestAfterSave` (kayıt, karar, silme) sonunda talebin günleri — tarihi değiştiyse eski günleri de — yeniden hesaplanır; onaylı izin `Leave` | +| Sağlık Kartı › İstirahatler | ↔ izin, → puantaj | `Hr_S_LeaveSickLeaveSync` (kayıt, silme) raporu onaylı Rapor talebine eşler, rapora denk gelen izin günlerini bakiyeye döndürür (`Hr_S_LeaveDaysRefresh`), günleri yeniden hesaplar; rapor `Sick` | +| Eğitimler | → puantaj | Katıldı işaretli katılımcının eğitim günleri `Training`; eğitim/katılımcı kaydı `Hr_S_TrainingSync` ile hemen yansır | +| Çalışma Takvimi | → izin, → puantaj | Tatil `Holiday`, arife `HalfDay` (yarım vardiya); takvim kaydı denk gelen izinlerin gün sayısını ve puantajı hemen yeniler (`Hr_S_WorkCalendarAfterSave`) | +| Vardiyalar / kullanıcı vardiyası | → puantaj | Saat, mola, tolerans; değişiklik gece işinde ya da dönem kaydında yansır | +| İzin ayarları | → puantaj | Hafta tatili günleri | +| PDKS | → hareket | Custom Endpoint `POST /api/app/custom-endpoint/hr/attendance/` (`data/App.DeveloperKit.CustomEndpoints.json`, `PermissionsJson`: rol `PDKS`) | +| Excel | → hareket | Günlük Hareketler import'u aynı kayıt yolundan (`InsertAfterCommand`) geçer; `Source` boş gelir ve `Import` yazılır | +| Intranet | ← puantaj | `my-timesheet` widget'ı | +| Kullanıcı detayı | ← puantaj | Puantaj sekmesi | + +### 7.1 Çakışma kuralları (modüller birbirine zıt sonuç vermez) + +| Durum | Kural | Nerede | +| --- | --- | --- | +| Raporlu gün | Devamsız yazılmaz; `Sick` her şeyin önündedir (okutma olsa da) | `Hr_S_TimesheetCalculate` | +| Yıllık izin sırasında rapor | Rapora denk gelen izin günü izinden sayılmaz, bakiyeye döner; puantajda `Sick` | `Hr_F_LeaveNetDays`, `Hr_S_LeaveDaysRefresh` | +| Rapor talebi onay beklerken | Sağlık kartına ve puantaja düşmez; onayla istirahat kaydı oluşur, redde kalkar | `Hr_S_LeaveRequestAfterSave` | +| Ücretli izne denk gelen tatil | Puantajda `Holiday`/`WeeklyOff`; izin gün sayısına girmez (4857 md. 56) | hesap + `Hr_F_LeaveWorkDays` | +| Ücretsiz izin / doğum izni | Hafta tatili ve genel tatil dahil `Leave` (ücret doğmaz); aylıkta `UnpaidLeaveDays` | hesap + aylık view | +| Eğitime katılan | Okutması yoksa devamsız değil `Training`; okutması varsa `Work` | hesap | +| Kapalı puantaj ayı | İzin talebi ve rapor eklenemez/değiştirilemez/silinemez (51118, 51120); onay bekleyen izni olan ay kapatılamaz (51223) | guard + kayıt prosedürleri + dönem kaydı | +| İstihdam dışı | İzin tarihleri işe giriş – işten çıkış arasında olmalı (51119); puantaj istihdam dışında gün yazmaz | `Hr_S_LeaveRequestAfterSave`, hesap | +| Takvime sonradan girilen bayram | Denk gelen izinlerin gün sayısı ve puantaj hemen yenilenir | `Hr_S_WorkCalendarAfterSave` | + +PDKS gövdesi: + +```json +{ "Items": [ { "CardNo": "000123", "EventTime": "2026-10-05T08:02:00", "Direction": "In", "DeviceCode": "GATE-1" } ] } +``` + +`Items` dizi ya da JSON metni olabilir; `CardNo` yerine `UserName` gönderilebilir. Endpoint kaydı +kiracıya aittir (`CustomEndpoint` `IMultiTenant`): seed satırı host'a kurulur, kiracıda Developer Kit › +Custom Endpoints'ten aynı SQL ve parametrelerle eklenir. + +--- + +## 8. Akış örneği + +1. İK üretim çalışanlarının kullanıcı kartına (İş sekmesi) PDKS Kart No girer; ofis çalışanlarında alan boştur (elle takip). +2. PDKS her 5 dakikada okutmaları uca gönderir; **Günlük Hareketler**'e düşer, Günlük Puantaj o hafta için güncellenir. Tanımsız kart "Kart tanımsız" görünür; numara kullanıcı kartına girilince gece işi okutmayı işler. +3. Gece 02:00'de iş dünü kurar: kartlı çalışanın okutmasız iş günü Devamsız, elle takip edilen çalışanın günü vardiya saatleriyle Varsayılan çalışma. +4. Ofis çalışanı bir gün gelmez; İK **Günlük Puantaj**'da o günü Devamsız yapar (gün Elle olur). +5. Ay sonunda İK **Aylık Puantaj**'ı kontrol eder, yıllık sınırı aşanları görür; **Puantaj Dönemleri**'nde ayı Kapalı yapar. +6. Çalışan panodaki **Puantajım**'da ayını ve yıl toplamını görür, butonla aylarına ve günlerine iner. + +--- + +## 9. Sık sorulanlar ve bilinen sınırlar + +**Okutması olmayan çalışan neden hep "geldi" görünüyor?** Kullanıcı kartında PDKS Kart No yoksa (ya da henüz PDKS okutması gelmediyse) elle takip edilir; gelinmeyen gün Günlük Puantaj'da işaretlenir. İlk PDKS okutmasından itibaren okutmayla takip edilir. + +**Düzelttiğim gün neden yeniden hesapta değişmiyor?** Elle düzeltilen gün korunur. Otomatiğe döndürmek için satırı silin. + +**Vardiya/takvim/ayar değişti, puantaj eski.** Gece işi dünün ve önceki ayın günlerini yeniler; hemen yansıtmak için Puantaj Dönemleri'nde ilgili ayı kaydedin. + +**Kapalı aya PDKS okutması geldi.** Okutma `Kapalı dönem` hatasıyla kalır; dönem açılıp kaydedilirse hareket ekranından düzenlenerek işlenir. + +**Fazla mesai hafta tatilinde neden tamamı?** Talepte istenen kural (hafta tatili ve resmî tatilde çalışma fazla mesaidir); haftalık 45 saat birikimine bu günler katılmaz. + +**İzin talebinin tarihi değişti, eski günler ne olur?** Aynı kayıtta düzelir: tek çalışanlık hesap kaynağı kalmayan izinli/raporlu/eğitim günlerini aralığa katar. + +**Hasta raporu alan çalışan devamsız mı yazılır?** Hayır. Rapor günleri (hafta sonu dahil) `Raporlu`dur; aynı güne izin ya da okutma düşse bile rapor önce gelir. Yıllık izindeyken rapor alındıysa o günler izinden düşmez, bakiyeye döner. + +**Eğitimdeki çalışan devamsız görünüyor.** Katılımcı satırında durum "Katıldı" olmalıdır; "Katılmadı/Mazeretli" günler normal hesaplanır. + +**Çalışma Takvimi kaydı sonrası hangi günler yenilenir?** Satırın tarihleri (yıllık tekrarlıda bu yıl ve gelecek yıl). Tarihi değiştirilen satırın eski günleri gece işinde ya da dönem kaydında düzelir. + +--- + +## 10. Dosyalar ve geri alma + +| Dosya | İçerik | +| --- | --- | +| `configs/seeds/host/sql/object/Hr_T_{AttendanceLog,Timesheet,TimesheetPeriod}.sql` | Tablolar | +| `configs/seeds/host/sql/object/Hr_T_Shift.sql` | Vardiya toleransı kolonları | +| `configs/seeds/host/sql/object/Hr_V_{AttendanceShift,TimesheetMonthly}.sql` | View'lar | +| `configs/seeds/host/sql/object/Hr_F_{WorkCalendarDayType,TimesheetPeriodClosed,LeaveNetDays}.sql` | Takvim günü türü, kapalı dönem, rapordan arınmış izin günü | +| `configs/seeds/host/sql/object/Hr_S_{TimesheetCalculate,AttendanceProcess,AttendanceImport,TimesheetPeriodAfterSave,TimesheetNightly}.sql` | Hesap ve tetikler | +| `configs/seeds/host/sql/object/Hr_S_{LeaveRequestAfterSave,LeaveRequestGuard,LeaveSickLeaveSync,LeaveDaysRefresh}.sql` | İzin/rapor → puantaj tetiği, kapalı dönem guard'ı, rapor → izin günü | +| `configs/seeds/host/sql/object/Hr_S_{TrainingSync,WorkCalendarAfterSave}.sql` | Eğitim ve takvim → puantaj tetiği | +| `configs/seeds/host/wizard/{LeaveRequest,MyLeaveRequest,HealthCardSickLeave,Training,TrainingParticipant,WorkCalendar}.json` | Tetik komutları (silme dahil) | +| `api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs` (`UserSickLeave`) | Kullanıcı detayındaki istirahat listesinin silme tetiği | +| `configs/seeds/host/wizard/{AttendanceLog,Timesheet,TimesheetMonthly,TimesheetPeriod,MyTimesheet,MyTimesheetDay}.json` | 6 wizard | +| `configs/seeds/host/wizard/Shift.json` | Tolerans alanları | +| `configs/seeds/host/data/App.DeveloperKit.CustomComponents/1bca19aa-e144-5e4c-b23b-9eddd4dafd19.json` | `MyTimesheetWidget` | +| `configs/seeds/host/data/App.DeveloperKit.IntranetWidgets.json` | `my-timesheet` | +| `configs/seeds/host/data/App.DeveloperKit.CustomEndpoints.json` | PDKS ucu | +| `configs/seeds/host/data/App.BackgroundWorkers.RecurringJobs.json` | `Timesheet Nightly` | +| `configs/seeds/host/data/App.SettingDefinitions.json` | `App.HrSettings.Attendance.*` | +| `configs/seeds/host/data/{App.Menus.Menu,Abp.Identity.Permissions,App.Languages.LanguageText}.json` | Menü, yetki, dil | +| `ui/src/views/admin/user-management/{TimesheetTab,Details}.tsx` | Kullanıcı detayı › Puantaj | + +Geri alma: Wizard Manager'dan altı ekran silinir; widget, endpoint, iş ve ayar satırları kendi +ekranlarından kaldırılır. İzin/rapor prosedürlerindeki `Hr_S_TimesheetCalculate` çağrısı kaldırılmadan +prosedür silinmemelidir. Tablolar düşürülmez. + + +## Ek — Ekran envanteri (otomatik) + +> Wizard dosyalarından üretilir; deploy, silme, tasarımcı kaydı ve import'ta yenilenir. Elle düzenleme bir sonraki yenilemede kaybolur. + +### Günlük Hareketler — `App.Hr.AttendanceLog` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/AttendanceLog.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Attendance` › `App.Hr.AttendanceLog` (sıra 1) | +| Yetki | `App.Hr.AttendanceLog` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Günlük Hareketler — PDKS'den (kart okuyucu), Excel aktarımından gelen ya da elle girilen ham giriş/çıkış okutmaları. | +| Kaynak | `Hr_T_AttendanceLog` · 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.Hr.Attendance.Widget.Today`, `App.Hr.Attendance.Widget.Pdks`, `App.Hr.Attendance.Widget.Manual`, `App.Hr.Attendance.Widget.Error` | +| Komutlar | InsertAfter: `Hr_S_AttendanceProcess` · UpdateAfter: `Hr_S_AttendanceProcess` · DeleteAfter: `Hr_S_AttendanceProcess` | +| Form varsayılanları | Direction=Auto, Source=Manual | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `EmployeeId` | Çalışan | dxSelectBox | | ✓ | sorgu: AbpUsers | +| `CardNo` | Kart No | dxTextBox | | ✓ | | +| `EventTime` | Zaman | dxDateBox | ✓ | ✓ | | +| `Direction` | Yön | dxSelectBox | ✓ | ✓ | liste: In, Out, Auto | +| `Source` | Kaynak | dxSelectBox | | ✓ | liste: Manual, Pdks, Import | +| `DeviceCode` | Cihaz | dxTextBox | | ✓ | | +| `WorkDate` | İş Günü | dxDateBox | | | | +| `ProcessError` | Hata | dxSelectBox | | | liste: UnknownCard, ClosedPeriod | +| `Note` | Not | dxTextArea | | ✓ | | + +### Günlük Puantaj — `App.Hr.Timesheet` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Timesheet.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Attendance` › `App.Hr.Timesheet` (sıra 2) | +| Yetki | `App.Hr.Timesheet` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Günlük Puantaj — çalışan × gün satırı: ilk giriş, son çıkış, net çalışma süresi, mola düşümü, geç kalma (dk), erken çıkış (dk), fazla mesai (saat) ve gün tipi (çalışma, hafta tatili, resmî tatil, izinli, raporlu, eğitimde, devamsız). | +| Kaynak | `Hr_T_Timesheet` · 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.Hr.Attendance.Widget.Absent`, `App.Hr.Attendance.Widget.Late`, `App.Hr.Attendance.Widget.Overtime`, `App.Hr.Attendance.Widget.Incomplete` | +| Komutlar | UpdateBefore: SQL · UpdateAfter: `Hr_S_TimesheetCalculate` · DeleteBefore: SQL · DeleteAfter: `Hr_S_TimesheetCalculate` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `EmployeeId` | Çalışan | dxSelectBox | | ✓ | sorgu: AbpUsers | +| `WorkDate` | İş Günü | dxDateBox | | ✓ | | +| `DayType` | Gün Tipi | dxSelectBox | ✓ | ✓ | liste: Work, WeeklyOff, Holiday, Training, Leave, Sick, Absent | +| `LeaveTypeId` | İzin Türü | dxSelectBox | | ✓ | sorgu: Hr_T_LeaveType | +| `TrainingId` | Eğitim | dxSelectBox | | | sorgu: Hr_T_Training | +| `ShiftId` | Vardiya | dxSelectBox | | | sorgu: Hr_T_Shift | +| `FirstIn` | İlk Giriş | dxDateBox | | ✓ | | +| `LastOut` | Son Çıkış | dxDateBox | | ✓ | | +| `NetHours` | Net Çalışma (saat) | dxNumberBox | | | | +| `BreakMinutes` | Mola Düşümü (dk) | dxNumberBox | | ✓ | | +| `LateMinutes` | Geç Kalma (dk) | dxNumberBox | | | | +| `EarlyLeaveMinutes` | Erken Çıkış (dk) | dxNumberBox | | | | +| `OvertimeHours` | Fazla Mesai (saat) | dxNumberBox | | | | +| `IsAssumed` | Varsayılan | dxCheckBox | | | | +| `IsManual` | Elle | dxCheckBox | | | | +| `IsIncomplete` | Eksik Okutma | dxCheckBox | | | | +| `Note` | Not | dxTextArea | | ✓ | | +| `PeriodYear` | Yıl | dxNumberBox | | | | +| `PeriodMonth` | Ay | dxNumberBox | | | | +| `PeriodKey` | Dönem Anahtarı | dxTextBox | | | | + +### Aylık Puantaj — `App.Hr.TimesheetMonthly` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/TimesheetMonthly.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Attendance` › `App.Hr.TimesheetMonthly` (sıra 3) | +| Yetki | `App.Hr.TimesheetMonthly` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Aylık Puantaj — Günlük Puantaj'ın personel bazlı aylık toplamı (salt okunur). | +| Kaynak | `Hr_V_TimesheetMonthly` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | +| Kapsam | Kiracı | +| Alt formlar | `App.Hr.Timesheet` (Id → PeriodKey) | +| Widget'lar | `App.Hr.Attendance.Widget.Employees`, `App.Hr.Attendance.Widget.Overtime`, `App.Hr.Attendance.Widget.Absent`, `App.Hr.Attendance.Widget.OverLimit` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `EmployeeId` | Çalışan | dxSelectBox | | ✓ | sorgu: AbpUsers | +| `DepartmentId` | Departman | dxSelectBox | | ✓ | sorgu: Hr_T_Department | +| `JobPositionId` | Pozisyon | dxSelectBox | | ✓ | sorgu: Hr_T_JobPosition | +| `PeriodYear` | Yıl | dxNumberBox | | ✓ | | +| `PeriodMonth` | Ay | dxNumberBox | | ✓ | | +| `PeriodStatus` | Dönem Durumu | dxSelectBox | | ✓ | liste: Open, Closed | +| `WorkDays` | Çalışma Günü | dxNumberBox | | ✓ | | +| `NetHours` | Net Çalışma (saat) | dxNumberBox | | ✓ | | +| `LateMinutes` | Geç Kalma (dk) | dxNumberBox | | ✓ | | +| `LateDays` | Geç Kalınan Gün | dxNumberBox | | ✓ | | +| `EarlyLeaveMinutes` | Erken Çıkış (dk) | dxNumberBox | | ✓ | | +| `EarlyLeaveDays` | Erken Çıkılan Gün | dxNumberBox | | ✓ | | +| `OvertimeHours` | Fazla Mesai (saat) | dxNumberBox | | ✓ | | +| `OvertimePaidHours` | Zamlı Fazla Mesai (saat) | dxNumberBox | | ✓ | | +| `WeeklyOffDays` | Hafta Tatili | dxNumberBox | | ✓ | | +| `HolidayDays` | Resmî Tatil | dxNumberBox | | ✓ | | +| `LeaveDays` | İzinli Gün | dxNumberBox | | ✓ | | +| `UnpaidLeaveDays` | Ücretsiz İzinli Gün | dxNumberBox | | ✓ | | +| `TrainingDays` | Eğitim Günü | dxNumberBox | | ✓ | | +| `SickDays` | Raporlu Gün | dxNumberBox | | ✓ | | +| `AbsentDays` | Devamsız Gün | dxNumberBox | | ✓ | | +| `IncompleteDays` | Eksik Okutmalı Gün | dxNumberBox | | ✓ | | +| `AssumedDays` | Varsayılan Gün | dxNumberBox | | ✓ | | +| `YearOvertimeHours` | Yıllık Fazla Mesai (saat) | dxNumberBox | | ✓ | | +| `AnnualOvertimeLimit` | Yıllık Fazla Mesai Sınırı | dxNumberBox | | ✓ | | +| `IsOverAnnualLimit` | Yıllık Sınır Aşıldı | dxNumberBox | | | | + +### Puantaj Dönemleri — `App.Hr.TimesheetPeriod` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/TimesheetPeriod.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Attendance` › `App.Hr.TimesheetPeriod` (sıra 4) | +| Yetki | `App.Hr.TimesheetPeriod` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Puantaj Dönemleri — aylık puantaj dönemleri: yeniden hesaplama ve kapanış. | +| Kaynak | `Hr_T_TimesheetPeriod` · 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.Hr.Attendance.Widget.Open`, `App.Hr.Attendance.Widget.Closed`, `App.Widget.Total` | +| Komutlar | InsertAfter: `Hr_S_TimesheetPeriodAfterSave` · UpdateAfter: `Hr_S_TimesheetPeriodAfterSave` · DeleteBefore: SQL | +| Form varsayılanları | PeriodYear=@YEAR, PeriodMonth=@MONTH, Status=Open | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `PeriodYear` | Yıl | dxNumberBox | ✓ | ✓ | | +| `PeriodMonth` | Ay | dxNumberBox | ✓ | ✓ | | +| `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Open, Closed | +| `CalculatedAt` | Hesaplanma | dxDateBox | | | | +| `ClosedAt` | Kapanış | dxDateBox | | | | +| `ClosedById` | Kapatan | dxSelectBox | | | sorgu: AbpUsers | +| `NightlyAt` | Gece İşi | dxDateBox | | | | +| `Note` | Not | dxTextArea | | ✓ | | + +### Puantajım — `App.Hr.MyTimesheet` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/MyTimesheet.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Hr.MyTimesheet` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Puantajım — kendi aylık puantajınız: ay ay çalışma günü, net saat, geç kalma, erken çıkış, fazla mesai ve izinli/raporlu/devamsız günler. | +| Kaynak | `Hr_V_TimesheetMonthly` · filtre `"EmployeeId" = '@USERID'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | +| Kapsam | Kiracı | +| Alt formlar | `App.Hr.MyTimesheetDay` (Id → PeriodKey) | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `EmployeeId` | Çalışan | dxSelectBox | | ✓ | sorgu: AbpUsers | +| `PeriodYear` | Yıl | dxNumberBox | | ✓ | | +| `PeriodMonth` | Ay | dxNumberBox | | ✓ | | +| `PeriodStatus` | Dönem Durumu | dxSelectBox | | ✓ | liste: Open, Closed | +| `WorkDays` | Çalışma Günü | dxNumberBox | | ✓ | | +| `NetHours` | Net Çalışma (saat) | dxNumberBox | | ✓ | | +| `LateMinutes` | Geç Kalma (dk) | dxNumberBox | | ✓ | | +| `LateDays` | Geç Kalınan Gün | dxNumberBox | | ✓ | | +| `EarlyLeaveMinutes` | Erken Çıkış (dk) | dxNumberBox | | ✓ | | +| `EarlyLeaveDays` | Erken Çıkılan Gün | dxNumberBox | | ✓ | | +| `OvertimeHours` | Fazla Mesai (saat) | dxNumberBox | | ✓ | | +| `OvertimePaidHours` | Zamlı Fazla Mesai (saat) | dxNumberBox | | ✓ | | +| `WeeklyOffDays` | Hafta Tatili | dxNumberBox | | ✓ | | +| `HolidayDays` | Resmî Tatil | dxNumberBox | | ✓ | | +| `LeaveDays` | İzinli Gün | dxNumberBox | | ✓ | | +| `UnpaidLeaveDays` | Ücretsiz İzinli Gün | dxNumberBox | | ✓ | | +| `TrainingDays` | Eğitim Günü | dxNumberBox | | ✓ | | +| `SickDays` | Raporlu Gün | dxNumberBox | | ✓ | | +| `AbsentDays` | Devamsız Gün | dxNumberBox | | ✓ | | +| `IncompleteDays` | Eksik Okutmalı Gün | dxNumberBox | | ✓ | | +| `AssumedDays` | Varsayılan Gün | dxNumberBox | | ✓ | | +| `YearOvertimeHours` | Yıllık Fazla Mesai (saat) | dxNumberBox | | ✓ | | +| `AnnualOvertimeLimit` | Yıllık Fazla Mesai Sınırı | dxNumberBox | | ✓ | | +| `IsOverAnnualLimit` | Yıllık Sınır Aşıldı | dxNumberBox | | | | + +### Puantaj Günlerim — `App.Hr.MyTimesheetDay` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/MyTimesheetDay.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Hr.MyTimesheetDay` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Puantaj Günlerim — puantajınızın günleri: ilk giriş, son çıkış, net çalışma, mola, geç kalma, erken çıkış, fazla mesai ve gün tipi. | +| Kaynak | `Hr_T_Timesheet` · filtre `"IsDeleted" = 'false' AND "EmployeeId" = '@USERID'` | +| 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 | +| --- | --- | --- | --- | --- | --- | +| `WorkDate` | İş Günü | dxDateBox | | | | +| `DayType` | Gün Tipi | dxSelectBox | | | liste: Work, WeeklyOff, Holiday, Training, Leave, Sick, Absent | +| `LeaveTypeId` | İzin Türü | dxSelectBox | | | sorgu: Hr_T_LeaveType | +| `TrainingId` | Eğitim | dxSelectBox | | | sorgu: Hr_T_Training | +| `FirstIn` | İlk Giriş | dxDateBox | | | | +| `LastOut` | Son Çıkış | dxDateBox | | | | +| `NetHours` | Net Çalışma (saat) | dxNumberBox | | | | +| `BreakMinutes` | Mola Düşümü (dk) | dxNumberBox | | | | +| `LateMinutes` | Geç Kalma (dk) | dxNumberBox | | | | +| `EarlyLeaveMinutes` | Erken Çıkış (dk) | dxNumberBox | | | | +| `OvertimeHours` | Fazla Mesai (saat) | dxNumberBox | | | | +| `IsAssumed` | Varsayılan | dxCheckBox | | | | +| `IsManual` | Elle | dxCheckBox | | | | +| `IsIncomplete` | Eksik Okutma | dxCheckBox | | | | +| `Note` | Not | dxTextBox | | | | +| `PeriodKey` | Dönem Anahtarı | dxTextBox | | | | + + diff --git a/configs/seeds/host/docs/modules/HrDefinitions.md b/configs/seeds/host/docs/modules/HrDefinitions.md index 50eba91b..9e843df9 100644 --- a/configs/seeds/host/docs/modules/HrDefinitions.md +++ b/configs/seeds/host/docs/modules/HrDefinitions.md @@ -16,26 +16,33 @@ türü, masraf türü, yan hak türü) anlatır. | Sıra | Menü | `ListFormCode` | Kaynak | Ayrıntı | | --- | --- | --- | --- | --- | -| 1 | Yetenek Tipleri | `App.Hr.SkillType` | Entity + seeder | [HrOrganization.md](HrOrganization.md) | -| 2 | Departmanlar | `App.Hr.Department` | Entity + seeder | [HrOrganization.md](HrOrganization.md) | -| 3 | Pozisyonlar | `App.Hr.JobPosition` | Entity + seeder | [HrOrganization.md](HrOrganization.md) | -| 4 | Kurum Doktorları | `App.Hr.Doctor` | Wizard | bu doküman · [HrHealthCard.md](HrHealthCard.md) | -| 5 | Yeterlilik Belgeleri | `App.Hr.Certificate` | Wizard | bu doküman | -| 6 | Hastaneler | `App.Hr.Hospital` | Wizard | bu doküman · [HrHealthCard.md](HrHealthCard.md) | -| 7 | Hastane Bölümleri | `App.Hr.HospitalDepartment` | Wizard | bu doküman · [HrHealthCard.md](HrHealthCard.md) | -| 8 | Evrak Türleri | `App.Hr.DocumentType` | Wizard | bu doküman | -| 9 | İzin Türleri | `App.Hr.LeaveType` | Wizard | bu doküman | -| 10 | Masraf Türleri | `App.Hr.ExpenseType` | Wizard | bu doküman | -| 11 | Yan Hak Türleri | `App.Hr.BenefitType` | Wizard | bu doküman | -| 12 | Ceza Türleri | `App.Hr.DisciplinaryPenaltyType` | Wizard | [HrDisciplinaryCase.md](HrDisciplinaryCase.md) | -| 13 | Aday Kaynakları | `App.Hr.CandidateSource` | Wizard | [HrRecruitment.md](HrRecruitment.md) | -| 14 | Ret Sebepleri | `App.Hr.RejectionReason` | Wizard | [HrRecruitment.md](HrRecruitment.md) | -| 15 | Değerlendirme Kriterleri | `App.Hr.EvaluationCriterion` | Wizard | [HrRecruitment.md](HrRecruitment.md) | +| 1 | Departmanlar | `App.Hr.Department` | Entity + seeder | [HrOrganization.md](HrOrganization.md) | +| 2 | Pozisyonlar | `App.Hr.JobPosition` | Entity + seeder | [HrOrganization.md](HrOrganization.md) | +| 3 | Yetenek Tipleri | `App.Hr.SkillType` | Entity + seeder | [HrOrganization.md](HrOrganization.md) | +| 4 | Yeterlilik Belgeleri | `App.Hr.Certificate` | Wizard | bu doküman | +| 5 | Evrak Türleri | `App.Hr.DocumentType` | Wizard | bu doküman | +| 6 | Aday Kaynakları | `App.Hr.CandidateSource` | Wizard | [HrRecruitment.md](HrRecruitment.md) | +| 7 | Ret Sebepleri | `App.Hr.RejectionReason` | Wizard | [HrRecruitment.md](HrRecruitment.md) | +| 8 | Değerlendirme Kriterleri | `App.Hr.EvaluationCriterion` | Wizard | [HrRecruitment.md](HrRecruitment.md) | +| 9 | Masraf Türleri | `App.Hr.ExpenseType` | Wizard | bu doküman | +| 10 | Yan Hak Türleri | `App.Hr.BenefitType` | Wizard | bu doküman | +| 11 | Vardiyalar | `App.Hr.Shift` | Wizard | [HrWorkCalendar.md](HrWorkCalendar.md) · [HrAttendance.md](HrAttendance.md) | +| 12 | İzin Türleri | `App.Hr.LeaveType` | Wizard | bu doküman | +| 13 | Kurum Doktorları | `App.Hr.Doctor` | Wizard | bu doküman · [HrHealthCard.md](HrHealthCard.md) | +| 14 | Hastaneler | `App.Hr.Hospital` | Wizard | bu doküman · [HrHealthCard.md](HrHealthCard.md) | +| 15 | Hastane Bölümleri | `App.Hr.HospitalDepartment` | Wizard | bu doküman · [HrHealthCard.md](HrHealthCard.md) | | 16 | Performans Dereceleri | `App.Hr.PerformanceRating` | Wizard | [HrPerformance.md](HrPerformance.md) | +| 17 | Ceza Türleri | `App.Hr.DisciplinaryPenaltyType` | Wizard | [HrDisciplinaryCase.md](HrDisciplinaryCase.md) | Tanımlamalar dışında duran tanımlar: Eğitim tipi/konusu → [HrTrainings.md](HrTrainings.md); araç -belgesi/masrafı/gidilecek yer → [HrVehicles.md](HrVehicles.md); çalışma takvimi ve vardiya → -[HrWorkCalendar.md](HrWorkCalendar.md). +belgesi/masrafı/gidilecek yer → [HrVehicles.md](HrVehicles.md) (her alt menüde tanım ekranları en üstte); +çalışma takvimi → [HrWorkCalendar.md](HrWorkCalendar.md). + +Sıra modül akışını izler: organizasyon → işe alım → zaman (vardiya, izin) → sağlık → performans → disiplin. +İK menüsünün kök sırası: Tanımlamalar · Organizasyon Şeması · İşe Alım · Çalışma Takvimi · İzin Yönetimi · +Puantaj ve Devam Takibi · Sağlık Kartları · Eğitim · Performans · Disiplin Dosyaları · Araçlar · Ziyaretçiler · +Olay Günlüğü · Intranet. Yetki ağacı (`AbpPermissions.Order`) aynı sırayı izler; menüsüz çalışan/yönetici +yetkileri (`MyLeaveRequest`, `MyTimesheet`, `MyPerformanceReview` …) modüllerinin hemen ardındadır. --- @@ -139,40 +146,13 @@ lookup olarak okunmaları ekran yetkisi gerektirmez. Hiçbir yetki role otomatik > Wizard dosyalarından üretilir; deploy, silme, tasarımcı kaydı ve import'ta yenilenir. Elle düzenleme bir sonraki yenilemede kaybolur. -### Kurum Doktorları — `App.Hr.Doctor` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/Doctor.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.Doctor` (sıra 4) | -| Yetki | `App.Hr.Doctor` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Kurum Doktorları — işyeri hekimleri ve belge bilgileri. | -| Geliştirme talebi | Human Resources -> Definitions | -| Kaynak | `Hr_T_Doctor` · 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.Doctor.json` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `FullName` | Doktor Adı Soyadı | dxTextBox | ✓ | ✓ | | -| `DiplomaNo` | Diploma No | dxTextBox | | ✓ | | -| `DiplomaDate` | Diploma Tarihi | dxDateBox | | ✓ | | -| `OhsCertificateNo` | İşyeri Hekimi Belge No | dxTextBox | | ✓ | | -| `OhsCertificateDate` | İşyeri Hekimi Belge Tarihi | dxDateBox | | ✓ | | -| `IdentityNo` | T.C. Kimlik No | dxTextBox | | ✓ | | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | - ### Yeterlilik Belgeleri — `App.Hr.Certificate` | Özellik | Değer | | --- | --- | | Wizard | `wizard/Certificate.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.Certificate` (sıra 5) | +| Menü | `App.Hr.Definitions` › `App.Hr.Certificate` (sıra 4) | | Yetki | `App.Hr.Certificate` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Yeterlilik Belgeleri — personelin sahip olabileceği mesleki yeterlilik ve mezuniyet belgeleri. | | Geliştirme talebi | Human Resources -> Definitions | @@ -188,57 +168,13 @@ lookup olarak okunmaları ekran yetkisi gerektirmez. Hiçbir yetki role otomatik | `Name` | Belge Adı | dxTextBox | ✓ | ✓ | | | `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | -### Hastaneler — `App.Hr.Hospital` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/Hospital.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.Hospital` (sıra 6) | -| Yetki | `App.Hr.Hospital` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Hastaneler — hastane ve sağlık kurumu tanımları. | -| Geliştirme talebi | Human Resources -> Definitions | -| Kaynak | `Hr_T_Hospital` · 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.Hospital.json` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `Name` | Kurum Adı | dxTextBox | ✓ | ✓ | | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | - -### Hastane Bölümleri — `App.Hr.HospitalDepartment` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/HospitalDepartment.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.HospitalDepartment` (sıra 7) | -| Yetki | `App.Hr.HospitalDepartment` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Hastane Bölümleri — hastane klinik/bölüm tanımları (acil, dahiliye, kardiyoloji…). | -| Geliştirme talebi | Human Resources -> Definitions | -| Kaynak | `Hr_T_HospitalDepartment` · 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.HospitalDepartment.json` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `Name` | Bölüm Adı | dxTextBox | ✓ | ✓ | | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | - ### Evrak Türleri — `App.Hr.DocumentType` | Özellik | Değer | | --- | --- | | Wizard | `wizard/DocumentType.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.DocumentType` (sıra 8) | +| Menü | `App.Hr.Definitions` › `App.Hr.DocumentType` (sıra 5) | | Yetki | `App.Hr.DocumentType` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Evrak Türleri — personel ve süreç belgelerinin türleri (CV, dilekçe, ibraname, sağlık raporu…), gruplarıyla. | | Geliştirme talebi | Human Resources -> Definitions | @@ -256,43 +192,13 @@ lookup olarak okunmaları ekran yetkisi gerektirmez. Hiçbir yetki role otomatik | `IsRequired` | Zorunlu | dxCheckBox | ✓ | ✓ | | | `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | -### İzin Türleri — `App.Hr.LeaveType` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/LeaveType.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.LeaveType` (sıra 9) | -| Yetki | `App.Hr.LeaveType` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | İzin Türleri — izin çeşitleri ve kuralları (yıllık, mazeret, ücretsiz, hastalık, doğum, babalık, evlilik, ölüm, süt izni). | -| Kaynak | `Hr_T_LeaveType` · 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.Paid`, `App.Widget.Unpaid` | -| Form varsayılanları | IsPaid=true, DeductsFromAnnualLeave=false, RequiresDocument=false, AllowHalfDay=false, Gender=All, IsActive=true, BalanceExceedAction=Block | -| Veri aynası | `data/App.Hr.LeaveType.json` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `Code` | Kod | dxTextBox | ✓ | ✓ | | -| `Name` | Adı | dxTextBox | ✓ | ✓ | | -| `Gender` | Cinsiyet | dxSelectBox | ✓ | ✓ | liste: All, Male, Female | -| `MaxDaysPerYear` | Yıllık En Fazla Gün | dxNumberBox | | ✓ | | -| `IsPaid` | Ücretli | dxCheckBox | ✓ | ✓ | | -| `DeductsFromAnnualLeave` | Yıllık İzinden Düşer | dxCheckBox | ✓ | ✓ | | -| `RequiresDocument` | Belge Gerekir | dxCheckBox | ✓ | ✓ | | -| `AllowHalfDay` | Yarım Gün Kullanılabilir | dxCheckBox | ✓ | ✓ | | -| `BalanceExceedAction` | Bakiye Aşılırsa | dxRadioGroup | ✓ | ✓ | liste: Block, Warn | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | - ### Masraf Türleri — `App.Hr.ExpenseType` | Özellik | Değer | | --- | --- | | Wizard | `wizard/ExpenseType.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.ExpenseType` (sıra 10) | +| Menü | `App.Hr.Definitions` › `App.Hr.ExpenseType` (sıra 9) | | Yetki | `App.Hr.ExpenseType` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Masraf Türleri — personel masraf kalemleri (yemek, yol, konaklama, akaryakıt, telefon, temsil, kırtasiye) ve vergi/SGK özellikleri. | | Kaynak | `Hr_T_ExpenseType` · filtre `"IsDeleted" = 'false'` | @@ -320,7 +226,7 @@ lookup olarak okunmaları ekran yetkisi gerektirmez. Hiçbir yetki role otomatik | --- | --- | | Wizard | `wizard/BenefitType.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.BenefitType` (sıra 11) | +| Menü | `App.Hr.Definitions` › `App.Hr.BenefitType` (sıra 10) | | Yetki | `App.Hr.BenefitType` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Yan Hak Türleri — çalışanlara sağlanan yan haklar (yemek kartı, ulaşım, özel sağlık sigortası, BES, konut, şirket aracı, telefon, çocuk ve yakacak yardımı…). | | Kaynak | `Hr_T_BenefitType` · filtre `"IsDeleted" = 'false'` | @@ -341,4 +247,105 @@ lookup olarak okunmaları ekran yetkisi gerektirmez. Hiçbir yetki role otomatik | `IsSgkSubject` | SGK'ya Tabi | dxCheckBox | ✓ | ✓ | | | `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | +### İzin Türleri — `App.Hr.LeaveType` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/LeaveType.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Definitions` › `App.Hr.LeaveType` (sıra 12) | +| Yetki | `App.Hr.LeaveType` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | İzin Türleri — izin çeşitleri ve kuralları (yıllık, mazeret, ücretsiz, hastalık, doğum, babalık, evlilik, ölüm, süt izni). | +| Kaynak | `Hr_T_LeaveType` · 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.Paid`, `App.Widget.Unpaid` | +| Form varsayılanları | IsPaid=true, DeductsFromAnnualLeave=false, RequiresDocument=false, AllowHalfDay=false, Gender=All, IsActive=true, BalanceExceedAction=Block | +| Veri aynası | `data/App.Hr.LeaveType.json` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `Code` | Kod | dxTextBox | ✓ | ✓ | | +| `Name` | Adı | dxTextBox | ✓ | ✓ | | +| `Gender` | Cinsiyet | dxSelectBox | ✓ | ✓ | liste: All, Male, Female | +| `MaxDaysPerYear` | Yıllık En Fazla Gün | dxNumberBox | | ✓ | | +| `IsPaid` | Ücretli | dxCheckBox | ✓ | ✓ | | +| `DeductsFromAnnualLeave` | Yıllık İzinden Düşer | dxCheckBox | ✓ | ✓ | | +| `RequiresDocument` | Belge Gerekir | dxCheckBox | ✓ | ✓ | | +| `AllowHalfDay` | Yarım Gün Kullanılabilir | dxCheckBox | ✓ | ✓ | | +| `BalanceExceedAction` | Bakiye Aşılırsa | dxRadioGroup | ✓ | ✓ | liste: Block, Warn | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | + +### Kurum Doktorları — `App.Hr.Doctor` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Doctor.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Definitions` › `App.Hr.Doctor` (sıra 13) | +| Yetki | `App.Hr.Doctor` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Kurum Doktorları — işyeri hekimleri ve belge bilgileri. | +| Geliştirme talebi | Human Resources -> Definitions | +| Kaynak | `Hr_T_Doctor` · 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.Doctor.json` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `FullName` | Doktor Adı Soyadı | dxTextBox | ✓ | ✓ | | +| `DiplomaNo` | Diploma No | dxTextBox | | ✓ | | +| `DiplomaDate` | Diploma Tarihi | dxDateBox | | ✓ | | +| `OhsCertificateNo` | İşyeri Hekimi Belge No | dxTextBox | | ✓ | | +| `OhsCertificateDate` | İşyeri Hekimi Belge Tarihi | dxDateBox | | ✓ | | +| `IdentityNo` | T.C. Kimlik No | dxTextBox | | ✓ | | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | + +### Hastaneler — `App.Hr.Hospital` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Hospital.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Definitions` › `App.Hr.Hospital` (sıra 14) | +| Yetki | `App.Hr.Hospital` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Hastaneler — hastane ve sağlık kurumu tanımları. | +| Geliştirme talebi | Human Resources -> Definitions | +| Kaynak | `Hr_T_Hospital` · 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.Hospital.json` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `Name` | Kurum Adı | dxTextBox | ✓ | ✓ | | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | + +### Hastane Bölümleri — `App.Hr.HospitalDepartment` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/HospitalDepartment.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Definitions` › `App.Hr.HospitalDepartment` (sıra 15) | +| Yetki | `App.Hr.HospitalDepartment` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Hastane Bölümleri — hastane klinik/bölüm tanımları (acil, dahiliye, kardiyoloji…). | +| Geliştirme talebi | Human Resources -> Definitions | +| Kaynak | `Hr_T_HospitalDepartment` · 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.HospitalDepartment.json` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `Name` | Bölüm Adı | dxTextBox | ✓ | ✓ | | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | + diff --git a/configs/seeds/host/docs/modules/HrDisciplinaryCase.md b/configs/seeds/host/docs/modules/HrDisciplinaryCase.md index d26da834..28ad16f5 100644 --- a/configs/seeds/host/docs/modules/HrDisciplinaryCase.md +++ b/configs/seeds/host/docs/modules/HrDisciplinaryCase.md @@ -45,7 +45,7 @@ Kapsam: kiracı (`IsTenant`). Satır süzmesi yoktur; disiplin kaydı hassas ver | Menü (TR / EN) | `ListFormCode` | Yer | Alt formlar | Görünümler | Widget'lar | | --- | --- | --- | --- | --- | --- | -| Disiplin Dosyaları / Disciplinary Cases | `App.Hr.DisciplinaryCase` | `İnsan Kaynakları` (sıra 11, `FcHighPriority`) | `DisciplinaryDefense`, `DisciplinaryDecision`, `DisciplinaryFile` (`Id → CaseId`) | Grid, Card, Pivot, Chart, **Todo** | Toplam · Açık · Savunma Bekleniyor · Kapanan (Karara Bağlandı + Kapandı) | +| Disiplin Dosyaları / Disciplinary Cases | `App.Hr.DisciplinaryCase` | `İnsan Kaynakları` (sıra 10, `FcHighPriority`) | `DisciplinaryDefense`, `DisciplinaryDecision`, `DisciplinaryFile` (`Id → CaseId`) | Grid, Card, Pivot, Chart, **Todo** | Toplam · Açık · Savunma Bekleniyor · Kapanan (Karara Bağlandı + Kapandı) | | Ceza Türleri / Penalty Types | `App.Hr.DisciplinaryPenaltyType` | `İnsan Kaynakları › Tanımlar` | — | Grid, Card, Pivot, Chart | — (tanım listesi) | Todo panosu: başlık `Subject`, açıklama `IncidentDescription`, tarih `IncidentDate`, sütun sırası @@ -68,8 +68,8 @@ AbpUsers ──< Hr_T_DisciplinaryCase ──< Hr_T_DisciplinaryDefense | --- | --- | | `Hr_T_DisciplinaryPenaltyType` | `Name`, `Severity`, `Description`, `IsActive` | | `Hr_T_DisciplinaryCase` | `CaseNo`, `UserId`, `DepartmentId`, `JobPositionId`, `IncidentDate`, `IncidentTime`, `IncidentPlace`, `ReportedById`, `Status`, `Subject`, `IncidentDescription` (HTML tutanak), `WitnessUserIds` | -| `Hr_T_DisciplinaryDefense` | `CaseId`, `RequestDate`, `DueDate`, `ResponseDate`, `Status` (Requested/Submitted/NotSubmitted), `DefenseText` | -| `Hr_T_DisciplinaryDecision` | `CaseId`, `DecisionDate`, `PenaltyTypeId`, `EffectiveDate`, `NotificationDate`, `DeductionAmount`, `Status` (Draft/Final), `DecisionText` | +| `Hr_T_DisciplinaryDefense` | `CaseId`, `RequestDate`, `DueDate`, `ResponseDate`, `Status` (Requested/Submitted/NotSubmitted), `DefenseText` (HTML) | +| `Hr_T_DisciplinaryDecision` | `CaseId`, `DecisionDate`, `PenaltyTypeId`, `EffectiveDate`, `NotificationDate`, `DeductionAmount`, `Status` (Draft/Final), `DecisionText` (HTML) | | `Hr_T_DisciplinaryFile` | `CaseId`, `DocumentTypeId`, `FileDate`, `FileName`, `FileContent` | Tablo düzeyinde CHECK ya da tekil indeks yoktur; kurallar formdadır. @@ -113,6 +113,7 @@ Disiplin verisi kişisel ve hassas veridir; okuma yetkisi dar tutulmalıdır. | Kaynak | Kullanım | | --- | --- | | `AbpUsers` | Personel, tutanağı tutan, tanıklar | +| Kullanıcı detayı › Disiplin | Disiplin Dosyaları ekranı çalışana süzülmüş açılır (`HrPersonnel.md`) | | `Hr_T_Department`, `Hr_T_JobPosition` | Olay anındaki birim (Pivot kırılımı) | | `Hr_T_DocumentType` | Belge türü (ortak İK tanımı) | @@ -170,7 +171,7 @@ yalnızca onayda seçilirse düşer. | --- | --- | | Wizard | `wizard/DisciplinaryCase.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr` › `App.Hr.DisciplinaryCase` (sıra 11) | +| Menü | `App.Hr` › `App.Hr.DisciplinaryCase` (sıra 10) | | Yetki | `App.Hr.DisciplinaryCase` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Disiplin Dosyaları — bir personel hakkındaki olay tutanağı ile başlayan disiplin süreci: savunma, karar ve belgeler tek dosyada. | | Kaynak | `Hr_T_DisciplinaryCase` · filtre `"IsDeleted" = 'false'` | @@ -204,7 +205,7 @@ yalnızca onayda seçilirse düşer. | --- | --- | | Wizard | `wizard/DisciplinaryPenaltyType.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.DisciplinaryPenaltyType` (sıra 12) | +| Menü | `App.Hr.Definitions` › `App.Hr.DisciplinaryPenaltyType` (sıra 17) | | Yetki | `App.Hr.DisciplinaryPenaltyType` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Ceza Türleri — disiplin kararlarında verilebilecek cezalar ve ağırlıkları (sözlü uyarı, yazılı uyarı, ihtar, kınama, ücret kesintisi, fesih). | | Kaynak | `Hr_T_DisciplinaryPenaltyType` · filtre `"IsDeleted" = 'false'` | @@ -243,7 +244,7 @@ yalnızca onayda seçilirse düşer. | `DueDate` | Son Savunma Tarihi | dxDateBox | ✓ | ✓ | script | | `ResponseDate` | Savunma Tarihi | dxDateBox | | ✓ | | | `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Requested, Submitted, NotSubmitted | -| `DefenseText` | Savunma Metni | dxTextArea | | ✓ | | +| `DefenseText` | Savunma Metni | dxHtmlEditor | | ✓ | | ### Kararlar — `App.Hr.DisciplinaryDecision` @@ -269,7 +270,7 @@ yalnızca onayda seçilirse düşer. | `NotificationDate` | Tebliğ Tarihi | dxDateBox | | ✓ | | | `DeductionAmount` | Kesinti Tutarı | dxNumberBox | | ✓ | | | `Status` | Durum | dxRadioGroup | ✓ | ✓ | liste: Draft, Final | -| `DecisionText` | Karar Metni | dxTextArea | | ✓ | | +| `DecisionText` | Karar Metni | dxHtmlEditor | | ✓ | | ### Belgeler — `App.Hr.DisciplinaryFile` diff --git a/configs/seeds/host/docs/modules/HrEventLog.md b/configs/seeds/host/docs/modules/HrEventLog.md index bd3c4895..89165c95 100644 --- a/configs/seeds/host/docs/modules/HrEventLog.md +++ b/configs/seeds/host/docs/modules/HrEventLog.md @@ -39,7 +39,7 @@ Kapsam: kiracı (`IsTenant`). Şube isteğe bağlıdır; satır süzmesi yoktur. | Menü (TR / EN) | `ListFormCode` | Yer | Görünümler | Widget'lar | | --- | --- | --- | --- | --- | -| Olay Günlüğü / Event Log | `App.Hr.EventLog` | `İnsan Kaynakları` (sıra 9, `FcViewDetails`) | Grid, Card, Pivot, Chart | Toplam · Bugün · Önemli (önem ≥ 4) | +| Olay Günlüğü / Event Log | `App.Hr.EventLog` | `İnsan Kaynakları` (sıra 13, `FcViewDetails`) | Grid, Card, Pivot, Chart | Toplam · Bugün · Önemli (önem ≥ 4) | --- @@ -118,7 +118,7 @@ Geri alma: Wizard Manager'dan silinir; tablo yalnızca onayda seçilirse düşer | --- | --- | | Wizard | `wizard/EventLog.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr` › `App.Hr.EventLog` (sıra 7) | +| Menü | `App.Hr` › `App.Hr.EventLog` (sıra 13) | | Yetki | `App.Hr.EventLog` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Olay Günlüğü — vardiya amiri, güvenlik odası ve gözlem odasının vardiya sırasında kaydettiği önemli olaylar. | | Geliştirme talebi | Human Resources -> Olay Günlüğü | diff --git a/configs/seeds/host/docs/modules/HrHealthCard.md b/configs/seeds/host/docs/modules/HrHealthCard.md index af1c0fad..a7f0d9a0 100644 --- a/configs/seeds/host/docs/modules/HrHealthCard.md +++ b/configs/seeds/host/docs/modules/HrHealthCard.md @@ -45,7 +45,7 @@ Kapsam: kiracı. Liste, kiracının **tüm kullanıcılarıdır** (aktif/pasif); | Menü (TR / EN) | `ListFormCode` | Yer | Kaynak | Alt formlar | | --- | --- | --- | --- | --- | -| Sağlık Kartları / Health Cards | `App.Hr.HealthCard` | `İnsan Kaynakları` (sıra 5, `FcInspection`) | `AbpUsers` | aşağıdaki 7 sekme | +| Sağlık Kartları / Health Cards | `App.Hr.HealthCard` | `İnsan Kaynakları` (sıra 7, `FcInspection`) | `AbpUsers` | aşağıdaki 7 sekme | | Sekme | `ListFormCode` (menüsüz) | Kaynak | İlişki | Düzenleme | | --- | --- | --- | --- | --- | @@ -147,7 +147,7 @@ serbest metindir). Bildirim, periyodik muayene hatırlatması ya da rapor şablo **Hastane tanımı nerede kullanılıyor?** Şu an hiçbir yerde; ileride istirahat/sevk alanlarına lookup olarak bağlanmak üzere duruyor. -**İstirahat raporu izinlere yansıyor mu?** Evet, tek kayıttır: buradan (ya da kullanıcı detayındaki İstirahatler'den) girilen rapor İK › İzin Yönetimi'nde onaylı Rapor (`Sick`) talebi olur; çalışanın Intranet'ten açtığı Rapor talebi de bu sekmeye düşer (`Hr_S_LeaveSickLeaveSync`, ayrıntı `HrLeave.md` §5.5). Rapor yıllık izin bakiyesinden düşmez. +**İstirahat raporu izinlere yansıyor mu?** Evet, tek kayıttır: buradan (ya da kullanıcı detayındaki İstirahatler'den) girilen rapor İK › İzin Yönetimi'nde onaylı Rapor (`Sick`) talebi olur; çalışanın Intranet'ten açtığı Rapor talebi de bu sekmeye düşer (`Hr_S_LeaveSickLeaveSync`, ayrıntı `HrLeave.md` §5.5). Rapor yıllık izin bakiyesinden düşmez; yıllık izindeyken alınan raporun günleri izinden sayılmaz, bakiyeye döner. Çalışanın rapor talebi sağlık kartına onaylanınca düşer. Raporun günleri (hafta sonu dahil) puantajda Raporlu olur, devamsız yazılmaz (`Hr_S_LeaveSickLeaveSync` sonunda yeniden hesap, `HrAttendance.md` §7.1). Kapalı puantaj ayına düşen rapor kaydedilemez/silinemez; önce İK dönemi açar. --- @@ -174,7 +174,7 @@ entity/migration'a bağlı olduğu için kalır. | --- | --- | | Wizard | `wizard/HealthCard.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr` › `App.Hr.HealthCard` (sıra 4) | +| Menü | `App.Hr` › `App.Hr.HealthCard` (sıra 7) | | Yetki | `App.Hr.HealthCard` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Sağlık Kartları — işyeri hekimliği için her çalışanın sağlık kartı. Liste kiracının bütün kullanıcılarıdır; kart bilgileri detay sekmelerinden girilir. | | Geliştirme talebi | Human Resources -> Health Card | @@ -414,7 +414,7 @@ entity/migration'a bağlı olduğu için kalır. | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | -| Komutlar | InsertAfter: `Hr_S_LeaveSickLeaveSync` · UpdateAfter: `Hr_S_LeaveSickLeaveSync` · DeleteAfter: SQL | +| Komutlar | InsertAfter: `Hr_S_LeaveSickLeaveSync` · UpdateAfter: `Hr_S_LeaveSickLeaveSync` · DeleteAfter: `Hr_S_LeaveSickLeaveSync` | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | diff --git a/configs/seeds/host/docs/modules/HrIntranet.md b/configs/seeds/host/docs/modules/HrIntranet.md index 0ca13893..8fcddb81 100644 --- a/configs/seeds/host/docs/modules/HrIntranet.md +++ b/configs/seeds/host/docs/modules/HrIntranet.md @@ -47,15 +47,15 @@ Kapsam: kiracı. Bütün tablolar `IMultiTenant`; satır süzmesi yoktur. ## 3. Menü ve ekranlar -`İnsan Kaynakları › Intranet` (`App.Hr.Intranet`, sıra 10) +`İnsan Kaynakları › Intranet` (`App.Hr.Intranet`, sıra 14) | Sıra | Menü | `ListFormCode` / rota | Alt formlar | Widget'lar | | --- | --- | --- | --- | --- | -| 1 | Duyurular | `App.Hr.Intranet.Announcement` | `…Announcement.AnnouncementLike`, `…Announcement.AnnouncementComment` (`Id → AnnouncementId`) | Aktif · Sabitlenmiş · Süresi dolan · Toplam görüntülenme | -| 2 | Anketler | `App.Hr.Intranet.Survey` | `SurveyQuestion` (→ `SurveyQuestionOption`), `SurveyResponse` (→ `SurveyAnswer`) — iki seviyeli | Aktif · Pasif · Toplam yanıt | -| 3 | Sosyal Paylaşımlar | `App.Hr.Intranet.SocialPost` | `SocialComment`, `SocialMedia` (→ `SocialPollOption`), `SocialLike` (`Id → SocialPostId`) | Toplam · Bugün · Toplam beğeni | -| 4 | Etkinlik Türleri | `App.Hr.Intranet.Events.EventType` | — | — | -| 5 | Etkinlik Kategorisi | `App.Hr.Intranet.Events.EventCategory` | — | — | +| 1 | Etkinlik Türleri | `App.Hr.Intranet.Events.EventType` | — | — | +| 2 | Etkinlik Kategorisi | `App.Hr.Intranet.Events.EventCategory` | — | — | +| 3 | Duyurular | `App.Hr.Intranet.Announcement` | `…Announcement.AnnouncementLike`, `…Announcement.AnnouncementComment` (`Id → AnnouncementId`) | Aktif · Sabitlenmiş · Süresi dolan · Toplam görüntülenme | +| 4 | Anketler | `App.Hr.Intranet.Survey` | `SurveyQuestion` (→ `SurveyQuestionOption`), `SurveyResponse` (→ `SurveyAnswer`) — iki seviyeli | Aktif · Pasif · Toplam yanıt | +| 5 | Sosyal Paylaşımlar | `App.Hr.Intranet.SocialPost` | `SocialComment`, `SocialMedia` (→ `SocialPollOption`), `SocialLike` (`Id → SocialPostId`) | Toplam · Bugün · Toplam beğeni | | 6 | Etkinlikler | `App.Hr.Intranet.Events.Event` | `EventLike`, `EventComment` (`Id → EventId`) | Yaklaşan · Yayında · Taslak · İptal | | 7 | Dokümanlar | `/admin/intranet-documents` (özel sayfa) | — | — | @@ -76,6 +76,7 @@ Pano kutuları (seed): | `active-surveys` | Sol / 30 | `App.Hr.Intranet.Survey.Widget` | Aktif anketler (kalan gün, soru/yanıt sayısı, doldurdum/doldur) | | `my-leave` | Sol / 35 | `App.Hr.MyLeaveRequest` | Custom `MyLeaveWidget`: izin bakiyesi, süren talepler → İzin Talebi Oluştur · Taleplerim · Bakiyem | | `team-leave` | Sol / 36 | `App.Hr.TeamLeaveRequest` | Custom `TeamLeaveWidget`: müdürün onayını bekleyen izin talepleri, bugün izinde olanlar → Onay Bekleyenler | +| `my-timesheet` | Sol / 37 | `App.Hr.MyTimesheet` | Custom `MyTimesheetWidget`: seçilen ayın puantajı (net saat, geç/erken dk, fazla mesai, devamsız/izinli/raporlu) ve yıl toplamı, 270 saatlik fazla mesai çubuğu → Puantajım | | `social-wall` | Orta / 40 | `App.Hr.Intranet.SocialPost.Widget` | Sosyal duvar (Tümü / Paylaşımlarım, sonsuz kaydırma 10'arlı) | | `announcements` | Sağ / 50 | `App.Hr.Intranet.Announcement.Widget` | Sabitlenmiş duyurular (en fazla 3) | | `upcoming-events` | Sağ / 60 | `App.Hr.Intranet.Events.Event.Widget` | Bugünden sonraki yayınlanmış ilk 3 etkinlik | @@ -83,7 +84,7 @@ Pano kutuları (seed): | `team-performance` | Sağ / 80 | `App.Hr.TeamPerformanceReview` | Custom `TeamPerformanceWidget`: yöneticinin ekip değerlendirmeleri → Ekibimin Değerlendirmeleri | | `my-360-feedback` | Sağ / 90 | `App.Hr.My360Feedback` | Custom `My360FeedbackWidget`: kullanıcıya atanan 360 talepleri → 360 Taleplerim | -İlk altı kutu Builtin'dir (koddaki `Code`). `my-leave` / `team-leave` İzin Yönetimi'nin (`HrLeave.md` §3.3), son üçü Performans Yönetimi'nin çalışana ait özetleridir: +İlk altı kutu Builtin'dir (koddaki `Code`). `my-leave` / `team-leave` İzin Yönetimi'nin (`HrLeave.md` §3.3), `my-timesheet` Puantaj ve Devam Takibi'nin (`HrAttendance.md` §3.3), son üçü Performans Yönetimi'nin çalışana ait özetleridir: İK menüsü İK departmanınındır, çalışan kendi değerlendirmesini buradan takip eder; listeler menüsüzdür ve kutudaki bağlantıyla açılır. Ayrıntı: `HrPerformance.md` §3.3. diff --git a/configs/seeds/host/docs/modules/HrLeave.md b/configs/seeds/host/docs/modules/HrLeave.md index ecf0690b..829542ab 100644 --- a/configs/seeds/host/docs/modules/HrLeave.md +++ b/configs/seeds/host/docs/modules/HrLeave.md @@ -58,7 +58,7 @@ Kapsam: kiracı (`IsTenant`). Şube kırılımı yoktur. | 4 | Bakiye yetersiz | İzin türü bazında İK seçer: `BalanceExceedAction` = Engelle / Uyar ve kaydet | | 5 | İK onaycısı | Düğümde sabit kullanıcı(lar) (İzin Talepleri akışının "İK Onayı" düğümü) | | 6 | Gün sayısı | Ayarlar › İnsan Kaynakları › İzin'deki çalışma günleri + Çalışma Takvimi tatilleri (kullanıcı kararı: tüm İK ayarları bu grupta) | -| 7 | Rapor talebi | Onay akışından geçer; kayıt anında Sağlık Kartı'nda görünür, reddedilirse kalkar | +| 7 | Rapor talebi | Onay akışından geçer; onaylanınca Sağlık Kartı'nda görünür (onay beklerken sağlık kartına ve puantaja düşmez), reddedilirse kalkar | | 8 | Kullanıcı kartı | Kullanıcı detayına **İzinler** sekmesi (bakiye özeti + talepler + defter) | | 9 | Üstü olmayan pozisyon (Genel Müdür) | Müdür adımı atlanır, talep doğrudan İK Onayı'na gider (üretim sırasında soruldu) | @@ -228,9 +228,13 @@ Her ekleme/güncellemede (Workflow kararı dahil) çalışır; `THROW` kaydı ge | 51115 | Aralıkta çalışma günü yok | | 51116 | Reddedilmemiş başka bir talep ya da talebe bağlı olmayan istirahat aynı güne düşüyor (aynı günün iki ayrı yarısı serbest) | | 51117 | Yıllık izinden düşen türde gün > kullanılabilir bakiye, ya da türün yıllık sınırı aşılıyor — tür `Block` ise; `Warn` ise kayıt yapılır, uyarı `BalanceWarning`'e yazılır | +| 51118 | Talebin (yeni ya da eski) tarihleri kapalı puantaj dönemine düşüyor — ekleme, düzeltme, karar ve silme reddedilir (`Hr_F_TimesheetPeriodClosed`; eski tarihleri `Hr_S_LeaveRequestGuard` denetler) | +| 51119 | Tarihler çalışanın işe giriş – işten çıkış aralığının dışında | -7. Rapor (`Code = Sick`) türünde istirahat satırı açılır/güncellenir; reddedilen ya da türü değişen talebin istirahati kalkar. -8. Durum bildirim taşıyan bir değere geçtiyse bir kez bildirim gider, `LastNotifiedStatus` güncellenir. +7. Rapor (`Code = Sick`) türünde talep **onaylandığında** istirahat satırı açılır/güncellenir; reddedilen, onay bekleyen ya da türü değişen talebin istirahati kalkar. Rapor türü dışındaki talebin gün sayısı rapora denk gelen günleri saymaz (`Hr_F_LeaveNetDays`); rapor değişince çalışanın diğer taleplerinin gün sayısı yenilenir (`Hr_S_LeaveDaysRefresh`). +8. Silinen talep (silme sonrası komut aynı prosedürü çağırır): bağlı istirahat kalkar, puantaj yeniden hesaplanır. +9. Durum bildirim taşıyan bir değere geçtiyse bir kez bildirim gider, `LastNotifiedStatus` güncellenir. +10. Puantaj: talebin günleri yeniden hesaplanır; tarihi değişen talebin eski günlerini hesap kendisi aralığa katar. ### 5.4 Satır koruması (`Hr_S_LeaveRequestGuard`, before-command) @@ -239,6 +243,7 @@ Her ekleme/güncellemede (Workflow kararı dahil) çalışır; `THROW` kaydı ge | Çalışan | Yalnız kendi talebi (`51100`); durum `Onaya Gönderildi`/`Müdür Onayı` değilse düzeltme/silme yok (`51101`) | | Müdür | Silemez (`51102`); `ManagerIds` içinde olmalı (`51103`); talep `Müdür Onayı`'nda olmalı (`51104`) | | İK | Serbest | +| Hepsi | Talebin kayıttaki (eski) tarihleri kapalı puantaj dönemine düşüyorsa düzeltme/silme yok (`51118`) | Alan kilidi: persona ekranlarında çalışanın/müdürün değiştirmemesi gereken alanların yazma yetkisi `App.Hr.LeaveRequest.Create/.Update`'e bağlıdır; sunucu yetkisi olmayan alanı düşürür. Bu yüzden @@ -248,8 +253,9 @@ Alan kilidi: persona ekranlarında çalışanın/müdürün değiştirmemesi ger | Nereden | Ne olur | | --- | --- | -| İzin talebi, tür Rapor | `Adm_T_UserSickLeave` satırı açılır (`SickLeaveId`); talep güncellenince güncellenir, silinince/reddedilince kalkar | -| Sağlık Kartı › İstirahat Raporları ya da kullanıcı detayı › İstirahatler | `Hr_S_LeaveSickLeaveSync`: onaylı Rapor talebi açılır (onay akışına girmez), güncellemede tarih/gün, silmede talep kalkar. Kiracıda `Sick` kodlu tür yoksa eşleme yapılmaz | +| İzin talebi, tür Rapor | Onayda `Adm_T_UserSickLeave` satırı açılır (`SickLeaveId`); onaylı talep güncellenince güncellenir, silinince/reddedilince kalkar | +| Sağlık Kartı › İstirahat Raporları ya da kullanıcı detayı › İstirahatler | `Hr_S_LeaveSickLeaveSync`: onaylı Rapor talebi açılır (onay akışına girmez), güncellemede tarih/gün, silmede (silme sonrası komut aynı prosedürü çağırır) talep kalkar. Rapora denk gelen yıllık izin günleri bakiyeye döner. Kapalı puantaj ayına düşen rapor kaydedilmez (`51120`). Kiracıda `Sick` kodlu tür yoksa eşleme yapılmaz | +| Çalışma Takvimi | Takvim satırı kaydedilince denk gelen taleplerin gün sayısı yeniden hesaplanır (`Hr_S_WorkCalendarAfterSave`) | ### 5.6 Onay akışı (Grid Workflow) @@ -290,6 +296,7 @@ Widget'lar liste okuma yetkisiyle görünür (İzinlerim `App.Hr.MyLeaveRequest` | `Hr_T_WorkCalendar` | Tatil ve yarım günler | | `AbpSettings` / `Sas_H_SettingDefinition` | Çalışma günleri ve kademeler | | `Adm_T_UserSickLeave` | Rapor eşlemesi | +| Puantaj ve Devam Takibi | `Hr_S_LeaveRequestAfterSave` sonunda talebin günleri `Hr_S_TimesheetCalculate` ile yeniden hesaplanır: onaylı izin İzinli, rapor Raporlu gün olur; ücretli izne denk gelen tatil İzinli değil tatil, ücretsiz izin hafta sonu dahil İzinli yazılır. Tarihi değişen ya da silinen talebin eski günleri aynı işlemde düzelir (`HrAttendance.md` §7.1). Kapalı puantaj ayına düşen talep değiştirilemez; onay bekleyen talebi olan ay kapatılamaz. Çalışma günü ayarları puantajda hafta tatilini de belirler | | Bildirimler | `IzinTalebiOnayBekliyor` (müdür / İK onaycısı), `IzinTalebiSonuclandi` (çalışan); kurallar `Custom` + `UiActivity`/`UiToast`. Metinler `App.Hr.Leave.Notification.{Approval,Result}.{Subject,Message}` (TR), yer tutucular `[Employee]`, `[LeaveType]`, `[StartDate]`, `[EndDate]`, `[Days]`, `[Status]`. Yazan: `Hr_S_LeaveNotify` | --- @@ -372,7 +379,7 @@ nesneleri elle kaldırılır. `BalanceExceedAction` kolonu kalır (kayıpsız ek | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | | Widget'lar | `App.Hr.Leave.Widget.ManagerApproval`, `App.Hr.Leave.Widget.HrApproval`, `App.Hr.Leave.Widget.Approved`, `App.Hr.Leave.Widget.Rejected` | -| Komutlar | InsertAfter: `Hr_S_LeaveRequestAfterSave` · UpdateAfter: `Hr_S_LeaveRequestAfterSave` · DeleteAfter: SQL | +| Komutlar | InsertAfter: `Hr_S_LeaveRequestAfterSave` · UpdateBefore: `Hr_S_LeaveRequestGuard` · UpdateAfter: `Hr_S_LeaveRequestAfterSave` · DeleteBefore: `Hr_S_LeaveRequestGuard` · DeleteAfter: `Hr_S_LeaveRequestAfterSave` | | Form varsayılanları | IsHalfDay=false, StartDate=@DATE, EndDate=@DATE | | Onay akışı | Start 'Onaya Gönderildi' → Compare 'Müdür Onayı Gerekli mi?' → Approval 'Müdür Onayı' → Approval 'İK Onayı' → End 'Onaylandı' → End 'Reddedildi' | @@ -496,7 +503,7 @@ nesneleri elle kaldırılır. `BalanceExceedAction` kolonu kalır (kayıpsız ek | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | -| Komutlar | InsertAfter: `Hr_S_LeaveRequestAfterSave` · UpdateBefore: `Hr_S_LeaveRequestGuard` · UpdateAfter: `Hr_S_LeaveRequestAfterSave` · DeleteBefore: `Hr_S_LeaveRequestGuard` · DeleteAfter: SQL | +| Komutlar | InsertAfter: `Hr_S_LeaveRequestAfterSave` · UpdateBefore: `Hr_S_LeaveRequestGuard` · UpdateAfter: `Hr_S_LeaveRequestAfterSave` · DeleteBefore: `Hr_S_LeaveRequestGuard` · DeleteAfter: `Hr_S_LeaveRequestAfterSave` | | Form varsayılanları | IsHalfDay=false, StartDate=@DATE, EndDate=@DATE | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | diff --git a/configs/seeds/host/docs/modules/HrPerformance.md b/configs/seeds/host/docs/modules/HrPerformance.md index 0a59b6f0..6a28e227 100644 --- a/configs/seeds/host/docs/modules/HrPerformance.md +++ b/configs/seeds/host/docs/modules/HrPerformance.md @@ -288,6 +288,7 @@ widget yetkisi yoktur — listeyi açamayan kullanıcıya özet de gösterilmez. | Kaynak | Kullanım | | --- | --- | | `AbpUsers` | Çalışan, yönetici, değerlendirici, mentor; departman/pozisyon kopyası | +| Kullanıcı detayı › Performans | Değerlendirmeler ve Gelişim Planları ekranları çalışana süzülmüş açılır (`HrPersonnel.md`) | | `Hr_T_Department`, `Hr_T_JobPosition` | Değerlendirmenin organizasyon kırılımı (Pivot/Chart) | | `Hr_T_SkillType` / `Hr_T_Skill` / `Hr_T_SkillLevel` | Dönem yetkinlik seti, beklenen/öz/yönetici/360 seviyeleri, puan (`Progress`) | | `Adm_T_UserSkill` | Tamamlanan değerlendirmenin yönetici seviyeleri kullanıcı profiline yazılır | diff --git a/configs/seeds/host/docs/modules/HrPersonnel.md b/configs/seeds/host/docs/modules/HrPersonnel.md index b8e4e7fd..60b8757c 100644 --- a/configs/seeds/host/docs/modules/HrPersonnel.md +++ b/configs/seeds/host/docs/modules/HrPersonnel.md @@ -49,11 +49,15 @@ Kapsam: kiracı. Rota yetkisi `AbpIdentity.Users.Update`. | --- | --- | --- | | Genel | İletişim (e-posta, ikinci e-posta, ad, soyad, telefon, ikinci telefon, kullanıcı tipi İç/Dış), ek bilgiler (ev adresi, uyruk, cinsiyet), askerlik (durum: Yapıldı/Muaf/Tecilli/Yapılmadı + tecil bitişi), avatar (kırpma, ≤ 2 MB), engellilik (engelli, oran %, rapor PDF/JPG/PNG ≤ 5 MB) | `UpdateUserAsync` (+ avatar `UpdateAvatarAsync`) | | Kimlik Bilgileri | Nüfus cüzdanı (kimlik no, seri no, veriliş yeri/tarihi, il, ilçe, köy, cilt, aile sıra, sıra no), doğum ve aile (doğum yeri/tarihi, baba/anne adı, medeni durum Bekar/Evli/Boşanmış/Dul, evlenme tarihi), yabancı uyruklu (pasaport no/geçerlilik, çalışma izni no/bitiş) | `UpdateUserAsync` | -| İş | Organizasyon (departman → pozisyon, sicil no, SGK no, vardiya grubu, PDKS kart no), sözleşme (çalışma şekli Tam/Yarı Zamanlı, sözleşme türü Belirsiz/Belirli, işe başlama, sözleşme bitişi, deneme süresi bitişi, kıdem başlangıcı), işten çıkış (tarih, SGK çıkış kodu, açıklama), sürücü belgesi (sınıflar çoklu M…G, no, veriliş, geçerlilik), iletişim kanalları (Rocket, Telegram) + **Daha Önce Çalıştığı Yerler** listesi | `UpdateUserAsync` + `App.IdentityManagement.UserWorkExperience` | +| İş | Organizasyon (departman → pozisyon, sicil no, SGK no, vardiya grubu, PDKS kart no — sicil/kart no ve vardiya puantajın kişi eşlemesi ve vardiyasıdır, `HrAttendance.md`), sözleşme (çalışma şekli Tam/Yarı Zamanlı, sözleşme türü Belirsiz/Belirli, işe başlama, sözleşme bitişi, deneme süresi bitişi, kıdem başlangıcı), işten çıkış (tarih, SGK çıkış kodu, açıklama), sürücü belgesi (sınıflar çoklu M…G, no, veriliş, geçerlilik), iletişim kanalları (Rocket, Telegram) + **Daha Önce Çalıştığı Yerler** listesi | `UpdateUserAsync` + `App.IdentityManagement.UserWorkExperience` | | Eğitim ve Yetenekler | En yüksek eğitim seviyesi + **Eğitim Geçmişi**, **Yabancı Diller**, **Yetenekler**, **Yeterlilik Belgeleri** listeleri | `UpdateUserAsync` + 4 liste | | Aile / Acil Durum | **Eş ve Çocuklar**, **Acil Durum Kişileri** listeleri | 2 liste | | Finansal | Banka adı, IBAN; ücret tipi Aylık/Günlük/Saatlik, brüt ücret, para birimi + **Yan Haklar** listesi | `UpdateFinancialAsync` + `App.IdentityManagement.UserBenefit` | | Sağlık Kartı | Bkz. [HrHealthCard.md](HrHealthCard.md) | — | +| Puantaj | Yılın puantaj kartları + Aylık Puantaj, Günlük Puantaj, Günlük Hareketler listeleri; bkz. [HrAttendance.md](HrAttendance.md) §3.4 | — | +| Eğitimler | Çalışanın eğitim katılımları (`App.Hr.TrainingParticipant`, `UserId` süzgeci); bkz. [HrTrainings.md](HrTrainings.md) | — | +| Performans | Değerlendirmeler (`App.Hr.PerformanceReview`) ve gelişim planları (`App.Hr.DevelopmentPlan`), `EmployeeId` süzgeci; bkz. [HrPerformance.md](HrPerformance.md) | — | +| Disiplin | Disiplin dosyaları (`App.Hr.DisciplinaryCase`, `UserId` süzgeci); bkz. [HrDisciplinaryCase.md](HrDisciplinaryCase.md) | — | Gömülü listeler (hepsi menüsüz alt liste, `Adm_T_*`): @@ -174,6 +178,7 @@ yönetimi yetkisi yalnız İK ve sistem yöneticilerinde olmalıdır. | Dosya | İçerik | | --- | --- | | `ui/src/views/admin/user-management/Details.tsx`, `EducationSkillsTab.tsx`, `FamilyEmergencyTab.tsx`, `FinancialTab.tsx`, `userFormFields.tsx`, `useUserFieldLookup.ts` | Detay sayfası ve sekmeler | +| `ui/src/views/admin/user-management/HrRecordsTab.tsx`, `hrRecordTabs.ts` | Eğitimler / Performans / Disiplin sekmeleri: İK ekranları çalışana süzülmüş açılır; sekme, ekranlarından birini görme yetkisi varsa çizilir. Yeni bir İK modülü sekmesi `HR_RECORD_TABS`'a satır eklemekle açılır | | `api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs` | `GetByIdAsync`, `UpdateUserAsync`, `Get/UpdateFinancialAsync`, `UpdateAvatarAsync` | | `api/src/Sozsoft.Platform.Domain/Extensions/AbpIdentityUserExtensions.cs`, `EntityFrameworkCore/PlatformEfCoreEntityExtensionMappings.cs` | Genişletme alanları | | `api/src/Sozsoft.Platform.Domain/Entities/Tenant/Administration/User*.cs` | Çok kayıtlı entity'ler | diff --git a/configs/seeds/host/docs/modules/HrRecruitment.md b/configs/seeds/host/docs/modules/HrRecruitment.md index b82ec913..452abf8c 100644 --- a/configs/seeds/host/docs/modules/HrRecruitment.md +++ b/configs/seeds/host/docs/modules/HrRecruitment.md @@ -432,6 +432,29 @@ Rapor şablonları ve bildirim satırları elle kaldırılır. | `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 | @@ -475,36 +498,13 @@ Rapor şablonları ve bildirim satırları elle kaldırılır. | `ApprovalDate` | Onay Tarihi | dxDateBox | | ✓ | | | `ApprovalDescription` | Onay Açıklaması | dxTextBox | | ✓ | | -### Aday Kaynakları — `App.Hr.CandidateSource` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/CandidateSource.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.CandidateSource` (sıra 13) | -| 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 | | ✓ | | - ### Ret Sebepleri — `App.Hr.RejectionReason` | Özellik | Değer | | --- | --- | | Wizard | `wizard/RejectionReason.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.RejectionReason` (sıra 14) | +| 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'` | @@ -528,7 +528,7 @@ Rapor şablonları ve bildirim satırları elle kaldırılır. | --- | --- | | Wizard | `wizard/EvaluationCriterion.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.EvaluationCriterion` (sıra 15) | +| 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'` | diff --git a/configs/seeds/host/docs/modules/HrTrainings.md b/configs/seeds/host/docs/modules/HrTrainings.md index 6ceb33f0..e98c7c36 100644 --- a/configs/seeds/host/docs/modules/HrTrainings.md +++ b/configs/seeds/host/docs/modules/HrTrainings.md @@ -119,11 +119,13 @@ altında üç ekranın kökü + `.Create/.Update/.Delete/.Export/.Import/.Note`; | --- | --- | | `Sas_T_Branch` | Eğitimin şubesi | | `AbpUsers` | Katılımcı; işe giriş tarihi, departman, pozisyon kopyası | +| Kullanıcı detayı › Eğitimler | Katılımcılar ekranı çalışana süzülmüş açılır; satır eklemek çalışanı eğitime katılımcı yapar (`HrPersonnel.md`) | | `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 | +| Performans Yönetimi | Gelişim planı aksiyonu bir eğitime bağlanabilir (`Hr_T_DevelopmentPlan.TrainingId`); çalışan o eğitimde **Attended** ise aksiyon kendiliğinden tamamlanır: plan kaydında ve katılımcı kaydında (`Hr_S_DevelopmentPlanSync`, `Hr_S_TrainingSync`; bkz. `HrPerformance.md`) | +| Puantaj ve Devam Takibi | **Katıldı** işaretli katılımcının başlangıç–bitiş arasındaki iş günleri puantajda `Eğitimde` (vardiya saatleriyle) yazılır, okutması olmadığı için devamsız sayılmaz. Eğitim ya da katılımcı eklenince, değişince, silinince `Hr_S_TrainingSync` günleri hemen yeniden hesaplar (`HrAttendance.md` §7.1) | --- @@ -234,6 +236,7 @@ düşer. Gelişim planlarındaki `TrainingId` bağları silinmez, boşa düşer. | 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` | +| Komutlar | UpdateAfter: `Hr_S_TrainingSync` · DeleteAfter: `Hr_S_TrainingSync` | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | @@ -274,6 +277,7 @@ düşer. Gelişim planlarındaki `TrainingId` bağları silinmez, boşa düşer. | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | +| Komutlar | InsertAfter: `Hr_S_TrainingSync` · UpdateAfter: `Hr_S_TrainingSync` · DeleteAfter: `Hr_S_TrainingSync` | | Butonlar | `App.Hr.TrainingParticipant.Certificate` | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | diff --git a/configs/seeds/host/docs/modules/HrVehicles.md b/configs/seeds/host/docs/modules/HrVehicles.md index b744b1d6..282862bf 100644 --- a/configs/seeds/host/docs/modules/HrVehicles.md +++ b/configs/seeds/host/docs/modules/HrVehicles.md @@ -49,12 +49,12 @@ Kapsam: kiracı (`IsTenant`). Araç bir şubeye (tesis) bağlıdır; satır süz | Sıra | Menü (TR / EN) | `ListFormCode` | Alt formlar | Widget'lar | | --- | --- | --- | --- | --- | | 1 | Araç Belgeleri / Vehicle Documents | `App.Hr.VehicleDocument` | — | Toplam · Aktif · Pasif | -| 2 | Araçlar / Vehicles | `App.Hr.Vehicle` | `VehicleFile` (`Id → VehicleId`) | Toplam · Geldi · Gitti · Pasif | +| 2 | Masraf Tanımlama / Expense Definitions | `App.Hr.VehicleExpenseDefinition` | — | Toplam · Aktif · Pasif | | 3 | Gidilecek Yerler / Destinations | `App.Hr.VehicleDestination` | — | Toplam · Aktif · Pasif | -| 4 | Şoför Tanımlama / Drivers | `App.Hr.Driver` | `DriverDocument`, `DriverPenalty`, `DriverAccident` (`Id → DriverId`) | Toplam · Zimmetli Araçlı · Toplam Km | -| 5 | Masraf Tanımlama / Expense Definitions | `App.Hr.VehicleExpenseDefinition` | — | Toplam · Aktif · Pasif | -| 6 | Masraf Girişleri / Vehicle Expenses | `App.Hr.VehicleExpense` | `VehicleExpenseLine` (`Id → VehicleExpenseId`) | Toplam · Bugün · Toplam Tutar (net kalemler) | -| 7 | Araç Giriş-Çıkış Takip / Vehicle Gate Log | `App.Hr.VehicleMovement` | — | Toplam · Gitti · Bugün | +| 4 | Araçlar / Vehicles | `App.Hr.Vehicle` | `VehicleFile` (`Id → VehicleId`) | Toplam · Geldi · Gitti · Pasif | +| 5 | Şoför Tanımlama / Drivers | `App.Hr.Driver` | `DriverDocument`, `DriverPenalty`, `DriverAccident` (`Id → DriverId`) | Toplam · Zimmetli Araçlı · Toplam Km | +| 6 | Araç Giriş-Çıkış Takip / Vehicle Gate Log | `App.Hr.VehicleMovement` | — | Toplam · Gitti · Bugün | +| 7 | Masraf Girişleri / Vehicle Expenses | `App.Hr.VehicleExpense` | `VehicleExpenseLine` (`Id → VehicleExpenseId`) | Toplam · Bugün · Toplam Tutar (net kalemler) | Tüm ekranlar Grid, Card, Pivot, Chart görünümleriyle gelir; özel görünüm (Todo, Scheduler) yoktur. @@ -240,13 +240,60 @@ tablolar yalnızca onayda seçilirse düşer. | `Name` | Belge Adı | dxTextBox | ✓ | ✓ | | | `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | +### Masraf Tanımlama — `App.Hr.VehicleExpenseDefinition` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/VehicleExpenseDefinition.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleExpenseDefinition` (sıra 2) | +| Yetki | `App.Hr.VehicleExpenseDefinition` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Masraf Tanımlama — araç masraf kalemleri (sigorta, vergi, bakım, muayene, geçiş, ceza, yakıt…). | +| Geliştirme talebi | Human Resources -> Araçlar | +| Kaynak | `Hr_T_VehicleExpenseDefinition` · 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.VehicleExpenseDefinition.json` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `ExpenseType` | Masraf Tipi | dxTextBox | ✓ | ✓ | | +| `Name` | Masraf Adı | dxTextBox | ✓ | ✓ | | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | + +### Gidilecek Yerler — `App.Hr.VehicleDestination` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/VehicleDestination.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleDestination` (sıra 3) | +| Yetki | `App.Hr.VehicleDestination` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Gidilecek Yerler — araçlarla gidilen tanımlı yerler ve uzaklıkları. | +| Geliştirme talebi | Human Resources -> Araçlar | +| Kaynak | `Hr_T_VehicleDestination` · 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 | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `Name` | Gidilecek Yerin Adı | dxTextBox | ✓ | ✓ | | +| `Distance` | Uzaklığı (km) | dxNumberBox | | ✓ | | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | + ### Araçlar — `App.Hr.Vehicle` | Özellik | Değer | | --- | --- | | Wizard | `wizard/Vehicle.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Vehicles` › `App.Hr.Vehicle` (sıra 2) | +| Menü | `App.Hr.Vehicles` › `App.Hr.Vehicle` (sıra 4) | | Yetki | `App.Hr.Vehicle` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Araçlar — şubeye ait şirket araçları, anlık durumu (şirkette/dışarıda), güncel km'si ve muayene/sigorta tarihleri. | | Geliştirme talebi | Human Resources -> Araçlar | @@ -280,36 +327,13 @@ tablolar yalnızca onayda seçilirse düşer. | `TachographStart` | Takograf Kalib. Başlangıç | dxDateBox | | ✓ | | | `TachographEnd` | Takograf Kalib. Bitiş | dxDateBox | | ✓ | | -### Gidilecek Yerler — `App.Hr.VehicleDestination` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/VehicleDestination.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleDestination` (sıra 3) | -| Yetki | `App.Hr.VehicleDestination` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Gidilecek Yerler — araçlarla gidilen tanımlı yerler ve uzaklıkları. | -| Geliştirme talebi | Human Resources -> Araçlar | -| Kaynak | `Hr_T_VehicleDestination` · 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 | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `Name` | Gidilecek Yerin Adı | dxTextBox | ✓ | ✓ | | -| `Distance` | Uzaklığı (km) | dxNumberBox | | ✓ | | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | - ### Şoför Tanımlama — `App.Hr.Driver` | Özellik | Değer | | --- | --- | | Wizard | `wizard/Driver.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Vehicles` › `App.Hr.Driver` (sıra 4) | +| Menü | `App.Hr.Vehicles` › `App.Hr.Driver` (sıra 5) | | Yetki | `App.Hr.Driver` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Şoför Tanımlama — şirket araçlarını kullanan personel, zimmetli araçları ve sürüş geçmişi. | | Geliştirme talebi | Human Resources -> Araçlar | @@ -330,64 +354,13 @@ tablolar yalnızca onayda seçilirse düşer. | `Vehicle5Id` | Zimmetli Araç 5 | dxSelectBox | | ✓ | sorgu: Hr_T_Vehicle | | `TotalKm` | Yapılan KM | dxNumberBox | | ✓ | | -### Masraf Tanımlama — `App.Hr.VehicleExpenseDefinition` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/VehicleExpenseDefinition.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleExpenseDefinition` (sıra 5) | -| Yetki | `App.Hr.VehicleExpenseDefinition` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Masraf Tanımlama — araç masraf kalemleri (sigorta, vergi, bakım, muayene, geçiş, ceza, yakıt…). | -| Geliştirme talebi | Human Resources -> Araçlar | -| Kaynak | `Hr_T_VehicleExpenseDefinition` · 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.VehicleExpenseDefinition.json` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `ExpenseType` | Masraf Tipi | dxTextBox | ✓ | ✓ | | -| `Name` | Masraf Adı | dxTextBox | ✓ | ✓ | | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | - -### Masraf Girişleri — `App.Hr.VehicleExpense` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/VehicleExpense.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleExpense` (sıra 6) | -| Yetki | `App.Hr.VehicleExpense` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Masraf Girişleri — araç için gelen her fatura/fiş: başlık bilgileri ve kalemleri. | -| Geliştirme talebi | Human Resources -> Araçlar | -| Kaynak | `Hr_T_VehicleExpense` · 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.VehicleExpenseLine` (Id → VehicleExpenseId) | -| Widget'lar | `App.Widget.Total`, `App.Widget.Today`, `App.Widget.TotalRevenue` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `VehicleId` | Araç Adı | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Vehicle | -| `InvoiceNo` | Fatura No | dxTextBox | ✓ | ✓ | | -| `InvoiceDate` | Fatura Tarihi | dxDateBox | ✓ | ✓ | script | -| `DestinationId` | Firma Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDestination | -| `VehicleDocumentId` | Belge Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDocument | -| `FileName` | Dosya Adı | dxTextBox | | ✓ | | -| `FileContent` | Dosya | dxImageUpload | | ✓ | | - ### Araç Giriş-Çıkış Takip — `App.Hr.VehicleMovement` | Özellik | Değer | | --- | --- | | Wizard | `wizard/VehicleMovement.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleMovement` (sıra 7) | +| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleMovement` (sıra 6) | | Yetki | `App.Hr.VehicleMovement` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Araç Giriş-Çıkış Takip — güvenliğin tuttuğu araç hareket defteri: araç şirketten ne zaman, kimle, hangi km ile çıktı, ne zaman döndü. | | Geliştirme talebi | Human Resources -> Araçlar | @@ -423,6 +396,33 @@ tablolar yalnızca onayda seçilirse düşer. | `DurationMinutes` | Gezinti Süresi / Dk | dxNumberBox | | ✓ | | | `ExpectedKm` | Olması Gereken Km | dxNumberBox | | ✓ | | +### Masraf Girişleri — `App.Hr.VehicleExpense` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/VehicleExpense.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Vehicles` › `App.Hr.VehicleExpense` (sıra 7) | +| Yetki | `App.Hr.VehicleExpense` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Masraf Girişleri — araç için gelen her fatura/fiş: başlık bilgileri ve kalemleri. | +| Geliştirme talebi | Human Resources -> Araçlar | +| Kaynak | `Hr_T_VehicleExpense` · 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.VehicleExpenseLine` (Id → VehicleExpenseId) | +| Widget'lar | `App.Widget.Total`, `App.Widget.Today`, `App.Widget.TotalRevenue` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `VehicleId` | Araç Adı | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Vehicle | +| `InvoiceNo` | Fatura No | dxTextBox | ✓ | ✓ | | +| `InvoiceDate` | Fatura Tarihi | dxDateBox | ✓ | ✓ | script | +| `DestinationId` | Firma Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDestination | +| `VehicleDocumentId` | Belge Adı | dxSelectBox | | ✓ | sorgu: Hr_T_VehicleDocument | +| `FileName` | Dosya Adı | dxTextBox | | ✓ | | +| `FileContent` | Dosya | dxImageUpload | | ✓ | | + ### Araç Belgeleri — `App.Hr.VehicleFile` | Özellik | Değer | diff --git a/configs/seeds/host/docs/modules/HrVisitor.md b/configs/seeds/host/docs/modules/HrVisitor.md index 096523db..b7ebb10f 100644 --- a/configs/seeds/host/docs/modules/HrVisitor.md +++ b/configs/seeds/host/docs/modules/HrVisitor.md @@ -38,7 +38,7 @@ Kapsam: kiracı (`IsTenant`). Her kayıt bir şubeye bağlıdır; satır süzmes | Menü (TR / EN) | `ListFormCode` | Yer | Görünümler | Widget'lar (bugün) | | --- | --- | --- | --- | --- | -| Ziyaretçiler / Visitors | `App.Hr.Visitor` | `İnsan Kaynakları` (sıra 8, `FcBusinessman`) | Grid, Card, Pivot, Chart | Bugün Gelen · İçeride · Çıkış Yapan | +| Ziyaretçiler / Visitors | `App.Hr.Visitor` | `İnsan Kaynakları` (sıra 12, `FcBusinessman`) | Grid, Card, Pivot, Chart | Bugün Gelen · İçeride · Çıkış Yapan | Widget'lar yalnız **bugünün** (`VisitDate = bugün`) kayıtlarını sayar. @@ -124,7 +124,7 @@ Geri alma: Wizard Manager'dan silinir; tablo yalnızca onayda seçilirse düşer | --- | --- | | Wizard | `wizard/Visitor.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr` › `App.Hr.Visitor` (sıra 3) | +| Menü | `App.Hr` › `App.Hr.Visitor` (sıra 12) | | Yetki | `App.Hr.Visitor` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Ziyaretçiler — güvenlik/resepsiyonun tuttuğu ziyaretçi giriş-çıkış defteri. | | Geliştirme talebi | Human Resources -> Ziyaretçi Takip Listesi | diff --git a/configs/seeds/host/docs/modules/HrWorkCalendar.md b/configs/seeds/host/docs/modules/HrWorkCalendar.md index 3f232c43..29afea25 100644 --- a/configs/seeds/host/docs/modules/HrWorkCalendar.md +++ b/configs/seeds/host/docs/modules/HrWorkCalendar.md @@ -35,7 +35,7 @@ Kapsam: kiracı (`IsTenant`). Şube kırılımı yoktur — takvim kiracının t | 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) | +| Menü yeri | Çalışma Takvimi `İnsan Kaynakları` kökünde; Vardiyalar bir tanım olduğu için `İnsan Kaynakları › Tanımlamalar` altında (yetkisi de `App.Hr.Definitions`'ın altındadır) | --- @@ -43,8 +43,8 @@ Kapsam: kiracı (`IsTenant`). Şube kırılımı yoktur — takvim kiracının t | 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 | +| Çalışma Takvimi / Work Calendar | `App.Hr.WorkCalendar` | `İnsan Kaynakları` (sıra 4, `FcCalendar`) | Grid, Card, Pivot, Chart, **Scheduler** | Toplam · Tatil · Yarım Gün | +| Vardiyalar / Shifts | `App.Hr.Shift` | `İnsan Kaynakları › Tanımlar` (sıra 11, `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`. @@ -63,7 +63,7 @@ Seed verisi: | 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` | +| `Hr_T_Shift` | `Name`, `StartTime`, `EndTime`, `BreakMinutes`, `LateToleranceMinutes`, `EarlyLeaveToleranceMinutes`, `WorkingHours`, `IsNightShift`, `IsActive` | | `AbpUsers.ShiftId` | Çalışanın vardiyası (genişletme kolonu) | Entity yoktur (wizard tabloları); `sql/object/Hr_T_{WorkCalendar,Shift}.sql`. @@ -78,7 +78,10 @@ Entity yoktur (wizard tabloları); `sql/object/Hr_T_{WorkCalendar,Shift}.sql`. | 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. +| Vardiya — toleranslar | Geç kalma / erken çıkış toleransı (dk); boşsa Ayarlar › İnsan Kaynakları › Puantaj'daki genel değer | + +Takvim İzin Yönetimi'nin gün sayısını (`HrLeave.md`), takvim ve vardiya Puantaj ve Devam Takibi'nin +gün tipini, vardiya saatini, molasını ve toleransını (`HrAttendance.md`) besler. --- @@ -96,6 +99,8 @@ Hiçbir yetki role otomatik atanmaz. Takvimin okunması tüm çalışanlara aç | 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) | +| İzin Yönetimi | Takvim tatilleri izin gününden düşülür (`Hr_F_LeaveWorkDays`). Takvim satırı eklenince/değişince/silinince denk gelen izinlerin gün sayısı yeniden hesaplanır (`Hr_S_WorkCalendarAfterSave`) | +| Puantaj ve Devam Takibi | Tatil → Resmî tatil, arife → yarım vardiya (`Hr_F_WorkCalendarDayType`); vardiya saat/mola/tolerans → `Hr_V_AttendanceShift`. Takvim kaydı ilgili günleri hemen yeniden hesaplar (kapalı ay hariç); vardiya değişikliği gece işinde ya da Puantaj Dönemleri kaydında yansır | --- @@ -113,11 +118,13 @@ Hiçbir yetki role otomatik atanmaz. Takvimin okunması tüm çalışanlara aç **Ç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. +**Takvim izin/puantaj hesabını etkiliyor mu?** Evet: izin gün sayısından tatiller düşülür, puantajda tatil +günü Resmî tatil, arife yarım gün sayılır. Takvim satırı kaydedilince denk gelen günlerin izin gün sayısı ve +puantajı hemen yeniden hesaplanır (yıllık tekrarlı satırda bu yıl ve gelecek yıl; kapalı puantaj ayı yazılmaz). +Bir satırın tarihi değiştirildiğinde eski tarihlerin puantajı gece işinde ya da Puantaj Dönemleri kaydında düzelir. -**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. +**Vardiyalar nerede?** `İnsan Kaynakları › Tanımlamalar` altında (sıra 11); menü satırı, wizard dosyası ve +yetki ağacı aynı yeri gösterir. --- @@ -143,7 +150,7 @@ Geri alma: Wizard Manager'dan silinir; vardiya tablosu kullanıcı ekranının l | --- | --- | | Wizard | `wizard/WorkCalendar.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr` › `App.Hr.WorkCalendar` (sıra 2) | +| Menü | `App.Hr` › `App.Hr.WorkCalendar` (sıra 4) | | 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'` | @@ -151,6 +158,7 @@ Geri alma: Wizard Manager'dan silinir; vardiya tablosu kullanıcı ekranının l | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | | Widget'lar | `App.Widget.Total`, `App.Hr.WorkCalendar.DayType.Holiday`, `App.Hr.WorkCalendar.DayType.HalfDay` | +| Komutlar | InsertAfter: `Hr_S_WorkCalendarAfterSave` · UpdateAfter: `Hr_S_WorkCalendarAfterSave` · DeleteAfter: `Hr_S_WorkCalendarAfterSave` | | Form varsayılanları | DayType=Holiday, RecurrenceRule=FREQ=YEARLY, AllDay=true, IsActive=true | | Veri aynası | `data/App.Hr.WorkCalendar.json` | @@ -170,7 +178,7 @@ Geri alma: Wizard Manager'dan silinir; vardiya tablosu kullanıcı ekranının l | --- | --- | | Wizard | `wizard/Shift.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Definitions` › `App.Hr.Shift` (sıra 9) | +| Menü | `App.Hr.Definitions` › `App.Hr.Shift` (sıra 11) | | 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üğü | @@ -188,6 +196,8 @@ Geri alma: Wizard Manager'dan silinir; vardiya tablosu kullanıcı ekranının l | `StartTime` | Başlangıç Saati | dxTextBox | | ✓ | | | `EndTime` | Bitiş Saati | dxTextBox | | ✓ | | | `BreakMinutes` | Mola (dk) | dxNumberBox | | ✓ | | +| `LateToleranceMinutes` | Geç Kalma Toleransı (dk) | dxNumberBox | | ✓ | | +| `EarlyLeaveToleranceMinutes` | Erken Çıkış Toleransı (dk) | dxNumberBox | | ✓ | | | `WorkingHours` | Çalışma Süresi (Saat) | dxNumberBox | | ✓ | | | `IsNightShift` | Gece Vardiyası | dxCheckBox | ✓ | ✓ | | | `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | diff --git a/configs/seeds/host/sql/object/Hr_F_LeaveNetDays.sql b/configs/seeds/host/sql/object/Hr_F_LeaveNetDays.sql new file mode 100644 index 00000000..c045ac5e --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_F_LeaveNetDays.sql @@ -0,0 +1,32 @@ +CREATE OR ALTER FUNCTION [dbo].[Hr_F_LeaveNetDays] +( + @TenantId uniqueidentifier, + @EmployeeId uniqueidentifier, + @StartDate date, + @EndDate date +) +RETURNS decimal(9, 1) +AS +BEGIN + -- İzin talebinin düştüğü gün sayısı: çalışma günleri (Hr_F_LeaveWorkDays) eksi çalışanın + -- rapor (istirahat) kapsamındaki günleri. İzin sırasında alınan raporun günleri izinden sayılmaz; + -- puantajda da o günler Raporlu'dur, bakiye ile puantaj aynı günü iki kez kullanmaz. + IF @StartDate IS NULL OR @EndDate IS NULL OR @EndDate < @StartDate + RETURN 0; + + DECLARE @Total decimal(9, 1) = dbo.Hr_F_LeaveWorkDays(@TenantId, @StartDate, @EndDate); + DECLARE @Day date = @StartDate; + + WHILE @Day <= @EndDate AND @Total > 0 + BEGIN + IF EXISTS (SELECT 1 FROM Adm_T_UserSickLeave s + WHERE s.UserId = @EmployeeId AND s.IsDeleted = 0 + AND @Day BETWEEN CAST(s.StartDate AS date) AND CAST(s.EndDate AS date)) + SET @Total -= dbo.Hr_F_LeaveWorkDays(@TenantId, @Day, @Day); + + SET @Day = DATEADD(day, 1, @Day); + END + + RETURN CASE WHEN @Total < 0 THEN 0 ELSE @Total END; +END +GO diff --git a/configs/seeds/host/sql/object/Hr_F_TimesheetPeriodClosed.sql b/configs/seeds/host/sql/object/Hr_F_TimesheetPeriodClosed.sql new file mode 100644 index 00000000..87c039f9 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_F_TimesheetPeriodClosed.sql @@ -0,0 +1,25 @@ +CREATE OR ALTER FUNCTION [dbo].[Hr_F_TimesheetPeriodClosed] +( + @TenantId uniqueidentifier, + @StartDate date, + @EndDate date +) +RETURNS bit +AS +BEGIN + -- Aralığın değdiği aylardan biri kapalı puantaj dönemiyse 1. Puantajı değiştiren kayıtlar + -- (izin, rapor, puantaj günü) kapalı aya yazılamaz; dönemi İK açar, açılış ayı yeniden hesaplar. + IF @StartDate IS NULL OR @EndDate IS NULL + RETURN 0; + + IF EXISTS ( + SELECT 1 FROM Hr_T_TimesheetPeriod p + WHERE p.IsDeleted = 0 AND p.[Status] = N'Closed' + AND (p.TenantId = @TenantId OR (p.TenantId IS NULL AND @TenantId IS NULL)) + AND p.PeriodYear * 100 + p.PeriodMonth + BETWEEN YEAR(@StartDate) * 100 + MONTH(@StartDate) AND YEAR(@EndDate) * 100 + MONTH(@EndDate)) + RETURN 1; + + RETURN 0; +END +GO diff --git a/configs/seeds/host/sql/object/Hr_F_WorkCalendarDayType.sql b/configs/seeds/host/sql/object/Hr_F_WorkCalendarDayType.sql new file mode 100644 index 00000000..b028d1c0 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_F_WorkCalendarDayType.sql @@ -0,0 +1,25 @@ +CREATE OR ALTER FUNCTION [dbo].[Hr_F_WorkCalendarDayType] +( + @TenantId uniqueidentifier, + @Day date +) +RETURNS nvarchar(16) +AS +BEGIN + -- Çalışma Takvimi'nde güne düşen tür: Holiday (tam gün tatil) yarım günü (HalfDay) ezer; yoksa NULL. + -- Yıllık tekrarlı satır eşlemesi Hr_F_LeaveWorkDays ile aynıdır. + RETURN ( + SELECT CASE WHEN MAX(CASE WHEN c.DayType = N'Holiday' THEN 1 ELSE 0 END) = 1 THEN N'Holiday' ELSE N'HalfDay' END + FROM Hr_T_WorkCalendar c + WHERE c.IsDeleted = 0 AND c.IsActive = 1 + AND (c.TenantId = @TenantId OR (c.TenantId IS NULL AND @TenantId IS NULL)) + AND ( + ((c.RecurrenceRule IS NULL OR c.RecurrenceRule = N'') AND @Day BETWEEN CAST(c.StartDate AS date) AND CAST(c.EndDate AS date)) + OR (c.RecurrenceRule = N'FREQ=YEARLY' AND YEAR(@Day) >= YEAR(c.StartDate) + AND @Day BETWEEN CAST(DATEADD(year, YEAR(@Day) - YEAR(c.StartDate), c.StartDate) AS date) + AND CAST(DATEADD(year, YEAR(@Day) - YEAR(c.StartDate), c.EndDate) AS date)) + ) + HAVING COUNT(*) > 0 + ); +END +GO diff --git a/configs/seeds/host/sql/object/Hr_S_AttendanceImport.sql b/configs/seeds/host/sql/object/Hr_S_AttendanceImport.sql new file mode 100644 index 00000000..959d83a9 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_S_AttendanceImport.sql @@ -0,0 +1,77 @@ +CREATE OR ALTER PROCEDURE [dbo].[Hr_S_AttendanceImport] + @TenantId nvarchar(64), + @UserId nvarchar(64), + @Items nvarchar(MAX) +AS +BEGIN + SET NOCOUNT ON; + + -- PDKS ucu (Custom Endpoint POST /hr/attendance/): gövdedeki Items JSON dizisini hareket olarak + -- yazar. Her öğe: CardNo (kullanıcı kartındaki PDKS Kart No), RegistrationNo (Sicil No) ya da UserName; + -- EventTime (yerel saat, ISO 8601), Direction (In/Out/Auto), DeviceCode. Kart/sicil eşlemesini + -- Hr_S_AttendanceProcess yapar. Aynı kişi ve aynı zamanla daha önce gelmiş okutma atlanır; kapalı + -- döneme düşen ve kartı tanımsız okutma hatalı işaretlenir, gönderimi durdurmaz. + DECLARE @Tenant uniqueidentifier = TRY_CONVERT(uniqueidentifier, @TenantId), + @Actor uniqueidentifier = TRY_CONVERT(uniqueidentifier, @UserId); + + IF @Items IS NULL OR ISJSON(@Items) <> 1 + THROW 51210, N'Items geçerli bir JSON dizisi olmalıdır.', 1; + + CREATE TABLE #aiItem + ( + CardNo nvarchar(64) NULL, UserName nvarchar(256) NULL, EventTime datetime2 NULL, + Direction nvarchar(8) NULL, DeviceCode nvarchar(64) NULL, EmployeeId uniqueidentifier NULL + ); + + INSERT INTO #aiItem (CardNo, UserName, EventTime, Direction, DeviceCode) + SELECT COALESCE(NULLIF(LTRIM(RTRIM(CardNo)), N''), NULLIF(LTRIM(RTRIM(RegistrationNo)), N'')), + NULLIF(LTRIM(RTRIM(UserName)), N''), + TRY_CONVERT(datetime2, EventTime), + CASE WHEN Direction IN (N'In', N'Out') THEN Direction ELSE N'Auto' END, + DeviceCode + FROM OPENJSON(@Items) + WITH ( + CardNo nvarchar(64) '$.CardNo', + RegistrationNo nvarchar(64) '$.RegistrationNo', + UserName nvarchar(256) '$.UserName', + EventTime nvarchar(40) '$.EventTime', + Direction nvarchar(8) '$.Direction', + DeviceCode nvarchar(64) '$.DeviceCode' + ); + + DECLARE @Received int = (SELECT COUNT(*) FROM #aiItem); + + DELETE FROM #aiItem WHERE EventTime IS NULL OR (CardNo IS NULL AND UserName IS NULL); + + UPDATE i + SET EmployeeId = u.Id + FROM #aiItem i + INNER JOIN AbpUsers u ON u.UserName = i.UserName AND u.IsDeleted = 0 + AND (u.TenantId = @Tenant OR (u.TenantId IS NULL AND @Tenant IS NULL)) + WHERE i.UserName IS NOT NULL; + + DECLARE @Inserted TABLE (Id uniqueidentifier); + + INSERT INTO Hr_T_AttendanceLog + (Id, TenantId, EmployeeId, CardNo, EventTime, Direction, Source, DeviceCode, IsProcessed, CreationTime, CreatorId, IsDeleted) + OUTPUT inserted.Id INTO @Inserted (Id) + SELECT NEWID(), @Tenant, n.EmployeeId, n.CardNo, n.EventTime, n.Direction, N'Pdks', n.DeviceCode, 0, GETUTCDATE(), @Actor, 0 + FROM ( + SELECT DISTINCT EmployeeId, CardNo, EventTime, Direction, DeviceCode FROM #aiItem + ) n + WHERE NOT EXISTS ( + SELECT 1 FROM Hr_T_AttendanceLog l + WHERE l.IsDeleted = 0 AND l.EventTime = n.EventTime + AND (l.TenantId = @Tenant OR (l.TenantId IS NULL AND @Tenant IS NULL)) + AND ((n.EmployeeId IS NOT NULL AND l.EmployeeId = n.EmployeeId) + OR (n.EmployeeId IS NULL AND l.CardNo = n.CardNo))); + + EXEC dbo.Hr_S_AttendanceProcess 0; + + SELECT @Received AS Received, + (SELECT COUNT(*) FROM @Inserted) AS Inserted, + @Received - (SELECT COUNT(*) FROM @Inserted) AS Skipped, + (SELECT COUNT(*) FROM Hr_T_AttendanceLog l INNER JOIN @Inserted i ON i.Id = l.Id + WHERE l.ProcessError IS NOT NULL) AS Errors; +END +GO diff --git a/configs/seeds/host/sql/object/Hr_S_AttendanceProcess.sql b/configs/seeds/host/sql/object/Hr_S_AttendanceProcess.sql new file mode 100644 index 00000000..e13890c7 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_S_AttendanceProcess.sql @@ -0,0 +1,96 @@ +CREATE OR ALTER PROCEDURE [dbo].[Hr_S_AttendanceProcess] + @FailOnClosed bit = 1 +AS +BEGIN + SET NOCOUNT ON; + + -- İşlenmemiş hareketleri (ekran, Excel import, PDKS ucu; silinenler dahil) işler: çalışanı kullanıcı + -- kartındaki PDKS Kart No'dan (yoksa Sicil No'dan) bulur, hareketin iş gününü vardiyaya göre belirler ve etkilenen günlerin puantajını + -- yeniden hesaplar. Ekrandan gelen değişiklik kapalı döneme düşerse kayıt geri alınır + -- (@FailOnClosed = 1); PDKS ve gece işinde satır hatalı işaretlenir. + CREATE TABLE #apLog + ( + Id uniqueidentifier PRIMARY KEY, TenantId uniqueidentifier NULL, EmployeeId uniqueidentifier NULL, + CardNo nvarchar(64) NULL, EventTime datetime2, IsDeleted bit, OldWorkDate date NULL, + NewWorkDate date NULL, Error nvarchar(32) NULL + ); + + INSERT INTO #apLog (Id, TenantId, EmployeeId, CardNo, EventTime, IsDeleted, OldWorkDate) + SELECT Id, TenantId, EmployeeId, CardNo, EventTime, IsDeleted, WorkDate + FROM Hr_T_AttendanceLog + WHERE IsProcessed = 0; + + IF NOT EXISTS (SELECT 1 FROM #apLog) + RETURN; + + UPDATE a + SET EmployeeId = u.Id + FROM #apLog a + CROSS APPLY ( + SELECT TOP 1 x.Id + FROM AbpUsers x + WHERE (x.PdksCardNo = a.CardNo OR x.RegistrationNo = a.CardNo) AND x.IsDeleted = 0 + AND (x.TenantId = a.TenantId OR (x.TenantId IS NULL AND a.TenantId IS NULL)) + ORDER BY CASE WHEN x.PdksCardNo = a.CardNo THEN 0 ELSE 1 END, x.IsActive DESC + ) u + WHERE a.EmployeeId IS NULL AND a.CardNo IS NOT NULL AND a.CardNo <> N''; + + UPDATE #apLog SET Error = N'UnknownCard' WHERE EmployeeId IS NULL AND IsDeleted = 0; + + UPDATE a + SET NewWorkDate = CAST(DATEADD(minute, -s.DayOffset, a.EventTime) AS date) + FROM #apLog a + INNER JOIN Hr_V_AttendanceShift s ON s.EmployeeId = a.EmployeeId + WHERE a.IsDeleted = 0 AND a.Error IS NULL; + + -- Kapalı dönem: hareketin eski ya da yeni günü kapalı aya düşüyorsa. + UPDATE a + SET Error = N'ClosedPeriod' + FROM #apLog a + WHERE EXISTS ( + SELECT 1 FROM Hr_T_TimesheetPeriod p + WHERE p.IsDeleted = 0 AND p.Status = N'Closed' + AND (p.TenantId = a.TenantId OR (p.TenantId IS NULL AND a.TenantId IS NULL)) + AND ((p.PeriodYear = YEAR(a.OldWorkDate) AND p.PeriodMonth = MONTH(a.OldWorkDate)) + OR (p.PeriodYear = YEAR(a.NewWorkDate) AND p.PeriodMonth = MONTH(a.NewWorkDate)))); + + IF @FailOnClosed = 1 AND EXISTS (SELECT 1 FROM #apLog WHERE Error = N'ClosedPeriod') + THROW 51200, N'Kapalı puantaj dönemine ait hareket eklenemez, değiştirilemez ya da silinemez. Dönemi İnsan Kaynakları açabilir.', 1; + + UPDATE l + SET EmployeeId = a.EmployeeId, + WorkDate = CASE WHEN a.Error = N'ClosedPeriod' THEN l.WorkDate ELSE a.NewWorkDate END, + ProcessError = a.Error, + Source = COALESCE(l.Source, N'Import'), + IsProcessed = 1 + FROM Hr_T_AttendanceLog l + INNER JOIN #apLog a ON a.Id = l.Id; + + -- Etkilenen günler: hareketin eski günü (taşındıysa ya da silindiyse) ve yeni günü. + DECLARE @Keys TABLE (TenantId uniqueidentifier NULL, EmployeeId uniqueidentifier, FromDate date, ToDate date); + + INSERT INTO @Keys (TenantId, EmployeeId, FromDate, ToDate) + SELECT TenantId, EmployeeId, MIN(D), MAX(D) + FROM ( + SELECT TenantId, EmployeeId, OldWorkDate AS D FROM #apLog + WHERE EmployeeId IS NOT NULL AND OldWorkDate IS NOT NULL AND COALESCE(Error, N'') <> N'ClosedPeriod' + UNION ALL + SELECT TenantId, EmployeeId, NewWorkDate FROM #apLog + WHERE EmployeeId IS NOT NULL AND NewWorkDate IS NOT NULL AND Error IS NULL + ) k + GROUP BY TenantId, EmployeeId; + + DECLARE @TenantId uniqueidentifier, @EmployeeId uniqueidentifier, @FromDate date, @ToDate date; + + DECLARE key_cursor CURSOR LOCAL FAST_FORWARD FOR SELECT TenantId, EmployeeId, FromDate, ToDate FROM @Keys; + OPEN key_cursor; + FETCH NEXT FROM key_cursor INTO @TenantId, @EmployeeId, @FromDate, @ToDate; + WHILE @@FETCH_STATUS = 0 + BEGIN + EXEC dbo.Hr_S_TimesheetCalculate @TenantId, @EmployeeId, @FromDate, @ToDate, NULL; + FETCH NEXT FROM key_cursor INTO @TenantId, @EmployeeId, @FromDate, @ToDate; + END + CLOSE key_cursor; + DEALLOCATE key_cursor; +END +GO diff --git a/configs/seeds/host/sql/object/Hr_S_LeaveDaysRefresh.sql b/configs/seeds/host/sql/object/Hr_S_LeaveDaysRefresh.sql new file mode 100644 index 00000000..64e3df87 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_S_LeaveDaysRefresh.sql @@ -0,0 +1,19 @@ +CREATE OR ALTER PROCEDURE [dbo].[Hr_S_LeaveDaysRefresh] + @TenantId uniqueidentifier, + @EmployeeId uniqueidentifier +AS +BEGIN + SET NOCOUNT ON; + + -- Rapor eklenince, tarihi değişince ya da silinince çalışanın diğer izin taleplerinin gün sayısı + -- yeniden hesaplanır (Hr_F_LeaveNetDays): rapora denk gelen yıllık izin günü bakiyeye geri döner. + -- Rapor türündeki talep kendi günlerini sayar; onun gün sayısına dokunulmaz. + UPDATE r + SET Days = CASE WHEN r.IsHalfDay = 1 AND n.Days > 0.5 THEN 0.5 ELSE n.Days END + FROM Hr_T_LeaveRequest r + INNER JOIN Hr_T_LeaveType t ON t.Id = r.LeaveTypeId + CROSS APPLY (SELECT dbo.Hr_F_LeaveNetDays(@TenantId, r.EmployeeId, CAST(r.StartDate AS date), CAST(r.EndDate AS date)) AS Days) n + WHERE r.EmployeeId = @EmployeeId AND r.IsDeleted = 0 AND t.Code <> N'Sick' + AND r.Days <> CASE WHEN r.IsHalfDay = 1 AND n.Days > 0.5 THEN 0.5 ELSE n.Days END; +END +GO diff --git a/configs/seeds/host/sql/object/Hr_S_LeaveRequestAfterSave.sql b/configs/seeds/host/sql/object/Hr_S_LeaveRequestAfterSave.sql index f916bb03..0c48adfb 100644 --- a/configs/seeds/host/sql/object/Hr_S_LeaveRequestAfterSave.sql +++ b/configs/seeds/host/sql/object/Hr_S_LeaveRequestAfterSave.sql @@ -6,9 +6,10 @@ AS BEGIN SET NOCOUNT ON; - -- İzin talebinin her kaydından (ekleme, güncelleme, Grid Workflow kararı) sonra çalışır: + -- İzin talebinin her kaydından (ekleme, güncelleme, Grid Workflow kararı, silme) sonra çalışır: -- çalışan bilgisi, talep no, müdür, gün sayısı tamamlanır; kurallar doğrulanır (THROW kaydı - -- geri alır); rapor türü Sağlık Kartı istirahatiyle eşlenir; durum değiştiyse bildirim gider. + -- geri alır); onaylı rapor türü Sağlık Kartı istirahatiyle eşlenir; durum değiştiyse bildirim + -- gider; puantaj yeniden hesaplanır. DECLARE @StatusStart nvarchar(50) = N'Onaya Gönderildi', @StatusManager nvarchar(50) = N'Müdür Onayı', @StatusHr nvarchar(50) = N'İK Onayı', @@ -18,28 +19,50 @@ BEGIN DECLARE @TenantId uniqueidentifier, @EmployeeId uniqueidentifier, @LeaveTypeId uniqueidentifier, @StartDate datetime2, @EndDate datetime2, @IsHalfDay bit, @HalfDayPart nvarchar(16), @Document nvarchar(MAX), @SickLeaveId uniqueidentifier, @Status nvarchar(50), - @LastStatus nvarchar(50), @Description nvarchar(1024); + @LastStatus nvarchar(50), @Description nvarchar(1024), @IsDeleted bit; SELECT @TenantId = TenantId, @EmployeeId = EmployeeId, @LeaveTypeId = LeaveTypeId, @StartDate = StartDate, @EndDate = EndDate, @IsHalfDay = IsHalfDay, @HalfDayPart = HalfDayPart, @Document = DocumentContent, @SickLeaveId = SickLeaveId, @Status = ApprovalStatus, - @LastStatus = LastNotifiedStatus, @Description = [Description] + @LastStatus = LastNotifiedStatus, @Description = [Description], @IsDeleted = IsDeleted FROM Hr_T_LeaveRequest - WHERE Id = @RequestId AND IsDeleted = 0; + WHERE Id = @RequestId; IF @EmployeeId IS NULL RETURN; + -- Puantajı kapanmış aya düşen talep eklenemez, değiştirilemez, silinemez (eski tarihleri + -- Hr_S_LeaveRequestGuard denetler). + IF dbo.Hr_F_TimesheetPeriodClosed(@TenantId, CAST(@StartDate AS date), CAST(@EndDate AS date)) = 1 + THROW 51118, N'İzin tarihleri kapalı bir puantaj dönemine düşüyor. Önce İnsan Kaynakları dönemi açmalıdır.', 1; + + IF @IsDeleted = 1 + BEGIN + -- Silinen talebin istirahati de kalkar; rapora denk gelen izin günleri ve puantaj yenilenir. + IF @SickLeaveId IS NOT NULL + BEGIN + UPDATE Adm_T_UserSickLeave + SET IsDeleted = 1, DeletionTime = GETUTCDATE(), DeleterId = @ActorId + WHERE Id = @SickLeaveId AND IsDeleted = 0; + + EXEC dbo.Hr_S_LeaveDaysRefresh @TenantId, @EmployeeId; + END + + EXEC dbo.Hr_S_TimesheetCalculate @TenantId, @EmployeeId, @StartDate, @EndDate, @ActorId; + RETURN; + END + DECLARE @Message nvarchar(1024); --------------------------------------------------------------------------------------------- -- Çalışan ve departman müdürü --------------------------------------------------------------------------------------------- DECLARE @EmployeeName nvarchar(256), @DepartmentId uniqueidentifier, @JobPositionId uniqueidentifier, - @Gender nvarchar(16); + @Gender nvarchar(16), @HireDate date, @TerminationDate date; SELECT @EmployeeName = CONCAT(Name, N' ', Surname), @DepartmentId = DepartmentId, - @JobPositionId = JobPositionId, @Gender = Gender + @JobPositionId = JobPositionId, @Gender = Gender, + @HireDate = CAST(HireDate AS date), @TerminationDate = CAST(TerminationDate AS date) FROM AbpUsers WHERE Id = @EmployeeId; @@ -158,16 +181,14 @@ BEGIN SELECT @TypeCode = Code, @TypeGender = Gender, @MaxDaysPerYear = MaxDaysPerYear, @Deducts = DeductsFromAnnualLeave, @RequiresDocument = RequiresDocument, - @AllowHalfDay = AllowHalfDay + @AllowHalfDay = AllowHalfDay, @ExceedAction = BalanceExceedAction FROM Hr_T_LeaveType WHERE Id = @LeaveTypeId; - -- Kolon Hr_T_LeaveType.sql'de sonradan eklenir; migrate prosedürleri tablolardan önce - -- derlediği için kurulu bir veritabanında doğrudan başvuru derlemeyi düşürürdü. - EXEC sp_executesql N'SELECT @Action = BalanceExceedAction FROM Hr_T_LeaveType WHERE Id = @Id', - N'@Action nvarchar(16) OUTPUT, @Id uniqueidentifier', @Action = @ExceedAction OUTPUT, @Id = @LeaveTypeId; - - DECLARE @Days decimal(9, 1) = dbo.Hr_F_LeaveWorkDays(@TenantId, CAST(@StartDate AS date), CAST(@EndDate AS date)); + -- Rapor türü kendi çalışma günlerini sayar; diğer türlerde rapora denk gelen gün izinden düşmez. + DECLARE @WorkDays decimal(9, 1) = dbo.Hr_F_LeaveWorkDays(@TenantId, CAST(@StartDate AS date), CAST(@EndDate AS date)); + DECLARE @Days decimal(9, 1) = CASE WHEN @TypeCode = N'Sick' THEN @WorkDays + ELSE dbo.Hr_F_LeaveNetDays(@TenantId, @EmployeeId, CAST(@StartDate AS date), CAST(@EndDate AS date)) END; IF @IsHalfDay = 1 SET @Days = CASE WHEN @Days > 0.5 THEN 0.5 ELSE @Days END; @@ -187,9 +208,13 @@ BEGIN IF @RequiresDocument = 1 AND (@Document IS NULL OR @Document = N'') THROW 51114, N'Bu izin türü için belge (rapor vb.) eklenmelidir.', 1; - IF @Days <= 0 + IF @WorkDays <= 0 THROW 51115, N'Seçilen tarih aralığında çalışma günü yok.', 1; + IF (@HireDate IS NOT NULL AND CAST(@StartDate AS date) < @HireDate) + OR (@TerminationDate IS NOT NULL AND CAST(@EndDate AS date) > @TerminationDate) + THROW 51119, N'İzin tarihleri çalışanın işe giriş ve işten çıkış tarihleri arasında olmalıdır.', 1; + -- Çakışma: reddedilmemiş başka bir talep ya da talebe bağlı olmayan bir istirahat aynı -- güne düşüyorsa. Aynı günün iki farklı yarısı birlikte alınabilir. IF EXISTS ( @@ -248,9 +273,10 @@ BEGIN END --------------------------------------------------------------------------------------------- - -- Rapor türü = Sağlık Kartı › İstirahatler satırı (tek kayıt) + -- Rapor türü = Sağlık Kartı › İstirahatler satırı (tek kayıt). İstirahat onayla oluşur: onay + -- bekleyen rapor talebi sağlık kartında ve puantajda görünmez, izin günlerini düşürmez. --------------------------------------------------------------------------------------------- - IF @TypeCode = N'Sick' AND COALESCE(@Status, N'') <> @StatusRejected + IF @TypeCode = N'Sick' AND @Status = @StatusApproved BEGIN IF @SickLeaveId IS NULL OR NOT EXISTS (SELECT 1 FROM Adm_T_UserSickLeave WHERE Id = @SickLeaveId) BEGIN @@ -275,7 +301,7 @@ BEGIN END ELSE IF @SickLeaveId IS NOT NULL BEGIN - -- Reddedilen ya da türü rapordan başka bir türe çevrilen talebin istirahati kalkar. + -- Reddedilen, onayı beklemeye dönen ya da türü rapordan başka bir türe çevrilen talebin istirahati kalkar. UPDATE Adm_T_UserSickLeave SET IsDeleted = 1, DeletionTime = GETUTCDATE(), DeleterId = @ActorId WHERE Id = @SickLeaveId AND IsDeleted = 0; @@ -323,5 +349,15 @@ BEGIN UPDATE Hr_T_LeaveRequest SET LastNotifiedStatus = @Status WHERE Id = @RequestId; END + + --------------------------------------------------------------------------------------------- + -- Rapor, çalışanın diğer izinlerinin gün sayısını değiştirir. Puantaj: talebin günleri yeniden + -- hesaplanır (onaylı izin İzinli, rapor Raporlu gün olur); tarihi değişen talebin artık + -- karşılıksız kalan eski günlerini hesap kendisi aralığa katar. İleri tarih yazılmaz. + --------------------------------------------------------------------------------------------- + IF @TypeCode = N'Sick' OR @SickLeaveId IS NOT NULL + EXEC dbo.Hr_S_LeaveDaysRefresh @TenantId, @EmployeeId; + + EXEC dbo.Hr_S_TimesheetCalculate @TenantId, @EmployeeId, @StartDate, @EndDate, @ActorId; END GO diff --git a/configs/seeds/host/sql/object/Hr_S_LeaveRequestGuard.sql b/configs/seeds/host/sql/object/Hr_S_LeaveRequestGuard.sql index f59ce13e..d6259a25 100644 --- a/configs/seeds/host/sql/object/Hr_S_LeaveRequestGuard.sql +++ b/configs/seeds/host/sql/object/Hr_S_LeaveRequestGuard.sql @@ -8,19 +8,28 @@ BEGIN SET NOCOUNT ON; -- Persona ekranları satırı DefaultFilter ile süzer; kayıt uçları satırı yalnızca Id ile - -- güncellediği için sahiplik ve aşama kuralı yazma tarafında burada uygulanır. - IF @RequestId IS NULL OR @Actor = N'Hr' + -- güncellediği için sahiplik ve aşama kuralı yazma tarafında burada uygulanır. Kayıttan önce + -- çalıştığı için talebin eski tarihleri de burada kapalı puantaj dönemine karşı denetlenir. + IF @RequestId IS NULL RETURN; - DECLARE @EmployeeId uniqueidentifier, @Status nvarchar(50), @ManagerIds nvarchar(1024); + DECLARE @EmployeeId uniqueidentifier, @Status nvarchar(50), @ManagerIds nvarchar(1024), + @TenantId uniqueidentifier, @StartDate date, @EndDate date; - SELECT @EmployeeId = EmployeeId, @Status = ApprovalStatus, @ManagerIds = ManagerIds + SELECT @EmployeeId = EmployeeId, @Status = ApprovalStatus, @ManagerIds = ManagerIds, + @TenantId = TenantId, @StartDate = CAST(StartDate AS date), @EndDate = CAST(EndDate AS date) FROM Hr_T_LeaveRequest WHERE Id = @RequestId AND IsDeleted = 0; IF @EmployeeId IS NULL RETURN; + IF dbo.Hr_F_TimesheetPeriodClosed(@TenantId, @StartDate, @EndDate) = 1 + THROW 51118, N'İzin tarihleri kapalı bir puantaj dönemine düşüyor. Önce İnsan Kaynakları dönemi açmalıdır.', 1; + + IF @Actor = N'Hr' + RETURN; + IF @Actor = N'Employee' BEGIN IF @EmployeeId <> @ActorId diff --git a/configs/seeds/host/sql/object/Hr_S_LeaveSickLeaveSync.sql b/configs/seeds/host/sql/object/Hr_S_LeaveSickLeaveSync.sql index 1e41da34..ac08c568 100644 --- a/configs/seeds/host/sql/object/Hr_S_LeaveSickLeaveSync.sql +++ b/configs/seeds/host/sql/object/Hr_S_LeaveSickLeaveSync.sql @@ -22,15 +22,22 @@ BEGIN IF @UserId IS NULL RETURN; - DECLARE @RequestId uniqueidentifier = - (SELECT TOP 1 Id FROM Hr_T_LeaveRequest WHERE SickLeaveId = @SickLeaveId ORDER BY IsDeleted, CreationTime); + -- Eşlenen talep istirahatin önceki tarihlerini taşır; kapalı aya düşen eski ya da yeni gün varsa + -- kayıt geri alınır (puantaj ve bordro kapanmış aydır). + DECLARE @RequestId uniqueidentifier, @OldStart date, @OldEnd date; + SELECT TOP 1 @RequestId = Id, @OldStart = CAST(StartDate AS date), @OldEnd = CAST(EndDate AS date) + FROM Hr_T_LeaveRequest WHERE SickLeaveId = @SickLeaveId ORDER BY IsDeleted, CreationTime; + + IF dbo.Hr_F_TimesheetPeriodClosed(@TenantId, @StartDate, @EndDate) = 1 + OR dbo.Hr_F_TimesheetPeriodClosed(@TenantId, @OldStart, @OldEnd) = 1 + THROW 51120, N'Rapor kapalı bir puantaj dönemine düşüyor. Önce İnsan Kaynakları dönemi açmalıdır.', 1; IF @IsDeleted = 1 BEGIN UPDATE Hr_T_LeaveRequest SET IsDeleted = 1, DeletionTime = GETUTCDATE(), DeleterId = @ActorId WHERE SickLeaveId = @SickLeaveId AND IsDeleted = 0; - RETURN; + GOTO Recalc; END DECLARE @Days decimal(9, 1) = dbo.Hr_F_LeaveWorkDays(@TenantId, @StartDate, @EndDate); @@ -42,7 +49,7 @@ BEGIN IsDeleted = 0, DeletionTime = NULL, DeleterId = NULL, LastModificationTime = GETUTCDATE(), LastModifierId = @ActorId WHERE Id = @RequestId; - RETURN; + GOTO Recalc; END -- Kiracıda rapor türü tanımlı değilse eşlenecek talep yoktur. @@ -52,7 +59,7 @@ BEGIN AND (TenantId = @TenantId OR (TenantId IS NULL AND @TenantId IS NULL))); IF @LeaveTypeId IS NULL - RETURN; + GOTO Recalc; DECLARE @ActorName nvarchar(256) = (SELECT UserName FROM AbpUsers WHERE Id = @ActorId); DECLARE @Year nvarchar(4) = CAST(YEAR(GETUTCDATE()) AS nvarchar(4)); @@ -73,5 +80,14 @@ BEGIN N'Onaylandı', @ActorName, GETUTCDATE(), N'Onaylandı', 1, GETUTCDATE(), @ActorId, 0 FROM AbpUsers u WHERE u.Id = @UserId; + +Recalc: + -- Rapora denk gelen izin günleri bakiyeye döner; puantajda raporlu günler (ve tarihi değiştiyse + -- eski günler) yeniden hesaplanır. + EXEC dbo.Hr_S_LeaveDaysRefresh @TenantId, @UserId; + + IF @OldStart IS NOT NULL AND @OldStart < @StartDate SET @StartDate = @OldStart; + IF @OldEnd IS NOT NULL AND @OldEnd > @EndDate SET @EndDate = @OldEnd; + EXEC dbo.Hr_S_TimesheetCalculate @TenantId, @UserId, @StartDate, @EndDate, @ActorId; END GO diff --git a/configs/seeds/host/sql/object/Hr_S_TimesheetCalculate.sql b/configs/seeds/host/sql/object/Hr_S_TimesheetCalculate.sql new file mode 100644 index 00000000..a16bb456 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_S_TimesheetCalculate.sql @@ -0,0 +1,426 @@ +CREATE OR ALTER PROCEDURE [dbo].[Hr_S_TimesheetCalculate] + @TenantId uniqueidentifier, + @EmployeeId uniqueidentifier = NULL, + @From date, + @To date, + @ActorId uniqueidentifier = NULL +AS +BEGIN + SET NOCOUNT ON; + + -- Günlük puantajı hareketlerden, izin/rapor/eğitim kayıtlarından ve Çalışma Takvimi'nden kurar. + -- @EmployeeId boşsa kiracının bütün çalışanları. Kapalı dönemin günleri yazılmaz (yalnız haftalık + -- birikime girer); elle düzeltilmiş gün (IsManual) girdilerini korur, yalnız süreleri yeniden hesaplanır. + -- İzin/rapor kaydını yazan prosedürler de bunu çağırdığı için hata fırlatmaz. + -- Devam takibi çalışana göre iki türlüdür: PDKS Kart No'su olan ve okutması gelmeye başlamış çalışanda + -- okutmasız iş günü devamsızdır; diğer (elle takip edilen) çalışanda kayıtsız iş günü vardiya saatleriyle "geldi" sayılır + -- (IsAssumed), İK yalnız gelinmeyen günü işaretler. + IF @From IS NULL OR @To IS NULL OR @To < @From + RETURN; + + DECLARE @Today date = CAST(GETDATE() AS date); + + -- Tek çalışanlık hesapta, kaynağı artık olmayan izin/rapor/eğitim günü (talebin tarihi değişti, + -- rapor ya da katılım silindi) aralığa katılır; böylece eski günler aynı işlemde düzelir. + IF @EmployeeId IS NOT NULL + BEGIN + DECLARE @OrphanFrom date, @OrphanTo date; + + SELECT @OrphanFrom = MIN(t.WorkDate), @OrphanTo = MAX(t.WorkDate) + FROM Hr_T_Timesheet t + WHERE t.EmployeeId = @EmployeeId AND t.IsDeleted = 0 AND t.IsManual = 0 + AND t.DayType IN (N'Leave', N'Sick', N'Training') + AND (t.WorkDate < @From OR t.WorkDate > @To) + AND NOT EXISTS (SELECT 1 FROM Adm_T_UserSickLeave s + WHERE s.UserId = t.EmployeeId AND s.IsDeleted = 0 + AND t.WorkDate BETWEEN CAST(s.StartDate AS date) AND CAST(s.EndDate AS date)) + AND NOT EXISTS (SELECT 1 FROM Hr_T_LeaveRequest q + WHERE q.EmployeeId = t.EmployeeId AND q.IsDeleted = 0 AND q.ApprovalStatus = N'Onaylandı' + AND t.WorkDate BETWEEN CAST(q.StartDate AS date) AND CAST(q.EndDate AS date)) + AND NOT EXISTS (SELECT 1 FROM Hr_T_TrainingParticipant p + INNER JOIN Hr_T_Training g ON g.Id = p.TrainingId AND g.IsDeleted = 0 + WHERE p.UserId = t.EmployeeId AND p.IsDeleted = 0 AND p.AttendanceStatus = N'Attended' + AND t.WorkDate BETWEEN g.StartDate AND g.EndDate); + + IF @OrphanFrom < @From SET @From = @OrphanFrom; + IF @OrphanTo > @To SET @To = @OrphanTo; + END + + -- Fazla mesai haftalık birikimle hesaplandığı için aralık tam haftalara (Pzt–Paz) genişler. + -- 1900-01-01 Pazartesidir; gün sırası DATEFIRST ayarından bağımsızdır. + SET @From = DATEADD(day, -(DATEDIFF(day, '19000101', @From) % 7), @From); + SET @To = DATEADD(day, 6 - (DATEDIFF(day, '19000101', @To) % 7), @To); + DECLARE @Last date = CASE WHEN @To > @Today THEN @Today ELSE @To END; + IF @Last < @From + RETURN; + + DECLARE @WeeklyLimit int = CAST(60 * COALESCE( + TRY_CONVERT(decimal(9, 2), REPLACE(dbo.Hr_F_HrSetting(@TenantId, N'App.HrSettings.Attendance.WeeklyLimitHours'), N',', N'.')), 45) AS int); + + -- Hafta tatili İzin Yönetimi'nin çalışma günü ayarlarıdır (tek kaynak); tanım yoksa Pzt–Cum. + DECLARE @Work TABLE (DayIndex int PRIMARY KEY, IsWork bit); + INSERT INTO @Work (DayIndex, IsWork) + SELECT d.DayIndex, + CASE + WHEN s.Value IS NULL THEN CASE WHEN d.DayIndex < 5 THEN 1 ELSE 0 END + WHEN LOWER(s.Value) = N'true' THEN 1 + ELSE 0 + END + FROM (VALUES + (0, N'App.HrSettings.Leave.WorkMonday'), + (1, N'App.HrSettings.Leave.WorkTuesday'), + (2, N'App.HrSettings.Leave.WorkWednesday'), + (3, N'App.HrSettings.Leave.WorkThursday'), + (4, N'App.HrSettings.Leave.WorkFriday'), + (5, N'App.HrSettings.Leave.WorkSaturday'), + (6, N'App.HrSettings.Leave.WorkSunday')) d (DayIndex, SettingName) + CROSS APPLY (SELECT dbo.Hr_F_HrSetting(@TenantId, d.SettingName) AS Value) s; + + --------------------------------------------------------------------------------------------- + -- Çalışanlar: aralıkta istihdam edilen aktif kullanıcılar + hareketi ya da puantajı olanlar + --------------------------------------------------------------------------------------------- + CREATE TABLE #tcEmp + ( + EmployeeId uniqueidentifier PRIMARY KEY, HireDate date NULL, TerminationDate date NULL, + ShiftId uniqueidentifier NULL, StartMin int, EndMin int, BreakMin int, LateTol int, EarlyTol int, + CardSince date NULL + ); + + -- Kartlı takip: kullanıcı kartında PDKS Kart No varsa ilk PDKS/aktarım okutmasının gününden başlar; + -- öncesi (kart yeni verildiyse) ve elle girilen hareketler elle takibi değiştirmez. + INSERT INTO #tcEmp (EmployeeId, HireDate, TerminationDate, ShiftId, StartMin, EndMin, BreakMin, LateTol, EarlyTol, CardSince) + SELECT u.Id, CAST(u.HireDate AS date), CAST(u.TerminationDate AS date), + s.ShiftId, s.StartMin, s.EndMin, s.BreakMin, s.LateTol, s.EarlyTol, + CASE WHEN NULLIF(LTRIM(RTRIM(u.PdksCardNo)), N'') IS NOT NULL THEN + (SELECT MIN(l.WorkDate) FROM Hr_T_AttendanceLog l + WHERE l.EmployeeId = u.Id AND l.IsDeleted = 0 AND l.ProcessError IS NULL AND l.Source <> N'Manual') + END + FROM AbpUsers u + INNER JOIN Hr_V_AttendanceShift s ON s.EmployeeId = u.Id + WHERE u.IsDeleted = 0 + AND (u.TenantId = @TenantId OR (u.TenantId IS NULL AND @TenantId IS NULL)) + AND (@EmployeeId IS NULL OR u.Id = @EmployeeId) + AND ( + (u.IsActive = 1 AND u.HireDate IS NOT NULL AND CAST(u.HireDate AS date) <= @Last + AND (u.TerminationDate IS NULL OR CAST(u.TerminationDate AS date) >= @From)) + OR EXISTS (SELECT 1 FROM Hr_T_AttendanceLog l + WHERE l.EmployeeId = u.Id AND l.IsDeleted = 0 AND l.WorkDate BETWEEN @From AND @Last) + OR EXISTS (SELECT 1 FROM Hr_T_Timesheet x + WHERE x.EmployeeId = u.Id AND x.IsDeleted = 0 AND x.WorkDate BETWEEN @From AND @Last) + ); + + IF NOT EXISTS (SELECT 1 FROM #tcEmp) + RETURN; + + --------------------------------------------------------------------------------------------- + -- Günler: hafta tatili, takvim türü, kapalı dönem + --------------------------------------------------------------------------------------------- + CREATE TABLE #tcDay (WorkDate date PRIMARY KEY, IsWorkDay bit, CalendarType nvarchar(16) NULL, IsClosed bit); + + WITH d AS ( + SELECT @From AS WorkDate + UNION ALL + SELECT DATEADD(day, 1, WorkDate) FROM d WHERE WorkDate < @Last + ) + INSERT INTO #tcDay (WorkDate, IsWorkDay, CalendarType, IsClosed) + SELECT d.WorkDate, + COALESCE(w.IsWork, 0), + dbo.Hr_F_WorkCalendarDayType(@TenantId, d.WorkDate), + CASE WHEN EXISTS ( + SELECT 1 FROM Hr_T_TimesheetPeriod p + WHERE p.IsDeleted = 0 AND p.Status = N'Closed' + AND (p.TenantId = @TenantId OR (p.TenantId IS NULL AND @TenantId IS NULL)) + AND p.PeriodYear = YEAR(d.WorkDate) AND p.PeriodMonth = MONTH(d.WorkDate)) THEN 1 ELSE 0 END + FROM d + LEFT JOIN @Work w ON w.DayIndex = DATEDIFF(day, '19000101', d.WorkDate) % 7 + OPTION (MAXRECURSION 0); + + --------------------------------------------------------------------------------------------- + -- Çalışan × gün satırları + --------------------------------------------------------------------------------------------- + CREATE TABLE #tcRow + ( + EmployeeId uniqueidentifier NOT NULL, WorkDate date NOT NULL, + ShiftId uniqueidentifier NULL, StartMin int, EndMin int, ShiftBreak int, LateTol int, EarlyTol int, + IsEmployed bit NOT NULL DEFAULT 1, HasCard bit NOT NULL DEFAULT 0, IsAssumed bit NOT NULL DEFAULT 0, + IsWorkDay bit, CalendarType nvarchar(16) NULL, IsClosed bit, + ExistingId uniqueidentifier NULL, IsManual bit NOT NULL DEFAULT 0, HalfDayLeave bit NOT NULL DEFAULT 0, + LeaveTypeId uniqueidentifier NULL, TrainingId uniqueidentifier NULL, + DayType nvarchar(16) NULL, FirstIn datetime2 NULL, LastOut datetime2 NULL, HasEvents bit NOT NULL DEFAULT 0, + ScanBreak int NOT NULL DEFAULT 0, BreakMinutes int NOT NULL DEFAULT 0, NetMinutes int NOT NULL DEFAULT 0, + LateMinutes int NOT NULL DEFAULT 0, EarlyLeaveMinutes int NOT NULL DEFAULT 0, OvertimeMinutes int NOT NULL DEFAULT 0, + IsIncomplete bit NOT NULL DEFAULT 0, + PRIMARY KEY (EmployeeId, WorkDate) + ); + + INSERT INTO #tcRow (EmployeeId, WorkDate, ShiftId, StartMin, EndMin, ShiftBreak, LateTol, EarlyTol, + IsEmployed, HasCard, IsWorkDay, CalendarType, IsClosed) + SELECT e.EmployeeId, d.WorkDate, e.ShiftId, e.StartMin, e.EndMin, e.BreakMin, e.LateTol, e.EarlyTol, + CASE WHEN e.HireDate IS NOT NULL AND e.HireDate <= d.WorkDate + AND (e.TerminationDate IS NULL OR e.TerminationDate >= d.WorkDate) THEN 1 ELSE 0 END, + CASE WHEN e.CardSince <= d.WorkDate THEN 1 ELSE 0 END, d.IsWorkDay, d.CalendarType, d.IsClosed + FROM #tcEmp e + CROSS JOIN #tcDay d; + + UPDATE r + SET ExistingId = t.Id, IsManual = t.IsManual + FROM #tcRow r + CROSS APPLY ( + SELECT TOP 1 x.Id, x.IsManual + FROM Hr_T_Timesheet x + WHERE x.EmployeeId = r.EmployeeId AND x.WorkDate = r.WorkDate AND x.IsDeleted = 0 + AND (x.TenantId = @TenantId OR (x.TenantId IS NULL AND @TenantId IS NULL)) + ORDER BY x.IsManual DESC, x.CreationTime + ) t; + + -- Kapalı dönemin günü olduğu gibi kalır; elle düzeltilmiş günün girdileri korunur. + UPDATE r + SET DayType = t.DayType, LeaveTypeId = t.LeaveTypeId, TrainingId = t.TrainingId, FirstIn = t.FirstIn, LastOut = t.LastOut, BreakMinutes = t.BreakMinutes, + NetMinutes = CASE WHEN r.IsClosed = 1 THEN t.NetMinutes ELSE 0 END, + LateMinutes = CASE WHEN r.IsClosed = 1 THEN t.LateMinutes ELSE 0 END, + EarlyLeaveMinutes = CASE WHEN r.IsClosed = 1 THEN t.EarlyLeaveMinutes ELSE 0 END, + OvertimeMinutes = CASE WHEN r.IsClosed = 1 THEN CAST(ROUND(t.OvertimeHours * 60, 0) AS int) ELSE 0 END, + IsIncomplete = t.IsIncomplete, + IsAssumed = CASE WHEN r.IsClosed = 1 THEN t.IsAssumed ELSE 0 END + FROM #tcRow r + INNER JOIN Hr_T_Timesheet t ON t.Id = r.ExistingId + WHERE r.IsClosed = 1 OR r.IsManual = 1; + + -- Elle devamsız/izinli/raporlu işaretlenen günde saat tutulmaz. + UPDATE #tcRow + SET FirstIn = NULL, LastOut = NULL, BreakMinutes = 0 + WHERE IsManual = 1 AND IsClosed = 0 AND DayType IN (N'Absent', N'Leave', N'Sick'); + + --------------------------------------------------------------------------------------------- + -- Hareketler: ilk giriş, son çıkış, okutulan mola. Yönü "Auto" olan okutma sıraya göre + -- giriş/çıkış sayılır (tek sıra giriş, çift sıra çıkış). + --------------------------------------------------------------------------------------------- + CREATE TABLE #tcEvent (EmployeeId uniqueidentifier, WorkDate date, EventTime datetime2, Dir nvarchar(8), + NextTime datetime2 NULL, NextDir nvarchar(8) NULL); + + WITH ev AS ( + SELECT l.EmployeeId, l.WorkDate, l.EventTime, MIN(l.Direction) AS Direction + FROM Hr_T_AttendanceLog l + WHERE l.IsDeleted = 0 AND l.ProcessError IS NULL AND l.WorkDate BETWEEN @From AND @Last + AND (l.TenantId = @TenantId OR (l.TenantId IS NULL AND @TenantId IS NULL)) + AND l.EmployeeId IN (SELECT EmployeeId FROM #tcEmp) + GROUP BY l.EmployeeId, l.WorkDate, l.EventTime + ), numbered AS ( + SELECT ev.*, ROW_NUMBER() OVER (PARTITION BY EmployeeId, WorkDate ORDER BY EventTime) AS Rn + FROM ev + ), dir AS ( + SELECT EmployeeId, WorkDate, EventTime, + CASE WHEN Direction IN (N'In', N'Out') THEN Direction WHEN Rn % 2 = 1 THEN N'In' ELSE N'Out' END AS Dir + FROM numbered + ) + INSERT INTO #tcEvent (EmployeeId, WorkDate, EventTime, Dir, NextTime, NextDir) + SELECT EmployeeId, WorkDate, EventTime, Dir, + LEAD(EventTime) OVER (PARTITION BY EmployeeId, WorkDate ORDER BY EventTime), + LEAD(Dir) OVER (PARTITION BY EmployeeId, WorkDate ORDER BY EventTime) + FROM dir; + + UPDATE r + SET HasEvents = 1, + FirstIn = COALESCE(s.FirstIn, s.FirstAny), + LastOut = CASE WHEN s.LastOut > COALESCE(s.FirstIn, s.FirstAny) THEN s.LastOut END + FROM #tcRow r + INNER JOIN ( + SELECT EmployeeId, WorkDate, + MIN(CASE WHEN Dir = N'In' THEN EventTime END) AS FirstIn, + MIN(EventTime) AS FirstAny, + MAX(CASE WHEN Dir = N'Out' THEN EventTime END) AS LastOut + FROM #tcEvent + GROUP BY EmployeeId, WorkDate + ) s ON s.EmployeeId = r.EmployeeId AND s.WorkDate = r.WorkDate + WHERE r.IsClosed = 0 AND r.IsManual = 0; + + -- Okutulan mola: ilk giriş ile son çıkış arasındaki çıkış → giriş aralıkları. + UPDATE r + SET ScanBreak = COALESCE(( + SELECT SUM(DATEDIFF(minute, e.EventTime, e.NextTime)) + FROM #tcEvent e + WHERE e.EmployeeId = r.EmployeeId AND e.WorkDate = r.WorkDate + AND e.Dir = N'Out' AND e.NextDir = N'In' + AND e.EventTime >= r.FirstIn AND e.NextTime <= r.LastOut), 0) + FROM #tcRow r + WHERE r.IsClosed = 0 AND r.IsManual = 0 AND r.FirstIn IS NOT NULL AND r.LastOut IS NOT NULL; + + --------------------------------------------------------------------------------------------- + -- Gün tipi (öncelik sırasıyla): + -- Raporlu: takvim günü; SGK istirahati hafta sonunu da kapsar. + -- Ücretsiz izin (IsPaid = 0; doğum izni dahil): takvim günü; hafta tatili ve genel tatil ücreti doğmaz. + -- Resmî tatil, Hafta tatili: ücretli izne denk gelen tatil izinden sayılmaz (4857 md. 56); + -- İzin Yönetimi'nin gün sayısıyla aynı kural. + -- Ücretli izin > okutmalı Çalışma > Eğitim (katılımcı "Katıldı") > Çalışma / Devamsız. + -- Okutması olmayan iş günü: kartlı çalışanda devamsız (bugün henüz değil), kartsız çalışanda + -- (bugün dahil) vardiya saatleriyle çalışılmış sayılır. + --------------------------------------------------------------------------------------------- + UPDATE r + SET HalfDayLeave = CASE WHEN lv.IsHalfDay = 1 THEN 1 ELSE 0 END, + LeaveTypeId = lv.LeaveTypeId, + TrainingId = tr.TrainingId, + DayType = CASE + WHEN sk.Id IS NOT NULL THEN N'Sick' + WHEN lv.Id IS NOT NULL AND lv.IsPaid = 0 AND (lv.IsHalfDay = 0 OR r.FirstIn IS NULL) THEN N'Leave' + WHEN r.CalendarType = N'Holiday' THEN N'Holiday' + WHEN r.IsWorkDay = 0 THEN N'WeeklyOff' + WHEN lv.Id IS NOT NULL AND (lv.IsHalfDay = 0 OR r.FirstIn IS NULL) THEN N'Leave' + WHEN r.FirstIn IS NOT NULL THEN N'Work' + WHEN tr.TrainingId IS NOT NULL THEN N'Training' + WHEN r.HasCard = 0 THEN N'Work' + WHEN r.WorkDate < @Today THEN N'Absent' + END + FROM #tcRow r + OUTER APPLY ( + SELECT TOP 1 s.Id + FROM Adm_T_UserSickLeave s + WHERE s.UserId = r.EmployeeId AND s.IsDeleted = 0 + AND r.WorkDate BETWEEN CAST(s.StartDate AS date) AND CAST(s.EndDate AS date) + ) sk + OUTER APPLY ( + SELECT TOP 1 q.Id, q.IsHalfDay, q.LeaveTypeId, lt.IsPaid + FROM Hr_T_LeaveRequest q + INNER JOIN Hr_T_LeaveType lt ON lt.Id = q.LeaveTypeId + WHERE q.EmployeeId = r.EmployeeId AND q.IsDeleted = 0 AND q.ApprovalStatus = N'Onaylandı' + AND r.WorkDate BETWEEN CAST(q.StartDate AS date) AND CAST(q.EndDate AS date) + ORDER BY q.IsHalfDay + ) lv + OUTER APPLY ( + SELECT TOP 1 p.TrainingId + FROM Hr_T_TrainingParticipant p + INNER JOIN Hr_T_Training g ON g.Id = p.TrainingId AND g.IsDeleted = 0 + WHERE p.UserId = r.EmployeeId AND p.IsDeleted = 0 AND p.AttendanceStatus = N'Attended' + AND r.WorkDate BETWEEN g.StartDate AND g.EndDate + ORDER BY g.StartDate + ) tr + WHERE r.IsClosed = 0 AND r.IsManual = 0; + + -- İstihdam dışındaki hareketsiz gün yazılmaz (işe girişten önce, çıkıştan sonra). + UPDATE #tcRow + SET DayType = NULL + WHERE IsClosed = 0 AND IsManual = 0 AND IsEmployed = 0 AND HasEvents = 0; + + -- Elle takip edilen çalışanın kayıtsız iş günü ve okutmasız eğitim günü: vardiya saatleri + -- (arifede yarım gün). Eğitim günü haftalık birikime çalışma gibi girer. + UPDATE #tcRow + SET IsAssumed = 1, + FirstIn = DATEADD(minute, StartMin, CAST(WorkDate AS datetime2)), + LastOut = DATEADD(minute, StartMin + CASE WHEN CalendarType = N'HalfDay' + THEN ((EndMin - StartMin + 1440) % 1440) / 2 + ELSE (EndMin - StartMin + 1440) % 1440 END, + CAST(WorkDate AS datetime2)) + WHERE IsClosed = 0 AND IsManual = 0 AND DayType IN (N'Work', N'Training') AND HasEvents = 0; + + --------------------------------------------------------------------------------------------- + -- Süreler: mola = MAX(vardiya molası, okutulan mola); net = son çıkış − ilk giriş − mola. + -- Geç kalma / erken çıkış toleransı aşılırsa dakikanın tamamı yazılır. Yarım gün (arife) + -- vardiya süresinin yarısında biter; yarım gün izinli günde geç/erken yazılmaz. + --------------------------------------------------------------------------------------------- + UPDATE r + SET BreakMinutes = CASE + WHEN g.Gross <= 0 THEN 0 + WHEN r.IsManual = 1 THEN CASE WHEN r.BreakMinutes > g.Gross THEN g.Gross ELSE r.BreakMinutes END + WHEN (CASE WHEN r.ScanBreak > r.ShiftBreak THEN r.ScanBreak ELSE r.ShiftBreak END) > g.Gross THEN g.Gross + ELSE CASE WHEN r.ScanBreak > r.ShiftBreak THEN r.ScanBreak ELSE r.ShiftBreak END + END, + IsIncomplete = CASE WHEN r.FirstIn IS NOT NULL AND r.LastOut IS NULL THEN 1 ELSE 0 END, + LateMinutes = CASE + WHEN r.DayType = N'Work' AND r.HalfDayLeave = 0 AND r.FirstIn IS NOT NULL + AND DATEDIFF(minute, DATEADD(minute, r.StartMin, CAST(r.WorkDate AS datetime2)), r.FirstIn) > r.LateTol + THEN DATEDIFF(minute, DATEADD(minute, r.StartMin, CAST(r.WorkDate AS datetime2)), r.FirstIn) + ELSE 0 END, + EarlyLeaveMinutes = CASE + WHEN r.DayType = N'Work' AND r.HalfDayLeave = 0 AND r.LastOut IS NOT NULL + AND DATEDIFF(minute, r.LastOut, DATEADD(minute, sh.ExpectedEnd, CAST(r.WorkDate AS datetime2))) > r.EarlyTol + THEN DATEDIFF(minute, r.LastOut, DATEADD(minute, sh.ExpectedEnd, CAST(r.WorkDate AS datetime2))) + ELSE 0 END + FROM #tcRow r + CROSS APPLY ( + SELECT CASE WHEN r.FirstIn IS NOT NULL AND r.LastOut IS NOT NULL + THEN DATEDIFF(minute, r.FirstIn, r.LastOut) ELSE 0 END AS Gross + ) g + CROSS APPLY ( + SELECT r.StartMin + CASE WHEN r.CalendarType = N'HalfDay' + THEN ((r.EndMin - r.StartMin + 1440) % 1440) / 2 + ELSE (r.EndMin - r.StartMin + 1440) % 1440 END AS ExpectedEnd + ) sh + WHERE r.IsClosed = 0 AND r.DayType IS NOT NULL; + + UPDATE #tcRow + SET NetMinutes = CASE + WHEN FirstIn IS NOT NULL AND LastOut IS NOT NULL AND DATEDIFF(minute, FirstIn, LastOut) > BreakMinutes + THEN DATEDIFF(minute, FirstIn, LastOut) - BreakMinutes + ELSE 0 END + WHERE IsClosed = 0 AND DayType IS NOT NULL; + + -- Negatif çıkmasın: tolerans içindeki erken giriş geç kalma değildir. + UPDATE #tcRow SET LateMinutes = 0 WHERE LateMinutes < 0; + UPDATE #tcRow SET EarlyLeaveMinutes = 0 WHERE EarlyLeaveMinutes < 0; + + --------------------------------------------------------------------------------------------- + -- Fazla mesai (4857 md. 41): hafta tatili ve resmî tatilde çalışılan sürenin tamamı; diğer + -- günlerde haftanın kümülatif net süresi haftalık sınırı aştığı günden itibaren aşan kısım. + --------------------------------------------------------------------------------------------- + WITH w AS ( + SELECT r.IsClosed, r.DayType, r.NetMinutes, r.OvertimeMinutes, + SUM(CASE WHEN r.DayType IN (N'WeeklyOff', N'Holiday') THEN 0 ELSE r.NetMinutes END) + OVER (PARTITION BY r.EmployeeId, DATEDIFF(day, '19000101', r.WorkDate) / 7 + ORDER BY r.WorkDate ROWS UNBOUNDED PRECEDING) AS Cumulative + FROM #tcRow r + WHERE r.DayType IS NOT NULL + ) + UPDATE w + SET OvertimeMinutes = CASE + WHEN DayType IN (N'WeeklyOff', N'Holiday') THEN NetMinutes + ELSE (CASE WHEN Cumulative > @WeeklyLimit THEN Cumulative - @WeeklyLimit ELSE 0 END) + - (CASE WHEN Cumulative - NetMinutes > @WeeklyLimit THEN Cumulative - NetMinutes - @WeeklyLimit ELSE 0 END) + END + WHERE IsClosed = 0; + + --------------------------------------------------------------------------------------------- + -- Yazma + --------------------------------------------------------------------------------------------- + DECLARE @Now datetime2 = GETUTCDATE(); + + UPDATE t + SET ShiftId = r.ShiftId, + DayType = r.DayType, + LeaveTypeId = r.LeaveTypeId, + TrainingId = r.TrainingId, + FirstIn = r.FirstIn, + LastOut = r.LastOut, + BreakMinutes = r.BreakMinutes, + NetMinutes = r.NetMinutes, + NetHours = CAST(r.NetMinutes / 60.0 AS decimal(6, 2)), + LateMinutes = r.LateMinutes, + EarlyLeaveMinutes = r.EarlyLeaveMinutes, + OvertimeHours = CAST(r.OvertimeMinutes / 60.0 AS decimal(6, 2)), + IsIncomplete = r.IsIncomplete, + IsAssumed = r.IsAssumed, + CalculatedAt = @Now, + LastModificationTime = @Now, + LastModifierId = COALESCE(@ActorId, t.LastModifierId) + FROM Hr_T_Timesheet t + INNER JOIN #tcRow r ON r.ExistingId = t.Id + WHERE r.IsClosed = 0 AND r.DayType IS NOT NULL; + + -- Artık karşılığı olmayan otomatik gün (ör. geriye dönük işten çıkış) kalkar. + UPDATE t + SET IsDeleted = 1, DeletionTime = @Now, DeleterId = @ActorId + FROM Hr_T_Timesheet t + INNER JOIN #tcRow r ON r.ExistingId = t.Id + WHERE r.IsClosed = 0 AND r.IsManual = 0 AND r.DayType IS NULL; + + INSERT INTO Hr_T_Timesheet + (Id, TenantId, EmployeeId, WorkDate, PeriodYear, PeriodMonth, PeriodKey, ShiftId, DayType, LeaveTypeId, TrainingId, + FirstIn, LastOut, BreakMinutes, NetMinutes, NetHours, LateMinutes, EarlyLeaveMinutes, OvertimeHours, + IsManual, IsIncomplete, IsAssumed, CalculatedAt, CreationTime, CreatorId, IsDeleted) + SELECT NEWID(), @TenantId, r.EmployeeId, r.WorkDate, YEAR(r.WorkDate), MONTH(r.WorkDate), + CONVERT(nvarchar(36), r.EmployeeId) + N'-' + CONVERT(nvarchar(6), YEAR(r.WorkDate) * 100 + MONTH(r.WorkDate)), + r.ShiftId, r.DayType, r.LeaveTypeId, r.TrainingId, r.FirstIn, r.LastOut, r.BreakMinutes, r.NetMinutes, + CAST(r.NetMinutes / 60.0 AS decimal(6, 2)), r.LateMinutes, r.EarlyLeaveMinutes, + CAST(r.OvertimeMinutes / 60.0 AS decimal(6, 2)), 0, r.IsIncomplete, r.IsAssumed, @Now, @Now, @ActorId, 0 + FROM #tcRow r + WHERE r.IsClosed = 0 AND r.ExistingId IS NULL AND r.DayType IS NOT NULL; +END +GO diff --git a/configs/seeds/host/sql/object/Hr_S_TimesheetNightly.sql b/configs/seeds/host/sql/object/Hr_S_TimesheetNightly.sql new file mode 100644 index 00000000..20203d3a --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_S_TimesheetNightly.sql @@ -0,0 +1,72 @@ +CREATE OR ALTER PROCEDURE [dbo].[Hr_S_TimesheetNightly] +AS +BEGIN + SET NOCOUNT ON; + + -- Zamanlanmış iş (Timesheet Nightly, her gece 02:00). Hareketi olmayan günleri (devamsız, hafta + -- tatili, resmî tatil, izinli, raporlu) kurar ve geriye dönük onaylanan izin/rapor, takvim ya da + -- vardiya değişikliğini yansıtır: dünün ayı ve kapanmamışsa bir önceki ay, işlenmemiş ve kartı sonradan + -- tanımlanan hareketler. + -- İş host ve her kiracı için çağrılır, prosedür parametre almaz; bu yüzden veritabanındaki bütün + -- kiracıları işler ve aynı gün işlenmiş kiracıyı (dönemin NightlyAt değeri) atlar. + DECLARE @Today date = CAST(GETDATE() AS date); + DECLARE @Yesterday date = DATEADD(day, -1, @Today); + DECLARE @MonthStart date = DATEFROMPARTS(YEAR(@Yesterday), MONTH(@Yesterday), 1); + DECLARE @PrevStart date = DATEADD(month, -1, @MonthStart); + + -- Kart numarası kullanıcı kartına sonradan girilen okutmalar yeniden işlenir. + UPDATE l + SET IsProcessed = 0, ProcessError = NULL + FROM Hr_T_AttendanceLog l + WHERE l.IsDeleted = 0 AND l.ProcessError = N'UnknownCard' + AND EXISTS (SELECT 1 FROM AbpUsers u + WHERE (u.PdksCardNo = l.CardNo OR u.RegistrationNo = l.CardNo) AND u.IsDeleted = 0 + AND (u.TenantId = l.TenantId OR (u.TenantId IS NULL AND l.TenantId IS NULL))); + + EXEC dbo.Hr_S_AttendanceProcess 0; + + DECLARE @Tenants TABLE (TenantId uniqueidentifier NULL); + INSERT INTO @Tenants (TenantId) + SELECT DISTINCT TenantId FROM AbpUsers WHERE IsDeleted = 0 AND HireDate IS NOT NULL; + + DECLARE @TenantId uniqueidentifier, @PeriodId uniqueidentifier, @From date; + + DECLARE tenant_cursor CURSOR LOCAL FAST_FORWARD FOR SELECT TenantId FROM @Tenants; + OPEN tenant_cursor; + FETCH NEXT FROM tenant_cursor INTO @TenantId; + WHILE @@FETCH_STATUS = 0 + BEGIN + SET @PeriodId = (SELECT TOP 1 Id FROM Hr_T_TimesheetPeriod + WHERE IsDeleted = 0 AND PeriodYear = YEAR(@Yesterday) AND PeriodMonth = MONTH(@Yesterday) + AND (TenantId = @TenantId OR (TenantId IS NULL AND @TenantId IS NULL))); + + -- Ay dönemi gece işinde kendiliğinden açılır. + IF @PeriodId IS NULL + BEGIN + SET @PeriodId = NEWID(); + INSERT INTO Hr_T_TimesheetPeriod (Id, TenantId, PeriodYear, PeriodMonth, [Status], CreationTime, IsDeleted) + VALUES (@PeriodId, @TenantId, YEAR(@Yesterday), MONTH(@Yesterday), N'Open', GETUTCDATE(), 0); + END + + IF NOT EXISTS (SELECT 1 FROM Hr_T_TimesheetPeriod WHERE Id = @PeriodId AND NightlyAt >= CAST(@Today AS datetime2)) + BEGIN + SET @From = CASE WHEN EXISTS ( + SELECT 1 FROM Hr_T_TimesheetPeriod + WHERE IsDeleted = 0 AND [Status] = N'Closed' + AND PeriodYear = YEAR(@PrevStart) AND PeriodMonth = MONTH(@PrevStart) + AND (TenantId = @TenantId OR (TenantId IS NULL AND @TenantId IS NULL))) + THEN @MonthStart ELSE @PrevStart END; + + EXEC dbo.Hr_S_TimesheetCalculate @TenantId, NULL, @From, @Yesterday, NULL; + + UPDATE Hr_T_TimesheetPeriod + SET NightlyAt = GETDATE(), CalculatedAt = GETUTCDATE() + WHERE Id = @PeriodId; + END + + FETCH NEXT FROM tenant_cursor INTO @TenantId; + END + CLOSE tenant_cursor; + DEALLOCATE tenant_cursor; +END +GO diff --git a/configs/seeds/host/sql/object/Hr_S_TimesheetPeriodAfterSave.sql b/configs/seeds/host/sql/object/Hr_S_TimesheetPeriodAfterSave.sql new file mode 100644 index 00000000..5c36b5a0 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_S_TimesheetPeriodAfterSave.sql @@ -0,0 +1,55 @@ +CREATE OR ALTER PROCEDURE [dbo].[Hr_S_TimesheetPeriodAfterSave] + @PeriodId uniqueidentifier, + @ActorId uniqueidentifier +AS +BEGIN + SET NOCOUNT ON; + + -- Puantaj Dönemleri kaydı: açık dönemin her kaydı ayı bütün çalışanlar için yeniden hesaplar; + -- kapatma son kez hesaplayıp ayı kilitler. Kapalı ayın hareketleri ve günleri değiştirilemez. + DECLARE @TenantId uniqueidentifier, @Year int, @Month int, @Status nvarchar(16), @ClosedAt datetime2; + + SELECT @TenantId = TenantId, @Year = PeriodYear, @Month = PeriodMonth, @Status = [Status], @ClosedAt = ClosedAt + FROM Hr_T_TimesheetPeriod + WHERE Id = @PeriodId AND IsDeleted = 0; + + IF @Year IS NULL + RETURN; + + IF @Month NOT BETWEEN 1 AND 12 OR @Year NOT BETWEEN 2000 AND 2100 + THROW 51220, N'Dönem yılı 2000–2100, ayı 1–12 arasında olmalıdır.', 1; + + IF EXISTS (SELECT 1 FROM Hr_T_TimesheetPeriod + WHERE Id <> @PeriodId AND IsDeleted = 0 AND PeriodYear = @Year AND PeriodMonth = @Month + AND (TenantId = @TenantId OR (TenantId IS NULL AND @TenantId IS NULL))) + THROW 51221, N'Bu yıl ve ay için puantaj dönemi zaten var.', 1; + + DECLARE @From date = DATEFROMPARTS(@Year, @Month, 1); + DECLARE @To date = EOMONTH(@From); + + IF @Status = N'Closed' AND @ClosedAt IS NOT NULL + RETURN; + + -- Kapalı aya izin yazılamadığı için ayda onay bekleyen talep varken dönem kapanmaz; aksi hâlde + -- sonradan onaylanan izin puantaja hiç yansımazdı. + IF @Status = N'Closed' AND EXISTS ( + SELECT 1 FROM Hr_T_LeaveRequest q + WHERE q.IsDeleted = 0 + AND (q.TenantId = @TenantId OR (q.TenantId IS NULL AND @TenantId IS NULL)) + AND (q.ApprovalStatus IS NULL OR q.ApprovalStatus IN (N'Onaya Gönderildi', N'Müdür Onayı', N'İK Onayı')) + AND CAST(q.StartDate AS date) <= @To AND CAST(q.EndDate AS date) >= @From) + THROW 51223, N'Bu ayda onay bekleyen izin talebi var. Talepler sonuçlanmadan dönem kapatılamaz.', 1; + + -- Kapatma anında da son hesap yapılır; hesap kapalı ayı yazmadığı için önce açık sayılır. + UPDATE Hr_T_TimesheetPeriod SET [Status] = N'Open' WHERE Id = @PeriodId; + + EXEC dbo.Hr_S_TimesheetCalculate @TenantId, NULL, @From, @To, @ActorId; + + UPDATE Hr_T_TimesheetPeriod + SET [Status] = COALESCE(@Status, N'Open'), + CalculatedAt = GETUTCDATE(), + ClosedAt = CASE WHEN @Status = N'Closed' THEN GETUTCDATE() END, + ClosedById = CASE WHEN @Status = N'Closed' THEN @ActorId END + WHERE Id = @PeriodId; +END +GO diff --git a/configs/seeds/host/sql/object/Hr_S_TrainingSync.sql b/configs/seeds/host/sql/object/Hr_S_TrainingSync.sql new file mode 100644 index 00000000..f9ab01c5 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_S_TrainingSync.sql @@ -0,0 +1,50 @@ +CREATE OR ALTER PROCEDURE [dbo].[Hr_S_TrainingSync] + @TrainingId uniqueidentifier, + @UserId uniqueidentifier = NULL, + @ActorId uniqueidentifier = NULL +AS +BEGIN + SET NOCOUNT ON; + + -- Eğitim ya da katılımcı kaydından sonra çalışır (@UserId boşsa eğitimin bütün katılımcıları): + -- "Katıldı" işaretli katılımcının eğitim günleri puantajda Eğitim olur (devamsız yazılmaz), bağlı + -- gelişim aksiyonu tamamlanır. Silinen katılımcı/eğitim ve değişen tarih için eski günleri + -- puantaj hesabı kendisi düzeltir. + DECLARE @TenantId uniqueidentifier, @StartDate date, @EndDate date; + + SELECT @TenantId = TenantId, @StartDate = StartDate, @EndDate = EndDate + FROM Hr_T_Training + WHERE Id = @TrainingId; + + IF @StartDate IS NULL + RETURN; + + DECLARE @Participant uniqueidentifier, @PlanId uniqueidentifier; + + DECLARE participant_cursor CURSOR LOCAL FAST_FORWARD FOR + SELECT DISTINCT UserId FROM Hr_T_TrainingParticipant + WHERE TrainingId = @TrainingId AND (@UserId IS NULL OR UserId = @UserId); + OPEN participant_cursor; + FETCH NEXT FROM participant_cursor INTO @Participant; + WHILE @@FETCH_STATUS = 0 + BEGIN + EXEC dbo.Hr_S_TimesheetCalculate @TenantId, @Participant, @StartDate, @EndDate, @ActorId; + FETCH NEXT FROM participant_cursor INTO @Participant; + END + CLOSE participant_cursor; + DEALLOCATE participant_cursor; + + DECLARE plan_cursor CURSOR LOCAL FAST_FORWARD FOR + SELECT Id FROM Hr_T_DevelopmentPlan + WHERE TrainingId = @TrainingId AND IsDeleted = 0 AND (@UserId IS NULL OR EmployeeId = @UserId); + OPEN plan_cursor; + FETCH NEXT FROM plan_cursor INTO @PlanId; + WHILE @@FETCH_STATUS = 0 + BEGIN + EXEC dbo.Hr_S_DevelopmentPlanSync @PlanId; + FETCH NEXT FROM plan_cursor INTO @PlanId; + END + CLOSE plan_cursor; + DEALLOCATE plan_cursor; +END +GO diff --git a/configs/seeds/host/sql/object/Hr_S_WorkCalendarAfterSave.sql b/configs/seeds/host/sql/object/Hr_S_WorkCalendarAfterSave.sql new file mode 100644 index 00000000..2ede1f80 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_S_WorkCalendarAfterSave.sql @@ -0,0 +1,50 @@ +CREATE OR ALTER PROCEDURE [dbo].[Hr_S_WorkCalendarAfterSave] + @CalendarId uniqueidentifier, + @ActorId uniqueidentifier = NULL +AS +BEGIN + SET NOCOUNT ON; + + -- Çalışma Takvimi satırı eklenince, değişince ya da silinince tatile denk gelen izin taleplerinin + -- gün sayısı ve puantaj yeniden hesaplanır; aksi hâlde sonradan girilen bayram izinden düşmeye, + -- puantajda çalışma günü görünmeye devam ederdi. Yıllık tekrarlı satırın bu yılki ve gelecek + -- yılki karşılığı işlenir; kapalı puantaj ayı yazılmaz. + DECLARE @TenantId uniqueidentifier, @StartDate date, @EndDate date, @Recurrence nvarchar(256); + + SELECT @TenantId = TenantId, @StartDate = CAST(StartDate AS date), @EndDate = CAST(EndDate AS date), + @Recurrence = RecurrenceRule + FROM Hr_T_WorkCalendar + WHERE Id = @CalendarId; + + IF @StartDate IS NULL + RETURN; + + IF @Recurrence = N'FREQ=YEARLY' + BEGIN + DECLARE @Shift int = YEAR(GETDATE()) - YEAR(@StartDate); + IF @Shift > 0 + BEGIN + SET @StartDate = DATEADD(year, @Shift, @StartDate); + SET @EndDate = DATEADD(year, @Shift + 1, @EndDate); + END + ELSE + SET @EndDate = DATEADD(year, 1, @EndDate); + END + + UPDATE r + SET Days = CASE WHEN r.IsHalfDay = 1 AND n.Days > 0.5 THEN 0.5 ELSE n.Days END + FROM Hr_T_LeaveRequest r + INNER JOIN Hr_T_LeaveType t ON t.Id = r.LeaveTypeId + CROSS APPLY ( + SELECT CASE WHEN t.Code = N'Sick' + THEN dbo.Hr_F_LeaveWorkDays(r.TenantId, CAST(r.StartDate AS date), CAST(r.EndDate AS date)) + ELSE dbo.Hr_F_LeaveNetDays(r.TenantId, r.EmployeeId, CAST(r.StartDate AS date), CAST(r.EndDate AS date)) + END AS Days + ) n + WHERE r.IsDeleted = 0 + AND (r.TenantId = @TenantId OR (r.TenantId IS NULL AND @TenantId IS NULL)) + AND CAST(r.StartDate AS date) <= @EndDate AND CAST(r.EndDate AS date) >= @StartDate; + + EXEC dbo.Hr_S_TimesheetCalculate @TenantId, NULL, @StartDate, @EndDate, @ActorId; +END +GO diff --git a/configs/seeds/host/sql/object/Hr_T_AttendanceLog.sql b/configs/seeds/host/sql/object/Hr_T_AttendanceLog.sql new file mode 100644 index 00000000..910c419d --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_T_AttendanceLog.sql @@ -0,0 +1,38 @@ +IF OBJECT_ID(N'[dbo].[Hr_T_AttendanceLog]', 'U') IS NULL +BEGIN + CREATE TABLE [dbo].[Hr_T_AttendanceLog] + ( + [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), + [TenantId] uniqueidentifier NULL, + [EmployeeId] uniqueidentifier NULL, + [CardNo] nvarchar(64) NULL, + [EventTime] datetime2 NOT NULL, + [Direction] nvarchar(8) NOT NULL DEFAULT N'Auto', + [Source] nvarchar(16) NULL, + [DeviceCode] nvarchar(64) NULL, + [Note] nvarchar(512) NULL, + [WorkDate] date NULL, + [IsProcessed] bit NOT NULL DEFAULT 0, + [ProcessError] nvarchar(32) NULL, + [CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(), + [CreatorId] uniqueidentifier NULL, + [LastModificationTime] datetime2 NULL, + [LastModifierId] uniqueidentifier NULL, + [IsDeleted] bit NOT NULL DEFAULT 0, + [DeletionTime] datetime2 NULL, + [DeleterId] uniqueidentifier NULL, + CONSTRAINT [PK_Hr_T_AttendanceLog] PRIMARY KEY NONCLUSTERED + ( + [Id] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] + ) ON [PRIMARY] +END +GO + +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Hr_T_AttendanceLog_Employee' AND object_id = OBJECT_ID(N'[dbo].[Hr_T_AttendanceLog]')) + CREATE INDEX [IX_Hr_T_AttendanceLog_Employee] ON [dbo].[Hr_T_AttendanceLog] ([EmployeeId], [WorkDate]) INCLUDE ([EventTime], [Direction], [IsDeleted], [ProcessError]) +GO + +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Hr_T_AttendanceLog_Pending' AND object_id = OBJECT_ID(N'[dbo].[Hr_T_AttendanceLog]')) + CREATE INDEX [IX_Hr_T_AttendanceLog_Pending] ON [dbo].[Hr_T_AttendanceLog] ([IsProcessed]) WHERE [IsProcessed] = 0 +GO diff --git a/configs/seeds/host/sql/object/Hr_T_LeaveRequest.sql b/configs/seeds/host/sql/object/Hr_T_LeaveRequest.sql index a96f5bef..2c0c519e 100644 --- a/configs/seeds/host/sql/object/Hr_T_LeaveRequest.sql +++ b/configs/seeds/host/sql/object/Hr_T_LeaveRequest.sql @@ -44,10 +44,6 @@ BEGIN END GO -IF COL_LENGTH(N'dbo.Hr_T_LeaveRequest', N'RequiresManagerApproval') IS NULL - ALTER TABLE [dbo].[Hr_T_LeaveRequest] ADD [RequiresManagerApproval] int NOT NULL DEFAULT 1 -GO - IF OBJECT_ID(N'[dbo].[CK_Hr_T_LeaveRequest_Dates]', 'C') IS NULL ALTER TABLE [dbo].[Hr_T_LeaveRequest] ADD CONSTRAINT [CK_Hr_T_LeaveRequest_Dates] CHECK ([EndDate] >= [StartDate]) GO diff --git a/configs/seeds/host/sql/object/Hr_T_LeaveType.sql b/configs/seeds/host/sql/object/Hr_T_LeaveType.sql index d4d8122b..b076189e 100644 --- a/configs/seeds/host/sql/object/Hr_T_LeaveType.sql +++ b/configs/seeds/host/sql/object/Hr_T_LeaveType.sql @@ -29,11 +29,6 @@ BEGIN END GO --- Bakiye kuralı izin talebi ekranıyla geldi; daha önce kurulmuş tabloya kayıpsız eklenir. -IF COL_LENGTH(N'dbo.Hr_T_LeaveType', N'BalanceExceedAction') IS NULL - ALTER TABLE [dbo].[Hr_T_LeaveType] ADD [BalanceExceedAction] nvarchar(16) NOT NULL DEFAULT 'Block' -GO - IF OBJECT_ID(N'[dbo].[CK_Hr_T_LeaveType_BalanceExceedAction]', 'C') IS NULL ALTER TABLE [dbo].[Hr_T_LeaveType] ADD CONSTRAINT [CK_Hr_T_LeaveType_BalanceExceedAction] CHECK ([BalanceExceedAction] IN ('Block', 'Warn')) GO diff --git a/configs/seeds/host/sql/object/Hr_T_Shift.sql b/configs/seeds/host/sql/object/Hr_T_Shift.sql index c36452e9..6c770ab0 100644 --- a/configs/seeds/host/sql/object/Hr_T_Shift.sql +++ b/configs/seeds/host/sql/object/Hr_T_Shift.sql @@ -10,6 +10,8 @@ BEGIN [BreakMinutes] int NULL, [WorkingHours] decimal(5,2) NULL, [IsNightShift] bit NOT NULL DEFAULT 0, + [LateToleranceMinutes] int NULL, + [EarlyLeaveToleranceMinutes] int NULL, [IsActive] bit NOT NULL DEFAULT 1, [CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(), [CreatorId] uniqueidentifier NULL, diff --git a/configs/seeds/host/sql/object/Hr_T_Timesheet.sql b/configs/seeds/host/sql/object/Hr_T_Timesheet.sql new file mode 100644 index 00000000..7cc959ea --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_T_Timesheet.sql @@ -0,0 +1,50 @@ +IF OBJECT_ID(N'[dbo].[Hr_T_Timesheet]', 'U') IS NULL +BEGIN + CREATE TABLE [dbo].[Hr_T_Timesheet] + ( + [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), + [TenantId] uniqueidentifier NULL, + [EmployeeId] uniqueidentifier NOT NULL, + [WorkDate] date NOT NULL, + [PeriodYear] int NOT NULL, + [PeriodMonth] int NOT NULL, + [PeriodKey] nvarchar(48) NOT NULL, + [ShiftId] uniqueidentifier NULL, + [DayType] nvarchar(16) NOT NULL DEFAULT N'Work', + [LeaveTypeId] uniqueidentifier NULL, + [TrainingId] uniqueidentifier NULL, + [FirstIn] datetime2 NULL, + [LastOut] datetime2 NULL, + [BreakMinutes] int NOT NULL DEFAULT 0, + [NetMinutes] int NOT NULL DEFAULT 0, + [NetHours] decimal(6, 2) NOT NULL DEFAULT 0, + [LateMinutes] int NOT NULL DEFAULT 0, + [EarlyLeaveMinutes] int NOT NULL DEFAULT 0, + [OvertimeHours] decimal(6, 2) NOT NULL DEFAULT 0, + [IsManual] bit NOT NULL DEFAULT 0, + [IsIncomplete] bit NOT NULL DEFAULT 0, + [IsAssumed] bit NOT NULL DEFAULT 0, + [Note] nvarchar(512) NULL, + [CalculatedAt] datetime2 NULL, + [CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(), + [CreatorId] uniqueidentifier NULL, + [LastModificationTime] datetime2 NULL, + [LastModifierId] uniqueidentifier NULL, + [IsDeleted] bit NOT NULL DEFAULT 0, + [DeletionTime] datetime2 NULL, + [DeleterId] uniqueidentifier NULL, + CONSTRAINT [PK_Hr_T_Timesheet] PRIMARY KEY NONCLUSTERED + ( + [Id] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] + ) ON [PRIMARY] +END +GO + +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Hr_T_Timesheet_EmployeeDate' AND object_id = OBJECT_ID(N'[dbo].[Hr_T_Timesheet]')) + CREATE INDEX [IX_Hr_T_Timesheet_EmployeeDate] ON [dbo].[Hr_T_Timesheet] ([EmployeeId], [WorkDate]) INCLUDE ([IsDeleted], [IsManual]) +GO + +IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_Hr_T_Timesheet_Period' AND object_id = OBJECT_ID(N'[dbo].[Hr_T_Timesheet]')) + CREATE INDEX [IX_Hr_T_Timesheet_Period] ON [dbo].[Hr_T_Timesheet] ([TenantId], [PeriodYear], [PeriodMonth]) INCLUDE ([EmployeeId], [DayType], [IsDeleted]) +GO diff --git a/configs/seeds/host/sql/object/Hr_T_TimesheetPeriod.sql b/configs/seeds/host/sql/object/Hr_T_TimesheetPeriod.sql new file mode 100644 index 00000000..f31c5800 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_T_TimesheetPeriod.sql @@ -0,0 +1,28 @@ +IF OBJECT_ID(N'[dbo].[Hr_T_TimesheetPeriod]', 'U') IS NULL +BEGIN + CREATE TABLE [dbo].[Hr_T_TimesheetPeriod] + ( + [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), + [TenantId] uniqueidentifier NULL, + [PeriodYear] int NOT NULL, + [PeriodMonth] int NOT NULL, + [Status] nvarchar(16) NOT NULL DEFAULT N'Open', + [CalculatedAt] datetime2 NULL, + [ClosedAt] datetime2 NULL, + [ClosedById] uniqueidentifier NULL, + [NightlyAt] datetime2 NULL, + [Note] nvarchar(512) NULL, + [CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(), + [CreatorId] uniqueidentifier NULL, + [LastModificationTime] datetime2 NULL, + [LastModifierId] uniqueidentifier NULL, + [IsDeleted] bit NOT NULL DEFAULT 0, + [DeletionTime] datetime2 NULL, + [DeleterId] uniqueidentifier NULL, + CONSTRAINT [PK_Hr_T_TimesheetPeriod] PRIMARY KEY NONCLUSTERED + ( + [Id] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] + ) ON [PRIMARY] +END +GO diff --git a/configs/seeds/host/sql/object/Hr_V_AttendanceShift.sql b/configs/seeds/host/sql/object/Hr_V_AttendanceShift.sql new file mode 100644 index 00000000..cec26f3d --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_V_AttendanceShift.sql @@ -0,0 +1,32 @@ +CREATE OR ALTER VIEW [dbo].[Hr_V_AttendanceShift] +AS +-- Çalışanın puantajda kullanılan vardiyası (dakika cinsinden). Kullanıcı kartında vardiya yoksa ya da +-- vardiyanın alanı boşsa Ayarlar › İnsan Kaynakları › Puantaj'daki varsayılan geçerlidir. +-- DayOffset: hareketin hangi iş gününe yazılacağı. Vardiya bitişi ile bir sonraki başlangıç arasındaki +-- boşluğun ortası gün sınırıdır; gece vardiyasındaki 23:50 okutması vardiyanın başladığı ertesi günün +-- hareketidir. İş günü = CAST(DATEADD(minute, -DayOffset, Zaman) AS date). +SELECT x.EmployeeId, x.TenantId, x.ShiftId, x.StartMin, x.EndMin, x.BreakMin, x.LateTol, x.EarlyTol, + x.StartMin - ((x.StartMin - ((x.EndMin + ((x.StartMin - x.EndMin + 1440) % 1440) / 2) % 1440) + 1440) % 1440) AS DayOffset +FROM AbpUsers u +LEFT JOIN Hr_T_Shift s ON s.Id = u.ShiftId AND s.IsDeleted = 0 +CROSS APPLY ( + SELECT TRY_CONVERT(time, s.StartTime) AS ShiftStart, + TRY_CONVERT(time, s.EndTime) AS ShiftEnd, + TRY_CONVERT(time, dbo.Hr_F_HrSetting(u.TenantId, N'App.HrSettings.Attendance.DefaultShiftStart')) AS DefaultStart, + TRY_CONVERT(time, dbo.Hr_F_HrSetting(u.TenantId, N'App.HrSettings.Attendance.DefaultShiftEnd')) AS DefaultEnd +) t +CROSS APPLY ( + SELECT u.Id AS EmployeeId, u.TenantId, s.Id AS ShiftId, + COALESCE(DATEPART(hour, t.ShiftStart) * 60 + DATEPART(minute, t.ShiftStart), + DATEPART(hour, t.DefaultStart) * 60 + DATEPART(minute, t.DefaultStart), 480) AS StartMin, + COALESCE(DATEPART(hour, t.ShiftEnd) * 60 + DATEPART(minute, t.ShiftEnd), + DATEPART(hour, t.DefaultEnd) * 60 + DATEPART(minute, t.DefaultEnd), 1080) AS EndMin, + COALESCE(s.BreakMinutes, + TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'App.HrSettings.Attendance.DefaultBreakMinutes')), 60) AS BreakMin, + COALESCE(s.LateToleranceMinutes, + TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'App.HrSettings.Attendance.LateToleranceMinutes')), 10) AS LateTol, + COALESCE(s.EarlyLeaveToleranceMinutes, + TRY_CONVERT(int, dbo.Hr_F_HrSetting(u.TenantId, N'App.HrSettings.Attendance.EarlyLeaveToleranceMinutes')), 10) AS EarlyTol +) x +WHERE u.IsDeleted = 0; +GO diff --git a/configs/seeds/host/sql/object/Hr_V_TimesheetMonthly.sql b/configs/seeds/host/sql/object/Hr_V_TimesheetMonthly.sql new file mode 100644 index 00000000..08309585 --- /dev/null +++ b/configs/seeds/host/sql/object/Hr_V_TimesheetMonthly.sql @@ -0,0 +1,52 @@ +CREATE OR ALTER VIEW [dbo].[Hr_V_TimesheetMonthly] +AS +-- Personel bazlı aylık puantaj: günlük puantajın çalışan × ay toplamı. Id günlük satırların +-- PeriodKey değeridir (alt form ilişkisi). Fazla mesai ücreti çarpanı ve yıllık sınır ayardan gelir; +-- yıllık fazla mesai ocaktan o aya kadarki birikimdir. Ücretsiz izin günü (bordroda eksik gün) izinli +-- günlerin ücretsiz türdeki kısmıdır; eğitim günü çalışılmış sayılır. +WITH m AS ( + SELECT t.PeriodKey, t.TenantId, t.EmployeeId, t.PeriodYear, t.PeriodMonth, + SUM(CASE WHEN t.DayType = N'Work' THEN 1 ELSE 0 END) AS WorkDays, + CAST(SUM(t.NetMinutes) / 60.0 AS decimal(9, 2)) AS NetHours, + SUM(t.LateMinutes) AS LateMinutes, + SUM(CASE WHEN t.LateMinutes > 0 THEN 1 ELSE 0 END) AS LateDays, + SUM(t.EarlyLeaveMinutes) AS EarlyLeaveMinutes, + SUM(CASE WHEN t.EarlyLeaveMinutes > 0 THEN 1 ELSE 0 END) AS EarlyLeaveDays, + CAST(SUM(t.OvertimeHours) AS decimal(9, 2)) AS OvertimeHours, + SUM(CASE WHEN t.DayType = N'WeeklyOff' THEN 1 ELSE 0 END) AS WeeklyOffDays, + SUM(CASE WHEN t.DayType = N'Holiday' THEN 1 ELSE 0 END) AS HolidayDays, + SUM(CASE WHEN t.DayType = N'Leave' THEN 1 ELSE 0 END) AS LeaveDays, + SUM(CASE WHEN t.DayType = N'Leave' AND lt.IsPaid = 0 THEN 1 ELSE 0 END) AS UnpaidLeaveDays, + SUM(CASE WHEN t.DayType = N'Training' THEN 1 ELSE 0 END) AS TrainingDays, + SUM(CASE WHEN t.DayType = N'Sick' THEN 1 ELSE 0 END) AS SickDays, + SUM(CASE WHEN t.DayType = N'Absent' THEN 1 ELSE 0 END) AS AbsentDays, + SUM(CASE WHEN t.IsIncomplete = 1 THEN 1 ELSE 0 END) AS IncompleteDays, + SUM(CASE WHEN t.IsAssumed = 1 THEN 1 ELSE 0 END) AS AssumedDays + FROM Hr_T_Timesheet t + LEFT JOIN Hr_T_LeaveType lt ON lt.Id = t.LeaveTypeId + WHERE t.IsDeleted = 0 + GROUP BY t.PeriodKey, t.TenantId, t.EmployeeId, t.PeriodYear, t.PeriodMonth +) +SELECT m.PeriodKey AS Id, m.TenantId, m.EmployeeId, u.DepartmentId, u.JobPositionId, + m.PeriodYear, m.PeriodMonth, COALESCE(p.[Status], N'Open') AS PeriodStatus, + m.WorkDays, m.NetHours, m.LateMinutes, m.LateDays, m.EarlyLeaveMinutes, m.EarlyLeaveDays, + m.OvertimeHours, + CAST(m.OvertimeHours * s.Rate AS decimal(9, 2)) AS OvertimePaidHours, + m.WeeklyOffDays, m.HolidayDays, m.LeaveDays, m.UnpaidLeaveDays, m.TrainingDays, m.SickDays, m.AbsentDays, m.IncompleteDays, m.AssumedDays, + CAST(SUM(m.OvertimeHours) OVER (PARTITION BY m.TenantId, m.EmployeeId, m.PeriodYear ORDER BY m.PeriodMonth + ROWS UNBOUNDED PRECEDING) AS decimal(9, 2)) AS YearOvertimeHours, + s.AnnualLimit AS AnnualOvertimeLimit, + CASE WHEN SUM(m.OvertimeHours) OVER (PARTITION BY m.TenantId, m.EmployeeId, m.PeriodYear ORDER BY m.PeriodMonth + ROWS UNBOUNDED PRECEDING) > s.AnnualLimit THEN 1 ELSE 0 END AS IsOverAnnualLimit +FROM m +INNER JOIN AbpUsers u ON u.Id = m.EmployeeId +OUTER APPLY ( + SELECT TOP 1 x.[Status] FROM Hr_T_TimesheetPeriod x + WHERE x.IsDeleted = 0 AND x.PeriodYear = m.PeriodYear AND x.PeriodMonth = m.PeriodMonth + AND (x.TenantId = m.TenantId OR (x.TenantId IS NULL AND m.TenantId IS NULL)) +) p +CROSS APPLY ( + SELECT COALESCE(TRY_CONVERT(decimal(9, 2), REPLACE(dbo.Hr_F_HrSetting(m.TenantId, N'App.HrSettings.Attendance.OvertimeRate'), N',', N'.')), 1.5) AS Rate, + COALESCE(TRY_CONVERT(decimal(9, 2), REPLACE(dbo.Hr_F_HrSetting(m.TenantId, N'App.HrSettings.Attendance.AnnualOvertimeLimitHours'), N',', N'.')), 270) AS AnnualLimit +) s; +GO diff --git a/configs/seeds/host/wizard/AttendanceLog.json b/configs/seeds/host/wizard/AttendanceLog.json new file mode 100644 index 00000000..67e45922 --- /dev/null +++ b/configs/seeds/host/wizard/AttendanceLog.json @@ -0,0 +1,2141 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "AttendanceLog", + "WizardCode": "App.Hr.AttendanceLog", + "SeededAt": "2026-10-05T09:00:01+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Hr", + "ModuleId": "Hr", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Hr", + "Icon": "FcConferenceCall", + "En": null, + "Tr": null + } + ], + "MenuParentCode": "App.Hr.Attendance", + "MenuParentIcon": "FcAlarmClock", + "MenuCode": "App.Hr.AttendanceLog", + "MenuOrder": 1, + "MenuUrl": "/admin/list/App.Hr.AttendanceLog", + "MenuIcon": "FcTimeline" + }, + "Language": { + "MenuParentEn": "Timesheet & Attendance", + "MenuParentTr": "Puantaj ve Devam Takibi", + "PermissionGroupEn": "Human Resources", + "PermissionGroupTr": "İnsan Kaynakları", + "MenuEn": "Attendance Events", + "MenuTr": "Günlük Hareketler", + "TitleEn": "Attendance Events", + "TitleTr": "Günlük Hareketler", + "DescEn": "Attendance Events — raw entry/exit punches coming from PDKS (card readers), Excel import or entered manually.\nWhere: Human Resources › Timesheet & Attendance › Attendance Events.\nFields: employee (or the card / registration number; the employee is resolved from the PDKS Card No and Registration No fields of the user card), time, direction (In / Out / Automatic — automatic punches alternate in/out by order), source, device, work date (calculated), error.\nCalculation: every save, import and PDKS call assigns the punch to the work day of the employee's shift (a night-shift punch at 23:50 belongs to the next day) and recalculates that week of the Daily Timesheet.\nErrors: 'Card not defined' — enter the number as PDKS Card No on the user card (Work tab); the nightly job processes the punch; punches of a closed period cannot be added, changed or deleted.\nEmployees without a PDKS card number (or before their first PDKS punch) are tracked manually: days without a record count as worked, HR only marks absences in the Daily Timesheet.", + "DescTr": "Günlük Hareketler — PDKS'den (kart okuyucu), Excel aktarımından gelen ya da elle girilen ham giriş/çıkış okutmaları.\nNerede: İnsan Kaynakları › Puantaj ve Devam Takibi › Günlük Hareketler.\nAlanlar: çalışan (ya da kart / sicil no; çalışan kullanıcı kartındaki PDKS Kart No ve Sicil No alanlarından bulunur), zaman, yön (Giriş / Çıkış / Otomatik — otomatik okutmalar sırayla giriş/çıkış sayılır), kaynak, cihaz, iş günü (hesaplanır), hata.\nHesap: her kayıt, aktarım ve PDKS çağrısı okutmayı çalışanın vardiyasına göre iş gününe yazar (gece vardiyasındaki 23:50 okutması ertesi günündür) ve Günlük Puantaj'da o haftayı yeniden hesaplar.\nHatalar: 'Kart tanımsız' — numara kullanıcı kartında (İş sekmesi) PDKS Kart No olarak girilince gece işi okutmayı işler; kapalı döneme ait okutma eklenemez, değiştirilemez, silinemez.\nPDKS kart numarası olmayan (ya da ilk PDKS okutmasından önceki) çalışan elle takip edilir: kayıt girilmeyen gün çalışılmış sayılır, İK yalnız gelinmeyen günü Günlük Puantaj'da işaretler.", + "Texts": [ + { + "Key": "App.Hr.Attendance.Group.Log", + "En": "Attendance Event", + "Tr": "Hareket" + }, + { + "Key": "App.Hr.Attendance.Direction.In", + "En": "In", + "Tr": "Giriş" + }, + { + "Key": "App.Hr.Attendance.Direction.Out", + "En": "Out", + "Tr": "Çıkış" + }, + { + "Key": "App.Hr.Attendance.Direction.Auto", + "En": "Automatic", + "Tr": "Otomatik" + }, + { + "Key": "App.Hr.Attendance.Source.Manual", + "En": "Manual", + "Tr": "Manuel" + }, + { + "Key": "App.Hr.Attendance.Source.Pdks", + "En": "PDKS", + "Tr": "PDKS" + }, + { + "Key": "App.Hr.Attendance.Source.Import", + "En": "Excel Import", + "Tr": "Excel Aktarımı" + }, + { + "Key": "App.Hr.Attendance.Error.UnknownCard", + "En": "Card not defined", + "Tr": "Kart tanımsız" + }, + { + "Key": "App.Hr.Attendance.Error.ClosedPeriod", + "En": "Closed period", + "Tr": "Kapalı dönem" + }, + { + "Key": "App.Hr.Attendance.Widget.Today", + "En": "Today", + "Tr": "Bugün" + }, + { + "Key": "App.Hr.Attendance.Widget.Pdks", + "En": "PDKS (this month)", + "Tr": "PDKS (bu ay)" + }, + { + "Key": "App.Hr.Attendance.Widget.Manual", + "En": "Manual (this month)", + "Tr": "Manuel (bu ay)" + }, + { + "Key": "App.Hr.Attendance.Widget.Error", + "En": "Unprocessed", + "Tr": "Hatalı" + } + ] + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "EmployeeId", + "CaptionName": "App.Listform.ListformField.EmployeeId", + "En": "Employee", + "Tr": "Çalışan" + }, + { + "FieldName": "CardNo", + "CaptionName": "App.Listform.ListformField.CardNo", + "En": "Card No", + "Tr": "Kart No" + }, + { + "FieldName": "EventTime", + "CaptionName": "App.Listform.ListformField.EventTime", + "En": "Event Time", + "Tr": "Zaman" + }, + { + "FieldName": "Direction", + "CaptionName": "App.Listform.ListformField.Direction", + "En": "Direction", + "Tr": "Yön" + }, + { + "FieldName": "Source", + "CaptionName": "App.Listform.ListformField.Source", + "En": "Source", + "Tr": "Kaynak" + }, + { + "FieldName": "DeviceCode", + "CaptionName": "App.Listform.ListformField.DeviceCode", + "En": "Device", + "Tr": "Cihaz" + }, + { + "FieldName": "WorkDate", + "CaptionName": "App.Listform.ListformField.WorkDate", + "En": "Work Date", + "Tr": "İş Günü" + }, + { + "FieldName": "ProcessError", + "CaptionName": "App.Listform.ListformField.ProcessError", + "En": "Error", + "Tr": "Hata" + }, + { + "FieldName": "Note", + "CaptionName": "App.Listform.ListformField.Note", + "En": "Note", + "Tr": "Not" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 9, + "TableName": null, + "DefaultFilter": "\"IsDeleted\" = 'false'", + "SelectCommand": "Hr_T_AttendanceLog", + "SelectCommandType": 1, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": "UPDATE \"Hr_T_AttendanceLog\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", + "DeleteBeforeCommand": null, + "DeleteAfterCommand": "UPDATE Hr_T_AttendanceLog SET IsProcessed = 0 WHERE Id IN @Id; EXEC dbo.Hr_S_AttendanceProcess 1", + "DeleteFieldsDefaultValueDto": [ + { + "FieldName": "DeleterId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "Id", + "FieldDbType": 9, + "Value": "@ID", + "CustomValueType": 2, + "SqlQuery": null + } + ], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": "EXEC dbo.Hr_S_AttendanceProcess 1", + "InsertFieldsDefaultValueDto": [ + { + "FieldName": "CreationTime", + "FieldDbType": 6, + "Value": "@NOW", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "CreatorId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "IsDeleted", + "FieldDbType": 3, + "Value": "false", + "CustomValueType": 1, + "SqlQuery": null + }, + { + "FieldName": "Id", + "FieldDbType": 9, + "Value": "@NEWID", + "CustomValueType": 2, + "SqlQuery": null + } + ], + "UpdateCommand": null, + "UpdateBeforeCommand": null, + "UpdateAfterCommand": "UPDATE Hr_T_AttendanceLog SET IsProcessed = 0 WHERE Id IN @Id; EXEC dbo.Hr_S_AttendanceProcess 1", + "UpdateFieldsDefaultValueDto": [ + { + "FieldName": "LastModificationTime", + "FieldDbType": 6, + "Value": "@NOW", + "CustomValueType": 2, + "SqlQuery": "" + }, + { + "FieldName": "LastModifierId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": "" + } + ], + "FormFieldsDefaultValueDto": [ + { + "FieldName": "Direction", + "FieldDbType": 16, + "Value": "Auto", + "CustomValueType": 1, + "SqlQuery": null + }, + { + "FieldName": "Source", + "FieldDbType": 16, + "Value": "Manual", + "CustomValueType": 1, + "SqlQuery": null + } + ], + "WidgetsDto": [ + { + "ColGap": 3, + "ColSpan": 3, + "SqlQuery": "SELECT 'App.Hr.Attendance.Widget.Today' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Hr.AttendanceLog' AS \"SubTitle\", 'FaFingerprint' AS \"Icon\" FROM \"Hr_T_AttendanceLog\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false' AND CAST(\"EventTime\" AS date) = CAST(GETDATE() AS date) UNION ALL SELECT 'App.Hr.Attendance.Widget.Pdks' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'green' AS \"Color\", 'App.Hr.AttendanceLog' AS \"SubTitle\", 'FaServer' AS \"Icon\" FROM \"Hr_T_AttendanceLog\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false' AND YEAR(\"EventTime\") = YEAR(GETDATE()) AND MONTH(\"EventTime\") = MONTH(GETDATE()) AND \"Source\" = 'Pdks' UNION ALL SELECT 'App.Hr.Attendance.Widget.Manual' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'orange' AS \"Color\", 'App.Hr.AttendanceLog' AS \"SubTitle\", 'FaUserEdit' AS \"Icon\" FROM \"Hr_T_AttendanceLog\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false' AND YEAR(\"EventTime\") = YEAR(GETDATE()) AND MONTH(\"EventTime\") = MONTH(GETDATE()) AND \"Source\" <> 'Pdks' UNION ALL SELECT 'App.Hr.Attendance.Widget.Error' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'red' AS \"Color\", 'App.Hr.AttendanceLog' AS \"SubTitle\", 'FaExclamationTriangle' AS \"Icon\" FROM \"Hr_T_AttendanceLog\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false' AND \"ProcessError\" IS NOT NULL", + "Title": "Title", + "Value": "Value", + "ValueClassName": "text-3xl", + "Color": "Color", + "Icon": "Icon", + "SubTitle": "SubTitle", + "OnClick": null, + "ClassName": "mb-3", + "IsActive": true + } + ], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Hr.AttendanceLog", + "CultureName": "en", + "Name": "App.Hr.AttendanceLog", + "KeyFieldName": "Id", + "Title": "App.Hr.AttendanceLog.Title", + "SortMode": "single", + "PageSize": 10, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Hr.AttendanceLog.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "auto", + "WhiteSpace": "normal", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "none", + "AllowSelectAll": false, + "SelectAllMode": "allPages", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "popup", + "RefreshMode": "full", + "AllowUpdating": true, + "AllowDetail": false, + "AllowDeleting": true, + "AllowAllDeleting": false, + "AllowAdding": true, + "AllowDuplicate": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Hr.AttendanceLog.Title", + "ShowTitle": true, + "Width": 800, + "Height": 520, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [ + { + "Order": 1, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Log", + "ColCount": 2, + "ColSpan": 2 + } + ], + "PermissionDto": { + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "D": "App.Hr.AttendanceLog.Delete", + "E": "App.Hr.AttendanceLog.Export", + "I": "App.Hr.AttendanceLog.Import", + "N": "App.Hr.AttendanceLog.Note" + }, + "CommandColumnDto": [], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Hr.AttendanceLog", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": true, + "SubFormsListFormType": "Form", + "SubFormsDto": [], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Hr.AttendanceLog", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.AttendanceLog", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EmployeeId", + "CaptionName": "App.Listform.ListformField.EmployeeId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name + ' ' + Surname AS [Name] FROM AbpUsers WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name, Surname" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "row", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.AttendanceLog", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "CardNo", + "CaptionName": "App.Listform.ListformField.CardNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 1, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": "{\"showClearButton\":true,\"maxLength\":64}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.AttendanceLog", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EventTime", + "CaptionName": "App.Listform.ListformField.EventTime", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 1, + "SortDirection": "desc", + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [ + { + "Type": "required", + "Message": null, + "IgnoreEmptyValue": false, + "Reevaluate": true, + "ComparisonType": "", + "Pattern": "", + "Max": null, + "Min": null, + "Trim": true + } + ], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 1, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"dateSerializationFormat\":\"yyyy-MM-ddTHH:mm:ss\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.AttendanceLog", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Direction", + "CaptionName": "App.Listform.ListformField.Direction", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "[{\"key\":\"In\",\"name\":\"App.Hr.Attendance.Direction.In\"},{\"key\":\"Out\",\"name\":\"App.Hr.Attendance.Direction.Out\"},{\"key\":\"Auto\",\"name\":\"App.Hr.Attendance.Direction.Auto\"}]" + }, + "ValidationRuleDto": [ + { + "Type": "required", + "Message": null, + "IgnoreEmptyValue": false, + "Reevaluate": true, + "ComparisonType": "", + "Pattern": "", + "Max": null, + "Min": null, + "Trim": true + } + ], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "column", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.AttendanceLog", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Source", + "CaptionName": "App.Listform.ListformField.Source", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 6, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "[{\"key\":\"Manual\",\"name\":\"App.Hr.Attendance.Source.Manual\"},{\"key\":\"Pdks\",\"name\":\"App.Hr.Attendance.Source.Pdks\"},{\"key\":\"Import\",\"name\":\"App.Hr.Attendance.Source.Import\"}]" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 5, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true,\"readOnly\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.AttendanceLog", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "DeviceCode", + "CaptionName": "App.Listform.ListformField.DeviceCode", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 6, + "EditGroupOrderNo": 1, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": "{\"showClearButton\":true,\"maxLength\":64}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.AttendanceLog", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "WorkDate", + "CaptionName": "App.Listform.ListformField.WorkDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "SourceDbType": 5, + "CultureName": "en", + "DataType": "date", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"date\",\"displayFormat\":\"dd.MM.yyyy\",\"dateSerializationFormat\":\"yyyy-MM-dd\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.AttendanceLog", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "ProcessError", + "CaptionName": "App.Listform.ListformField.ProcessError", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "[{\"key\":\"UnknownCard\",\"name\":\"App.Hr.Attendance.Error.UnknownCard\"},{\"key\":\"ClosedPeriod\",\"name\":\"App.Hr.Attendance.Error.ClosedPeriod\"}]" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": "isnotblank", + "ConditionValue": null, + "CssStyles": "color:#b91c1c | font-weight:600", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.AttendanceLog", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Note", + "CaptionName": "App.Listform.ListformField.Note", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.AttendanceLog.Create", + "R": "App.Hr.AttendanceLog", + "U": "App.Hr.AttendanceLog.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 7, + "EditGroupOrderNo": 1, + "EditorType2": "dxTextArea", + "ColSpan": 2, + "EditorOptions": "{\"autoResizeEnabled\":true,\"minHeight\":80}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + } + ], + "IsDeletedField": true, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Hr.AttendanceLog", + "App.Hr.Attendance", + "App.Hr.AttendanceLog.Title", + "App.Hr.AttendanceLog.Desc", + "App.Hr.Attendance.Group.Log", + "App.Hr.Attendance.Direction.In", + "App.Hr.Attendance.Direction.Out", + "App.Hr.Attendance.Direction.Auto", + "App.Hr.Attendance.Source.Manual", + "App.Hr.Attendance.Source.Pdks", + "App.Hr.Attendance.Source.Import", + "App.Hr.Attendance.Error.UnknownCard", + "App.Hr.Attendance.Error.ClosedPeriod", + "App.Hr.Attendance.Widget.Today", + "App.Hr.Attendance.Widget.Pdks", + "App.Hr.Attendance.Widget.Manual", + "App.Hr.Attendance.Widget.Error", + "App.Listform.ListformField.Source", + "App.Listform.ListformField.DeviceCode", + "App.Listform.ListformField.WorkDate", + "App.Listform.ListformField.ProcessError" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Hr.AttendanceLog", + "App.Hr.AttendanceLog.Create", + "App.Hr.AttendanceLog.Update", + "App.Hr.AttendanceLog.Delete", + "App.Hr.AttendanceLog.Export", + "App.Hr.AttendanceLog.Import", + "App.Hr.AttendanceLog.Note" + ], + "MenuCodes": [ + "App.Hr.AttendanceLog", + "App.Hr.Attendance" + ], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/host/wizard/BenefitType.json b/configs/seeds/host/wizard/BenefitType.json index b02a33a7..6027b59c 100644 --- a/configs/seeds/host/wizard/BenefitType.json +++ b/configs/seeds/host/wizard/BenefitType.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.BenefitType", - "MenuOrder": 11, + "MenuOrder": 10, "MenuUrl": "/admin/list/App.Hr.BenefitType", "MenuIcon": "FcDonate" }, diff --git a/configs/seeds/host/wizard/CandidateSource.json b/configs/seeds/host/wizard/CandidateSource.json index 51c28de6..b39922a8 100644 --- a/configs/seeds/host/wizard/CandidateSource.json +++ b/configs/seeds/host/wizard/CandidateSource.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.CandidateSource", - "MenuOrder": 13, + "MenuOrder": 6, "MenuUrl": "/admin/list/App.Hr.CandidateSource", "MenuIcon": "FcFeedback" }, diff --git a/configs/seeds/host/wizard/Certificate.json b/configs/seeds/host/wizard/Certificate.json index 39f637fd..826164ad 100644 --- a/configs/seeds/host/wizard/Certificate.json +++ b/configs/seeds/host/wizard/Certificate.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.Certificate", - "MenuOrder": 5, + "MenuOrder": 4, "MenuUrl": "/admin/list/App.Hr.Certificate", "MenuIcon": "FcDiploma2" }, diff --git a/configs/seeds/host/wizard/DisciplinaryCase.json b/configs/seeds/host/wizard/DisciplinaryCase.json index 6ada5c01..4156d52f 100644 --- a/configs/seeds/host/wizard/DisciplinaryCase.json +++ b/configs/seeds/host/wizard/DisciplinaryCase.json @@ -11,7 +11,7 @@ "MenuParentCode": "App.Hr", "MenuParentIcon": "FcConferenceCall", "MenuCode": "App.Hr.DisciplinaryCase", - "MenuOrder": 11, + "MenuOrder": 10, "MenuUrl": "/admin/list/App.Hr.DisciplinaryCase", "MenuIcon": "FcHighPriority" }, @@ -508,7 +508,7 @@ "TabType": "List", "TabTitle": "App.Hr.DisciplinaryDefense", "Code": "App.Hr.DisciplinaryDefense", - "IsRefresh": true, + "IsRefresh": false, "Relation": [ { "ParentFieldName": "Id", @@ -521,7 +521,7 @@ "TabType": "List", "TabTitle": "App.Hr.DisciplinaryDecision", "Code": "App.Hr.DisciplinaryDecision", - "IsRefresh": true, + "IsRefresh": false, "Relation": [ { "ParentFieldName": "Id", @@ -534,7 +534,7 @@ "TabType": "List", "TabTitle": "App.Hr.DisciplinaryFile", "Code": "App.Hr.DisciplinaryFile", - "IsRefresh": true, + "IsRefresh": false, "Relation": [ { "ParentFieldName": "Id", diff --git a/configs/seeds/host/wizard/DisciplinaryDecision.json b/configs/seeds/host/wizard/DisciplinaryDecision.json index b3d3e793..f4320fb8 100644 --- a/configs/seeds/host/wizard/DisciplinaryDecision.json +++ b/configs/seeds/host/wizard/DisciplinaryDecision.json @@ -1767,7 +1767,7 @@ "CaptionName": "App.Listform.ListformField.DecisionText", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 9, @@ -1860,9 +1860,9 @@ "Format": null, "EditOrderNo": 7, "EditGroupOrderNo": 1, - "EditorType2": "dxTextArea", + "EditorType2": "dxHtmlEditor", "ColSpan": 2, - "EditorOptions": "{\"autoResizeEnabled\":false,\"minHeight\":120}", + "EditorOptions": "{\"toolbar\":{\"multiline\":true,\"items\":[{\"name\":\"undo\"},{\"name\":\"redo\"},{\"name\":\"separator\"},{\"name\":\"header\",\"acceptedValues\":[false,1,2,3,4,5,6],\"options\":{\"inputAttr\":{\"aria-label\":\"Header\"}}},{\"name\":\"size\",\"acceptedValues\":[\"8pt\",\"10pt\",\"12pt\",\"14pt\",\"18pt\",\"24pt\",\"36pt\"],\"options\":{\"inputAttr\":{\"aria-label\":\"Font size\"}}},{\"name\":\"font\",\"acceptedValues\":[\"Arial\",\"Courier New\",\"Georgia\",\"Impact\",\"Lucida Console\",\"Segoe UI\",\"Tahoma\",\"Times New Roman\",\"Verdana\"],\"options\":{\"inputAttr\":{\"aria-label\":\"Font family\"}}},{\"name\":\"separator\"},{\"name\":\"bold\"},{\"name\":\"italic\"},{\"name\":\"underline\"},{\"name\":\"strike\"},{\"name\":\"superscript\"},{\"name\":\"subscript\"},{\"name\":\"separator\"},{\"name\":\"color\"},{\"name\":\"background\"},{\"name\":\"separator\"},{\"name\":\"alignLeft\"},{\"name\":\"alignCenter\"},{\"name\":\"alignRight\"},{\"name\":\"alignJustify\"},{\"name\":\"separator\"},{\"name\":\"orderedList\"},{\"name\":\"bulletList\"},{\"name\":\"decreaseIndent\"},{\"name\":\"increaseIndent\"},{\"name\":\"separator\"},{\"name\":\"blockquote\"},{\"name\":\"codeBlock\"},{\"name\":\"link\"},{\"name\":\"image\"},{\"name\":\"separator\"},{\"name\":\"insertTable\"},{\"name\":\"insertHeaderRow\"},{\"name\":\"insertRowAbove\"},{\"name\":\"insertRowBelow\"},{\"name\":\"deleteRow\"},{\"name\":\"insertColumnLeft\"},{\"name\":\"insertColumnRight\"},{\"name\":\"deleteColumn\"},{\"name\":\"cellProperties\"},{\"name\":\"tableProperties\"},{\"name\":\"deleteTable\"},{\"name\":\"separator\"},{\"name\":\"clear\"}]},\"imageUpload\":{\"tabs\":[\"file\",\"url\"],\"fileUploadMode\":\"base64\"},\"mediaResizing\":{\"enabled\":true},\"tableResizing\":{\"enabled\":true},\"tableContextMenu\":{\"enabled\":true},\"encodeHtml\":true,\"elementAttr\":{\"style\":\"min-height:250px\"}}", "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, diff --git a/configs/seeds/host/wizard/DisciplinaryDefense.json b/configs/seeds/host/wizard/DisciplinaryDefense.json index b4222569..7c395f31 100644 --- a/configs/seeds/host/wizard/DisciplinaryDefense.json +++ b/configs/seeds/host/wizard/DisciplinaryDefense.json @@ -1508,7 +1508,7 @@ "CaptionName": "App.Listform.ListformField.DefenseText", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 7, @@ -1601,9 +1601,9 @@ "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, - "EditorType2": "dxTextArea", + "EditorType2": "dxHtmlEditor", "ColSpan": 2, - "EditorOptions": "{\"autoResizeEnabled\":false,\"minHeight\":120}", + "EditorOptions": "{\"toolbar\":{\"multiline\":true,\"items\":[{\"name\":\"undo\"},{\"name\":\"redo\"},{\"name\":\"separator\"},{\"name\":\"header\",\"acceptedValues\":[false,1,2,3,4,5,6],\"options\":{\"inputAttr\":{\"aria-label\":\"Header\"}}},{\"name\":\"size\",\"acceptedValues\":[\"8pt\",\"10pt\",\"12pt\",\"14pt\",\"18pt\",\"24pt\",\"36pt\"],\"options\":{\"inputAttr\":{\"aria-label\":\"Font size\"}}},{\"name\":\"font\",\"acceptedValues\":[\"Arial\",\"Courier New\",\"Georgia\",\"Impact\",\"Lucida Console\",\"Segoe UI\",\"Tahoma\",\"Times New Roman\",\"Verdana\"],\"options\":{\"inputAttr\":{\"aria-label\":\"Font family\"}}},{\"name\":\"separator\"},{\"name\":\"bold\"},{\"name\":\"italic\"},{\"name\":\"underline\"},{\"name\":\"strike\"},{\"name\":\"superscript\"},{\"name\":\"subscript\"},{\"name\":\"separator\"},{\"name\":\"color\"},{\"name\":\"background\"},{\"name\":\"separator\"},{\"name\":\"alignLeft\"},{\"name\":\"alignCenter\"},{\"name\":\"alignRight\"},{\"name\":\"alignJustify\"},{\"name\":\"separator\"},{\"name\":\"orderedList\"},{\"name\":\"bulletList\"},{\"name\":\"decreaseIndent\"},{\"name\":\"increaseIndent\"},{\"name\":\"separator\"},{\"name\":\"blockquote\"},{\"name\":\"codeBlock\"},{\"name\":\"link\"},{\"name\":\"image\"},{\"name\":\"separator\"},{\"name\":\"insertTable\"},{\"name\":\"insertHeaderRow\"},{\"name\":\"insertRowAbove\"},{\"name\":\"insertRowBelow\"},{\"name\":\"deleteRow\"},{\"name\":\"insertColumnLeft\"},{\"name\":\"insertColumnRight\"},{\"name\":\"deleteColumn\"},{\"name\":\"cellProperties\"},{\"name\":\"tableProperties\"},{\"name\":\"deleteTable\"},{\"name\":\"separator\"},{\"name\":\"clear\"}]},\"imageUpload\":{\"tabs\":[\"file\",\"url\"],\"fileUploadMode\":\"base64\"},\"mediaResizing\":{\"enabled\":true},\"tableResizing\":{\"enabled\":true},\"tableContextMenu\":{\"enabled\":true},\"encodeHtml\":true,\"elementAttr\":{\"style\":\"min-height:250px\"}}", "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, diff --git a/configs/seeds/host/wizard/DisciplinaryPenaltyType.json b/configs/seeds/host/wizard/DisciplinaryPenaltyType.json index 6b88d2da..cb81eeb2 100644 --- a/configs/seeds/host/wizard/DisciplinaryPenaltyType.json +++ b/configs/seeds/host/wizard/DisciplinaryPenaltyType.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.DisciplinaryPenaltyType", - "MenuOrder": 12, + "MenuOrder": 17, "MenuUrl": "/admin/list/App.Hr.DisciplinaryPenaltyType", "MenuIcon": "FcList" }, diff --git a/configs/seeds/host/wizard/Doctor.json b/configs/seeds/host/wizard/Doctor.json index 4f117c11..2016b46f 100644 --- a/configs/seeds/host/wizard/Doctor.json +++ b/configs/seeds/host/wizard/Doctor.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.Doctor", - "MenuOrder": 4, + "MenuOrder": 13, "MenuUrl": "/admin/list/App.Hr.Doctor", "MenuIcon": "FcPortraitMode" }, diff --git a/configs/seeds/host/wizard/DocumentType.json b/configs/seeds/host/wizard/DocumentType.json index 26a7015b..08d68906 100644 --- a/configs/seeds/host/wizard/DocumentType.json +++ b/configs/seeds/host/wizard/DocumentType.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.DocumentType", - "MenuOrder": 8, + "MenuOrder": 5, "MenuUrl": "/admin/list/App.Hr.DocumentType", "MenuIcon": "FcDocument" }, diff --git a/configs/seeds/host/wizard/Driver.json b/configs/seeds/host/wizard/Driver.json index 479e4575..f4c42592 100644 --- a/configs/seeds/host/wizard/Driver.json +++ b/configs/seeds/host/wizard/Driver.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Vehicles", "MenuParentIcon": "FcAutomotive", "MenuCode": "App.Hr.Driver", - "MenuOrder": 4, + "MenuOrder": 5, "MenuUrl": "/admin/list/App.Hr.Driver", "MenuIcon": "FcBusinessman" }, diff --git a/configs/seeds/host/wizard/EvaluationCriterion.json b/configs/seeds/host/wizard/EvaluationCriterion.json index 78c467c8..e910d62c 100644 --- a/configs/seeds/host/wizard/EvaluationCriterion.json +++ b/configs/seeds/host/wizard/EvaluationCriterion.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.EvaluationCriterion", - "MenuOrder": 15, + "MenuOrder": 8, "MenuUrl": "/admin/list/App.Hr.EvaluationCriterion", "MenuIcon": "FcRating" }, diff --git a/configs/seeds/host/wizard/EventLog.json b/configs/seeds/host/wizard/EventLog.json index b6830e24..de46b951 100644 --- a/configs/seeds/host/wizard/EventLog.json +++ b/configs/seeds/host/wizard/EventLog.json @@ -11,7 +11,7 @@ "MenuParentCode": "App.Hr", "MenuParentIcon": "FcConferenceCall", "MenuCode": "App.Hr.EventLog", - "MenuOrder": 7, + "MenuOrder": 13, "MenuUrl": "/admin/list/App.Hr.EventLog", "MenuIcon": "FcViewDetails" }, diff --git a/configs/seeds/host/wizard/ExpenseType.json b/configs/seeds/host/wizard/ExpenseType.json index d1e33d3b..c8f81ed3 100644 --- a/configs/seeds/host/wizard/ExpenseType.json +++ b/configs/seeds/host/wizard/ExpenseType.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.ExpenseType", - "MenuOrder": 10, + "MenuOrder": 9, "MenuUrl": "/admin/list/App.Hr.ExpenseType", "MenuIcon": "FcMoneyTransfer" }, diff --git a/configs/seeds/host/wizard/HealthCard.json b/configs/seeds/host/wizard/HealthCard.json index 2bb9b1c9..1b746c13 100644 --- a/configs/seeds/host/wizard/HealthCard.json +++ b/configs/seeds/host/wizard/HealthCard.json @@ -11,7 +11,7 @@ "MenuParentCode": "App.Hr", "MenuParentIcon": "FcConferenceCall", "MenuCode": "App.Hr.HealthCard", - "MenuOrder": 4, + "MenuOrder": 7, "MenuUrl": "/admin/list/App.Hr.HealthCard", "MenuIcon": "FcInspection" }, diff --git a/configs/seeds/host/wizard/HealthCardSickLeave.json b/configs/seeds/host/wizard/HealthCardSickLeave.json index a1aaba0e..0013d16f 100644 --- a/configs/seeds/host/wizard/HealthCardSickLeave.json +++ b/configs/seeds/host/wizard/HealthCardSickLeave.json @@ -25,8 +25,8 @@ "MenuTr": "İstirahat Raporları", "TitleEn": "Sick Leaves", "TitleTr": "İstirahat Raporları", - "DescEn": "Sick Leaves — the employee's sick leave records.\nWhere: the Sick Leaves tab of Health Cards.\nFields: start and end date, days (end inclusive, automatic), type (Disease, Work accident, Occupational disease, Maternity), institution, clinic, reason.\nSingle record: a report entered here appears in Human Resources › Leave Management as an approved leave request of type Sick, and a sick leave requested by the employee on the Intranet appears in this tab. Deleting the report removes the leave request too. Sick leave does not reduce the annual leave balance.", - "DescTr": "İstirahat Raporları — çalışanın aldığı istirahat (rapor) kayıtları.\nNerede: Sağlık Kartları ekranında kaydın İstirahat Raporları sekmesi.\nAlanlar: başlangıç ve bitiş tarihi, gün (bitiş dahil, otomatik), istirahat türü (Hastalık, İş kazası, Meslek hastalığı, Doğum), kurum, klinik, neden.\nTek kayıt: buradan girilen rapor İnsan Kaynakları › İzin Yönetimi'nde Rapor (Sick) türünde onaylı izin talebi olarak görünür; çalışanın Intranet'ten girdiği rapor talebi de bu sekmeye düşer. Silinen rapor izin talebinden de kalkar. Rapor yıllık izin bakiyesinden düşmez." + "DescEn": "Sick Leaves — the employee's sick leave records.\nWhere: the Sick Leaves tab of Health Cards.\nFields: start and end date, days (end inclusive, automatic), type (Disease, Work accident, Occupational disease, Maternity), institution, clinic, reason.\nSingle record: a report entered here appears in Human Resources › Leave Management as an approved leave request of type Sick, and a sick leave requested by the employee on the Intranet appears in this tab. Deleting the report removes the leave request too. Sick leave does not reduce the annual leave balance; annual leave days falling into the report return to the balance. The days are Sick in the timesheet; a report falling into a closed timesheet period cannot be saved.", + "DescTr": "İstirahat Raporları — çalışanın aldığı istirahat (rapor) kayıtları.\nNerede: Sağlık Kartları ekranında kaydın İstirahat Raporları sekmesi.\nAlanlar: başlangıç ve bitiş tarihi, gün (bitiş dahil, otomatik), istirahat türü (Hastalık, İş kazası, Meslek hastalığı, Doğum), kurum, klinik, neden.\nTek kayıt: buradan girilen rapor İnsan Kaynakları › İzin Yönetimi'nde Rapor (Sick) türünde onaylı izin talebi olarak görünür; çalışanın Intranet'ten girdiği rapor talebi de bu sekmeye düşer. Silinen rapor izin talebinden de kalkar. Rapor yıllık izin bakiyesinden düşmez; rapora denk gelen yıllık izin günleri bakiyeye döner. Günler puantajda Raporlu yazılır; kapalı puantaj dönemine düşen rapor kaydedilemez." }, "Groups": [ { @@ -104,7 +104,7 @@ "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Adm_T_UserSickLeave\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, - "DeleteAfterCommand": "UPDATE Hr_T_LeaveRequest SET IsDeleted = 1, DeletionTime = GETUTCDATE(), DeleterId = @DeleterId WHERE SickLeaveId IN @Id AND IsDeleted = 0", + "DeleteAfterCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Adm_T_UserSickLeave WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_LeaveSickLeaveSync @_id, @DeleterId; END", "DeleteFieldsDefaultValueDto": [ { "FieldName": "DeleterId", diff --git a/configs/seeds/host/wizard/Hospital.json b/configs/seeds/host/wizard/Hospital.json index 6a84af2f..3173e3d0 100644 --- a/configs/seeds/host/wizard/Hospital.json +++ b/configs/seeds/host/wizard/Hospital.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.Hospital", - "MenuOrder": 6, + "MenuOrder": 14, "MenuUrl": "/admin/list/App.Hr.Hospital", "MenuIcon": "FcOrganization" }, diff --git a/configs/seeds/host/wizard/HospitalDepartment.json b/configs/seeds/host/wizard/HospitalDepartment.json index 8a20ec96..c309ee24 100644 --- a/configs/seeds/host/wizard/HospitalDepartment.json +++ b/configs/seeds/host/wizard/HospitalDepartment.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.HospitalDepartment", - "MenuOrder": 7, + "MenuOrder": 15, "MenuUrl": "/admin/list/App.Hr.HospitalDepartment", "MenuIcon": "FcList" }, diff --git a/configs/seeds/host/wizard/LeaveRequest.json b/configs/seeds/host/wizard/LeaveRequest.json index db4a76e3..cf109a40 100644 --- a/configs/seeds/host/wizard/LeaveRequest.json +++ b/configs/seeds/host/wizard/LeaveRequest.json @@ -32,8 +32,8 @@ "MenuTr": "İzin Talepleri", "TitleEn": "Leave Requests", "TitleTr": "İzin Talepleri", - "DescEn": "Leave Requests — every leave request in the company, with its approval state. Used only by Human Resources.\nWhere: Human Resources › Leave Management › Leave Requests. Employees request leave from the My Leaves widget on Intranet › Dashboard; managers approve from the Team Leaves widget.\nFields:\n• RequestNo → assigned automatically as IZN-YYYY-00001\n• Employee → department and position are copied from the user card\n• Leave type, start/end date and time, half day (morning/afternoon)\n• Days → calculated on save from the working days in Settings › Human Resources and the holidays in Work Calendar (half day = 0.5)\n• Description and supporting document (report etc.; required when the leave type requires a document)\nRules: overlapping requests are rejected; when the annual balance or the yearly limit of the type is exceeded the request is blocked or saved with a warning, as set on the leave type. Gender-specific types are only valid for that gender.\nApproval: Grid Workflow — Department Manager → HR → Approved / Rejected. The manager is the holder of the top position of the employee's department (Job Positions); the HR approver is set on the 'İK Onayı' node. Each step notifies the next approver; the result notifies the employee.\nSick leave: requests of type Sick and Health Card › Sick Leaves are the same record.\nWidgets: awaiting manager, awaiting HR, approved and rejected requests.", - "DescTr": "İzin Talepleri — kurumdaki bütün izin talepleri ve onay durumları. Yalnız İnsan Kaynakları kullanır.\nNerede: İnsan Kaynakları › İzin Yönetimi › İzin Talepleri. Çalışan talebini Intranet › Dashboard'daki İzinlerim widget'ından açar; müdür Ekibimin İzinleri widget'ından onaylar.\nAlanlar:\n• RequestNo → IZN-YYYY-00001 biçiminde otomatik verilir\n• Çalışan → departman ve pozisyon kullanıcı kartından kopyalanır\n• İzin türü, başlangıç/bitiş tarih ve saati, yarım gün (sabah/öğleden sonra)\n• Gün → kayıtta Ayarlar › İnsan Kaynakları'ndaki çalışma günleri ve Çalışma Takvimi'ndeki tatillerden hesaplanır (yarım gün = 0,5)\n• Açıklama ve ek belge (rapor vb.; türü belge istiyorsa zorunlu)\nKurallar: aynı tarihlerle çakışan talep reddedilir; yıllık izin bakiyesi ya da türün yıllık sınırı aşılırsa türdeki ayara göre talep engellenir veya uyarıyla kaydedilir. Cinsiyete özel türler yalnız o cinsiyete açıktır.\nOnay: Grid Workflow — Departman Müdürü → İK → Onaylandı / Reddedildi. Müdür, çalışanın departmanındaki en üst pozisyonun (İş Pozisyonları) sahibidir; İK onaycısı 'İK Onayı' düğümünde tanımlıdır. Her adım sıradaki onaycıya, sonuç çalışana bildirim gönderir.\nRapor: Rapor (Sick) türündeki talep ile Sağlık Kartı › İstirahatler aynı kayıttır; hangisinden girilirse diğerinde görünür.\nWidget'lar: müdür onayında, İK onayında, onaylanan ve reddedilen talepler.", + "DescEn": "Leave Requests — every leave request in the company, with its approval state. Used only by Human Resources.\nWhere: Human Resources › Leave Management › Leave Requests. Employees request leave from the My Leaves widget on Intranet › Dashboard; managers approve from the Team Leaves widget.\nFields:\n• RequestNo → assigned automatically as IZN-YYYY-00001\n• Employee → department and position are copied from the user card\n• Leave type, start/end date and time, half day (morning/afternoon)\n• Days → calculated on save from the working days in Settings › Human Resources and the holidays in Work Calendar (half day = 0.5); days covered by a sick leave are not counted and return to the balance\n• Description and supporting document (report etc.; required when the leave type requires a document)\nRules: overlapping requests are rejected; when the annual balance or the yearly limit of the type is exceeded the request is blocked or saved with a warning, as set on the leave type. Gender-specific types are only valid for that gender. Dates must be within the employee's hire and termination dates. A request falling into a closed timesheet period cannot be added, changed or deleted.\nApproval: Grid Workflow — Department Manager → HR → Approved / Rejected. The manager is the holder of the top position of the employee's department (Job Positions); the HR approver is set on the 'İK Onayı' node. Each step notifies the next approver; the result notifies the employee.\nSick leave: requests of type Sick and Health Card › Sick Leaves are the same record; a sick leave request appears on the health card once approved.\nWidgets: awaiting manager, awaiting HR, approved and rejected requests.", + "DescTr": "İzin Talepleri — kurumdaki bütün izin talepleri ve onay durumları. Yalnız İnsan Kaynakları kullanır.\nNerede: İnsan Kaynakları › İzin Yönetimi › İzin Talepleri. Çalışan talebini Intranet › Dashboard'daki İzinlerim widget'ından açar; müdür Ekibimin İzinleri widget'ından onaylar.\nAlanlar:\n• RequestNo → IZN-YYYY-00001 biçiminde otomatik verilir\n• Çalışan → departman ve pozisyon kullanıcı kartından kopyalanır\n• İzin türü, başlangıç/bitiş tarih ve saati, yarım gün (sabah/öğleden sonra)\n• Gün → kayıtta Ayarlar › İnsan Kaynakları'ndaki çalışma günleri ve Çalışma Takvimi'ndeki tatillerden hesaplanır (yarım gün = 0,5); rapora denk gelen gün sayılmaz, bakiyeye döner\n• Açıklama ve ek belge (rapor vb.; türü belge istiyorsa zorunlu)\nKurallar: aynı tarihlerle çakışan talep reddedilir; yıllık izin bakiyesi ya da türün yıllık sınırı aşılırsa türdeki ayara göre talep engellenir veya uyarıyla kaydedilir. Cinsiyete özel türler yalnız o cinsiyete açıktır. Tarihler çalışanın işe giriş ve işten çıkış tarihleri arasında olmalıdır. Kapalı puantaj dönemine düşen talep eklenemez, değiştirilemez, silinemez.\nOnay: Grid Workflow — Departman Müdürü → İK → Onaylandı / Reddedildi. Müdür, çalışanın departmanındaki en üst pozisyonun (İş Pozisyonları) sahibidir; İK onaycısı 'İK Onayı' düğümünde tanımlıdır. Her adım sıradaki onaycıya, sonuç çalışana bildirim gönderir.\nRapor: Rapor (Sick) türündeki talep ile Sağlık Kartı › İstirahatler aynı kayıttır; Sağlık Kartı'ndan girilen rapor onaylı talep olur, çalışanın rapor talebi onaylanınca sağlık kartına düşer.\nWidget'lar: müdür onayında, İK onayında, onaylanan ve reddedilen talepler.", "Texts": [ { "Key": "App.Hr.Leave.Group.Request", @@ -232,8 +232,8 @@ "SeedSyncUpdate": false, "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_LeaveRequest\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", - "DeleteBeforeCommand": null, - "DeleteAfterCommand": "UPDATE s SET IsDeleted = 1, DeletionTime = GETUTCDATE(), DeleterId = @DeleterId FROM Adm_T_UserSickLeave s INNER JOIN Hr_T_LeaveRequest r ON r.SickLeaveId = s.Id WHERE r.Id IN @Id AND s.IsDeleted = 0", + "DeleteBeforeCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_LeaveRequest WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_LeaveRequestGuard @_id, @DeleterId, N'Hr', N'Delete'; END", + "DeleteAfterCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_LeaveRequest WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_LeaveRequestAfterSave @_id, @DeleterId, N'Hr'; END", "DeleteFieldsDefaultValueDto": [ { "FieldName": "DeleterId", @@ -284,7 +284,7 @@ } ], "UpdateCommand": null, - "UpdateBeforeCommand": null, + "UpdateBeforeCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_LeaveRequest WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_LeaveRequestGuard @_id, @LastModifierId, N'Hr', N'Update'; END", "UpdateAfterCommand": "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Hr_T_LeaveRequest WHERE Id IN @Id); EXEC dbo.Hr_S_LeaveRequestAfterSave @_id, @LastModifierId, N'Hr'", "UpdateFieldsDefaultValueDto": [ { diff --git a/configs/seeds/host/wizard/LeaveType.json b/configs/seeds/host/wizard/LeaveType.json index 41fad25e..1f047b1a 100644 --- a/configs/seeds/host/wizard/LeaveType.json +++ b/configs/seeds/host/wizard/LeaveType.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.LeaveType", - "MenuOrder": 9, + "MenuOrder": 12, "MenuUrl": "/admin/list/App.Hr.LeaveType", "MenuIcon": "FcPlanner" }, diff --git a/configs/seeds/host/wizard/MyLeaveRequest.json b/configs/seeds/host/wizard/MyLeaveRequest.json index 24664870..592d8c28 100644 --- a/configs/seeds/host/wizard/MyLeaveRequest.json +++ b/configs/seeds/host/wizard/MyLeaveRequest.json @@ -162,7 +162,7 @@ "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_LeaveRequest\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Hr_T_LeaveRequest WHERE Id IN @Id); EXEC dbo.Hr_S_LeaveRequestGuard @_id, @DeleterId, N'Employee', N'Delete'", - "DeleteAfterCommand": "UPDATE s SET IsDeleted = 1, DeletionTime = GETUTCDATE(), DeleterId = @DeleterId FROM Adm_T_UserSickLeave s INNER JOIN Hr_T_LeaveRequest r ON r.SickLeaveId = s.Id WHERE r.Id IN @Id AND s.IsDeleted = 0", + "DeleteAfterCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_LeaveRequest WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_LeaveRequestAfterSave @_id, @DeleterId, N'Employee'; END", "DeleteFieldsDefaultValueDto": [ { "FieldName": "DeleterId", diff --git a/configs/seeds/host/wizard/MyTimesheet.json b/configs/seeds/host/wizard/MyTimesheet.json new file mode 100644 index 00000000..d4689dfd --- /dev/null +++ b/configs/seeds/host/wizard/MyTimesheet.json @@ -0,0 +1,3987 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "MyTimesheet", + "WizardCode": "App.Hr.MyTimesheet", + "SeededAt": "2026-10-05T09:00:05+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Hr", + "ModuleId": "Hr", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Hr", + "Icon": "FcConferenceCall", + "En": null, + "Tr": null + } + ], + "MenuParentCode": "App.Hr.Attendance", + "MenuParentIcon": "FcAlarmClock", + "CreateMenu": false, + "MenuCode": "App.Hr.MyTimesheet", + "MenuOrder": 0, + "MenuUrl": "/admin/list/App.Hr.MyTimesheet", + "MenuIcon": "FcDataSheet" + }, + "Language": { + "MenuParentEn": "Timesheet & Attendance", + "MenuParentTr": "Puantaj ve Devam Takibi", + "PermissionGroupEn": "Human Resources", + "PermissionGroupTr": "İnsan Kaynakları", + "MenuEn": "My Timesheet", + "MenuTr": "Puantajım", + "TitleEn": "My Timesheet", + "TitleTr": "Puantajım", + "DescEn": "My Timesheet — your own monthly timesheet: work days, net hours, late arrivals, early leaves, overtime and leave/sick/absent days month by month.\nWhere: not on the menu; opened from the My Timesheet widget on Intranet › Dashboard. The row detail lists the days of the month.\nCalculation: Human Resources prepares the timesheet from the PDKS punches or, if you are tracked manually, from your shift hours (days without a record count as worked). Overtime is the work above 45 hours a week and all work on weekly rest days and public holidays; the yearly limit is 270 hours.\nQuestions and corrections about a day go to Human Resources.", + "DescTr": "Puantajım — kendi aylık puantajınız: ay ay çalışma günü, net saat, geç kalma, erken çıkış, fazla mesai ve izinli/raporlu/devamsız günler.\nNerede: menüde yer almaz; Intranet › Dashboard'daki Puantajım widget'ından açılır. Satır detayında ayın günleri listelenir.\nHesap: İnsan Kaynakları puantajı PDKS okutmalarından, elle takip ediliyorsanız vardiya saatlerinizden (kayıt girilmeyen gün çalışılmış sayılır) hazırlar. Fazla mesai haftalık 45 saati aşan çalışma ile hafta tatili ve resmî tatildeki çalışmanın tamamıdır; yıllık sınır 270 saattir.\nBir günle ilgili sorular ve düzeltmeler İnsan Kaynakları'na iletilir.", + "Texts": [ + { + "Key": "App.Hr.Attendance.Group.Period", + "En": "Employee & Period", + "Tr": "Çalışan ve Dönem" + }, + { + "Key": "App.Hr.Attendance.Group.Time", + "En": "Working Time", + "Tr": "Çalışma Süreleri" + }, + { + "Key": "App.Hr.Attendance.Group.Overtime", + "En": "Overtime", + "Tr": "Fazla Mesai" + }, + { + "Key": "App.Hr.Attendance.Group.Days", + "En": "Day Distribution", + "Tr": "Gün Dağılımı" + } + ] + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "EmployeeId", + "CaptionName": "App.Listform.ListformField.EmployeeId", + "En": "Employee", + "Tr": "Çalışan" + }, + { + "FieldName": "PeriodYear", + "CaptionName": "App.Listform.ListformField.PeriodYear", + "En": "Year", + "Tr": "Yıl" + }, + { + "FieldName": "PeriodMonth", + "CaptionName": "App.Listform.ListformField.PeriodMonth", + "En": "Month", + "Tr": "Ay" + }, + { + "FieldName": "PeriodStatus", + "CaptionName": "App.Listform.ListformField.PeriodStatus", + "En": "Period Status", + "Tr": "Dönem Durumu" + }, + { + "FieldName": "WorkDays", + "CaptionName": "App.Listform.ListformField.WorkDays", + "En": "Work Days", + "Tr": "Çalışma Günü" + }, + { + "FieldName": "NetHours", + "CaptionName": "App.Listform.ListformField.NetHours", + "En": "Net Hours", + "Tr": "Net Çalışma (saat)" + }, + { + "FieldName": "LateMinutes", + "CaptionName": "App.Listform.ListformField.LateMinutes", + "En": "Late (min)", + "Tr": "Geç Kalma (dk)" + }, + { + "FieldName": "LateDays", + "CaptionName": "App.Listform.ListformField.LateDays", + "En": "Late Days", + "Tr": "Geç Kalınan Gün" + }, + { + "FieldName": "EarlyLeaveMinutes", + "CaptionName": "App.Listform.ListformField.EarlyLeaveMinutes", + "En": "Early Leave (min)", + "Tr": "Erken Çıkış (dk)" + }, + { + "FieldName": "EarlyLeaveDays", + "CaptionName": "App.Listform.ListformField.EarlyLeaveDays", + "En": "Early Leave Days", + "Tr": "Erken Çıkılan Gün" + }, + { + "FieldName": "OvertimeHours", + "CaptionName": "App.Listform.ListformField.OvertimeHours", + "En": "Overtime (h)", + "Tr": "Fazla Mesai (saat)" + }, + { + "FieldName": "OvertimePaidHours", + "CaptionName": "App.Listform.ListformField.OvertimePaidHours", + "En": "Overtime Pay Hours", + "Tr": "Zamlı Fazla Mesai (saat)" + }, + { + "FieldName": "WeeklyOffDays", + "CaptionName": "App.Listform.ListformField.WeeklyOffDays", + "En": "Weekly Rest Days", + "Tr": "Hafta Tatili" + }, + { + "FieldName": "HolidayDays", + "CaptionName": "App.Listform.ListformField.HolidayDays", + "En": "Public Holidays", + "Tr": "Resmî Tatil" + }, + { + "FieldName": "LeaveDays", + "CaptionName": "App.Listform.ListformField.LeaveDays", + "En": "Leave Days", + "Tr": "İzinli Gün" + }, + { + "FieldName": "UnpaidLeaveDays", + "CaptionName": "App.Listform.ListformField.UnpaidLeaveDays", + "En": "Unpaid Leave Days", + "Tr": "Ücretsiz İzinli Gün" + }, + { + "FieldName": "TrainingDays", + "CaptionName": "App.Listform.ListformField.TrainingDays", + "En": "Training Days", + "Tr": "Eğitim Günü" + }, + { + "FieldName": "SickDays", + "CaptionName": "App.Listform.ListformField.SickDays", + "En": "Sick Leave Days", + "Tr": "Raporlu Gün" + }, + { + "FieldName": "AbsentDays", + "CaptionName": "App.Listform.ListformField.AbsentDays", + "En": "Absent Days", + "Tr": "Devamsız Gün" + }, + { + "FieldName": "IncompleteDays", + "CaptionName": "App.Listform.ListformField.IncompleteDays", + "En": "Missing Punch Days", + "Tr": "Eksik Okutmalı Gün" + }, + { + "FieldName": "AssumedDays", + "CaptionName": "App.Listform.ListformField.AssumedDays", + "En": "Assumed Days", + "Tr": "Varsayılan Gün" + }, + { + "FieldName": "YearOvertimeHours", + "CaptionName": "App.Listform.ListformField.YearOvertimeHours", + "En": "Overtime This Year (h)", + "Tr": "Yıllık Fazla Mesai (saat)" + }, + { + "FieldName": "AnnualOvertimeLimit", + "CaptionName": "App.Listform.ListformField.AnnualOvertimeLimit", + "En": "Annual Overtime Limit (h)", + "Tr": "Yıllık Fazla Mesai Sınırı" + }, + { + "FieldName": "IsOverAnnualLimit", + "CaptionName": "App.Listform.ListformField.IsOverAnnualLimit", + "En": "Over Annual Limit", + "Tr": "Yıllık Sınır Aşıldı" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 16, + "TableName": null, + "DefaultFilter": "\"EmployeeId\" = '@USERID'", + "SelectCommand": "Hr_V_TimesheetMonthly", + "SelectCommandType": 1, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": null, + "DeleteBeforeCommand": null, + "DeleteAfterCommand": null, + "DeleteFieldsDefaultValueDto": [], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": null, + "InsertFieldsDefaultValueDto": [], + "UpdateCommand": null, + "UpdateBeforeCommand": null, + "UpdateAfterCommand": null, + "UpdateFieldsDefaultValueDto": [], + "FormFieldsDefaultValueDto": [], + "WidgetsDto": [], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Hr.MyTimesheet", + "CultureName": "en", + "Name": "App.Hr.MyTimesheet", + "KeyFieldName": "Id", + "Title": "App.Hr.MyTimesheet.Title", + "SortMode": "single", + "PageSize": 10, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Hr.MyTimesheet.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "auto", + "WhiteSpace": "normal", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "none", + "AllowSelectAll": false, + "SelectAllMode": "allPages", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "popup", + "RefreshMode": "full", + "AllowUpdating": false, + "AllowDetail": true, + "AllowDeleting": false, + "AllowAllDeleting": false, + "AllowAdding": false, + "AllowDuplicate": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Hr.MyTimesheet.Title", + "ShowTitle": true, + "Width": 1100, + "Height": 680, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [ + { + "Order": 1, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Period", + "ColCount": 4, + "ColSpan": 4 + }, + { + "Order": 2, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Time", + "ColCount": 4, + "ColSpan": 4 + }, + { + "Order": 3, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Overtime", + "ColCount": 4, + "ColSpan": 4 + }, + { + "Order": 4, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Days", + "ColCount": 4, + "ColSpan": 4 + } + ], + "PermissionDto": { + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "D": "App.Hr.MyTimesheet.Delete", + "E": "App.Hr.MyTimesheet.Export", + "I": "App.Hr.MyTimesheet.Import", + "N": "App.Hr.MyTimesheet.Note" + }, + "CommandColumnDto": [], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Hr.MyTimesheet", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": false, + "SubFormsListFormType": "Form", + "SubFormsDto": [ + { + "TabType": "List", + "TabTitle": "App.Hr.MyTimesheetDay", + "Code": "App.Hr.MyTimesheetDay", + "IsRefresh": true, + "Relation": [ + { + "ParentFieldName": "Id", + "DbType": 16, + "ChildFieldName": "PeriodKey" + } + ] + } + ], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EmployeeId", + "CaptionName": "App.Listform.ListformField.EmployeeId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name + ' ' + Surname AS [Name] FROM AbpUsers WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name, Surname" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "row", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodYear", + "CaptionName": "App.Listform.ListformField.PeriodYear", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 1, + "SortDirection": "desc", + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "column", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 1, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodMonth", + "CaptionName": "App.Listform.ListformField.PeriodMonth", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 2, + "SortDirection": "desc", + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "column", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 1, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodStatus", + "CaptionName": "App.Listform.ListformField.PeriodStatus", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "[{\"key\":\"Open\",\"name\":\"App.Hr.Attendance.PeriodStatus.Open\"},{\"key\":\"Closed\",\"name\":\"App.Hr.Attendance.PeriodStatus.Closed\"}]" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "WorkDays", + "CaptionName": "App.Listform.ListformField.WorkDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 6, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "NetHours", + "CaptionName": "App.Listform.ListformField.NetHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LateMinutes", + "CaptionName": "App.Listform.ListformField.LateMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LateDays", + "CaptionName": "App.Listform.ListformField.LateDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EarlyLeaveMinutes", + "CaptionName": "App.Listform.ListformField.EarlyLeaveMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 5, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EarlyLeaveDays", + "CaptionName": "App.Listform.ListformField.EarlyLeaveDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 11, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 6, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "OvertimeHours", + "CaptionName": "App.Listform.ListformField.OvertimeHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 12, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 3, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "OvertimePaidHours", + "CaptionName": "App.Listform.ListformField.OvertimePaidHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 13, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 3, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "WeeklyOffDays", + "CaptionName": "App.Listform.ListformField.WeeklyOffDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 14, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "HolidayDays", + "CaptionName": "App.Listform.ListformField.HolidayDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 15, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LeaveDays", + "CaptionName": "App.Listform.ListformField.LeaveDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 16, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "UnpaidLeaveDays", + "CaptionName": "App.Listform.ListformField.UnpaidLeaveDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 17, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "TrainingDays", + "CaptionName": "App.Listform.ListformField.TrainingDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 18, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 5, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "SickDays", + "CaptionName": "App.Listform.ListformField.SickDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 19, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 6, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "AbsentDays", + "CaptionName": "App.Listform.ListformField.AbsentDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 20, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": ">", + "ConditionValue": "0", + "CssStyles": "color:#b91c1c | font-weight:600", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 7, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "IncompleteDays", + "CaptionName": "App.Listform.ListformField.IncompleteDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 21, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 7, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "AssumedDays", + "CaptionName": "App.Listform.ListformField.AssumedDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 22, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 8, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "YearOvertimeHours", + "CaptionName": "App.Listform.ListformField.YearOvertimeHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 23, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 3, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "AnnualOvertimeLimit", + "CaptionName": "App.Listform.ListformField.AnnualOvertimeLimit", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 24, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 3, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "IsOverAnnualLimit", + "CaptionName": "App.Listform.ListformField.IsOverAnnualLimit", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 25, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": true, + "Condition": "=", + "ConditionValue": "1", + "CssStyles": "background-color:#fee2e2 | color:#b91c1c", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheet.Create", + "R": "App.Hr.MyTimesheet", + "U": "App.Hr.MyTimesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + } + ], + "IsDeletedField": true, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Hr.MyTimesheet", + "App.Hr.MyTimesheet.Title", + "App.Hr.MyTimesheet.Desc" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Hr.MyTimesheet", + "App.Hr.MyTimesheet.Create", + "App.Hr.MyTimesheet.Update", + "App.Hr.MyTimesheet.Delete", + "App.Hr.MyTimesheet.Export", + "App.Hr.MyTimesheet.Import", + "App.Hr.MyTimesheet.Note" + ], + "MenuCodes": [], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/host/wizard/MyTimesheetDay.json b/configs/seeds/host/wizard/MyTimesheetDay.json new file mode 100644 index 00000000..34c7af9d --- /dev/null +++ b/configs/seeds/host/wizard/MyTimesheetDay.json @@ -0,0 +1,2896 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "MyTimesheetDay", + "WizardCode": "App.Hr.MyTimesheetDay", + "SeededAt": "2026-10-05T09:00:06+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Hr", + "ModuleId": "Hr", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Hr", + "Icon": "FcConferenceCall", + "En": null, + "Tr": null + } + ], + "MenuParentCode": "App.Hr.Attendance", + "MenuParentIcon": "FcAlarmClock", + "CreateMenu": false, + "MenuCode": "App.Hr.MyTimesheetDay", + "MenuOrder": 0, + "MenuUrl": "/admin/list/App.Hr.MyTimesheetDay", + "MenuIcon": "FcPlanner" + }, + "Language": { + "MenuParentEn": "Timesheet & Attendance", + "MenuParentTr": "Puantaj ve Devam Takibi", + "PermissionGroupEn": "Human Resources", + "PermissionGroupTr": "İnsan Kaynakları", + "MenuEn": "My Timesheet Days", + "MenuTr": "Puantaj Günlerim", + "TitleEn": "My Timesheet Days", + "TitleTr": "Puantaj Günlerim", + "DescEn": "My Timesheet Days — the days of your timesheet: first in, last out, net working time, break, late arrival, early leave, overtime and day type.\nWhere: the tab of a month in My Timesheet (Intranet › Dashboard › My Timesheet widget).\nMarks: Assumed — you are tracked manually and the day was taken from your shift hours; Manual — corrected by Human Resources; Missing Punch — an entry without exit.\nLate and early minutes are written once your shift's tolerance is exceeded. Days of a training you attended are Training days.", + "DescTr": "Puantaj Günlerim — puantajınızın günleri: ilk giriş, son çıkış, net çalışma, mola, geç kalma, erken çıkış, fazla mesai ve gün tipi.\nNerede: Puantajım'da bir ayın sekmesi (Intranet › Dashboard › Puantajım widget'ı).\nİşaretler: Varsayılan — elle takip ediliyorsunuz ve gün vardiya saatlerinizden alındı; Elle — İnsan Kaynakları düzeltti; Eksik Okutma — çıkışı olmayan giriş.\nGeç ve erken dakika vardiyanızın toleransı aşılınca yazılır. Katıldığınız eğitimin günleri Eğitimde yazılır.", + "Texts": [ + { + "Key": "App.Hr.Attendance.DayType.Training", + "En": "Training", + "Tr": "Eğitimde" + } + ] + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "WorkDate", + "CaptionName": "App.Listform.ListformField.WorkDate", + "En": "Work Date", + "Tr": "İş Günü" + }, + { + "FieldName": "DayType", + "CaptionName": "App.Listform.ListformField.DayType", + "En": "Day Type", + "Tr": "Gün Tipi" + }, + { + "FieldName": "LeaveTypeId", + "CaptionName": "App.Listform.ListformField.LeaveTypeId", + "En": "Leave Type", + "Tr": "İzin Türü" + }, + { + "FieldName": "TrainingId", + "CaptionName": "App.Listform.ListformField.TrainingId", + "En": "Training", + "Tr": "Eğitim" + }, + { + "FieldName": "FirstIn", + "CaptionName": "App.Listform.ListformField.FirstIn", + "En": "First In", + "Tr": "İlk Giriş" + }, + { + "FieldName": "LastOut", + "CaptionName": "App.Listform.ListformField.LastOut", + "En": "Last Out", + "Tr": "Son Çıkış" + }, + { + "FieldName": "NetHours", + "CaptionName": "App.Listform.ListformField.NetHours", + "En": "Net Hours", + "Tr": "Net Çalışma (saat)" + }, + { + "FieldName": "BreakMinutes", + "CaptionName": "App.Listform.ListformField.BreakMinutes", + "En": "Break Deduction (min)", + "Tr": "Mola Düşümü (dk)" + }, + { + "FieldName": "LateMinutes", + "CaptionName": "App.Listform.ListformField.LateMinutes", + "En": "Late (min)", + "Tr": "Geç Kalma (dk)" + }, + { + "FieldName": "EarlyLeaveMinutes", + "CaptionName": "App.Listform.ListformField.EarlyLeaveMinutes", + "En": "Early Leave (min)", + "Tr": "Erken Çıkış (dk)" + }, + { + "FieldName": "OvertimeHours", + "CaptionName": "App.Listform.ListformField.OvertimeHours", + "En": "Overtime (h)", + "Tr": "Fazla Mesai (saat)" + }, + { + "FieldName": "IsAssumed", + "CaptionName": "App.Listform.ListformField.IsAssumed", + "En": "Assumed", + "Tr": "Varsayılan" + }, + { + "FieldName": "IsManual", + "CaptionName": "App.Listform.ListformField.IsManual", + "En": "Manual", + "Tr": "Elle" + }, + { + "FieldName": "IsIncomplete", + "CaptionName": "App.Listform.ListformField.IsIncomplete", + "En": "Missing Punch", + "Tr": "Eksik Okutma" + }, + { + "FieldName": "Note", + "CaptionName": "App.Listform.ListformField.Note", + "En": "Note", + "Tr": "Not" + }, + { + "FieldName": "PeriodKey", + "CaptionName": "App.Listform.ListformField.PeriodKey", + "En": "Period Key", + "Tr": "Dönem Anahtarı" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 9, + "TableName": null, + "DefaultFilter": "\"IsDeleted\" = 'false' AND \"EmployeeId\" = '@USERID'", + "SelectCommand": "Hr_T_Timesheet", + "SelectCommandType": 1, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": null, + "DeleteBeforeCommand": null, + "DeleteAfterCommand": null, + "DeleteFieldsDefaultValueDto": [], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": null, + "InsertFieldsDefaultValueDto": [], + "UpdateCommand": null, + "UpdateBeforeCommand": null, + "UpdateAfterCommand": null, + "UpdateFieldsDefaultValueDto": [], + "FormFieldsDefaultValueDto": [], + "WidgetsDto": [], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Hr.MyTimesheetDay", + "CultureName": "en", + "Name": "App.Hr.MyTimesheetDay", + "KeyFieldName": "Id", + "Title": "App.Hr.MyTimesheetDay.Title", + "SortMode": "single", + "PageSize": 10, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Hr.MyTimesheetDay.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "auto", + "WhiteSpace": "normal", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "none", + "AllowSelectAll": false, + "SelectAllMode": "allPages", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "popup", + "RefreshMode": "full", + "AllowUpdating": false, + "AllowDetail": false, + "AllowDeleting": false, + "AllowAllDeleting": false, + "AllowAdding": false, + "AllowDuplicate": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Hr.MyTimesheetDay.Title", + "ShowTitle": true, + "Width": 800, + "Height": 520, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [], + "PermissionDto": { + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "D": "App.Hr.MyTimesheetDay.Delete", + "E": "App.Hr.MyTimesheetDay.Export", + "I": "App.Hr.MyTimesheetDay.Import", + "N": "App.Hr.MyTimesheetDay.Note" + }, + "CommandColumnDto": [], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Hr.MyTimesheetDay", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": false, + "SubFormsListFormType": "Form", + "SubFormsDto": [], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "WorkDate", + "CaptionName": "App.Listform.ListformField.WorkDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "SourceDbType": 5, + "CultureName": "en", + "DataType": "date", + "SortIndex": 1, + "SortDirection": "desc", + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"date\",\"displayFormat\":\"dd.MM.yyyy\",\"dateSerializationFormat\":\"yyyy-MM-dd\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "DayType", + "CaptionName": "App.Listform.ListformField.DayType", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "[{\"key\":\"Work\",\"name\":\"App.Hr.Attendance.DayType.Work\"},{\"key\":\"WeeklyOff\",\"name\":\"App.Hr.Attendance.DayType.WeeklyOff\"},{\"key\":\"Holiday\",\"name\":\"App.Hr.Attendance.DayType.Holiday\"},{\"key\":\"Training\",\"name\":\"App.Hr.Attendance.DayType.Training\"},{\"key\":\"Leave\",\"name\":\"App.Hr.Attendance.DayType.Leave\"},{\"key\":\"Sick\",\"name\":\"App.Hr.Attendance.DayType.Sick\"},{\"key\":\"Absent\",\"name\":\"App.Hr.Attendance.DayType.Absent\"}]" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": "=", + "ConditionValue": "Absent", + "CssStyles": "background-color:#fee2e2 | color:#b91c1c | font-weight:600", + "CssClassName": null + }, + { + "RowType": "data", + "UseRow": false, + "Condition": "=", + "ConditionValue": "Sick", + "CssStyles": "background-color:#ede9fe | color:#6d28d9", + "CssClassName": null + }, + { + "RowType": "data", + "UseRow": false, + "Condition": "=", + "ConditionValue": "Leave", + "CssStyles": "background-color:#dbeafe | color:#1d4ed8", + "CssClassName": null + }, + { + "RowType": "data", + "UseRow": false, + "Condition": "anyof", + "ConditionValue": "Holiday,WeeklyOff", + "CssStyles": "color:#6b7280", + "CssClassName": null + }, + { + "RowType": "data", + "UseRow": false, + "Condition": "=", + "ConditionValue": "Training", + "CssStyles": "background-color:#ccfbf1 | color:#0f766e", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LeaveTypeId", + "CaptionName": "App.Listform.ListformField.LeaveTypeId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Hr_T_LeaveType WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "TrainingId", + "CaptionName": "App.Listform.ListformField.TrainingId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT t.Id AS [Key], s.Name + ' (' + FORMAT(t.StartDate, 'dd.MM.yyyy') + ')' AS [Name] FROM Hr_T_Training t INNER JOIN Hr_T_TrainingSubject s ON s.Id = t.TrainingSubjectId WHERE t.IsDeleted = 'false' AND t.TenantId = '@TENANTID' ORDER BY t.StartDate DESC" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "FirstIn", + "CaptionName": "App.Listform.ListformField.FirstIn", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 6, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"dateSerializationFormat\":\"yyyy-MM-ddTHH:mm:ss\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LastOut", + "CaptionName": "App.Listform.ListformField.LastOut", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"dateSerializationFormat\":\"yyyy-MM-ddTHH:mm:ss\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "NetHours", + "CaptionName": "App.Listform.ListformField.NetHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "BreakMinutes", + "CaptionName": "App.Listform.ListformField.BreakMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LateMinutes", + "CaptionName": "App.Listform.ListformField.LateMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EarlyLeaveMinutes", + "CaptionName": "App.Listform.ListformField.EarlyLeaveMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 11, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "OvertimeHours", + "CaptionName": "App.Listform.ListformField.OvertimeHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 12, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "IsAssumed", + "CaptionName": "App.Listform.ListformField.IsAssumed", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 13, + "SourceDbType": 3, + "CultureName": "en", + "DataType": "boolean", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxCheckBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "IsManual", + "CaptionName": "App.Listform.ListformField.IsManual", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 14, + "SourceDbType": 3, + "CultureName": "en", + "DataType": "boolean", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxCheckBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "IsIncomplete", + "CaptionName": "App.Listform.ListformField.IsIncomplete", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 15, + "SourceDbType": 3, + "CultureName": "en", + "DataType": "boolean", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxCheckBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Note", + "CaptionName": "App.Listform.ListformField.Note", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 16, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": "{\"showClearButton\":true,\"maxLength\":64}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.MyTimesheetDay", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodKey", + "CaptionName": "App.Listform.ListformField.PeriodKey", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 17, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.MyTimesheetDay.Create", + "R": "App.Hr.MyTimesheetDay", + "U": "App.Hr.MyTimesheetDay.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + } + ], + "IsDeletedField": true, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Hr.MyTimesheetDay", + "App.Hr.MyTimesheetDay.Title", + "App.Hr.MyTimesheetDay.Desc" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Hr.MyTimesheetDay", + "App.Hr.MyTimesheetDay.Create", + "App.Hr.MyTimesheetDay.Update", + "App.Hr.MyTimesheetDay.Delete", + "App.Hr.MyTimesheetDay.Export", + "App.Hr.MyTimesheetDay.Import", + "App.Hr.MyTimesheetDay.Note" + ], + "MenuCodes": [], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/host/wizard/RejectionReason.json b/configs/seeds/host/wizard/RejectionReason.json index 10a3f0d8..cdfed7aa 100644 --- a/configs/seeds/host/wizard/RejectionReason.json +++ b/configs/seeds/host/wizard/RejectionReason.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.RejectionReason", - "MenuOrder": 14, + "MenuOrder": 7, "MenuUrl": "/admin/list/App.Hr.RejectionReason", "MenuIcon": "FcCancel" }, diff --git a/configs/seeds/host/wizard/Shift.json b/configs/seeds/host/wizard/Shift.json index 594ccd51..a31c19ce 100644 --- a/configs/seeds/host/wizard/Shift.json +++ b/configs/seeds/host/wizard/Shift.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Definitions", "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.Shift", - "MenuOrder": 9, + "MenuOrder": 11, "MenuUrl": "/admin/list/App.Hr.Shift", "MenuIcon": "FcClock" }, @@ -68,6 +68,18 @@ "En": "Break (min)", "Tr": "Mola (dk)" }, + { + "FieldName": "LateToleranceMinutes", + "CaptionName": "App.Listform.ListformField.LateToleranceMinutes", + "En": "Late Tolerance (min)", + "Tr": "Geç Kalma Toleransı (dk)" + }, + { + "FieldName": "EarlyLeaveToleranceMinutes", + "CaptionName": "App.Listform.ListformField.EarlyLeaveToleranceMinutes", + "En": "Early Leave Tolerance (min)", + "Tr": "Erken Çıkış Toleransı (dk)" + }, { "FieldName": "WorkingHours", "CaptionName": "App.Listform.ListformField.WorkingHours", @@ -1365,15 +1377,15 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "WorkingHours", - "CaptionName": "App.Listform.ListformField.WorkingHours", + "FieldName": "LateToleranceMinutes", + "CaptionName": "App.Listform.ListformField.LateToleranceMinutes", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, "ListOrderNo": 6, - "SourceDbType": 7, + "SourceDbType": 11, "CultureName": "en", "DataType": "number", "SortIndex": 0, @@ -1464,6 +1476,258 @@ "EditGroupOrderNo": 1, "EditorType2": "dxNumberBox", "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0,\"max\":120,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Shift", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EarlyLeaveToleranceMinutes", + "CaptionName": "App.Listform.ListformField.EarlyLeaveToleranceMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Shift.Create", + "R": "App.Hr.Shift", + "U": "App.Hr.Shift.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "right", + "Format": null, + "EditOrderNo": 6, + "EditGroupOrderNo": 1, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0,\"max\":120,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Shift", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "WorkingHours", + "CaptionName": "App.Listform.ListformField.WorkingHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Shift.Create", + "R": "App.Hr.Shift", + "U": "App.Hr.Shift.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "right", + "Format": null, + "EditOrderNo": 7, + "EditGroupOrderNo": 1, + "EditorType2": "dxNumberBox", + "ColSpan": 1, "EditorOptions": "{\"min\":0,\"max\":24,\"showClearButton\":true,\"format\":{\"type\":\"fixedPoint\",\"precision\":2}}", "GridBoxOptions": null, "TagBoxOptions": null, @@ -1498,7 +1762,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 7, + "ListOrderNo": 9, "SourceDbType": 3, "CultureName": "en", "DataType": "boolean", @@ -1598,7 +1862,7 @@ }, "Alignment": null, "Format": null, - "EditOrderNo": 6, + "EditOrderNo": 8, "EditGroupOrderNo": 1, "EditorType2": "dxCheckBox", "ColSpan": 1, @@ -1636,7 +1900,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 8, + "ListOrderNo": 10, "SourceDbType": 3, "CultureName": "en", "DataType": "boolean", @@ -1736,7 +2000,7 @@ }, "Alignment": null, "Format": null, - "EditOrderNo": 7, + "EditOrderNo": 9, "EditGroupOrderNo": 1, "EditorType2": "dxCheckBox", "ColSpan": 1, @@ -1762,7 +2026,9 @@ "App.Listform.ListformField.ShiftName", "App.Listform.ListformField.BreakMinutes", "App.Listform.ListformField.WorkingHours", - "App.Listform.ListformField.IsNightShift" + "App.Listform.ListformField.IsNightShift", + "App.Listform.ListformField.LateToleranceMinutes", + "App.Listform.ListformField.EarlyLeaveToleranceMinutes" ], "PermissionGroupNames": [], "PermissionNames": [ diff --git a/configs/seeds/host/wizard/Timesheet.json b/configs/seeds/host/wizard/Timesheet.json new file mode 100644 index 00000000..03d284f0 --- /dev/null +++ b/configs/seeds/host/wizard/Timesheet.json @@ -0,0 +1,3622 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "Timesheet", + "WizardCode": "App.Hr.Timesheet", + "SeededAt": "2026-10-05T09:00:02+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Hr", + "ModuleId": "Hr", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Hr", + "Icon": "FcConferenceCall", + "En": null, + "Tr": null + } + ], + "MenuParentCode": "App.Hr.Attendance", + "MenuParentIcon": "FcAlarmClock", + "MenuCode": "App.Hr.Timesheet", + "MenuOrder": 2, + "MenuUrl": "/admin/list/App.Hr.Timesheet", + "MenuIcon": "FcPlanner" + }, + "Language": { + "MenuParentEn": "Timesheet & Attendance", + "MenuParentTr": "Puantaj ve Devam Takibi", + "PermissionGroupEn": "Human Resources", + "PermissionGroupTr": "İnsan Kaynakları", + "MenuEn": "Daily Timesheet", + "MenuTr": "Günlük Puantaj", + "TitleEn": "Daily Timesheet", + "TitleTr": "Günlük Puantaj", + "DescEn": "Daily Timesheet — one row per employee and day: first in, last out, net working time, break deduction, late arrival (min), early leave (min), overtime (hours) and day type (work, weekly rest, public holiday, on leave, sick leave, training, absent).\nWhere: Human Resources › Timesheet & Attendance › Daily Timesheet; also the tab of a row in Monthly Timesheet.\nCalculation: from the punches for employees with a PDKS card number (from their first PDKS punch on); others are tracked manually — a work day without a record counts as worked with the shift hours (marked Assumed). Break = shift break or the scanned break if longer; net = last out − first in − break. Late/early minutes are written in full once the shift tolerance (Settings › Human Resources › Timesheet when the shift has none) is exceeded. Overtime: all work on weekly rest days and public holidays, otherwise the part of the week (Mon–Sun) above the weekly limit (45 h, Labour Law art. 41). Day type priority: sick leave (Health Cards, calendar days) > unpaid leave (unpaid leave types, calendar days) > public holiday > weekly rest > paid leave (a holiday within paid leave is not a leave day, Labour Law art. 56 — the same rule as the leave day count) > work with punches > training (participant marked Attended) > work / absent. The leave type of the day is shown.\nCorrection: editing a day (e.g. setting a manually tracked employee's day to Absent) marks it Manual — recalculation keeps its inputs; delete the row to return it to automatic. Days of a closed period cannot be changed.\nAutomation: punches, leave requests, sick leaves, trainings and work calendar changes recalculate the affected days immediately (old dates of a moved record included); a nightly job builds the days without punches.", + "DescTr": "Günlük Puantaj — çalışan × gün satırı: ilk giriş, son çıkış, net çalışma süresi, mola düşümü, geç kalma (dk), erken çıkış (dk), fazla mesai (saat) ve gün tipi (çalışma, hafta tatili, resmî tatil, izinli, raporlu, eğitimde, devamsız).\nNerede: İnsan Kaynakları › Puantaj ve Devam Takibi › Günlük Puantaj; ayrıca Aylık Puantaj satırının sekmesi.\nHesap: PDKS kart numarası olan çalışanda (ilk PDKS okutmasından itibaren) okutmalardan; diğerleri elle takip edilir — kayıt girilmeyen iş günü vardiya saatleriyle çalışılmış sayılır (Varsayılan işaretlenir). Mola = vardiya molası, okutulan mola daha uzunsa o; net = son çıkış − ilk giriş − mola. Geç/erken dakika vardiya toleransı (vardiyada yoksa Ayarlar › İnsan Kaynakları › Puantaj) aşılınca tamamıyla yazılır. Fazla mesai: hafta tatili ve resmî tatilde çalışmanın tamamı, diğer günlerde haftanın (Pzt–Paz) haftalık sınırı (45 saat, 4857 md. 41) aşan kısmı. Gün tipi önceliği: raporlu (Sağlık Kartı, takvim günü) > ücretsiz izin (ücretsiz izin türleri, takvim günü) > resmî tatil > hafta tatili > ücretli izin (ücretli izne denk gelen tatil izin günü değildir, 4857 md. 56 — izin gün sayısıyla aynı kural) > okutmalı çalışma > eğitim (katılımcı Katıldı) > çalışma / devamsız. Günün izin türü de görünür.\nDüzeltme: gün düzenlenince (ör. elle takip edilen çalışanın gelmediği gün Devamsız yapılınca) Elle işaretlenir, yeniden hesap girdilerini korur; otomatiğe dönmek için satır silinir. Kapalı dönemin günü değiştirilemez.\nOtomasyon: hareket, izin, rapor, eğitim ve çalışma takvimi kaydı ilgili günleri (tarihi değişen kaydın eski günleri dahil) hemen yeniden hesaplar; okutmasız günleri gece işi kurar.", + "Texts": [ + { + "Key": "App.Hr.Attendance.Group.Day", + "En": "Timesheet Day", + "Tr": "Puantaj Günü" + }, + { + "Key": "App.Hr.Attendance.DayType.Work", + "En": "Work Day", + "Tr": "Çalışma" + }, + { + "Key": "App.Hr.Attendance.DayType.WeeklyOff", + "En": "Weekly Rest Day", + "Tr": "Hafta Tatili" + }, + { + "Key": "App.Hr.Attendance.DayType.Holiday", + "En": "Public Holiday", + "Tr": "Resmî Tatil" + }, + { + "Key": "App.Hr.Attendance.DayType.Training", + "En": "Training", + "Tr": "Eğitimde" + }, + { + "Key": "App.Hr.Attendance.DayType.Leave", + "En": "On Leave", + "Tr": "İzinli" + }, + { + "Key": "App.Hr.Attendance.DayType.Sick", + "En": "Sick Leave", + "Tr": "Raporlu" + }, + { + "Key": "App.Hr.Attendance.DayType.Absent", + "En": "Absent", + "Tr": "Devamsız" + }, + { + "Key": "App.Hr.Attendance.Widget.Absent", + "En": "Absent days (this month)", + "Tr": "Devamsız gün (bu ay)" + }, + { + "Key": "App.Hr.Attendance.Widget.Late", + "En": "Late days (this month)", + "Tr": "Geç kalınan gün (bu ay)" + }, + { + "Key": "App.Hr.Attendance.Widget.Overtime", + "En": "Overtime hours (this month)", + "Tr": "Fazla mesai saati (bu ay)" + }, + { + "Key": "App.Hr.Attendance.Widget.Incomplete", + "En": "Missing punch (this month)", + "Tr": "Eksik okutma (bu ay)" + } + ] + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "EmployeeId", + "CaptionName": "App.Listform.ListformField.EmployeeId", + "En": "Employee", + "Tr": "Çalışan" + }, + { + "FieldName": "WorkDate", + "CaptionName": "App.Listform.ListformField.WorkDate", + "En": "Work Date", + "Tr": "İş Günü" + }, + { + "FieldName": "DayType", + "CaptionName": "App.Listform.ListformField.DayType", + "En": "Day Type", + "Tr": "Gün Tipi" + }, + { + "FieldName": "LeaveTypeId", + "CaptionName": "App.Listform.ListformField.LeaveTypeId", + "En": "Leave Type", + "Tr": "İzin Türü" + }, + { + "FieldName": "TrainingId", + "CaptionName": "App.Listform.ListformField.TrainingId", + "En": "Training", + "Tr": "Eğitim" + }, + { + "FieldName": "ShiftId", + "CaptionName": "App.Listform.ListformField.ShiftId", + "En": "Shift", + "Tr": "Vardiya" + }, + { + "FieldName": "FirstIn", + "CaptionName": "App.Listform.ListformField.FirstIn", + "En": "First In", + "Tr": "İlk Giriş" + }, + { + "FieldName": "LastOut", + "CaptionName": "App.Listform.ListformField.LastOut", + "En": "Last Out", + "Tr": "Son Çıkış" + }, + { + "FieldName": "NetHours", + "CaptionName": "App.Listform.ListformField.NetHours", + "En": "Net Hours", + "Tr": "Net Çalışma (saat)" + }, + { + "FieldName": "BreakMinutes", + "CaptionName": "App.Listform.ListformField.BreakMinutes", + "En": "Break Deduction (min)", + "Tr": "Mola Düşümü (dk)" + }, + { + "FieldName": "LateMinutes", + "CaptionName": "App.Listform.ListformField.LateMinutes", + "En": "Late (min)", + "Tr": "Geç Kalma (dk)" + }, + { + "FieldName": "EarlyLeaveMinutes", + "CaptionName": "App.Listform.ListformField.EarlyLeaveMinutes", + "En": "Early Leave (min)", + "Tr": "Erken Çıkış (dk)" + }, + { + "FieldName": "OvertimeHours", + "CaptionName": "App.Listform.ListformField.OvertimeHours", + "En": "Overtime (h)", + "Tr": "Fazla Mesai (saat)" + }, + { + "FieldName": "IsAssumed", + "CaptionName": "App.Listform.ListformField.IsAssumed", + "En": "Assumed", + "Tr": "Varsayılan" + }, + { + "FieldName": "IsManual", + "CaptionName": "App.Listform.ListformField.IsManual", + "En": "Manual", + "Tr": "Elle" + }, + { + "FieldName": "IsIncomplete", + "CaptionName": "App.Listform.ListformField.IsIncomplete", + "En": "Missing Punch", + "Tr": "Eksik Okutma" + }, + { + "FieldName": "Note", + "CaptionName": "App.Listform.ListformField.Note", + "En": "Note", + "Tr": "Not" + }, + { + "FieldName": "PeriodYear", + "CaptionName": "App.Listform.ListformField.PeriodYear", + "En": "Year", + "Tr": "Yıl" + }, + { + "FieldName": "PeriodMonth", + "CaptionName": "App.Listform.ListformField.PeriodMonth", + "En": "Month", + "Tr": "Ay" + }, + { + "FieldName": "PeriodKey", + "CaptionName": "App.Listform.ListformField.PeriodKey", + "En": "Period Key", + "Tr": "Dönem Anahtarı" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 9, + "TableName": null, + "DefaultFilter": "\"IsDeleted\" = 'false'", + "SelectCommand": "Hr_T_Timesheet", + "SelectCommandType": 1, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": "UPDATE \"Hr_T_Timesheet\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", + "DeleteBeforeCommand": "IF EXISTS (SELECT 1 FROM Hr_T_Timesheet t INNER JOIN Hr_T_TimesheetPeriod p ON p.IsDeleted = 0 AND p.[Status] = N'Closed' AND p.PeriodYear = t.PeriodYear AND p.PeriodMonth = t.PeriodMonth AND (p.TenantId = t.TenantId OR (p.TenantId IS NULL AND t.TenantId IS NULL)) WHERE t.Id IN @Id) THROW 51201, N'Kapalı puantaj dönemindeki gün değiştirilemez ya da silinemez. Dönemi İnsan Kaynakları açabilir.', 1", + "DeleteAfterCommand": "DECLARE @_k TABLE (T uniqueidentifier NULL, E uniqueidentifier, D date); INSERT INTO @_k SELECT TenantId, EmployeeId, WorkDate FROM Hr_T_Timesheet WHERE Id IN @Id; DECLARE @_t uniqueidentifier, @_e uniqueidentifier, @_d date; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_t = T, @_e = E, @_d = D FROM @_k; DELETE FROM @_k WHERE E = @_e AND D = @_d; EXEC dbo.Hr_S_TimesheetCalculate @_t, @_e, @_d, @_d, @DeleterId; END", + "DeleteFieldsDefaultValueDto": [ + { + "FieldName": "DeleterId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "Id", + "FieldDbType": 9, + "Value": "@ID", + "CustomValueType": 2, + "SqlQuery": null + } + ], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": null, + "InsertFieldsDefaultValueDto": [ + { + "FieldName": "CreationTime", + "FieldDbType": 6, + "Value": "@NOW", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "CreatorId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "IsDeleted", + "FieldDbType": 3, + "Value": "false", + "CustomValueType": 1, + "SqlQuery": null + }, + { + "FieldName": "Id", + "FieldDbType": 9, + "Value": "@NEWID", + "CustomValueType": 2, + "SqlQuery": null + } + ], + "UpdateCommand": null, + "UpdateBeforeCommand": "IF EXISTS (SELECT 1 FROM Hr_T_Timesheet t INNER JOIN Hr_T_TimesheetPeriod p ON p.IsDeleted = 0 AND p.[Status] = N'Closed' AND p.PeriodYear = t.PeriodYear AND p.PeriodMonth = t.PeriodMonth AND (p.TenantId = t.TenantId OR (p.TenantId IS NULL AND t.TenantId IS NULL)) WHERE t.Id IN @Id) THROW 51201, N'Kapalı puantaj dönemindeki gün değiştirilemez ya da silinemez. Dönemi İnsan Kaynakları açabilir.', 1", + "UpdateAfterCommand": "UPDATE Hr_T_Timesheet SET IsManual = 1, IsAssumed = 0 WHERE Id IN @Id; DECLARE @_k TABLE (T uniqueidentifier NULL, E uniqueidentifier, D date); INSERT INTO @_k SELECT TenantId, EmployeeId, WorkDate FROM Hr_T_Timesheet WHERE Id IN @Id; DECLARE @_t uniqueidentifier, @_e uniqueidentifier, @_d date; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_t = T, @_e = E, @_d = D FROM @_k; DELETE FROM @_k WHERE E = @_e AND D = @_d; EXEC dbo.Hr_S_TimesheetCalculate @_t, @_e, @_d, @_d, @LastModifierId; END", + "UpdateFieldsDefaultValueDto": [ + { + "FieldName": "LastModificationTime", + "FieldDbType": 6, + "Value": "@NOW", + "CustomValueType": 2, + "SqlQuery": "" + }, + { + "FieldName": "LastModifierId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": "" + } + ], + "FormFieldsDefaultValueDto": [], + "WidgetsDto": [ + { + "ColGap": 3, + "ColSpan": 3, + "SqlQuery": "SELECT 'App.Hr.Attendance.Widget.Absent' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'red' AS \"Color\", 'App.Hr.Timesheet' AS \"SubTitle\", 'FaUserTimes' AS \"Icon\" FROM \"Hr_T_Timesheet\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false' AND \"PeriodYear\" = YEAR(GETDATE()) AND \"PeriodMonth\" = MONTH(GETDATE()) AND \"DayType\" = 'Absent' UNION ALL SELECT 'App.Hr.Attendance.Widget.Late' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'orange' AS \"Color\", 'App.Hr.Timesheet' AS \"SubTitle\", 'FaClock' AS \"Icon\" FROM \"Hr_T_Timesheet\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false' AND \"PeriodYear\" = YEAR(GETDATE()) AND \"PeriodMonth\" = MONTH(GETDATE()) AND \"LateMinutes\" > 0 UNION ALL SELECT 'App.Hr.Attendance.Widget.Overtime' AS \"Title\", CAST(COALESCE(SUM(\"OvertimeHours\"), 0) AS VARCHAR(32)) AS \"Value\", 'purple' AS \"Color\", 'App.Hr.Timesheet' AS \"SubTitle\", 'FaBusinessTime' AS \"Icon\" FROM \"Hr_T_Timesheet\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false' AND \"PeriodYear\" = YEAR(GETDATE()) AND \"PeriodMonth\" = MONTH(GETDATE()) UNION ALL SELECT 'App.Hr.Attendance.Widget.Incomplete' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'yellow' AS \"Color\", 'App.Hr.Timesheet' AS \"SubTitle\", 'FaExclamationTriangle' AS \"Icon\" FROM \"Hr_T_Timesheet\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false' AND \"PeriodYear\" = YEAR(GETDATE()) AND \"PeriodMonth\" = MONTH(GETDATE()) AND \"IsIncomplete\" = 'true'", + "Title": "Title", + "Value": "Value", + "ValueClassName": "text-3xl", + "Color": "Color", + "Icon": "Icon", + "SubTitle": "SubTitle", + "OnClick": null, + "ClassName": "mb-3", + "IsActive": true + } + ], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Hr.Timesheet", + "CultureName": "en", + "Name": "App.Hr.Timesheet", + "KeyFieldName": "Id", + "Title": "App.Hr.Timesheet.Title", + "SortMode": "single", + "PageSize": 10, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Hr.Timesheet.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "auto", + "WhiteSpace": "normal", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "none", + "AllowSelectAll": false, + "SelectAllMode": "allPages", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "popup", + "RefreshMode": "full", + "AllowUpdating": true, + "AllowDetail": false, + "AllowDeleting": true, + "AllowAllDeleting": false, + "AllowAdding": false, + "AllowDuplicate": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Hr.Timesheet.Title", + "ShowTitle": true, + "Width": 800, + "Height": 560, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [ + { + "Order": 1, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Day", + "ColCount": 2, + "ColSpan": 2 + } + ], + "PermissionDto": { + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "D": "App.Hr.Timesheet.Delete", + "E": "App.Hr.Timesheet.Export", + "I": "App.Hr.Timesheet.Import", + "N": "App.Hr.Timesheet.Note" + }, + "CommandColumnDto": [], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Hr.Timesheet", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": true, + "SubFormsListFormType": "Form", + "SubFormsDto": [], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EmployeeId", + "CaptionName": "App.Listform.ListformField.EmployeeId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name + ' ' + Surname AS [Name] FROM AbpUsers WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name, Surname" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "row", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true,\"readOnly\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "WorkDate", + "CaptionName": "App.Listform.ListformField.WorkDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "SourceDbType": 5, + "CultureName": "en", + "DataType": "date", + "SortIndex": 1, + "SortDirection": "desc", + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 1, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"date\",\"displayFormat\":\"dd.MM.yyyy\",\"dateSerializationFormat\":\"yyyy-MM-dd\",\"useMaskBehavior\":true,\"showClearButton\":true,\"readOnly\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "DayType", + "CaptionName": "App.Listform.ListformField.DayType", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "[{\"key\":\"Work\",\"name\":\"App.Hr.Attendance.DayType.Work\"},{\"key\":\"WeeklyOff\",\"name\":\"App.Hr.Attendance.DayType.WeeklyOff\"},{\"key\":\"Holiday\",\"name\":\"App.Hr.Attendance.DayType.Holiday\"},{\"key\":\"Training\",\"name\":\"App.Hr.Attendance.DayType.Training\"},{\"key\":\"Leave\",\"name\":\"App.Hr.Attendance.DayType.Leave\"},{\"key\":\"Sick\",\"name\":\"App.Hr.Attendance.DayType.Sick\"},{\"key\":\"Absent\",\"name\":\"App.Hr.Attendance.DayType.Absent\"}]" + }, + "ValidationRuleDto": [ + { + "Type": "required", + "Message": null, + "IgnoreEmptyValue": false, + "Reevaluate": true, + "ComparisonType": "", + "Pattern": "", + "Max": null, + "Min": null, + "Trim": true + } + ], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": "=", + "ConditionValue": "Absent", + "CssStyles": "background-color:#fee2e2 | color:#b91c1c | font-weight:600", + "CssClassName": null + }, + { + "RowType": "data", + "UseRow": false, + "Condition": "=", + "ConditionValue": "Sick", + "CssStyles": "background-color:#ede9fe | color:#6d28d9", + "CssClassName": null + }, + { + "RowType": "data", + "UseRow": false, + "Condition": "=", + "ConditionValue": "Leave", + "CssStyles": "background-color:#dbeafe | color:#1d4ed8", + "CssClassName": null + }, + { + "RowType": "data", + "UseRow": false, + "Condition": "anyof", + "ConditionValue": "Holiday,WeeklyOff", + "CssStyles": "color:#6b7280", + "CssClassName": null + }, + { + "RowType": "data", + "UseRow": false, + "Condition": "=", + "ConditionValue": "Training", + "CssStyles": "background-color:#ccfbf1 | color:#0f766e", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "column", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LeaveTypeId", + "CaptionName": "App.Listform.ListformField.LeaveTypeId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Hr_T_LeaveType WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "TrainingId", + "CaptionName": "App.Listform.ListformField.TrainingId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 6, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT t.Id AS [Key], s.Name + ' (' + FORMAT(t.StartDate, 'dd.MM.yyyy') + ')' AS [Name] FROM Hr_T_Training t INNER JOIN Hr_T_TrainingSubject s ON s.Id = t.TrainingSubjectId WHERE t.IsDeleted = 'false' AND t.TenantId = '@TENANTID' ORDER BY t.StartDate DESC" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "ShiftId", + "CaptionName": "App.Listform.ListformField.ShiftId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name + ' (' + COALESCE(StartTime, '') + '-' + COALESCE(EndTime, '') + ')' AS [Name] FROM Hr_T_Shift WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "FirstIn", + "CaptionName": "App.Listform.ListformField.FirstIn", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 5, + "EditGroupOrderNo": 1, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"dateSerializationFormat\":\"yyyy-MM-ddTHH:mm:ss\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LastOut", + "CaptionName": "App.Listform.ListformField.LastOut", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 6, + "EditGroupOrderNo": 1, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"dateSerializationFormat\":\"yyyy-MM-ddTHH:mm:ss\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "NetHours", + "CaptionName": "App.Listform.ListformField.NetHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "BreakMinutes", + "CaptionName": "App.Listform.ListformField.BreakMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 11, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 7, + "EditGroupOrderNo": 1, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LateMinutes", + "CaptionName": "App.Listform.ListformField.LateMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 12, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": ">", + "ConditionValue": "0", + "CssStyles": "color:#c2410c | font-weight:600", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EarlyLeaveMinutes", + "CaptionName": "App.Listform.ListformField.EarlyLeaveMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 13, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": ">", + "ConditionValue": "0", + "CssStyles": "color:#c2410c | font-weight:600", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "OvertimeHours", + "CaptionName": "App.Listform.ListformField.OvertimeHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 14, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": ">", + "ConditionValue": "0", + "CssStyles": "color:#6d28d9 | font-weight:600", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "IsAssumed", + "CaptionName": "App.Listform.ListformField.IsAssumed", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 15, + "SourceDbType": 3, + "CultureName": "en", + "DataType": "boolean", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxCheckBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "IsManual", + "CaptionName": "App.Listform.ListformField.IsManual", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 16, + "SourceDbType": 3, + "CultureName": "en", + "DataType": "boolean", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxCheckBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "IsIncomplete", + "CaptionName": "App.Listform.ListformField.IsIncomplete", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 17, + "SourceDbType": 3, + "CultureName": "en", + "DataType": "boolean", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxCheckBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Note", + "CaptionName": "App.Listform.ListformField.Note", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 18, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 8, + "EditGroupOrderNo": 1, + "EditorType2": "dxTextArea", + "ColSpan": 2, + "EditorOptions": "{\"autoResizeEnabled\":true,\"minHeight\":80}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodYear", + "CaptionName": "App.Listform.ListformField.PeriodYear", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 19, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "column", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodMonth", + "CaptionName": "App.Listform.ListformField.PeriodMonth", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 20, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "column", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.Timesheet", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodKey", + "CaptionName": "App.Listform.ListformField.PeriodKey", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 21, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.Timesheet.Create", + "R": "App.Hr.Timesheet", + "U": "App.Hr.Timesheet.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + } + ], + "IsDeletedField": true, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Hr.Timesheet", + "App.Hr.Timesheet.Title", + "App.Hr.Timesheet.Desc", + "App.Hr.Attendance.Group.Day", + "App.Hr.Attendance.DayType.Work", + "App.Hr.Attendance.DayType.WeeklyOff", + "App.Hr.Attendance.DayType.Holiday", + "App.Hr.Attendance.DayType.Leave", + "App.Hr.Attendance.DayType.Sick", + "App.Hr.Attendance.DayType.Absent", + "App.Hr.Attendance.Widget.Absent", + "App.Hr.Attendance.Widget.Late", + "App.Hr.Attendance.Widget.Overtime", + "App.Hr.Attendance.Widget.Incomplete", + "App.Listform.ListformField.FirstIn", + "App.Listform.ListformField.LastOut", + "App.Listform.ListformField.NetHours", + "App.Listform.ListformField.LateMinutes", + "App.Listform.ListformField.EarlyLeaveMinutes", + "App.Listform.ListformField.OvertimeHours", + "App.Listform.ListformField.IsAssumed", + "App.Listform.ListformField.IsManual", + "App.Listform.ListformField.IsIncomplete", + "App.Listform.ListformField.PeriodKey" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Hr.Timesheet", + "App.Hr.Timesheet.Create", + "App.Hr.Timesheet.Update", + "App.Hr.Timesheet.Delete", + "App.Hr.Timesheet.Export", + "App.Hr.Timesheet.Import", + "App.Hr.Timesheet.Note" + ], + "MenuCodes": [ + "App.Hr.Timesheet" + ], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/host/wizard/TimesheetMonthly.json b/configs/seeds/host/wizard/TimesheetMonthly.json new file mode 100644 index 00000000..d9a88ee9 --- /dev/null +++ b/configs/seeds/host/wizard/TimesheetMonthly.json @@ -0,0 +1,4306 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "TimesheetMonthly", + "WizardCode": "App.Hr.TimesheetMonthly", + "SeededAt": "2026-10-05T09:00:03+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Hr", + "ModuleId": "Hr", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Hr", + "Icon": "FcConferenceCall", + "En": null, + "Tr": null + } + ], + "MenuParentCode": "App.Hr.Attendance", + "MenuParentIcon": "FcAlarmClock", + "MenuCode": "App.Hr.TimesheetMonthly", + "MenuOrder": 3, + "MenuUrl": "/admin/list/App.Hr.TimesheetMonthly", + "MenuIcon": "FcDataSheet" + }, + "Language": { + "MenuParentEn": "Timesheet & Attendance", + "MenuParentTr": "Puantaj ve Devam Takibi", + "PermissionGroupEn": "Human Resources", + "PermissionGroupTr": "İnsan Kaynakları", + "MenuEn": "Monthly Timesheet", + "MenuTr": "Aylık Puantaj", + "TitleEn": "Monthly Timesheet", + "TitleTr": "Aylık Puantaj", + "DescEn": "Monthly Timesheet — per-employee monthly totals of the Daily Timesheet (read only).\nWhere: Human Resources › Timesheet & Attendance › Monthly Timesheet; the row detail shows the month's days. The same figures are on the Timesheet tab of the user card and, for the employee, in the My Timesheet widget on Intranet › Dashboard.\nColumns: work days, net hours, late minutes/days, early leave minutes, overtime hours, overtime pay hours (overtime × rate; 1.5 = 50% premium, Labour Law art. 41), weekly rest / public holiday / leave (of which unpaid — missing days for payroll) / training / sick / absent days, overtime cumulated since January.\nAnnual limit: rows whose yearly overtime exceeds the limit (270 h) are highlighted; the rate and the limit are set in Settings › Human Resources › Timesheet.\nPeriod: the status comes from Timesheet Periods; a closed month is locked.", + "DescTr": "Aylık Puantaj — Günlük Puantaj'ın personel bazlı aylık toplamı (salt okunur).\nNerede: İnsan Kaynakları › Puantaj ve Devam Takibi › Aylık Puantaj; satır detayında ayın günleri görünür. Aynı rakamlar kullanıcı kartının Puantaj sekmesinde, çalışan için Intranet › Dashboard'daki Puantajım widget'ındadır.\nKolonlar: çalışma günü, net saat, geç kalma dk/gün, erken çıkış dk, fazla mesai saati, zamlı fazla mesai (fazla mesai × çarpan; 1,5 = %50 zam, 4857 md. 41), hafta tatili / resmî tatil / izinli (ücretsiz kısmı ayrıca — bordroda eksik gün) / eğitim / raporlu / devamsız gün, ocaktan bu yana fazla mesai.\nYıllık sınır: yıllık fazla mesaisi sınırı (270 saat) aşan satır renklenir; çarpan ve sınır Ayarlar › İnsan Kaynakları › Puantaj'dadır.\nDönem: durum Puantaj Dönemleri'nden gelir; kapalı ay kilitlidir.", + "Texts": [ + { + "Key": "App.Hr.Attendance.PeriodStatus.Open", + "En": "Open", + "Tr": "Açık" + }, + { + "Key": "App.Hr.Attendance.PeriodStatus.Closed", + "En": "Closed", + "Tr": "Kapalı" + }, + { + "Key": "App.Hr.Attendance.Widget.Employees", + "En": "Employees (this month)", + "Tr": "Çalışan (bu ay)" + }, + { + "Key": "App.Hr.Attendance.Widget.OverLimit", + "En": "Over annual overtime limit", + "Tr": "Yıllık fazla mesai sınırını aşan" + }, + { + "Key": "App.Hr.Attendance.Group.Period", + "En": "Employee & Period", + "Tr": "Çalışan ve Dönem" + }, + { + "Key": "App.Hr.Attendance.Group.Time", + "En": "Working Time", + "Tr": "Çalışma Süreleri" + }, + { + "Key": "App.Hr.Attendance.Group.Overtime", + "En": "Overtime", + "Tr": "Fazla Mesai" + }, + { + "Key": "App.Hr.Attendance.Group.Days", + "En": "Day Distribution", + "Tr": "Gün Dağılımı" + } + ] + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "EmployeeId", + "CaptionName": "App.Listform.ListformField.EmployeeId", + "En": "Employee", + "Tr": "Çalışan" + }, + { + "FieldName": "DepartmentId", + "CaptionName": "App.Listform.ListformField.DepartmentId", + "En": "Department", + "Tr": "Departman" + }, + { + "FieldName": "JobPositionId", + "CaptionName": "App.Listform.ListformField.JobPositionId", + "En": "Position", + "Tr": "Pozisyon" + }, + { + "FieldName": "PeriodYear", + "CaptionName": "App.Listform.ListformField.PeriodYear", + "En": "Year", + "Tr": "Yıl" + }, + { + "FieldName": "PeriodMonth", + "CaptionName": "App.Listform.ListformField.PeriodMonth", + "En": "Month", + "Tr": "Ay" + }, + { + "FieldName": "PeriodStatus", + "CaptionName": "App.Listform.ListformField.PeriodStatus", + "En": "Period Status", + "Tr": "Dönem Durumu" + }, + { + "FieldName": "WorkDays", + "CaptionName": "App.Listform.ListformField.WorkDays", + "En": "Work Days", + "Tr": "Çalışma Günü" + }, + { + "FieldName": "NetHours", + "CaptionName": "App.Listform.ListformField.NetHours", + "En": "Net Hours", + "Tr": "Net Çalışma (saat)" + }, + { + "FieldName": "LateMinutes", + "CaptionName": "App.Listform.ListformField.LateMinutes", + "En": "Late (min)", + "Tr": "Geç Kalma (dk)" + }, + { + "FieldName": "LateDays", + "CaptionName": "App.Listform.ListformField.LateDays", + "En": "Late Days", + "Tr": "Geç Kalınan Gün" + }, + { + "FieldName": "EarlyLeaveMinutes", + "CaptionName": "App.Listform.ListformField.EarlyLeaveMinutes", + "En": "Early Leave (min)", + "Tr": "Erken Çıkış (dk)" + }, + { + "FieldName": "EarlyLeaveDays", + "CaptionName": "App.Listform.ListformField.EarlyLeaveDays", + "En": "Early Leave Days", + "Tr": "Erken Çıkılan Gün" + }, + { + "FieldName": "OvertimeHours", + "CaptionName": "App.Listform.ListformField.OvertimeHours", + "En": "Overtime (h)", + "Tr": "Fazla Mesai (saat)" + }, + { + "FieldName": "OvertimePaidHours", + "CaptionName": "App.Listform.ListformField.OvertimePaidHours", + "En": "Overtime Pay Hours", + "Tr": "Zamlı Fazla Mesai (saat)" + }, + { + "FieldName": "WeeklyOffDays", + "CaptionName": "App.Listform.ListformField.WeeklyOffDays", + "En": "Weekly Rest Days", + "Tr": "Hafta Tatili" + }, + { + "FieldName": "HolidayDays", + "CaptionName": "App.Listform.ListformField.HolidayDays", + "En": "Public Holidays", + "Tr": "Resmî Tatil" + }, + { + "FieldName": "LeaveDays", + "CaptionName": "App.Listform.ListformField.LeaveDays", + "En": "Leave Days", + "Tr": "İzinli Gün" + }, + { + "FieldName": "UnpaidLeaveDays", + "CaptionName": "App.Listform.ListformField.UnpaidLeaveDays", + "En": "Unpaid Leave Days", + "Tr": "Ücretsiz İzinli Gün" + }, + { + "FieldName": "TrainingDays", + "CaptionName": "App.Listform.ListformField.TrainingDays", + "En": "Training Days", + "Tr": "Eğitim Günü" + }, + { + "FieldName": "SickDays", + "CaptionName": "App.Listform.ListformField.SickDays", + "En": "Sick Leave Days", + "Tr": "Raporlu Gün" + }, + { + "FieldName": "AbsentDays", + "CaptionName": "App.Listform.ListformField.AbsentDays", + "En": "Absent Days", + "Tr": "Devamsız Gün" + }, + { + "FieldName": "IncompleteDays", + "CaptionName": "App.Listform.ListformField.IncompleteDays", + "En": "Missing Punch Days", + "Tr": "Eksik Okutmalı Gün" + }, + { + "FieldName": "AssumedDays", + "CaptionName": "App.Listform.ListformField.AssumedDays", + "En": "Assumed Days", + "Tr": "Varsayılan Gün" + }, + { + "FieldName": "YearOvertimeHours", + "CaptionName": "App.Listform.ListformField.YearOvertimeHours", + "En": "Overtime This Year (h)", + "Tr": "Yıllık Fazla Mesai (saat)" + }, + { + "FieldName": "AnnualOvertimeLimit", + "CaptionName": "App.Listform.ListformField.AnnualOvertimeLimit", + "En": "Annual Overtime Limit (h)", + "Tr": "Yıllık Fazla Mesai Sınırı" + }, + { + "FieldName": "IsOverAnnualLimit", + "CaptionName": "App.Listform.ListformField.IsOverAnnualLimit", + "En": "Over Annual Limit", + "Tr": "Yıllık Sınır Aşıldı" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 16, + "TableName": null, + "DefaultFilter": null, + "SelectCommand": "Hr_V_TimesheetMonthly", + "SelectCommandType": 1, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": null, + "DeleteBeforeCommand": null, + "DeleteAfterCommand": null, + "DeleteFieldsDefaultValueDto": [], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": null, + "InsertFieldsDefaultValueDto": [], + "UpdateCommand": null, + "UpdateBeforeCommand": null, + "UpdateAfterCommand": null, + "UpdateFieldsDefaultValueDto": [], + "FormFieldsDefaultValueDto": [], + "WidgetsDto": [ + { + "ColGap": 3, + "ColSpan": 3, + "SqlQuery": "SELECT 'App.Hr.Attendance.Widget.Employees' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Hr.TimesheetMonthly' AS \"SubTitle\", 'FaUsers' AS \"Icon\" FROM \"Hr_V_TimesheetMonthly\" WHERE \"TenantId\" = '@TENANTID' AND \"PeriodYear\" = YEAR(GETDATE()) AND \"PeriodMonth\" = MONTH(GETDATE()) UNION ALL SELECT 'App.Hr.Attendance.Widget.Overtime' AS \"Title\", CAST(COALESCE(SUM(\"OvertimeHours\"), 0) AS VARCHAR(32)) AS \"Value\", 'purple' AS \"Color\", 'App.Hr.TimesheetMonthly' AS \"SubTitle\", 'FaBusinessTime' AS \"Icon\" FROM \"Hr_V_TimesheetMonthly\" WHERE \"TenantId\" = '@TENANTID' AND \"PeriodYear\" = YEAR(GETDATE()) AND \"PeriodMonth\" = MONTH(GETDATE()) UNION ALL SELECT 'App.Hr.Attendance.Widget.Absent' AS \"Title\", CAST(COALESCE(SUM(\"AbsentDays\"), 0) AS VARCHAR(32)) AS \"Value\", 'red' AS \"Color\", 'App.Hr.TimesheetMonthly' AS \"SubTitle\", 'FaUserTimes' AS \"Icon\" FROM \"Hr_V_TimesheetMonthly\" WHERE \"TenantId\" = '@TENANTID' AND \"PeriodYear\" = YEAR(GETDATE()) AND \"PeriodMonth\" = MONTH(GETDATE()) UNION ALL SELECT 'App.Hr.Attendance.Widget.OverLimit' AS \"Title\", CAST(COUNT(DISTINCT \"EmployeeId\") AS VARCHAR(32)) AS \"Value\", 'orange' AS \"Color\", 'App.Hr.TimesheetMonthly' AS \"SubTitle\", 'FaExclamationTriangle' AS \"Icon\" FROM \"Hr_V_TimesheetMonthly\" WHERE \"TenantId\" = '@TENANTID' AND \"PeriodYear\" = YEAR(GETDATE()) AND \"IsOverAnnualLimit\" = 1", + "Title": "Title", + "Value": "Value", + "ValueClassName": "text-3xl", + "Color": "Color", + "Icon": "Icon", + "SubTitle": "SubTitle", + "OnClick": null, + "ClassName": "mb-3", + "IsActive": true + } + ], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Hr.TimesheetMonthly", + "CultureName": "en", + "Name": "App.Hr.TimesheetMonthly", + "KeyFieldName": "Id", + "Title": "App.Hr.TimesheetMonthly.Title", + "SortMode": "single", + "PageSize": 10, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Hr.TimesheetMonthly.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "auto", + "WhiteSpace": "normal", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "none", + "AllowSelectAll": false, + "SelectAllMode": "allPages", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "popup", + "RefreshMode": "full", + "AllowUpdating": false, + "AllowDetail": true, + "AllowDeleting": false, + "AllowAllDeleting": false, + "AllowAdding": false, + "AllowDuplicate": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Hr.TimesheetMonthly.Title", + "ShowTitle": true, + "Width": 1200, + "Height": 720, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [ + { + "Order": 1, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Period", + "ColCount": 4, + "ColSpan": 4 + }, + { + "Order": 2, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Time", + "ColCount": 4, + "ColSpan": 4 + }, + { + "Order": 3, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Overtime", + "ColCount": 4, + "ColSpan": 4 + }, + { + "Order": 4, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Days", + "ColCount": 4, + "ColSpan": 4 + } + ], + "PermissionDto": { + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "D": "App.Hr.TimesheetMonthly.Delete", + "E": "App.Hr.TimesheetMonthly.Export", + "I": "App.Hr.TimesheetMonthly.Import", + "N": "App.Hr.TimesheetMonthly.Note" + }, + "CommandColumnDto": [], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Hr.TimesheetMonthly", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": true, + "SubFormsListFormType": "Form", + "SubFormsDto": [ + { + "TabType": "List", + "TabTitle": "App.Hr.Timesheet", + "Code": "App.Hr.Timesheet", + "IsRefresh": true, + "Relation": [ + { + "ParentFieldName": "Id", + "DbType": 16, + "ChildFieldName": "PeriodKey" + } + ] + } + ], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EmployeeId", + "CaptionName": "App.Listform.ListformField.EmployeeId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name + ' ' + Surname AS [Name] FROM AbpUsers WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name, Surname" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "row", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "DepartmentId", + "CaptionName": "App.Listform.ListformField.DepartmentId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Hr_T_Department WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "row", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "JobPositionId", + "CaptionName": "App.Listform.ListformField.JobPositionId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Hr_T_JobPosition WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodYear", + "CaptionName": "App.Listform.ListformField.PeriodYear", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 1, + "SortDirection": "desc", + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "column", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 1, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodMonth", + "CaptionName": "App.Listform.ListformField.PeriodMonth", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 6, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 2, + "SortDirection": "desc", + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "column", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 5, + "EditGroupOrderNo": 1, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodStatus", + "CaptionName": "App.Listform.ListformField.PeriodStatus", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "[{\"key\":\"Open\",\"name\":\"App.Hr.Attendance.PeriodStatus.Open\"},{\"key\":\"Closed\",\"name\":\"App.Hr.Attendance.PeriodStatus.Closed\"}]" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 6, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "WorkDays", + "CaptionName": "App.Listform.ListformField.WorkDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "NetHours", + "CaptionName": "App.Listform.ListformField.NetHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LateMinutes", + "CaptionName": "App.Listform.ListformField.LateMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LateDays", + "CaptionName": "App.Listform.ListformField.LateDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 11, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EarlyLeaveMinutes", + "CaptionName": "App.Listform.ListformField.EarlyLeaveMinutes", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 12, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 5, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "EarlyLeaveDays", + "CaptionName": "App.Listform.ListformField.EarlyLeaveDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 13, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 6, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "OvertimeHours", + "CaptionName": "App.Listform.ListformField.OvertimeHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 14, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 3, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "OvertimePaidHours", + "CaptionName": "App.Listform.ListformField.OvertimePaidHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 15, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 3, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "WeeklyOffDays", + "CaptionName": "App.Listform.ListformField.WeeklyOffDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 16, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "HolidayDays", + "CaptionName": "App.Listform.ListformField.HolidayDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 17, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "LeaveDays", + "CaptionName": "App.Listform.ListformField.LeaveDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 18, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "UnpaidLeaveDays", + "CaptionName": "App.Listform.ListformField.UnpaidLeaveDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 19, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "TrainingDays", + "CaptionName": "App.Listform.ListformField.TrainingDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 20, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 5, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "SickDays", + "CaptionName": "App.Listform.ListformField.SickDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 21, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 6, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "AbsentDays", + "CaptionName": "App.Listform.ListformField.AbsentDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 22, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": ">", + "ConditionValue": "0", + "CssStyles": "color:#b91c1c | font-weight:600", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 7, + "EditGroupOrderNo": 4, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "IncompleteDays", + "CaptionName": "App.Listform.ListformField.IncompleteDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 23, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 7, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "AssumedDays", + "CaptionName": "App.Listform.ListformField.AssumedDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 24, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": "sum", + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 8, + "EditGroupOrderNo": 2, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "YearOvertimeHours", + "CaptionName": "App.Listform.ListformField.YearOvertimeHours", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 25, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 3, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "AnnualOvertimeLimit", + "CaptionName": "App.Listform.ListformField.AnnualOvertimeLimit", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 26, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 3, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2},\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetMonthly", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "IsOverAnnualLimit", + "CaptionName": "App.Listform.ListformField.IsOverAnnualLimit", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 27, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": true, + "Condition": "=", + "ConditionValue": "1", + "CssStyles": "background-color:#fee2e2 | color:#b91c1c", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetMonthly.Create", + "R": "App.Hr.TimesheetMonthly", + "U": "App.Hr.TimesheetMonthly.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": null, + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":0}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + } + ], + "IsDeletedField": true, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Hr.TimesheetMonthly", + "App.Hr.TimesheetMonthly.Title", + "App.Hr.TimesheetMonthly.Desc", + "App.Hr.Attendance.PeriodStatus.Open", + "App.Hr.Attendance.PeriodStatus.Closed", + "App.Hr.Attendance.Widget.Employees", + "App.Hr.Attendance.Widget.OverLimit", + "App.Listform.ListformField.PeriodStatus", + "App.Listform.ListformField.WorkDays", + "App.Listform.ListformField.LateDays", + "App.Listform.ListformField.EarlyLeaveDays", + "App.Listform.ListformField.OvertimePaidHours", + "App.Listform.ListformField.WeeklyOffDays", + "App.Listform.ListformField.HolidayDays", + "App.Listform.ListformField.LeaveDays", + "App.Listform.ListformField.SickDays", + "App.Listform.ListformField.AbsentDays", + "App.Listform.ListformField.IncompleteDays", + "App.Listform.ListformField.AssumedDays", + "App.Listform.ListformField.YearOvertimeHours", + "App.Listform.ListformField.AnnualOvertimeLimit", + "App.Listform.ListformField.IsOverAnnualLimit" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Hr.TimesheetMonthly", + "App.Hr.TimesheetMonthly.Create", + "App.Hr.TimesheetMonthly.Update", + "App.Hr.TimesheetMonthly.Delete", + "App.Hr.TimesheetMonthly.Export", + "App.Hr.TimesheetMonthly.Import", + "App.Hr.TimesheetMonthly.Note" + ], + "MenuCodes": [ + "App.Hr.TimesheetMonthly" + ], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/host/wizard/TimesheetPeriod.json b/configs/seeds/host/wizard/TimesheetPeriod.json new file mode 100644 index 00000000..175f607d --- /dev/null +++ b/configs/seeds/host/wizard/TimesheetPeriod.json @@ -0,0 +1,1966 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "TimesheetPeriod", + "WizardCode": "App.Hr.TimesheetPeriod", + "SeededAt": "2026-10-05T09:00:04+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Hr", + "ModuleId": "Hr", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Hr", + "Icon": "FcConferenceCall", + "En": null, + "Tr": null + } + ], + "MenuParentCode": "App.Hr.Attendance", + "MenuParentIcon": "FcAlarmClock", + "MenuCode": "App.Hr.TimesheetPeriod", + "MenuOrder": 4, + "MenuUrl": "/admin/list/App.Hr.TimesheetPeriod", + "MenuIcon": "FcLock" + }, + "Language": { + "MenuParentEn": "Timesheet & Attendance", + "MenuParentTr": "Puantaj ve Devam Takibi", + "PermissionGroupEn": "Human Resources", + "PermissionGroupTr": "İnsan Kaynakları", + "MenuEn": "Timesheet Periods", + "MenuTr": "Puantaj Dönemleri", + "TitleEn": "Timesheet Periods", + "TitleTr": "Puantaj Dönemleri", + "DescEn": "Timesheet Periods — monthly timesheet periods: recalculation and closing.\nWhere: Human Resources › Timesheet & Attendance › Timesheet Periods.\nUse: saving an open period recalculates the whole month for all employees (use it after changing shifts, the work calendar or settings). Setting the status to Closed recalculates once more and locks the month: its punches and days can no longer be added, changed or deleted, PDKS punches of that month are marked 'Closed period', leave requests and sick leaves of the month cannot be changed. A month with leave requests awaiting approval cannot be closed. Reopen to correct.\nAutomation: the nightly job opens the period of the current month by itself and recalculates the current and the previous (not closed) month.", + "DescTr": "Puantaj Dönemleri — aylık puantaj dönemleri: yeniden hesaplama ve kapanış.\nNerede: İnsan Kaynakları › Puantaj ve Devam Takibi › Puantaj Dönemleri.\nKullanım: açık dönem kaydedilince ay bütün çalışanlar için yeniden hesaplanır (vardiya, çalışma takvimi ya da ayar değişikliğinden sonra kullanılır). Durum Kapalı yapılınca son kez hesaplanır ve ay kilitlenir: hareket ve günler eklenemez, değiştirilemez, silinemez; o aya düşen PDKS okutmaları 'Kapalı dönem' işaretlenir, ayın izin ve rapor kayıtları değiştirilemez. Onay bekleyen izin talebi olan ay kapatılamaz. Düzeltme için dönem yeniden açılır.\nOtomasyon: gece işi içinde bulunulan ayın dönemini kendiliğinden açar, bu ayı ve kapanmamışsa önceki ayı yeniden hesaplar.", + "Texts": [ + { + "Key": "App.Hr.Attendance.Group.Period", + "En": "Timesheet Period", + "Tr": "Puantaj Dönemi" + }, + { + "Key": "App.Hr.Attendance.Widget.Open", + "En": "Open periods", + "Tr": "Açık dönem" + }, + { + "Key": "App.Hr.Attendance.Widget.Closed", + "En": "Closed periods", + "Tr": "Kapalı dönem" + } + ] + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "PeriodYear", + "CaptionName": "App.Listform.ListformField.PeriodYear", + "En": "Year", + "Tr": "Yıl" + }, + { + "FieldName": "PeriodMonth", + "CaptionName": "App.Listform.ListformField.PeriodMonth", + "En": "Month", + "Tr": "Ay" + }, + { + "FieldName": "Status", + "CaptionName": "App.Listform.ListformField.Status", + "En": "Status", + "Tr": "Durum" + }, + { + "FieldName": "CalculatedAt", + "CaptionName": "App.Listform.ListformField.CalculatedAt", + "En": "Calculated At", + "Tr": "Hesaplanma" + }, + { + "FieldName": "ClosedAt", + "CaptionName": "App.Listform.ListformField.ClosedAt", + "En": "Closed At", + "Tr": "Kapanış" + }, + { + "FieldName": "ClosedById", + "CaptionName": "App.Listform.ListformField.ClosedById", + "En": "Closed By", + "Tr": "Kapatan" + }, + { + "FieldName": "NightlyAt", + "CaptionName": "App.Listform.ListformField.NightlyAt", + "En": "Nightly Run", + "Tr": "Gece İşi" + }, + { + "FieldName": "Note", + "CaptionName": "App.Listform.ListformField.Note", + "En": "Note", + "Tr": "Not" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 9, + "TableName": null, + "DefaultFilter": "\"IsDeleted\" = 'false'", + "SelectCommand": "Hr_T_TimesheetPeriod", + "SelectCommandType": 1, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": "UPDATE \"Hr_T_TimesheetPeriod\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", + "DeleteBeforeCommand": "IF EXISTS (SELECT 1 FROM Hr_T_TimesheetPeriod WHERE Id IN @Id AND [Status] = N'Closed') THROW 51222, N'Kapalı puantaj dönemi silinemez; önce açın.', 1", + "DeleteAfterCommand": null, + "DeleteFieldsDefaultValueDto": [ + { + "FieldName": "DeleterId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "Id", + "FieldDbType": 9, + "Value": "@ID", + "CustomValueType": 2, + "SqlQuery": null + } + ], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": "EXEC dbo.Hr_S_TimesheetPeriodAfterSave @Id, @CreatorId", + "InsertFieldsDefaultValueDto": [ + { + "FieldName": "CreationTime", + "FieldDbType": 6, + "Value": "@NOW", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "CreatorId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "IsDeleted", + "FieldDbType": 3, + "Value": "false", + "CustomValueType": 1, + "SqlQuery": null + }, + { + "FieldName": "Id", + "FieldDbType": 9, + "Value": "@NEWID", + "CustomValueType": 2, + "SqlQuery": null + } + ], + "UpdateCommand": null, + "UpdateBeforeCommand": null, + "UpdateAfterCommand": "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Hr_T_TimesheetPeriod WHERE Id IN @Id); EXEC dbo.Hr_S_TimesheetPeriodAfterSave @_id, @LastModifierId", + "UpdateFieldsDefaultValueDto": [ + { + "FieldName": "LastModificationTime", + "FieldDbType": 6, + "Value": "@NOW", + "CustomValueType": 2, + "SqlQuery": "" + }, + { + "FieldName": "LastModifierId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": "" + } + ], + "FormFieldsDefaultValueDto": [ + { + "FieldName": "PeriodYear", + "FieldDbType": 11, + "Value": "@YEAR", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "PeriodMonth", + "FieldDbType": 11, + "Value": "@MONTH", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "Status", + "FieldDbType": 16, + "Value": "Open", + "CustomValueType": 1, + "SqlQuery": null + } + ], + "WidgetsDto": [ + { + "ColGap": 3, + "ColSpan": 4, + "SqlQuery": "SELECT 'App.Hr.Attendance.Widget.Open' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'green' AS \"Color\", 'App.Hr.TimesheetPeriod' AS \"SubTitle\", 'FaLockOpen' AS \"Icon\" FROM \"Hr_T_TimesheetPeriod\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false' AND \"Status\" = 'Open' UNION ALL SELECT 'App.Hr.Attendance.Widget.Closed' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'gray' AS \"Color\", 'App.Hr.TimesheetPeriod' AS \"SubTitle\", 'FaLock' AS \"Icon\" FROM \"Hr_T_TimesheetPeriod\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false' AND \"Status\" = 'Closed' UNION ALL SELECT 'App.Widget.Total' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Hr.TimesheetPeriod' AS \"SubTitle\", 'FaCalendarAlt' AS \"Icon\" FROM \"Hr_T_TimesheetPeriod\" WHERE \"TenantId\" = '@TENANTID' AND \"IsDeleted\" = 'false'", + "Title": "Title", + "Value": "Value", + "ValueClassName": "text-3xl", + "Color": "Color", + "Icon": "Icon", + "SubTitle": "SubTitle", + "OnClick": null, + "ClassName": "mb-3", + "IsActive": true + } + ], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Hr.TimesheetPeriod", + "CultureName": "en", + "Name": "App.Hr.TimesheetPeriod", + "KeyFieldName": "Id", + "Title": "App.Hr.TimesheetPeriod.Title", + "SortMode": "single", + "PageSize": 10, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Hr.TimesheetPeriod.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "auto", + "WhiteSpace": "normal", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "none", + "AllowSelectAll": false, + "SelectAllMode": "allPages", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "popup", + "RefreshMode": "full", + "AllowUpdating": true, + "AllowDetail": false, + "AllowDeleting": true, + "AllowAllDeleting": false, + "AllowAdding": true, + "AllowDuplicate": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Hr.TimesheetPeriod.Title", + "ShowTitle": true, + "Width": 700, + "Height": 460, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [ + { + "Order": 1, + "ItemType": "group", + "Caption": "App.Hr.Attendance.Group.Period", + "ColCount": 2, + "ColSpan": 2 + } + ], + "PermissionDto": { + "C": "App.Hr.TimesheetPeriod.Create", + "R": "App.Hr.TimesheetPeriod", + "U": "App.Hr.TimesheetPeriod.Update", + "D": "App.Hr.TimesheetPeriod.Delete", + "E": "App.Hr.TimesheetPeriod.Export", + "I": "App.Hr.TimesheetPeriod.Import", + "N": "App.Hr.TimesheetPeriod.Note" + }, + "CommandColumnDto": [], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Hr.TimesheetPeriod", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": false, + "SubFormsListFormType": "Form", + "SubFormsDto": [], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetPeriod", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetPeriod.Create", + "R": "App.Hr.TimesheetPeriod", + "U": "App.Hr.TimesheetPeriod.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetPeriod", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodYear", + "CaptionName": "App.Listform.ListformField.PeriodYear", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 1, + "SortDirection": "desc", + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [ + { + "Type": "required", + "Message": null, + "IgnoreEmptyValue": false, + "Reevaluate": true, + "ComparisonType": "", + "Pattern": "", + "Max": null, + "Min": null, + "Trim": true + } + ], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetPeriod.Create", + "R": "App.Hr.TimesheetPeriod", + "U": "App.Hr.TimesheetPeriod.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 1, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":2000,\"max\":2100}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetPeriod", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "PeriodMonth", + "CaptionName": "App.Listform.ListformField.PeriodMonth", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 2, + "SortDirection": "desc", + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [ + { + "Type": "required", + "Message": null, + "IgnoreEmptyValue": false, + "Reevaluate": true, + "ComparisonType": "", + "Pattern": "", + "Max": null, + "Min": null, + "Trim": true + } + ], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetPeriod.Create", + "R": "App.Hr.TimesheetPeriod", + "U": "App.Hr.TimesheetPeriod.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "data", + "Format": null, + "SummaryType": "sum", + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 1, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"showSpinButtons\":true,\"min\":1,\"max\":12}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetPeriod", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Status", + "CaptionName": "App.Listform.ListformField.Status", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 1, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "[{\"key\":\"Open\",\"name\":\"App.Hr.Attendance.PeriodStatus.Open\"},{\"key\":\"Closed\",\"name\":\"App.Hr.Attendance.PeriodStatus.Closed\"}]" + }, + "ValidationRuleDto": [ + { + "Type": "required", + "Message": null, + "IgnoreEmptyValue": false, + "Reevaluate": true, + "ComparisonType": "", + "Pattern": "", + "Max": null, + "Min": null, + "Trim": true + } + ], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": "=", + "ConditionValue": "Closed", + "CssStyles": "color:#6b7280 | font-weight:600", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetPeriod.Create", + "R": "App.Hr.TimesheetPeriod", + "U": "App.Hr.TimesheetPeriod.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 1, + "EditorType2": "dxRadioGroup", + "ColSpan": 2, + "EditorOptions": "{\"layout\":\"horizontal\"}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetPeriod", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "CalculatedAt", + "CaptionName": "App.Listform.ListformField.CalculatedAt", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetPeriod.Create", + "R": "App.Hr.TimesheetPeriod", + "U": "App.Hr.TimesheetPeriod.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"dateSerializationFormat\":\"yyyy-MM-ddTHH:mm:ss\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetPeriod", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "ClosedAt", + "CaptionName": "App.Listform.ListformField.ClosedAt", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 6, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetPeriod.Create", + "R": "App.Hr.TimesheetPeriod", + "U": "App.Hr.TimesheetPeriod.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"dateSerializationFormat\":\"yyyy-MM-ddTHH:mm:ss\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetPeriod", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "ClosedById", + "CaptionName": "App.Listform.ListformField.ClosedById", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name + ' ' + Surname AS [Name] FROM AbpUsers WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name, Surname" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetPeriod.Create", + "R": "App.Hr.TimesheetPeriod", + "U": "App.Hr.TimesheetPeriod.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetPeriod", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "NightlyAt", + "CaptionName": "App.Listform.ListformField.NightlyAt", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetPeriod.Create", + "R": "App.Hr.TimesheetPeriod", + "U": "App.Hr.TimesheetPeriod.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"dateSerializationFormat\":\"yyyy-MM-ddTHH:mm:ss\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Hr.TimesheetPeriod", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Note", + "CaptionName": "App.Listform.ListformField.Note", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Hr.TimesheetPeriod.Create", + "R": "App.Hr.TimesheetPeriod", + "U": "App.Hr.TimesheetPeriod.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 4, + "EditGroupOrderNo": 1, + "EditorType2": "dxTextArea", + "ColSpan": 2, + "EditorOptions": "{\"autoResizeEnabled\":true,\"minHeight\":80}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + } + ], + "IsDeletedField": true, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Hr.TimesheetPeriod", + "App.Hr.TimesheetPeriod.Title", + "App.Hr.TimesheetPeriod.Desc", + "App.Hr.Attendance.Group.Period", + "App.Hr.Attendance.Widget.Open", + "App.Hr.Attendance.Widget.Closed", + "App.Listform.ListformField.CalculatedAt", + "App.Listform.ListformField.ClosedAt", + "App.Listform.ListformField.ClosedById", + "App.Listform.ListformField.NightlyAt" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Hr.TimesheetPeriod", + "App.Hr.TimesheetPeriod.Create", + "App.Hr.TimesheetPeriod.Update", + "App.Hr.TimesheetPeriod.Delete", + "App.Hr.TimesheetPeriod.Export", + "App.Hr.TimesheetPeriod.Import", + "App.Hr.TimesheetPeriod.Note" + ], + "MenuCodes": [ + "App.Hr.TimesheetPeriod" + ], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/host/wizard/Training.json b/configs/seeds/host/wizard/Training.json index 9d68f79a..8506f9db 100644 --- a/configs/seeds/host/wizard/Training.json +++ b/configs/seeds/host/wizard/Training.json @@ -32,8 +32,8 @@ "MenuTr": "Eğitimler", "TitleEn": "Trainings", "TitleTr": "Eğitimler", - "DescEn": "Trainings — each training session: dates/times, duration, place, trainer, cost, skills gained, participants and files.\nWhere: Human Resources › Training › Trainings. The detail has Participants and Files tabs.\nFields:\n• Type → Subject (filtered by type), entry date, branch\n• Start/end date and time → total hours = days × daily hours (automatic)\n• Status → Open / Closed; trainer, place, institution\n• SkillIds → skills gained (informational, not written to the employee profile)\n• Cost items (place, trainer, accommodation, transport, catering, other) → total cost automatic\nRelated: a Performance Management development action can link to a training; when the employee is marked Attended the action completes itself.\nWidgets: total, open, closed trainings and total cost.", - "DescTr": "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.\nNerede: İnsan Kaynakları › Eğitim › Eğitimler. Detayda Katılımcılar ve Dosyalar sekmeleri vardır.\nAlanlar:\n• Tip → Konu (tipe göre süzülür), giriş tarihi, şube\n• Başlangıç/bitiş tarihi ve saati → Toplam süre = gün sayısı × günlük saat (otomatik)\n• Status → Açık / Kapalı; eğitmen, eğitim yeri, eğitim veren kurum\n• SkillIds → eğitimin kazandırdığı yetkinlikler (bilgi amaçlı, çalışan profiline yazılmaz)\n• Maliyet kalemleri (yer, eğitmen, konaklama, ulaşım, ikram, diğer) → toplam maliyet otomatik\nİlişkili: Performans Yönetimi'ndeki gelişim aksiyonu bir eğitime bağlanabilir; çalışan bu eğitimde Katıldı olarak işlenirse aksiyon kendiliğinden tamamlanır.\nWidget'lar: toplam, açık, kapalı eğitim ve toplam maliyet.", + "DescEn": "Trainings — each training session: dates/times, duration, place, trainer, cost, skills gained, participants and files.\nWhere: Human Resources › Training › Trainings. The detail has Participants and Files tabs.\nFields:\n• Type → Subject (filtered by type), entry date, branch\n• Start/end date and time → total hours = days × daily hours (automatic)\n• Status → Open / Closed; trainer, place, institution\n• SkillIds → skills gained (informational, not written to the employee profile)\n• Cost items (place, trainer, accommodation, transport, catering, other) → total cost automatic\nRelated: a Performance Management development action can link to a training; when the employee is marked Attended the action completes itself. Work days between the start and end date are Training days in the timesheet of attending participants; changing the dates recalculates them.\nWidgets: total, open, closed trainings and total cost.", + "DescTr": "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.\nNerede: İnsan Kaynakları › Eğitim › Eğitimler. Detayda Katılımcılar ve Dosyalar sekmeleri vardır.\nAlanlar:\n• Tip → Konu (tipe göre süzülür), giriş tarihi, şube\n• Başlangıç/bitiş tarihi ve saati → Toplam süre = gün sayısı × günlük saat (otomatik)\n• Status → Açık / Kapalı; eğitmen, eğitim yeri, eğitim veren kurum\n• SkillIds → eğitimin kazandırdığı yetkinlikler (bilgi amaçlı, çalışan profiline yazılmaz)\n• Maliyet kalemleri (yer, eğitmen, konaklama, ulaşım, ikram, diğer) → toplam maliyet otomatik\nİlişkili: Performans Yönetimi'ndeki gelişim aksiyonu bir eğitime bağlanabilir; çalışan bu eğitimde Katıldı olarak işlenirse aksiyon kendiliğinden tamamlanır. Başlangıç–bitiş arasındaki iş günleri katılımcının puantajında Eğitimde yazılır; tarih değişince yeniden hesaplanır.\nWidget'lar: toplam, açık, kapalı eğitim ve toplam maliyet.", "Texts": [ { "Key": "App.Hr.Training.Widget.Open", @@ -230,7 +230,7 @@ "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_Training\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, - "DeleteAfterCommand": null, + "DeleteAfterCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_Training WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_TrainingSync @_id, NULL, @DeleterId; END", "DeleteFieldsDefaultValueDto": [ { "FieldName": "DeleterId", @@ -282,7 +282,7 @@ ], "UpdateCommand": null, "UpdateBeforeCommand": null, - "UpdateAfterCommand": null, + "UpdateAfterCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_Training WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_TrainingSync @_id, NULL, @LastModifierId; END", "UpdateFieldsDefaultValueDto": [], "FormFieldsDefaultValueDto": [], "WidgetsDto": [ diff --git a/configs/seeds/host/wizard/TrainingParticipant.json b/configs/seeds/host/wizard/TrainingParticipant.json index d67e10c4..74c5e869 100644 --- a/configs/seeds/host/wizard/TrainingParticipant.json +++ b/configs/seeds/host/wizard/TrainingParticipant.json @@ -25,8 +25,8 @@ "MenuTr": "Katılımcılar", "TitleEn": "Participants", "TitleTr": "Katılımcılar", - "DescEn": "Participants — employees attending a training and their attendance result.\nWhere: the Participants tab of a Training record (no menu entry).\nFields:\n• UserId → employee; hire date, department and position are copied (state at training time)\n• AttendanceStatus → Attended (default) / Not attended / Excused\n• Evaluation score, exam score, leave date, note\nButton: rows with Attended print the Attendance Certificate.\nRelated: Attended completes a linked development action in Performance Management.", - "DescTr": "Katılımcılar — eğitime katılan personel ve katılım sonucu.\nNerede: Eğitimler ekranında kaydın Katılımcılar sekmesi (menüde ayrıca yoktur).\nAlanlar:\n• UserId → personel; seçilince işe giriş tarihi, bölüm ve görev kopyalanır (eğitim anındaki hâl saklanır)\n• AttendanceStatus → Katıldı (varsayılan) / Katılmadı / Mazeretli\n• Değerlendirme puanı, sınav notu, ayrılma tarihi, not\nButon: Katıldı durumundaki satırda Katılım Belgesi raporu basılır.\nİlişkili: Katıldı kaydı, Performans Yönetimi'nde bu eğitime bağlı gelişim aksiyonunu tamamlar." + "DescEn": "Participants — employees attending a training and their attendance result.\nWhere: the Participants tab of a Training record (no menu entry).\nFields:\n• UserId → employee; hire date, department and position are copied (state at training time)\n• AttendanceStatus → Attended (default) / Not attended / Excused\n• Evaluation score, exam score, leave date, note\nButton: rows with Attended print the Attendance Certificate.\nRelated: Attended completes a linked development action in Performance Management and marks the training days as Training in the timesheet (not absent).", + "DescTr": "Katılımcılar — eğitime katılan personel ve katılım sonucu.\nNerede: Eğitimler ekranında kaydın Katılımcılar sekmesi (menüde ayrıca yoktur).\nAlanlar:\n• UserId → personel; seçilince işe giriş tarihi, bölüm ve görev kopyalanır (eğitim anındaki hâl saklanır)\n• AttendanceStatus → Katıldı (varsayılan) / Katılmadı / Mazeretli\n• Değerlendirme puanı, sınav notu, ayrılma tarihi, not\nButon: Katıldı durumundaki satırda Katılım Belgesi raporu basılır.\nİlişkili: Katıldı kaydı, Performans Yönetimi'nde bu eğitime bağlı gelişim aksiyonunu tamamlar ve eğitim günlerini puantajda Eğitimde yazar (devamsız sayılmaz)." }, "Groups": [ { @@ -116,7 +116,7 @@ "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_TrainingParticipant\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, - "DeleteAfterCommand": null, + "DeleteAfterCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_TrainingParticipant WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; DECLARE @_t uniqueidentifier, @_u uniqueidentifier; SELECT @_t = TrainingId, @_u = UserId FROM Hr_T_TrainingParticipant WHERE Id = @_id; EXEC dbo.Hr_S_TrainingSync @_t, @_u, @DeleterId; END", "DeleteFieldsDefaultValueDto": [ { "FieldName": "DeleterId", @@ -135,7 +135,7 @@ ], "InsertCommand": null, "InsertBeforeCommand": null, - "InsertAfterCommand": null, + "InsertAfterCommand": "DECLARE @_t uniqueidentifier, @_u uniqueidentifier; SELECT @_t = TrainingId, @_u = UserId FROM Hr_T_TrainingParticipant WHERE Id = @Id; EXEC dbo.Hr_S_TrainingSync @_t, @_u, @CreatorId", "InsertFieldsDefaultValueDto": [ { "FieldName": "CreationTime", @@ -168,7 +168,7 @@ ], "UpdateCommand": null, "UpdateBeforeCommand": null, - "UpdateAfterCommand": null, + "UpdateAfterCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_TrainingParticipant WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; DECLARE @_t uniqueidentifier, @_u uniqueidentifier; SELECT @_t = TrainingId, @_u = UserId FROM Hr_T_TrainingParticipant WHERE Id = @_id; EXEC dbo.Hr_S_TrainingSync @_t, @_u, @LastModifierId; END", "UpdateFieldsDefaultValueDto": [], "FormFieldsDefaultValueDto": [], "WidgetsDto": [], diff --git a/configs/seeds/host/wizard/Vehicle.json b/configs/seeds/host/wizard/Vehicle.json index ad0f025b..1283ead6 100644 --- a/configs/seeds/host/wizard/Vehicle.json +++ b/configs/seeds/host/wizard/Vehicle.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Vehicles", "MenuParentIcon": "FcAutomotive", "MenuCode": "App.Hr.Vehicle", - "MenuOrder": 2, + "MenuOrder": 4, "MenuUrl": "/admin/list/App.Hr.Vehicle", "MenuIcon": "FcAutomotive" }, diff --git a/configs/seeds/host/wizard/VehicleExpense.json b/configs/seeds/host/wizard/VehicleExpense.json index a2011675..65a6b4b2 100644 --- a/configs/seeds/host/wizard/VehicleExpense.json +++ b/configs/seeds/host/wizard/VehicleExpense.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Vehicles", "MenuParentIcon": "FcAutomotive", "MenuCode": "App.Hr.VehicleExpense", - "MenuOrder": 6, + "MenuOrder": 7, "MenuUrl": "/admin/list/App.Hr.VehicleExpense", "MenuIcon": "FcMoneyTransfer" }, diff --git a/configs/seeds/host/wizard/VehicleExpenseDefinition.json b/configs/seeds/host/wizard/VehicleExpenseDefinition.json index 14f9b6d9..e1f4bfb8 100644 --- a/configs/seeds/host/wizard/VehicleExpenseDefinition.json +++ b/configs/seeds/host/wizard/VehicleExpenseDefinition.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Vehicles", "MenuParentIcon": "FcAutomotive", "MenuCode": "App.Hr.VehicleExpenseDefinition", - "MenuOrder": 5, + "MenuOrder": 2, "MenuUrl": "/admin/list/App.Hr.VehicleExpenseDefinition", "MenuIcon": "FcList" }, diff --git a/configs/seeds/host/wizard/VehicleMovement.json b/configs/seeds/host/wizard/VehicleMovement.json index 53f47e91..59828d7f 100644 --- a/configs/seeds/host/wizard/VehicleMovement.json +++ b/configs/seeds/host/wizard/VehicleMovement.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Hr.Vehicles", "MenuParentIcon": "FcAutomotive", "MenuCode": "App.Hr.VehicleMovement", - "MenuOrder": 7, + "MenuOrder": 6, "MenuUrl": "/admin/list/App.Hr.VehicleMovement", "MenuIcon": "FcInspection" }, diff --git a/configs/seeds/host/wizard/Visitor.json b/configs/seeds/host/wizard/Visitor.json index 2d72f5a8..8ad1b6c3 100644 --- a/configs/seeds/host/wizard/Visitor.json +++ b/configs/seeds/host/wizard/Visitor.json @@ -11,7 +11,7 @@ "MenuParentCode": "App.Hr", "MenuParentIcon": "FcConferenceCall", "MenuCode": "App.Hr.Visitor", - "MenuOrder": 3, + "MenuOrder": 12, "MenuUrl": "/admin/list/App.Hr.Visitor", "MenuIcon": "FcBusinessman" }, diff --git a/configs/seeds/host/wizard/WorkCalendar.json b/configs/seeds/host/wizard/WorkCalendar.json index 8ceded6d..59782f7d 100644 --- a/configs/seeds/host/wizard/WorkCalendar.json +++ b/configs/seeds/host/wizard/WorkCalendar.json @@ -11,7 +11,7 @@ "MenuParentCode": "App.Hr", "MenuParentIcon": "FcConferenceCall", "MenuCode": "App.Hr.WorkCalendar", - "MenuOrder": 2, + "MenuOrder": 4, "MenuUrl": "/admin/list/App.Hr.WorkCalendar", "MenuIcon": "FcCalendar" }, @@ -24,8 +24,8 @@ "MenuTr": "Çalışma Takvimi", "TitleEn": "Work Calendar", "TitleTr": "Çalışma Takvimi", - "DescEn": "Work Calendar — public holidays, half days (eves) and non-working days.\nWhere: Human Resources › Work Calendar. The Scheduler view shows the year.\nFields:\n• Name, start and end date (multi-day holiday in one row)\n• DayType → Holiday / Half day\n• RecurrenceRule → Yearly (fixed-date holidays entered once) or empty (religious holidays entered each year)\nNote: not linked to leave or time-keeping calculations. Records are mirrored to the seed file.", - "DescTr": "Çalışma Takvimi — resmi tatiller, arife (yarım gün) ve çalışılmayan günler.\nNerede: İnsan Kaynakları › Çalışma Takvimi. Takvim (Scheduler) görünümünde yıl üzerinde görülür.\nAlanlar:\n• Ad, başlangıç ve bitiş tarihi (çok günlü tatil tek satırda)\n• DayType → Tatil / Yarım Gün\n• RecurrenceRule → Her yıl (sabit tarihli resmi tatiller bir kez girilir) ya da boş (dini bayramlar her yıl ayrı girilir)\nDikkat: takvim izin ya da puantaj hesabına bağlı değildir. Kayıtlar seed dosyasına da yazılır.", + "DescEn": "Work Calendar — public holidays, half days (eves) and non-working days.\nWhere: Human Resources › Work Calendar. The Scheduler view shows the year.\nFields:\n• Name, start and end date (multi-day holiday in one row)\n• DayType → Holiday / Half day\n• RecurrenceRule → Yearly (fixed-date holidays entered once) or empty (religious holidays entered each year)\nRelated: leave days exclude these days and the timesheet marks them as public holidays; saving, changing or deleting a row recalculates the leave days and the timesheet of the affected dates (closed timesheet months are not rewritten). Records are mirrored to the seed file.", + "DescTr": "Çalışma Takvimi — resmi tatiller, arife (yarım gün) ve çalışılmayan günler.\nNerede: İnsan Kaynakları › Çalışma Takvimi. Takvim (Scheduler) görünümünde yıl üzerinde görülür.\nAlanlar:\n• Ad, başlangıç ve bitiş tarihi (çok günlü tatil tek satırda)\n• DayType → Tatil / Yarım Gün\n• RecurrenceRule → Her yıl (sabit tarihli resmi tatiller bir kez girilir) ya da boş (dini bayramlar her yıl ayrı girilir)\nİlişkili: izin günleri bu günleri saymaz, puantaj bu günleri resmî tatil yazar; satır eklenince, değişince ya da silinince denk gelen izinlerin gün sayısı ve puantaj yeniden hesaplanır (kapalı puantaj ayı yazılmaz). Kayıtlar seed dosyasına da yazılır.", "Texts": [ { "Key": "App.Hr.WorkCalendar.DayType.Holiday", @@ -119,7 +119,7 @@ "SeedSyncDelete": true, "DeleteCommand": "UPDATE \"Hr_T_WorkCalendar\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, - "DeleteAfterCommand": null, + "DeleteAfterCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_WorkCalendar WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_WorkCalendarAfterSave @_id, @DeleterId; END", "DeleteFieldsDefaultValueDto": [ { "FieldName": "DeleterId", @@ -138,7 +138,7 @@ ], "InsertCommand": null, "InsertBeforeCommand": null, - "InsertAfterCommand": null, + "InsertAfterCommand": "EXEC dbo.Hr_S_WorkCalendarAfterSave @Id, @CreatorId", "InsertFieldsDefaultValueDto": [ { "FieldName": "CreationTime", @@ -171,7 +171,7 @@ ], "UpdateCommand": null, "UpdateBeforeCommand": null, - "UpdateAfterCommand": null, + "UpdateAfterCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_WorkCalendar WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_WorkCalendarAfterSave @_id, @LastModifierId; END", "UpdateFieldsDefaultValueDto": [], "FormFieldsDefaultValueDto": [ { diff --git a/ui/safelist.txt b/ui/safelist.txt index 84f8b4b3..49c70c8a 100644 --- a/ui/safelist.txt +++ b/ui/safelist.txt @@ -4498,7 +4498,6 @@ mr-1.4 sozsoft-* # --- custom component classes --- !bg-transparent -${className} absolute backdrop-blur-sm bg-amber-50 @@ -4508,11 +4507,13 @@ bg-blue-950/25 bg-gradient-to-br bg-gradient-to-r bg-gray-100 +bg-gray-200 bg-gray-50 bg-gray-950 bg-gray-950/80 bg-green-700 bg-indigo-50 +bg-indigo-600 bg-orange-100 bg-purple-700 bg-red-50 @@ -4550,6 +4551,7 @@ break-all col-start-3 container dark:bg-amber-950 +dark:bg-gray-700 dark:bg-gray-800 dark:bg-gray-900 dark:bg-gray-900/40 @@ -4591,6 +4593,7 @@ dark:text-green-400 dark:text-indigo-300 dark:text-indigo-400 dark:text-orange-300 +dark:text-purple-400 dark:text-red-200 dark:text-red-400 dark:text-slate-100 @@ -4621,6 +4624,7 @@ gap-2 gap-3 gap-6 gap-8 +gap-x-3 gap-x-4 gap-y-1 grid @@ -4629,6 +4633,7 @@ grid-cols-2 grid-cols-3 grid-cols-[auto_1fr_auto] h-10 +h-2 h-5 h-9 h-[600px] @@ -4637,6 +4642,7 @@ hidden hover:!bg-transparent hover:bg-blue-50 hover:bg-gray-50 +hover:bg-indigo-700 hover:bg-red-700 hover:bg-sky-700 hover:bg-slate-50 @@ -4745,6 +4751,7 @@ py-6 relative rounded rounded-2xl +rounded-full rounded-lg rounded-md rounded-xl diff --git a/ui/src/views/admin/user-management/Details.tsx b/ui/src/views/admin/user-management/Details.tsx index 52944bde..d00a1e96 100644 --- a/ui/src/views/admin/user-management/Details.tsx +++ b/ui/src/views/admin/user-management/Details.tsx @@ -33,6 +33,7 @@ import { } from '@/services/identity.service' import { CountryDto, getCountry } from '@/services/country.service' import { useLocalization } from '@/utils/hooks/useLocalization' +import { usePermission } from '@/utils/hooks/usePermission' import dayjs from 'dayjs' import { Field, FieldArray, FieldProps, Form, Formik, FormikHelpers } from 'formik' import { ReactNode, useEffect, useMemo, useRef, useState } from 'react' @@ -75,6 +76,7 @@ import { FaUpload, FaHourglassHalf, FaUmbrellaBeach, + FaBusinessTime, } from 'react-icons/fa' import { CircleStencil, @@ -98,6 +100,9 @@ import EducationSkillsTab from './EducationSkillsTab' import FamilyEmergencyTab from './FamilyEmergencyTab' import FinancialTab from './FinancialTab' import LeaveTab from './LeaveTab' +import TimesheetTab from './TimesheetTab' +import HrRecordsTab from './HrRecordsTab' +import { HR_RECORD_TABS } from './hrRecordTabs' import { CheckboxField, DateField, @@ -141,6 +146,8 @@ const isProbationInvalid = (hireDate?: Date | string, probationEndDate?: Date | function UserDetails() { const { userId } = useParams() const { translate } = useLocalization() + const { checkPermission } = usePermission() + const hrTabs = HR_RECORD_TABS.filter((tab) => tab.lists.some(([code]) => checkPermission(code))) const [userDetails, setUserDetails] = useState() const [open, setOpen] = useState(false) const [confirmDeleteClaim, setConfirmDeleteClaim] = useState(null) @@ -340,6 +347,14 @@ function UserDetails() { }> {translate('::Abp.Identity.User.Leaves')} + }> + {translate('::Abp.Identity.User.Timesheet')} + + {hrTabs.map(({ value, label, Icon }) => ( + }> + {translate(`::${label}`)} + + ))} }> {translate('::Abp.Identity.Permissions')} @@ -1065,6 +1080,20 @@ function UserDetails() {
+ +
+ +
+
+ + {hrTabs.map(({ value, lists }) => ( + +
+ +
+
+ ))} +
diff --git a/ui/src/views/admin/user-management/HrRecordsTab.tsx b/ui/src/views/admin/user-management/HrRecordsTab.tsx new file mode 100644 index 00000000..b66d3bad --- /dev/null +++ b/ui/src/views/admin/user-management/HrRecordsTab.tsx @@ -0,0 +1,37 @@ +import PlatformViewHost from '@/components/componentEditor/PlatformViewHost' +import { useLocalization } from '@/utils/hooks/useLocalization' +import { usePermission } from '@/utils/hooks/usePermission' +import { useMemo } from 'react' +import type { HrRecordList } from './hrRecordTabs' + +function EmployeeList({ code, employeeField, height, userId }: { code: string; employeeField: string; height: string; userId: string }) { + // Kimliği sabit tutulur; her çizimde yeni süzgeç liste verisini yeniden yükletirdi. + const searchParams = useMemo( + () => new URLSearchParams({ filter: JSON.stringify([employeeField, '=', userId]) }), + [employeeField, userId], + ) + return +} + +/** + * İK modüllerinin çalışana ait kayıtları; ekranlar kendi sorgusu, yetkisi ve kiracı süzmesiyle açılır. + * Yeni satırın çalışan alanı da süzgeçten dolar (applyNewRowDefaults). + */ +function HrRecordsTab({ userId, lists }: { userId: string; lists: HrRecordList[] }) { + const { translate } = useLocalization() + const { checkPermission } = usePermission() + const visible = lists.filter(([code]) => checkPermission(code)) + + return ( +
+ {visible.map(([code, employeeField, height]) => ( +
+ {visible.length > 1 &&
{translate(`::${code}`)}
} + +
+ ))} +
+ ) +} + +export default HrRecordsTab diff --git a/ui/src/views/admin/user-management/TimesheetTab.tsx b/ui/src/views/admin/user-management/TimesheetTab.tsx new file mode 100644 index 00000000..3b8b4306 --- /dev/null +++ b/ui/src/views/admin/user-management/TimesheetTab.tsx @@ -0,0 +1,109 @@ +import PlatformViewHost from '@/components/componentEditor/PlatformViewHost' +import apiService from '@/services/api.service' +import { useLocalization } from '@/utils/hooks/useLocalization' +import { usePermission } from '@/utils/hooks/usePermission' +import { useEffect, useMemo, useState } from 'react' + +const MONTHLY = 'App.Hr.TimesheetMonthly' +const DAILY = 'App.Hr.Timesheet' +const EVENTS = 'App.Hr.AttendanceLog' + +type MonthlyRow = { + PeriodYear?: number + NetHours?: number + WorkDays?: number + OvertimeHours?: number + LateMinutes?: number + EarlyLeaveMinutes?: number + AbsentDays?: number + LeaveDays?: number + SickDays?: number + AnnualOvertimeLimit?: number +} + +const format = (value: number) => (Number.isInteger(value) ? String(value) : value.toFixed(1)) + +/** Puantaj özeti Aylık Puantaj ekranının sorgusundan okunur; yetki ve kiracı süzmesi ListForm'da kalır. */ +function TimesheetTab({ userId }: { userId: string }) { + const { translate } = useLocalization() + const { checkPermission } = usePermission() + const [rows, setRows] = useState([]) + const canSeeMonthly = checkPermission(MONTHLY) + const year = new Date().getFullYear() + + // Yeni hareket satırının EmployeeId değeri de bu filtreden dolar (applyNewRowDefaults). + const employeeSearchParams = useMemo( + () => new URLSearchParams({ filter: JSON.stringify(['EmployeeId', '=', userId]) }), + [userId], + ) + + useEffect(() => { + if (!canSeeMonthly) return + let active = true + apiService + .fetchData<{ data?: MonthlyRow[] }>({ + method: 'GET', + url: '/api/app/list-form-select/select', + params: { listFormCode: MONTHLY, filter: JSON.stringify(['EmployeeId', '=', userId]), take: 500 }, + }) + .then( + (response) => + active && setRows((response.data?.data ?? []).filter((row) => Number(row.PeriodYear) === year)), + ) + .catch(() => active && setRows([])) + return () => { + active = false + } + }, [canSeeMonthly, userId, year]) + + const total = (name: keyof MonthlyRow) => rows.reduce((sum, row) => sum + Number(row[name] ?? 0), 0) + const field = (name: string) => translate(`::App.Listform.ListformField.${name}`) + const overtime = total('OvertimeHours') + const limit = Number(rows[0]?.AnnualOvertimeLimit ?? 0) || 270 + const cards: [string, number, string][] = [ + ['WorkDays', total('WorkDays'), 'text-gray-900 dark:text-gray-100'], + ['NetHours', total('NetHours'), 'text-indigo-600'], + ['OvertimeHours', overtime, overtime > limit ? 'text-red-600' : 'text-purple-600'], + ['LateMinutes', total('LateMinutes'), 'text-orange-500'], + ['EarlyLeaveMinutes', total('EarlyLeaveMinutes'), 'text-orange-500'], + ['AbsentDays', total('AbsentDays'), 'text-red-600'], + ['LeaveDays', total('LeaveDays'), 'text-teal-600'], + ['SickDays', total('SickDays'), 'text-violet-600'], + ] + const lists: [string, string][] = [ + [MONTHLY, '320px'], + [DAILY, '360px'], + [EVENTS, '320px'], + ] + + return ( +
+ {canSeeMonthly && ( +
+
+ {year} · {translate('::App.Listform.ListformField.AnnualOvertimeLimit')}: {format(overtime)} / {format(limit)} +
+
+ {cards.map(([name, value, color]) => ( +
+
{format(value)}
+
{field(name)}
+
+ ))} +
+
+ )} + + {lists + .filter(([code]) => checkPermission(code)) + .map(([code, height]) => ( +
+
{translate(`::${code}`)}
+ +
+ ))} +
+ ) +} + +export default TimesheetTab diff --git a/ui/src/views/admin/user-management/hrRecordTabs.ts b/ui/src/views/admin/user-management/hrRecordTabs.ts new file mode 100644 index 00000000..d457d03d --- /dev/null +++ b/ui/src/views/admin/user-management/hrRecordTabs.ts @@ -0,0 +1,30 @@ +import type { IconType } from 'react-icons' +import { FaChalkboardTeacher, FaChartLine, FaGavel } from 'react-icons/fa' + +/** Ekran kodu, çalışanı tutan alan ve liste yüksekliği. */ +export type HrRecordList = [code: string, employeeField: string, height: string] + +/** Kullanıcı detayındaki İK kayıt sekmeleri; sekme, ekranlarından birini görme yetkisi varsa çizilir. */ +export const HR_RECORD_TABS: { value: string; label: string; Icon: IconType; lists: HrRecordList[] }[] = [ + { + value: 'trainings', + label: 'Abp.Identity.User.Trainings', + Icon: FaChalkboardTeacher, + lists: [['App.Hr.TrainingParticipant', 'UserId', '420px']], + }, + { + value: 'performance', + label: 'Abp.Identity.User.Performance', + Icon: FaChartLine, + lists: [ + ['App.Hr.PerformanceReview', 'EmployeeId', '360px'], + ['App.Hr.DevelopmentPlan', 'EmployeeId', '360px'], + ], + }, + { + value: 'disciplinary', + label: 'Abp.Identity.User.Disciplinary', + Icon: FaGavel, + lists: [['App.Hr.DisciplinaryCase', 'UserId', '420px']], + }, +]