Disiplin Dosyaları, Çalışma Takvimi
This commit is contained in:
parent
b6797950b2
commit
130e23bc67
37 changed files with 19847 additions and 173 deletions
8
.github/instructions/dotnet.instructions.md
vendored
8
.github/instructions/dotnet.instructions.md
vendored
|
|
@ -123,8 +123,14 @@ Ek kurallar:
|
||||||
implementasyon. AppService içinde `DbContext` doğrudan kullanılmaz.
|
implementasyon. AppService içinde `DbContext` doğrudan kullanılmaz.
|
||||||
- **Dinamik SQL**: parametreli çalıştırılır; string birleştirme ile sorgu kurulmaz.
|
- **Dinamik SQL**: parametreli çalıştırılır; string birleştirme ile sorgu kurulmaz.
|
||||||
- **Mapping**: Mapperly (`[Mapper]` partial class) kullanılır; AutoMapper eklenmez.
|
- **Mapping**: Mapperly (`[Mapper]` partial class) kullanılır; AutoMapper eklenmez.
|
||||||
|
Mapper'lar servis klasöründeki `{Alan}Mappers.cs` dosyasındadır (modülde
|
||||||
|
`{Modül}ApplicationMappers.cs`), ABP'nin `MapperBase<TSource, TDest>` /
|
||||||
|
`TwoWayMapperBase`'inden türer ve `RequiredMappingStrategy.Target` ile işaretlenir.
|
||||||
RMG012 uyarısı "hedefte karşılığı olmayan alan" demektir; yeni mapper eklerken bu
|
RMG012 uyarısı "hedefte karşılığı olmayan alan" demektir; yeni mapper eklerken bu
|
||||||
uyarı bırakılmaz.
|
uyarı bırakılmaz: kaynakta karşılığı olmayan, servisin sonradan doldurduğu hedef alan
|
||||||
|
(`User`, `IsLiked`, `*Dto` alt nesneleri, audit alanları) her `Map` overload'unda
|
||||||
|
`[MapperIgnoreTarget(nameof(...))]` ile açıkça yazılır; iç içe koleksiyon için ayrı
|
||||||
|
`private partial` eşleme metodu tanımlanır.
|
||||||
- **Localization**: kullanıcıya görünen metin koda gömülmez, `PlatformResource`
|
- **Localization**: kullanıcıya görünen metin koda gömülmez, `PlatformResource`
|
||||||
anahtarı üzerinden verilir.
|
anahtarı üzerinden verilir.
|
||||||
- **Çok değerli alan taşıyan girdi DTO'su**: ekranda `dxTagBox` (ya da çoklu seçimli
|
- **Çok değerli alan taşıyan girdi DTO'su**: ekranda `dxTagBox` (ya da çoklu seçimli
|
||||||
|
|
|
||||||
|
|
@ -1304,7 +1304,7 @@ ekranları ABP tablolarıdır, Licence/Dev Request host tablolarını okur.
|
||||||
| **Bildirimler › Bildirim Türleri / Kuralları** | `App.Notifications.NotificationTypes` · `.NotificationRules` | `Adm_T_NotificationType` · `Adm_T_NotificationRule` | Olay bazlı bildirim: tür + kanal + alıcı (`All`/`User`/`Role`/`OrganizationUnit`/`Custom`), `IsFixed` zorunlu kural. 8 kanal (`Sms`, `Mail`, `Rocket`, `Desktop`, `UiActivity`, `UiToast`, `WhatsApp`, `Telegram`); etiketleri `App.NotificationChannel.{Kanal}` dil anahtarlarıdır. Tür ve kural kiracıya aittir, yeni kiracıya varsayılan küme kopyalanır (`NotificationTenantDefaultsSeedContributor`). Kurallar ekranında `CreateNotification` diyaloğu da vardır. Ayrıntı: `lowcode` §9.11, `README.md` §13. |
|
| **Bildirimler › Bildirim Türleri / Kuralları** | `App.Notifications.NotificationTypes` · `.NotificationRules` | `Adm_T_NotificationType` · `Adm_T_NotificationRule` | Olay bazlı bildirim: tür + kanal + alıcı (`All`/`User`/`Role`/`OrganizationUnit`/`Custom`), `IsFixed` zorunlu kural. 8 kanal (`Sms`, `Mail`, `Rocket`, `Desktop`, `UiActivity`, `UiToast`, `WhatsApp`, `Telegram`); etiketleri `App.NotificationChannel.{Kanal}` dil anahtarlarıdır. Tür ve kural kiracıya aittir, yeni kiracıya varsayılan küme kopyalanır (`NotificationTenantDefaultsSeedContributor`). Kurallar ekranında `CreateNotification` diyaloğu da vardır. Ayrıntı: `lowcode` §9.11, `README.md` §13. |
|
||||||
| **Bildirimler › Bildirimler** | `App.Notifications.Notification` | `Adm_T_Notification` | Hem kuyruk günlüğü hem elle gönderim ekranı: liste kural motorunun ürettiklerini de gösterir, ekleme formu alıcı × kanal açılımını kuyruğa yazar (`InsertServiceAddress = list-form-dynamic-api/notification-insert`; `dxTagBox` çoklu alıcı/kanal). Tip her zaman `Manuel`, güncelleme kapalı. Ayrı bir manuel gönderim tablosu yoktur. Ayrıntı: `README.md` §13.5.1. |
|
| **Bildirimler › Bildirimler** | `App.Notifications.Notification` | `Adm_T_Notification` | Hem kuyruk günlüğü hem elle gönderim ekranı: liste kural motorunun ürettiklerini de gösterir, ekleme formu alıcı × kanal açılımını kuyruğa yazar (`InsertServiceAddress = list-form-dynamic-api/notification-insert`; `dxTagBox` çoklu alıcı/kanal). Tip her zaman `Manuel`, güncelleme kapalı. Ayrı bir manuel gönderim tablosu yoktur. Ayrıntı: `README.md` §13.5.1. |
|
||||||
| **Agenda** | `App.Agenda` | `Adm_T_Agenda` | **Takvim (Scheduler) düzeninin** referansı (`DefaultLayout: scheduler`): `StartDate`, `EndDate`, `AllDay`, `RecurrenceRule`, `RecurrenceException`. Tekrarlayan randevu isteği kod gerektirmez. |
|
| **Agenda** | `App.Agenda` | `Adm_T_Agenda` | **Takvim (Scheduler) düzeninin** referansı (`DefaultLayout: scheduler`): `StartDate`, `EndDate`, `AllDay`, `RecurrenceRule`, `RecurrenceException`. Tekrarlayan randevu isteği kod gerektirmez. |
|
||||||
| **Settings** | `App.Setting` · `/admin/settings` | — | `SettingDefinition` kayıtlarından üretilen ayar ekranı; değerler burada girilir. |
|
| **Settings** | `App.Setting` · `/admin/settings` | — | `SettingDefinition` kayıtlarından üretilen ayar ekranı; değerler burada girilir. `List` seçeneklerinin etiketi dil anahtarıdır. |
|
||||||
| **Restrictions › Work Hour** | `App.Restrictions.WorkHour` | `Adm_T_WorkHour` | Gün bazlı çalışma saati (`Monday`…`Sunday`, `StartTime`, `EndTime`); kullanıcıya `AbpUsers.WorkHour` ile bağlanır. "Sadece mesai saatinde girilebilsin" burada çözülür. |
|
| **Restrictions › Work Hour** | `App.Restrictions.WorkHour` | `Adm_T_WorkHour` | Gün bazlı çalışma saati (`Monday`…`Sunday`, `StartTime`, `EndTime`); kullanıcıya `AbpUsers.WorkHour` ile bağlanır. "Sadece mesai saatinde girilebilsin" burada çözülür. |
|
||||||
| **Restrictions › IP Restrictions** | `App.Restrictions.IpRestrictions` | `Adm_T_IpRestriction` | `ResourceType` + `ResourceId` + `IP` — kullanıcı/rol bazlı IP kısıtı. |
|
| **Restrictions › IP Restrictions** | `App.Restrictions.IpRestrictions` | `Adm_T_IpRestriction` | `ResourceType` + `ResourceId` + `IP` — kullanıcı/rol bazlı IP kısıtı. |
|
||||||
| **Identity › Permission Groups / Permissions** | `Abp.Identity.PermissionGroups` · `Abp.Identity.Permissions` | `AbpPermissionGroups` · `AbpPermissions` | Yetki ağacı (tree düzeni). Yeni ekranın yetkileri burada görünür; `Modules` kolonu yetkiyi modüllere bağlar (pipe ile çoklu), `Order` kardeşler arası sıradır. Seed: `data/Abp.Identity.Permission{Groups,s}.json`. |
|
| **Identity › Permission Groups / Permissions** | `Abp.Identity.PermissionGroups` · `Abp.Identity.Permissions` | `AbpPermissionGroups` · `AbpPermissions` | Yetki ağacı (tree düzeni). Yeni ekranın yetkileri burada görünür; `Modules` kolonu yetkiyi modüllere bağlar (pipe ile çoklu), `Order` kardeşler arası sıradır. Seed: `data/Abp.Identity.Permission{Groups,s}.json`. |
|
||||||
|
|
@ -1315,7 +1315,7 @@ ekranları ABP tablolarıdır, Licence/Dev Request host tablolarını okur.
|
||||||
| **Identity › Users › Health Card lists** | `App.IdentityManagement.UserPeriodicExamination` · `.UserPatientProtocol` · `.UserSickLeave` (menüsüz alt listeler) | `Adm_T_UserPeriodicExamination` · `Adm_T_UserPatientProtocol` · `Adm_T_UserSickLeave` | Periyodik muayene (hekim `Hr_T_Doctor`'dan, diploma no seçimde `EditorScript.Copy` ile kopyalanır), hasta protokol defteri (`ProtocolType`/`ProtocolResult` statik lookup) ve istirahat listesi (`Days` tarihlerden `EditorScript.Days` ile hesaplanır). Entity'ler `IMultiTenant`; Sağlık Kartı sekmesinde (`HealthCardTab.tsx`) `UserId` filtresiyle gömülüdür. Yetki Work Experience ile aynıdır: okuma `AbpIdentity.Users`, ekleme/güncelleme/silme `AbpIdentity.Users.Update`. |
|
| **Identity › Users › Health Card lists** | `App.IdentityManagement.UserPeriodicExamination` · `.UserPatientProtocol` · `.UserSickLeave` (menüsüz alt listeler) | `Adm_T_UserPeriodicExamination` · `Adm_T_UserPatientProtocol` · `Adm_T_UserSickLeave` | Periyodik muayene (hekim `Hr_T_Doctor`'dan, diploma no seçimde `EditorScript.Copy` ile kopyalanır), hasta protokol defteri (`ProtocolType`/`ProtocolResult` statik lookup) ve istirahat listesi (`Days` tarihlerden `EditorScript.Days` ile hesaplanır). Entity'ler `IMultiTenant`; Sağlık Kartı sekmesinde (`HealthCardTab.tsx`) `UserId` filtresiyle gömülüdür. Yetki Work Experience ile aynıdır: okuma `AbpIdentity.Users`, ekleme/güncelleme/silme `AbpIdentity.Users.Update`. |
|
||||||
| **Identity › Users › Education & Skills lists** | `App.IdentityManagement.UserEducation` · `.UserLanguage` · `.UserSkill` · `.UserCertificate` (menüsüz alt listeler) | `Adm_T_UserEducation` · `Adm_T_UserLanguage` · `Adm_T_UserSkill` · `Adm_T_UserCertificate` | Eğitim geçmişi (`EducationLevel` kullanıcınınkiyle aynı değerler, `SchoolName`, `Department`, `StartDate`, `EndDate`, `IsGraduated`), yabancı dil (`SkillId` → `Languages` tipindeki `Hr_T_Skill`, `SkillLevelId` dilin tipine ait `Hr_T_SkillLevel`, cascade), yetenek (`SkillId` → `Languages` dışındaki tipler, `Level` 1-5 statik lookup, check constraint) ve yeterlilik belgesi (`CertificateId` → wizard tablosu `Hr_T_Certificate`, EF ilişkisi yok; `CertificateNo`, `IssuedBy`, `IssueDate`, `ExpiryDate`). Lookup'lar `LookupQueryValues.Tenant{LanguageSkill,SkillLevelBySkill,NonLanguageSkill,Certificate}Values`. `EducationSkillsTab.tsx`; yetki Work Experience ile aynıdır. |
|
| **Identity › Users › Education & Skills lists** | `App.IdentityManagement.UserEducation` · `.UserLanguage` · `.UserSkill` · `.UserCertificate` (menüsüz alt listeler) | `Adm_T_UserEducation` · `Adm_T_UserLanguage` · `Adm_T_UserSkill` · `Adm_T_UserCertificate` | Eğitim geçmişi (`EducationLevel` kullanıcınınkiyle aynı değerler, `SchoolName`, `Department`, `StartDate`, `EndDate`, `IsGraduated`), yabancı dil (`SkillId` → `Languages` tipindeki `Hr_T_Skill`, `SkillLevelId` dilin tipine ait `Hr_T_SkillLevel`, cascade), yetenek (`SkillId` → `Languages` dışındaki tipler, `Level` 1-5 statik lookup, check constraint) ve yeterlilik belgesi (`CertificateId` → wizard tablosu `Hr_T_Certificate`, EF ilişkisi yok; `CertificateNo`, `IssuedBy`, `IssueDate`, `ExpiryDate`). Lookup'lar `LookupQueryValues.Tenant{LanguageSkill,SkillLevelBySkill,NonLanguageSkill,Certificate}Values`. `EducationSkillsTab.tsx`; yetki Work Experience ile aynıdır. |
|
||||||
| **Identity › Users › Family / Emergency lists** | `App.IdentityManagement.UserFamilyMember` · `.UserEmergencyContact` | `Adm_T_UserFamilyMember` · `Adm_T_UserEmergencyContact` | Eş ve çocuklar (`Relationship` `Spouse`/`Child`, ad, TC, doğum tarihi, `EmploymentStatus`, `IsInsuranceCovered`, `IsBenefitCovered`) ve acil durum kişileri (ad, `Relationship`, telefon). `FamilyEmergencyTab.tsx`; yetki Work Experience ile aynıdır. |
|
| **Identity › Users › Family / Emergency lists** | `App.IdentityManagement.UserFamilyMember` · `.UserEmergencyContact` | `Adm_T_UserFamilyMember` · `Adm_T_UserEmergencyContact` | Eş ve çocuklar (`Relationship` `Spouse`/`Child`, ad, TC, doğum tarihi, `EmploymentStatus`, `IsInsuranceCovered`, `IsBenefitCovered`) ve acil durum kişileri (ad, `Relationship`, telefon). `FamilyEmergencyTab.tsx`; yetki Work Experience ile aynıdır. |
|
||||||
| **Identity › Users › Benefits** | `App.IdentityManagement.UserBenefit` | `Adm_T_UserBenefit` | Yan haklar (`BenefitType` statik lookup `App.StaticLookup.Benefit*`, `Amount`, `StartDate`, `EndDate`, `Note`); Financial sekmesinde (`FinancialTab.tsx`). Yetki Work Experience ile aynıdır. |
|
| **Identity › Users › Benefits** | `App.IdentityManagement.UserBenefit` | `Adm_T_UserBenefit` | Yan haklar (`BenefitType` — İK › Definitions › Benefit Type'tan `Code` değeri, `LookupQueryValues.BenefitTypeValues`, `Amount`, `StartDate`, `EndDate`, `Note`); Financial sekmesinde (`FinancialTab.tsx`). Yetki Work Experience ile aynıdır. |
|
||||||
| **Identity › Organization Units** | `Abp.Identity.OrganizationUnits` · `/admin/ous` | ABP OU tabloları | Birim ağacı. Ekranı `IsOrganizationUnit = true` yaparsan veri bu ağaca göre süzülür; bildirim alıcısı da OU olabilir. |
|
| **Identity › Organization Units** | `Abp.Identity.OrganizationUnits` · `/admin/ous` | ABP OU tabloları | Birim ağacı. Ekranı `IsOrganizationUnit = true` yaparsan veri bu ağaca göre süzülür; bildirim alıcısı da OU olabilir. |
|
||||||
| **Identity › Audit Logs** | `App.IdentityManagement.AuditLogs` | `AbpAuditLogs` | İstek denetim kaydı + `AuditLogDetail` diyaloğu. "Kim ne zaman ne yaptı" isteği yeni tablo gerektirmez. |
|
| **Identity › Audit Logs** | `App.IdentityManagement.AuditLogs` | `AbpAuditLogs` | İstek denetim kaydı + `AuditLogDetail` diyaloğu. "Kim ne zaman ne yaptı" isteği yeni tablo gerektirmez. |
|
||||||
| **Identity › Sessions** | `App.IdentityManagement.Sessions` | `AbpSessions` | Açık oturumlar; `UiEvalService.ApiKickUser` ile oturum düşürme (`lowcode` §9.13). |
|
| **Identity › Sessions** | `App.IdentityManagement.Sessions` | `AbpSessions` | Açık oturumlar; `UiEvalService.ApiKickUser` ile oturum düşürme (`lowcode` §9.13). |
|
||||||
|
|
@ -1352,6 +1352,10 @@ ListForm kodu / menü kodu / yetki adı / dil anahtarı `App.Hr.*`, seed dosyas
|
||||||
seeder `ListFormSeeder_Hr.cs` (`SeedConsts.AppCodes.Hr`, `PlatformConsts.AppCodes.Hr`), entity
|
seeder `ListFormSeeder_Hr.cs` (`SeedConsts.AppCodes.Hr`, `PlatformConsts.AppCodes.Hr`), entity
|
||||||
klasörü `Entities/Tenant/Hr/Definitions`. Tanımlar alt menüsü `App.Hr.Definitions`'tır
|
klasörü `Entities/Tenant/Hr/Definitions`. Tanımlar alt menüsü `App.Hr.Definitions`'tır
|
||||||
(`App.Platform.Definitions` başlığı); Organizasyon Şeması doğrudan `App.Hr` altındadır.
|
(`App.Platform.Definitions` başlığı); Organizasyon Şeması doğrudan `App.Hr` altındadır.
|
||||||
|
Aşağıdaki tabloda `Wizard` notu taşıyan ekranlar wizard ile üretilmiştir: entity'leri yoktur, tablo
|
||||||
|
`sql/object/Hr_T_*.sql`, ekran `wizard/{Ad}.json` dosyasındadır (`ListFormSeeder_Hr.cs`'te yer almazlar).
|
||||||
|
Eğitimler (`App.Hr.Trainings`) ve Araçlar (`App.Hr.Vehicles`) `App.Hr` altında ara menüdür; ara yetki
|
||||||
|
aynı kodu taşır.
|
||||||
Intranet de bu moduldedir: menü `App.Hr.Intranet`, ekran/yetki kodları `App.Hr.Intranet.*`
|
Intranet de bu moduldedir: menü `App.Hr.Intranet`, ekran/yetki kodları `App.Hr.Intranet.*`
|
||||||
(`SeedConsts.AppCodes.Intranet`), tablolar `Hr_T_{Announcement,Survey*,Social*,Event*}` ve mesajlaşma
|
(`SeedConsts.AppCodes.Intranet`), tablolar `Hr_T_{Announcement,Survey*,Social*,Event*}` ve mesajlaşma
|
||||||
`Hr_T_MessengerConversation*`, entity klasörü `Entities/Tenant/Hr/Intranet`. `Sas_T_IntranetWidget`
|
`Hr_T_MessengerConversation*`, entity klasörü `Entities/Tenant/Hr/Intranet`. `Sas_T_IntranetWidget`
|
||||||
|
|
@ -1369,6 +1373,21 @@ listesinde `Hr` varsa görür (modül listesi boş kiracıda süzme yoktur — `
|
||||||
| **Definitions › Skill Type** | `App.Hr.SkillType` (alt formlar `App.Hr.SkillLevel`, `App.Hr.Skill`) | `Hr_T_SkillType` · `Hr_T_SkillLevel` · `Hr_T_Skill` | tenant | Yetkinlik tanımı; bir ana ekrandan iki alt forma açılan **çoklu alt form** örneği. Seed `data/App.Hr.{SkillType,SkillLevel,Skill}.json`. |
|
| **Definitions › Skill Type** | `App.Hr.SkillType` (alt formlar `App.Hr.SkillLevel`, `App.Hr.Skill`) | `Hr_T_SkillType` · `Hr_T_SkillLevel` · `Hr_T_Skill` | tenant | Yetkinlik tanımı; bir ana ekrandan iki alt forma açılan **çoklu alt form** örneği. Seed `data/App.Hr.{SkillType,SkillLevel,Skill}.json`. |
|
||||||
| **Definitions › Department** | `App.Hr.Department` | `Hr_T_Department` | tenant | **Şube bazlı** departman ağacı: ilk sütun `BranchId` (Şube Adı; `LookupQueryValues.TenantBranchValues`, zorunlu), `ParentId` lookup'ı seçili şubenin departmanlarına süzülür (`BranchDepartmentValues`, cascade `BranchId`). `ParentId` ile **ağaç (TreeList) düzeninin** referansı; personel/onay ekranlarının departman lookup'ı. Tekil indeks `TenantId + BranchId + Name`. Seed `data/App.Hr.Department.json`. |
|
| **Definitions › Department** | `App.Hr.Department` | `Hr_T_Department` | tenant | **Şube bazlı** departman ağacı: ilk sütun `BranchId` (Şube Adı; `LookupQueryValues.TenantBranchValues`, zorunlu), `ParentId` lookup'ı seçili şubenin departmanlarına süzülür (`BranchDepartmentValues`, cascade `BranchId`). `ParentId` ile **ağaç (TreeList) düzeninin** referansı; personel/onay ekranlarının departman lookup'ı. Tekil indeks `TenantId + BranchId + Name`. Seed `data/App.Hr.Department.json`. |
|
||||||
| **Definitions › Job Position** | `App.Hr.JobPosition` | `Hr_T_JobPosition` | tenant | Ünvan ağacı. Form sırası `BranchId` → `DepartmentId` (şubeye göre süzülür) → `Name` → `ParentId` (departmana göre süzülür); şube değişince departman ve üst görev temizlenir (`CascadeEmptyFields`). **İki kademeli cascade** örneği. Seed `data/App.Hr.JobPosition.json`. |
|
| **Definitions › Job Position** | `App.Hr.JobPosition` | `Hr_T_JobPosition` | tenant | Ünvan ağacı. Form sırası `BranchId` → `DepartmentId` (şubeye göre süzülür) → `Name` → `ParentId` (departmana göre süzülür); şube değişince departman ve üst görev temizlenir (`CascadeEmptyFields`). **İki kademeli cascade** örneği. Seed `data/App.Hr.JobPosition.json`. |
|
||||||
|
| **Work Calendar** | `App.Hr.WorkCalendar` | `Hr_T_WorkCalendar` | tenant | Resmi tatil ve çalışılmayan günler: `Name`, `StartDate`, `EndDate`, `DayType` (`Holiday`/`HalfDay`), `RecurrenceRule` (boş = tek sefer, `FREQ=YEARLY` = her yıl), `AllDay` (gizli, `true`), `IsActive`. Grid'e ek olarak **Takvim (Scheduler)** görünümü açıktır (`TextExpr = Name`). İzin ve puantaj hesabının tatil kaynağıdır. Wizard `wizard/WorkCalendar.json`, tablo `sql/object/Hr_T_WorkCalendar.sql`, seed `data/App.Hr.WorkCalendar.json` (sabit tarihli resmi tatiller her yıl tekrar eder; Ramazan ve Kurban bayramları hicri takvime göre kaydığı için 2026–2027 tarihleriyle tek seferlik girilir, sonraki yıllar ekrandan eklenir). |
|
||||||
|
| **Definitions › Leave Type** | `App.Hr.LeaveType` | `Hr_T_LeaveType` | tenant | İzin türü: `Code`, `Name`, `Gender` (`All`/`Male`/`Female`), `MaxDaysPerYear`, `IsPaid`, `DeductsFromAnnualLeave`, `RequiresDocument`, `AllowHalfDay`, `IsActive`. İzin talebi/bakiye ekranlarının izin türü lookup'ı. 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`. |
|
||||||
|
| **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. |
|
||||||
|
| **Vehicles › Vehicle Document / Expense Definition / Destination** | `App.Hr.VehicleDocument` · `App.Hr.VehicleExpenseDefinition` · `App.Hr.VehicleDestination` | `Hr_T_VehicleDocument` · `Hr_T_VehicleExpenseDefinition` · `Hr_T_VehicleDestination` | tenant | Araç modülünün tanımları: belge türü (`DocumentGroup`, `DocumentType`, `Name`), masraf kalemi (`ExpenseType`, `Name`), gidilecek yer (`Name`, `Distance`); hepsinde `IsActive`. Wizard; belge ve masraf tanımları seed'lidir (`data/App.Hr.{VehicleDocument,VehicleExpenseDefinition}.json`). |
|
||||||
|
| **Vehicles › Vehicle** | `App.Hr.Vehicle` (alt form `App.Hr.VehicleFile`) | `Hr_T_Vehicle` · `Hr_T_VehicleFile` | tenant | Araç kartı: şube, marka/model/kasa, `PlateNumber`, `CurrentKm`, `Status`, muayene/sigorta/egzoz/takograf başlangıç–bitiş tarihleri. Dosya alt formu belge türünü `Hr_T_VehicleDocument`'tan seçer. Wizard. |
|
||||||
|
| **Vehicles › Driver** | `App.Hr.Driver` (alt formlar `App.Hr.DriverDocument`, `.DriverPenalty`, `.DriverAccident`) | `Hr_T_Driver` · `Hr_T_DriverDocument` · `Hr_T_DriverPenalty` · `Hr_T_DriverAccident` | tenant | Şoför = kullanıcı (`UserId` → `AbpUsers`) + en çok beş araç (`Vehicle1Id`…`Vehicle5Id`) + `TotalKm`; belge, ceza (`Amount`) ve kaza kayıtları alt formdur, ekli dosyayla. Wizard. |
|
||||||
|
| **Vehicles › Vehicle Expense** | `App.Hr.VehicleExpense` (alt form `App.Hr.VehicleExpenseLine`) | `Hr_T_VehicleExpense` · `Hr_T_VehicleExpenseLine` | tenant | Araç masraf faturası (`VehicleId`, `InvoiceNo`, `InvoiceDate`, `DestinationId`, belge görseli `dxImageUpload`) ve satırları (`ExpenseDefinitionId`, `Quantity`, `Amount`, `DiscountRate`, `NetAmount`). **Fiş + satır** kalıbı. Wizard. |
|
||||||
|
| **Vehicles › Vehicle Movement** | `App.Hr.VehicleMovement` | `Hr_T_VehicleMovement` | tenant | Araç çıkış/giriş kaydı: çıkışta şube, tarih/saat, km, gönderen/güvenlik/şoför kullanıcıları, araç, gidilecek yer, sebep; girişte güvenlik, şube, tarih/saat, km; `TravelledKm`, `DurationMinutes`, `ExpectedKm` hesaplanır, `Status` (`Arrived`/`Left`). Wizard. |
|
||||||
|
| **Definitions › Penalty Type** | `App.Hr.DisciplinaryPenaltyType` | `Hr_T_DisciplinaryPenaltyType` | tenant | Disiplin cezası türü: `Name`, `Severity` (1–5), `Description`, `IsActive`. Karar alt formunun lookup'ı (aktifler, ağırlık sırasıyla). Wizard; seed `data/App.Hr.DisciplinaryPenaltyType.json` (sözlü/yazılı uyarı, ihtar, kınama, ücret kesintisi, fesih). |
|
||||||
|
| **Disciplinary Case** | `App.Hr.DisciplinaryCase` (alt formlar `App.Hr.DisciplinaryDefense`, `.DisciplinaryDecision`, `.DisciplinaryFile`) | `Hr_T_DisciplinaryCase` · `Hr_T_DisciplinaryDefense` · `Hr_T_DisciplinaryDecision` · `Hr_T_DisciplinaryFile` | tenant | Olay tutanağı: personel (`UserId` → `AbpUsers`, `DepartmentId`/`JobPositionId` kopyalanır), olay tarihi/saati/yeri, `Subject`, `IncidentDescription` (`dxHtmlEditor`), tanıklar (`WitnessUserIds` — `dxTagBox`), `ReportedById`, `Status` (`Open`/`AwaitingDefense`/`Decided`/`Closed`; Todo panosu bu kolonla). `CaseNo` (`DSP-{yyyy}-{00001}`, kiracı ve yıl bazında) `InsertAfterCommand` ile SQL'de üretilir — `Sequence` kiracıya kopyalanmadığı için numaratör kullanılmaz. Alt formlar: savunma (`RequestDate`, `DueDate` = talep + 2 gün, `ResponseDate`, `DefenseText`, `Status`), karar (`PenaltyTypeId`, karar/yürürlük/tebliğ tarihi, `DeductionAmount`, `Status` `Draft`/`Final`, onay süreci yok), belge (`DocumentTypeId` → `Hr_T_DocumentType`, dosya). Alt form yetkileri `App.Hr.DisciplinaryCase` altındadır. Wizard. |
|
||||||
| **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. |
|
| **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 › 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. |
|
| **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. |
|
||||||
|
|
@ -1483,6 +1502,8 @@ alanları da doldurur (`lowcode` §0.9).
|
||||||
| "yapay zekâ ajanı ekran/bileşen geliştirsin" | Saas › DeveloperKit › MCP Servers | Yalnızca host kullanıcısı: `App.DeveloperKit.McpServers.Invoke` + `.Write` + Wizard / Custom Components yetkilerini ver; geliştirme araçları `AllowedTools` ile açılıp kapatılır. Kiracı MCP'de veri okur ve yazar, geliştirme yapamaz |
|
| "yapay zekâ ajanı ekran/bileşen geliştirsin" | Saas › DeveloperKit › MCP Servers | Yalnızca host kullanıcısı: `App.DeveloperKit.McpServers.Invoke` + `.Write` + Wizard / Custom Components yetkilerini ver; geliştirme araçları `AllowedTools` ile açılıp kapatılır. Kiracı MCP'de veri okur ve yazar, geliştirme yapamaz |
|
||||||
| "ülke/il/ilçe, para birimi, birim, sektör" | Saas / Administration › Definitions | Var olan tabloya lookup bağla, yenisini üretme |
|
| "ülke/il/ilçe, para birimi, birim, sektör" | Saas / Administration › Definitions | Var olan tabloya lookup bağla, yenisini üretme |
|
||||||
| "departman, pozisyon/ünvan, yetkinlik, organizasyon şeması" | İK › Definitions · İK › Org Chart | Var olan `Hr_*` tablosuna lookup bağla (departman lookup'ı şubeye göre süzülebilir — `BranchDepartmentValues`); yenisini üretme |
|
| "departman, pozisyon/ünvan, yetkinlik, organizasyon şeması" | İK › Definitions · İK › Org Chart | Var olan `Hr_*` tablosuna lookup bağla (departman lookup'ı şubeye göre süzülebilir — `BranchDepartmentValues`); yenisini üretme |
|
||||||
|
| "izin türü, masraf türü, yan hak türü, vardiya, resmi tatil / çalışma takvimi" | İK › Definitions · İK › Work Calendar · İK › Shift | Var olan `Hr_T_WorkCalendar` / `Hr_T_LeaveType` / `Hr_T_ExpenseType` / `Hr_T_BenefitType` / `Hr_T_Shift` tablosuna lookup bağla; yenisini üretme |
|
||||||
|
| "eğitim / katılımcı, araç / şoför / araç masrafı / araç çıkış-giriş, olay günlüğü, disiplin / tutanak / savunma / ihtar" | İK › Trainings · İK › Vehicles · İK › Event Log · İK › Disciplinary Case | Var olan `Hr_T_Training*` / `Hr_T_Vehicle*` / `Hr_T_Driver*` / `Hr_T_EventLog` / `Hr_T_Disciplinary*` ekranını genişlet ya da lookup bağla; paralel tablo üretme |
|
||||||
| "yapay zekâ cevaplasın" | Saas › Definitions › AiBot | Bot tanımı; `/admin/ai` bu tanımı kullanır |
|
| "yapay zekâ cevaplasın" | Saas › Definitions › AiBot | Bot tanımı; `/admin/ai` bu tanımı kullanır |
|
||||||
|
|
||||||
### 12.7 Canlı referans uygulamalar
|
### 12.7 Canlı referans uygulamalar
|
||||||
|
|
|
||||||
12
.github/instructions/lowcode.instructions.md
vendored
12
.github/instructions/lowcode.instructions.md
vendored
|
|
@ -504,7 +504,7 @@ ister ve kiracı kullanıcısına hiçbiri açılmaz.
|
||||||
|
|
||||||
| Araç | Ne yapar | Not |
|
| Araç | Ne yapar | Not |
|
||||||
| --- | --- | --- |
|
| --- | --- | --- |
|
||||||
| `get_dev_guide` | Bu dosyanın (`lowcode`) ya da `reference`'ın başlık listesini / bir bölümünü döner | Bölüm numarayla istenir (`4.3`); aynı numarayı iki başlık taşımamalıdır |
|
| `get_dev_guide` | Bu dosyanın (`lowcode`) ya da `reference`'ın başlık listesini / bir bölümünü döner | Bölüm numarayla (`4.3`) ya da başlık metniyle istenir; aynı numarayı iki başlık taşımamalıdır. Bölüm önce istenen belgede, sonra diğerinde aranır; başlık olmayan bir terim (`dxImageUpload`) terimin geçtiği bölümlerin listesini döndürür |
|
||||||
| `create_table` | Yeni SQL Server tablosu kurar, `sql/object/{Tablo}.sql` dosyasını yazar | Ek olarak `App.SqlQueryManager` ister; `Id`/`TenantId`/audit kolonlarını kendi ekler (`fullAudited`, `multiTenant` varsayılan açık); var olan tabloyu reddeder. View/SP/fonksiyon kurulamaz |
|
| `create_table` | Yeni SQL Server tablosu kurar, `sql/object/{Tablo}.sql` dosyasını yazar | Ek olarak `App.SqlQueryManager` ister; `Id`/`TenantId`/audit kolonlarını kendi ekler (`fullAudited`, `multiTenant` varsayılan açık); var olan tabloyu reddeder. View/SP/fonksiyon kurulamaz |
|
||||||
| `list_wizards` · `get_wizard` | Wizard dosyalarını listeler (menü yolu, bağımlılar) · dosyayı diskteki hâliyle döner | Var olan menü kökünü/izin grubunu bulmak için önce `list_wizards` |
|
| `list_wizards` · `get_wizard` | Wizard dosyalarını listeler (menü yolu, bağımlılar) · dosyayı diskteki hâliyle döner | Var olan menü kökünü/izin grubunu bulmak için önce `list_wizards` |
|
||||||
| `deploy_wizard` | Wizard cevabından ekranın wizard dosyasını ve menü/yetki/dil seed satırlarını yazar; veritabanına yazmaz (§4.0) | Girdi §4.4'teki düz cevap ya da `get_wizard` çıktısıyla aynı dosya biçimi; enum'lar sayı. `replaceFileName` = `EditFileName` (§4.5). List ekranında `Widgets` dolu gelir — alt form olarak üretilen ekran hariç (`Widgets: []`) — en az 3 kart, kiracı tablosunda `"TenantId" = '@TENANTID'` (§4.6.1); kartlardaki her dil anahtarı var olmalı ya da `Language.Texts`'te EN + TR verilmeli, yoksa deploy reddeder. `MenuOrder` yazılmaz — sunucu yeni ekranı kardeşlerinin sonuna koyar, güncellemede yerini korur. Talep bağı (`DevRequest`) da yazılmaz — sunucu etkin talepten doldurur (§4.0). İstek demo veri taşıyorsa `SeedData: true` + `seedRows` (§0.10.1). Satır/toolbar butonları `CommandColumns` (§4.9). Bağımlı lookup öğedeki `Cascade*` alanları (§4.3.4). Çıkıştaki `isPending: true` ekranın henüz kurulmadığını söyler — kullanıcı Wizard Manager'da DB Migrate çalıştırır; model migrate'i beklemez |
|
| `deploy_wizard` | Wizard cevabından ekranın wizard dosyasını ve menü/yetki/dil seed satırlarını yazar; veritabanına yazmaz (§4.0) | Girdi §4.4'teki düz cevap ya da `get_wizard` çıktısıyla aynı dosya biçimi; enum'lar sayı. `replaceFileName` = `EditFileName` (§4.5). List ekranında `Widgets` dolu gelir — alt form olarak üretilen ekran hariç (`Widgets: []`) — en az 3 kart, kiracı tablosunda `"TenantId" = '@TENANTID'` (§4.6.1); kartlardaki her dil anahtarı var olmalı ya da `Language.Texts`'te EN + TR verilmeli, yoksa deploy reddeder. `MenuOrder` yazılmaz — sunucu yeni ekranı kardeşlerinin sonuna koyar, güncellemede yerini korur. Talep bağı (`DevRequest`) da yazılmaz — sunucu etkin talepten doldurur (§4.0). İstek demo veri taşıyorsa `SeedData: true` + `seedRows` (§0.10.1). Satır/toolbar butonları `CommandColumns` (§4.9). Bağımlı lookup öğedeki `Cascade*` alanları (§4.3.4). Çıkıştaki `isPending: true` ekranın henüz kurulmadığını söyler — kullanıcı Wizard Manager'da DB Migrate çalıştırır; model migrate'i beklemez |
|
||||||
|
|
@ -1158,7 +1158,7 @@ atanmaz (admin dahil); ekranı görecek roller yetkiyi rol ekranından alır.
|
||||||
| `IsTenant` / `IsBranch` / `IsOrganizationUnit` | `[ListForm]` Otomatik kırılım filtresi. Tabloda `TenantId` varsa `IsTenant: true` **olmalı**. |
|
| `IsTenant` / `IsBranch` / `IsOrganizationUnit` | `[ListForm]` Otomatik kırılım filtresi. Tabloda `TenantId` varsa `IsTenant: true` **olmalı**. |
|
||||||
| `AllowAdding` / `AllowUpdating` / `AllowDeleting` / `ConfirmDelete` | `[ListForm]` Toolbar ve satır aksiyonları (`EditingOptionDto`). |
|
| `AllowAdding` / `AllowUpdating` / `AllowDeleting` / `ConfirmDelete` | `[ListForm]` Toolbar ve satır aksiyonları (`EditingOptionDto`). |
|
||||||
| `SeedData` | `[ListForm]` `true` ise `SeedFilePath = data/{ListFormCode}.json` ve `SeedSyncInsert/Update/Delete` açık üretilir; ekrandan girilen satır dosyaya yazılır, migrate geri yükler. Wizard ekranında sorulmaz; demo veri taşıyan MCP üretimi için (§0.10.1). Varsayılan `false`. |
|
| `SeedData` | `[ListForm]` `true` ise `SeedFilePath = data/{ListFormCode}.json` ve `SeedSyncInsert/Update/Delete` açık üretilir; ekrandan girilen satır dosyaya yazılır, migrate geri yükler. Wizard ekranında sorulmaz; demo veri taşıyan MCP üretimi için (§0.10.1). Varsayılan `false`. |
|
||||||
| `AllowDetail` | `[ListForm]` Satırda **Detay** düğmesi çıkar; `/admin/form/{ListFormCode}/{anahtar}` adresini yeni sekmede açar — aynı ekranın tek kayıtlık form görünümüdür. `KeyFieldName` boşsa çalışmaz. |
|
| `AllowDetail` | `[ListForm]` Satırda **Detay** düğmesi çıkar; `/admin/form/{ListFormCode}/{anahtar}` adresini yeni sekmede açar — aynı ekranın tek kayıtlık form görünümüdür. `KeyFieldName` boşsa çalışmaz. **`SubForms` doluysa cevaptan bağımsız `true` üretilir** (`ListFormWizardDto.BuildListForm`): wizard alt formları `Form` tipinde kurar ve sekmeler yalnızca Detay görünümünde açılır. Elle yazılan wizard dosyasında da alt formu olan ekranın `EditingOptionDto.AllowDetail` değeri `true` yazılır. |
|
||||||
| `DefaultLayout` | `[ListForm]` `"grid"`, `"card"`, `"pivot"`, `"chart"`, `"tree"`, `"gantt"`, `"scheduler"`, `"todo"`. |
|
| `DefaultLayout` | `[ListForm]` `"grid"`, `"card"`, `"pivot"`, `"chart"`, `"tree"`, `"gantt"`, `"scheduler"`, `"todo"`. |
|
||||||
| `Grid` `Card` `Pivot` `Chart` `Tree` `Gantt` `Scheduler` `Todo` | `[ListForm]` Hangi görünümlerin açık olduğu (`LayoutDto`). **Liste ekranında `Grid`/`Card`/`Pivot`/`Chart` varsayılan `true`**, diğer dördü `false` (§9.8). Açtığın her görünümün option bloğunu da doldur. |
|
| `Grid` `Card` `Pivot` `Chart` `Tree` `Gantt` `Scheduler` `Todo` | `[ListForm]` Hangi görünümlerin açık olduğu (`LayoutDto`). **Liste ekranında `Grid`/`Card`/`Pivot`/`Chart` varsayılan `true`**, diğer dördü `false` (§9.8). Açtığın her görünümün option bloğunu da doldur. |
|
||||||
|
|
||||||
|
|
@ -3960,7 +3960,7 @@ Her sekmenin düzenlediği kolonlar — alan alan sözleşmeleri `lowcode-refere
|
||||||
| **Durum** | `StateStoringJson` | ref §2.5 |
|
| **Durum** | `StateStoringJson` | ref §2.5 |
|
||||||
| **Ek Filtre** | `ExtraFilterJson` satır diyaloğu | §4.3.8 |
|
| **Ek Filtre** | `ExtraFilterJson` satır diyaloğu | §4.3.8 |
|
||||||
| **Form** | `EditingFormJson` — düzenleme formunun grup satırları | ref §3.2 |
|
| **Form** | `EditingFormJson` — düzenleme formunun grup satırları | ref §3.2 |
|
||||||
| **Alanlar** | `ListFormField` kayıtları — alan başına 15 alt sekme, aşağıda | ref §9 |
|
| **Alanlar** | `ListFormField` kayıtları — alan başına 15 alt sekme, aşağıda. Satırlar sürüklenerek sıralanır (`form-fields/fieldOrder.ts`, `SortableFieldRow.tsx`): **Liste sırası** modu `ListOrderNo`'yu bütün alanlar üzerinde, **Form sırası** modu `EditOrderNo`'yu yalnızca aynı `EditGroupOrderNo` grubundaki forma giren alanlar arasında 1'den yeniden dağıtır; gruplar arası taşıma Seçenekler alt sekmesindendir. Sıra kültür/rol/kullanıcı kaydı başına ayrıdır, yalnızca değişen alanlar kaydedilir; `Update` yetkisi ister | ref §9 |
|
||||||
| **Kişiselleştirme** | `ListFormCustomization` kayıtları: tür (`UserUiFilter`/`GridState`/`ServerJoin`/`ServerWhere`), ad, rol/kullanıcı, veri | ref §2.5 |
|
| **Kişiselleştirme** | `ListFormCustomization` kayıtları: tür (`UserUiFilter`/`GridState`/`ServerJoin`/`ServerWhere`), ad, rol/kullanıcı, veri | ref §2.5 |
|
||||||
| **Pivot / Tree / Gantt / Scheduler / Todo** | `PivotOptionJson` / `TreeOptionJson` / `GanttOptionJson` / `SchedulerOptionJson` / `TodoOptionJson` | ref §6–§7 |
|
| **Pivot / Tree / Gantt / Scheduler / Todo** | `PivotOptionJson` / `TreeOptionJson` / `GanttOptionJson` / `SchedulerOptionJson` / `TodoOptionJson` | ref §6–§7 |
|
||||||
| **Alt Form** | `SubFormsJson` | ref §5.2 |
|
| **Alt Form** | `SubFormsJson` | ref §5.2 |
|
||||||
|
|
@ -3976,6 +3976,11 @@ Her sekmenin düzenlediği kolonlar — alan alan sözleşmeleri `lowcode-refere
|
||||||
| Select | `DefaultFilter`, `SelectFieldsDefaultValueJson` satır diyaloğu |
|
| Select | `DefaultFilter`, `SelectFieldsDefaultValueJson` satır diyaloğu |
|
||||||
| Insert / Update / Delete | ilgili `*ServiceAddress`, `*Command`, `*BeforeCommand`, `*AfterCommand`, `*FieldsDefaultValueJson` |
|
| Insert / Update / Delete | ilgili `*ServiceAddress`, `*Command`, `*BeforeCommand`, `*AfterCommand`, `*FieldsDefaultValueJson` |
|
||||||
|
|
||||||
|
`*FieldsDefaultValueJson` satır diyaloğunda `FieldName`, `SelectCommand`'in kolon listesinden seçilir ve
|
||||||
|
seçilen kolonun tipi `FieldDbType`'a yazılır (`sqlDataTypeToDbType`); liste kısıtlamaz — `Query` tipli
|
||||||
|
kaynakta kolonlar katalogdan okunamadığı ve tabloda olmayan bir parametre adı da gerekebildiği için
|
||||||
|
serbest değer de yazılabilir (`JsonRowOpDialogDatabase.tsx`).
|
||||||
|
|
||||||
**Alan editörü** (Alanlar sekmesinde bir satır açılınca; `form-fields/FormFieldEdit.tsx`) —
|
**Alan editörü** (Alanlar sekmesinde bir satır açılınca; `form-fields/FormFieldEdit.tsx`) —
|
||||||
15 alt sekme; her biri `ListFormField`'ın bir kolonunu düzenler:
|
15 alt sekme; her biri `ListFormField`'ın bir kolonunu düzenler:
|
||||||
|
|
||||||
|
|
@ -4368,6 +4373,7 @@ kullanılacağı** `lowcode-reference.instructions.md` §12'dedir.
|
||||||
| "Duyuru, anket, sosyal akış, etkinlik" | İK › Intranet ekranları | `/admin/list/App.Hr.Intranet.*` |
|
| "Duyuru, anket, sosyal akış, etkinlik" | İK › Intranet ekranları | `/admin/list/App.Hr.Intranet.*` |
|
||||||
| "Para birimi, ülke/il/ilçe, birim, sektör…" | Definitions ekranları | `/admin/list/App.Definitions.*` |
|
| "Para birimi, ülke/il/ilçe, birim, sektör…" | Definitions ekranları | `/admin/list/App.Definitions.*` |
|
||||||
| "Departman, pozisyon/ünvan, yetkinlik, organizasyon şeması" | İK › Definitions · Org Chart (şube bazlı departman/pozisyon) | `/admin/list/App.Hr.*` · `/admin/organization` |
|
| "Departman, pozisyon/ünvan, yetkinlik, organizasyon şeması" | İK › Definitions · Org Chart (şube bazlı departman/pozisyon) | `/admin/list/App.Hr.*` · `/admin/organization` |
|
||||||
|
| "Eğitim, araç/şoför/araç masrafı, vardiya, olay günlüğü, disiplin dosyası" | İK › Trainings · Vehicles · Shift · Event Log · Disciplinary Case | `/admin/list/App.Hr.{Training,Vehicle,Driver,VehicleExpense,VehicleMovement,Shift,EventLog,DisciplinaryCase}` |
|
||||||
| "Menü düzeni" | Menu Manager (§9.7) | `/admin/menuManager` |
|
| "Menü düzeni" | Menu Manager (§9.7) | `/admin/menuManager` |
|
||||||
| "Genel siteye sayfa" | Custom Component (`Pub` modülü) — Visual Designer'dan yeni component + `Pub` menü kaydı | `/admin/developerkit/components/design/:id` (README.md §10.4) |
|
| "Genel siteye sayfa" | Custom Component (`Pub` modülü) — Visual Designer'dan yeni component + `Pub` menü kaydı | `/admin/developerkit/components/design/:id` (README.md §10.4) |
|
||||||
| "Yapay zekâ asistanı" | AI Bot tanımları | `/admin/list/App.Definitions.AiBot` |
|
| "Yapay zekâ asistanı" | AI Bot tanımları | `/admin/list/App.Definitions.AiBot` |
|
||||||
|
|
|
||||||
17
README.md
17
README.md
|
|
@ -927,7 +927,12 @@ Yetki grubu `App.Hr`; ListForm kodu = menü kodu = yetki adı = dil anahtarı. T
|
||||||
departman lookup'ı şubeye göre süzülür (`BranchDepartmentValues`). Host varsayılan şubesi sabit
|
departman lookup'ı şubeye göre süzülür (`BranchDepartmentValues`). Host varsayılan şubesi sabit
|
||||||
kimlikle kurulur (`PlatformConsts.Branches.BranchIdDefaultValue`) ve
|
kimlikle kurulur (`PlatformConsts.Branches.BranchIdDefaultValue`) ve
|
||||||
`data/App.Hr.{Department,JobPosition}.json` satırları bu kimliğe bağlıdır. Numaratör
|
`data/App.Hr.{Department,JobPosition}.json` satırları bu kimliğe bağlıdır. Numaratör
|
||||||
(`App.Definitions.Sequence`) Administration › Definitions altındadır. Ayrıntı:
|
(`App.Definitions.Sequence`) Administration › Definitions altındadır. Intranet de İK'dadır: menü
|
||||||
|
`App.Hr.Intranet`, ekran/yetki kodları `App.Hr.Intranet.*`, tablolar `Hr_T_*` (mesajlaşma dahil),
|
||||||
|
entity'ler `Entities/Tenant/Hr/Intranet`, seed `data/App.Hr.Intranet.*.json`; pano widget kaydı
|
||||||
|
(`Sas_T_IntranetWidget`) Saas'ta kalır. Vardiya, çalışma takvimi, olay günlüğü, Eğitimler
|
||||||
|
(`App.Hr.Trainings`), Araçlar (`App.Hr.Vehicles`), disiplin dosyaları ile izin/masraf/yan hak/disiplin cezası türleri wizard ile
|
||||||
|
üretilmiştir — entity yoktur, ekran `wizard/{Ad}.json`, tablo `sql/object/Hr_T_*.sql`. Ayrıntı:
|
||||||
`lowcode-reference.instructions.md` §12.4.
|
`lowcode-reference.instructions.md` §12.4.
|
||||||
|
|
||||||
**Yetki kodları** `PlatformConsts.AppCodes` içinde merkezî olarak tanımlıdır ve
|
**Yetki kodları** `PlatformConsts.AppCodes` içinde merkezî olarak tanımlıdır ve
|
||||||
|
|
@ -1452,11 +1457,11 @@ liste süzgeci ve çağrı kapısı aynı kuralı kullanır.
|
||||||
| `describe_list` | Bir listenin sütunları: alan adı, görünen başlık, SQL tipi, lookup ilişkisi, `isSensitive`. |
|
| `describe_list` | Bir listenin sütunları: alan adı, görünen başlık, SQL tipi, lookup ilişkisi, `isSensitive`. |
|
||||||
| `search_schema` | Liste ve sütun adları/başlıkları üzerinde aksan ve büyük/küçük harf duyarsız arama. |
|
| `search_schema` | Liste ve sütun adları/başlıkları üzerinde aksan ve büyük/küçük harf duyarsız arama. |
|
||||||
| `query_list` | Listenin verisini ekranın kendi sorgusuyla (`GetSelectAsync`) okur: filtre, sıralama, gruplama, özet (DevExtreme biçimi). Sıralama/gruplama/özet JSON'u, arayüzün `Utils.ts`'te yaptığı gibi select ucunun metin biçimine (`Alan desc|Alan2 asc`) `McpLoadOptions` ile çevrilir; select ucu JSON'u tanımaz. Normal kullanıcının veri okuma yolu. |
|
| `query_list` | Listenin verisini ekranın kendi sorgusuyla (`GetSelectAsync`) okur: filtre, sıralama, gruplama, özet (DevExtreme biçimi). Sıralama/gruplama/özet JSON'u, arayüzün `Utils.ts`'te yaptığı gibi select ucunun metin biçimine (`Alan desc|Alan2 asc`) `McpLoadOptions` ile çevrilir; select ucu JSON'u tanımaz. Normal kullanıcının veri okuma yolu. |
|
||||||
| `run_select` | Parametreli tek SELECT; çoklu ifade, DDL ve DML reddedilir, satır tavanı sorguya yazılır. Yalnızca SQL Query Manager yetkisiyle. |
|
| `run_select` | Parametreli tek SELECT; çoklu ifade, DDL ve DML reddedilir, satır tavanı sorguya yazılır. Yalnızca SQL Query Manager yetkisiyle. Sağlayıcı hatası mesajıyla döner (`SelectFailed`); araç açıklaması kolonu varsaymamayı, gerekirse önce `INFORMATION_SCHEMA.COLUMNS`'ı okumayı söyler. |
|
||||||
| `list_queries` | View/procedure/function nesneleri (SQL Query Manager yetkisiyle) + çağrılabilir Custom Endpoint'ler (`App.DeveloperKit.CustomEndpoints.Get` ile). |
|
| `list_queries` | View/procedure/function nesneleri (SQL Query Manager yetkisiyle) + çağrılabilir Custom Endpoint'ler (`App.DeveloperKit.CustomEndpoints.Get` ile). |
|
||||||
| `run_query` | Kayıtlı bir nesneyi ya da Custom Endpoint'i parametreleriyle çağırır; yetkiler `list_queries` ile aynı. |
|
| `run_query` | Kayıtlı bir nesneyi ya da Custom Endpoint'i parametreleriyle çağırır; yetkiler `list_queries` ile aynı. |
|
||||||
| `insert_row` / `update_row` / `delete_row` | ListForm ekranının insert/update/delete sözleşmesinden geçer. |
|
| `insert_row` / `update_row` / `delete_row` | ListForm ekranının insert/update/delete sözleşmesinden geçer. |
|
||||||
| `get_dev_guide` | Üretim sözleşmesi: `lowcode` / `reference` belgelerinin başlık listesi ya da istenen bölümü (numarayla, örn. `4.2`). Çok büyük bir üst bölüm yalnızca giriş metni + alt başlıklarıyla döner. |
|
| `get_dev_guide` | Üretim sözleşmesi: `lowcode` / `reference` belgelerinin başlık listesi ya da istenen bölümü (numarayla, örn. `4.2`, ya da başlık metniyle). Bölüm önce istenen, sonra diğer belgede aranır; başlıkla eşleşmeyen terimde (örn. `dxImageUpload`) terimin geçtiği bölümler (en çok 15, `DevGuideSearchMatches`), hiç geçmiyorsa başlık listesi döner — hata atılmaz. Çok büyük bir üst bölüm yalnızca giriş metni + alt başlıklarıyla döner. |
|
||||||
| `create_table` | Yeni tabloyu SQL Query Manager tablo tasarımcısıyla aynı script biçimiyle kurar (`McpTableCreator`): `Id` + `TenantId` + tam audit kolonları şablondan gelir, istemci yalnızca iş kolonlarını verir; tip ve varsayılan değer beyaz listeden geçer, istemci SQL yazamaz. Script `{kapsam}/sql/object/{Tablo}.sql` dosyasına yazılır. Yalnızca oluşturur — tablo varsa reddeder; yalnızca SQL Server. `.Write` + `App.SqlQueryManager` ister. |
|
| `create_table` | Yeni tabloyu SQL Query Manager tablo tasarımcısıyla aynı script biçimiyle kurar (`McpTableCreator`): `Id` + `TenantId` + tam audit kolonları şablondan gelir, istemci yalnızca iş kolonlarını verir; tip ve varsayılan değer beyaz listeden geçer, istemci SQL yazamaz. Script `{kapsam}/sql/object/{Tablo}.sql` dosyasına yazılır. Yalnızca oluşturur — tablo varsa reddeder; yalnızca SQL Server. `.Write` + `App.SqlQueryManager` ister. |
|
||||||
| `list_wizards` / `get_wizard` | Wizard File Manager dosyaları; `get_wizard` seed dosyasını diskteki biçimiyle döndürür. |
|
| `list_wizards` / `get_wizard` | Wizard File Manager dosyaları; `get_wizard` seed dosyasını diskteki biçimiyle döndürür. |
|
||||||
| `deploy_wizard` | Wizard'ı Wizard ekranıyla aynı yoldan (`IListFormWizardAppService.Create`) deploy eder. Girdi seed dosyası biçimi (`{"Wizard": …}`) ya da düz cevaplardır; ikisi de `WizardSeedFileDto.FromSeedJson`'dan geçer. Dosyaya kullanıcının etkin talebi `DevRequest` olarak yazılır (sunucu doldurur). Wizard ekranı gibi yalnızca seed dosyalarını yazar; ekran DB Migrate ile kurulur ve çıkıştaki `isPending` o zamana kadar `true` kalır (model migrate'i beklemez; `verify_wizard` bekleyen dosyada `install` kontrolünde durur). `replaceFileName` doluysa güncellemedir (dosyalar yeniden yazılır, önceki kayıtları migrate kaldırır). İstek demo veri taşıyorsa (prompt'taki satırlar, ekran görüntüsü) wizard `SeedData: true` ile deploy edilir — ekranın `SeedFilePath`'i `data/{ListFormCode}.json` olur ve `SeedSync*` bayrakları açılır — satırlar aynı çağrıda `seedRows` ile bu dosyaya yazılır (alan adları doğrulanır, `Guid` anahtarı sunucu üretir); migrate ekranı kurduktan sonra satırları ekler (`lowcode.instructions.md` §0.10.1). Widget sorgularındaki her dil anahtarı tanımlı olmalı ya da wizard'ın `Language.Texts` alanında EN + TR verilmeli, yoksa deploy adlarıyla reddeder (`ValidateWidgetLanguageKeysAsync`). `uploadUrl`'süz `dxImageUpload` alanı base64 sakladığı için kolonu sınırlı boyluysa (katalogdaki karakter sınırı) deploy reddedilir; tablo kolonuna bağlı `dxImageViewer` alanı da reddedilir — görsel kolonunun editörü her zaman `dxImageUpload`'dır (`ValidateImageColumnLengths`). `MenuOrder` yok sayılır: yeni ekran kardeşlerinin sonuna, güncelleme mevcut yerine yazılır — lookup kaynağı ekran önce deploy edildiği için onu kullanan ekranın üstünde kalır. |
|
| `deploy_wizard` | Wizard'ı Wizard ekranıyla aynı yoldan (`IListFormWizardAppService.Create`) deploy eder. Girdi seed dosyası biçimi (`{"Wizard": …}`) ya da düz cevaplardır; ikisi de `WizardSeedFileDto.FromSeedJson`'dan geçer. Dosyaya kullanıcının etkin talebi `DevRequest` olarak yazılır (sunucu doldurur). Wizard ekranı gibi yalnızca seed dosyalarını yazar; ekran DB Migrate ile kurulur ve çıkıştaki `isPending` o zamana kadar `true` kalır (model migrate'i beklemez; `verify_wizard` bekleyen dosyada `install` kontrolünde durur). `replaceFileName` doluysa güncellemedir (dosyalar yeniden yazılır, önceki kayıtları migrate kaldırır). İstek demo veri taşıyorsa (prompt'taki satırlar, ekran görüntüsü) wizard `SeedData: true` ile deploy edilir — ekranın `SeedFilePath`'i `data/{ListFormCode}.json` olur ve `SeedSync*` bayrakları açılır — satırlar aynı çağrıda `seedRows` ile bu dosyaya yazılır (alan adları doğrulanır, `Guid` anahtarı sunucu üretir); migrate ekranı kurduktan sonra satırları ekler (`lowcode.instructions.md` §0.10.1). Widget sorgularındaki her dil anahtarı tanımlı olmalı ya da wizard'ın `Language.Texts` alanında EN + TR verilmeli, yoksa deploy adlarıyla reddeder (`ValidateWidgetLanguageKeysAsync`). `uploadUrl`'süz `dxImageUpload` alanı base64 sakladığı için kolonu sınırlı boyluysa (katalogdaki karakter sınırı) deploy reddedilir; tablo kolonuna bağlı `dxImageViewer` alanı da reddedilir — görsel kolonunun editörü her zaman `dxImageUpload`'dır (`ValidateImageColumnLengths`). `MenuOrder` yok sayılır: yeni ekran kardeşlerinin sonuna, güncelleme mevcut yerine yazılır — lookup kaynağı ekran önce deploy edildiği için onu kullanan ekranın üstünde kalır. |
|
||||||
|
|
@ -1580,7 +1585,10 @@ iletir; diğer her istisna "An error occurred invoking '…'" olarak gider. `Mcp
|
||||||
- **İş kuralı hatası** (`UserFriendlyException`: kiracıya kapalı araç, `AllowedTools` dışı araç,
|
- **İş kuralı hatası** (`UserFriendlyException`: kiracıya kapalı araç, `AllowedTools` dışı araç,
|
||||||
`start_dev_request` durum reddi…) → yerelleştirilmiş mesajı olduğu gibi.
|
`start_dev_request` durum reddi…) → yerelleştirilmiş mesajı olduğu gibi.
|
||||||
|
|
||||||
Başka istisnalar çevrilmez; SQL ve yığın ayrıntısı istemciye sızmaz.
|
Başka istisnalar çevrilmez; SQL ve yığın ayrıntısı istemciye sızmaz. Tek istisna `run_select`'tir:
|
||||||
|
sağlayıcı hatası (`DbException`, örn. tabloda olmayan kolon) `App.Mcp.Error.SelectFailed` ile
|
||||||
|
mesajıyla döner ki model sorguyu düzeltebilsin — araç zaten `App.SqlQueryManager` ister, hata metni
|
||||||
|
yeni bilgi sızdırmaz (`McpQueryAppService`).
|
||||||
|
|
||||||
**Geliştirme rehberi nereden okur.** `get_dev_guide` depodaki
|
**Geliştirme rehberi nereden okur.** `get_dev_guide` depodaki
|
||||||
`.github/instructions/lowcode*.instructions.md` dosyalarını runtime'da okur; Claude Code ile MCP
|
`.github/instructions/lowcode*.instructions.md` dosyalarını runtime'da okur; Claude Code ile MCP
|
||||||
|
|
@ -2035,6 +2043,7 @@ configs/seeds/
|
||||||
│ │ # App.Definitions.{Currency,ContactTitle,AiBot,TerminationReason}.json — para birimi, hitap, AI bot, SGK çıkış kodu
|
│ │ # App.Definitions.{Currency,ContactTitle,AiBot,TerminationReason}.json — para birimi, hitap, AI bot, SGK çıkış kodu
|
||||||
│ │ # App.Hr.{SkillType,SkillLevel,Skill}.json — İK yetkinlik tanımları
|
│ │ # App.Hr.{SkillType,SkillLevel,Skill}.json — İK yetkinlik tanımları
|
||||||
│ │ # App.Hr.{Department,JobPosition}.json — İK departman → pozisyon (BranchId ile şubeye bağlı)
|
│ │ # App.Hr.{Department,JobPosition}.json — İK departman → pozisyon (BranchId ile şubeye bağlı)
|
||||||
|
│ │ # App.Hr.Intranet.*.json — İK › Intranet (duyuru, anket, sosyal akış, etkinlik)
|
||||||
│ │ # App.Notifications.Notification{Templates,Types,Rules}.json — bildirim şablonu, tipi → kuralı
|
│ │ # App.Notifications.Notification{Templates,Types,Rules}.json — bildirim şablonu, tipi → kuralı
|
||||||
│ │ # App.Languages.{Language,LanguageText}.json — dil → metin (eksik LanguageKey metinle üretilir)
|
│ │ # App.Languages.{Language,LanguageText}.json — dil → metin (eksik LanguageKey metinle üretilir)
|
||||||
│ │ # App.SettingDefinitions.json, App.BackgroundWorkers.RecurringJobs.json — ayar tanımları, zamanlanmış işler
|
│ │ # App.SettingDefinitions.json, App.BackgroundWorkers.RecurringJobs.json — ayar tanımları, zamanlanmış işler
|
||||||
|
|
|
||||||
|
|
@ -293,10 +293,12 @@ public class ListFormWizardDto
|
||||||
dto.ColumnOptionJson = WizardConsts.DefaultColumnOptionJson();
|
dto.ColumnOptionJson = WizardConsts.DefaultColumnOptionJson();
|
||||||
dto.PermissionJson = WizardConsts.DefaultPermissionJson(code);
|
dto.PermissionJson = WizardConsts.DefaultPermissionJson(code);
|
||||||
dto.PagerOptionJson = WizardConsts.DefaultPagerOptionJson;
|
dto.PagerOptionJson = WizardConsts.DefaultPagerOptionJson;
|
||||||
|
// Wizard alt formlari Form tipinde (SubFormsListFormType) uretir; sekmeler yalnizca Detay
|
||||||
|
// (tek kayit) gorunumunde acilir, Detay kapali uretilirse sekmelere ulasilamaz.
|
||||||
dto.EditingOptionJson = WizardConsts.DefaultEditingOptionJson(
|
dto.EditingOptionJson = WizardConsts.DefaultEditingOptionJson(
|
||||||
titleLangKey, formWidth, formHeight,
|
titleLangKey, formWidth, formHeight,
|
||||||
AllowDeleting, AllowAdding, AllowUpdating,
|
AllowDeleting, AllowAdding, AllowUpdating,
|
||||||
ConfirmDelete, false, AllowDetail);
|
ConfirmDelete, false, AllowDetail || subForms.Count > 0);
|
||||||
dto.DeleteFieldsDefaultValueJson = isDeletedField
|
dto.DeleteFieldsDefaultValueJson = isDeletedField
|
||||||
? WizardConsts.DefaultDeleteFieldsDefaultValueJson(KeyFieldDbSourceType)
|
? WizardConsts.DefaultDeleteFieldsDefaultValueJson(KeyFieldDbSourceType)
|
||||||
: WizardConsts.DefaultDeleteFieldsJsonOnlyId(KeyFieldDbSourceType);
|
: WizardConsts.DefaultDeleteFieldsJsonOnlyId(KeyFieldDbSourceType);
|
||||||
|
|
|
||||||
|
|
@ -312,6 +312,19 @@ public static class LookupQueryValues
|
||||||
$"AND \"IsDeleted\" = 'false' " +
|
$"AND \"IsDeleted\" = 'false' " +
|
||||||
$"ORDER BY \"Name\";";
|
$"ORDER BY \"Name\";";
|
||||||
|
|
||||||
|
// Hr_T_BenefitType wizard ile seed scriptinden kurulur, entity'si yoktur; ad bu yuzden sabit yazilir.
|
||||||
|
// Deger Code'dur: UserBenefit.BenefitType metin kolonudur ve kod kiracinin tanimladigi turle eslesir.
|
||||||
|
public static string BenefitTypeValues =
|
||||||
|
$"SELECT " +
|
||||||
|
$"\"Code\" AS \"Key\", " +
|
||||||
|
$"\"Name\" AS \"Name\" " +
|
||||||
|
$"FROM \"Hr_T_BenefitType\" " +
|
||||||
|
$"WHERE " +
|
||||||
|
$"\"TenantId\" = '{DefaultValues.TenantId}' " +
|
||||||
|
$"AND \"IsActive\" = 'true' " +
|
||||||
|
$"AND \"IsDeleted\" = 'false' " +
|
||||||
|
$"ORDER BY \"Name\";";
|
||||||
|
|
||||||
public static string BranchDepartmentValues =
|
public static string BranchDepartmentValues =
|
||||||
$"SELECT " +
|
$"SELECT " +
|
||||||
$"\"Id\" AS \"Key\", " +
|
$"\"Id\" AS \"Key\", " +
|
||||||
|
|
|
||||||
|
|
@ -9754,19 +9754,10 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep
|
||||||
|
|
||||||
AllowSearch = true,
|
AllowSearch = true,
|
||||||
LookupJson = JsonSerializer.Serialize(new LookupDto {
|
LookupJson = JsonSerializer.Serialize(new LookupDto {
|
||||||
DataSourceType = UiLookupDataSourceTypeEnum.StaticData,
|
DataSourceType = UiLookupDataSourceTypeEnum.Query,
|
||||||
DisplayExpr = "name",
|
DisplayExpr = "Name",
|
||||||
ValueExpr = "key",
|
ValueExpr = "Key",
|
||||||
LookupQuery = JsonSerializer.Serialize(new LookupDataDto[] {
|
LookupQuery = LookupQueryValues.BenefitTypeValues
|
||||||
new() { Key="Meal", Name="App.StaticLookup.BenefitMeal" },
|
|
||||||
new() { Key="Transportation", Name="App.StaticLookup.BenefitTransportation" },
|
|
||||||
new() { Key="PrivateHealthInsurance", Name="App.StaticLookup.BenefitPrivateHealthInsurance" },
|
|
||||||
new() { Key="PrivatePension", Name="App.StaticLookup.BenefitPrivatePension" },
|
|
||||||
new() { Key="Housing", Name="App.StaticLookup.BenefitHousing" },
|
|
||||||
new() { Key="Vehicle", Name="App.StaticLookup.BenefitVehicle" },
|
|
||||||
new() { Key="Phone", Name="App.StaticLookup.BenefitPhone" },
|
|
||||||
new() { Key="Other", Name="App.StaticLookup.BenefitOther" },
|
|
||||||
}),
|
|
||||||
}),
|
}),
|
||||||
ValidationRuleJson = DefaultValidationRuleRequiredJson,
|
ValidationRuleJson = DefaultValidationRuleRequiredJson,
|
||||||
ColumnCustomizationJson = DefaultColumnCustomizationJson,
|
ColumnCustomizationJson = DefaultColumnCustomizationJson,
|
||||||
|
|
|
||||||
|
|
@ -4819,7 +4819,7 @@
|
||||||
"Name": "App.Hr.OrgChart",
|
"Name": "App.Hr.OrgChart",
|
||||||
"ParentName": null,
|
"ParentName": null,
|
||||||
"DisplayName": "App.Hr.OrgChart",
|
"DisplayName": "App.Hr.OrgChart",
|
||||||
"Order": 2,
|
"Order": 3,
|
||||||
"IsEnabled": true,
|
"IsEnabled": true,
|
||||||
"MultiTenancySide": 3,
|
"MultiTenancySide": 3,
|
||||||
"Modules": "Sas|Hr"
|
"Modules": "Sas|Hr"
|
||||||
|
|
@ -5179,7 +5179,7 @@
|
||||||
"Name": "App.Hr.Visitor",
|
"Name": "App.Hr.Visitor",
|
||||||
"ParentName": null,
|
"ParentName": null,
|
||||||
"DisplayName": "App.Hr.Visitor",
|
"DisplayName": "App.Hr.Visitor",
|
||||||
"Order": 3,
|
"Order": 4,
|
||||||
"IsEnabled": true,
|
"IsEnabled": true,
|
||||||
"MultiTenancySide": 3,
|
"MultiTenancySide": 3,
|
||||||
"Modules": "Hr"
|
"Modules": "Hr"
|
||||||
|
|
@ -5739,7 +5739,7 @@
|
||||||
"Name": "App.Hr.HealthCard",
|
"Name": "App.Hr.HealthCard",
|
||||||
"ParentName": null,
|
"ParentName": null,
|
||||||
"DisplayName": "App.Hr.HealthCard",
|
"DisplayName": "App.Hr.HealthCard",
|
||||||
"Order": 11,
|
"Order": 12,
|
||||||
"IsEnabled": true,
|
"IsEnabled": true,
|
||||||
"MultiTenancySide": 3,
|
"MultiTenancySide": 3,
|
||||||
"Modules": "Hr"
|
"Modules": "Hr"
|
||||||
|
|
@ -5809,7 +5809,7 @@
|
||||||
"Name": "App.Hr.Trainings",
|
"Name": "App.Hr.Trainings",
|
||||||
"ParentName": null,
|
"ParentName": null,
|
||||||
"DisplayName": "App.Hr.Trainings",
|
"DisplayName": "App.Hr.Trainings",
|
||||||
"Order": 12,
|
"Order": 13,
|
||||||
"IsEnabled": true,
|
"IsEnabled": true,
|
||||||
"MultiTenancySide": 3,
|
"MultiTenancySide": 3,
|
||||||
"Modules": "Hr"
|
"Modules": "Hr"
|
||||||
|
|
@ -6169,7 +6169,7 @@
|
||||||
"Name": "App.Hr.Vehicles",
|
"Name": "App.Hr.Vehicles",
|
||||||
"ParentName": null,
|
"ParentName": null,
|
||||||
"DisplayName": "App.Hr.Vehicles",
|
"DisplayName": "App.Hr.Vehicles",
|
||||||
"Order": 13,
|
"Order": 14,
|
||||||
"IsEnabled": true,
|
"IsEnabled": true,
|
||||||
"MultiTenancySide": 3,
|
"MultiTenancySide": 3,
|
||||||
"Modules": "Hr"
|
"Modules": "Hr"
|
||||||
|
|
@ -7089,7 +7089,7 @@
|
||||||
"Name": "App.Hr.EventLog",
|
"Name": "App.Hr.EventLog",
|
||||||
"ParentName": null,
|
"ParentName": null,
|
||||||
"DisplayName": "App.Hr.EventLog",
|
"DisplayName": "App.Hr.EventLog",
|
||||||
"Order": 14,
|
"Order": 15,
|
||||||
"IsEnabled": true,
|
"IsEnabled": true,
|
||||||
"MultiTenancySide": 3,
|
"MultiTenancySide": 3,
|
||||||
"Modules": "Hr"
|
"Modules": "Hr"
|
||||||
|
|
@ -7159,7 +7159,7 @@
|
||||||
"Name": "App.Hr.Intranet",
|
"Name": "App.Hr.Intranet",
|
||||||
"ParentName": null,
|
"ParentName": null,
|
||||||
"DisplayName": "App.Hr.Intranet",
|
"DisplayName": "App.Hr.Intranet",
|
||||||
"Order": 15,
|
"Order": 16,
|
||||||
"IsEnabled": true,
|
"IsEnabled": true,
|
||||||
"MultiTenancySide": 3,
|
"MultiTenancySide": 3,
|
||||||
"Modules": "Sas|Hr"
|
"Modules": "Sas|Hr"
|
||||||
|
|
@ -8383,6 +8383,636 @@
|
||||||
"IsEnabled": true,
|
"IsEnabled": true,
|
||||||
"MultiTenancySide": 3,
|
"MultiTenancySide": 3,
|
||||||
"Modules": "Sas|Hr"
|
"Modules": "Sas|Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.LeaveType",
|
||||||
|
"ParentName": "App.Hr.Definitions",
|
||||||
|
"DisplayName": "App.Hr.LeaveType",
|
||||||
|
"Order": 12,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.LeaveType.Create",
|
||||||
|
"ParentName": "App.Hr.LeaveType",
|
||||||
|
"DisplayName": "App.Platform.Create",
|
||||||
|
"Order": 1,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.LeaveType.Update",
|
||||||
|
"ParentName": "App.Hr.LeaveType",
|
||||||
|
"DisplayName": "App.Platform.Update",
|
||||||
|
"Order": 2,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.LeaveType.Delete",
|
||||||
|
"ParentName": "App.Hr.LeaveType",
|
||||||
|
"DisplayName": "App.Platform.Delete",
|
||||||
|
"Order": 3,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.LeaveType.Export",
|
||||||
|
"ParentName": "App.Hr.LeaveType",
|
||||||
|
"DisplayName": "App.Platform.Export",
|
||||||
|
"Order": 4,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.LeaveType.Import",
|
||||||
|
"ParentName": "App.Hr.LeaveType",
|
||||||
|
"DisplayName": "App.Platform.Import",
|
||||||
|
"Order": 5,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.LeaveType.Note",
|
||||||
|
"ParentName": "App.Hr.LeaveType",
|
||||||
|
"DisplayName": "App.Platform.Note",
|
||||||
|
"Order": 6,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.ExpenseType",
|
||||||
|
"ParentName": "App.Hr.Definitions",
|
||||||
|
"DisplayName": "App.Hr.ExpenseType",
|
||||||
|
"Order": 13,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.ExpenseType.Create",
|
||||||
|
"ParentName": "App.Hr.ExpenseType",
|
||||||
|
"DisplayName": "App.Platform.Create",
|
||||||
|
"Order": 1,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.ExpenseType.Update",
|
||||||
|
"ParentName": "App.Hr.ExpenseType",
|
||||||
|
"DisplayName": "App.Platform.Update",
|
||||||
|
"Order": 2,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.ExpenseType.Delete",
|
||||||
|
"ParentName": "App.Hr.ExpenseType",
|
||||||
|
"DisplayName": "App.Platform.Delete",
|
||||||
|
"Order": 3,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.ExpenseType.Export",
|
||||||
|
"ParentName": "App.Hr.ExpenseType",
|
||||||
|
"DisplayName": "App.Platform.Export",
|
||||||
|
"Order": 4,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.ExpenseType.Import",
|
||||||
|
"ParentName": "App.Hr.ExpenseType",
|
||||||
|
"DisplayName": "App.Platform.Import",
|
||||||
|
"Order": 5,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.ExpenseType.Note",
|
||||||
|
"ParentName": "App.Hr.ExpenseType",
|
||||||
|
"DisplayName": "App.Platform.Note",
|
||||||
|
"Order": 6,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.BenefitType",
|
||||||
|
"ParentName": "App.Hr.Definitions",
|
||||||
|
"DisplayName": "App.Hr.BenefitType",
|
||||||
|
"Order": 14,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.BenefitType.Create",
|
||||||
|
"ParentName": "App.Hr.BenefitType",
|
||||||
|
"DisplayName": "App.Platform.Create",
|
||||||
|
"Order": 1,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.BenefitType.Update",
|
||||||
|
"ParentName": "App.Hr.BenefitType",
|
||||||
|
"DisplayName": "App.Platform.Update",
|
||||||
|
"Order": 2,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.BenefitType.Delete",
|
||||||
|
"ParentName": "App.Hr.BenefitType",
|
||||||
|
"DisplayName": "App.Platform.Delete",
|
||||||
|
"Order": 3,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.BenefitType.Export",
|
||||||
|
"ParentName": "App.Hr.BenefitType",
|
||||||
|
"DisplayName": "App.Platform.Export",
|
||||||
|
"Order": 4,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.BenefitType.Import",
|
||||||
|
"ParentName": "App.Hr.BenefitType",
|
||||||
|
"DisplayName": "App.Platform.Import",
|
||||||
|
"Order": 5,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.BenefitType.Note",
|
||||||
|
"ParentName": "App.Hr.BenefitType",
|
||||||
|
"DisplayName": "App.Platform.Note",
|
||||||
|
"Order": 6,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.WorkCalendar",
|
||||||
|
"ParentName": null,
|
||||||
|
"DisplayName": "App.Hr.WorkCalendar",
|
||||||
|
"Order": 2,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.WorkCalendar.Create",
|
||||||
|
"ParentName": "App.Hr.WorkCalendar",
|
||||||
|
"DisplayName": "App.Platform.Create",
|
||||||
|
"Order": 1,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.WorkCalendar.Update",
|
||||||
|
"ParentName": "App.Hr.WorkCalendar",
|
||||||
|
"DisplayName": "App.Platform.Update",
|
||||||
|
"Order": 2,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.WorkCalendar.Delete",
|
||||||
|
"ParentName": "App.Hr.WorkCalendar",
|
||||||
|
"DisplayName": "App.Platform.Delete",
|
||||||
|
"Order": 3,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.WorkCalendar.Export",
|
||||||
|
"ParentName": "App.Hr.WorkCalendar",
|
||||||
|
"DisplayName": "App.Platform.Export",
|
||||||
|
"Order": 4,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.WorkCalendar.Import",
|
||||||
|
"ParentName": "App.Hr.WorkCalendar",
|
||||||
|
"DisplayName": "App.Platform.Import",
|
||||||
|
"Order": 5,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.WorkCalendar.Note",
|
||||||
|
"ParentName": "App.Hr.WorkCalendar",
|
||||||
|
"DisplayName": "App.Platform.Note",
|
||||||
|
"Order": 6,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"ParentName": "App.Hr.Definitions",
|
||||||
|
"DisplayName": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"Order": 15,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryPenaltyType.Create",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"DisplayName": "App.Platform.Create",
|
||||||
|
"Order": 1,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryPenaltyType.Update",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"DisplayName": "App.Platform.Update",
|
||||||
|
"Order": 2,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryPenaltyType.Delete",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"DisplayName": "App.Platform.Delete",
|
||||||
|
"Order": 3,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryPenaltyType.Export",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"DisplayName": "App.Platform.Export",
|
||||||
|
"Order": 4,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryPenaltyType.Import",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"DisplayName": "App.Platform.Import",
|
||||||
|
"Order": 5,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryPenaltyType.Note",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"DisplayName": "App.Platform.Note",
|
||||||
|
"Order": 6,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDefense",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryCase",
|
||||||
|
"DisplayName": "App.Hr.DisciplinaryDefense",
|
||||||
|
"Order": 7,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDefense.Create",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDefense",
|
||||||
|
"DisplayName": "App.Platform.Create",
|
||||||
|
"Order": 1,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDefense.Update",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDefense",
|
||||||
|
"DisplayName": "App.Platform.Update",
|
||||||
|
"Order": 2,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDefense.Delete",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDefense",
|
||||||
|
"DisplayName": "App.Platform.Delete",
|
||||||
|
"Order": 3,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDefense.Export",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDefense",
|
||||||
|
"DisplayName": "App.Platform.Export",
|
||||||
|
"Order": 4,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDefense.Import",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDefense",
|
||||||
|
"DisplayName": "App.Platform.Import",
|
||||||
|
"Order": 5,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDefense.Note",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDefense",
|
||||||
|
"DisplayName": "App.Platform.Note",
|
||||||
|
"Order": 6,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDecision",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryCase",
|
||||||
|
"DisplayName": "App.Hr.DisciplinaryDecision",
|
||||||
|
"Order": 8,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDecision.Create",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDecision",
|
||||||
|
"DisplayName": "App.Platform.Create",
|
||||||
|
"Order": 1,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDecision.Update",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDecision",
|
||||||
|
"DisplayName": "App.Platform.Update",
|
||||||
|
"Order": 2,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDecision.Delete",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDecision",
|
||||||
|
"DisplayName": "App.Platform.Delete",
|
||||||
|
"Order": 3,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDecision.Export",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDecision",
|
||||||
|
"DisplayName": "App.Platform.Export",
|
||||||
|
"Order": 4,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDecision.Import",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDecision",
|
||||||
|
"DisplayName": "App.Platform.Import",
|
||||||
|
"Order": 5,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryDecision.Note",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryDecision",
|
||||||
|
"DisplayName": "App.Platform.Note",
|
||||||
|
"Order": 6,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryFile",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryCase",
|
||||||
|
"DisplayName": "App.Hr.DisciplinaryFile",
|
||||||
|
"Order": 9,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryFile.Create",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryFile",
|
||||||
|
"DisplayName": "App.Platform.Create",
|
||||||
|
"Order": 1,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryFile.Update",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryFile",
|
||||||
|
"DisplayName": "App.Platform.Update",
|
||||||
|
"Order": 2,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryFile.Delete",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryFile",
|
||||||
|
"DisplayName": "App.Platform.Delete",
|
||||||
|
"Order": 3,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryFile.Export",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryFile",
|
||||||
|
"DisplayName": "App.Platform.Export",
|
||||||
|
"Order": 4,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryFile.Import",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryFile",
|
||||||
|
"DisplayName": "App.Platform.Import",
|
||||||
|
"Order": 5,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryFile.Note",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryFile",
|
||||||
|
"DisplayName": "App.Platform.Note",
|
||||||
|
"Order": 6,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryCase",
|
||||||
|
"ParentName": null,
|
||||||
|
"DisplayName": "App.Hr.DisciplinaryCase",
|
||||||
|
"Order": 17,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryCase.Create",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryCase",
|
||||||
|
"DisplayName": "App.Platform.Create",
|
||||||
|
"Order": 1,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryCase.Update",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryCase",
|
||||||
|
"DisplayName": "App.Platform.Update",
|
||||||
|
"Order": 2,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryCase.Delete",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryCase",
|
||||||
|
"DisplayName": "App.Platform.Delete",
|
||||||
|
"Order": 3,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryCase.Export",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryCase",
|
||||||
|
"DisplayName": "App.Platform.Export",
|
||||||
|
"Order": 4,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryCase.Import",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryCase",
|
||||||
|
"DisplayName": "App.Platform.Import",
|
||||||
|
"Order": 5,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"GroupName": "App.Hr",
|
||||||
|
"Name": "App.Hr.DisciplinaryCase.Note",
|
||||||
|
"ParentName": "App.Hr.DisciplinaryCase",
|
||||||
|
"DisplayName": "App.Platform.Note",
|
||||||
|
"Order": 6,
|
||||||
|
"IsEnabled": true,
|
||||||
|
"MultiTenancySide": 3,
|
||||||
|
"Modules": "Hr"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
108
configs/seeds/host/data/App.Hr.BenefitType.json
Normal file
108
configs/seeds/host/data/App.Hr.BenefitType.json
Normal file
|
|
@ -0,0 +1,108 @@
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Hr.BenefitType",
|
||||||
|
"KeyFieldName": "Id",
|
||||||
|
"GeneratedAt": "2026-10-03T19:44:21.829907Z",
|
||||||
|
"Order": 0,
|
||||||
|
"Rows": [
|
||||||
|
{
|
||||||
|
"Code": "Meal",
|
||||||
|
"Name": "Yemek Kartı",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "589ba403-72aa-58ff-a484-048d400e5bc1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Transportation",
|
||||||
|
"Name": "Ulaşım Yardımı",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "2a349aab-44da-50c4-9dd4-c0b32ec195f6"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "PrivateHealthInsurance",
|
||||||
|
"Name": "Özel Sağlık Sigortası",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "d9d316a1-f4fe-595c-b19d-dc71ce0de52a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "PrivatePension",
|
||||||
|
"Name": "BES Katkısı",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "1c9ad2c0-c01d-5738-8f45-f22db605a382"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Housing",
|
||||||
|
"Name": "Konut / Lojman Yardımı",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "058f86f7-7fd4-5923-8226-c52c091102e2"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Vehicle",
|
||||||
|
"Name": "Şirket Aracı",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "c90a9125-eac2-5605-8b0b-c22a21fb73a9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Phone",
|
||||||
|
"Name": "Telefon / İnternet Desteği",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "2906a47c-7552-501d-bebd-82cf9b6ce734"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "ChildAllowance",
|
||||||
|
"Name": "Çocuk Yardımı",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "26669126-b85a-5054-b725-5712e0cbe021"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "HeatingAllowance",
|
||||||
|
"Name": "Yakacak Yardımı",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "012ddf45-57a3-5853-8a47-e7e731b60e89"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Other",
|
||||||
|
"Name": "Diğer",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "5355aa59-3f40-545d-8a94-2fd86843bbb1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
50
configs/seeds/host/data/App.Hr.DisciplinaryPenaltyType.json
Normal file
50
configs/seeds/host/data/App.Hr.DisciplinaryPenaltyType.json
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"KeyFieldName": "Id",
|
||||||
|
"GeneratedAt": "2026-10-03T07:00:00Z",
|
||||||
|
"Order": 0,
|
||||||
|
"Rows": [
|
||||||
|
{
|
||||||
|
"Id": "d15c0001-0000-4000-8000-000000000001",
|
||||||
|
"Name": "Sözlü Uyarı",
|
||||||
|
"Severity": 1,
|
||||||
|
"Description": "Kayda geçirilen sözlü uyarı",
|
||||||
|
"IsActive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "d15c0001-0000-4000-8000-000000000002",
|
||||||
|
"Name": "Yazılı Uyarı",
|
||||||
|
"Severity": 2,
|
||||||
|
"Description": "Personele tebliğ edilen yazılı uyarı",
|
||||||
|
"IsActive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "d15c0001-0000-4000-8000-000000000003",
|
||||||
|
"Name": "İhtar",
|
||||||
|
"Severity": 3,
|
||||||
|
"Description": "Tekrarı hâlinde ağır yaptırım öngören ihtarname",
|
||||||
|
"IsActive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "d15c0001-0000-4000-8000-000000000004",
|
||||||
|
"Name": "Kınama",
|
||||||
|
"Severity": 3,
|
||||||
|
"Description": "Davranışın kusurlu olduğunun yazılı bildirimi",
|
||||||
|
"IsActive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "d15c0001-0000-4000-8000-000000000005",
|
||||||
|
"Name": "Ücret Kesintisi",
|
||||||
|
"Severity": 4,
|
||||||
|
"Description": "İş Kanunu md. 38 kapsamında ücret kesme cezası",
|
||||||
|
"IsActive": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "d15c0001-0000-4000-8000-000000000006",
|
||||||
|
"Name": "Fesih",
|
||||||
|
"Severity": 5,
|
||||||
|
"Description": "İş sözleşmesinin feshi",
|
||||||
|
"IsActive": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
85
configs/seeds/host/data/App.Hr.ExpenseType.json
Normal file
85
configs/seeds/host/data/App.Hr.ExpenseType.json
Normal file
|
|
@ -0,0 +1,85 @@
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Hr.ExpenseType",
|
||||||
|
"KeyFieldName": "Id",
|
||||||
|
"GeneratedAt": "2026-10-03T19:44:21.821095Z",
|
||||||
|
"Order": 0,
|
||||||
|
"Rows": [
|
||||||
|
{
|
||||||
|
"Code": "Meal",
|
||||||
|
"Name": "Yemek",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"RequiresReceipt": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "a4ad0e7b-254b-5de0-b8fe-4af9c94f967e"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Travel",
|
||||||
|
"Name": "Yol / Ulaşım",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"RequiresReceipt": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "2ab990cb-0de4-5ce6-b226-38c3b17af848"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Accommodation",
|
||||||
|
"Name": "Konaklama",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"RequiresReceipt": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "52e29637-a3af-5396-b388-f3a0bd4818a1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Fuel",
|
||||||
|
"Name": "Akaryakıt",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"RequiresReceipt": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "901455e5-4b18-51b3-9b52-50cd208d7958"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Phone",
|
||||||
|
"Name": "Telefon",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"RequiresReceipt": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "b393fe25-2065-5043-bc59-40d11be8ba85"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Hospitality",
|
||||||
|
"Name": "Temsil / Ağırlama",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"RequiresReceipt": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "eebe1915-715b-53bd-b5f3-340d3e413c1c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Office",
|
||||||
|
"Name": "Kırtasiye / Ofis",
|
||||||
|
"DefaultAmount": null,
|
||||||
|
"CurrencyId": "TRY",
|
||||||
|
"IsTaxable": false,
|
||||||
|
"IsSgkSubject": false,
|
||||||
|
"RequiresReceipt": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "902475f9-32bc-52bb-a15e-8a177e1925f6"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
116
configs/seeds/host/data/App.Hr.LeaveType.json
Normal file
116
configs/seeds/host/data/App.Hr.LeaveType.json
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Hr.LeaveType",
|
||||||
|
"KeyFieldName": "Id",
|
||||||
|
"GeneratedAt": "2026-10-03T19:28:39.127058Z",
|
||||||
|
"Order": 0,
|
||||||
|
"Rows": [
|
||||||
|
{
|
||||||
|
"Code": "Annual",
|
||||||
|
"Name": "Yıllık İzin",
|
||||||
|
"Gender": "All",
|
||||||
|
"MaxDaysPerYear": null,
|
||||||
|
"IsPaid": true,
|
||||||
|
"DeductsFromAnnualLeave": true,
|
||||||
|
"RequiresDocument": false,
|
||||||
|
"AllowHalfDay": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "08615087-48ee-5cc2-b32b-1178fff77593"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Excuse",
|
||||||
|
"Name": "Mazeret İzni",
|
||||||
|
"Gender": "All",
|
||||||
|
"MaxDaysPerYear": null,
|
||||||
|
"IsPaid": true,
|
||||||
|
"DeductsFromAnnualLeave": false,
|
||||||
|
"RequiresDocument": false,
|
||||||
|
"AllowHalfDay": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "986f9678-1b46-5197-844d-16bf772a343a"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Unpaid",
|
||||||
|
"Name": "Ücretsiz İzin",
|
||||||
|
"Gender": "All",
|
||||||
|
"MaxDaysPerYear": null,
|
||||||
|
"IsPaid": false,
|
||||||
|
"DeductsFromAnnualLeave": false,
|
||||||
|
"RequiresDocument": false,
|
||||||
|
"AllowHalfDay": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "030adbff-8bff-51ac-8cc0-07496a616c91"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Sick",
|
||||||
|
"Name": "Hastalık İzni (Rapor)",
|
||||||
|
"Gender": "All",
|
||||||
|
"MaxDaysPerYear": null,
|
||||||
|
"IsPaid": false,
|
||||||
|
"DeductsFromAnnualLeave": false,
|
||||||
|
"RequiresDocument": true,
|
||||||
|
"AllowHalfDay": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "3b82ab6e-d846-583d-afc6-59cc97ba4a21"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Maternity",
|
||||||
|
"Name": "Doğum İzni",
|
||||||
|
"Gender": "Female",
|
||||||
|
"MaxDaysPerYear": 112,
|
||||||
|
"IsPaid": false,
|
||||||
|
"DeductsFromAnnualLeave": false,
|
||||||
|
"RequiresDocument": true,
|
||||||
|
"AllowHalfDay": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "7e391128-01b3-58a3-911a-fc300960ae2b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Paternity",
|
||||||
|
"Name": "Babalık İzni",
|
||||||
|
"Gender": "Male",
|
||||||
|
"MaxDaysPerYear": 5,
|
||||||
|
"IsPaid": true,
|
||||||
|
"DeductsFromAnnualLeave": false,
|
||||||
|
"RequiresDocument": true,
|
||||||
|
"AllowHalfDay": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "2caac0cf-91b9-5693-bb30-dcfca42e33c9"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Marriage",
|
||||||
|
"Name": "Evlilik İzni",
|
||||||
|
"Gender": "All",
|
||||||
|
"MaxDaysPerYear": 3,
|
||||||
|
"IsPaid": true,
|
||||||
|
"DeductsFromAnnualLeave": false,
|
||||||
|
"RequiresDocument": true,
|
||||||
|
"AllowHalfDay": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "b744305a-d519-5b6a-8bfe-f7dae3d7c76f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Bereavement",
|
||||||
|
"Name": "Ölüm İzni",
|
||||||
|
"Gender": "All",
|
||||||
|
"MaxDaysPerYear": 3,
|
||||||
|
"IsPaid": true,
|
||||||
|
"DeductsFromAnnualLeave": false,
|
||||||
|
"RequiresDocument": true,
|
||||||
|
"AllowHalfDay": false,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "5f61e945-848b-57ab-a266-9b3ef76b58b5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Code": "Nursing",
|
||||||
|
"Name": "Süt İzni",
|
||||||
|
"Gender": "Female",
|
||||||
|
"MaxDaysPerYear": null,
|
||||||
|
"IsPaid": true,
|
||||||
|
"DeductsFromAnnualLeave": false,
|
||||||
|
"RequiresDocument": false,
|
||||||
|
"AllowHalfDay": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "77df8125-8af7-5d2e-89b3-084e23d5a4e8"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -8,6 +8,9 @@
|
||||||
"Name": "Sabah",
|
"Name": "Sabah",
|
||||||
"StartTime": "08:00",
|
"StartTime": "08:00",
|
||||||
"EndTime": "16:00",
|
"EndTime": "16:00",
|
||||||
|
"BreakMinutes": 30,
|
||||||
|
"WorkingHours": 7.5,
|
||||||
|
"IsNightShift": false,
|
||||||
"IsActive": true,
|
"IsActive": true,
|
||||||
"Id": "df1b7d79-07a5-4afd-5c2c-3a240eae2c48"
|
"Id": "df1b7d79-07a5-4afd-5c2c-3a240eae2c48"
|
||||||
},
|
},
|
||||||
|
|
@ -15,6 +18,9 @@
|
||||||
"Name": "Akşam",
|
"Name": "Akşam",
|
||||||
"StartTime": "16:00",
|
"StartTime": "16:00",
|
||||||
"EndTime": "00:00",
|
"EndTime": "00:00",
|
||||||
|
"BreakMinutes": 30,
|
||||||
|
"WorkingHours": 7.5,
|
||||||
|
"IsNightShift": false,
|
||||||
"IsActive": true,
|
"IsActive": true,
|
||||||
"Id": "72968eb6-c7b5-1ab2-942b-3a240eae2c49"
|
"Id": "72968eb6-c7b5-1ab2-942b-3a240eae2c49"
|
||||||
},
|
},
|
||||||
|
|
@ -22,6 +28,9 @@
|
||||||
"Name": "Gece",
|
"Name": "Gece",
|
||||||
"StartTime": "00:00",
|
"StartTime": "00:00",
|
||||||
"EndTime": "08:00",
|
"EndTime": "08:00",
|
||||||
|
"BreakMinutes": 30,
|
||||||
|
"WorkingHours": 7.5,
|
||||||
|
"IsNightShift": true,
|
||||||
"IsActive": true,
|
"IsActive": true,
|
||||||
"Id": "6d625cbb-aec9-4edf-86d2-3a240eae2c49"
|
"Id": "6d625cbb-aec9-4edf-86d2-3a240eae2c49"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
168
configs/seeds/host/data/App.Hr.WorkCalendar.json
Normal file
168
configs/seeds/host/data/App.Hr.WorkCalendar.json
Normal file
|
|
@ -0,0 +1,168 @@
|
||||||
|
{
|
||||||
|
"ListFormCode": "App.Hr.WorkCalendar",
|
||||||
|
"KeyFieldName": "Id",
|
||||||
|
"GeneratedAt": "2026-10-03T19:54:48.143680Z",
|
||||||
|
"Order": 0,
|
||||||
|
"Rows": [
|
||||||
|
{
|
||||||
|
"Name": "Yılbaşı",
|
||||||
|
"StartDate": "2026-01-01",
|
||||||
|
"EndDate": "2026-01-01",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "FREQ=YEARLY",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "11cd25b7-b1e2-5888-9965-a007c301dfc5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Ulusal Egemenlik ve Çocuk Bayramı",
|
||||||
|
"StartDate": "2026-04-23",
|
||||||
|
"EndDate": "2026-04-23",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "FREQ=YEARLY",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "3fb2e8bf-673d-56ce-ba50-758ccce5d530"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Emek ve Dayanışma Günü",
|
||||||
|
"StartDate": "2026-05-01",
|
||||||
|
"EndDate": "2026-05-01",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "FREQ=YEARLY",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "017e6ebb-c07c-5d8f-ac83-c5e9b32ec1e4"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Atatürk'ü Anma, Gençlik ve Spor Bayramı",
|
||||||
|
"StartDate": "2026-05-19",
|
||||||
|
"EndDate": "2026-05-19",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "FREQ=YEARLY",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "71ed5d86-0885-55c8-9298-2896f637c37b"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Demokrasi ve Milli Birlik Günü",
|
||||||
|
"StartDate": "2026-07-15",
|
||||||
|
"EndDate": "2026-07-15",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "FREQ=YEARLY",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "d95f41cf-247e-5c43-98c7-a9db842ced44"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Zafer Bayramı",
|
||||||
|
"StartDate": "2026-08-30",
|
||||||
|
"EndDate": "2026-08-30",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "FREQ=YEARLY",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "c4c0290c-d8dd-5b8b-a6ec-f2954d3a4964"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Cumhuriyet Bayramı Arifesi",
|
||||||
|
"StartDate": "2026-10-28",
|
||||||
|
"EndDate": "2026-10-28",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "HalfDay",
|
||||||
|
"RecurrenceRule": "FREQ=YEARLY",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "3cbfe8b4-ee8a-5220-8c91-b4be7286e2f7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Cumhuriyet Bayramı",
|
||||||
|
"StartDate": "2026-10-29",
|
||||||
|
"EndDate": "2026-10-29",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "FREQ=YEARLY",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "e128e4cc-657f-57d2-94a8-675772104dcc"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Ramazan Bayramı Arifesi",
|
||||||
|
"StartDate": "2026-03-19",
|
||||||
|
"EndDate": "2026-03-19",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "HalfDay",
|
||||||
|
"RecurrenceRule": "",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "1ac9a647-3fbb-514b-951c-5fa4cbe13893"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Ramazan Bayramı",
|
||||||
|
"StartDate": "2026-03-20",
|
||||||
|
"EndDate": "2026-03-22",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "0a53e9e2-10a2-5a75-9fbb-71705795d049"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Kurban Bayramı Arifesi",
|
||||||
|
"StartDate": "2026-05-26",
|
||||||
|
"EndDate": "2026-05-26",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "HalfDay",
|
||||||
|
"RecurrenceRule": "",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "e2d70ebd-6bdd-57b7-ab9f-8d280882ec71"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Kurban Bayramı",
|
||||||
|
"StartDate": "2026-05-27",
|
||||||
|
"EndDate": "2026-05-30",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "d720ee58-f8c2-51e4-8fa8-454337df6f20"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Ramazan Bayramı Arifesi",
|
||||||
|
"StartDate": "2027-03-08",
|
||||||
|
"EndDate": "2027-03-08",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "HalfDay",
|
||||||
|
"RecurrenceRule": "",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "819f41b0-a41a-5c22-a959-83a407da2da5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Ramazan Bayramı",
|
||||||
|
"StartDate": "2027-03-09",
|
||||||
|
"EndDate": "2027-03-11",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "8933fa1a-75e4-5b0e-bc00-2e18668bc395"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Kurban Bayramı Arifesi",
|
||||||
|
"StartDate": "2027-05-15",
|
||||||
|
"EndDate": "2027-05-15",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "HalfDay",
|
||||||
|
"RecurrenceRule": "",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "83a1d3f5-9046-5e73-9f1d-fa92740ce377"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Name": "Kurban Bayramı",
|
||||||
|
"StartDate": "2027-05-16",
|
||||||
|
"EndDate": "2027-05-19",
|
||||||
|
"AllDay": true,
|
||||||
|
"DayType": "Holiday",
|
||||||
|
"RecurrenceRule": "",
|
||||||
|
"IsActive": true,
|
||||||
|
"Id": "3667a85c-8165-5a9e-a73c-527dc0db49e2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1388,7 +1388,7 @@
|
||||||
"Id": "9b1449bd-d898-43fb-96e0-50ab865b7072",
|
"Id": "9b1449bd-d898-43fb-96e0-50ab865b7072",
|
||||||
"Code": "App.Hr.OrgChart",
|
"Code": "App.Hr.OrgChart",
|
||||||
"DisplayName": "App.Hr.OrgChart",
|
"DisplayName": "App.Hr.OrgChart",
|
||||||
"Order": 3,
|
"Order": 4,
|
||||||
"Url": "/admin/organization",
|
"Url": "/admin/organization",
|
||||||
"Icon": "FaSitemap",
|
"Icon": "FaSitemap",
|
||||||
"ParentCode": "App.Hr",
|
"ParentCode": "App.Hr",
|
||||||
|
|
@ -1478,7 +1478,7 @@
|
||||||
"Id": "ae8c7c61-8b57-4335-bacb-d54bcce3d661",
|
"Id": "ae8c7c61-8b57-4335-bacb-d54bcce3d661",
|
||||||
"Code": "App.Hr.Visitor",
|
"Code": "App.Hr.Visitor",
|
||||||
"DisplayName": "App.Hr.Visitor",
|
"DisplayName": "App.Hr.Visitor",
|
||||||
"Order": 7,
|
"Order": 8,
|
||||||
"Url": "/admin/list/App.Hr.Visitor",
|
"Url": "/admin/list/App.Hr.Visitor",
|
||||||
"Icon": "FcBusinessman",
|
"Icon": "FcBusinessman",
|
||||||
"ParentCode": "App.Hr",
|
"ParentCode": "App.Hr",
|
||||||
|
|
@ -1493,7 +1493,7 @@
|
||||||
"Id": "8803f8c5-e85b-491d-9330-a9dd5a95f1a1",
|
"Id": "8803f8c5-e85b-491d-9330-a9dd5a95f1a1",
|
||||||
"Code": "App.Hr.HealthCard",
|
"Code": "App.Hr.HealthCard",
|
||||||
"DisplayName": "App.Hr.HealthCard",
|
"DisplayName": "App.Hr.HealthCard",
|
||||||
"Order": 4,
|
"Order": 5,
|
||||||
"Url": "/admin/list/App.Hr.HealthCard",
|
"Url": "/admin/list/App.Hr.HealthCard",
|
||||||
"Icon": "FcInspection",
|
"Icon": "FcInspection",
|
||||||
"ParentCode": "App.Hr",
|
"ParentCode": "App.Hr",
|
||||||
|
|
@ -1508,7 +1508,7 @@
|
||||||
"Id": "aa47dc14-483f-41ad-83f5-f304050db135",
|
"Id": "aa47dc14-483f-41ad-83f5-f304050db135",
|
||||||
"Code": "App.Hr.Trainings",
|
"Code": "App.Hr.Trainings",
|
||||||
"DisplayName": "App.Hr.Trainings",
|
"DisplayName": "App.Hr.Trainings",
|
||||||
"Order": 5,
|
"Order": 6,
|
||||||
"Url": null,
|
"Url": null,
|
||||||
"Icon": "FcGraduationCap",
|
"Icon": "FcGraduationCap",
|
||||||
"ParentCode": "App.Hr",
|
"ParentCode": "App.Hr",
|
||||||
|
|
@ -1568,7 +1568,7 @@
|
||||||
"Id": "18146db0-b2aa-49d8-b39c-0165a1d85e53",
|
"Id": "18146db0-b2aa-49d8-b39c-0165a1d85e53",
|
||||||
"Code": "App.Hr.Vehicles",
|
"Code": "App.Hr.Vehicles",
|
||||||
"DisplayName": "App.Hr.Vehicles",
|
"DisplayName": "App.Hr.Vehicles",
|
||||||
"Order": 6,
|
"Order": 7,
|
||||||
"Url": null,
|
"Url": null,
|
||||||
"Icon": "FcAutomotive",
|
"Icon": "FcAutomotive",
|
||||||
"ParentCode": "App.Hr",
|
"ParentCode": "App.Hr",
|
||||||
|
|
@ -1688,7 +1688,7 @@
|
||||||
"Id": "0f1b3f0c-f9d8-4f09-9506-59fb19272176",
|
"Id": "0f1b3f0c-f9d8-4f09-9506-59fb19272176",
|
||||||
"Code": "App.Hr.Shift",
|
"Code": "App.Hr.Shift",
|
||||||
"DisplayName": "App.Hr.Shift",
|
"DisplayName": "App.Hr.Shift",
|
||||||
"Order": 2,
|
"Order": 3,
|
||||||
"Url": "/admin/list/App.Hr.Shift",
|
"Url": "/admin/list/App.Hr.Shift",
|
||||||
"Icon": "FcClock",
|
"Icon": "FcClock",
|
||||||
"ParentCode": "App.Hr",
|
"ParentCode": "App.Hr",
|
||||||
|
|
@ -1703,7 +1703,7 @@
|
||||||
"Id": "5786d92e-0501-4775-bf1b-697a41a90f40",
|
"Id": "5786d92e-0501-4775-bf1b-697a41a90f40",
|
||||||
"Code": "App.Hr.EventLog",
|
"Code": "App.Hr.EventLog",
|
||||||
"DisplayName": "App.Hr.EventLog",
|
"DisplayName": "App.Hr.EventLog",
|
||||||
"Order": 8,
|
"Order": 9,
|
||||||
"Url": "/admin/list/App.Hr.EventLog",
|
"Url": "/admin/list/App.Hr.EventLog",
|
||||||
"Icon": "FcViewDetails",
|
"Icon": "FcViewDetails",
|
||||||
"ParentCode": "App.Hr",
|
"ParentCode": "App.Hr",
|
||||||
|
|
@ -1718,7 +1718,7 @@
|
||||||
"Id": "aaef98c6-ab15-4097-9d32-d611db7de57d",
|
"Id": "aaef98c6-ab15-4097-9d32-d611db7de57d",
|
||||||
"Code": "App.Hr.Intranet",
|
"Code": "App.Hr.Intranet",
|
||||||
"DisplayName": "App.Hr.Intranet",
|
"DisplayName": "App.Hr.Intranet",
|
||||||
"Order": 9,
|
"Order": 10,
|
||||||
"Url": null,
|
"Url": null,
|
||||||
"Icon": "FcConferenceCall",
|
"Icon": "FcConferenceCall",
|
||||||
"ParentCode": "App.Hr",
|
"ParentCode": "App.Hr",
|
||||||
|
|
@ -1833,6 +1833,96 @@
|
||||||
"IsDisabled": false,
|
"IsDisabled": false,
|
||||||
"ElementId": null,
|
"ElementId": null,
|
||||||
"ModuleId": "Hr"
|
"ModuleId": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "ee299353-fc0d-5a4b-b766-fd3729feb196",
|
||||||
|
"Code": "App.Hr.LeaveType",
|
||||||
|
"DisplayName": "App.Hr.LeaveType",
|
||||||
|
"Order": 9,
|
||||||
|
"Url": "/admin/list/App.Hr.LeaveType",
|
||||||
|
"Icon": "FcPlanner",
|
||||||
|
"ParentCode": "App.Hr.Definitions",
|
||||||
|
"RequiredPermissionName": "App.Hr.LeaveType",
|
||||||
|
"CssClass": null,
|
||||||
|
"Target": null,
|
||||||
|
"IsDisabled": false,
|
||||||
|
"ElementId": null,
|
||||||
|
"ModuleId": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "ef40a47d-2d4a-5f21-b6a2-c70c078a7b0d",
|
||||||
|
"Code": "App.Hr.ExpenseType",
|
||||||
|
"DisplayName": "App.Hr.ExpenseType",
|
||||||
|
"Order": 10,
|
||||||
|
"Url": "/admin/list/App.Hr.ExpenseType",
|
||||||
|
"Icon": "FcMoneyTransfer",
|
||||||
|
"ParentCode": "App.Hr.Definitions",
|
||||||
|
"RequiredPermissionName": "App.Hr.ExpenseType",
|
||||||
|
"CssClass": null,
|
||||||
|
"Target": null,
|
||||||
|
"IsDisabled": false,
|
||||||
|
"ElementId": null,
|
||||||
|
"ModuleId": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "479a8e6f-ffca-56aa-af6d-584b231459ca",
|
||||||
|
"Code": "App.Hr.BenefitType",
|
||||||
|
"DisplayName": "App.Hr.BenefitType",
|
||||||
|
"Order": 11,
|
||||||
|
"Url": "/admin/list/App.Hr.BenefitType",
|
||||||
|
"Icon": "FcDonate",
|
||||||
|
"ParentCode": "App.Hr.Definitions",
|
||||||
|
"RequiredPermissionName": "App.Hr.BenefitType",
|
||||||
|
"CssClass": null,
|
||||||
|
"Target": null,
|
||||||
|
"IsDisabled": false,
|
||||||
|
"ElementId": null,
|
||||||
|
"ModuleId": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "f35eff0e-a0d8-5f4c-8b34-4bd3e6ffb9c5",
|
||||||
|
"Code": "App.Hr.WorkCalendar",
|
||||||
|
"DisplayName": "App.Hr.WorkCalendar",
|
||||||
|
"Order": 2,
|
||||||
|
"Url": "/admin/list/App.Hr.WorkCalendar",
|
||||||
|
"Icon": "FcCalendar",
|
||||||
|
"ParentCode": "App.Hr",
|
||||||
|
"RequiredPermissionName": "App.Hr.WorkCalendar",
|
||||||
|
"CssClass": null,
|
||||||
|
"Target": null,
|
||||||
|
"IsDisabled": false,
|
||||||
|
"ElementId": null,
|
||||||
|
"ModuleId": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "76a5d279-bbc1-564d-9430-fe068da2a396",
|
||||||
|
"Code": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"DisplayName": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"Order": 12,
|
||||||
|
"Url": "/admin/list/App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"Icon": "FcList",
|
||||||
|
"ParentCode": "App.Hr.Definitions",
|
||||||
|
"RequiredPermissionName": "App.Hr.DisciplinaryPenaltyType",
|
||||||
|
"CssClass": null,
|
||||||
|
"Target": null,
|
||||||
|
"IsDisabled": false,
|
||||||
|
"ElementId": null,
|
||||||
|
"ModuleId": "Hr"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": "1a81c7be-ef52-5332-8118-0e83b9bb49e1",
|
||||||
|
"Code": "App.Hr.DisciplinaryCase",
|
||||||
|
"DisplayName": "App.Hr.DisciplinaryCase",
|
||||||
|
"Order": 11,
|
||||||
|
"Url": "/admin/list/App.Hr.DisciplinaryCase",
|
||||||
|
"Icon": "FcHighPriority",
|
||||||
|
"ParentCode": "App.Hr",
|
||||||
|
"RequiredPermissionName": "App.Hr.DisciplinaryCase",
|
||||||
|
"CssClass": null,
|
||||||
|
"Target": null,
|
||||||
|
"IsDisabled": false,
|
||||||
|
"ElementId": null,
|
||||||
|
"ModuleId": "Hr"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
27
configs/seeds/host/sql/object/Hr_T_BenefitType.sql
Normal file
27
configs/seeds/host/sql/object/Hr_T_BenefitType.sql
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
IF OBJECT_ID(N'[dbo].[Hr_T_BenefitType]', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[Hr_T_BenefitType]
|
||||||
|
(
|
||||||
|
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
||||||
|
[TenantId] uniqueidentifier NULL,
|
||||||
|
[Code] nvarchar(32) NOT NULL,
|
||||||
|
[Name] nvarchar(128) NOT NULL,
|
||||||
|
[DefaultAmount] decimal(18,2) NULL,
|
||||||
|
[CurrencyId] nvarchar(64) NULL,
|
||||||
|
[IsTaxable] bit NOT NULL DEFAULT 0,
|
||||||
|
[IsSgkSubject] bit NOT NULL DEFAULT 0,
|
||||||
|
[IsActive] bit NOT NULL DEFAULT 1,
|
||||||
|
[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_BenefitType] 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
|
||||||
32
configs/seeds/host/sql/object/Hr_T_DisciplinaryCase.sql
Normal file
32
configs/seeds/host/sql/object/Hr_T_DisciplinaryCase.sql
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
IF OBJECT_ID(N'[dbo].[Hr_T_DisciplinaryCase]', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[Hr_T_DisciplinaryCase]
|
||||||
|
(
|
||||||
|
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
||||||
|
[TenantId] uniqueidentifier NULL,
|
||||||
|
[CaseNo] nvarchar(32) NULL,
|
||||||
|
[UserId] uniqueidentifier NOT NULL,
|
||||||
|
[DepartmentId] uniqueidentifier NULL,
|
||||||
|
[JobPositionId] uniqueidentifier NULL,
|
||||||
|
[IncidentDate] date NOT NULL,
|
||||||
|
[IncidentTime] datetime NULL,
|
||||||
|
[IncidentPlace] nvarchar(256) NULL,
|
||||||
|
[Subject] nvarchar(256) NOT NULL,
|
||||||
|
[IncidentDescription] nvarchar(MAX) NOT NULL,
|
||||||
|
[WitnessUserIds] nvarchar(MAX) NULL,
|
||||||
|
[ReportedById] uniqueidentifier NULL,
|
||||||
|
[Status] nvarchar(32) NOT NULL DEFAULT 'Open',
|
||||||
|
[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_DisciplinaryCase] 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
|
||||||
28
configs/seeds/host/sql/object/Hr_T_DisciplinaryDecision.sql
Normal file
28
configs/seeds/host/sql/object/Hr_T_DisciplinaryDecision.sql
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
IF OBJECT_ID(N'[dbo].[Hr_T_DisciplinaryDecision]', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[Hr_T_DisciplinaryDecision]
|
||||||
|
(
|
||||||
|
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
||||||
|
[TenantId] uniqueidentifier NULL,
|
||||||
|
[CaseId] uniqueidentifier NOT NULL,
|
||||||
|
[DecisionDate] date NOT NULL,
|
||||||
|
[PenaltyTypeId] uniqueidentifier NOT NULL,
|
||||||
|
[EffectiveDate] date NULL,
|
||||||
|
[NotificationDate] date NULL,
|
||||||
|
[DeductionAmount] decimal(18, 4) NULL,
|
||||||
|
[DecisionText] nvarchar(MAX) NULL,
|
||||||
|
[Status] nvarchar(32) NOT NULL DEFAULT 'Draft',
|
||||||
|
[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_DisciplinaryDecision] 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
|
||||||
26
configs/seeds/host/sql/object/Hr_T_DisciplinaryDefense.sql
Normal file
26
configs/seeds/host/sql/object/Hr_T_DisciplinaryDefense.sql
Normal file
|
|
@ -0,0 +1,26 @@
|
||||||
|
IF OBJECT_ID(N'[dbo].[Hr_T_DisciplinaryDefense]', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[Hr_T_DisciplinaryDefense]
|
||||||
|
(
|
||||||
|
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
||||||
|
[TenantId] uniqueidentifier NULL,
|
||||||
|
[CaseId] uniqueidentifier NOT NULL,
|
||||||
|
[RequestDate] date NOT NULL,
|
||||||
|
[DueDate] date NOT NULL,
|
||||||
|
[ResponseDate] date NULL,
|
||||||
|
[DefenseText] nvarchar(MAX) NULL,
|
||||||
|
[Status] nvarchar(32) NOT NULL DEFAULT 'Requested',
|
||||||
|
[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_DisciplinaryDefense] 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
|
||||||
25
configs/seeds/host/sql/object/Hr_T_DisciplinaryFile.sql
Normal file
25
configs/seeds/host/sql/object/Hr_T_DisciplinaryFile.sql
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
IF OBJECT_ID(N'[dbo].[Hr_T_DisciplinaryFile]', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[Hr_T_DisciplinaryFile]
|
||||||
|
(
|
||||||
|
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
||||||
|
[TenantId] uniqueidentifier NULL,
|
||||||
|
[CaseId] uniqueidentifier NOT NULL,
|
||||||
|
[DocumentTypeId] uniqueidentifier NULL,
|
||||||
|
[FileDate] date NOT NULL,
|
||||||
|
[FileName] nvarchar(256) NOT NULL,
|
||||||
|
[FileContent] nvarchar(MAX) NOT 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_DisciplinaryFile] 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
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
IF OBJECT_ID(N'[dbo].[Hr_T_DisciplinaryPenaltyType]', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[Hr_T_DisciplinaryPenaltyType]
|
||||||
|
(
|
||||||
|
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
||||||
|
[TenantId] uniqueidentifier NULL,
|
||||||
|
[Name] nvarchar(128) NOT NULL,
|
||||||
|
[Severity] int NOT NULL DEFAULT 1,
|
||||||
|
[Description] nvarchar(512) NULL,
|
||||||
|
[IsActive] bit NOT NULL DEFAULT 1,
|
||||||
|
[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_DisciplinaryPenaltyType] 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
|
||||||
28
configs/seeds/host/sql/object/Hr_T_ExpenseType.sql
Normal file
28
configs/seeds/host/sql/object/Hr_T_ExpenseType.sql
Normal file
|
|
@ -0,0 +1,28 @@
|
||||||
|
IF OBJECT_ID(N'[dbo].[Hr_T_ExpenseType]', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[Hr_T_ExpenseType]
|
||||||
|
(
|
||||||
|
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
||||||
|
[TenantId] uniqueidentifier NULL,
|
||||||
|
[Code] nvarchar(32) NOT NULL,
|
||||||
|
[Name] nvarchar(128) NOT NULL,
|
||||||
|
[DefaultAmount] decimal(18,2) NULL,
|
||||||
|
[CurrencyId] nvarchar(64) NULL,
|
||||||
|
[IsTaxable] bit NOT NULL DEFAULT 0,
|
||||||
|
[IsSgkSubject] bit NOT NULL DEFAULT 0,
|
||||||
|
[RequiresReceipt] bit NOT NULL DEFAULT 0,
|
||||||
|
[IsActive] bit NOT NULL DEFAULT 1,
|
||||||
|
[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_ExpenseType] 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
|
||||||
29
configs/seeds/host/sql/object/Hr_T_LeaveType.sql
Normal file
29
configs/seeds/host/sql/object/Hr_T_LeaveType.sql
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
IF OBJECT_ID(N'[dbo].[Hr_T_LeaveType]', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[Hr_T_LeaveType]
|
||||||
|
(
|
||||||
|
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
||||||
|
[TenantId] uniqueidentifier NULL,
|
||||||
|
[Code] nvarchar(32) NOT NULL,
|
||||||
|
[Name] nvarchar(128) NOT NULL,
|
||||||
|
[Gender] nvarchar(16) NOT NULL DEFAULT 'All',
|
||||||
|
[MaxDaysPerYear] int NULL,
|
||||||
|
[IsPaid] bit NOT NULL DEFAULT 1,
|
||||||
|
[DeductsFromAnnualLeave] bit NOT NULL DEFAULT 0,
|
||||||
|
[RequiresDocument] bit NOT NULL DEFAULT 0,
|
||||||
|
[AllowHalfDay] bit NOT NULL DEFAULT 0,
|
||||||
|
[IsActive] bit NOT NULL DEFAULT 1,
|
||||||
|
[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_LeaveType] 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
|
||||||
|
|
@ -7,6 +7,9 @@ BEGIN
|
||||||
[Name] nvarchar(64) NOT NULL,
|
[Name] nvarchar(64) NOT NULL,
|
||||||
[StartTime] nvarchar(5) NULL,
|
[StartTime] nvarchar(5) NULL,
|
||||||
[EndTime] nvarchar(5) NULL,
|
[EndTime] nvarchar(5) NULL,
|
||||||
|
[BreakMinutes] int NULL,
|
||||||
|
[WorkingHours] decimal(5,2) NULL,
|
||||||
|
[IsNightShift] bit NOT NULL DEFAULT 0,
|
||||||
[IsActive] bit NOT NULL DEFAULT 1,
|
[IsActive] bit NOT NULL DEFAULT 1,
|
||||||
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
|
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
|
||||||
[CreatorId] uniqueidentifier NULL,
|
[CreatorId] uniqueidentifier NULL,
|
||||||
|
|
|
||||||
27
configs/seeds/host/sql/object/Hr_T_WorkCalendar.sql
Normal file
27
configs/seeds/host/sql/object/Hr_T_WorkCalendar.sql
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
IF OBJECT_ID(N'[dbo].[Hr_T_WorkCalendar]', 'U') IS NULL
|
||||||
|
BEGIN
|
||||||
|
CREATE TABLE [dbo].[Hr_T_WorkCalendar]
|
||||||
|
(
|
||||||
|
[Id] uniqueidentifier NOT NULL DEFAULT NEWID(),
|
||||||
|
[TenantId] uniqueidentifier NULL,
|
||||||
|
[Name] nvarchar(128) NOT NULL,
|
||||||
|
[StartDate] date NOT NULL,
|
||||||
|
[EndDate] date NOT NULL,
|
||||||
|
[AllDay] bit NOT NULL DEFAULT 1,
|
||||||
|
[DayType] nvarchar(16) NOT NULL DEFAULT 'Holiday',
|
||||||
|
[RecurrenceRule] nvarchar(256) NULL,
|
||||||
|
[IsActive] bit NOT NULL DEFAULT 1,
|
||||||
|
[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_WorkCalendar] 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
|
||||||
1817
configs/seeds/host/wizard/BenefitType.json
Normal file
1817
configs/seeds/host/wizard/BenefitType.json
Normal file
File diff suppressed because it is too large
Load diff
2573
configs/seeds/host/wizard/DisciplinaryCase.json
Normal file
2573
configs/seeds/host/wizard/DisciplinaryCase.json
Normal file
File diff suppressed because it is too large
Load diff
1907
configs/seeds/host/wizard/DisciplinaryDecision.json
Normal file
1907
configs/seeds/host/wizard/DisciplinaryDecision.json
Normal file
File diff suppressed because it is too large
Load diff
1646
configs/seeds/host/wizard/DisciplinaryDefense.json
Normal file
1646
configs/seeds/host/wizard/DisciplinaryDefense.json
Normal file
File diff suppressed because it is too large
Load diff
1484
configs/seeds/host/wizard/DisciplinaryFile.json
Normal file
1484
configs/seeds/host/wizard/DisciplinaryFile.json
Normal file
File diff suppressed because it is too large
Load diff
1368
configs/seeds/host/wizard/DisciplinaryPenaltyType.json
Normal file
1368
configs/seeds/host/wizard/DisciplinaryPenaltyType.json
Normal file
File diff suppressed because it is too large
Load diff
1972
configs/seeds/host/wizard/ExpenseType.json
Normal file
1972
configs/seeds/host/wizard/ExpenseType.json
Normal file
File diff suppressed because it is too large
Load diff
2150
configs/seeds/host/wizard/LeaveType.json
Normal file
2150
configs/seeds/host/wizard/LeaveType.json
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -62,6 +62,24 @@
|
||||||
"En": "End Time",
|
"En": "End Time",
|
||||||
"Tr": "Bitiş Saati"
|
"Tr": "Bitiş Saati"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"FieldName": "BreakMinutes",
|
||||||
|
"CaptionName": "App.Listform.ListformField.BreakMinutes",
|
||||||
|
"En": "Break (min)",
|
||||||
|
"Tr": "Mola (dk)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"FieldName": "WorkingHours",
|
||||||
|
"CaptionName": "App.Listform.ListformField.WorkingHours",
|
||||||
|
"En": "Working Hours",
|
||||||
|
"Tr": "Çalışma Süresi (Saat)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"FieldName": "IsNightShift",
|
||||||
|
"CaptionName": "App.Listform.ListformField.IsNightShift",
|
||||||
|
"En": "Night Shift",
|
||||||
|
"Tr": "Gece Vardiyası"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"FieldName": "IsActive",
|
"FieldName": "IsActive",
|
||||||
"CaptionName": "App.Listform.ListformField.IsActive",
|
"CaptionName": "App.Listform.ListformField.IsActive",
|
||||||
|
|
@ -141,7 +159,22 @@
|
||||||
"UpdateBeforeCommand": null,
|
"UpdateBeforeCommand": null,
|
||||||
"UpdateAfterCommand": null,
|
"UpdateAfterCommand": null,
|
||||||
"UpdateFieldsDefaultValueDto": [],
|
"UpdateFieldsDefaultValueDto": [],
|
||||||
"FormFieldsDefaultValueDto": [],
|
"FormFieldsDefaultValueDto": [
|
||||||
|
{
|
||||||
|
"FieldName": "IsNightShift",
|
||||||
|
"FieldDbType": 3,
|
||||||
|
"Value": "false",
|
||||||
|
"CustomValueType": 1,
|
||||||
|
"SqlQuery": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"FieldName": "IsActive",
|
||||||
|
"FieldDbType": 3,
|
||||||
|
"Value": "true",
|
||||||
|
"CustomValueType": 1,
|
||||||
|
"SqlQuery": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
"WidgetsDto": [
|
"WidgetsDto": [
|
||||||
{
|
{
|
||||||
"ColGap": 3,
|
"ColGap": 3,
|
||||||
|
|
@ -343,7 +376,7 @@
|
||||||
"Title": "App.Hr.Shift.Title",
|
"Title": "App.Hr.Shift.Title",
|
||||||
"ShowTitle": true,
|
"ShowTitle": true,
|
||||||
"Width": 800,
|
"Width": 800,
|
||||||
"Height": 275,
|
"Height": 400,
|
||||||
"FullScreen": false,
|
"FullScreen": false,
|
||||||
"HideOnOutsideClick": true,
|
"HideOnOutsideClick": true,
|
||||||
"ResizeEnabled": true,
|
"ResizeEnabled": true,
|
||||||
|
|
@ -1206,14 +1239,266 @@
|
||||||
"JoinFieldName2": null,
|
"JoinFieldName2": null,
|
||||||
"BaseTableJoinFieldName2_OrValue": null
|
"BaseTableJoinFieldName2_OrValue": null
|
||||||
},
|
},
|
||||||
"FieldName": "IsActive",
|
"FieldName": "BreakMinutes",
|
||||||
"CaptionName": "App.Listform.ListformField.IsActive",
|
"CaptionName": "App.Listform.ListformField.BreakMinutes",
|
||||||
"PlaceHolder": null,
|
"PlaceHolder": null,
|
||||||
"ReadOnly": false,
|
"ReadOnly": false,
|
||||||
"Visible": true,
|
"Visible": true,
|
||||||
"IsActive": true,
|
"IsActive": true,
|
||||||
"Width": 0,
|
"Width": 0,
|
||||||
"ListOrderNo": 5,
|
"ListOrderNo": 5,
|
||||||
|
"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": 4,
|
||||||
|
"EditGroupOrderNo": 1,
|
||||||
|
"EditorType2": "dxNumberBox",
|
||||||
|
"ColSpan": 1,
|
||||||
|
"EditorOptions": "{\"min\":0,\"showSpinButtons\":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.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": 6,
|
||||||
|
"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": 5,
|
||||||
|
"EditGroupOrderNo": 1,
|
||||||
|
"EditorType2": "dxNumberBox",
|
||||||
|
"ColSpan": 1,
|
||||||
|
"EditorOptions": "{\"min\":0,\"max\":24,\"showClearButton\":true,\"format\":{\"type\":\"fixedPoint\",\"precision\":2}}",
|
||||||
|
"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": "IsNightShift",
|
||||||
|
"CaptionName": "App.Listform.ListformField.IsNightShift",
|
||||||
|
"PlaceHolder": null,
|
||||||
|
"ReadOnly": false,
|
||||||
|
"Visible": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Width": 0,
|
||||||
|
"ListOrderNo": 7,
|
||||||
"SourceDbType": 3,
|
"SourceDbType": 3,
|
||||||
"CultureName": "en",
|
"CultureName": "en",
|
||||||
"DataType": "boolean",
|
"DataType": "boolean",
|
||||||
|
|
@ -1313,7 +1598,145 @@
|
||||||
},
|
},
|
||||||
"Alignment": null,
|
"Alignment": null,
|
||||||
"Format": null,
|
"Format": null,
|
||||||
"EditOrderNo": 4,
|
"EditOrderNo": 6,
|
||||||
|
"EditGroupOrderNo": 1,
|
||||||
|
"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.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": "IsActive",
|
||||||
|
"CaptionName": "App.Listform.ListformField.IsActive",
|
||||||
|
"PlaceHolder": null,
|
||||||
|
"ReadOnly": false,
|
||||||
|
"Visible": true,
|
||||||
|
"IsActive": true,
|
||||||
|
"Width": 0,
|
||||||
|
"ListOrderNo": 8,
|
||||||
|
"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": [
|
||||||
|
{
|
||||||
|
"Type": "required",
|
||||||
|
"Message": null,
|
||||||
|
"IgnoreEmptyValue": false,
|
||||||
|
"Reevaluate": true,
|
||||||
|
"ComparisonType": "",
|
||||||
|
"Pattern": "",
|
||||||
|
"Max": null,
|
||||||
|
"Min": null,
|
||||||
|
"Trim": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"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": null,
|
||||||
|
"Format": null,
|
||||||
|
"EditOrderNo": 7,
|
||||||
"EditGroupOrderNo": 1,
|
"EditGroupOrderNo": 1,
|
||||||
"EditorType2": "dxCheckBox",
|
"EditorType2": "dxCheckBox",
|
||||||
"ColSpan": 1,
|
"ColSpan": 1,
|
||||||
|
|
@ -1336,7 +1759,10 @@
|
||||||
"App.Hr.Shift",
|
"App.Hr.Shift",
|
||||||
"App.Hr.Shift.Title",
|
"App.Hr.Shift.Title",
|
||||||
"App.Hr.Shift.Desc",
|
"App.Hr.Shift.Desc",
|
||||||
"App.Listform.ListformField.ShiftName"
|
"App.Listform.ListformField.ShiftName",
|
||||||
|
"App.Listform.ListformField.BreakMinutes",
|
||||||
|
"App.Listform.ListformField.WorkingHours",
|
||||||
|
"App.Listform.ListformField.IsNightShift"
|
||||||
],
|
],
|
||||||
"PermissionGroupNames": [],
|
"PermissionGroupNames": [],
|
||||||
"PermissionNames": [
|
"PermissionNames": [
|
||||||
|
|
|
||||||
1836
configs/seeds/host/wizard/WorkCalendar.json
Normal file
1836
configs/seeds/host/wizard/WorkCalendar.json
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -25,7 +25,8 @@ import { useEffect, useMemo, useState } from 'react'
|
||||||
import PageTitle from '@/components/shared/PageTitle'
|
import PageTitle from '@/components/shared/PageTitle'
|
||||||
import { FaQuestionCircle } from 'react-icons/fa'
|
import { FaQuestionCircle } from 'react-icons/fa'
|
||||||
|
|
||||||
function getOptions(selectOptions?: Record<string, string>) {
|
// Option labels are stored as language keys; plain-text labels fall back to themselves.
|
||||||
|
function getOptions(translate: (key: string) => string, selectOptions?: Record<string, string>) {
|
||||||
const options: SelectBoxOption[] = []
|
const options: SelectBoxOption[] = []
|
||||||
|
|
||||||
if (!selectOptions) {
|
if (!selectOptions) {
|
||||||
|
|
@ -35,7 +36,7 @@ function getOptions(selectOptions?: Record<string, string>) {
|
||||||
Object.entries(selectOptions).forEach(([key, value]) =>
|
Object.entries(selectOptions).forEach(([key, value]) =>
|
||||||
options.push({
|
options.push({
|
||||||
value: key,
|
value: key,
|
||||||
label: value,
|
label: translate('::' + value),
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -182,26 +183,29 @@ const Settings = () => {
|
||||||
<Field type="number" name={setting.code} component={Input} />
|
<Field type="number" name={setting.code} component={Input} />
|
||||||
)}
|
)}
|
||||||
{setting.dataType === 'Memo' && (
|
{setting.dataType === 'Memo' && (
|
||||||
<Field type="text" name={setting.code} textArea component={Input} />
|
<Field textArea type="text" name={setting.code} component={Input} />
|
||||||
)}
|
)}
|
||||||
{setting.dataType === 'Bool' && (
|
{setting.dataType === 'Bool' && (
|
||||||
<Field name={setting.code} component={Checkbox}></Field>
|
<Field name={setting.code} component={Checkbox}></Field>
|
||||||
)}
|
)}
|
||||||
{setting.dataType === 'List' && (
|
{setting.dataType === 'List' && (
|
||||||
<Field name={setting.code}>
|
<Field name={setting.code}>
|
||||||
{({ field, form }: FieldProps<any>) => (
|
{({ field, form }: FieldProps<any>) => {
|
||||||
|
const options = getOptions(translate, setting.selectOptions)
|
||||||
|
return (
|
||||||
<Select
|
<Select
|
||||||
field={field}
|
field={field}
|
||||||
form={form}
|
form={form}
|
||||||
options={getOptions(setting.selectOptions)}
|
options={options}
|
||||||
value={getOptions(setting.selectOptions).filter(
|
value={options.filter(
|
||||||
(option) => option.value === values[setting.code],
|
(option) => option.value === values[setting.code],
|
||||||
)}
|
)}
|
||||||
onChange={(option) =>
|
onChange={(option) =>
|
||||||
form.setFieldValue(field.name, option?.value)
|
form.setFieldValue(field.name, option?.value)
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
)}
|
)
|
||||||
|
}}
|
||||||
</Field>
|
</Field>
|
||||||
)}
|
)}
|
||||||
</>
|
</>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue