From ddff672eac136180b7876f6a741859af953b774f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96ZT=C3=9CRK?= <76204082+iamsedatozturk@users.noreply.github.com> Date: Thu, 8 Oct 2026 09:24:59 +0300 Subject: [PATCH] =?UTF-8?q?Production=20men=C3=BC=20ve=20yer=20de=C4=9Fi?= =?UTF-8?q?=C5=9Fiklikleri?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lowcode-reference.instructions.md | 8 +- README.md | 4 +- ....cs => 20261008061754_Initial.Designer.cs} | 2 +- ...6_Initial.cs => 20261008061754_Initial.cs} | 0 .../data/Abp.Identity.PermissionGroups.json | 5 + .../seeds/data/Abp.Identity.Permissions.json | 880 +++++++++--------- .../data/App.Languages.LanguageText.json | 222 ++--- configs/seeds/data/App.Menus.Menu.json | 155 +-- configs/seeds/data/App.Menus.Module.json | 4 + ...er.json => App.Production.WorkCenter.json} | 2 +- ...json => App.Production.WorkCenterTag.json} | 2 +- configs/seeds/docs/modules/App.Hr.md | 122 +-- configs/seeds/docs/modules/App.Inventory.md | 351 ++----- configs/seeds/docs/modules/App.Production.md | 230 +++++ ...nv_T_Operation.sql => Prd_T_Operation.sql} | 4 +- ...ion.sql => Prd_T_OperationInstruction.sql} | 4 +- ..._T_WorkCenter.sql => Prd_T_WorkCenter.sql} | 4 +- ...acity.sql => Prd_T_WorkCenterCapacity.sql} | 4 +- ...kCenterTag.sql => Prd_T_WorkCenterTag.sql} | 4 +- ...nv_T_Operation.sql => Prd_T_Operation.sql} | 6 +- ...ion.sql => Prd_T_OperationInstruction.sql} | 6 +- ..._T_WorkCenter.sql => Prd_T_WorkCenter.sql} | 6 +- ...acity.sql => Prd_T_WorkCenterCapacity.sql} | 6 +- ...kCenterTag.sql => Prd_T_WorkCenterTag.sql} | 6 +- configs/seeds/wizard/BenefitType.json | 20 +- configs/seeds/wizard/Bom.json | 2 +- configs/seeds/wizard/BomComponent.json | 2 +- configs/seeds/wizard/BomOperation.json | 4 +- configs/seeds/wizard/BomOverview.json | 4 +- configs/seeds/wizard/CandidateSource.json | 14 +- configs/seeds/wizard/Certificate.json | 12 +- .../seeds/wizard/DisciplinaryPenaltyType.json | 6 +- configs/seeds/wizard/Doctor.json | 22 +- configs/seeds/wizard/DocumentType.json | 16 +- configs/seeds/wizard/EvaluationCriterion.json | 16 +- configs/seeds/wizard/ExpenseType.json | 22 +- configs/seeds/wizard/Hospital.json | 12 +- configs/seeds/wizard/HospitalDepartment.json | 12 +- configs/seeds/wizard/LeaveType.json | 26 +- configs/seeds/wizard/Operation.json | 154 +-- .../seeds/wizard/OperationInstruction.json | 136 +-- configs/seeds/wizard/PerformanceRating.json | 24 +- configs/seeds/wizard/Product.json | 10 +- configs/seeds/wizard/ProductCategory.json | 8 +- configs/seeds/wizard/ProductVariant.json | 2 +- configs/seeds/wizard/RejectionReason.json | 16 +- configs/seeds/wizard/Shift.json | 18 +- configs/seeds/wizard/Training.json | 22 +- configs/seeds/wizard/TrainingFile.json | 8 +- configs/seeds/wizard/TrainingParticipant.json | 8 +- configs/seeds/wizard/TrainingSubject.json | 30 +- configs/seeds/wizard/TrainingType.json | 31 +- configs/seeds/wizard/VehicleDocument.json | 6 +- .../wizard/VehicleExpenseDefinition.json | 6 +- configs/seeds/wizard/WorkCalendar.json | 6 +- configs/seeds/wizard/WorkCenter.json | 154 +-- configs/seeds/wizard/WorkCenterCapacity.json | 136 +-- configs/seeds/wizard/WorkCenterGeneral.json | 142 +-- configs/seeds/wizard/WorkCenterTag.json | 131 +-- 59 files changed, 1694 insertions(+), 1581 deletions(-) rename api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/{20261002230416_Initial.Designer.cs => 20261008061754_Initial.Designer.cs} (99%) rename api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/{20261002230416_Initial.cs => 20261008061754_Initial.cs} (100%) rename configs/seeds/data/{App.Inventory.WorkCenter.json => App.Production.WorkCenter.json} (85%) rename configs/seeds/data/{App.Inventory.WorkCenterTag.json => App.Production.WorkCenterTag.json} (91%) create mode 100644 configs/seeds/docs/modules/App.Production.md rename configs/seeds/postgres/object/{Inv_T_Operation.sql => Prd_T_Operation.sql} (86%) rename configs/seeds/postgres/object/{Inv_T_OperationInstruction.sql => Prd_T_OperationInstruction.sql} (82%) rename configs/seeds/postgres/object/{Inv_T_WorkCenter.sql => Prd_T_WorkCenter.sql} (90%) rename configs/seeds/postgres/object/{Inv_T_WorkCenterCapacity.sql => Prd_T_WorkCenterCapacity.sql} (83%) rename configs/seeds/postgres/object/{Inv_T_WorkCenterTag.sql => Prd_T_WorkCenterTag.sql} (80%) rename configs/seeds/sql/object/{Inv_T_Operation.sql => Prd_T_Operation.sql} (86%) rename configs/seeds/sql/object/{Inv_T_OperationInstruction.sql => Prd_T_OperationInstruction.sql} (84%) rename configs/seeds/sql/object/{Inv_T_WorkCenter.sql => Prd_T_WorkCenter.sql} (89%) rename configs/seeds/sql/object/{Inv_T_WorkCenterCapacity.sql => Prd_T_WorkCenterCapacity.sql} (84%) rename configs/seeds/sql/object/{Inv_T_WorkCenterTag.sql => Prd_T_WorkCenterTag.sql} (82%) diff --git a/.github/instructions/lowcode-reference.instructions.md b/.github/instructions/lowcode-reference.instructions.md index 83386731..c0438c84 100644 --- a/.github/instructions/lowcode-reference.instructions.md +++ b/.github/instructions/lowcode-reference.instructions.md @@ -1371,8 +1371,8 @@ klasörü `Entities/Tenant/Hr/Definitions`. Tanımlar alt menüsü `App.Hr.Defin (`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. +Araçlar (`App.Hr.Vehicles`) `App.Hr` altında ara menüdür; ara yetki aynı kodu taşır. Eğitimler +(`App.Hr.Training`) doğrudan `App.Hr` altındadır; Eğitim Tipleri/Konuları `App.Hr.Definitions` altındadır. 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 `Hr_T_MessengerConversation*`, entity klasörü `Entities/Tenant/Hr/Intranet`. `Sas_T_IntranetWidget` @@ -1396,8 +1396,8 @@ listesinde `Hr` varsa görür (modül listesi boş kiracıda süzme yoktur — ` | **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`, `LateToleranceMinutes`/`EarlyLeaveToleranceMinutes` (boşsa Ayarlar › Puantaj), `WorkingHours`, `IsNightShift`, `IsActive`. Seed `data/App.Hr.Shift.json`. | | **Event Log** | `App.Hr.EventLog` | `Hr_T_EventLog` | tenant | Olay günlüğü: vardiya amiri / güvenlik odası / gözlem odası gibi kaynakların (`LogSource` statik lookup) gün içi kayıtları — `BranchId`, `UserId` (olayı yaşayan), `EventDate`/`EventTime`, `Importance`, `ShiftId` (`Hr_T_Shift`), `Description`. Wizard `wizard/EventLog.json`, tablo `sql/object/Hr_T_EventLog.sql`. | -| **Trainings › Training Type / Subject** | `App.Hr.TrainingType` · `App.Hr.TrainingSubject` | `Hr_T_TrainingType` · `Hr_T_TrainingSubject` | tenant | Eğitim türü (`Name`, `IsActive`) ve konusu (`TrainingTypeId`, `Name`, `IsEvaluated`, `IsActive`). Wizard; seed `data/App.Hr.{TrainingType,TrainingSubject}.json`. | -| **Trainings › Training** | `App.Hr.Training` (alt formlar `App.Hr.TrainingParticipant`, `App.Hr.TrainingFile`) | `Hr_T_Training` · `Hr_T_TrainingParticipant` · `Hr_T_TrainingFile` | tenant | Eğitim kaydı: tür → konu cascade (`TrainingSubjectId` ← `TrainingTypeId`), şube, tarih/saat + `TotalHours`, `Status` (`Open`/`Closed`), eğitmen/yer/kurum, kazandırdığı yetkinlikler (`SkillIds` — `dxTagBox`, `Hr_T_Skill`), maliyet kalemleri + `CostTotal`. Katılımcı alt formu kullanıcıyı `AbpUsers`'tan seçer, `HireDate`/`DepartmentId`/`JobPositionId` kopyalanır; `AttendanceStatus`, değerlendirme/sınav puanı. Dosya alt formu `DocumentTypeId` (`Hr_T_DocumentType`) taşır. Katılım belgesi `Raporlar` kategorisindeki "Katılım Belgesi" şablonudur (`App.Hr.TrainingParticipant`). Wizard. | +| **Definitions › 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`. | +| **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. | diff --git a/README.md b/README.md index 85805d44..ccf7360b 100644 --- a/README.md +++ b/README.md @@ -984,7 +984,7 @@ kimlikle kurulur (`PlatformConsts.Branches.BranchIdDefaultValue`) ve `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 +(`App.Hr.Training`), 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`. **İşe Alım** (`App.Hr.Recruitment`) da wizard ile üretilmiştir: kadro talebi (Grid Workflow onayı) → ilan → aday (CV, KVKK açık rızası zorunlu — tabloda `CHECK`) → başvuru (aşama kanbanı) → mülakat (takvim, kriter @@ -1268,6 +1268,8 @@ ekranın kendi ayrıntılı açıklamasını gösterir (`DescTr`/`DescEn`, `lowc | [App.Administration.md](configs/seeds/docs/modules/App.Administration.md) | Yönetim (`App.Administration`) | Tanımlamalar (Kontaklar: satış ve satınalmanın ortak müşteri/tedarikçi kartı ve sekmeleri, kontak etiketleri) | | [App.Hr.md](configs/seeds/docs/modules/App.Hr.md) | İnsan Kaynakları (`App.Hr`) | Tanımlamalar (dizin + genel tanımlar), Organizasyon ve Yetkinlik, Personel Kaydı (Kimlik › Kullanıcılar › detay), İşe Alım, Çalışma Takvimi ve Vardiyalar, İzin Yönetimi, Puantaj ve Devam Takibi, Sağlık Kartları, Eğitimler, Performans Yönetimi, Disiplin Dosyaları, Araçlar, Ziyaretçiler, Olay Günlüğü, Intranet | | [App.Prc.md](configs/seeds/docs/modules/App.Prc.md) | Satınalma (`App.Prc`) | Tanımlamalar (ödeme/teslimat koşulları, ödeme/teslim yöntemleri) | +| [App.Inventory.md](configs/seeds/docs/modules/App.Inventory.md) | Envanter (`App.Inventory`) | Tanımlamalar (ürün kategorileri, nitelikler, ürünler ve varyantlar, reçeteler, reçete patlatma) | +| [App.Production.md](configs/seeds/docs/modules/App.Production.md) | Üretim (`App.Production`) | Tanımlamalar (iş merkezi etiketleri, iş merkezleri, operasyonlar) | --- diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261002230416_Initial.Designer.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261008061754_Initial.Designer.cs similarity index 99% rename from api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261002230416_Initial.Designer.cs rename to api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261008061754_Initial.Designer.cs index 84462462..80524828 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261002230416_Initial.Designer.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261008061754_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace Sozsoft.Platform.Migrations { [DbContext(typeof(PlatformDbContext))] - [Migration("20261002230416_Initial")] + [Migration("20261008061754_Initial")] partial class Initial { /// diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261002230416_Initial.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261008061754_Initial.cs similarity index 100% rename from api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261002230416_Initial.cs rename to api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261008061754_Initial.cs diff --git a/configs/seeds/data/Abp.Identity.PermissionGroups.json b/configs/seeds/data/Abp.Identity.PermissionGroups.json index 6c818190..b4e6308e 100644 --- a/configs/seeds/data/Abp.Identity.PermissionGroups.json +++ b/configs/seeds/data/Abp.Identity.PermissionGroups.json @@ -28,6 +28,11 @@ "Name": "App.Inventory", "DisplayName": "App.Inventory", "Order": 5 + }, + { + "Name": "App.Production", + "DisplayName": "App.Production", + "Order": 6 } ] } diff --git a/configs/seeds/data/Abp.Identity.Permissions.json b/configs/seeds/data/Abp.Identity.Permissions.json index 0d21ecda..485908ca 100644 --- a/configs/seeds/data/Abp.Identity.Permissions.json +++ b/configs/seeds/data/Abp.Identity.Permissions.json @@ -6434,22 +6434,12 @@ "MultiTenancySide": 3, "Modules": "Hr" }, - { - "GroupName": "App.Hr", - "Name": "App.Hr.Trainings", - "ParentName": null, - "DisplayName": "App.Hr.Trainings", - "Order": 12, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Hr" - }, { "GroupName": "App.Hr", "Name": "App.Hr.TrainingType", - "ParentName": "App.Hr.Trainings", + "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.TrainingType", - "Order": 1, + "Order": 20, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -6517,9 +6507,9 @@ { "GroupName": "App.Hr", "Name": "App.Hr.TrainingSubject", - "ParentName": "App.Hr.Trainings", + "ParentName": "App.Hr.Definitions", "DisplayName": "App.Hr.TrainingSubject", - "Order": 2, + "Order": 21, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -6727,9 +6717,9 @@ { "GroupName": "App.Hr", "Name": "App.Hr.Training", - "ParentName": "App.Hr.Trainings", + "ParentName": null, "DisplayName": "App.Hr.Training", - "Order": 3, + "Order": 12, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Hr" @@ -13304,432 +13294,12 @@ "MultiTenancySide": 3, "Modules": "Inventory" }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterTag", - "ParentName": "App.Inventory.Definitions", - "DisplayName": "App.Inventory.WorkCenterTag", - "Order": 3, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterTag.Create", - "ParentName": "App.Inventory.WorkCenterTag", - "DisplayName": "App.Platform.Create", - "Order": 1, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterTag.Update", - "ParentName": "App.Inventory.WorkCenterTag", - "DisplayName": "App.Platform.Update", - "Order": 2, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterTag.Delete", - "ParentName": "App.Inventory.WorkCenterTag", - "DisplayName": "App.Platform.Delete", - "Order": 3, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterTag.Export", - "ParentName": "App.Inventory.WorkCenterTag", - "DisplayName": "App.Platform.Export", - "Order": 4, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterTag.Import", - "ParentName": "App.Inventory.WorkCenterTag", - "DisplayName": "App.Platform.Import", - "Order": 5, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterTag.Note", - "ParentName": "App.Inventory.WorkCenterTag", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterGeneral", - "ParentName": "App.Inventory.WorkCenter", - "DisplayName": "App.Inventory.WorkCenterGeneral", - "Order": 7, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterGeneral.Create", - "ParentName": "App.Inventory.WorkCenterGeneral", - "DisplayName": "App.Platform.Create", - "Order": 1, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterGeneral.Update", - "ParentName": "App.Inventory.WorkCenterGeneral", - "DisplayName": "App.Platform.Update", - "Order": 2, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterGeneral.Delete", - "ParentName": "App.Inventory.WorkCenterGeneral", - "DisplayName": "App.Platform.Delete", - "Order": 3, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterGeneral.Export", - "ParentName": "App.Inventory.WorkCenterGeneral", - "DisplayName": "App.Platform.Export", - "Order": 4, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterGeneral.Import", - "ParentName": "App.Inventory.WorkCenterGeneral", - "DisplayName": "App.Platform.Import", - "Order": 5, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterGeneral.Note", - "ParentName": "App.Inventory.WorkCenterGeneral", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterCapacity", - "ParentName": "App.Inventory.WorkCenter", - "DisplayName": "App.Inventory.WorkCenterCapacity", - "Order": 8, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterCapacity.Create", - "ParentName": "App.Inventory.WorkCenterCapacity", - "DisplayName": "App.Platform.Create", - "Order": 1, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterCapacity.Update", - "ParentName": "App.Inventory.WorkCenterCapacity", - "DisplayName": "App.Platform.Update", - "Order": 2, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterCapacity.Delete", - "ParentName": "App.Inventory.WorkCenterCapacity", - "DisplayName": "App.Platform.Delete", - "Order": 3, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterCapacity.Export", - "ParentName": "App.Inventory.WorkCenterCapacity", - "DisplayName": "App.Platform.Export", - "Order": 4, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterCapacity.Import", - "ParentName": "App.Inventory.WorkCenterCapacity", - "DisplayName": "App.Platform.Import", - "Order": 5, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenterCapacity.Note", - "ParentName": "App.Inventory.WorkCenterCapacity", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenter", - "ParentName": "App.Inventory.Definitions", - "DisplayName": "App.Inventory.WorkCenter", - "Order": 4, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenter.Create", - "ParentName": "App.Inventory.WorkCenter", - "DisplayName": "App.Platform.Create", - "Order": 1, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenter.Update", - "ParentName": "App.Inventory.WorkCenter", - "DisplayName": "App.Platform.Update", - "Order": 2, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenter.Delete", - "ParentName": "App.Inventory.WorkCenter", - "DisplayName": "App.Platform.Delete", - "Order": 3, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenter.Export", - "ParentName": "App.Inventory.WorkCenter", - "DisplayName": "App.Platform.Export", - "Order": 4, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenter.Import", - "ParentName": "App.Inventory.WorkCenter", - "DisplayName": "App.Platform.Import", - "Order": 5, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.WorkCenter.Note", - "ParentName": "App.Inventory.WorkCenter", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.OperationInstruction", - "ParentName": "App.Inventory.Operation", - "DisplayName": "App.Inventory.OperationInstruction", - "Order": 7, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.OperationInstruction.Create", - "ParentName": "App.Inventory.OperationInstruction", - "DisplayName": "App.Platform.Create", - "Order": 1, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.OperationInstruction.Update", - "ParentName": "App.Inventory.OperationInstruction", - "DisplayName": "App.Platform.Update", - "Order": 2, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.OperationInstruction.Delete", - "ParentName": "App.Inventory.OperationInstruction", - "DisplayName": "App.Platform.Delete", - "Order": 3, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.OperationInstruction.Export", - "ParentName": "App.Inventory.OperationInstruction", - "DisplayName": "App.Platform.Export", - "Order": 4, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.OperationInstruction.Import", - "ParentName": "App.Inventory.OperationInstruction", - "DisplayName": "App.Platform.Import", - "Order": 5, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.OperationInstruction.Note", - "ParentName": "App.Inventory.OperationInstruction", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.Operation", - "ParentName": "App.Inventory.Definitions", - "DisplayName": "App.Inventory.Operation", - "Order": 5, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.Operation.Create", - "ParentName": "App.Inventory.Operation", - "DisplayName": "App.Platform.Create", - "Order": 1, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.Operation.Update", - "ParentName": "App.Inventory.Operation", - "DisplayName": "App.Platform.Update", - "Order": 2, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.Operation.Delete", - "ParentName": "App.Inventory.Operation", - "DisplayName": "App.Platform.Delete", - "Order": 3, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.Operation.Export", - "ParentName": "App.Inventory.Operation", - "DisplayName": "App.Platform.Export", - "Order": 4, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.Operation.Import", - "ParentName": "App.Inventory.Operation", - "DisplayName": "App.Platform.Import", - "Order": 5, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.Operation.Note", - "ParentName": "App.Inventory.Operation", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, { "GroupName": "App.Inventory", "Name": "App.Inventory.ProductVariant", "ParentName": "App.Inventory.Definitions", "DisplayName": "App.Inventory.ProductVariant", - "Order": 6, + "Order": 3, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Inventory" @@ -14009,7 +13579,7 @@ "Name": "App.Inventory.BomOverview", "ParentName": "App.Inventory.Definitions", "DisplayName": "App.Inventory.BomOverview", - "Order": 7, + "Order": 4, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Inventory" @@ -14079,7 +13649,7 @@ "Name": "App.Inventory.Bom", "ParentName": "App.Inventory.Definitions", "DisplayName": "App.Inventory.Bom", - "Order": 8, + "Order": 5, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Inventory" @@ -14499,7 +14069,7 @@ "Name": "App.Inventory.Product", "ParentName": "App.Inventory.Definitions", "DisplayName": "App.Inventory.Product", - "Order": 9, + "Order": 6, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Inventory" @@ -14563,6 +14133,436 @@ "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Inventory" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.Definitions", + "ParentName": null, + "DisplayName": "App.Production.Definitions", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterTag", + "ParentName": "App.Production.Definitions", + "DisplayName": "App.Production.WorkCenterTag", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterTag.Create", + "ParentName": "App.Production.WorkCenterTag", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterTag.Update", + "ParentName": "App.Production.WorkCenterTag", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterTag.Delete", + "ParentName": "App.Production.WorkCenterTag", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterTag.Export", + "ParentName": "App.Production.WorkCenterTag", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterTag.Import", + "ParentName": "App.Production.WorkCenterTag", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterTag.Note", + "ParentName": "App.Production.WorkCenterTag", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterGeneral", + "ParentName": "App.Production.WorkCenter", + "DisplayName": "App.Production.WorkCenterGeneral", + "Order": 7, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterGeneral.Create", + "ParentName": "App.Production.WorkCenterGeneral", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterGeneral.Update", + "ParentName": "App.Production.WorkCenterGeneral", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterGeneral.Delete", + "ParentName": "App.Production.WorkCenterGeneral", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterGeneral.Export", + "ParentName": "App.Production.WorkCenterGeneral", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterGeneral.Import", + "ParentName": "App.Production.WorkCenterGeneral", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterGeneral.Note", + "ParentName": "App.Production.WorkCenterGeneral", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterCapacity", + "ParentName": "App.Production.WorkCenter", + "DisplayName": "App.Production.WorkCenterCapacity", + "Order": 8, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterCapacity.Create", + "ParentName": "App.Production.WorkCenterCapacity", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterCapacity.Update", + "ParentName": "App.Production.WorkCenterCapacity", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterCapacity.Delete", + "ParentName": "App.Production.WorkCenterCapacity", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterCapacity.Export", + "ParentName": "App.Production.WorkCenterCapacity", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterCapacity.Import", + "ParentName": "App.Production.WorkCenterCapacity", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenterCapacity.Note", + "ParentName": "App.Production.WorkCenterCapacity", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenter", + "ParentName": "App.Production.Definitions", + "DisplayName": "App.Production.WorkCenter", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenter.Create", + "ParentName": "App.Production.WorkCenter", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenter.Update", + "ParentName": "App.Production.WorkCenter", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenter.Delete", + "ParentName": "App.Production.WorkCenter", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenter.Export", + "ParentName": "App.Production.WorkCenter", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenter.Import", + "ParentName": "App.Production.WorkCenter", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.WorkCenter.Note", + "ParentName": "App.Production.WorkCenter", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.OperationInstruction", + "ParentName": "App.Production.Operation", + "DisplayName": "App.Production.OperationInstruction", + "Order": 7, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.OperationInstruction.Create", + "ParentName": "App.Production.OperationInstruction", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.OperationInstruction.Update", + "ParentName": "App.Production.OperationInstruction", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.OperationInstruction.Delete", + "ParentName": "App.Production.OperationInstruction", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.OperationInstruction.Export", + "ParentName": "App.Production.OperationInstruction", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.OperationInstruction.Import", + "ParentName": "App.Production.OperationInstruction", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.OperationInstruction.Note", + "ParentName": "App.Production.OperationInstruction", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.Operation", + "ParentName": "App.Production.Definitions", + "DisplayName": "App.Production.Operation", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.Operation.Create", + "ParentName": "App.Production.Operation", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.Operation.Update", + "ParentName": "App.Production.Operation", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.Operation.Delete", + "ParentName": "App.Production.Operation", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.Operation.Export", + "ParentName": "App.Production.Operation", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.Operation.Import", + "ParentName": "App.Production.Operation", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" + }, + { + "GroupName": "App.Production", + "Name": "App.Production.Operation.Note", + "ParentName": "App.Production.Operation", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Production" } ] } diff --git a/configs/seeds/data/App.Languages.LanguageText.json b/configs/seeds/data/App.Languages.LanguageText.json index c8f5d7b8..84cda83b 100644 --- a/configs/seeds/data/App.Languages.LanguageText.json +++ b/configs/seeds/data/App.Languages.LanguageText.json @@ -73285,28 +73285,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Hr.TrainingType.Desc", - "Value": "Training Types — kinds of training (orientation, on-the-job, group, external, academy, rotation…).\nWhere: Human Resources › Training › Training Types.\nUsed by: Training Subjects (each subject belongs to a type) and Trainings (type filters the subject list)." + "Value": "Training Types — kinds of training (orientation, on-the-job, group, external, academy, rotation…).\nWhere: Human Resources › Definitions › Training Types.\nUsed by: Training Subjects (each subject belongs to a type) and Trainings (type filters the subject list)." }, { "Id": "9cce0d8e-368c-5849-b4ec-d54c0be882da", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Hr.TrainingType.Desc", - "Value": "Eğitim Tipleri — eğitimlerin türü (oryantasyon, iş başı, grup, firma dışı, akademi, rotasyon…).\nNerede: İnsan Kaynakları › Eğitim › Eğitim Tipleri.\nKullanıldığı yerler: Eğitim Konuları (her konu bir tipe bağlıdır) ve Eğitimler (tip seçimi konu listesini süzer). Eğitim raporlarında tip kırılımı verir." - }, - { - "Id": "c8ff2ff3-7c6e-5019-a68a-966a3d85e99a", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Hr.Trainings", - "Value": "Training" - }, - { - "Id": "692c6879-2642-5279-acaa-e2e67b6fa93a", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Hr.Trainings", - "Value": "Eğitim" + "Value": "Eğitim Tipleri — eğitimlerin türü (oryantasyon, iş başı, grup, firma dışı, akademi, rotasyon…).\nNerede: İnsan Kaynakları › Tanımlamalar › Eğitim Tipleri.\nKullanıldığı yerler: Eğitim Konuları (her konu bir tipe bağlıdır) ve Eğitimler (tip seçimi konu listesini süzer). Eğitim raporlarında tip kırılımı verir." }, { "Id": "d94b52c0-1be7-57cb-9f48-055a439ae2a6", @@ -73341,14 +73327,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Hr.TrainingSubject.Desc", - "Value": "Training Subjects — subjects under a training type (OHS, cyber security, on-the-job…).\nWhere: Human Resources › Training › Training Subjects.\nFields: training type, subject, IsEvaluated (participants are evaluated), active.\nUsed by: Trainings (listed after the type is chosen); shown as the training name on the attendance certificate." + "Value": "Training Subjects — subjects under a training type (OHS, cyber security, on-the-job…).\nWhere: Human Resources › Definitions › Training Subjects.\nFields: training type, subject, IsEvaluated (participants are evaluated), active.\nUsed by: Trainings (listed after the type is chosen); shown as the training name on the attendance certificate." }, { "Id": "da642db1-b93f-5a54-a1ca-006818b58d11", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Hr.TrainingSubject.Desc", - "Value": "Eğitim Konuları — bir eğitim tipine bağlı konu başlıkları (İSG, siber güvenlik, iş başı eğitimi…).\nNerede: İnsan Kaynakları › Eğitim › Eğitim Konuları.\nAlanlar: eğitim tipi, konu adı, IsEvaluated (katılımcı değerlendirilsin mi), aktif.\nKullanıldığı yer: Eğitimler ekranında tip seçildikten sonra listelenir; katılım belgesinde eğitimin adı olarak görünür." + "Value": "Eğitim Konuları — bir eğitim tipine bağlı konu başlıkları (İSG, siber güvenlik, iş başı eğitimi…).\nNerede: İnsan Kaynakları › Tanımlamalar › Eğitim Konuları.\nAlanlar: eğitim tipi, konu adı, IsEvaluated (katılımcı değerlendirilsin mi), aktif.\nKullanıldığı yer: Eğitimler ekranında tip seçildikten sonra listelenir; katılım belgesinde eğitimin adı olarak görünür." }, { "Id": "2ca9cd53-1ccc-51cd-98b1-a4f8420a9dfe", @@ -73649,14 +73635,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Hr.Training.Desc", - "Value": "Trainings — each training session: dates/times, duration, place, trainer, cost, skills gained, participants and files.\nWhere: Human Resources › Training › Trainings. The detail has Participants and Files tabs.\nFields:\n• Type → Subject (filtered by type), entry date, branch\n• Start/end date and time → total hours = days × daily hours (automatic)\n• Status → Open / Closed; trainer, place, institution\n• SkillIds → skills gained (informational, not written to the employee profile)\n• Cost items (place, trainer, accommodation, transport, catering, other) → total cost automatic\nRelated: a Performance Management development action can link to a training; when the employee is marked Attended the action completes itself. Work days between the start and end date are Training days in the timesheet of attending participants; changing the dates recalculates them.\nWidgets: total, open, closed trainings and total cost." + "Value": "Trainings — each training session: dates/times, duration, place, trainer, cost, skills gained, participants and files.\nWhere: Human Resources › Trainings. The detail has Participants and Files tabs.\nFields:\n• Type → Subject (filtered by type), entry date, branch\n• Start/end date and time → total hours = days × daily hours (automatic)\n• Status → Open / Closed; trainer, place, institution\n• SkillIds → skills gained (informational, not written to the employee profile)\n• Cost items (place, trainer, accommodation, transport, catering, other) → total cost automatic\nRelated: a Performance Management development action can link to a training; when the employee is marked Attended the action completes itself. Work days between the start and end date are Training days in the timesheet of attending participants; changing the dates recalculates them.\nWidgets: total, open, closed trainings and total cost." }, { "Id": "9d752979-4711-52fa-9d5b-84c76fc7a74c", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Hr.Training.Desc", - "Value": "Eğitimler — düzenlenen her eğitim oturumu: tarih/saat, süre, yer, eğitmen, maliyet, kazandırdığı yetkinlikler, katılımcılar ve dosyalar.\nNerede: İnsan Kaynakları › Eğitim › Eğitimler. Detayda Katılımcılar ve Dosyalar sekmeleri vardır.\nAlanlar:\n• Tip → Konu (tipe göre süzülür), giriş tarihi, şube\n• Başlangıç/bitiş tarihi ve saati → Toplam süre = gün sayısı × günlük saat (otomatik)\n• Status → Açık / Kapalı; eğitmen, eğitim yeri, eğitim veren kurum\n• SkillIds → eğitimin kazandırdığı yetkinlikler (bilgi amaçlı, çalışan profiline yazılmaz)\n• Maliyet kalemleri (yer, eğitmen, konaklama, ulaşım, ikram, diğer) → toplam maliyet otomatik\nİlişkili: Performans Yönetimi'ndeki gelişim aksiyonu bir eğitime bağlanabilir; çalışan bu eğitimde Katıldı olarak işlenirse aksiyon kendiliğinden tamamlanır. Başlangıç–bitiş arasındaki iş günleri katılımcının puantajında Eğitimde yazılır; tarih değişince yeniden hesaplanır.\nWidget'lar: toplam, açık, kapalı eğitim ve toplam maliyet." + "Value": "Eğitimler — düzenlenen her eğitim oturumu: tarih/saat, süre, yer, eğitmen, maliyet, kazandırdığı yetkinlikler, katılımcılar ve dosyalar.\nNerede: İnsan Kaynakları › Eğitimler. Detayda Katılımcılar ve Dosyalar sekmeleri vardır.\nAlanlar:\n• Tip → Konu (tipe göre süzülür), giriş tarihi, şube\n• Başlangıç/bitiş tarihi ve saati → Toplam süre = gün sayısı × günlük saat (otomatik)\n• Status → Açık / Kapalı; eğitmen, eğitim yeri, eğitim veren kurum\n• SkillIds → eğitimin kazandırdığı yetkinlikler (bilgi amaçlı, çalışan profiline yazılmaz)\n• Maliyet kalemleri (yer, eğitmen, konaklama, ulaşım, ikram, diğer) → toplam maliyet otomatik\nİlişkili: Performans Yönetimi'ndeki gelişim aksiyonu bir eğitime bağlanabilir; çalışan bu eğitimde Katıldı olarak işlenirse aksiyon kendiliğinden tamamlanır. Başlangıç–bitiş arasındaki iş günleri katılımcının puantajında Eğitimde yazılır; tarih değişince yeniden hesaplanır.\nWidget'lar: toplam, açık, kapalı eğitim ve toplam maliyet." }, { "Id": "8efb30fc-f40b-5465-ba0f-0ad4b2584571", @@ -87224,6 +87210,34 @@ "Key": "App.Inventory.Definitions", "Value": "Tanımlamalar" }, + { + "Id": "d38b37bf-6c15-59e7-8aa5-d964e92074ce", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Production", + "Value": "Production" + }, + { + "Id": "7009ec5d-3884-56d5-89c3-96da23a55296", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Production", + "Value": "Üretim" + }, + { + "Id": "2c260207-432b-59ef-9b40-5c03548b1d26", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Production.Definitions", + "Value": "Definitions" + }, + { + "Id": "074c3249-82a7-5d23-825a-37c4cc7d38b5", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Production.Definitions", + "Value": "Tanımlamalar" + }, { "Id": "a3ccf222-c3ba-531b-ac18-ab207b9efb8e", "CultureName": "en", @@ -87421,88 +87435,88 @@ "Value": "Varyant Oluşturma" }, { - "Id": "e3094c5d-0c69-50a8-b2ab-9c5ea327779e", + "Id": "139421a5-3084-555a-a94e-57225aada0e4", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterTag", + "Key": "App.Production.WorkCenterTag", "Value": "Work Center Tags" }, { - "Id": "d425f189-6521-594c-aa4b-66ff7bd2eff9", + "Id": "414c4c41-ac4d-5eec-a2a9-b3b8bedc4c20", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterTag", + "Key": "App.Production.WorkCenterTag", "Value": "İş Merkezi Etiketleri" }, { - "Id": "ae024ae3-6044-5d63-99fc-c760e30d0d62", + "Id": "a2793c24-17ad-5cc6-9314-f4e044904806", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterTag.Title", + "Key": "App.Production.WorkCenterTag.Title", "Value": "Work Center Tags" }, { - "Id": "b89472ab-ab5b-510b-9bb9-c1a42357f8a7", + "Id": "070bf364-b13d-57fc-ab30-23b7d2ac8d79", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterTag.Title", + "Key": "App.Production.WorkCenterTag.Title", "Value": "İş Merkezi Etiketleri" }, { - "Id": "52b4feb7-6487-5445-b246-d342e75eb0f3", + "Id": "2ce9c92a-0d29-50e9-80c0-8d79e7261283", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterTag.Desc", - "Value": "Work Center Tags — labels used to classify work centers (dye house, finishing, assembly…).\nWhere: Inventory › Definitions › Work Center Tags.\nFields: name, colour, active.\nUsed by: Work Centers › Tags field (multi-select) to filter and group work centers. Passive tags are hidden in lookups." + "Key": "App.Production.WorkCenterTag.Desc", + "Value": "Work Center Tags — labels used to classify work centers (dye house, finishing, assembly…).\nWhere: Production › Definitions › Work Center Tags.\nFields: name, colour, active.\nUsed by: Work Centers › Tags field (multi-select) to filter and group work centers. Passive tags are hidden in lookups." }, { - "Id": "7af00f3e-8648-5d52-85d0-b7fe6a2db57f", + "Id": "d5e87e62-b1cc-5eaa-85ab-839e3d80d56b", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterTag.Desc", - "Value": "İş Merkezi Etiketleri — iş merkezlerini sınıflandırmak için kullanılan etiketler (boyahane, apre, montaj…).\nNerede: Envanter › Tanımlamalar › İş Merkezi Etiketleri.\nAlanlar: ad, renk, aktif.\nKullanıldığı yer: İş Merkezleri › Etiketler alanında çoklu seçilir; iş merkezlerini süzmek ve gruplamak için kullanılır. Pasif etiketler lookup'ta görünmez." + "Key": "App.Production.WorkCenterTag.Desc", + "Value": "İş Merkezi Etiketleri — iş merkezlerini sınıflandırmak için kullanılan etiketler (boyahane, apre, montaj…).\nNerede: Üretim › Tanımlamalar › İş Merkezi Etiketleri.\nAlanlar: ad, renk, aktif.\nKullanıldığı yer: İş Merkezleri › Etiketler alanında çoklu seçilir; iş merkezlerini süzmek ve gruplamak için kullanılır. Pasif etiketler lookup'ta görünmez." }, { - "Id": "eff71200-fd92-54d5-b076-67bdd4818029", + "Id": "69e0fc3c-4600-5e0e-9022-18b5ab7facbc", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterGeneral", + "Key": "App.Production.WorkCenterGeneral", "Value": "General Information" }, { - "Id": "5a39c740-92f7-5aa5-aa86-d2b0c3e0295d", + "Id": "917b7ed1-2571-549b-9103-4cf7bc814485", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterGeneral", + "Key": "App.Production.WorkCenterGeneral", "Value": "Genel Bilgi" }, { - "Id": "961bd108-6820-5d18-ab97-b34c98f5bbb1", + "Id": "c1fc61aa-9bdb-568c-a45c-e247a86d2c4a", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterGeneral.Title", + "Key": "App.Production.WorkCenterGeneral.Title", "Value": "General Information" }, { - "Id": "8b940137-869c-50a8-ae88-1cf92cbbf904", + "Id": "4b601668-46bf-5fac-8659-67f835201716", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterGeneral.Title", + "Key": "App.Production.WorkCenterGeneral.Title", "Value": "Genel Bilgi" }, { - "Id": "7d5bfa64-666b-53de-8ef8-a84f279c2c8f", + "Id": "056b4576-bd32-5115-b8cc-c25f940f6b4a", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterGeneral.Desc", - "Value": "Work Center General Information — production and costing data of the work center.\nWhere: Inventory › Definitions › Work Centers › General Information tab (no menu of its own; edits the work center record itself).\nFields: time efficiency %, OEE target %, setup and cleanup time (min), cost per hour for the work center and per employee, description.\nUsed by: BoM Overview operation cost = duration × cost per hour." + "Key": "App.Production.WorkCenterGeneral.Desc", + "Value": "Work Center General Information — production and costing data of the work center.\nWhere: Production › Definitions › Work Centers › General Information tab (no menu of its own; edits the work center record itself).\nFields: time efficiency %, OEE target %, setup and cleanup time (min), cost per hour for the work center and per employee, description.\nUsed by: BoM Overview operation cost = duration × cost per hour." }, { - "Id": "a6c6ef2f-195d-5001-9390-ef2a5e2fe219", + "Id": "1d70ca27-4759-5c2f-ba52-71e6e2378778", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterGeneral.Desc", - "Value": "İş Merkezi Genel Bilgi — iş merkezinin üretim ve maliyetlendirme bilgileri.\nNerede: Envanter › Tanımlamalar › İş Merkezleri › Genel Bilgi sekmesi (kendi menüsü yoktur; iş merkezi kaydının kendisini düzenler).\nAlanlar: zaman verimliliği %, OEE hedefi %, kurulum ve temizlik zamanı (dk), iş merkezi ve çalışan başına saatlik maliyet, açıklama.\nKullanıldığı yer: Reçeteye Genel Bakış'ta operasyon maliyeti = süre × saatlik maliyet." + "Key": "App.Production.WorkCenterGeneral.Desc", + "Value": "İş Merkezi Genel Bilgi — iş merkezinin üretim ve maliyetlendirme bilgileri.\nNerede: Üretim › Tanımlamalar › İş Merkezleri › Genel Bilgi sekmesi (kendi menüsü yoktur; iş merkezi kaydının kendisini düzenler).\nAlanlar: zaman verimliliği %, OEE hedefi %, kurulum ve temizlik zamanı (dk), iş merkezi ve çalışan başına saatlik maliyet, açıklama.\nKullanıldığı yer: Reçeteye Genel Bakış'ta operasyon maliyeti = süre × saatlik maliyet." }, { "Id": "59211395-4a6b-5f6b-ba41-2d4567311e02", @@ -87547,46 +87561,46 @@ "Value": "Saat Başına Maliyet (Çalışan)" }, { - "Id": "d4b100d3-eed1-5674-b82a-d2c064976d4a", + "Id": "ec6e0587-07cb-5678-89d4-1df6f2b34d9f", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterCapacity", + "Key": "App.Production.WorkCenterCapacity", "Value": "Product Capacity" }, { - "Id": "505a1bde-b625-51ec-b0e0-940b83a93bad", + "Id": "453375a0-8952-5448-b7d2-8d5f00e54307", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterCapacity", + "Key": "App.Production.WorkCenterCapacity", "Value": "Ürün Kapasitesi" }, { - "Id": "a1d29c5b-7d42-5c5f-9a2a-132f30de2588", + "Id": "9726cf43-6394-5c78-9716-816f1021fed3", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterCapacity.Title", + "Key": "App.Production.WorkCenterCapacity.Title", "Value": "Product Capacity" }, { - "Id": "a4626dca-9ed6-5970-9515-571a336479b0", + "Id": "4cd3fb17-cd29-5220-a6bf-58a602412dbc", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterCapacity.Title", + "Key": "App.Production.WorkCenterCapacity.Title", "Value": "Ürün Kapasitesi" }, { - "Id": "9cc10307-a226-5e90-b838-255272681cea", + "Id": "bc4364fe-4bc1-589d-9c6c-869722076e89", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterCapacity.Desc", - "Value": "Work Center Product Capacity — how many units of a product the work center can process in one cycle.\nWhere: Inventory › Definitions › Work Centers › Product Capacity tab (no menu of its own).\nFields: product, unit, capacity, product-specific setup and cleanup time (min).\nThe work center link (WorkCenterId) is written automatically from the open work center." + "Key": "App.Production.WorkCenterCapacity.Desc", + "Value": "Work Center Product Capacity — how many units of a product the work center can process in one cycle.\nWhere: Production › Definitions › Work Centers › Product Capacity tab (no menu of its own).\nFields: product, unit, capacity, product-specific setup and cleanup time (min).\nThe work center link (WorkCenterId) is written automatically from the open work center." }, { - "Id": "2f16a299-f959-5fe0-b6fb-f8c8c31b777d", + "Id": "693686ee-063c-528f-b647-334a53f0025a", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenterCapacity.Desc", - "Value": "İş Merkezi Ürün Kapasitesi — iş merkezinin bir çevrimde bir üründen kaç birim işleyebildiği.\nNerede: Envanter › Tanımlamalar › İş Merkezleri › Ürün Kapasitesi sekmesi (kendi menüsü yoktur).\nAlanlar: ürün, birim, kapasite, ürüne özel kurulum ve temizlik zamanı (dk).\nİş merkezi bağlantısı (WorkCenterId) açık olan iş merkezi kaydından otomatik yazılır." + "Key": "App.Production.WorkCenterCapacity.Desc", + "Value": "İş Merkezi Ürün Kapasitesi — iş merkezinin bir çevrimde bir üründen kaç birim işleyebildiği.\nNerede: Üretim › Tanımlamalar › İş Merkezleri › Ürün Kapasitesi sekmesi (kendi menüsü yoktur).\nAlanlar: ürün, birim, kapasite, ürüne özel kurulum ve temizlik zamanı (dk).\nİş merkezi bağlantısı (WorkCenterId) açık olan iş merkezi kaydından otomatik yazılır." }, { "Id": "924b54d7-74b2-5d36-b739-76d255f90fe6", @@ -87631,46 +87645,46 @@ "Value": "Birim" }, { - "Id": "03e6039b-9c7a-55ac-a28e-32256c3e0dc7", + "Id": "d2b93b55-bf83-59ab-b869-9b74771821a0", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenter", + "Key": "App.Production.WorkCenter", "Value": "Work Centers" }, { - "Id": "684e6c31-ebe4-57a2-8109-42de6d9bb2d4", + "Id": "4cc858a6-e6da-5436-8c62-e3b7d54a0a2b", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenter", + "Key": "App.Production.WorkCenter", "Value": "İş Merkezleri" }, { - "Id": "43f83575-cf46-5731-9960-5a9ccae0964b", + "Id": "46842ced-69e4-538c-b5eb-68de92ef707e", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenter.Title", + "Key": "App.Production.WorkCenter.Title", "Value": "Work Centers" }, { - "Id": "c5b75b6e-fe3b-5f99-8692-69424965249b", + "Id": "f59f38d9-2277-5f6e-bc12-b742daf94528", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenter.Title", + "Key": "App.Production.WorkCenter.Title", "Value": "İş Merkezleri" }, { - "Id": "085fd311-9c8b-5265-b06d-fc86f77cc404", + "Id": "fb0ffd50-f036-59d8-b77a-d2aadc553e74", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenter.Desc", - "Value": "Work Centers — machines or stations where operations are performed (e.g. stenter machine).\nWhere: Inventory › Definitions › Work Centers; tabs: General Information (efficiency, OEE, setup/cleanup time, hourly costs) and Product Capacity.\nFields: name, code, tags, alternative work centers, weekly working hours (defaults from the Weekly working time limit setting, 40 if not set), active.\nUsed by: Operations and BoM › Operations; BoM Overview computes operation cost from the hourly cost." + "Key": "App.Production.WorkCenter.Desc", + "Value": "Work Centers — machines or stations where operations are performed (e.g. stenter machine).\nWhere: Production › Definitions › Work Centers; tabs: General Information (efficiency, OEE, setup/cleanup time, hourly costs) and Product Capacity.\nFields: name, code, tags, alternative work centers, weekly working hours (defaults from the Weekly working time limit setting, 40 if not set), active.\nUsed by: Operations and BoM › Operations; BoM Overview computes operation cost from the hourly cost." }, { - "Id": "9f66b4c3-8f74-5204-9a26-8c4cad49642e", + "Id": "6f642627-d799-5567-aae2-e1d8abf9a4b0", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.WorkCenter.Desc", - "Value": "İş Merkezleri — operasyonların yapıldığı makine ya da istasyonlar (ör. ram makinası).\nNerede: Envanter › Tanımlamalar › İş Merkezleri; sekmeler: Genel Bilgi (verimlilik, OEE, kurulum/temizlik zamanı, saatlik maliyetler) ve Ürün Kapasitesi.\nAlanlar: ad, kod, etiketler, alternatif iş merkezleri, haftalık çalışma saati (varsayılanı Weekly working time limit ayarından, ayar yoksa 40), aktif.\nKullanıldığı yer: Operasyonlar ve Reçete › Operasyonlar; Reçeteye Genel Bakış operasyon maliyetini saatlik maliyetten hesaplar." + "Key": "App.Production.WorkCenter.Desc", + "Value": "İş Merkezleri — operasyonların yapıldığı makine ya da istasyonlar (ör. ram makinası).\nNerede: Üretim › Tanımlamalar › İş Merkezleri; sekmeler: Genel Bilgi (verimlilik, OEE, kurulum/temizlik zamanı, saatlik maliyetler) ve Ürün Kapasitesi.\nAlanlar: ad, kod, etiketler, alternatif iş merkezleri, haftalık çalışma saati (varsayılanı Weekly working time limit ayarından, ayar yoksa 40), aktif.\nKullanıldığı yer: Operasyonlar ve Reçete › Operasyonlar; Reçeteye Genel Bakış operasyon maliyetini saatlik maliyetten hesaplar." }, { "Id": "777eee40-92ec-5395-a787-65adef717c23", @@ -87715,46 +87729,46 @@ "Value": "Alternatif İş Merkezleri" }, { - "Id": "02948728-3fa2-552b-9119-424fb41c14d9", + "Id": "9415276f-b6c2-54c4-8b2b-60c8b9b7a7b3", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.OperationInstruction", + "Key": "App.Production.OperationInstruction", "Value": "Instructions" }, { - "Id": "03ddb56c-b9a4-5c36-818c-f3c301ac845a", + "Id": "d55daf64-9612-5023-b7ec-9bdf9c0181f4", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.OperationInstruction", + "Key": "App.Production.OperationInstruction", "Value": "Açıklamalar" }, { - "Id": "02483f4b-8907-5b67-b1d2-6a3d16ad234b", + "Id": "8565a644-eb03-515e-bc69-4789cfa455df", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.OperationInstruction.Title", + "Key": "App.Production.OperationInstruction.Title", "Value": "Instructions" }, { - "Id": "56c48f53-d989-5f3d-8a3a-e06973914020", + "Id": "9027a657-a4a3-5397-b893-9b92954032b9", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.OperationInstruction.Title", + "Key": "App.Production.OperationInstruction.Title", "Value": "Açıklamalar" }, { - "Id": "3beb37e7-5338-5ded-b39e-264eaa40171c", + "Id": "d12efd92-4fa9-533c-a84c-96bcaa54270a", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.OperationInstruction.Desc", - "Value": "Operation Instructions — work instructions shown to the operator for an operation.\nWhere: Inventory › Definitions › Operations › Instructions tab (no menu of its own).\nFields: title, type (text, PDF, image, link), reference (document path or URL), note, order.\nThe operation link (OperationId) is written automatically from the open operation." + "Key": "App.Production.OperationInstruction.Desc", + "Value": "Operation Instructions — work instructions shown to the operator for an operation.\nWhere: Production › Definitions › Operations › Instructions tab (no menu of its own).\nFields: title, type (text, PDF, image, link), reference (document path or URL), note, order.\nThe operation link (OperationId) is written automatically from the open operation." }, { - "Id": "10c6fbef-a362-5074-82b7-bfdb58470848", + "Id": "523be703-1517-542d-af69-7714006455c7", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.OperationInstruction.Desc", - "Value": "Operasyon Açıklamaları — bir operasyonda operatöre gösterilen iş talimatları.\nNerede: Envanter › Tanımlamalar › Operasyonlar › Açıklamalar sekmesi (kendi menüsü yoktur).\nAlanlar: başlık, tip (metin, PDF, görsel, bağlantı), referans (belge yolu ya da adres), not, sıra.\nOperasyon bağlantısı (OperationId) açık olan operasyon kaydından otomatik yazılır." + "Key": "App.Production.OperationInstruction.Desc", + "Value": "Operasyon Açıklamaları — bir operasyonda operatöre gösterilen iş talimatları.\nNerede: Üretim › Tanımlamalar › Operasyonlar › Açıklamalar sekmesi (kendi menüsü yoktur).\nAlanlar: başlık, tip (metin, PDF, görsel, bağlantı), referans (belge yolu ya da adres), not, sıra.\nOperasyon bağlantısı (OperationId) açık olan operasyon kaydından otomatik yazılır." }, { "Id": "a301d9eb-2a31-5b1b-88cc-22a3d341a112", @@ -87785,46 +87799,46 @@ "Value": "Tip" }, { - "Id": "5f8902c2-d5c0-5f69-86c9-a0d763b143a2", + "Id": "cc9213b6-a0de-5c81-a305-265d71bb751d", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.Operation", + "Key": "App.Production.Operation", "Value": "Operations" }, { - "Id": "f183a5b8-d2a1-5709-b313-a46e5910727f", + "Id": "71e9d37e-7377-586d-9923-9f1c36bb9c76", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.Operation", + "Key": "App.Production.Operation", "Value": "Operasyonlar" }, { - "Id": "fd086c53-b786-58bc-8675-984a2088250e", + "Id": "ef55f463-1d5e-5b79-baee-df6c8b22ab94", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.Operation.Title", + "Key": "App.Production.Operation.Title", "Value": "Operations" }, { - "Id": "98b10b53-e007-50b6-9a57-50b14bb72341", + "Id": "77c24149-8775-52f4-b1e2-e3298de22fd7", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.Operation.Title", + "Key": "App.Production.Operation.Title", "Value": "Operasyonlar" }, { - "Id": "f2db24f6-dba0-554e-98e4-fe690185eb7d", + "Id": "6a06523b-85ac-5cc5-a02e-d698c3ac5bf0", "CultureName": "en", "ResourceName": "Platform", - "Key": "App.Inventory.Operation.Desc", - "Value": "Operations — production steps performed at a work center (e.g. Finishing on the stenter machine).\nWhere: Inventory › Definitions › Operations; work instructions are entered in the Instructions tab.\nFields: operation name, work center, apply on variants (only for the selected attribute values; empty = all), cost basis (actual/theoretical time), duration computation (fixed/computed), default duration (min), active.\nUsed by: BoM › Operations; selecting an operation fills the work center and duration." + "Key": "App.Production.Operation.Desc", + "Value": "Operations — production steps performed at a work center (e.g. Finishing on the stenter machine).\nWhere: Production › Definitions › Operations; work instructions are entered in the Instructions tab.\nFields: operation name, work center, apply on variants (only for the selected attribute values; empty = all), cost basis (actual/theoretical time), duration computation (fixed/computed), default duration (min), active.\nUsed by: BoM › Operations; selecting an operation fills the work center and duration." }, { - "Id": "9b48876e-8a0d-52fa-9c02-35b9de559163", + "Id": "4d19ec67-6f22-5847-b8ec-3b5ff7449bc2", "CultureName": "tr", "ResourceName": "Platform", - "Key": "App.Inventory.Operation.Desc", - "Value": "Operasyonlar — bir iş merkezinde yapılan üretim adımları (ör. ram makinasında Apre).\nNerede: Envanter › Tanımlamalar › Operasyonlar; iş talimatları Açıklamalar sekmesinden girilir.\nAlanlar: operasyon adı, iş merkezi, varyantlara uygula (yalnız seçilen nitelik değerleri için; boş = tümü), maliyete dayalı (gerçek/teorik zaman), süre hesaplama (sabit/hesaplanmış), varsayılan süre (dk), aktif.\nKullanıldığı yer: Reçete › Operasyonlar; operasyon seçilince iş merkezi ve süre dolar." + "Key": "App.Production.Operation.Desc", + "Value": "Operasyonlar — bir iş merkezinde yapılan üretim adımları (ör. ram makinasında Apre).\nNerede: Üretim › Tanımlamalar › Operasyonlar; iş talimatları Açıklamalar sekmesinden girilir.\nAlanlar: operasyon adı, iş merkezi, varyantlara uygula (yalnız seçilen nitelik değerleri için; boş = tümü), maliyete dayalı (gerçek/teorik zaman), süre hesaplama (sabit/hesaplanmış), varsayılan süre (dk), aktif.\nKullanıldığı yer: Reçete › Operasyonlar; operasyon seçilince iş merkezi ve süre dolar." }, { "Id": "e11bb82d-b9d7-5e9b-8096-6c2b367d0249", diff --git a/configs/seeds/data/App.Menus.Menu.json b/configs/seeds/data/App.Menus.Menu.json index 80909fa9..447548c9 100644 --- a/configs/seeds/data/App.Menus.Menu.json +++ b/configs/seeds/data/App.Menus.Menu.json @@ -1534,29 +1534,14 @@ "ElementId": null, "ModuleId": "Hr" }, - { - "Id": "aa47dc14-483f-41ad-83f5-f304050db135", - "Code": "App.Hr.Trainings", - "DisplayName": "App.Hr.Trainings", - "Order": 8, - "Url": null, - "Icon": "FcGraduationCap", - "ParentCode": "App.Hr", - "RequiredPermissionName": null, - "CssClass": null, - "Target": null, - "IsDisabled": false, - "ElementId": null, - "ModuleId": "Hr" - }, { "Id": "0912d86d-80ee-48b2-8926-560112cf24d1", "Code": "App.Hr.TrainingType", "DisplayName": "App.Hr.TrainingType", - "Order": 1, + "Order": 19, "Url": "/admin/list/App.Hr.TrainingType", "Icon": "FcList", - "ParentCode": "App.Hr.Trainings", + "ParentCode": "App.Hr.Definitions", "RequiredPermissionName": "App.Hr.TrainingType", "CssClass": null, "Target": null, @@ -1568,10 +1553,10 @@ "Id": "484a01d3-b27d-4453-8411-a31f88d05a23", "Code": "App.Hr.TrainingSubject", "DisplayName": "App.Hr.TrainingSubject", - "Order": 2, + "Order": 20, "Url": "/admin/list/App.Hr.TrainingSubject", "Icon": "FcViewDetails", - "ParentCode": "App.Hr.Trainings", + "ParentCode": "App.Hr.Definitions", "RequiredPermissionName": "App.Hr.TrainingSubject", "CssClass": null, "Target": null, @@ -1583,10 +1568,10 @@ "Id": "b35fc8d6-a535-41ff-9b28-ef4ae900187f", "Code": "App.Hr.Training", "DisplayName": "App.Hr.Training", - "Order": 3, + "Order": 8, "Url": "/admin/list/App.Hr.Training", "Icon": "FcGraduationCap", - "ParentCode": "App.Hr.Trainings", + "ParentCode": "App.Hr", "RequiredPermissionName": "App.Hr.Training", "CssClass": null, "Target": null, @@ -2464,56 +2449,11 @@ "ElementId": null, "ModuleId": "Inventory" }, - { - "Id": "a5f6fb2f-798b-4368-8a4c-29a5ff57d7b5", - "Code": "App.Inventory.WorkCenterTag", - "DisplayName": "App.Inventory.WorkCenterTag", - "Order": 3, - "Url": "/admin/list/App.Inventory.WorkCenterTag", - "Icon": "FcBookmark", - "ParentCode": "App.Inventory.Definitions", - "RequiredPermissionName": "App.Inventory.WorkCenterTag", - "CssClass": null, - "Target": null, - "IsDisabled": false, - "ElementId": null, - "ModuleId": "Inventory" - }, - { - "Id": "f7d77dcb-7e31-4417-89f0-ac2cf925f374", - "Code": "App.Inventory.WorkCenter", - "DisplayName": "App.Inventory.WorkCenter", - "Order": 4, - "Url": "/admin/list/App.Inventory.WorkCenter", - "Icon": "FcFactory", - "ParentCode": "App.Inventory.Definitions", - "RequiredPermissionName": "App.Inventory.WorkCenter", - "CssClass": null, - "Target": null, - "IsDisabled": false, - "ElementId": null, - "ModuleId": "Inventory" - }, - { - "Id": "037872c0-b06f-42b5-ac71-b9b5c35b2ffb", - "Code": "App.Inventory.Operation", - "DisplayName": "App.Inventory.Operation", - "Order": 5, - "Url": "/admin/list/App.Inventory.Operation", - "Icon": "FcProcess", - "ParentCode": "App.Inventory.Definitions", - "RequiredPermissionName": "App.Inventory.Operation", - "CssClass": null, - "Target": null, - "IsDisabled": false, - "ElementId": null, - "ModuleId": "Inventory" - }, { "Id": "f44c0adc-c5d7-46b2-b272-4b8fe6695359", "Code": "App.Inventory.ProductVariant", "DisplayName": "App.Inventory.ProductVariant", - "Order": 7, + "Order": 4, "Url": "/admin/list/App.Inventory.ProductVariant", "Icon": "FcGrid", "ParentCode": "App.Inventory.Definitions", @@ -2528,7 +2468,7 @@ "Id": "098fe488-799c-4d37-81f4-a3b32e4b7871", "Code": "App.Inventory.BomOverview", "DisplayName": "App.Inventory.BomOverview", - "Order": 9, + "Order": 6, "Url": "/admin/list/App.Inventory.BomOverview", "Icon": "FcTreeStructure", "ParentCode": "App.Inventory.Definitions", @@ -2543,7 +2483,7 @@ "Id": "8d122546-5d4b-44ad-9a76-d1a348e59b38", "Code": "App.Inventory.Bom", "DisplayName": "App.Inventory.Bom", - "Order": 8, + "Order": 5, "Url": "/admin/list/App.Inventory.Bom", "Icon": "FcDocument", "ParentCode": "App.Inventory.Definitions", @@ -2558,7 +2498,7 @@ "Id": "0d6d7172-6046-4be7-a144-2d57128fc80d", "Code": "App.Inventory.Product", "DisplayName": "App.Inventory.Product", - "Order": 6, + "Order": 3, "Url": "/admin/list/App.Inventory.Product", "Icon": "FcShop", "ParentCode": "App.Inventory.Definitions", @@ -2568,6 +2508,81 @@ "IsDisabled": false, "ElementId": null, "ModuleId": "Inventory" + }, + { + "Id": "20d626a9-f766-4803-b8f3-c52d3a7144ec", + "Code": "App.Production", + "DisplayName": "App.Production", + "Order": 7, + "Url": null, + "Icon": "FcEngineering", + "ParentCode": null, + "RequiredPermissionName": null, + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Production" + }, + { + "Id": "14f0b6eb-7c1a-4593-9783-baa23bccbe41", + "Code": "App.Production.Definitions", + "DisplayName": "App.Production.Definitions", + "Order": 1, + "Url": null, + "Icon": "FcSettings", + "ParentCode": "App.Production", + "RequiredPermissionName": null, + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Production" + }, + { + "Id": "a5f6fb2f-798b-4368-8a4c-29a5ff57d7b5", + "Code": "App.Production.WorkCenterTag", + "DisplayName": "App.Production.WorkCenterTag", + "Order": 1, + "Url": "/admin/list/App.Production.WorkCenterTag", + "Icon": "FcBookmark", + "ParentCode": "App.Production.Definitions", + "RequiredPermissionName": "App.Production.WorkCenterTag", + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Production" + }, + { + "Id": "f7d77dcb-7e31-4417-89f0-ac2cf925f374", + "Code": "App.Production.WorkCenter", + "DisplayName": "App.Production.WorkCenter", + "Order": 2, + "Url": "/admin/list/App.Production.WorkCenter", + "Icon": "FcFactory", + "ParentCode": "App.Production.Definitions", + "RequiredPermissionName": "App.Production.WorkCenter", + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Production" + }, + { + "Id": "037872c0-b06f-42b5-ac71-b9b5c35b2ffb", + "Code": "App.Production.Operation", + "DisplayName": "App.Production.Operation", + "Order": 3, + "Url": "/admin/list/App.Production.Operation", + "Icon": "FcProcess", + "ParentCode": "App.Production.Definitions", + "RequiredPermissionName": "App.Production.Operation", + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Production" } ] } diff --git a/configs/seeds/data/App.Menus.Module.json b/configs/seeds/data/App.Menus.Module.json index 35efb689..b277318c 100644 --- a/configs/seeds/data/App.Menus.Module.json +++ b/configs/seeds/data/App.Menus.Module.json @@ -27,6 +27,10 @@ { "Id": "Inventory", "Name": "Inventory" + }, + { + "Id": "Production", + "Name": "Production" } ] } diff --git a/configs/seeds/data/App.Inventory.WorkCenter.json b/configs/seeds/data/App.Production.WorkCenter.json similarity index 85% rename from configs/seeds/data/App.Inventory.WorkCenter.json rename to configs/seeds/data/App.Production.WorkCenter.json index 7b984d5d..4a03bc5c 100644 --- a/configs/seeds/data/App.Inventory.WorkCenter.json +++ b/configs/seeds/data/App.Production.WorkCenter.json @@ -1,5 +1,5 @@ { - "ListFormCode": "App.Inventory.WorkCenter", + "ListFormCode": "App.Production.WorkCenter", "KeyFieldName": "Id", "GeneratedAt": "2026-10-07T18:52:50.5777632Z", "Order": 0, diff --git a/configs/seeds/data/App.Inventory.WorkCenterTag.json b/configs/seeds/data/App.Production.WorkCenterTag.json similarity index 91% rename from configs/seeds/data/App.Inventory.WorkCenterTag.json rename to configs/seeds/data/App.Production.WorkCenterTag.json index aa5eabfe..ff832672 100644 --- a/configs/seeds/data/App.Inventory.WorkCenterTag.json +++ b/configs/seeds/data/App.Production.WorkCenterTag.json @@ -1,5 +1,5 @@ { - "ListFormCode": "App.Inventory.WorkCenterTag", + "ListFormCode": "App.Production.WorkCenterTag", "KeyFieldName": "Id", "GeneratedAt": "2026-10-07T18:50:53.8612727Z", "Order": 0, diff --git a/configs/seeds/docs/modules/App.Hr.md b/configs/seeds/docs/modules/App.Hr.md index f6cbb587..3096e4cd 100644 --- a/configs/seeds/docs/modules/App.Hr.md +++ b/configs/seeds/docs/modules/App.Hr.md @@ -1753,8 +1753,8 @@ serbest metindir). Bildirim, periyodik muayene hatırlatması ya da rapor şablo Kart sekmelerini kaldırmak wizard'ları siler; `AbpUsers` kolonları ve `Adm_T_User*` tabloları entity/migration'a bağlı olduğu için kalır. - -## Eğitimler (`App.Hr.Trainings`) + +## Eğitimler (`App.Hr.Training`) Şirket içi ve dışı eğitimlerin kaydı: eğitim tipi → konu tanımları, eğitim oturumu (tarih/saat, süre, yer, eğitmen, maliyet, kazandırdığı yetkinlikler), katılımcılar (katılım durumu, puan, @@ -1785,7 +1785,7 @@ Kapsam: kiracı (`IsTenant`). Eğitim bir şubeye bağlıdır (`BranchId` zorunl | Konu | Karar | | --- | --- | | Yol | Wizard ekranları; eğitim kaydının altında Katılımcılar ve Dosyalar sekmeleri (menüsüz alt formlar) | -| Tanımlar | Tip ve konu tanımları İK › Tanımlar'da değil **Eğitimler** dalının içindedir; konu bir tipe bağlıdır ve tip seçimine göre süzülür | +| Tanımlar | Tip ve konu tanımları **İK › Tanımlamalar** altındadır (önceden `App.Hr.Trainings` ara menüsündeydi; ara menü kaldırıldı, Eğitimler doğrudan `App.Hr` altına alındı); konu bir tipe bağlıdır ve tip seçimine göre süzülür | | Süre | `Toplam Süre (saat) = gün sayısı (bitiş dahil) × günlük saat (bitiş – başlangıç saati)` — formda hesaplanır | | Maliyet | Altı kalem (yer, eğitmen, konaklama, ulaşım, ikram, diğer) toplanarak `CostTotal` formda hesaplanır | | Yetkinlik | Eğitimin kazandırdığı yetkinlikler `SkillIds` (çok değerli, `Hr_T_Skill`) olarak saklanır; çalışan profiline (`Adm_T_UserSkill`) **yazılmaz** | @@ -1798,13 +1798,14 @@ Kapsam: kiracı (`IsTenant`). Eğitim bir şubeye bağlıdır (`BranchId` zorunl ### 3. Menü ve ekranlar -`İnsan Kaynakları › Eğitimler` (`App.Hr.Trainings`, ikon `FcGraduationCap`) +Eğitimler doğrudan `İnsan Kaynakları` altındadır (`App.Hr.Training`, sıra 8, ikon `FcGraduationCap`); +tip ve konu tanımları `İnsan Kaynakları › Tanımlamalar` altındadır. -| Sıra | Menü (TR / EN) | `ListFormCode` | Alt formlar | Görünümler | Widget'lar | +| Menü yeri | Menü (TR / EN) | `ListFormCode` | Alt formlar | Görünümler | Widget'lar | | --- | --- | --- | --- | --- | --- | -| 1 | Eğitim Tipleri / Training Types | `App.Hr.TrainingType` | — | Grid, Card, Pivot, Chart | Toplam · Aktif · Pasif | -| 2 | Eğitim Konuları / Training Subjects | `App.Hr.TrainingSubject` | — | Grid, Card, Pivot, Chart | Toplam · Aktif · Pasif | -| 3 | Eğitimler / Trainings | `App.Hr.Training` | `TrainingParticipant`, `TrainingFile` (`Id → TrainingId`, menüsüz) | Grid, Card, Pivot, Chart | Toplam · Açık · Kapalı · Toplam Maliyet | +| Tanımlamalar (sıra 19) | Eğitim Tipleri / Training Types | `App.Hr.TrainingType` | — | Grid, Card, Pivot, Chart | Toplam · Aktif · Pasif | +| Tanımlamalar (sıra 20) | Eğitim Konuları / Training Subjects | `App.Hr.TrainingSubject` | — | Grid, Card, Pivot, Chart | Toplam · Aktif · Pasif | +| İnsan Kaynakları (sıra 8) | Eğitimler / Trainings | `App.Hr.Training` | `TrainingParticipant`, `TrainingFile` (`Id → TrainingId`, menüsüz) | Grid, Card, Pivot, Chart | Toplam · Açık · Kapalı · Toplam Maliyet | Seed verisi: 8 eğitim tipi (Oryantasyon, İş Başı, Teknik Oryantasyon, Grup, Firma Dışı, Eğitim İçerikli Sosyal Faaliyet, Akademi, Rotasyon) ve 18 eğitim konusu (`data/App.Hr.{TrainingType,TrainingSubject}.json`). @@ -1858,13 +1859,14 @@ Saat hesabı aynı günlük saat aralığının her gün tekrarlandığını var ### 6. Yetki ve görünürlük -İzin grubu `App.Hr`, modül `Sas|Hr`. Yetki ağacı menüyü izler: `App.Hr.Trainings` ara yetkisinin -altında üç ekranın kökü + `.Create/.Update/.Delete/.Export/.Import/.Note`; `TrainingParticipant` ve -`TrainingFile` `App.Hr.Training` altındadır. Satır süzmesi yoktur. Hiçbir yetki role otomatik atanmaz. +İzin grubu `App.Hr`, modül `Sas|Hr`. Yetki ağacı menüyü izler: `App.Hr.TrainingType` ve +`App.Hr.TrainingSubject` `App.Hr.Definitions` altında, `App.Hr.Training` grubun kökündedir; her biri +`.Create/.Update/.Delete/.Export/.Import/.Note` taşır. `TrainingParticipant` ve `TrainingFile` +`App.Hr.Training` altındadır. Satır süzmesi yoktur. Hiçbir yetki role otomatik atanmaz. | Rol | Yetkiler | | --- | --- | -| Eğitim sorumlusu | `App.Hr.Trainings` dalının tamamı | +| Eğitim sorumlusu | `App.Hr.Training` dalının tamamı + `App.Hr.TrainingType`, `App.Hr.TrainingSubject` | | Bölüm yöneticisi (izleme) | `App.Hr.Training` + `App.Hr.TrainingParticipant` (salt okuma) | --- @@ -4453,53 +4455,7 @@ Kontrol edilmeli (koddan tespit edilenler): | `Clinic` | Klinik | dxTextBox | | ✓ | | | `SickLeaveReason` | İstirahat Nedeni | dxTextBox | | ✓ | | -### Eğitimler (`App.Hr.Trainings`) - -#### Eğitim Tipleri — `App.Hr.TrainingType` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/TrainingType.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Hr.Trainings` › `App.Hr.TrainingType` (sıra 1) | -| Yetki | `App.Hr.TrainingType` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Eğitim Tipleri — eğitimlerin türü (oryantasyon, iş başı, grup, firma dışı, akademi, rotasyon…). | -| Geliştirme talebi | Human Resources -> Eğitim | -| Kaynak | `Hr_T_TrainingType` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | -| Kapsam | Kiracı | -| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | -| Veri aynası | `data/App.Hr.TrainingType.json` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `Name` | Adı | dxTextBox | ✓ | ✓ | | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | script | - -#### Eğitim Konuları — `App.Hr.TrainingSubject` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/TrainingSubject.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Hr.Trainings` › `App.Hr.TrainingSubject` (sıra 2) | -| Yetki | `App.Hr.TrainingSubject` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Eğitim Konuları — bir eğitim tipine bağlı konu başlıkları (İSG, siber güvenlik, iş başı eğitimi…). | -| Geliştirme talebi | Human Resources -> Eğitim | -| Kaynak | `Hr_T_TrainingSubject` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | -| Kapsam | Kiracı | -| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | -| Veri aynası | `data/App.Hr.TrainingSubject.json` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `TrainingTypeId` | Eğitim Tipi | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_TrainingType | -| `Name` | Eğitim Konusu | dxTextBox | ✓ | ✓ | | -| `IsEvaluated` | Değerlendirilsin mi? | dxCheckBox | ✓ | ✓ | script | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | script | +### Eğitimler (`App.Hr.Training`) #### Eğitimler — `App.Hr.Training` @@ -4507,7 +4463,7 @@ Kontrol edilmeli (koddan tespit edilenler): | --- | --- | | Wizard | `wizard/Training.json` | | Yol | Liste (Wizard) | -| Menü | `App.Hr.Trainings` › `App.Hr.Training` (sıra 3) | +| Menü | `App.Hr` › `App.Hr.Training` (sıra 8) | | Yetki | `App.Hr.Training` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Eğitimler — düzenlenen her eğitim oturumu: tarih/saat, süre, yer, eğitmen, maliyet, kazandırdığı yetkinlikler, katılımcılar ve dosyalar. | | Geliştirme talebi | Human Resources -> Eğitim | @@ -4544,6 +4500,52 @@ Kontrol edilmeli (koddan tespit edilenler): | `CostOther` | Diğer | dxNumberBox | | ✓ | script | | `CostTotal` | Toplam Maliyet | dxNumberBox | | ✓ | | +#### Eğitim Tipleri — `App.Hr.TrainingType` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/TrainingType.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Definitions` › `App.Hr.TrainingType` (sıra 19) | +| Yetki | `App.Hr.TrainingType` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Eğitim Tipleri — eğitimlerin türü (oryantasyon, iş başı, grup, firma dışı, akademi, rotasyon…). | +| Geliştirme talebi | Human Resources -> Eğitim | +| Kaynak | `Hr_T_TrainingType` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | +| Kapsam | Kiracı | +| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | +| Veri aynası | `data/App.Hr.TrainingType.json` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `Name` | Adı | dxTextBox | ✓ | ✓ | | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | script | + +#### Eğitim Konuları — `App.Hr.TrainingSubject` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/TrainingSubject.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Hr.Definitions` › `App.Hr.TrainingSubject` (sıra 20) | +| Yetki | `App.Hr.TrainingSubject` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Eğitim Konuları — bir eğitim tipine bağlı konu başlıkları (İSG, siber güvenlik, iş başı eğitimi…). | +| Geliştirme talebi | Human Resources -> Eğitim | +| Kaynak | `Hr_T_TrainingSubject` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | +| Kapsam | Kiracı | +| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | +| Veri aynası | `data/App.Hr.TrainingSubject.json` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `TrainingTypeId` | Eğitim Tipi | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_TrainingType | +| `Name` | Eğitim Konusu | dxTextBox | ✓ | ✓ | | +| `IsEvaluated` | Değerlendirilsin mi? | dxCheckBox | ✓ | ✓ | script | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | script | + #### Katılımcılar — `App.Hr.TrainingParticipant` | Özellik | Değer | diff --git a/configs/seeds/docs/modules/App.Inventory.md b/configs/seeds/docs/modules/App.Inventory.md index 86c4205d..0d4600dc 100644 --- a/configs/seeds/docs/modules/App.Inventory.md +++ b/configs/seeds/docs/modules/App.Inventory.md @@ -7,7 +7,7 @@ ### 1. Amaç ve kapsam -Envanter ve üretimin ana verisi: ürün kartı (satış/masraf/satınalma bayrakları, mal/hizmet, envanter takibi ve yöntemi, nitelik–varyant, tedarikçi fiyatları, stok ve muhasebe bilgileri), ölçü birimine bağlı reçeteler (bileşen + operasyon; ürün ya da varyant bazında), iş merkezleri, operasyonlar ve çok seviyeli reçete patlatma raporu. Kullanıcılar: stok, satınalma ve üretim planlama ekipleri. Stok hareketi, sipariş ve üretim emri bu dalın kapsamı dışındadır. +Envanterin ana verisi: ürün kartı (satış/masraf/satınalma bayrakları, mal/hizmet, envanter takibi ve yöntemi, nitelik–varyant, tedarikçi fiyatları, stok ve muhasebe bilgileri), ölçü birimine bağlı reçeteler (bileşen + operasyon; ürün ya da varyant bazında) ve çok seviyeli reçete patlatma raporu. İş merkezleri ve operasyonlar Üretim modülündedir ([App.Production.md](App.Production.md)). Kullanıcılar: stok, satınalma ve üretim planlama ekipleri. Stok hareketi, sipariş ve üretim emri bu dalın kapsamı dışındadır. ### 2. Analiz ve kararlar @@ -15,6 +15,7 @@ Onaylanan analiz (talep "Inventory -> Tanımlamalar"): - Menü `Envanter › Tanımlamalar`; ara menü kodu `App.Inventory.Definitions` (Satınalmadaki `App.Prc.Definitions` kalıbı). - Görsellerdeki Kategori ve Etiket alanları için Ürün Kategorileri ve İş Merkezi Etiketleri tanım ekranları eklendi. +- İş Merkezi Etiketleri, İş Merkezleri ve Operasyonlar (alt formlarıyla) sonradan `Üretim › Tanımlamalar` altına taşındı: kod `App.Production.*`, tablo `Prd_T_*` (`App.Production.md` §2). - Ürün Türü yalnız Mal / Hizmet; Kombo yok. BoM Türü alanı yok (talep). - Vergiler oran (varsayılan %20), muhasebe hesapları serbest metin kod olarak tutulur (onaylı). - Varyantlar kalıcı tabloda tutulmaz: `VariantKey` = seçili nitelik değeri Id'lerinin, nitelik adı sırasıyla `|` birleşimi; aynı kombinasyon hep aynı anahtarı üretir. "Varyant Oluşturma = Asla" olan nitelik kartezyene girmez, Hemen/Dinamik aynı davranır (onaylı). @@ -28,12 +29,10 @@ Onaylanan analiz (talep "Inventory -> Tanımlamalar"): ### 3. Menü ve ekranlar -`Envanter (App.Inventory) › Tanımlamalar (App.Inventory.Definitions)` altında sırasıyla: Ürün Kategorileri, Nitelikler, İş Merkezi Etiketleri, İş Merkezleri, Operasyonlar, Ürün Varyantları, Reçeteye Genel Bakış, Reçeteler, Ürünler. +`Envanter (App.Inventory) › Tanımlamalar (App.Inventory.Definitions)` altında sırasıyla: Ürün Kategorileri, Nitelikler, Ürünler, Ürün Varyantları, Reçeteler, Reçeteye Genel Bakış. Sekmeler (menüsüz alt formlar): - Nitelikler › Nitelik Değerleri -- İş Merkezleri › Genel Bilgi (aynı satır), Ürün Kapasitesi -- Operasyonlar › Açıklamalar - Reçeteler › Bileşenler, Operasyonlar, Diğer (aynı satır), Genel Bakış (menülü, Tree) - Ürünler › Genel Bilgi, Stok, Muhasebe (aynı satır), Nitelik & Varyantlar, Varyantlar (menülü, salt okunur), Satınalma, Reçeteler (menülü) @@ -45,14 +44,10 @@ Tüm tablolar kiracı + tam audit + soft delete, anahtar `Id uniqueidentifier`. | --- | --- | | `Inv_T_ProductCategory` | Ad, üst kategori, aktif | | `Inv_T_Attribute` / `Inv_T_AttributeValue` | Nitelik (görünüm türü, varyant oluşturma) ve değerleri (serbest metin, ekstra fiyat, renk, sıra) | -| `Inv_T_WorkCenterTag` | Etiket adı, renk | -| `Inv_T_WorkCenter` | Ad, kod, etiketler (`|` Id), alternatif iş merkezleri (`|` Id), haftalık saat, verimlilik, OEE, kurulum/temizlik, saatlik maliyetler | -| `Inv_T_WorkCenterCapacity` | İş merkezi × ürün kapasitesi | -| `Inv_T_Operation` / `Inv_T_OperationInstruction` | Operasyon (iş merkezi, varsayılan süre, varyantlara uygula) ve talimatları | | `Inv_T_Product` | Ürün kartı ve Genel Bilgi/Stok/Muhasebe sekmelerinin alanları | | `Inv_T_ProductAttributeLine` | Ürün × nitelik, `ValueIds` (`|` ayrımlı değer Id) | | `Inv_T_ProductSupplier` | Tedarikçi, min. miktar, birim, fiyat, kur, teslim süresi, varyant | -| `Inv_T_Bom` / `Inv_T_BomComponent` / `Inv_T_BomOperation` | Reçete başlığı (ürün, varyant, miktar, birim, planlama), bileşenler (operasyona bağlanabilir), operasyonlar (iş merkezi, süre) | +| `Inv_T_Bom` / `Inv_T_BomComponent` / `Inv_T_BomOperation` | Reçete başlığı (ürün, varyant, miktar, birim, planlama), bileşenler (operasyona bağlanabilir), operasyonlar (iş merkezi `Prd_T_WorkCenter`, operasyon `Prd_T_Operation`, süre) | ### 5. İş kuralları ve hesaplar @@ -70,13 +65,13 @@ Tüm tablolar kiracı + tam audit + soft delete, anahtar `Id uniqueidentifier`. ### 7. Entegrasyonlar -Dış entegrasyon yok. Ölçü Birimleri, Kontaklar, Para Birimleri, Ülkeler ve Kullanıcılar yalnız lookup kaynağıdır. Satış ve satınalma sipariş ekranları ürünü `CanBeSold` / `CanBePurchased` ile süzecek; bu dalda sipariş ekranı yoktur. +Dış entegrasyon yok. Reçete operasyonları iş merkezi ve operasyonu Üretim modülünden okur; Üretim de ürün ve nitelik değerlerini buradan okur. Ölçü Birimleri, Kontaklar, Para Birimleri, Ülkeler ve Kullanıcılar yalnız lookup kaynağıdır. Satış ve satınalma sipariş ekranları ürünü `CanBeSold` / `CanBePurchased` ile süzecek; bu dalda sipariş ekranı yoktur. ### 8. Akış örneği 1. Nitelikler'de renk (kırmızı, mavi), malzeme (çelik, tahta), boyut (40x40, 80x100, 10x30) değerlerini gir. -2. İş Merkezleri'nde "ram makinası"nın saatlik maliyetini gir. -3. Operasyonlar'da "Apre"yi ram makinası, 60 dk olarak tanımla. +2. Üretim › İş Merkezleri'nde "ram makinası"nın saatlik maliyetini gir. +3. Üretim › Operasyonlar'da "Apre"yi ram makinası, 60 dk olarak tanımla. 4. Ürünler'de "(40X40mm) Mamül Sepeti Üst Geçme Kepi" › Nitelik & Varyantlar sekmesine üç niteliği ekle. Varyantlar sekmesinde 12 kombinasyon görünür. 5. Reçeteler'de kep için 1 Adet reçete aç. Bileşenler'e 20 Adet AUTONİCS PR12-4DN Sensör, Operasyonlar'a Apre ekle. 6. Genel Bakış sekmesi ağacı ve maliyetleri gösterir. @@ -90,10 +85,10 @@ Dış entegrasyon yok. Ölçü Birimleri, Kontaklar, Para Birimleri, Ülkeler ve ### 10. Dosyalar ve geri alma -- **Tablolar:** `sql/object/Inv_T_*.sql` (14 tablo). -- **Wizard'lar:** ProductCategory, Attribute, AttributeValue, WorkCenterTag, WorkCenter, WorkCenterGeneral, WorkCenterCapacity, Operation, OperationInstruction, ProductVariant, BomOverview, Bom, BomComponent, BomOperation, BomOther, Product, ProductGeneral, ProductAttributeLine, ProductSupplier, ProductStock, ProductAccounting (`.json`). -- **Demo veri aynaları:** `data/App.Inventory.{ProductCategory,Attribute,WorkCenterTag,WorkCenter,Product}.json`. -- **Geri alma:** Wizard Manager'da ana ekranlar (Product, Bom, WorkCenter, Operation, Attribute) önce, alt formları sonra silinir. Tablolar ancak açık onayla `dropTables` ile düşürülür. +- **Tablolar:** `sql/object/Inv_T_*.sql` (9 tablo). +- **Wizard'lar:** ProductCategory, Attribute, AttributeValue, ProductVariant, BomOverview, Bom, BomComponent, BomOperation, BomOther, Product, ProductGeneral, ProductAttributeLine, ProductSupplier, ProductStock, ProductAccounting (`.json`). +- **Demo veri aynaları:** `data/App.Inventory.{ProductCategory,Attribute,Product}.json`. +- **Geri alma:** Wizard Manager'da ana ekranlar (Product, Bom, Attribute) önce, alt formları sonra silinir. Tablolar ancak açık onayla `dropTables` ile düşürülür. - **Sorgu bağımlılığı:** Sorgular SQL Server'a özgüdür (`STRING_SPLIT`, `CONCAT_WS`, `STRING_AGG`, `CROSS APPLY`). - **Açık nokta:** Form varsayılanları (Aktif = true, Birim = Adet, Miktar = 1, Süre = 60, Kur = TRY) düz wizard biçimiyle dosyaya yazılmadı. ListForm düzenleyicisinden ya da `ListForm` bölümlü yeniden deploy ile eklenmelidir. @@ -115,7 +110,7 @@ Dış entegrasyon yok. Ölçü Birimleri, Kontaklar, Para Birimleri, Ülkeler ve | Açıklama | Ürün Kategorileri — ürünleri raporlama, filtreleme ve varsayılan muhasebe için gruplar (ör. Elektrik ve Elektronik Malzemeler, Mamuller). | | Geliştirme talebi | Inventory -> Tanımlamalar | | Kaynak | `Inv_T_ProductCategory` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Görünümler | Grid, Card, Pivot, Chart, Tree (açılış grid) | | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | | Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | @@ -152,174 +147,13 @@ Dış entegrasyon yok. Ölçü Birimleri, Kontaklar, Para Birimleri, Ülkeler ve | `VariantCreation` | Varyant Oluşturma | dxRadioGroup | ✓ | ✓ | liste: Always, Dynamic, Never | | `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | -#### İş Merkezi Etiketleri — `App.Inventory.WorkCenterTag` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/WorkCenterTag.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Inventory.Definitions` › `App.Inventory.WorkCenterTag` (sıra 3) | -| Yetki | `App.Inventory.WorkCenterTag` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | İş Merkezi Etiketleri — iş merkezlerini sınıflandırmak için kullanılan etiketler (boyahane, apre, montaj…). | -| Geliştirme talebi | Inventory -> Tanımlamalar | -| Kaynak | `Inv_T_WorkCenterTag` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | -| Kapsam | Kiracı | -| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | -| Veri aynası | `data/App.Inventory.WorkCenterTag.json` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `Name` | Ad | dxTextBox | ✓ | ✓ | | -| `Color` | Renk | dxColorBox | | ✓ | | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | - -#### İş Merkezleri — `App.Inventory.WorkCenter` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/WorkCenter.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Inventory.Definitions` › `App.Inventory.WorkCenter` (sıra 4) | -| Yetki | `App.Inventory.WorkCenter` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | İş Merkezleri — operasyonların yapıldığı makine ya da istasyonlar (ör. ram makinası). | -| Geliştirme talebi | Inventory -> Tanımlamalar | -| Kaynak | `Inv_T_WorkCenter` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | -| Kapsam | Kiracı | -| Alt formlar | `App.Inventory.WorkCenterGeneral` (Id → Id), `App.Inventory.WorkCenterCapacity` (Id → WorkCenterId) | -| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | -| Form varsayılanları | IsActive=true | -| Veri aynası | `data/App.Inventory.WorkCenter.json` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `Name` | İş Merkezi Adı | dxTextBox | ✓ | ✓ | | -| `Code` | Kod | dxTextBox | | ✓ | | -| `Tags` | Etiketler | dxTagBox | | ✓ | sorgu: Inv_T_WorkCenterTag | -| `WeeklyWorkingHours` | Çalışma Saatleri (Haftalık) | dxNumberBox | ✓ | ✓ | | -| `AlternativeWorkCenterIds` | Alternatif İş Merkezleri | dxTagBox | | ✓ | sorgu: Inv_T_WorkCenter | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | - -#### Operasyonlar — `App.Inventory.Operation` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/Operation.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Inventory.Definitions` › `App.Inventory.Operation` (sıra 5) | -| Yetki | `App.Inventory.Operation` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Operasyonlar — bir iş merkezinde yapılan üretim adımları (ör. ram makinasında Apre). | -| Geliştirme talebi | Inventory -> Tanımlamalar | -| Kaynak | `Inv_T_Operation` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | -| Kapsam | Kiracı | -| Alt formlar | `App.Inventory.OperationInstruction` (Id → OperationId) | -| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | -| Form varsayılanları | IsActive=true | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `Name` | Operasyon Adı | dxTextBox | ✓ | ✓ | | -| `WorkCenterId` | İş Merkezi | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_WorkCenter | -| `DefaultDurationMin` | Varsayılan Süre (dk) | dxNumberBox | ✓ | ✓ | | -| `ApplyOnVariants` | Varyantlara Uygula | dxTagBox | | ✓ | sorgu: Inv_T_AttributeValue | -| `CostBasis` | Maliyete Dayalı | dxRadioGroup | ✓ | ✓ | liste: Actual, Theoretical | -| `DurationMode` | Süre Hesaplama | dxRadioGroup | ✓ | ✓ | liste: Fixed, Computed | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | - -#### Ürün Varyantları — `App.Inventory.ProductVariant` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/ProductVariant.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Inventory.Definitions` › `App.Inventory.ProductVariant` (sıra 6) | -| Yetki | `App.Inventory.ProductVariant` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Ürün Varyantları — üründe seçilen nitelik değerlerinin her kombinasyonu (ör. kırmızı · çelik · 40x40), salt okunur. | -| Geliştirme talebi | Inventory -> Tanımlamalar | -| Kaynak | `SELECT CAST(p.Id AS nvarchar(36)) + ':' + CONCAT_WS('\|', l1.VId, l2.VId, l3.VId, l4.VId, l5.VId) AS [Key], p.Id AS ProductId, p.Name AS ProductName, CONCAT_WS('\|', l1.VId, l2.VId, l3.VId, l4.VId, l5.VId) AS VariantKey, CONCAT_WS(', ', l1.VName, l2.VName, l3.VName, l4.VName, l5.VName) AS VariantName, p.InternalReference, CAST(p.SalesPrice + ISNULL(l1.XP, 0) + ISNULL(l2.XP, 0) + ISNULL(l3.XP, 0) + ISNULL(l4.XP, 0) + ISNULL(l5.XP, 0) AS decimal(18,4)) AS SalesPrice, p.Cost, p.UomId, p.CategoryId, p.IsActive, p.TenantId, p.IsDeleted FROM Inv_T_Product p LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l1 ON l1.ProductId = p.Id AND l1.Rk = 1 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l2 ON l2.ProductId = p.Id AND l2.Rk = 2 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l3 ON l3.ProductId = p.Id AND l3.Rk = 3 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l4 ON l4.ProductId = p.Id AND l4.Rk = 4 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l5 ON l5.ProductId = p.Id AND l5.Rk = 5` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | -| Kapsam | Kiracı | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | -| `InternalReference` | İç Referans | dxTextBox | | ✓ | | -| `ProductName` | Adı | dxTextBox | | ✓ | | -| `VariantName` | Varyant Değerleri | dxTextBox | | ✓ | | -| `SalesPrice` | Satış Fiyatı | dxNumberBox | | ✓ | | -| `Cost` | Maliyet | dxNumberBox | | ✓ | | -| `UomId` | Birim | dxSelectBox | | ✓ | sorgu: Adm_T_Uom | -| `CategoryId` | Kategori | dxSelectBox | | ✓ | sorgu: Inv_T_ProductCategory | -| `IsActive` | Aktif | dxCheckBox | | ✓ | | -| `IsDeleted` | Silindi | dxCheckBox | | | | - -#### Reçeteye Genel Bakış — `App.Inventory.BomOverview` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/BomOverview.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Inventory.Definitions` › `App.Inventory.BomOverview` (sıra 7) | -| Yetki | `App.Inventory.BomOverview` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Reçeteye Genel Bakış — her aktif reçetenin çok seviyeli patlatılmış hali, ağaç olarak (salt okunur). | -| Geliştirme talebi | Inventory -> Tanımlamalar | -| Kaynak | `SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)) AS NodeKey, CAST(NULL AS nvarchar(400)) AS ParentKey, b0.Id AS BomId, 0 AS NodeLevel, CAST('Product' AS nvarchar(20)) AS NodeType, CAST(p0.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(b0.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)) AS Name, CAST(b0.Quantity AS decimal(18,4)) AS Quantity, CAST(u0.Name AS nvarchar(64)) AS UomName, CAST(NULL AS decimal(18,4)) AS Cost, b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_Product p0 ON p0.Id = b0.ProductId LEFT JOIN Adm_T_Uom u0 ON u0.Id = b0.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 1, 'Component', CAST(p1.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c1.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity AS decimal(18,4)), u1.Name, CAST(c1.Quantity * p1.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' INNER JOIN Inv_T_Product p1 ON p1.Id = c1.ProductId LEFT JOIN Adm_T_Uom u1 ON u1.Id = c1.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 2, 'Component', CAST(p2.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c2.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity AS decimal(18,4)), u2.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * p2.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' INNER JOIN Inv_T_Product p2 ON p2.Id = c2.ProductId LEFT JOIN Adm_T_Uom u2 ON u2.Id = c2.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 3, 'Component', CAST(p3.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c3.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity AS decimal(18,4)), u3.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * p3.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' INNER JOIN Inv_T_Product p3 ON p3.Id = c3.ProductId LEFT JOIN Adm_T_Uom u3 ON u3.Id = c3.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/C' + CAST(c4.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 4, 'Component', CAST(p4.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c4.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * c4.Quantity / b3.Quantity AS decimal(18,4)), u4.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * c4.Quantity / b3.Quantity * p4.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomComponent c4 ON c4.BomId = b3.Id AND c4.IsDeleted = 'false' INNER JOIN Inv_T_Product p4 ON p4.Id = c4.ProductId LEFT JOIN Adm_T_Uom u4 ON u4.Id = c4.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 1, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomOperation o ON o.BomId = b0.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 2, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin AS decimal(18,4)), 'Dakika', CAST(o.DurationMin / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomOperation o ON o.BomId = b0.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_Operation op ON op.Id = o.OperationId INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 2, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity / b1.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity / b1.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomOperation o ON o.BomId = b1.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 3, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity / b1.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity / b1.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomOperation o ON o.BomId = b1.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_Operation op ON op.Id = o.OperationId INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 3, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomOperation o ON o.BomId = b2.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id, c2.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 4, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomOperation o ON o.BomId = b2.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_Operation op ON op.Id = o.OperationId INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 4, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomOperation o ON o.BomId = b3.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id, c2.Id, c3.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 5, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomOperation o ON o.BomId = b3.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_Operation op ON op.Id = o.OperationId INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart, Tree (açılış tree) | -| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | -| Kapsam | Kiracı | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `ParentKey` | Üst Düğüm | dxTextBox | | | | -| `Name` | Ürün | dxTextBox | | ✓ | | -| `Quantity` | Miktar | dxNumberBox | | ✓ | | -| `UomName` | Birim | dxTextBox | | ✓ | | -| `Cost` | Maliyet | dxNumberBox | | ✓ | | -| `NodeType` | Satır Türü | dxSelectBox | | ✓ | liste: Product, Component, OperationGroup, Operation | -| `NodeLevel` | Seviye | dxNumberBox | | ✓ | | -| `BomId` | Reçete | dxTextBox | | | | -| `IsDeleted` | Silindi | dxCheckBox | | | | - -#### Reçeteler — `App.Inventory.Bom` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/Bom.json` | -| Yol | Liste (Wizard) | -| Menü | `App.Inventory.Definitions` › `App.Inventory.Bom` (sıra 8) | -| Yetki | `App.Inventory.Bom` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Reçeteler — bir ürünü üretmek için gereken hammadde, yarı mamul ve operasyonlar. | -| Geliştirme talebi | Inventory -> Tanımlamalar | -| Kaynak | `Inv_T_Bom` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | -| Kapsam | Kiracı | -| Alt formlar | `App.Inventory.BomComponent` (Id → BomId), `App.Inventory.BomOperation` (Id → BomId), `App.Inventory.BomOther` (Id → Id), `App.Inventory.BomOverview` (Id → BomId) | -| Widget'lar | `App.Widget.Total`, `App.Widget.VariantBased`, `App.Widget.Active` | -| Form varsayılanları | UomId=Adet, IsActive=true, Quantity=0 | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `ProductId` | Ürün | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Product | -| `Reference` | Referans | dxTextBox | | ✓ | | -| `VariantKey` | Ürün Varyantı | dxSelectBox | | ✓ | sorgu: Inv_T_Product (← ProductId) | -| `Quantity` | Miktar | dxNumberBox | ✓ | ✓ | | -| `UomId` | Birim | dxSelectBox | ✓ | ✓ | sorgu: Adm_T_Uom | -| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | - #### Ürünler — `App.Inventory.Product` | Özellik | Değer | | --- | --- | | Wizard | `wizard/Product.json` | | Yol | Liste (Wizard) | -| Menü | `App.Inventory.Definitions` › `App.Inventory.Product` (sıra 9) | +| Menü | `App.Inventory.Definitions` › `App.Inventory.Product` (sıra 3) | | Yetki | `App.Inventory.Product` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | | Açıklama | Ürünler — satış, satınalma, stok ve üretimin ortak kullandığı ürün kartı. | | Geliştirme talebi | Inventory -> Tanımlamalar | @@ -351,6 +185,88 @@ Dış entegrasyon yok. Ölçü Birimleri, Kontaklar, Para Birimleri, Ülkeler ve | `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | | `Image` | Resim | dxImageUpload | | ✓ | | +#### Ürün Varyantları — `App.Inventory.ProductVariant` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/ProductVariant.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Inventory.Definitions` › `App.Inventory.ProductVariant` (sıra 4) | +| Yetki | `App.Inventory.ProductVariant` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Ürün Varyantları — üründe seçilen nitelik değerlerinin her kombinasyonu (ör. kırmızı · çelik · 40x40), salt okunur. | +| Geliştirme talebi | Inventory -> Tanımlamalar | +| Kaynak | `SELECT CAST(p.Id AS nvarchar(36)) + ':' + CONCAT_WS('\|', l1.VId, l2.VId, l3.VId, l4.VId, l5.VId) AS [Key], p.Id AS ProductId, p.Name AS ProductName, CONCAT_WS('\|', l1.VId, l2.VId, l3.VId, l4.VId, l5.VId) AS VariantKey, CONCAT_WS(', ', l1.VName, l2.VName, l3.VName, l4.VName, l5.VName) AS VariantName, p.InternalReference, CAST(p.SalesPrice + ISNULL(l1.XP, 0) + ISNULL(l2.XP, 0) + ISNULL(l3.XP, 0) + ISNULL(l4.XP, 0) + ISNULL(l5.XP, 0) AS decimal(18,4)) AS SalesPrice, p.Cost, p.UomId, p.CategoryId, p.IsActive, p.TenantId, p.IsDeleted FROM Inv_T_Product p LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l1 ON l1.ProductId = p.Id AND l1.Rk = 1 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l2 ON l2.ProductId = p.Id AND l2.Rk = 2 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l3 ON l3.ProductId = p.Id AND l3.Rk = 3 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l4 ON l4.ProductId = p.Id AND l4.Rk = 4 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l5 ON l5.ProductId = p.Id AND l5.Rk = 5` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | +| Kapsam | Kiracı | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | +| `InternalReference` | İç Referans | dxTextBox | | ✓ | | +| `ProductName` | Adı | dxTextBox | | ✓ | | +| `VariantName` | Varyant Değerleri | dxTextBox | | ✓ | | +| `SalesPrice` | Satış Fiyatı | dxNumberBox | | ✓ | | +| `Cost` | Maliyet | dxNumberBox | | ✓ | | +| `UomId` | Birim | dxSelectBox | | ✓ | sorgu: Adm_T_Uom | +| `CategoryId` | Kategori | dxSelectBox | | ✓ | sorgu: Inv_T_ProductCategory | +| `IsActive` | Aktif | dxCheckBox | | ✓ | | +| `IsDeleted` | Silindi | dxCheckBox | | | | + +#### Reçeteler — `App.Inventory.Bom` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Bom.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Inventory.Definitions` › `App.Inventory.Bom` (sıra 5) | +| Yetki | `App.Inventory.Bom` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Reçeteler — bir ürünü üretmek için gereken hammadde, yarı mamul ve operasyonlar. | +| Geliştirme talebi | Inventory -> Tanımlamalar | +| Kaynak | `Inv_T_Bom` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | +| Kapsam | Kiracı | +| Alt formlar | `App.Inventory.BomComponent` (Id → BomId), `App.Inventory.BomOperation` (Id → BomId), `App.Inventory.BomOther` (Id → Id), `App.Inventory.BomOverview` (Id → BomId) | +| Widget'lar | `App.Widget.Total`, `App.Widget.VariantBased`, `App.Widget.Active` | +| Form varsayılanları | UomId=Adet, IsActive=true, Quantity=0 | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `ProductId` | Ürün | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Product | +| `Reference` | Referans | dxTextBox | | ✓ | | +| `VariantKey` | Ürün Varyantı | dxSelectBox | | ✓ | sorgu: Inv_T_Product (← ProductId) | +| `Quantity` | Miktar | dxNumberBox | ✓ | ✓ | | +| `UomId` | Birim | dxSelectBox | ✓ | ✓ | sorgu: Adm_T_Uom | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | + +#### Reçeteye Genel Bakış — `App.Inventory.BomOverview` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/BomOverview.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Inventory.Definitions` › `App.Inventory.BomOverview` (sıra 6) | +| Yetki | `App.Inventory.BomOverview` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Reçeteye Genel Bakış — her aktif reçetenin çok seviyeli patlatılmış hali, ağaç olarak (salt okunur). | +| Geliştirme talebi | Inventory -> Tanımlamalar | +| Kaynak | `SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)) AS NodeKey, CAST(NULL AS nvarchar(400)) AS ParentKey, b0.Id AS BomId, 0 AS NodeLevel, CAST('Product' AS nvarchar(20)) AS NodeType, CAST(p0.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(b0.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)) AS Name, CAST(b0.Quantity AS decimal(18,4)) AS Quantity, CAST(u0.Name AS nvarchar(64)) AS UomName, CAST(NULL AS decimal(18,4)) AS Cost, b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_Product p0 ON p0.Id = b0.ProductId LEFT JOIN Adm_T_Uom u0 ON u0.Id = b0.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 1, 'Component', CAST(p1.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c1.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity AS decimal(18,4)), u1.Name, CAST(c1.Quantity * p1.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' INNER JOIN Inv_T_Product p1 ON p1.Id = c1.ProductId LEFT JOIN Adm_T_Uom u1 ON u1.Id = c1.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 2, 'Component', CAST(p2.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c2.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity AS decimal(18,4)), u2.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * p2.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' INNER JOIN Inv_T_Product p2 ON p2.Id = c2.ProductId LEFT JOIN Adm_T_Uom u2 ON u2.Id = c2.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 3, 'Component', CAST(p3.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c3.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity AS decimal(18,4)), u3.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * p3.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' INNER JOIN Inv_T_Product p3 ON p3.Id = c3.ProductId LEFT JOIN Adm_T_Uom u3 ON u3.Id = c3.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/C' + CAST(c4.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 4, 'Component', CAST(p4.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c4.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * c4.Quantity / b3.Quantity AS decimal(18,4)), u4.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * c4.Quantity / b3.Quantity * p4.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomComponent c4 ON c4.BomId = b3.Id AND c4.IsDeleted = 'false' INNER JOIN Inv_T_Product p4 ON p4.Id = c4.ProductId LEFT JOIN Adm_T_Uom u4 ON u4.Id = c4.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 1, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomOperation o ON o.BomId = b0.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 2, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin AS decimal(18,4)), 'Dakika', CAST(o.DurationMin / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomOperation o ON o.BomId = b0.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 2, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity / b1.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity / b1.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomOperation o ON o.BomId = b1.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 3, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity / b1.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity / b1.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomOperation o ON o.BomId = b1.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 3, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomOperation o ON o.BomId = b2.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id, c2.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 4, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomOperation o ON o.BomId = b2.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 4, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomOperation o ON o.BomId = b3.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id, c2.Id, c3.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 5, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomOperation o ON o.BomId = b3.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart, Tree (açılış tree) | +| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | +| Kapsam | Kiracı | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `ParentKey` | Üst Düğüm | dxTextBox | | | | +| `Name` | Ürün | dxTextBox | | ✓ | | +| `Quantity` | Miktar | dxNumberBox | | ✓ | | +| `UomName` | Birim | dxTextBox | | ✓ | | +| `Cost` | Maliyet | dxNumberBox | | ✓ | | +| `NodeType` | Satır Türü | dxSelectBox | | ✓ | liste: Product, Component, OperationGroup, Operation | +| `NodeLevel` | Seviye | dxNumberBox | | ✓ | | +| `BomId` | Reçete | dxTextBox | | | | +| `IsDeleted` | Silindi | dxCheckBox | | | | + #### Nitelik Değerleri — `App.Inventory.AttributeValue` | Özellik | Değer | @@ -377,79 +293,6 @@ Dış entegrasyon yok. Ölçü Birimleri, Kontaklar, Para Birimleri, Ülkeler ve | `SortOrder` | Sıra | dxNumberBox | | ✓ | | | `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | -#### Genel Bilgi — `App.Inventory.WorkCenterGeneral` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/WorkCenterGeneral.json` | -| Yol | Liste (Wizard) | -| Menü | Menüsüz (alt form) | -| Yetki | `App.Inventory.WorkCenterGeneral` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | İş Merkezi Genel Bilgi — iş merkezinin üretim ve maliyetlendirme bilgileri. | -| Geliştirme talebi | Inventory -> Tanımlamalar | -| Kaynak | `Inv_T_WorkCenter` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup | -| Kapsam | Kiracı | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `TimeEfficiency` | Zaman Verimliliği (%) | dxNumberBox | ✓ | ✓ | | -| `OeeTarget` | OEE Hedefi (%) | dxNumberBox | ✓ | ✓ | | -| `SetupTimeMin` | Kurulum Zamanı (dk) | dxNumberBox | | ✓ | | -| `CleanupTimeMin` | Temizlik Zamanı (dk) | dxNumberBox | | ✓ | | -| `CostPerHour` | Saat Başına Maliyet (İş Merkezi) | dxNumberBox | | ✓ | | -| `EmployeeCostPerHour` | Saat Başına Maliyet (Çalışan) | dxNumberBox | | ✓ | | -| `Description` | Açıklama | dxTextArea | | ✓ | | - -#### Ürün Kapasitesi — `App.Inventory.WorkCenterCapacity` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/WorkCenterCapacity.json` | -| Yol | Liste (Wizard) | -| Menü | Menüsüz (alt form) | -| Yetki | `App.Inventory.WorkCenterCapacity` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | İş Merkezi Ürün Kapasitesi — iş merkezinin bir çevrimde bir üründen kaç birim işleyebildiği. | -| Geliştirme talebi | Inventory -> Tanımlamalar | -| Kaynak | `Inv_T_WorkCenterCapacity` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | -| Kapsam | Kiracı | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `WorkCenterId` | İş Merkezi | dxSelectBox | | | sorgu: Inv_T_WorkCenter | -| `ProductId` | Ürün | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Product | -| `Capacity` | Kapasite | dxNumberBox | ✓ | ✓ | | -| `UomId` | Birim | dxSelectBox | | ✓ | sorgu: Adm_T_Uom | -| `SetupTimeMin` | Kurulum Zamanı (dk) | dxNumberBox | | ✓ | | -| `CleanupTimeMin` | Temizlik Zamanı (dk) | dxNumberBox | | ✓ | | - -#### Açıklamalar — `App.Inventory.OperationInstruction` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/OperationInstruction.json` | -| Yol | Liste (Wizard) | -| Menü | Menüsüz (alt form) | -| Yetki | `App.Inventory.OperationInstruction` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Operasyon Açıklamaları — bir operasyonda operatöre gösterilen iş talimatları. | -| Geliştirme talebi | Inventory -> Tanımlamalar | -| Kaynak | `Inv_T_OperationInstruction` · filtre `"IsDeleted" = 'false'` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | -| Kapsam | Kiracı | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `OperationId` | Operasyon | dxSelectBox | | | sorgu: Inv_T_Operation | -| `Title` | Başlık | dxTextBox | ✓ | ✓ | | -| `InstructionType` | Tip | dxSelectBox | ✓ | ✓ | liste: Text, Pdf, Image, Link | -| `Reference` | Referans | dxTextBox | | ✓ | | -| `Note` | Not | dxTextArea | | ✓ | | -| `SortOrder` | Sıra | dxNumberBox | | ✓ | | - #### Bileşenler — `App.Inventory.BomComponent` | Özellik | Değer | @@ -493,8 +336,8 @@ Dış entegrasyon yok. Ölçü Birimleri, Kontaklar, Para Birimleri, Ülkeler ve | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | | `BomId` | Reçete | dxTextBox | | | | -| `OperationId` | Operasyon | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Operation · script | -| `WorkCenterId` | İş Merkezi | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_WorkCenter | +| `OperationId` | Operasyon | dxSelectBox | ✓ | ✓ | sorgu: Prd_T_Operation · script | +| `WorkCenterId` | İş Merkezi | dxSelectBox | ✓ | ✓ | sorgu: Prd_T_WorkCenter | | `DurationMin` | Süre (dakika) | dxNumberBox | ✓ | ✓ | | | `SortOrder` | Sıra | dxNumberBox | | ✓ | | diff --git a/configs/seeds/docs/modules/App.Production.md b/configs/seeds/docs/modules/App.Production.md new file mode 100644 index 00000000..683d446e --- /dev/null +++ b/configs/seeds/docs/modules/App.Production.md @@ -0,0 +1,230 @@ +# Üretim (`App.Production`) + +> Menünün altındaki her dal bu dosyada bir bölümdür (`module-doc:section`); dosya ve bölümler ilk deploy'da otomatik açılır. `module-doc:todo` işaretli alt bölümleri modülü üreten kişi ya da AI doldurur (`lowcode.instructions.md` §0.13); MCP ile üretimde talep bu bölümler doldurulmadan Testing'e alınamaz. "Ek — Ekran envanteri" bölümü wizard dosyalarından üretilir, elle düzenlenmez. + + +## Tanımlamalar (`App.Production.Definitions`) + +### 1. Amaç ve kapsam + +Üretimin ana verisi: iş merkezleri (verimlilik, OEE, kurulum/temizlik süresi, saatlik maliyetler, ürün kapasitesi), iş merkezi etiketleri ve operasyonlar (iş merkezi, varsayılan süre, varyant kapsamı, talimatlar). Reçeteler (`App.Inventory.Bom`) bu tanımları kullanır. Kullanıcılar: üretim planlama ve maliyet ekipleri. Üretim emri ve iş emri bu dalın kapsamı dışındadır. + +### 2. Analiz ve kararlar + +- Ekranlar ilk olarak `Envanter › Tanımlamalar` altında üretildi (talep "Inventory -> Tanımlamalar"; analiz `App.Inventory.md` §2). Talep "Production menüsü" ile ayrı modüle taşındı. +- Taşıma tam modül taşımasıdır: ekran kodu `App.Inventory.*` → `App.Production.*`, tablo öneki `Inv_T_` → `Prd_T_`, izin grubu `App.Production`, modül `Production`; menü `Üretim › Tanımlamalar` (Envanter'in hemen sağı, kök sıra 7). +- Haftalık çalışma saati ayardan (`%WeeklyWorkingTimeLimit%`) okunur, yoksa 40. +- Operasyonun "Varyantlara Uygula" seçenekleri Envanter'in nitelik değerlerinden (`Inv_T_AttributeValue`) gelir; modüller arası bağ yalnızca lookup'tır. + +### 3. Menü ve ekranlar + +`Üretim (App.Production) › Tanımlamalar (App.Production.Definitions)` altında sırasıyla: İş Merkezi Etiketleri, İş Merkezleri, Operasyonlar. + +Sekmeler (menüsüz alt formlar): +- İş Merkezleri › Genel Bilgi (aynı satır), Ürün Kapasitesi +- Operasyonlar › Açıklamalar + +### 4. Veri modeli + +Tüm tablolar kiracı + tam audit + soft delete, anahtar `Id uniqueidentifier`. + +| Tablo | İçerik | +| --- | --- | +| `Prd_T_WorkCenterTag` | Etiket adı, renk | +| `Prd_T_WorkCenter` | Ad, kod, etiketler (`|` Id), alternatif iş merkezleri (`|` Id), haftalık saat, verimlilik, OEE, kurulum/temizlik, saatlik maliyetler | +| `Prd_T_WorkCenterCapacity` | İş merkezi × ürün (`Inv_T_Product`) kapasitesi | +| `Prd_T_Operation` / `Prd_T_OperationInstruction` | Operasyon (iş merkezi, varsayılan süre, varyantlara uygula, maliyet/süre yöntemi) ve talimatları | + +### 5. İş kuralları ve hesaplar + +- **Çoklu değer alanları** (Etiketler, Alternatif İş Merkezleri, Varyantlara Uygula; `dxTagBox`) `|` ile ayrılmış metin kolonunda saklanır. +- **Operasyon maliyeti** reçetede hesaplanır: süre ÷ 60 × iş merkezi saatlik maliyeti (`App.Inventory.BomOverview`). +- Reçete operasyonunda operasyon seçilince iş merkezi ve varsayılan süre operasyondan dolar (`App.Inventory.BomOperation`). + +### 6. Yetki ve görünürlük + +İzin grubu `App.Production`, modül `Production`. Ekranların okuma yetkisi `App.Production.Definitions` altında; alt formların yetkisi bağlı oldukları listenin altındadır (Genel Bilgi ve Ürün Kapasitesi → `App.Production.WorkCenter`, Açıklamalar → `App.Production.Operation`). Her listede `.Create/.Update/.Delete/.Export/.Import/.Note`. Yetkiler hiçbir role otomatik verilmez; taşıma sonrası eski `App.Inventory.*` yetkileri silindiği için rollere yeniden verilmelidir. Tüm ekranlar kiracı filtrelidir. + +### 7. Entegrasyonlar + +Dış entegrasyon yok. Envanter modülü iki yönde bağlıdır: Ürün Kapasitesi ürünü, Operasyon nitelik değerlerini Envanter'den okur; Reçete Operasyonları, Reçete Bileşenleri ve Reçeteye Genel Bakış iş merkezi ve operasyonları bu modülden okur. + +### 8. Akış örneği + +1. İş Merkezi Etiketleri'nde "Apre" etiketini aç. +2. İş Merkezleri'nde "ram makinası"nı etiketle, Genel Bilgi sekmesinde saatlik maliyetini gir. +3. Operasyonlar'da "Apre"yi ram makinası, 60 dk olarak tanımla; Açıklamalar sekmesine iş talimatını ekle. +4. Envanter › Reçeteler › Operasyonlar sekmesinde "Apre"yi seç; iş merkezi ve süre dolar, Genel Bakış maliyeti hesaplar. + +### 9. Sık sorulanlar + +- **Menüde ekranlar görünmüyor?** Yetkiler `App.Production.*` adıyla yeniden açıldı; rol ekranından verilmelidir. +- **Eski iş merkezi kayıtları nerede?** Veritabanı yeniden kurulmadıysa satırlar eski `Inv_T_*` tablolarında kalır; yeni tablolar `Prd_T_*`'dır. + +### 10. Dosyalar ve geri alma + +- **Tablolar:** `sql/object/Prd_T_*.sql` + `postgres/object/Prd_T_*.sql` (5 tablo). +- **Wizard'lar:** WorkCenterTag, WorkCenter, WorkCenterGeneral, WorkCenterCapacity, Operation, OperationInstruction (`.json`). +- **Demo veri aynaları:** `data/App.Production.{WorkCenterTag,WorkCenter}.json`. +- **Geri alma:** Wizard Manager'da ana ekranlar (WorkCenter, Operation) önce, alt formları sonra silinir; Envanter'in reçete ekranları bu tablolara lookup ile bağlıdır. Tablolar ancak açık onayla `dropTables` ile düşürülür. + + +## Ek — Ekran envanteri (otomatik) + +> Wizard dosyalarından üretilir; deploy, silme, tasarımcı kaydı ve import'ta yenilenir. Elle düzenleme bir sonraki yenilemede kaybolur. + +### Tanımlamalar (`App.Production.Definitions`) + +#### İş Merkezi Etiketleri — `App.Production.WorkCenterTag` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/WorkCenterTag.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Production.Definitions` › `App.Production.WorkCenterTag` (sıra 1) | +| Yetki | `App.Production.WorkCenterTag` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | İş Merkezi Etiketleri — iş merkezlerini sınıflandırmak için kullanılan etiketler (boyahane, apre, montaj…). | +| Geliştirme talebi | Inventory -> Tanımlamalar | +| Kaynak | `Prd_T_WorkCenterTag` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | +| Kapsam | Kiracı | +| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | +| Veri aynası | `data/App.Production.WorkCenterTag.json` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `Name` | Ad | dxTextBox | ✓ | ✓ | | +| `Color` | Renk | dxColorBox | | ✓ | | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | + +#### İş Merkezleri — `App.Production.WorkCenter` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/WorkCenter.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Production.Definitions` › `App.Production.WorkCenter` (sıra 2) | +| Yetki | `App.Production.WorkCenter` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | İş Merkezleri — operasyonların yapıldığı makine ya da istasyonlar (ör. ram makinası). | +| Geliştirme talebi | Inventory -> Tanımlamalar | +| Kaynak | `Prd_T_WorkCenter` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | +| Kapsam | Kiracı | +| Alt formlar | `App.Production.WorkCenterGeneral` (Id → Id), `App.Production.WorkCenterCapacity` (Id → WorkCenterId) | +| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | +| Form varsayılanları | IsActive=true | +| Veri aynası | `data/App.Production.WorkCenter.json` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `Name` | İş Merkezi Adı | dxTextBox | ✓ | ✓ | | +| `Code` | Kod | dxTextBox | | ✓ | | +| `Tags` | Etiketler | dxTagBox | | ✓ | sorgu: Prd_T_WorkCenterTag | +| `WeeklyWorkingHours` | Çalışma Saatleri (Haftalık) | dxNumberBox | ✓ | ✓ | | +| `AlternativeWorkCenterIds` | Alternatif İş Merkezleri | dxTagBox | | ✓ | sorgu: Prd_T_WorkCenter | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | + +#### Operasyonlar — `App.Production.Operation` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Operation.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Production.Definitions` › `App.Production.Operation` (sıra 3) | +| Yetki | `App.Production.Operation` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Operasyonlar — bir iş merkezinde yapılan üretim adımları (ör. ram makinasında Apre). | +| Geliştirme talebi | Inventory -> Tanımlamalar | +| Kaynak | `Prd_T_Operation` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | +| Kapsam | Kiracı | +| Alt formlar | `App.Production.OperationInstruction` (Id → OperationId) | +| Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | +| Form varsayılanları | IsActive=true | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `Name` | Operasyon Adı | dxTextBox | ✓ | ✓ | | +| `WorkCenterId` | İş Merkezi | dxSelectBox | ✓ | ✓ | sorgu: Prd_T_WorkCenter | +| `DefaultDurationMin` | Varsayılan Süre (dk) | dxNumberBox | ✓ | ✓ | | +| `ApplyOnVariants` | Varyantlara Uygula | dxTagBox | | ✓ | sorgu: Inv_T_AttributeValue | +| `CostBasis` | Maliyete Dayalı | dxRadioGroup | ✓ | ✓ | liste: Actual, Theoretical | +| `DurationMode` | Süre Hesaplama | dxRadioGroup | ✓ | ✓ | liste: Fixed, Computed | +| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | | + +#### Genel Bilgi — `App.Production.WorkCenterGeneral` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/WorkCenterGeneral.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Production.WorkCenterGeneral` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | İş Merkezi Genel Bilgi — iş merkezinin üretim ve maliyetlendirme bilgileri. | +| Geliştirme talebi | Inventory -> Tanımlamalar | +| Kaynak | `Prd_T_WorkCenter` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup | +| Kapsam | Kiracı | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `TimeEfficiency` | Zaman Verimliliği (%) | dxNumberBox | ✓ | ✓ | | +| `OeeTarget` | OEE Hedefi (%) | dxNumberBox | ✓ | ✓ | | +| `SetupTimeMin` | Kurulum Zamanı (dk) | dxNumberBox | | ✓ | | +| `CleanupTimeMin` | Temizlik Zamanı (dk) | dxNumberBox | | ✓ | | +| `CostPerHour` | Saat Başına Maliyet (İş Merkezi) | dxNumberBox | | ✓ | | +| `EmployeeCostPerHour` | Saat Başına Maliyet (Çalışan) | dxNumberBox | | ✓ | | +| `Description` | Açıklama | dxTextArea | | ✓ | | + +#### Ürün Kapasitesi — `App.Production.WorkCenterCapacity` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/WorkCenterCapacity.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Production.WorkCenterCapacity` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | İş Merkezi Ürün Kapasitesi — iş merkezinin bir çevrimde bir üründen kaç birim işleyebildiği. | +| Geliştirme talebi | Inventory -> Tanımlamalar | +| Kaynak | `Prd_T_WorkCenterCapacity` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | +| Kapsam | Kiracı | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `WorkCenterId` | İş Merkezi | dxSelectBox | | | sorgu: Prd_T_WorkCenter | +| `ProductId` | Ürün | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Product | +| `Capacity` | Kapasite | dxNumberBox | ✓ | ✓ | | +| `UomId` | Birim | dxSelectBox | | ✓ | sorgu: Adm_T_Uom | +| `SetupTimeMin` | Kurulum Zamanı (dk) | dxNumberBox | | ✓ | | +| `CleanupTimeMin` | Temizlik Zamanı (dk) | dxNumberBox | | ✓ | | + +#### Açıklamalar — `App.Production.OperationInstruction` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/OperationInstruction.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Production.OperationInstruction` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Operasyon Açıklamaları — bir operasyonda operatöre gösterilen iş talimatları. | +| Geliştirme talebi | Inventory -> Tanımlamalar | +| Kaynak | `Prd_T_OperationInstruction` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | +| Kapsam | Kiracı | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `OperationId` | Operasyon | dxSelectBox | | | sorgu: Prd_T_Operation | +| `Title` | Başlık | dxTextBox | ✓ | ✓ | | +| `InstructionType` | Tip | dxSelectBox | ✓ | ✓ | liste: Text, Pdf, Image, Link | +| `Reference` | Referans | dxTextBox | | ✓ | | +| `Note` | Not | dxTextArea | | ✓ | | +| `SortOrder` | Sıra | dxNumberBox | | ✓ | | + + diff --git a/configs/seeds/postgres/object/Inv_T_Operation.sql b/configs/seeds/postgres/object/Prd_T_Operation.sql similarity index 86% rename from configs/seeds/postgres/object/Inv_T_Operation.sql rename to configs/seeds/postgres/object/Prd_T_Operation.sql index c9ef5cd4..5ac39472 100644 --- a/configs/seeds/postgres/object/Inv_T_Operation.sql +++ b/configs/seeds/postgres/object/Prd_T_Operation.sql @@ -1,4 +1,4 @@ -CREATE TABLE IF NOT EXISTS public."Inv_T_Operation" +CREATE TABLE IF NOT EXISTS public."Prd_T_Operation" ( "Id" uuid NOT NULL DEFAULT gen_random_uuid(), "TenantId" uuid NULL, @@ -16,5 +16,5 @@ CREATE TABLE IF NOT EXISTS public."Inv_T_Operation" "IsDeleted" boolean NOT NULL DEFAULT FALSE, "DeletionTime" timestamp NULL, "DeleterId" uuid NULL, - CONSTRAINT "PK_Inv_T_Operation" PRIMARY KEY ("Id") + CONSTRAINT "PK_Prd_T_Operation" PRIMARY KEY ("Id") ); diff --git a/configs/seeds/postgres/object/Inv_T_OperationInstruction.sql b/configs/seeds/postgres/object/Prd_T_OperationInstruction.sql similarity index 82% rename from configs/seeds/postgres/object/Inv_T_OperationInstruction.sql rename to configs/seeds/postgres/object/Prd_T_OperationInstruction.sql index e6274bc4..c9e11a33 100644 --- a/configs/seeds/postgres/object/Inv_T_OperationInstruction.sql +++ b/configs/seeds/postgres/object/Prd_T_OperationInstruction.sql @@ -1,4 +1,4 @@ -CREATE TABLE IF NOT EXISTS public."Inv_T_OperationInstruction" +CREATE TABLE IF NOT EXISTS public."Prd_T_OperationInstruction" ( "Id" uuid NOT NULL DEFAULT gen_random_uuid(), "TenantId" uuid NULL, @@ -15,5 +15,5 @@ CREATE TABLE IF NOT EXISTS public."Inv_T_OperationInstruction" "IsDeleted" boolean NOT NULL DEFAULT FALSE, "DeletionTime" timestamp NULL, "DeleterId" uuid NULL, - CONSTRAINT "PK_Inv_T_OperationInstruction" PRIMARY KEY ("Id") + CONSTRAINT "PK_Prd_T_OperationInstruction" PRIMARY KEY ("Id") ); diff --git a/configs/seeds/postgres/object/Inv_T_WorkCenter.sql b/configs/seeds/postgres/object/Prd_T_WorkCenter.sql similarity index 90% rename from configs/seeds/postgres/object/Inv_T_WorkCenter.sql rename to configs/seeds/postgres/object/Prd_T_WorkCenter.sql index 3f743d3d..19d831e3 100644 --- a/configs/seeds/postgres/object/Inv_T_WorkCenter.sql +++ b/configs/seeds/postgres/object/Prd_T_WorkCenter.sql @@ -1,4 +1,4 @@ -CREATE TABLE IF NOT EXISTS public."Inv_T_WorkCenter" +CREATE TABLE IF NOT EXISTS public."Prd_T_WorkCenter" ( "Id" uuid NOT NULL DEFAULT gen_random_uuid(), "TenantId" uuid NULL, @@ -22,5 +22,5 @@ CREATE TABLE IF NOT EXISTS public."Inv_T_WorkCenter" "IsDeleted" boolean NOT NULL DEFAULT FALSE, "DeletionTime" timestamp NULL, "DeleterId" uuid NULL, - CONSTRAINT "PK_Inv_T_WorkCenter" PRIMARY KEY ("Id") + CONSTRAINT "PK_Prd_T_WorkCenter" PRIMARY KEY ("Id") ); diff --git a/configs/seeds/postgres/object/Inv_T_WorkCenterCapacity.sql b/configs/seeds/postgres/object/Prd_T_WorkCenterCapacity.sql similarity index 83% rename from configs/seeds/postgres/object/Inv_T_WorkCenterCapacity.sql rename to configs/seeds/postgres/object/Prd_T_WorkCenterCapacity.sql index 91aa62d7..3f9395ad 100644 --- a/configs/seeds/postgres/object/Inv_T_WorkCenterCapacity.sql +++ b/configs/seeds/postgres/object/Prd_T_WorkCenterCapacity.sql @@ -1,4 +1,4 @@ -CREATE TABLE IF NOT EXISTS public."Inv_T_WorkCenterCapacity" +CREATE TABLE IF NOT EXISTS public."Prd_T_WorkCenterCapacity" ( "Id" uuid NOT NULL DEFAULT gen_random_uuid(), "TenantId" uuid NULL, @@ -15,5 +15,5 @@ CREATE TABLE IF NOT EXISTS public."Inv_T_WorkCenterCapacity" "IsDeleted" boolean NOT NULL DEFAULT FALSE, "DeletionTime" timestamp NULL, "DeleterId" uuid NULL, - CONSTRAINT "PK_Inv_T_WorkCenterCapacity" PRIMARY KEY ("Id") + CONSTRAINT "PK_Prd_T_WorkCenterCapacity" PRIMARY KEY ("Id") ); diff --git a/configs/seeds/postgres/object/Inv_T_WorkCenterTag.sql b/configs/seeds/postgres/object/Prd_T_WorkCenterTag.sql similarity index 80% rename from configs/seeds/postgres/object/Inv_T_WorkCenterTag.sql rename to configs/seeds/postgres/object/Prd_T_WorkCenterTag.sql index fb9892ad..c4352f33 100644 --- a/configs/seeds/postgres/object/Inv_T_WorkCenterTag.sql +++ b/configs/seeds/postgres/object/Prd_T_WorkCenterTag.sql @@ -1,4 +1,4 @@ -CREATE TABLE IF NOT EXISTS public."Inv_T_WorkCenterTag" +CREATE TABLE IF NOT EXISTS public."Prd_T_WorkCenterTag" ( "Id" uuid NOT NULL DEFAULT gen_random_uuid(), "TenantId" uuid NULL, @@ -12,5 +12,5 @@ CREATE TABLE IF NOT EXISTS public."Inv_T_WorkCenterTag" "IsDeleted" boolean NOT NULL DEFAULT FALSE, "DeletionTime" timestamp NULL, "DeleterId" uuid NULL, - CONSTRAINT "PK_Inv_T_WorkCenterTag" PRIMARY KEY ("Id") + CONSTRAINT "PK_Prd_T_WorkCenterTag" PRIMARY KEY ("Id") ); diff --git a/configs/seeds/sql/object/Inv_T_Operation.sql b/configs/seeds/sql/object/Prd_T_Operation.sql similarity index 86% rename from configs/seeds/sql/object/Inv_T_Operation.sql rename to configs/seeds/sql/object/Prd_T_Operation.sql index 1956ba26..d7c89a4e 100644 --- a/configs/seeds/sql/object/Inv_T_Operation.sql +++ b/configs/seeds/sql/object/Prd_T_Operation.sql @@ -1,6 +1,6 @@ -IF OBJECT_ID(N'[dbo].[Inv_T_Operation]', 'U') IS NULL +IF OBJECT_ID(N'[dbo].[Prd_T_Operation]', 'U') IS NULL BEGIN - CREATE TABLE [dbo].[Inv_T_Operation] + CREATE TABLE [dbo].[Prd_T_Operation] ( [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), [TenantId] uniqueidentifier NULL, @@ -18,7 +18,7 @@ BEGIN [IsDeleted] bit NOT NULL DEFAULT 0, [DeletionTime] datetime2 NULL, [DeleterId] uniqueidentifier NULL, - CONSTRAINT [PK_Inv_T_Operation] PRIMARY KEY NONCLUSTERED + CONSTRAINT [PK_Prd_T_Operation] 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] diff --git a/configs/seeds/sql/object/Inv_T_OperationInstruction.sql b/configs/seeds/sql/object/Prd_T_OperationInstruction.sql similarity index 84% rename from configs/seeds/sql/object/Inv_T_OperationInstruction.sql rename to configs/seeds/sql/object/Prd_T_OperationInstruction.sql index b68f1298..b796513d 100644 --- a/configs/seeds/sql/object/Inv_T_OperationInstruction.sql +++ b/configs/seeds/sql/object/Prd_T_OperationInstruction.sql @@ -1,6 +1,6 @@ -IF OBJECT_ID(N'[dbo].[Inv_T_OperationInstruction]', 'U') IS NULL +IF OBJECT_ID(N'[dbo].[Prd_T_OperationInstruction]', 'U') IS NULL BEGIN - CREATE TABLE [dbo].[Inv_T_OperationInstruction] + CREATE TABLE [dbo].[Prd_T_OperationInstruction] ( [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), [TenantId] uniqueidentifier NULL, @@ -17,7 +17,7 @@ BEGIN [IsDeleted] bit NOT NULL DEFAULT 0, [DeletionTime] datetime2 NULL, [DeleterId] uniqueidentifier NULL, - CONSTRAINT [PK_Inv_T_OperationInstruction] PRIMARY KEY NONCLUSTERED + CONSTRAINT [PK_Prd_T_OperationInstruction] 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] diff --git a/configs/seeds/sql/object/Inv_T_WorkCenter.sql b/configs/seeds/sql/object/Prd_T_WorkCenter.sql similarity index 89% rename from configs/seeds/sql/object/Inv_T_WorkCenter.sql rename to configs/seeds/sql/object/Prd_T_WorkCenter.sql index db112469..845ec9c8 100644 --- a/configs/seeds/sql/object/Inv_T_WorkCenter.sql +++ b/configs/seeds/sql/object/Prd_T_WorkCenter.sql @@ -1,6 +1,6 @@ -IF OBJECT_ID(N'[dbo].[Inv_T_WorkCenter]', 'U') IS NULL +IF OBJECT_ID(N'[dbo].[Prd_T_WorkCenter]', 'U') IS NULL BEGIN - CREATE TABLE [dbo].[Inv_T_WorkCenter] + CREATE TABLE [dbo].[Prd_T_WorkCenter] ( [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), [TenantId] uniqueidentifier NULL, @@ -24,7 +24,7 @@ BEGIN [IsDeleted] bit NOT NULL DEFAULT 0, [DeletionTime] datetime2 NULL, [DeleterId] uniqueidentifier NULL, - CONSTRAINT [PK_Inv_T_WorkCenter] PRIMARY KEY NONCLUSTERED + CONSTRAINT [PK_Prd_T_WorkCenter] 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] diff --git a/configs/seeds/sql/object/Inv_T_WorkCenterCapacity.sql b/configs/seeds/sql/object/Prd_T_WorkCenterCapacity.sql similarity index 84% rename from configs/seeds/sql/object/Inv_T_WorkCenterCapacity.sql rename to configs/seeds/sql/object/Prd_T_WorkCenterCapacity.sql index 4648b338..e0495c47 100644 --- a/configs/seeds/sql/object/Inv_T_WorkCenterCapacity.sql +++ b/configs/seeds/sql/object/Prd_T_WorkCenterCapacity.sql @@ -1,6 +1,6 @@ -IF OBJECT_ID(N'[dbo].[Inv_T_WorkCenterCapacity]', 'U') IS NULL +IF OBJECT_ID(N'[dbo].[Prd_T_WorkCenterCapacity]', 'U') IS NULL BEGIN - CREATE TABLE [dbo].[Inv_T_WorkCenterCapacity] + CREATE TABLE [dbo].[Prd_T_WorkCenterCapacity] ( [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), [TenantId] uniqueidentifier NULL, @@ -17,7 +17,7 @@ BEGIN [IsDeleted] bit NOT NULL DEFAULT 0, [DeletionTime] datetime2 NULL, [DeleterId] uniqueidentifier NULL, - CONSTRAINT [PK_Inv_T_WorkCenterCapacity] PRIMARY KEY NONCLUSTERED + CONSTRAINT [PK_Prd_T_WorkCenterCapacity] 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] diff --git a/configs/seeds/sql/object/Inv_T_WorkCenterTag.sql b/configs/seeds/sql/object/Prd_T_WorkCenterTag.sql similarity index 82% rename from configs/seeds/sql/object/Inv_T_WorkCenterTag.sql rename to configs/seeds/sql/object/Prd_T_WorkCenterTag.sql index 1665ba80..c38f0435 100644 --- a/configs/seeds/sql/object/Inv_T_WorkCenterTag.sql +++ b/configs/seeds/sql/object/Prd_T_WorkCenterTag.sql @@ -1,6 +1,6 @@ -IF OBJECT_ID(N'[dbo].[Inv_T_WorkCenterTag]', 'U') IS NULL +IF OBJECT_ID(N'[dbo].[Prd_T_WorkCenterTag]', 'U') IS NULL BEGIN - CREATE TABLE [dbo].[Inv_T_WorkCenterTag] + CREATE TABLE [dbo].[Prd_T_WorkCenterTag] ( [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), [TenantId] uniqueidentifier NULL, @@ -14,7 +14,7 @@ BEGIN [IsDeleted] bit NOT NULL DEFAULT 0, [DeletionTime] datetime2 NULL, [DeleterId] uniqueidentifier NULL, - CONSTRAINT [PK_Inv_T_WorkCenterTag] PRIMARY KEY NONCLUSTERED + CONSTRAINT [PK_Prd_T_WorkCenterTag] 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] diff --git a/configs/seeds/wizard/BenefitType.json b/configs/seeds/wizard/BenefitType.json index 6027b59c..5719724b 100644 --- a/configs/seeds/wizard/BenefitType.json +++ b/configs/seeds/wizard/BenefitType.json @@ -100,9 +100,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.BenefitType.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_BenefitType\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -830,7 +830,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -968,7 +968,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1106,7 +1106,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1358,7 +1358,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, @@ -1496,7 +1496,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, @@ -1634,7 +1634,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 6, "EditGroupOrderNo": 1, @@ -1772,7 +1772,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 7, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/Bom.json b/configs/seeds/wizard/Bom.json index c655331d..0bb79592 100644 --- a/configs/seeds/wizard/Bom.json +++ b/configs/seeds/wizard/Bom.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Inventory.Definitions", "MenuParentIcon": "FcSettings", "MenuCode": "App.Inventory.Bom", - "MenuOrder": 8, + "MenuOrder": 5, "MenuUrl": "/admin/list/App.Inventory.Bom", "MenuIcon": "FcDocument" }, diff --git a/configs/seeds/wizard/BomComponent.json b/configs/seeds/wizard/BomComponent.json index 2cb79805..e0a274a6 100644 --- a/configs/seeds/wizard/BomComponent.json +++ b/configs/seeds/wizard/BomComponent.json @@ -1551,7 +1551,7 @@ "CascadeFilterOperator": "=", "CascadeParentFields": "BomId", "CascadeEmptyFields": null, - "LookupQuery": "SELECT o.Id AS [Key], op.Name + ' - ' + w.Name AS [Name] FROM Inv_T_BomOperation o INNER JOIN Inv_T_Operation op ON op.Id = o.OperationId INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE o.IsDeleted = 'false' AND (o.BomId = @param0 OR @param0 IS NULL) ORDER BY o.SortOrder, op.Name" + "LookupQuery": "SELECT o.Id AS [Key], op.Name + ' - ' + w.Name AS [Name] FROM Inv_T_BomOperation o INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE o.IsDeleted = 'false' AND (o.BomId = @param0 OR @param0 IS NULL) ORDER BY o.SortOrder, op.Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [], diff --git a/configs/seeds/wizard/BomOperation.json b/configs/seeds/wizard/BomOperation.json index 8678198b..88489f71 100644 --- a/configs/seeds/wizard/BomOperation.json +++ b/configs/seeds/wizard/BomOperation.json @@ -999,7 +999,7 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": "SELECT Id AS [Key], Name AS [Name], WorkCenterId, DefaultDurationMin FROM Inv_T_Operation WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" + "LookupQuery": "SELECT Id AS [Key], Name AS [Name], WorkCenterId, DefaultDurationMin FROM Prd_T_Operation WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" }, "ValidationRuleDto": [ { @@ -1137,7 +1137,7 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Inv_T_WorkCenter WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Prd_T_WorkCenter WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" }, "ValidationRuleDto": [ { diff --git a/configs/seeds/wizard/BomOverview.json b/configs/seeds/wizard/BomOverview.json index 0a580cfd..78664eb0 100644 --- a/configs/seeds/wizard/BomOverview.json +++ b/configs/seeds/wizard/BomOverview.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Inventory.Definitions", "MenuParentIcon": "FcSettings", "MenuCode": "App.Inventory.BomOverview", - "MenuOrder": 7, + "MenuOrder": 6, "MenuUrl": "/admin/list/App.Inventory.BomOverview", "MenuIcon": "FcTreeStructure" }, @@ -108,7 +108,7 @@ "KeyFieldDbSourceType": 16, "TableName": "Q", "DefaultFilter": "\"IsDeleted\" = 'false'", - "SelectCommand": "SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)) AS NodeKey, CAST(NULL AS nvarchar(400)) AS ParentKey, b0.Id AS BomId, 0 AS NodeLevel, CAST('Product' AS nvarchar(20)) AS NodeType, CAST(p0.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(b0.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)) AS Name, CAST(b0.Quantity AS decimal(18,4)) AS Quantity, CAST(u0.Name AS nvarchar(64)) AS UomName, CAST(NULL AS decimal(18,4)) AS Cost, b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_Product p0 ON p0.Id = b0.ProductId LEFT JOIN Adm_T_Uom u0 ON u0.Id = b0.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 1, 'Component', CAST(p1.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c1.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity AS decimal(18,4)), u1.Name, CAST(c1.Quantity * p1.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' INNER JOIN Inv_T_Product p1 ON p1.Id = c1.ProductId LEFT JOIN Adm_T_Uom u1 ON u1.Id = c1.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 2, 'Component', CAST(p2.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c2.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity AS decimal(18,4)), u2.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * p2.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' INNER JOIN Inv_T_Product p2 ON p2.Id = c2.ProductId LEFT JOIN Adm_T_Uom u2 ON u2.Id = c2.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 3, 'Component', CAST(p3.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c3.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity AS decimal(18,4)), u3.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * p3.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' INNER JOIN Inv_T_Product p3 ON p3.Id = c3.ProductId LEFT JOIN Adm_T_Uom u3 ON u3.Id = c3.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/C' + CAST(c4.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 4, 'Component', CAST(p4.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c4.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * c4.Quantity / b3.Quantity AS decimal(18,4)), u4.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * c4.Quantity / b3.Quantity * p4.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomComponent c4 ON c4.BomId = b3.Id AND c4.IsDeleted = 'false' INNER JOIN Inv_T_Product p4 ON p4.Id = c4.ProductId LEFT JOIN Adm_T_Uom u4 ON u4.Id = c4.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 1, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomOperation o ON o.BomId = b0.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 2, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin AS decimal(18,4)), 'Dakika', CAST(o.DurationMin / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomOperation o ON o.BomId = b0.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_Operation op ON op.Id = o.OperationId INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 2, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity / b1.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity / b1.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomOperation o ON o.BomId = b1.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 3, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity / b1.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity / b1.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomOperation o ON o.BomId = b1.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_Operation op ON op.Id = o.OperationId INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 3, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomOperation o ON o.BomId = b2.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id, c2.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 4, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomOperation o ON o.BomId = b2.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_Operation op ON op.Id = o.OperationId INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 4, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomOperation o ON o.BomId = b3.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id, c2.Id, c3.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 5, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomOperation o ON o.BomId = b3.Id AND o.IsDeleted = 'false' INNER JOIN Inv_T_Operation op ON op.Id = o.OperationId INNER JOIN Inv_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1", + "SelectCommand": "SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)) AS NodeKey, CAST(NULL AS nvarchar(400)) AS ParentKey, b0.Id AS BomId, 0 AS NodeLevel, CAST('Product' AS nvarchar(20)) AS NodeType, CAST(p0.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(b0.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)) AS Name, CAST(b0.Quantity AS decimal(18,4)) AS Quantity, CAST(u0.Name AS nvarchar(64)) AS UomName, CAST(NULL AS decimal(18,4)) AS Cost, b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_Product p0 ON p0.Id = b0.ProductId LEFT JOIN Adm_T_Uom u0 ON u0.Id = b0.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 1, 'Component', CAST(p1.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c1.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity AS decimal(18,4)), u1.Name, CAST(c1.Quantity * p1.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' INNER JOIN Inv_T_Product p1 ON p1.Id = c1.ProductId LEFT JOIN Adm_T_Uom u1 ON u1.Id = c1.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 2, 'Component', CAST(p2.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c2.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity AS decimal(18,4)), u2.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * p2.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' INNER JOIN Inv_T_Product p2 ON p2.Id = c2.ProductId LEFT JOIN Adm_T_Uom u2 ON u2.Id = c2.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 3, 'Component', CAST(p3.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c3.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity AS decimal(18,4)), u3.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * p3.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' INNER JOIN Inv_T_Product p3 ON p3.Id = c3.ProductId LEFT JOIN Adm_T_Uom u3 ON u3.Id = c3.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/C' + CAST(c4.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 4, 'Component', CAST(p4.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c4.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * c4.Quantity / b3.Quantity AS decimal(18,4)), u4.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * c4.Quantity / b3.Quantity * p4.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomComponent c4 ON c4.BomId = b3.Id AND c4.IsDeleted = 'false' INNER JOIN Inv_T_Product p4 ON p4.Id = c4.ProductId LEFT JOIN Adm_T_Uom u4 ON u4.Id = c4.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 1, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomOperation o ON o.BomId = b0.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 2, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin AS decimal(18,4)), 'Dakika', CAST(o.DurationMin / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomOperation o ON o.BomId = b0.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 2, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity / b1.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity / b1.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomOperation o ON o.BomId = b1.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 3, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity / b1.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity / b1.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomOperation o ON o.BomId = b1.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 3, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomOperation o ON o.BomId = b2.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id, c2.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 4, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomOperation o ON o.BomId = b2.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 4, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomOperation o ON o.BomId = b3.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id, c2.Id, c3.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 5, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomOperation o ON o.BomId = b3.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1", "SelectCommandType": 4, "SelectFieldsDefaultValueDto": [], "SeedFilePath": null, diff --git a/configs/seeds/wizard/CandidateSource.json b/configs/seeds/wizard/CandidateSource.json index b39922a8..96896fb6 100644 --- a/configs/seeds/wizard/CandidateSource.json +++ b/configs/seeds/wizard/CandidateSource.json @@ -76,9 +76,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.CandidateSource.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_CandidateSource\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -785,7 +785,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -923,7 +923,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1049,7 +1049,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1175,7 +1175,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/Certificate.json b/configs/seeds/wizard/Certificate.json index 826164ad..4341e7e7 100644 --- a/configs/seeds/wizard/Certificate.json +++ b/configs/seeds/wizard/Certificate.json @@ -70,9 +70,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.Certificate.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_Certificate\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -771,7 +771,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -909,7 +909,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1047,7 +1047,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/DisciplinaryPenaltyType.json b/configs/seeds/wizard/DisciplinaryPenaltyType.json index cb81eeb2..990df15c 100644 --- a/configs/seeds/wizard/DisciplinaryPenaltyType.json +++ b/configs/seeds/wizard/DisciplinaryPenaltyType.json @@ -82,9 +82,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.DisciplinaryPenaltyType.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_DisciplinaryPenaltyType\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, diff --git a/configs/seeds/wizard/Doctor.json b/configs/seeds/wizard/Doctor.json index 2016b46f..cb7f99be 100644 --- a/configs/seeds/wizard/Doctor.json +++ b/configs/seeds/wizard/Doctor.json @@ -100,9 +100,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.Doctor.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_Doctor\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -801,7 +801,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -939,7 +939,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1065,7 +1065,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1191,7 +1191,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1317,7 +1317,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, @@ -1443,7 +1443,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, @@ -1569,7 +1569,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 6, "EditGroupOrderNo": 1, @@ -1707,7 +1707,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 7, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/DocumentType.json b/configs/seeds/wizard/DocumentType.json index 08d68906..db47cb2b 100644 --- a/configs/seeds/wizard/DocumentType.json +++ b/configs/seeds/wizard/DocumentType.json @@ -99,9 +99,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.DocumentType.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_DocumentType\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -800,7 +800,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -938,7 +938,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1076,7 +1076,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1214,7 +1214,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1352,7 +1352,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/EvaluationCriterion.json b/configs/seeds/wizard/EvaluationCriterion.json index e910d62c..b844dc9e 100644 --- a/configs/seeds/wizard/EvaluationCriterion.json +++ b/configs/seeds/wizard/EvaluationCriterion.json @@ -82,9 +82,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.EvaluationCriterion.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_EvaluationCriterion\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -798,7 +798,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -936,7 +936,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1074,7 +1074,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1200,7 +1200,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1326,7 +1326,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/ExpenseType.json b/configs/seeds/wizard/ExpenseType.json index c8f81ed3..fbd98e38 100644 --- a/configs/seeds/wizard/ExpenseType.json +++ b/configs/seeds/wizard/ExpenseType.json @@ -106,9 +106,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.ExpenseType.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_ExpenseType\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -843,7 +843,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -981,7 +981,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1119,7 +1119,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1371,7 +1371,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, @@ -1509,7 +1509,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, @@ -1647,7 +1647,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 6, "EditGroupOrderNo": 1, @@ -1785,7 +1785,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 7, "EditGroupOrderNo": 1, @@ -1923,7 +1923,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 8, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/Hospital.json b/configs/seeds/wizard/Hospital.json index 3173e3d0..dabe0bbb 100644 --- a/configs/seeds/wizard/Hospital.json +++ b/configs/seeds/wizard/Hospital.json @@ -70,9 +70,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.Hospital.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_Hospital\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -771,7 +771,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -909,7 +909,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1047,7 +1047,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/HospitalDepartment.json b/configs/seeds/wizard/HospitalDepartment.json index c309ee24..c0dab544 100644 --- a/configs/seeds/wizard/HospitalDepartment.json +++ b/configs/seeds/wizard/HospitalDepartment.json @@ -70,9 +70,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.HospitalDepartment.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_HospitalDepartment\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -771,7 +771,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -909,7 +909,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1047,7 +1047,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/LeaveType.json b/configs/seeds/wizard/LeaveType.json index 1f047b1a..bd6272f4 100644 --- a/configs/seeds/wizard/LeaveType.json +++ b/configs/seeds/wizard/LeaveType.json @@ -140,9 +140,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.LeaveType.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_LeaveType\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -891,7 +891,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -1029,7 +1029,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1167,7 +1167,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1305,7 +1305,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1569,7 +1569,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, @@ -1707,7 +1707,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 6, "EditGroupOrderNo": 1, @@ -1845,7 +1845,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 7, "EditGroupOrderNo": 1, @@ -1983,7 +1983,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 8, "EditGroupOrderNo": 1, @@ -2121,7 +2121,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 9, "EditGroupOrderNo": 1, @@ -2259,7 +2259,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 10, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/Operation.json b/configs/seeds/wizard/Operation.json index 64583891..de759323 100644 --- a/configs/seeds/wizard/Operation.json +++ b/configs/seeds/wizard/Operation.json @@ -2,38 +2,38 @@ "Wizard": { "ComponentKind": 0, "WizardName": "Operation", - "WizardCode": "App.Inventory.Operation", + "WizardCode": "App.Production.Operation", "SeededAt": "2026-10-07T18:53:46.5591401Z", "CustomComponentName": null, - "PermissionGroupName": "App.Inventory", - "ModuleId": "Inventory", + "PermissionGroupName": "App.Production", + "ModuleId": "Production", "Menu": { "MenuParentPath": [ { - "Code": "App.Inventory", - "Icon": "FcPackage", - "En": "Inventory", - "Tr": "Envanter" + "Code": "App.Production", + "Icon": "FcEngineering", + "En": "Production", + "Tr": "Üretim" } ], - "MenuParentCode": "App.Inventory.Definitions", + "MenuParentCode": "App.Production.Definitions", "MenuParentIcon": "FcSettings", - "MenuCode": "App.Inventory.Operation", - "MenuOrder": 5, - "MenuUrl": "/admin/list/App.Inventory.Operation", + "MenuCode": "App.Production.Operation", + "MenuOrder": 3, + "MenuUrl": "/admin/list/App.Production.Operation", "MenuIcon": "FcProcess" }, "Language": { "MenuParentEn": "Definitions", "MenuParentTr": "Tanımlamalar", - "PermissionGroupEn": "Inventory", - "PermissionGroupTr": "Envanter", + "PermissionGroupEn": "Production", + "PermissionGroupTr": "Üretim", "MenuEn": "Operations", "MenuTr": "Operasyonlar", "TitleEn": "Operations", "TitleTr": "Operasyonlar", - "DescEn": "Operations — production steps performed at a work center (e.g. Finishing on the stenter machine).\nWhere: Inventory › Definitions › Operations; work instructions are entered in the Instructions tab.\nFields: operation name, work center, apply on variants (only for the selected attribute values; empty = all), cost basis (actual/theoretical time), duration computation (fixed/computed), default duration (min), active.\nUsed by: BoM › Operations; selecting an operation fills the work center and duration.", - "DescTr": "Operasyonlar — bir iş merkezinde yapılan üretim adımları (ör. ram makinasında Apre).\nNerede: Envanter › Tanımlamalar › Operasyonlar; iş talimatları Açıklamalar sekmesinden girilir.\nAlanlar: operasyon adı, iş merkezi, varyantlara uygula (yalnız seçilen nitelik değerleri için; boş = tümü), maliyete dayalı (gerçek/teorik zaman), süre hesaplama (sabit/hesaplanmış), varsayılan süre (dk), aktif.\nKullanıldığı yer: Reçete › Operasyonlar; operasyon seçilince iş merkezi ve süre dolar." + "DescEn": "Operations — production steps performed at a work center (e.g. Finishing on the stenter machine).\nWhere: Production › Definitions › Operations; work instructions are entered in the Instructions tab.\nFields: operation name, work center, apply on variants (only for the selected attribute values; empty = all), cost basis (actual/theoretical time), duration computation (fixed/computed), default duration (min), active.\nUsed by: BoM › Operations; selecting an operation fills the work center and duration.", + "DescTr": "Operasyonlar — bir iş merkezinde yapılan üretim adımları (ör. ram makinasında Apre).\nNerede: Üretim › Tanımlamalar › Operasyonlar; iş talimatları Açıklamalar sekmesinden girilir.\nAlanlar: operasyon adı, iş merkezi, varyantlara uygula (yalnız seçilen nitelik değerleri için; boş = tümü), maliyete dayalı (gerçek/teorik zaman), süre hesaplama (sabit/hesaplanmış), varsayılan süre (dk), aktif.\nKullanıldığı yer: Reçete › Operasyonlar; operasyon seçilince iş merkezi ve süre dolar." }, "Groups": [ { @@ -96,14 +96,14 @@ "KeyFieldDbSourceType": 9, "TableName": null, "DefaultFilter": "\"IsDeleted\" = 'false'", - "SelectCommand": "Inv_T_Operation", + "SelectCommand": "Prd_T_Operation", "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": null, "SeedSyncInsert": false, "SeedSyncUpdate": false, "SeedSyncDelete": false, - "DeleteCommand": "UPDATE \"Inv_T_Operation\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", + "DeleteCommand": "UPDATE \"Prd_T_Operation\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, "DeleteFieldsDefaultValueDto": [ @@ -172,7 +172,7 @@ { "ColGap": 3, "ColSpan": 4, - "SqlQuery": "SELECT 'App.Widget.Total' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Inventory.Operation' AS \"SubTitle\", 'FaCogs' AS \"Icon\" FROM \"Inv_T_Operation\" WHERE \"TenantId\" = '@TENANTID' UNION ALL SELECT 'App.Widget.Active', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Inventory.Operation', 'FaCheckCircle' FROM \"Inv_T_Operation\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 1 UNION ALL SELECT 'App.Widget.Passive', CAST(COUNT(*) AS VARCHAR(32)), 'gray', 'App.Inventory.Operation', 'FaTimesCircle' FROM \"Inv_T_Operation\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 0", + "SqlQuery": "SELECT 'App.Widget.Total' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Production.Operation' AS \"SubTitle\", 'FaCogs' AS \"Icon\" FROM \"Prd_T_Operation\" WHERE \"TenantId\" = '@TENANTID' UNION ALL SELECT 'App.Widget.Active', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Production.Operation', 'FaCheckCircle' FROM \"Prd_T_Operation\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 1 UNION ALL SELECT 'App.Widget.Passive', CAST(COUNT(*) AS VARCHAR(32)), 'gray', 'App.Production.Operation', 'FaTimesCircle' FROM \"Prd_T_Operation\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 0", "Title": "Title", "Value": "Value", "ValueClassName": "text-3xl", @@ -185,17 +185,17 @@ } ], "ExtraFilterEditDto": [], - "ListFormCode": "App.Inventory.Operation", + "ListFormCode": "App.Production.Operation", "CultureName": "en", - "Name": "App.Inventory.Operation", + "Name": "App.Production.Operation", "KeyFieldName": "Id", - "Title": "App.Inventory.Operation.Title", + "Title": "App.Production.Operation.Title", "SortMode": "single", "PageSize": 10, "Width": 0, "Height": 0, "FullHeight": false, - "Description": "App.Inventory.Operation.Desc", + "Description": "App.Production.Operation.Desc", "FilterRowDto": { "Visible": true, "ApplyFilter": "auto", @@ -366,7 +366,7 @@ "StartEditAction": "click", "EditColumnName": null, "Popup": { - "Title": "App.Inventory.Operation.Title", + "Title": "App.Production.Operation.Title", "ShowTitle": true, "Width": 800, "Height": 450, @@ -392,19 +392,19 @@ } ], "PermissionDto": { - "C": "App.Inventory.Operation.Create", - "R": "App.Inventory.Operation", - "U": "App.Inventory.Operation.Update", - "D": "App.Inventory.Operation.Delete", - "E": "App.Inventory.Operation.Export", - "I": "App.Inventory.Operation.Import", - "N": "App.Inventory.Operation.Note" + "C": "App.Production.Operation.Create", + "R": "App.Production.Operation", + "U": "App.Production.Operation.Update", + "D": "App.Production.Operation.Delete", + "E": "App.Production.Operation.Export", + "I": "App.Production.Operation.Import", + "N": "App.Production.Operation.Note" }, "CommandColumnDto": [], "StateStoringDto": { "Enabled": true, "Type": "custom", - "StorageKey": "listFormGridStorage-App.Inventory.Operation", + "StorageKey": "listFormGridStorage-App.Production.Operation", "SavingTimeout": 5000 }, "CustomJsSources": [], @@ -422,8 +422,8 @@ "SubFormsDto": [ { "TabType": "List", - "TabTitle": "App.Inventory.OperationInstruction", - "Code": "App.Inventory.OperationInstruction", + "TabTitle": "App.Production.OperationInstruction", + "Code": "App.Production.OperationInstruction", "IsRefresh": false, "Relation": [ { @@ -716,7 +716,7 @@ "Fields": [ { "EditType": null, - "ListFormCode": "App.Inventory.Operation", + "ListFormCode": "App.Production.Operation", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -801,9 +801,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.Operation.Create", - "R": "App.Inventory.Operation", - "U": "App.Inventory.Operation.Update", + "C": "App.Production.Operation.Create", + "R": "App.Production.Operation", + "U": "App.Production.Operation.Update", "E": true, "I": true }, @@ -842,7 +842,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.Operation", + "ListFormCode": "App.Production.Operation", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -939,9 +939,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.Operation.Create", - "R": "App.Inventory.Operation", - "U": "App.Inventory.Operation.Update", + "C": "App.Production.Operation.Create", + "R": "App.Production.Operation", + "U": "App.Production.Operation.Update", "E": true, "I": true }, @@ -980,7 +980,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.Operation", + "ListFormCode": "App.Production.Operation", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1059,7 +1059,7 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Inv_T_WorkCenter WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Prd_T_WorkCenter WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" }, "ValidationRuleDto": [ { @@ -1077,9 +1077,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.Operation.Create", - "R": "App.Inventory.Operation", - "U": "App.Inventory.Operation.Update", + "C": "App.Production.Operation.Create", + "R": "App.Production.Operation", + "U": "App.Production.Operation.Update", "E": true, "I": true }, @@ -1118,7 +1118,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.Operation", + "ListFormCode": "App.Production.Operation", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1215,9 +1215,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.Operation.Create", - "R": "App.Inventory.Operation", - "U": "App.Inventory.Operation.Update", + "C": "App.Production.Operation.Create", + "R": "App.Production.Operation", + "U": "App.Production.Operation.Update", "E": true, "I": true }, @@ -1256,7 +1256,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.Operation", + "ListFormCode": "App.Production.Operation", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1341,9 +1341,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.Operation.Create", - "R": "App.Inventory.Operation", - "U": "App.Inventory.Operation.Update", + "C": "App.Production.Operation.Create", + "R": "App.Production.Operation", + "U": "App.Production.Operation.Update", "E": true, "I": true }, @@ -1382,7 +1382,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.Operation", + "ListFormCode": "App.Production.Operation", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1479,9 +1479,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.Operation.Create", - "R": "App.Inventory.Operation", - "U": "App.Inventory.Operation.Update", + "C": "App.Production.Operation.Create", + "R": "App.Production.Operation", + "U": "App.Production.Operation.Update", "E": true, "I": true }, @@ -1520,7 +1520,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.Operation", + "ListFormCode": "App.Production.Operation", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1617,9 +1617,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.Operation.Create", - "R": "App.Inventory.Operation", - "U": "App.Inventory.Operation.Update", + "C": "App.Production.Operation.Create", + "R": "App.Production.Operation", + "U": "App.Production.Operation.Update", "E": true, "I": true }, @@ -1658,7 +1658,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.Operation", + "ListFormCode": "App.Production.Operation", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1755,9 +1755,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.Operation.Create", - "R": "App.Inventory.Operation", - "U": "App.Inventory.Operation.Update", + "C": "App.Production.Operation.Create", + "R": "App.Production.Operation", + "U": "App.Production.Operation.Update", "E": true, "I": true }, @@ -1799,9 +1799,9 @@ "IsCreatedField": true, "InsertedRecords": { "LanguageKeys": [ - "App.Inventory.Operation", - "App.Inventory.Operation.Title", - "App.Inventory.Operation.Desc", + "App.Production.Operation", + "App.Production.Operation.Title", + "App.Production.Operation.Desc", "App.Listform.ListformField.OperationName", "App.Listform.ListformField.DefaultDurationMin", "App.Listform.ListformField.ApplyOnVariants", @@ -1814,16 +1814,16 @@ ], "PermissionGroupNames": [], "PermissionNames": [ - "App.Inventory.Operation", - "App.Inventory.Operation.Create", - "App.Inventory.Operation.Update", - "App.Inventory.Operation.Delete", - "App.Inventory.Operation.Export", - "App.Inventory.Operation.Import", - "App.Inventory.Operation.Note" + "App.Production.Operation", + "App.Production.Operation.Create", + "App.Production.Operation.Update", + "App.Production.Operation.Delete", + "App.Production.Operation.Export", + "App.Production.Operation.Import", + "App.Production.Operation.Note" ], "MenuCodes": [ - "App.Inventory.Operation" + "App.Production.Operation" ], "DataSourceCodes": [], "ModuleIds": [] diff --git a/configs/seeds/wizard/OperationInstruction.json b/configs/seeds/wizard/OperationInstruction.json index d8f3f0e9..c4cb1ad0 100644 --- a/configs/seeds/wizard/OperationInstruction.json +++ b/configs/seeds/wizard/OperationInstruction.json @@ -2,39 +2,39 @@ "Wizard": { "ComponentKind": 0, "WizardName": "OperationInstruction", - "WizardCode": "App.Inventory.OperationInstruction", + "WizardCode": "App.Production.OperationInstruction", "SeededAt": "2026-10-07T18:53:11.8944269Z", "CustomComponentName": null, - "PermissionGroupName": "App.Inventory", - "ModuleId": "Inventory", + "PermissionGroupName": "App.Production", + "ModuleId": "Production", "Menu": { "MenuParentPath": [ { - "Code": "App.Inventory", - "Icon": "FcPackage", - "En": "Inventory", - "Tr": "Envanter" + "Code": "App.Production", + "Icon": "FcEngineering", + "En": "Production", + "Tr": "Üretim" } ], - "MenuParentCode": "App.Inventory.Definitions", + "MenuParentCode": "App.Production.Definitions", "MenuParentIcon": "FcSettings", "CreateMenu": false, - "MenuCode": "App.Inventory.OperationInstruction", + "MenuCode": "App.Production.OperationInstruction", "MenuOrder": 0, - "MenuUrl": "/admin/list/App.Inventory.OperationInstruction", + "MenuUrl": "/admin/list/App.Production.OperationInstruction", "MenuIcon": "FcDocument" }, "Language": { "MenuParentEn": "Definitions", "MenuParentTr": "Tanımlamalar", - "PermissionGroupEn": "Inventory", - "PermissionGroupTr": "Envanter", + "PermissionGroupEn": "Production", + "PermissionGroupTr": "Üretim", "MenuEn": "Instructions", "MenuTr": "Açıklamalar", "TitleEn": "Instructions", "TitleTr": "Açıklamalar", - "DescEn": "Operation Instructions — work instructions shown to the operator for an operation.\nWhere: Inventory › Definitions › Operations › Instructions tab (no menu of its own).\nFields: title, type (text, PDF, image, link), reference (document path or URL), note, order.\nThe operation link (OperationId) is written automatically from the open operation.", - "DescTr": "Operasyon Açıklamaları — bir operasyonda operatöre gösterilen iş talimatları.\nNerede: Envanter › Tanımlamalar › Operasyonlar › Açıklamalar sekmesi (kendi menüsü yoktur).\nAlanlar: başlık, tip (metin, PDF, görsel, bağlantı), referans (belge yolu ya da adres), not, sıra.\nOperasyon bağlantısı (OperationId) açık olan operasyon kaydından otomatik yazılır." + "DescEn": "Operation Instructions — work instructions shown to the operator for an operation.\nWhere: Production › Definitions › Operations › Instructions tab (no menu of its own).\nFields: title, type (text, PDF, image, link), reference (document path or URL), note, order.\nThe operation link (OperationId) is written automatically from the open operation.", + "DescTr": "Operasyon Açıklamaları — bir operasyonda operatöre gösterilen iş talimatları.\nNerede: Üretim › Tanımlamalar › Operasyonlar › Açıklamalar sekmesi (kendi menüsü yoktur).\nAlanlar: başlık, tip (metin, PDF, görsel, bağlantı), referans (belge yolu ya da adres), not, sıra.\nOperasyon bağlantısı (OperationId) açık olan operasyon kaydından otomatik yazılır." }, "Groups": [ { @@ -91,14 +91,14 @@ "KeyFieldDbSourceType": 9, "TableName": null, "DefaultFilter": "\"IsDeleted\" = 'false'", - "SelectCommand": "Inv_T_OperationInstruction", + "SelectCommand": "Prd_T_OperationInstruction", "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": null, "SeedSyncInsert": false, "SeedSyncUpdate": false, "SeedSyncDelete": false, - "DeleteCommand": "UPDATE \"Inv_T_OperationInstruction\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", + "DeleteCommand": "UPDATE \"Prd_T_OperationInstruction\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, "DeleteFieldsDefaultValueDto": [ @@ -157,17 +157,17 @@ "FormFieldsDefaultValueDto": [], "WidgetsDto": [], "ExtraFilterEditDto": [], - "ListFormCode": "App.Inventory.OperationInstruction", + "ListFormCode": "App.Production.OperationInstruction", "CultureName": "en", - "Name": "App.Inventory.OperationInstruction", + "Name": "App.Production.OperationInstruction", "KeyFieldName": "Id", - "Title": "App.Inventory.OperationInstruction.Title", + "Title": "App.Production.OperationInstruction.Title", "SortMode": "single", "PageSize": 10, "Width": 0, "Height": 0, "FullHeight": false, - "Description": "App.Inventory.OperationInstruction.Desc", + "Description": "App.Production.OperationInstruction.Desc", "FilterRowDto": { "Visible": true, "ApplyFilter": "auto", @@ -338,7 +338,7 @@ "StartEditAction": "click", "EditColumnName": null, "Popup": { - "Title": "App.Inventory.OperationInstruction.Title", + "Title": "App.Production.OperationInstruction.Title", "ShowTitle": true, "Width": 800, "Height": 350, @@ -364,19 +364,19 @@ } ], "PermissionDto": { - "C": "App.Inventory.OperationInstruction.Create", - "R": "App.Inventory.OperationInstruction", - "U": "App.Inventory.OperationInstruction.Update", - "D": "App.Inventory.OperationInstruction.Delete", - "E": "App.Inventory.OperationInstruction.Export", - "I": "App.Inventory.OperationInstruction.Import", - "N": "App.Inventory.OperationInstruction.Note" + "C": "App.Production.OperationInstruction.Create", + "R": "App.Production.OperationInstruction", + "U": "App.Production.OperationInstruction.Update", + "D": "App.Production.OperationInstruction.Delete", + "E": "App.Production.OperationInstruction.Export", + "I": "App.Production.OperationInstruction.Import", + "N": "App.Production.OperationInstruction.Note" }, "CommandColumnDto": [], "StateStoringDto": { "Enabled": true, "Type": "custom", - "StorageKey": "listFormGridStorage-App.Inventory.OperationInstruction", + "StorageKey": "listFormGridStorage-App.Production.OperationInstruction", "SavingTimeout": 5000 }, "CustomJsSources": [], @@ -674,7 +674,7 @@ "Fields": [ { "EditType": null, - "ListFormCode": "App.Inventory.OperationInstruction", + "ListFormCode": "App.Production.OperationInstruction", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -759,9 +759,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.OperationInstruction.Create", - "R": "App.Inventory.OperationInstruction", - "U": "App.Inventory.OperationInstruction.Update", + "C": "App.Production.OperationInstruction.Create", + "R": "App.Production.OperationInstruction", + "U": "App.Production.OperationInstruction.Update", "E": true, "I": true }, @@ -800,7 +800,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.OperationInstruction", + "ListFormCode": "App.Production.OperationInstruction", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -879,15 +879,15 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Inv_T_Operation WHERE IsDeleted = 'false' ORDER BY Name" + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Prd_T_Operation WHERE IsDeleted = 'false' ORDER BY Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.OperationInstruction.Create", - "R": "App.Inventory.OperationInstruction", - "U": "App.Inventory.OperationInstruction.Update", + "C": "App.Production.OperationInstruction.Create", + "R": "App.Production.OperationInstruction", + "U": "App.Production.OperationInstruction.Update", "E": true, "I": true }, @@ -926,7 +926,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.OperationInstruction", + "ListFormCode": "App.Production.OperationInstruction", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1023,9 +1023,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.OperationInstruction.Create", - "R": "App.Inventory.OperationInstruction", - "U": "App.Inventory.OperationInstruction.Update", + "C": "App.Production.OperationInstruction.Create", + "R": "App.Production.OperationInstruction", + "U": "App.Production.OperationInstruction.Update", "E": true, "I": true }, @@ -1064,7 +1064,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.OperationInstruction", + "ListFormCode": "App.Production.OperationInstruction", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1161,9 +1161,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.OperationInstruction.Create", - "R": "App.Inventory.OperationInstruction", - "U": "App.Inventory.OperationInstruction.Update", + "C": "App.Production.OperationInstruction.Create", + "R": "App.Production.OperationInstruction", + "U": "App.Production.OperationInstruction.Update", "E": true, "I": true }, @@ -1202,7 +1202,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.OperationInstruction", + "ListFormCode": "App.Production.OperationInstruction", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1287,9 +1287,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.OperationInstruction.Create", - "R": "App.Inventory.OperationInstruction", - "U": "App.Inventory.OperationInstruction.Update", + "C": "App.Production.OperationInstruction.Create", + "R": "App.Production.OperationInstruction", + "U": "App.Production.OperationInstruction.Update", "E": true, "I": true }, @@ -1328,7 +1328,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.OperationInstruction", + "ListFormCode": "App.Production.OperationInstruction", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1413,9 +1413,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.OperationInstruction.Create", - "R": "App.Inventory.OperationInstruction", - "U": "App.Inventory.OperationInstruction.Update", + "C": "App.Production.OperationInstruction.Create", + "R": "App.Production.OperationInstruction", + "U": "App.Production.OperationInstruction.Update", "E": true, "I": true }, @@ -1454,7 +1454,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.OperationInstruction", + "ListFormCode": "App.Production.OperationInstruction", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1539,9 +1539,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.OperationInstruction.Create", - "R": "App.Inventory.OperationInstruction", - "U": "App.Inventory.OperationInstruction.Update", + "C": "App.Production.OperationInstruction.Create", + "R": "App.Production.OperationInstruction", + "U": "App.Production.OperationInstruction.Update", "E": true, "I": true }, @@ -1583,9 +1583,9 @@ "IsCreatedField": true, "InsertedRecords": { "LanguageKeys": [ - "App.Inventory.OperationInstruction", - "App.Inventory.OperationInstruction.Title", - "App.Inventory.OperationInstruction.Desc", + "App.Production.OperationInstruction", + "App.Production.OperationInstruction.Title", + "App.Production.OperationInstruction.Desc", "App.Listform.ListformField.Operation", "App.Listform.ListformField.InstructionType", "App.StaticLookup.Pdf", @@ -1593,13 +1593,13 @@ ], "PermissionGroupNames": [], "PermissionNames": [ - "App.Inventory.OperationInstruction", - "App.Inventory.OperationInstruction.Create", - "App.Inventory.OperationInstruction.Update", - "App.Inventory.OperationInstruction.Delete", - "App.Inventory.OperationInstruction.Export", - "App.Inventory.OperationInstruction.Import", - "App.Inventory.OperationInstruction.Note" + "App.Production.OperationInstruction", + "App.Production.OperationInstruction.Create", + "App.Production.OperationInstruction.Update", + "App.Production.OperationInstruction.Delete", + "App.Production.OperationInstruction.Export", + "App.Production.OperationInstruction.Import", + "App.Production.OperationInstruction.Note" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/PerformanceRating.json b/configs/seeds/wizard/PerformanceRating.json index be39bc6f..c210790f 100644 --- a/configs/seeds/wizard/PerformanceRating.json +++ b/configs/seeds/wizard/PerformanceRating.json @@ -106,9 +106,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.PerformanceRating.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_PerformanceRating\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -815,7 +815,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": 1, @@ -953,7 +953,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1091,7 +1091,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1229,7 +1229,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1367,7 +1367,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, @@ -1493,7 +1493,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, @@ -1619,7 +1619,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 6, "EditGroupOrderNo": 1, @@ -1745,7 +1745,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 7, "EditGroupOrderNo": 1, @@ -1871,7 +1871,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 8, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/Product.json b/configs/seeds/wizard/Product.json index b20dbf31..e44691f9 100644 --- a/configs/seeds/wizard/Product.json +++ b/configs/seeds/wizard/Product.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Inventory.Definitions", "MenuParentIcon": "FcSettings", "MenuCode": "App.Inventory.Product", - "MenuOrder": 9, + "MenuOrder": 3, "MenuUrl": "/admin/list/App.Inventory.Product", "MenuIcon": "FcShop" }, @@ -1231,7 +1231,7 @@ "CaptionName": "App.Listform.ListformField.IsFavorite", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 3, @@ -1357,7 +1357,7 @@ "CaptionName": "App.Listform.ListformField.CanBeSold", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 4, @@ -1483,7 +1483,7 @@ "CaptionName": "App.Listform.ListformField.CanBeExpensed", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 5, @@ -1609,7 +1609,7 @@ "CaptionName": "App.Listform.ListformField.CanBePurchased", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 6, diff --git a/configs/seeds/wizard/ProductCategory.json b/configs/seeds/wizard/ProductCategory.json index 92c257b9..06770f8b 100644 --- a/configs/seeds/wizard/ProductCategory.json +++ b/configs/seeds/wizard/ProductCategory.json @@ -232,12 +232,12 @@ "ChartCommonSeriesType": "bar" }, "TreeOptionDto": { - "KeyExpr": null, - "ParentIdExpr": null, + "KeyExpr": "Id", + "ParentIdExpr": "ParentId", "HasItemsExpr": null, "RootValue": null, "ExpandedRowKeys": [], - "AutoExpandAll": false, + "AutoExpandAll": true, "RecursiveSelection": false, "TitleExpr": null, "StartExpr": null, @@ -394,7 +394,7 @@ "Card": true, "Pivot": true, "Chart": true, - "Tree": false, + "Tree": true, "Gantt": false, "Scheduler": false, "Todo": false, diff --git a/configs/seeds/wizard/ProductVariant.json b/configs/seeds/wizard/ProductVariant.json index c985378c..7f074ee3 100644 --- a/configs/seeds/wizard/ProductVariant.json +++ b/configs/seeds/wizard/ProductVariant.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Inventory.Definitions", "MenuParentIcon": "FcSettings", "MenuCode": "App.Inventory.ProductVariant", - "MenuOrder": 6, + "MenuOrder": 4, "MenuUrl": "/admin/list/App.Inventory.ProductVariant", "MenuIcon": "FcGrid" }, diff --git a/configs/seeds/wizard/RejectionReason.json b/configs/seeds/wizard/RejectionReason.json index cdfed7aa..e689a6c6 100644 --- a/configs/seeds/wizard/RejectionReason.json +++ b/configs/seeds/wizard/RejectionReason.json @@ -94,9 +94,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.RejectionReason.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_RejectionReason\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -810,7 +810,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -948,7 +948,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1086,7 +1086,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1212,7 +1212,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1338,7 +1338,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/Shift.json b/configs/seeds/wizard/Shift.json index a31c19ce..01e2106e 100644 --- a/configs/seeds/wizard/Shift.json +++ b/configs/seeds/wizard/Shift.json @@ -112,9 +112,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.Shift.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_Shift\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -828,7 +828,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -966,7 +966,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1092,7 +1092,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1218,7 +1218,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1860,7 +1860,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 8, "EditGroupOrderNo": 1, @@ -1998,7 +1998,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 9, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/Training.json b/configs/seeds/wizard/Training.json index 8506f9db..bed5183a 100644 --- a/configs/seeds/wizard/Training.json +++ b/configs/seeds/wizard/Training.json @@ -8,32 +8,24 @@ "PermissionGroupName": "App.Hr", "ModuleId": "Hr", "Menu": { - "MenuParentPath": [ - { - "Code": "App.Hr", - "Icon": "FcConferenceCall", - "En": "Human Resources", - "Tr": "İnsan Kaynakları" - } - ], - "MenuParentCode": "App.Hr.Trainings", - "MenuParentIcon": "FcGraduationCap", + "MenuParentCode": "App.Hr", + "MenuParentIcon": "FcConferenceCall", "MenuCode": "App.Hr.Training", - "MenuOrder": 3, + "MenuOrder": 8, "MenuUrl": "/admin/list/App.Hr.Training", "MenuIcon": "FcGraduationCap" }, "Language": { - "MenuParentEn": "Training", - "MenuParentTr": "Eğitim", + "MenuParentEn": "Human Resources", + "MenuParentTr": "İnsan Kaynakları", "PermissionGroupEn": "Human Resources", "PermissionGroupTr": "İnsan Kaynakları", "MenuEn": "Trainings", "MenuTr": "Eğitimler", "TitleEn": "Trainings", "TitleTr": "Eğitimler", - "DescEn": "Trainings — each training session: dates/times, duration, place, trainer, cost, skills gained, participants and files.\nWhere: Human Resources › Training › Trainings. The detail has Participants and Files tabs.\nFields:\n• Type → Subject (filtered by type), entry date, branch\n• Start/end date and time → total hours = days × daily hours (automatic)\n• Status → Open / Closed; trainer, place, institution\n• SkillIds → skills gained (informational, not written to the employee profile)\n• Cost items (place, trainer, accommodation, transport, catering, other) → total cost automatic\nRelated: a Performance Management development action can link to a training; when the employee is marked Attended the action completes itself. Work days between the start and end date are Training days in the timesheet of attending participants; changing the dates recalculates them.\nWidgets: total, open, closed trainings and total cost.", - "DescTr": "Eğitimler — düzenlenen her eğitim oturumu: tarih/saat, süre, yer, eğitmen, maliyet, kazandırdığı yetkinlikler, katılımcılar ve dosyalar.\nNerede: İnsan Kaynakları › Eğitim › Eğitimler. Detayda Katılımcılar ve Dosyalar sekmeleri vardır.\nAlanlar:\n• Tip → Konu (tipe göre süzülür), giriş tarihi, şube\n• Başlangıç/bitiş tarihi ve saati → Toplam süre = gün sayısı × günlük saat (otomatik)\n• Status → Açık / Kapalı; eğitmen, eğitim yeri, eğitim veren kurum\n• SkillIds → eğitimin kazandırdığı yetkinlikler (bilgi amaçlı, çalışan profiline yazılmaz)\n• Maliyet kalemleri (yer, eğitmen, konaklama, ulaşım, ikram, diğer) → toplam maliyet otomatik\nİlişkili: Performans Yönetimi'ndeki gelişim aksiyonu bir eğitime bağlanabilir; çalışan bu eğitimde Katıldı olarak işlenirse aksiyon kendiliğinden tamamlanır. Başlangıç–bitiş arasındaki iş günleri katılımcının puantajında Eğitimde yazılır; tarih değişince yeniden hesaplanır.\nWidget'lar: toplam, açık, kapalı eğitim ve toplam maliyet.", + "DescEn": "Trainings — each training session: dates/times, duration, place, trainer, cost, skills gained, participants and files.\nWhere: Human Resources › Trainings. The detail has Participants and Files tabs.\nFields:\n• Type → Subject (filtered by type), entry date, branch\n• Start/end date and time → total hours = days × daily hours (automatic)\n• Status → Open / Closed; trainer, place, institution\n• SkillIds → skills gained (informational, not written to the employee profile)\n• Cost items (place, trainer, accommodation, transport, catering, other) → total cost automatic\nRelated: a Performance Management development action can link to a training; when the employee is marked Attended the action completes itself. Work days between the start and end date are Training days in the timesheet of attending participants; changing the dates recalculates them.\nWidgets: total, open, closed trainings and total cost.", + "DescTr": "Eğitimler — düzenlenen her eğitim oturumu: tarih/saat, süre, yer, eğitmen, maliyet, kazandırdığı yetkinlikler, katılımcılar ve dosyalar.\nNerede: İnsan Kaynakları › Eğitimler. Detayda Katılımcılar ve Dosyalar sekmeleri vardır.\nAlanlar:\n• Tip → Konu (tipe göre süzülür), giriş tarihi, şube\n• Başlangıç/bitiş tarihi ve saati → Toplam süre = gün sayısı × günlük saat (otomatik)\n• Status → Açık / Kapalı; eğitmen, eğitim yeri, eğitim veren kurum\n• SkillIds → eğitimin kazandırdığı yetkinlikler (bilgi amaçlı, çalışan profiline yazılmaz)\n• Maliyet kalemleri (yer, eğitmen, konaklama, ulaşım, ikram, diğer) → toplam maliyet otomatik\nİlişkili: Performans Yönetimi'ndeki gelişim aksiyonu bir eğitime bağlanabilir; çalışan bu eğitimde Katıldı olarak işlenirse aksiyon kendiliğinden tamamlanır. Başlangıç–bitiş arasındaki iş günleri katılımcının puantajında Eğitimde yazılır; tarih değişince yeniden hesaplanır.\nWidget'lar: toplam, açık, kapalı eğitim ve toplam maliyet.", "Texts": [ { "Key": "App.Hr.Training.Widget.Open", diff --git a/configs/seeds/wizard/TrainingFile.json b/configs/seeds/wizard/TrainingFile.json index 9f41ae45..8932da41 100644 --- a/configs/seeds/wizard/TrainingFile.json +++ b/configs/seeds/wizard/TrainingFile.json @@ -8,8 +8,8 @@ "PermissionGroupName": "App.Hr", "ModuleId": "Hr", "Menu": { - "MenuParentCode": "App.Hr.Trainings", - "MenuParentIcon": "FcGraduationCap", + "MenuParentCode": "App.Hr", + "MenuParentIcon": "FcConferenceCall", "CreateMenu": false, "MenuCode": "App.Hr.TrainingFile", "MenuOrder": 0, @@ -17,8 +17,8 @@ "MenuIcon": "FcDocument" }, "Language": { - "MenuParentEn": "Training", - "MenuParentTr": "Eğitim", + "MenuParentEn": "Human Resources", + "MenuParentTr": "İnsan Kaynakları", "PermissionGroupEn": "Human Resources", "PermissionGroupTr": "İnsan Kaynakları", "MenuEn": "Training Files", diff --git a/configs/seeds/wizard/TrainingParticipant.json b/configs/seeds/wizard/TrainingParticipant.json index f0f67863..a1fff714 100644 --- a/configs/seeds/wizard/TrainingParticipant.json +++ b/configs/seeds/wizard/TrainingParticipant.json @@ -8,8 +8,8 @@ "PermissionGroupName": "App.Hr", "ModuleId": "Hr", "Menu": { - "MenuParentCode": "App.Hr.Trainings", - "MenuParentIcon": "FcGraduationCap", + "MenuParentCode": "App.Hr", + "MenuParentIcon": "FcConferenceCall", "CreateMenu": false, "MenuCode": "App.Hr.TrainingParticipant", "MenuOrder": 0, @@ -17,8 +17,8 @@ "MenuIcon": "FcBusinessman" }, "Language": { - "MenuParentEn": "Training", - "MenuParentTr": "Eğitim", + "MenuParentEn": "Human Resources", + "MenuParentTr": "İnsan Kaynakları", "PermissionGroupEn": "Human Resources", "PermissionGroupTr": "İnsan Kaynakları", "MenuEn": "Participants", diff --git a/configs/seeds/wizard/TrainingSubject.json b/configs/seeds/wizard/TrainingSubject.json index 35bcb13e..f3c6dae8 100644 --- a/configs/seeds/wizard/TrainingSubject.json +++ b/configs/seeds/wizard/TrainingSubject.json @@ -16,24 +16,24 @@ "Tr": "İnsan Kaynakları" } ], - "MenuParentCode": "App.Hr.Trainings", - "MenuParentIcon": "FcGraduationCap", + "MenuParentCode": "App.Hr.Definitions", + "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.TrainingSubject", - "MenuOrder": 2, + "MenuOrder": 20, "MenuUrl": "/admin/list/App.Hr.TrainingSubject", "MenuIcon": "FcViewDetails" }, "Language": { - "MenuParentEn": "Training", - "MenuParentTr": "Eğitim", + "MenuParentEn": "Definitions", + "MenuParentTr": "Tanımlamalar", "PermissionGroupEn": "Human Resources", "PermissionGroupTr": "İnsan Kaynakları", "MenuEn": "Training Subjects", "MenuTr": "Eğitim Konuları", "TitleEn": "Training Subjects", "TitleTr": "Eğitim Konuları", - "DescEn": "Training Subjects — subjects under a training type (OHS, cyber security, on-the-job…).\nWhere: Human Resources › Training › Training Subjects.\nFields: training type, subject, IsEvaluated (participants are evaluated), active.\nUsed by: Trainings (listed after the type is chosen); shown as the training name on the attendance certificate.", - "DescTr": "Eğitim Konuları — bir eğitim tipine bağlı konu başlıkları (İSG, siber güvenlik, iş başı eğitimi…).\nNerede: İnsan Kaynakları › Eğitim › Eğitim Konuları.\nAlanlar: eğitim tipi, konu adı, IsEvaluated (katılımcı değerlendirilsin mi), aktif.\nKullanıldığı yer: Eğitimler ekranında tip seçildikten sonra listelenir; katılım belgesinde eğitimin adı olarak görünür." + "DescEn": "Training Subjects — subjects under a training type (OHS, cyber security, on-the-job…).\nWhere: Human Resources › Definitions › Training Subjects.\nFields: training type, subject, IsEvaluated (participants are evaluated), active.\nUsed by: Trainings (listed after the type is chosen); shown as the training name on the attendance certificate.", + "DescTr": "Eğitim Konuları — bir eğitim tipine bağlı konu başlıkları (İSG, siber güvenlik, iş başı eğitimi…).\nNerede: İnsan Kaynakları › Tanımlamalar › Eğitim Konuları.\nAlanlar: eğitim tipi, konu adı, IsEvaluated (katılımcı değerlendirilsin mi), aktif.\nKullanıldığı yer: Eğitimler ekranında tip seçildikten sonra listelenir; katılım belgesinde eğitimin adı olarak görünür." }, "Groups": [ { @@ -82,9 +82,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.TrainingSubject.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_TrainingSubject\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -783,7 +783,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -921,7 +921,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1059,7 +1059,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1197,7 +1197,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1335,7 +1335,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/TrainingType.json b/configs/seeds/wizard/TrainingType.json index 592f2561..fb44af23 100644 --- a/configs/seeds/wizard/TrainingType.json +++ b/configs/seeds/wizard/TrainingType.json @@ -16,24 +16,24 @@ "Tr": "İnsan Kaynakları" } ], - "MenuParentCode": "App.Hr.Trainings", - "MenuParentIcon": "FcGraduationCap", + "MenuParentCode": "App.Hr.Definitions", + "MenuParentIcon": "FcFilingCabinet", "MenuCode": "App.Hr.TrainingType", - "MenuOrder": 1, + "MenuOrder": 19, "MenuUrl": "/admin/list/App.Hr.TrainingType", "MenuIcon": "FcList" }, "Language": { - "MenuParentEn": "Training", - "MenuParentTr": "Eğitim", + "MenuParentEn": "Definitions", + "MenuParentTr": "Tanımlamalar", "PermissionGroupEn": "Human Resources", "PermissionGroupTr": "İnsan Kaynakları", "MenuEn": "Training Types", "MenuTr": "Eğitim Tipleri", "TitleEn": "Training Types", "TitleTr": "Eğitim Tipleri", - "DescEn": "Training Types — kinds of training (orientation, on-the-job, group, external, academy, rotation…).\nWhere: Human Resources › Training › Training Types.\nUsed by: Training Subjects (each subject belongs to a type) and Trainings (type filters the subject list).", - "DescTr": "Eğitim Tipleri — eğitimlerin türü (oryantasyon, iş başı, grup, firma dışı, akademi, rotasyon…).\nNerede: İnsan Kaynakları › Eğitim › Eğitim Tipleri.\nKullanıldığı yerler: Eğitim Konuları (her konu bir tipe bağlıdır) ve Eğitimler (tip seçimi konu listesini süzer). Eğitim raporlarında tip kırılımı verir." + "DescEn": "Training Types — kinds of training (orientation, on-the-job, group, external, academy, rotation…).\nWhere: Human Resources › Definitions › Training Types.\nUsed by: Training Subjects (each subject belongs to a type) and Trainings (type filters the subject list).", + "DescTr": "Eğitim Tipleri — eğitimlerin türü (oryantasyon, iş başı, grup, firma dışı, akademi, rotasyon…).\nNerede: İnsan Kaynakları › Tanımlamalar › Eğitim Tipleri.\nKullanıldığı yerler: Eğitim Konuları (her konu bir tipe bağlıdır) ve Eğitimler (tip seçimi konu listesini süzer). Eğitim raporlarında tip kırılımı verir." }, "Groups": [ { @@ -70,9 +70,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.TrainingType.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_TrainingType\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, @@ -771,7 +771,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -909,7 +909,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1047,7 +1047,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1071,12 +1071,10 @@ "LanguageKeys": [ "App.Hr.TrainingType", "App.Hr.TrainingType.Title", - "App.Hr.TrainingType.Desc", - "App.Hr.Trainings" + "App.Hr.TrainingType.Desc" ], "PermissionGroupNames": [], "PermissionNames": [ - "App.Hr.Trainings", "App.Hr.TrainingType", "App.Hr.TrainingType.Create", "App.Hr.TrainingType.Update", @@ -1086,7 +1084,6 @@ "App.Hr.TrainingType.Note" ], "MenuCodes": [ - "App.Hr.Trainings", "App.Hr.TrainingType" ], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/VehicleDocument.json b/configs/seeds/wizard/VehicleDocument.json index 69e78e21..3a62f9d7 100644 --- a/configs/seeds/wizard/VehicleDocument.json +++ b/configs/seeds/wizard/VehicleDocument.json @@ -82,9 +82,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.VehicleDocument.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_VehicleDocument\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, diff --git a/configs/seeds/wizard/VehicleExpenseDefinition.json b/configs/seeds/wizard/VehicleExpenseDefinition.json index e1f4bfb8..4e706e41 100644 --- a/configs/seeds/wizard/VehicleExpenseDefinition.json +++ b/configs/seeds/wizard/VehicleExpenseDefinition.json @@ -76,9 +76,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.VehicleExpenseDefinition.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_VehicleExpenseDefinition\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, diff --git a/configs/seeds/wizard/WorkCalendar.json b/configs/seeds/wizard/WorkCalendar.json index 59782f7d..d69c214f 100644 --- a/configs/seeds/wizard/WorkCalendar.json +++ b/configs/seeds/wizard/WorkCalendar.json @@ -114,9 +114,9 @@ "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": "data/App.Hr.WorkCalendar.json", - "SeedSyncInsert": true, - "SeedSyncUpdate": true, - "SeedSyncDelete": true, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, "DeleteCommand": "UPDATE \"Hr_T_WorkCalendar\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": "DECLARE @_k TABLE (Id uniqueidentifier); INSERT INTO @_k SELECT Id FROM Hr_T_WorkCalendar WHERE Id IN @Id; DECLARE @_id uniqueidentifier; WHILE EXISTS (SELECT 1 FROM @_k) BEGIN SELECT TOP 1 @_id = Id FROM @_k; DELETE FROM @_k WHERE Id = @_id; EXEC dbo.Hr_S_WorkCalendarAfterSave @_id, @DeleterId; END", diff --git a/configs/seeds/wizard/WorkCenter.json b/configs/seeds/wizard/WorkCenter.json index 87d13a1a..6b0c8498 100644 --- a/configs/seeds/wizard/WorkCenter.json +++ b/configs/seeds/wizard/WorkCenter.json @@ -2,38 +2,38 @@ "Wizard": { "ComponentKind": 0, "WizardName": "WorkCenter", - "WizardCode": "App.Inventory.WorkCenter", + "WizardCode": "App.Production.WorkCenter", "SeededAt": "2026-10-07T18:52:47.4840809Z", "CustomComponentName": null, - "PermissionGroupName": "App.Inventory", - "ModuleId": "Inventory", + "PermissionGroupName": "App.Production", + "ModuleId": "Production", "Menu": { "MenuParentPath": [ { - "Code": "App.Inventory", - "Icon": "FcPackage", - "En": "Inventory", - "Tr": "Envanter" + "Code": "App.Production", + "Icon": "FcEngineering", + "En": "Production", + "Tr": "Üretim" } ], - "MenuParentCode": "App.Inventory.Definitions", + "MenuParentCode": "App.Production.Definitions", "MenuParentIcon": "FcSettings", - "MenuCode": "App.Inventory.WorkCenter", - "MenuOrder": 4, - "MenuUrl": "/admin/list/App.Inventory.WorkCenter", + "MenuCode": "App.Production.WorkCenter", + "MenuOrder": 2, + "MenuUrl": "/admin/list/App.Production.WorkCenter", "MenuIcon": "FcFactory" }, "Language": { "MenuParentEn": "Definitions", "MenuParentTr": "Tanımlamalar", - "PermissionGroupEn": "Inventory", - "PermissionGroupTr": "Envanter", + "PermissionGroupEn": "Production", + "PermissionGroupTr": "Üretim", "MenuEn": "Work Centers", "MenuTr": "İş Merkezleri", "TitleEn": "Work Centers", "TitleTr": "İş Merkezleri", - "DescEn": "Work Centers — machines or stations where operations are performed (e.g. stenter machine).\nWhere: Inventory › Definitions › Work Centers; tabs: General Information (efficiency, OEE, setup/cleanup time, hourly costs) and Product Capacity.\nFields: name, code, tags, alternative work centers, weekly working hours (defaults from the Weekly working time limit setting, 40 if not set), active.\nUsed by: Operations and BoM › Operations; BoM Overview computes operation cost from the hourly cost.", - "DescTr": "İş Merkezleri — operasyonların yapıldığı makine ya da istasyonlar (ör. ram makinası).\nNerede: Envanter › Tanımlamalar › İş Merkezleri; sekmeler: Genel Bilgi (verimlilik, OEE, kurulum/temizlik zamanı, saatlik maliyetler) ve Ürün Kapasitesi.\nAlanlar: ad, kod, etiketler, alternatif iş merkezleri, haftalık çalışma saati (varsayılanı Weekly working time limit ayarından, ayar yoksa 40), aktif.\nKullanıldığı yer: Operasyonlar ve Reçete › Operasyonlar; Reçeteye Genel Bakış operasyon maliyetini saatlik maliyetten hesaplar." + "DescEn": "Work Centers — machines or stations where operations are performed (e.g. stenter machine).\nWhere: Production › Definitions › Work Centers; tabs: General Information (efficiency, OEE, setup/cleanup time, hourly costs) and Product Capacity.\nFields: name, code, tags, alternative work centers, weekly working hours (defaults from the Weekly working time limit setting, 40 if not set), active.\nUsed by: Operations and BoM › Operations; BoM Overview computes operation cost from the hourly cost.", + "DescTr": "İş Merkezleri — operasyonların yapıldığı makine ya da istasyonlar (ör. ram makinası).\nNerede: Üretim › Tanımlamalar › İş Merkezleri; sekmeler: Genel Bilgi (verimlilik, OEE, kurulum/temizlik zamanı, saatlik maliyetler) ve Ürün Kapasitesi.\nAlanlar: ad, kod, etiketler, alternatif iş merkezleri, haftalık çalışma saati (varsayılanı Weekly working time limit ayarından, ayar yoksa 40), aktif.\nKullanıldığı yer: Operasyonlar ve Reçete › Operasyonlar; Reçeteye Genel Bakış operasyon maliyetini saatlik maliyetten hesaplar." }, "Groups": [ { @@ -90,14 +90,14 @@ "KeyFieldDbSourceType": 9, "TableName": null, "DefaultFilter": "\"IsDeleted\" = 'false'", - "SelectCommand": "Inv_T_WorkCenter", + "SelectCommand": "Prd_T_WorkCenter", "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], - "SeedFilePath": "data/App.Inventory.WorkCenter.json", + "SeedFilePath": "data/App.Production.WorkCenter.json", "SeedSyncInsert": false, "SeedSyncUpdate": false, "SeedSyncDelete": false, - "DeleteCommand": "UPDATE \"Inv_T_WorkCenter\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", + "DeleteCommand": "UPDATE \"Prd_T_WorkCenter\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, "DeleteFieldsDefaultValueDto": [ @@ -166,7 +166,7 @@ { "ColGap": 3, "ColSpan": 4, - "SqlQuery": "SELECT 'App.Widget.Total' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Inventory.WorkCenter' AS \"SubTitle\", 'FaIndustry' AS \"Icon\" FROM \"Inv_T_WorkCenter\" WHERE \"TenantId\" = '@TENANTID' UNION ALL SELECT 'App.Widget.Active', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Inventory.WorkCenter', 'FaCheckCircle' FROM \"Inv_T_WorkCenter\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 1 UNION ALL SELECT 'App.Widget.Passive', CAST(COUNT(*) AS VARCHAR(32)), 'gray', 'App.Inventory.WorkCenter', 'FaTimesCircle' FROM \"Inv_T_WorkCenter\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 0", + "SqlQuery": "SELECT 'App.Widget.Total' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Production.WorkCenter' AS \"SubTitle\", 'FaIndustry' AS \"Icon\" FROM \"Prd_T_WorkCenter\" WHERE \"TenantId\" = '@TENANTID' UNION ALL SELECT 'App.Widget.Active', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Production.WorkCenter', 'FaCheckCircle' FROM \"Prd_T_WorkCenter\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 1 UNION ALL SELECT 'App.Widget.Passive', CAST(COUNT(*) AS VARCHAR(32)), 'gray', 'App.Production.WorkCenter', 'FaTimesCircle' FROM \"Prd_T_WorkCenter\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 0", "Title": "Title", "Value": "Value", "ValueClassName": "text-3xl", @@ -179,17 +179,17 @@ } ], "ExtraFilterEditDto": [], - "ListFormCode": "App.Inventory.WorkCenter", + "ListFormCode": "App.Production.WorkCenter", "CultureName": "en", - "Name": "App.Inventory.WorkCenter", + "Name": "App.Production.WorkCenter", "KeyFieldName": "Id", - "Title": "App.Inventory.WorkCenter.Title", + "Title": "App.Production.WorkCenter.Title", "SortMode": "single", "PageSize": 10, "Width": 0, "Height": 0, "FullHeight": false, - "Description": "App.Inventory.WorkCenter.Desc", + "Description": "App.Production.WorkCenter.Desc", "FilterRowDto": { "Visible": true, "ApplyFilter": "auto", @@ -360,7 +360,7 @@ "StartEditAction": "click", "EditColumnName": null, "Popup": { - "Title": "App.Inventory.WorkCenter.Title", + "Title": "App.Production.WorkCenter.Title", "ShowTitle": true, "Width": 800, "Height": 350, @@ -386,19 +386,19 @@ } ], "PermissionDto": { - "C": "App.Inventory.WorkCenter.Create", - "R": "App.Inventory.WorkCenter", - "U": "App.Inventory.WorkCenter.Update", - "D": "App.Inventory.WorkCenter.Delete", - "E": "App.Inventory.WorkCenter.Export", - "I": "App.Inventory.WorkCenter.Import", - "N": "App.Inventory.WorkCenter.Note" + "C": "App.Production.WorkCenter.Create", + "R": "App.Production.WorkCenter", + "U": "App.Production.WorkCenter.Update", + "D": "App.Production.WorkCenter.Delete", + "E": "App.Production.WorkCenter.Export", + "I": "App.Production.WorkCenter.Import", + "N": "App.Production.WorkCenter.Note" }, "CommandColumnDto": [], "StateStoringDto": { "Enabled": true, "Type": "custom", - "StorageKey": "listFormGridStorage-App.Inventory.WorkCenter", + "StorageKey": "listFormGridStorage-App.Production.WorkCenter", "SavingTimeout": 5000 }, "CustomJsSources": [], @@ -416,8 +416,8 @@ "SubFormsDto": [ { "TabType": "Form", - "TabTitle": "App.Inventory.WorkCenterGeneral", - "Code": "App.Inventory.WorkCenterGeneral", + "TabTitle": "App.Production.WorkCenterGeneral", + "Code": "App.Production.WorkCenterGeneral", "IsRefresh": false, "Relation": [ { @@ -429,8 +429,8 @@ }, { "TabType": "List", - "TabTitle": "App.Inventory.WorkCenterCapacity", - "Code": "App.Inventory.WorkCenterCapacity", + "TabTitle": "App.Production.WorkCenterCapacity", + "Code": "App.Production.WorkCenterCapacity", "IsRefresh": false, "Relation": [ { @@ -723,7 +723,7 @@ "Fields": [ { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenter", + "ListFormCode": "App.Production.WorkCenter", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -808,9 +808,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenter.Create", - "R": "App.Inventory.WorkCenter", - "U": "App.Inventory.WorkCenter.Update", + "C": "App.Production.WorkCenter.Create", + "R": "App.Production.WorkCenter", + "U": "App.Production.WorkCenter.Update", "E": true, "I": true }, @@ -849,7 +849,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenter", + "ListFormCode": "App.Production.WorkCenter", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -946,9 +946,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenter.Create", - "R": "App.Inventory.WorkCenter", - "U": "App.Inventory.WorkCenter.Update", + "C": "App.Production.WorkCenter.Create", + "R": "App.Production.WorkCenter", + "U": "App.Production.WorkCenter.Update", "E": true, "I": true }, @@ -987,7 +987,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenter", + "ListFormCode": "App.Production.WorkCenter", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1072,9 +1072,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenter.Create", - "R": "App.Inventory.WorkCenter", - "U": "App.Inventory.WorkCenter.Update", + "C": "App.Production.WorkCenter.Create", + "R": "App.Production.WorkCenter", + "U": "App.Production.WorkCenter.Update", "E": true, "I": true }, @@ -1113,7 +1113,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenter", + "ListFormCode": "App.Production.WorkCenter", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1192,15 +1192,15 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": "SELECT CAST(Id AS nvarchar(36)) AS [Key], Name AS [Name] FROM Inv_T_WorkCenterTag WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" + "LookupQuery": "SELECT CAST(Id AS nvarchar(36)) AS [Key], Name AS [Name] FROM Prd_T_WorkCenterTag WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenter.Create", - "R": "App.Inventory.WorkCenter", - "U": "App.Inventory.WorkCenter.Update", + "C": "App.Production.WorkCenter.Create", + "R": "App.Production.WorkCenter", + "U": "App.Production.WorkCenter.Update", "E": true, "I": true }, @@ -1239,7 +1239,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenter", + "ListFormCode": "App.Production.WorkCenter", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1336,9 +1336,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenter.Create", - "R": "App.Inventory.WorkCenter", - "U": "App.Inventory.WorkCenter.Update", + "C": "App.Production.WorkCenter.Create", + "R": "App.Production.WorkCenter", + "U": "App.Production.WorkCenter.Update", "E": true, "I": true }, @@ -1377,7 +1377,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenter", + "ListFormCode": "App.Production.WorkCenter", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1456,15 +1456,15 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": "SELECT CAST(Id AS nvarchar(36)) AS [Key], Name AS [Name] FROM Inv_T_WorkCenter WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" + "LookupQuery": "SELECT CAST(Id AS nvarchar(36)) AS [Key], Name AS [Name] FROM Prd_T_WorkCenter WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenter.Create", - "R": "App.Inventory.WorkCenter", - "U": "App.Inventory.WorkCenter.Update", + "C": "App.Production.WorkCenter.Create", + "R": "App.Production.WorkCenter", + "U": "App.Production.WorkCenter.Update", "E": true, "I": true }, @@ -1503,7 +1503,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenter", + "ListFormCode": "App.Production.WorkCenter", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1600,9 +1600,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenter.Create", - "R": "App.Inventory.WorkCenter", - "U": "App.Inventory.WorkCenter.Update", + "C": "App.Production.WorkCenter.Create", + "R": "App.Production.WorkCenter", + "U": "App.Production.WorkCenter.Update", "E": true, "I": true }, @@ -1644,25 +1644,25 @@ "IsCreatedField": true, "InsertedRecords": { "LanguageKeys": [ - "App.Inventory.WorkCenter", - "App.Inventory.WorkCenter.Title", - "App.Inventory.WorkCenter.Desc", + "App.Production.WorkCenter", + "App.Production.WorkCenter.Title", + "App.Production.WorkCenter.Desc", "App.Listform.ListformField.WorkCenterName", "App.Listform.ListformField.WeeklyWorkingHours", "App.Listform.ListformField.AlternativeWorkCenters" ], "PermissionGroupNames": [], "PermissionNames": [ - "App.Inventory.WorkCenter", - "App.Inventory.WorkCenter.Create", - "App.Inventory.WorkCenter.Update", - "App.Inventory.WorkCenter.Delete", - "App.Inventory.WorkCenter.Export", - "App.Inventory.WorkCenter.Import", - "App.Inventory.WorkCenter.Note" + "App.Production.WorkCenter", + "App.Production.WorkCenter.Create", + "App.Production.WorkCenter.Update", + "App.Production.WorkCenter.Delete", + "App.Production.WorkCenter.Export", + "App.Production.WorkCenter.Import", + "App.Production.WorkCenter.Note" ], "MenuCodes": [ - "App.Inventory.WorkCenter" + "App.Production.WorkCenter" ], "DataSourceCodes": [], "ModuleIds": [] diff --git a/configs/seeds/wizard/WorkCenterCapacity.json b/configs/seeds/wizard/WorkCenterCapacity.json index 060fe4fc..56139a08 100644 --- a/configs/seeds/wizard/WorkCenterCapacity.json +++ b/configs/seeds/wizard/WorkCenterCapacity.json @@ -2,39 +2,39 @@ "Wizard": { "ComponentKind": 0, "WizardName": "WorkCenterCapacity", - "WizardCode": "App.Inventory.WorkCenterCapacity", + "WizardCode": "App.Production.WorkCenterCapacity", "SeededAt": "2026-10-07T18:51:47.6825628Z", "CustomComponentName": null, - "PermissionGroupName": "App.Inventory", - "ModuleId": "Inventory", + "PermissionGroupName": "App.Production", + "ModuleId": "Production", "Menu": { "MenuParentPath": [ { - "Code": "App.Inventory", - "Icon": "FcPackage", - "En": "Inventory", - "Tr": "Envanter" + "Code": "App.Production", + "Icon": "FcEngineering", + "En": "Production", + "Tr": "Üretim" } ], - "MenuParentCode": "App.Inventory.Definitions", + "MenuParentCode": "App.Production.Definitions", "MenuParentIcon": "FcSettings", "CreateMenu": false, - "MenuCode": "App.Inventory.WorkCenterCapacity", + "MenuCode": "App.Production.WorkCenterCapacity", "MenuOrder": 0, - "MenuUrl": "/admin/list/App.Inventory.WorkCenterCapacity", + "MenuUrl": "/admin/list/App.Production.WorkCenterCapacity", "MenuIcon": "FcBarChart" }, "Language": { "MenuParentEn": "Definitions", "MenuParentTr": "Tanımlamalar", - "PermissionGroupEn": "Inventory", - "PermissionGroupTr": "Envanter", + "PermissionGroupEn": "Production", + "PermissionGroupTr": "Üretim", "MenuEn": "Product Capacity", "MenuTr": "Ürün Kapasitesi", "TitleEn": "Product Capacity", "TitleTr": "Ürün Kapasitesi", - "DescEn": "Work Center Product Capacity — how many units of a product the work center can process in one cycle.\nWhere: Inventory › Definitions › Work Centers › Product Capacity tab (no menu of its own).\nFields: product, unit, capacity, product-specific setup and cleanup time (min).\nThe work center link (WorkCenterId) is written automatically from the open work center.", - "DescTr": "İş Merkezi Ürün Kapasitesi — iş merkezinin bir çevrimde bir üründen kaç birim işleyebildiği.\nNerede: Envanter › Tanımlamalar › İş Merkezleri › Ürün Kapasitesi sekmesi (kendi menüsü yoktur).\nAlanlar: ürün, birim, kapasite, ürüne özel kurulum ve temizlik zamanı (dk).\nİş merkezi bağlantısı (WorkCenterId) açık olan iş merkezi kaydından otomatik yazılır." + "DescEn": "Work Center Product Capacity — how many units of a product the work center can process in one cycle.\nWhere: Production › Definitions › Work Centers › Product Capacity tab (no menu of its own).\nFields: product, unit, capacity, product-specific setup and cleanup time (min).\nThe work center link (WorkCenterId) is written automatically from the open work center.", + "DescTr": "İş Merkezi Ürün Kapasitesi — iş merkezinin bir çevrimde bir üründen kaç birim işleyebildiği.\nNerede: Üretim › Tanımlamalar › İş Merkezleri › Ürün Kapasitesi sekmesi (kendi menüsü yoktur).\nAlanlar: ürün, birim, kapasite, ürüne özel kurulum ve temizlik zamanı (dk).\nİş merkezi bağlantısı (WorkCenterId) açık olan iş merkezi kaydından otomatik yazılır." }, "Groups": [ { @@ -91,14 +91,14 @@ "KeyFieldDbSourceType": 9, "TableName": null, "DefaultFilter": "\"IsDeleted\" = 'false'", - "SelectCommand": "Inv_T_WorkCenterCapacity", + "SelectCommand": "Prd_T_WorkCenterCapacity", "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": null, "SeedSyncInsert": false, "SeedSyncUpdate": false, "SeedSyncDelete": false, - "DeleteCommand": "UPDATE \"Inv_T_WorkCenterCapacity\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", + "DeleteCommand": "UPDATE \"Prd_T_WorkCenterCapacity\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, "DeleteFieldsDefaultValueDto": [ @@ -157,17 +157,17 @@ "FormFieldsDefaultValueDto": [], "WidgetsDto": [], "ExtraFilterEditDto": [], - "ListFormCode": "App.Inventory.WorkCenterCapacity", + "ListFormCode": "App.Production.WorkCenterCapacity", "CultureName": "en", - "Name": "App.Inventory.WorkCenterCapacity", + "Name": "App.Production.WorkCenterCapacity", "KeyFieldName": "Id", - "Title": "App.Inventory.WorkCenterCapacity.Title", + "Title": "App.Production.WorkCenterCapacity.Title", "SortMode": "single", "PageSize": 10, "Width": 0, "Height": 0, "FullHeight": false, - "Description": "App.Inventory.WorkCenterCapacity.Desc", + "Description": "App.Production.WorkCenterCapacity.Desc", "FilterRowDto": { "Visible": true, "ApplyFilter": "auto", @@ -338,7 +338,7 @@ "StartEditAction": "click", "EditColumnName": null, "Popup": { - "Title": "App.Inventory.WorkCenterCapacity.Title", + "Title": "App.Production.WorkCenterCapacity.Title", "ShowTitle": true, "Width": 800, "Height": 350, @@ -364,19 +364,19 @@ } ], "PermissionDto": { - "C": "App.Inventory.WorkCenterCapacity.Create", - "R": "App.Inventory.WorkCenterCapacity", - "U": "App.Inventory.WorkCenterCapacity.Update", - "D": "App.Inventory.WorkCenterCapacity.Delete", - "E": "App.Inventory.WorkCenterCapacity.Export", - "I": "App.Inventory.WorkCenterCapacity.Import", - "N": "App.Inventory.WorkCenterCapacity.Note" + "C": "App.Production.WorkCenterCapacity.Create", + "R": "App.Production.WorkCenterCapacity", + "U": "App.Production.WorkCenterCapacity.Update", + "D": "App.Production.WorkCenterCapacity.Delete", + "E": "App.Production.WorkCenterCapacity.Export", + "I": "App.Production.WorkCenterCapacity.Import", + "N": "App.Production.WorkCenterCapacity.Note" }, "CommandColumnDto": [], "StateStoringDto": { "Enabled": true, "Type": "custom", - "StorageKey": "listFormGridStorage-App.Inventory.WorkCenterCapacity", + "StorageKey": "listFormGridStorage-App.Production.WorkCenterCapacity", "SavingTimeout": 5000 }, "CustomJsSources": [], @@ -674,7 +674,7 @@ "Fields": [ { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterCapacity", + "ListFormCode": "App.Production.WorkCenterCapacity", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -759,9 +759,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterCapacity.Create", - "R": "App.Inventory.WorkCenterCapacity", - "U": "App.Inventory.WorkCenterCapacity.Update", + "C": "App.Production.WorkCenterCapacity.Create", + "R": "App.Production.WorkCenterCapacity", + "U": "App.Production.WorkCenterCapacity.Update", "E": true, "I": true }, @@ -800,7 +800,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterCapacity", + "ListFormCode": "App.Production.WorkCenterCapacity", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -879,15 +879,15 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Inv_T_WorkCenter WHERE IsDeleted = 'false' ORDER BY Name" + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Prd_T_WorkCenter WHERE IsDeleted = 'false' ORDER BY Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterCapacity.Create", - "R": "App.Inventory.WorkCenterCapacity", - "U": "App.Inventory.WorkCenterCapacity.Update", + "C": "App.Production.WorkCenterCapacity.Create", + "R": "App.Production.WorkCenterCapacity", + "U": "App.Production.WorkCenterCapacity.Update", "E": true, "I": true }, @@ -926,7 +926,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterCapacity", + "ListFormCode": "App.Production.WorkCenterCapacity", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1023,9 +1023,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterCapacity.Create", - "R": "App.Inventory.WorkCenterCapacity", - "U": "App.Inventory.WorkCenterCapacity.Update", + "C": "App.Production.WorkCenterCapacity.Create", + "R": "App.Production.WorkCenterCapacity", + "U": "App.Production.WorkCenterCapacity.Update", "E": true, "I": true }, @@ -1064,7 +1064,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterCapacity", + "ListFormCode": "App.Production.WorkCenterCapacity", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1161,9 +1161,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterCapacity.Create", - "R": "App.Inventory.WorkCenterCapacity", - "U": "App.Inventory.WorkCenterCapacity.Update", + "C": "App.Production.WorkCenterCapacity.Create", + "R": "App.Production.WorkCenterCapacity", + "U": "App.Production.WorkCenterCapacity.Update", "E": true, "I": true }, @@ -1202,7 +1202,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterCapacity", + "ListFormCode": "App.Production.WorkCenterCapacity", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1287,9 +1287,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterCapacity.Create", - "R": "App.Inventory.WorkCenterCapacity", - "U": "App.Inventory.WorkCenterCapacity.Update", + "C": "App.Production.WorkCenterCapacity.Create", + "R": "App.Production.WorkCenterCapacity", + "U": "App.Production.WorkCenterCapacity.Update", "E": true, "I": true }, @@ -1328,7 +1328,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterCapacity", + "ListFormCode": "App.Production.WorkCenterCapacity", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1413,9 +1413,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterCapacity.Create", - "R": "App.Inventory.WorkCenterCapacity", - "U": "App.Inventory.WorkCenterCapacity.Update", + "C": "App.Production.WorkCenterCapacity.Create", + "R": "App.Production.WorkCenterCapacity", + "U": "App.Production.WorkCenterCapacity.Update", "E": true, "I": true }, @@ -1454,7 +1454,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterCapacity", + "ListFormCode": "App.Production.WorkCenterCapacity", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1539,9 +1539,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterCapacity.Create", - "R": "App.Inventory.WorkCenterCapacity", - "U": "App.Inventory.WorkCenterCapacity.Update", + "C": "App.Production.WorkCenterCapacity.Create", + "R": "App.Production.WorkCenterCapacity", + "U": "App.Production.WorkCenterCapacity.Update", "E": true, "I": true }, @@ -1583,22 +1583,22 @@ "IsCreatedField": true, "InsertedRecords": { "LanguageKeys": [ - "App.Inventory.WorkCenterCapacity", - "App.Inventory.WorkCenterCapacity.Title", - "App.Inventory.WorkCenterCapacity.Desc", + "App.Production.WorkCenterCapacity", + "App.Production.WorkCenterCapacity.Title", + "App.Production.WorkCenterCapacity.Desc", "App.Listform.ListformField.WorkCenter", "App.Listform.ListformField.Product", "App.Listform.ListformField.Uom" ], "PermissionGroupNames": [], "PermissionNames": [ - "App.Inventory.WorkCenterCapacity", - "App.Inventory.WorkCenterCapacity.Create", - "App.Inventory.WorkCenterCapacity.Update", - "App.Inventory.WorkCenterCapacity.Delete", - "App.Inventory.WorkCenterCapacity.Export", - "App.Inventory.WorkCenterCapacity.Import", - "App.Inventory.WorkCenterCapacity.Note" + "App.Production.WorkCenterCapacity", + "App.Production.WorkCenterCapacity.Create", + "App.Production.WorkCenterCapacity.Update", + "App.Production.WorkCenterCapacity.Delete", + "App.Production.WorkCenterCapacity.Export", + "App.Production.WorkCenterCapacity.Import", + "App.Production.WorkCenterCapacity.Note" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/WorkCenterGeneral.json b/configs/seeds/wizard/WorkCenterGeneral.json index 5e25bcec..271496fa 100644 --- a/configs/seeds/wizard/WorkCenterGeneral.json +++ b/configs/seeds/wizard/WorkCenterGeneral.json @@ -2,39 +2,39 @@ "Wizard": { "ComponentKind": 0, "WizardName": "WorkCenterGeneral", - "WizardCode": "App.Inventory.WorkCenterGeneral", + "WizardCode": "App.Production.WorkCenterGeneral", "SeededAt": "2026-10-07T18:51:19.5494366Z", "CustomComponentName": null, - "PermissionGroupName": "App.Inventory", - "ModuleId": "Inventory", + "PermissionGroupName": "App.Production", + "ModuleId": "Production", "Menu": { "MenuParentPath": [ { - "Code": "App.Inventory", - "Icon": "FcPackage", - "En": "Inventory", - "Tr": "Envanter" + "Code": "App.Production", + "Icon": "FcEngineering", + "En": "Production", + "Tr": "Üretim" } ], - "MenuParentCode": "App.Inventory.Definitions", + "MenuParentCode": "App.Production.Definitions", "MenuParentIcon": "FcSettings", "CreateMenu": false, - "MenuCode": "App.Inventory.WorkCenterGeneral", + "MenuCode": "App.Production.WorkCenterGeneral", "MenuOrder": 0, - "MenuUrl": "/admin/list/App.Inventory.WorkCenterGeneral", + "MenuUrl": "/admin/list/App.Production.WorkCenterGeneral", "MenuIcon": "FcSettings" }, "Language": { "MenuParentEn": "Definitions", "MenuParentTr": "Tanımlamalar", - "PermissionGroupEn": "Inventory", - "PermissionGroupTr": "Envanter", + "PermissionGroupEn": "Production", + "PermissionGroupTr": "Üretim", "MenuEn": "General Information", "MenuTr": "Genel Bilgi", "TitleEn": "General Information", "TitleTr": "Genel Bilgi", - "DescEn": "Work Center General Information — production and costing data of the work center.\nWhere: Inventory › Definitions › Work Centers › General Information tab (no menu of its own; edits the work center record itself).\nFields: time efficiency %, OEE target %, setup and cleanup time (min), cost per hour for the work center and per employee, description.\nUsed by: BoM Overview operation cost = duration × cost per hour.", - "DescTr": "İş Merkezi Genel Bilgi — iş merkezinin üretim ve maliyetlendirme bilgileri.\nNerede: Envanter › Tanımlamalar › İş Merkezleri › Genel Bilgi sekmesi (kendi menüsü yoktur; iş merkezi kaydının kendisini düzenler).\nAlanlar: zaman verimliliği %, OEE hedefi %, kurulum ve temizlik zamanı (dk), iş merkezi ve çalışan başına saatlik maliyet, açıklama.\nKullanıldığı yer: Reçeteye Genel Bakış'ta operasyon maliyeti = süre × saatlik maliyet." + "DescEn": "Work Center General Information — production and costing data of the work center.\nWhere: Production › Definitions › Work Centers › General Information tab (no menu of its own; edits the work center record itself).\nFields: time efficiency %, OEE target %, setup and cleanup time (min), cost per hour for the work center and per employee, description.\nUsed by: BoM Overview operation cost = duration × cost per hour.", + "DescTr": "İş Merkezi Genel Bilgi — iş merkezinin üretim ve maliyetlendirme bilgileri.\nNerede: Üretim › Tanımlamalar › İş Merkezleri › Genel Bilgi sekmesi (kendi menüsü yoktur; iş merkezi kaydının kendisini düzenler).\nAlanlar: zaman verimliliği %, OEE hedefi %, kurulum ve temizlik zamanı (dk), iş merkezi ve çalışan başına saatlik maliyet, açıklama.\nKullanıldığı yer: Reçeteye Genel Bakış'ta operasyon maliyeti = süre × saatlik maliyet." }, "Groups": [ { @@ -97,14 +97,14 @@ "KeyFieldDbSourceType": 9, "TableName": null, "DefaultFilter": "\"IsDeleted\" = 'false'", - "SelectCommand": "Inv_T_WorkCenter", + "SelectCommand": "Prd_T_WorkCenter", "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": null, "SeedSyncInsert": false, "SeedSyncUpdate": false, "SeedSyncDelete": false, - "DeleteCommand": "UPDATE \"Inv_T_WorkCenter\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", + "DeleteCommand": "UPDATE \"Prd_T_WorkCenter\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, "DeleteFieldsDefaultValueDto": [ @@ -163,17 +163,17 @@ "FormFieldsDefaultValueDto": [], "WidgetsDto": [], "ExtraFilterEditDto": [], - "ListFormCode": "App.Inventory.WorkCenterGeneral", + "ListFormCode": "App.Production.WorkCenterGeneral", "CultureName": "en", - "Name": "App.Inventory.WorkCenterGeneral", + "Name": "App.Production.WorkCenterGeneral", "KeyFieldName": "Id", - "Title": "App.Inventory.WorkCenterGeneral.Title", + "Title": "App.Production.WorkCenterGeneral.Title", "SortMode": "single", "PageSize": 10, "Width": 0, "Height": 0, "FullHeight": false, - "Description": "App.Inventory.WorkCenterGeneral.Desc", + "Description": "App.Production.WorkCenterGeneral.Desc", "FilterRowDto": { "Visible": true, "ApplyFilter": "auto", @@ -344,7 +344,7 @@ "StartEditAction": "click", "EditColumnName": null, "Popup": { - "Title": "App.Inventory.WorkCenterGeneral.Title", + "Title": "App.Production.WorkCenterGeneral.Title", "ShowTitle": true, "Width": 800, "Height": 425, @@ -370,19 +370,19 @@ } ], "PermissionDto": { - "C": "App.Inventory.WorkCenterGeneral.Create", - "R": "App.Inventory.WorkCenterGeneral", - "U": "App.Inventory.WorkCenterGeneral.Update", - "D": "App.Inventory.WorkCenterGeneral.Delete", - "E": "App.Inventory.WorkCenterGeneral.Export", - "I": "App.Inventory.WorkCenterGeneral.Import", - "N": "App.Inventory.WorkCenterGeneral.Note" + "C": "App.Production.WorkCenterGeneral.Create", + "R": "App.Production.WorkCenterGeneral", + "U": "App.Production.WorkCenterGeneral.Update", + "D": "App.Production.WorkCenterGeneral.Delete", + "E": "App.Production.WorkCenterGeneral.Export", + "I": "App.Production.WorkCenterGeneral.Import", + "N": "App.Production.WorkCenterGeneral.Note" }, "CommandColumnDto": [], "StateStoringDto": { "Enabled": true, "Type": "custom", - "StorageKey": "listFormGridStorage-App.Inventory.WorkCenterGeneral", + "StorageKey": "listFormGridStorage-App.Production.WorkCenterGeneral", "SavingTimeout": 5000 }, "CustomJsSources": [], @@ -680,7 +680,7 @@ "Fields": [ { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterGeneral", + "ListFormCode": "App.Production.WorkCenterGeneral", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -765,9 +765,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterGeneral.Create", - "R": "App.Inventory.WorkCenterGeneral", - "U": "App.Inventory.WorkCenterGeneral.Update", + "C": "App.Production.WorkCenterGeneral.Create", + "R": "App.Production.WorkCenterGeneral", + "U": "App.Production.WorkCenterGeneral.Update", "E": true, "I": true }, @@ -806,7 +806,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterGeneral", + "ListFormCode": "App.Production.WorkCenterGeneral", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -903,9 +903,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterGeneral.Create", - "R": "App.Inventory.WorkCenterGeneral", - "U": "App.Inventory.WorkCenterGeneral.Update", + "C": "App.Production.WorkCenterGeneral.Create", + "R": "App.Production.WorkCenterGeneral", + "U": "App.Production.WorkCenterGeneral.Update", "E": true, "I": true }, @@ -944,7 +944,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterGeneral", + "ListFormCode": "App.Production.WorkCenterGeneral", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1041,9 +1041,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterGeneral.Create", - "R": "App.Inventory.WorkCenterGeneral", - "U": "App.Inventory.WorkCenterGeneral.Update", + "C": "App.Production.WorkCenterGeneral.Create", + "R": "App.Production.WorkCenterGeneral", + "U": "App.Production.WorkCenterGeneral.Update", "E": true, "I": true }, @@ -1082,7 +1082,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterGeneral", + "ListFormCode": "App.Production.WorkCenterGeneral", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1167,9 +1167,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterGeneral.Create", - "R": "App.Inventory.WorkCenterGeneral", - "U": "App.Inventory.WorkCenterGeneral.Update", + "C": "App.Production.WorkCenterGeneral.Create", + "R": "App.Production.WorkCenterGeneral", + "U": "App.Production.WorkCenterGeneral.Update", "E": true, "I": true }, @@ -1208,7 +1208,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterGeneral", + "ListFormCode": "App.Production.WorkCenterGeneral", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1293,9 +1293,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterGeneral.Create", - "R": "App.Inventory.WorkCenterGeneral", - "U": "App.Inventory.WorkCenterGeneral.Update", + "C": "App.Production.WorkCenterGeneral.Create", + "R": "App.Production.WorkCenterGeneral", + "U": "App.Production.WorkCenterGeneral.Update", "E": true, "I": true }, @@ -1334,7 +1334,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterGeneral", + "ListFormCode": "App.Production.WorkCenterGeneral", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1419,9 +1419,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterGeneral.Create", - "R": "App.Inventory.WorkCenterGeneral", - "U": "App.Inventory.WorkCenterGeneral.Update", + "C": "App.Production.WorkCenterGeneral.Create", + "R": "App.Production.WorkCenterGeneral", + "U": "App.Production.WorkCenterGeneral.Update", "E": true, "I": true }, @@ -1460,7 +1460,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterGeneral", + "ListFormCode": "App.Production.WorkCenterGeneral", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1545,9 +1545,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterGeneral.Create", - "R": "App.Inventory.WorkCenterGeneral", - "U": "App.Inventory.WorkCenterGeneral.Update", + "C": "App.Production.WorkCenterGeneral.Create", + "R": "App.Production.WorkCenterGeneral", + "U": "App.Production.WorkCenterGeneral.Update", "E": true, "I": true }, @@ -1586,7 +1586,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterGeneral", + "ListFormCode": "App.Production.WorkCenterGeneral", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1671,9 +1671,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterGeneral.Create", - "R": "App.Inventory.WorkCenterGeneral", - "U": "App.Inventory.WorkCenterGeneral.Update", + "C": "App.Production.WorkCenterGeneral.Create", + "R": "App.Production.WorkCenterGeneral", + "U": "App.Production.WorkCenterGeneral.Update", "E": true, "I": true }, @@ -1715,22 +1715,22 @@ "IsCreatedField": true, "InsertedRecords": { "LanguageKeys": [ - "App.Inventory.WorkCenterGeneral", - "App.Inventory.WorkCenterGeneral.Title", - "App.Inventory.WorkCenterGeneral.Desc", + "App.Production.WorkCenterGeneral", + "App.Production.WorkCenterGeneral.Title", + "App.Production.WorkCenterGeneral.Desc", "App.Listform.ListformField.TimeEfficiency", "App.Listform.ListformField.OeeTarget", "App.Listform.ListformField.EmployeeCostPerHour" ], "PermissionGroupNames": [], "PermissionNames": [ - "App.Inventory.WorkCenterGeneral", - "App.Inventory.WorkCenterGeneral.Create", - "App.Inventory.WorkCenterGeneral.Update", - "App.Inventory.WorkCenterGeneral.Delete", - "App.Inventory.WorkCenterGeneral.Export", - "App.Inventory.WorkCenterGeneral.Import", - "App.Inventory.WorkCenterGeneral.Note" + "App.Production.WorkCenterGeneral", + "App.Production.WorkCenterGeneral.Create", + "App.Production.WorkCenterGeneral.Update", + "App.Production.WorkCenterGeneral.Delete", + "App.Production.WorkCenterGeneral.Export", + "App.Production.WorkCenterGeneral.Import", + "App.Production.WorkCenterGeneral.Note" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/WorkCenterTag.json b/configs/seeds/wizard/WorkCenterTag.json index d3fff6e4..329254cf 100644 --- a/configs/seeds/wizard/WorkCenterTag.json +++ b/configs/seeds/wizard/WorkCenterTag.json @@ -2,38 +2,38 @@ "Wizard": { "ComponentKind": 0, "WizardName": "WorkCenterTag", - "WizardCode": "App.Inventory.WorkCenterTag", + "WizardCode": "App.Production.WorkCenterTag", "SeededAt": "2026-10-07T18:50:50.9486772Z", "CustomComponentName": null, - "PermissionGroupName": "App.Inventory", - "ModuleId": "Inventory", + "PermissionGroupName": "App.Production", + "ModuleId": "Production", "Menu": { "MenuParentPath": [ { - "Code": "App.Inventory", - "Icon": "FcPackage", - "En": "Inventory", - "Tr": "Envanter" + "Code": "App.Production", + "Icon": "FcEngineering", + "En": "Production", + "Tr": "Üretim" } ], - "MenuParentCode": "App.Inventory.Definitions", + "MenuParentCode": "App.Production.Definitions", "MenuParentIcon": "FcSettings", - "MenuCode": "App.Inventory.WorkCenterTag", - "MenuOrder": 3, - "MenuUrl": "/admin/list/App.Inventory.WorkCenterTag", + "MenuCode": "App.Production.WorkCenterTag", + "MenuOrder": 1, + "MenuUrl": "/admin/list/App.Production.WorkCenterTag", "MenuIcon": "FcBookmark" }, "Language": { "MenuParentEn": "Definitions", "MenuParentTr": "Tanımlamalar", - "PermissionGroupEn": "Inventory", - "PermissionGroupTr": "Envanter", + "PermissionGroupEn": "Production", + "PermissionGroupTr": "Üretim", "MenuEn": "Work Center Tags", "MenuTr": "İş Merkezi Etiketleri", "TitleEn": "Work Center Tags", "TitleTr": "İş Merkezi Etiketleri", - "DescEn": "Work Center Tags — labels used to classify work centers (dye house, finishing, assembly…).\nWhere: Inventory › Definitions › Work Center Tags.\nFields: name, colour, active.\nUsed by: Work Centers › Tags field (multi-select) to filter and group work centers. Passive tags are hidden in lookups.", - "DescTr": "İş Merkezi Etiketleri — iş merkezlerini sınıflandırmak için kullanılan etiketler (boyahane, apre, montaj…).\nNerede: Envanter › Tanımlamalar › İş Merkezi Etiketleri.\nAlanlar: ad, renk, aktif.\nKullanıldığı yer: İş Merkezleri › Etiketler alanında çoklu seçilir; iş merkezlerini süzmek ve gruplamak için kullanılır. Pasif etiketler lookup'ta görünmez." + "DescEn": "Work Center Tags — labels used to classify work centers (dye house, finishing, assembly…).\nWhere: Production › Definitions › Work Center Tags.\nFields: name, colour, active.\nUsed by: Work Centers › Tags field (multi-select) to filter and group work centers. Passive tags are hidden in lookups.", + "DescTr": "İş Merkezi Etiketleri — iş merkezlerini sınıflandırmak için kullanılan etiketler (boyahane, apre, montaj…).\nNerede: Üretim › Tanımlamalar › İş Merkezi Etiketleri.\nAlanlar: ad, renk, aktif.\nKullanıldığı yer: İş Merkezleri › Etiketler alanında çoklu seçilir; iş merkezlerini süzmek ve gruplamak için kullanılır. Pasif etiketler lookup'ta görünmez." }, "Groups": [ { @@ -72,14 +72,14 @@ "KeyFieldDbSourceType": 9, "TableName": null, "DefaultFilter": "\"IsDeleted\" = 'false'", - "SelectCommand": "Inv_T_WorkCenterTag", + "SelectCommand": "Prd_T_WorkCenterTag", "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], - "SeedFilePath": "data/App.Inventory.WorkCenterTag.json", + "SeedFilePath": "data/App.Production.WorkCenterTag.json", "SeedSyncInsert": false, "SeedSyncUpdate": false, "SeedSyncDelete": false, - "DeleteCommand": "UPDATE \"Inv_T_WorkCenterTag\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", + "DeleteCommand": "UPDATE \"Prd_T_WorkCenterTag\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, "DeleteFieldsDefaultValueDto": [ @@ -140,7 +140,7 @@ { "ColGap": 3, "ColSpan": 4, - "SqlQuery": "SELECT 'App.Widget.Total' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Inventory.WorkCenterTag' AS \"SubTitle\", 'FaTags' AS \"Icon\" FROM \"Inv_T_WorkCenterTag\" WHERE \"TenantId\" = '@TENANTID' UNION ALL SELECT 'App.Widget.Active', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Inventory.WorkCenterTag', 'FaCheckCircle' FROM \"Inv_T_WorkCenterTag\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 1 UNION ALL SELECT 'App.Widget.Passive', CAST(COUNT(*) AS VARCHAR(32)), 'gray', 'App.Inventory.WorkCenterTag', 'FaTimesCircle' FROM \"Inv_T_WorkCenterTag\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 0", + "SqlQuery": "SELECT 'App.Widget.Total' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Production.WorkCenterTag' AS \"SubTitle\", 'FaTags' AS \"Icon\" FROM \"Prd_T_WorkCenterTag\" WHERE \"TenantId\" = '@TENANTID' UNION ALL SELECT 'App.Widget.Active', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Production.WorkCenterTag', 'FaCheckCircle' FROM \"Prd_T_WorkCenterTag\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 1 UNION ALL SELECT 'App.Widget.Passive', CAST(COUNT(*) AS VARCHAR(32)), 'gray', 'App.Production.WorkCenterTag', 'FaTimesCircle' FROM \"Prd_T_WorkCenterTag\" WHERE \"TenantId\" = '@TENANTID' AND \"IsActive\" = 0", "Title": "Title", "Value": "Value", "ValueClassName": "text-3xl", @@ -153,17 +153,17 @@ } ], "ExtraFilterEditDto": [], - "ListFormCode": "App.Inventory.WorkCenterTag", + "ListFormCode": "App.Production.WorkCenterTag", "CultureName": "en", - "Name": "App.Inventory.WorkCenterTag", + "Name": "App.Production.WorkCenterTag", "KeyFieldName": "Id", - "Title": "App.Inventory.WorkCenterTag.Title", + "Title": "App.Production.WorkCenterTag.Title", "SortMode": "single", "PageSize": 10, "Width": 0, "Height": 0, "FullHeight": false, - "Description": "App.Inventory.WorkCenterTag.Desc", + "Description": "App.Production.WorkCenterTag.Desc", "FilterRowDto": { "Visible": true, "ApplyFilter": "auto", @@ -334,7 +334,7 @@ "StartEditAction": "click", "EditColumnName": null, "Popup": { - "Title": "App.Inventory.WorkCenterTag.Title", + "Title": "App.Production.WorkCenterTag.Title", "ShowTitle": true, "Width": 800, "Height": 275, @@ -360,19 +360,19 @@ } ], "PermissionDto": { - "C": "App.Inventory.WorkCenterTag.Create", - "R": "App.Inventory.WorkCenterTag", - "U": "App.Inventory.WorkCenterTag.Update", - "D": "App.Inventory.WorkCenterTag.Delete", - "E": "App.Inventory.WorkCenterTag.Export", - "I": "App.Inventory.WorkCenterTag.Import", - "N": "App.Inventory.WorkCenterTag.Note" + "C": "App.Production.WorkCenterTag.Create", + "R": "App.Production.WorkCenterTag", + "U": "App.Production.WorkCenterTag.Update", + "D": "App.Production.WorkCenterTag.Delete", + "E": "App.Production.WorkCenterTag.Export", + "I": "App.Production.WorkCenterTag.Import", + "N": "App.Production.WorkCenterTag.Note" }, "CommandColumnDto": [], "StateStoringDto": { "Enabled": true, "Type": "custom", - "StorageKey": "listFormGridStorage-App.Inventory.WorkCenterTag", + "StorageKey": "listFormGridStorage-App.Production.WorkCenterTag", "SavingTimeout": 5000 }, "CustomJsSources": [], @@ -670,7 +670,7 @@ "Fields": [ { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterTag", + "ListFormCode": "App.Production.WorkCenterTag", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -755,9 +755,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterTag.Create", - "R": "App.Inventory.WorkCenterTag", - "U": "App.Inventory.WorkCenterTag.Update", + "C": "App.Production.WorkCenterTag.Create", + "R": "App.Production.WorkCenterTag", + "U": "App.Production.WorkCenterTag.Update", "E": true, "I": true }, @@ -796,7 +796,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterTag", + "ListFormCode": "App.Production.WorkCenterTag", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -893,9 +893,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterTag.Create", - "R": "App.Inventory.WorkCenterTag", - "U": "App.Inventory.WorkCenterTag.Update", + "C": "App.Production.WorkCenterTag.Create", + "R": "App.Production.WorkCenterTag", + "U": "App.Production.WorkCenterTag.Update", "E": true, "I": true }, @@ -934,7 +934,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterTag", + "ListFormCode": "App.Production.WorkCenterTag", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1019,9 +1019,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterTag.Create", - "R": "App.Inventory.WorkCenterTag", - "U": "App.Inventory.WorkCenterTag.Update", + "C": "App.Production.WorkCenterTag.Create", + "R": "App.Production.WorkCenterTag", + "U": "App.Production.WorkCenterTag.Update", "E": true, "I": true }, @@ -1060,7 +1060,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.WorkCenterTag", + "ListFormCode": "App.Production.WorkCenterTag", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1157,9 +1157,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.WorkCenterTag.Create", - "R": "App.Inventory.WorkCenterTag", - "U": "App.Inventory.WorkCenterTag.Update", + "C": "App.Production.WorkCenterTag.Create", + "R": "App.Production.WorkCenterTag", + "U": "App.Production.WorkCenterTag.Update", "E": true, "I": true }, @@ -1201,25 +1201,34 @@ "IsCreatedField": true, "InsertedRecords": { "LanguageKeys": [ - "App.Inventory.WorkCenterTag", - "App.Inventory.WorkCenterTag.Title", - "App.Inventory.WorkCenterTag.Desc" + "App.Production.WorkCenterTag", + "App.Production.WorkCenterTag.Title", + "App.Production.WorkCenterTag.Desc", + "App.Production", + "App.Production.Definitions" + ], + "PermissionGroupNames": [ + "App.Production" ], - "PermissionGroupNames": [], "PermissionNames": [ - "App.Inventory.WorkCenterTag", - "App.Inventory.WorkCenterTag.Create", - "App.Inventory.WorkCenterTag.Update", - "App.Inventory.WorkCenterTag.Delete", - "App.Inventory.WorkCenterTag.Export", - "App.Inventory.WorkCenterTag.Import", - "App.Inventory.WorkCenterTag.Note" + "App.Production.Definitions", + "App.Production.WorkCenterTag", + "App.Production.WorkCenterTag.Create", + "App.Production.WorkCenterTag.Update", + "App.Production.WorkCenterTag.Delete", + "App.Production.WorkCenterTag.Export", + "App.Production.WorkCenterTag.Import", + "App.Production.WorkCenterTag.Note" ], "MenuCodes": [ - "App.Inventory.WorkCenterTag" + "App.Production", + "App.Production.Definitions", + "App.Production.WorkCenterTag" ], "DataSourceCodes": [], - "ModuleIds": [] + "ModuleIds": [ + "Production" + ] }, "DevRequest": { "Id": "5d11851e-5f00-4a0b-b5a3-b8211e56c8b5",