diff --git a/configs/seeds/data/App.DevRequests/94639b65-1bb7-454a-ae73-3e1c5c9fe23a.json b/configs/seeds/data/App.DevRequests/94639b65-1bb7-454a-ae73-3e1c5c9fe23a.json index 445c0196..b26258d2 100644 --- a/configs/seeds/data/App.DevRequests/94639b65-1bb7-454a-ae73-3e1c5c9fe23a.json +++ b/configs/seeds/data/App.DevRequests/94639b65-1bb7-454a-ae73-3e1c5c9fe23a.json @@ -9,15 +9,15 @@ "TenantId": null, "UserName": "system@sozsoft.com", "RequestDate": null, - "Status": "Testing", + "Status": "Staging", "Title": "Proje Modülü", "Description": "

Menünün ilk sırasında Definitions isimli Alt bir menü eklenecektir.


Etiketler: Tanımlanabilmeli ve bu etiketler Projeyle ilişkilendirilebimeli.


Aylık Adam/Ay Oranları : Kullanıcıların yıl ve ay bazında çalışma oranı belirlenebilmeli. Arge merkezi gibi sistemler için önemli


Görev Listesi: Personelin projelerde görevlerin listesidir.

Proje Listesi : Projelerin listelendiği kısımdır. O projelerin detay butonu yardımıyla bir aşağıdaki komponenti açıyor. Bu projenin altında Proje Özeti HtmlEditor olmalıdır. Diğer tablar aşağıda resimleri verilmiştir. Özet, İhtiyaçlar, Faaliyetler, Yenilikçi Yönü, çıktı ve faydaları tablaını HtmlEditor olarak tanımlamalı. Ayrıca tablar http://localhost:3000/admin/form/App.Definitions.Contact sayfasındaki gibi olmalı.


İş Paketleri : Öncelikle ilgili projede çalışacak personeller belirlenmeli. Bu takımda yer alacak personel tree şeklinde ParentId ile tanımlanmalı. İlk olarak takım lideri sonrasında altında çalışan personeller seçiebilir.


İş Paketleri kısmı GanttView olarak sunulacaktır ve işler birbirine bağlı şekilde yeni iş paketleri girebilmeliyim. İş paketlerine aşağıdaki detay formunda yer alan bilgiler olmalıdır. Perosnle, Planlanan Kaynaklar ... İlgili iş paketiyle ilgili çalışanlar, planlanan malzeme, seyahat, ekipman vs tüm bilgiler yazılıyor. Birbirine benzeyen ekranlar tip sütunu ile ayrılarak birleştirilebilir. Ayrıca bu iş paketi ile ilgili gerçekleşen tüm masraflarıda planlanan gibi yazılması gerekiyor.


,


Adam / Ay Oranları : proje bazında projede çalışan personellerin ilgili aylardaki iş paketlerinde geçirdiği yüzdesel çalışma oranların görüldüğü listedir ve GanttView olarak sunulmalıdır. Sadece Ay olarak görüntülenebilir.


Günce Listesi : Proje ve İş Paketlerine göre günlük personelin yaptığı çalışmaları yazdığı bir liste olmalıdır. Günce sütunu Html Editor olmalı.


Proje detayında yer alan bazı bilgilerin ayrıca listesi olmalı. Bu listelere yeni kayıt eklenmeyecek sadece listelemek amacıyla kullanılacaktır.



Proje Bütçe Raporu: Projenin planlana ve gerçekleşen maliyetlerini aylık bazda takip edildiği listedir. GanttView olarak sunulabilir sadece Ay olarak gösterilmelidir.


", "DueDate": "2026-10-07T14:06:00", "Tags": "PJ", "Assignees": "system@sozsoft.com", "Priority": "5", - "Completed": false, - "SortOrder": 0, + "Completed": true, + "SortOrder": 8, "Timesheets": "[{\"id\":\"0c5d6e57-cd41-d35e-c9f1-3a242c961864\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Talep analiz edildi\",\"duration\":0.05},{\"id\":\"99de8851-e392-e03b-d64a-3a242c9ab570\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_T_Tag tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"3bed9f72-1d3a-3ffd-56fe-3a242c9ac581\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_T_ProjectRole tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"186f6edb-2fc7-081f-f60a-3a242c9acfc0\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_T_UserMonthRate tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"a9cfd13b-a29a-10ec-fe0e-3a242c9aea23\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_T_Project tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"2ac04b00-4219-5f4d-a6b0-3a242c9afdea\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_T_ProjectMember tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"d6c9ea9f-9b11-5c2a-521a-3a242c9b0f77\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_T_WorkPackage tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"e4c3c730-b405-b23e-4b2d-3a242c9b1ac3\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_T_WorkPackageMember tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"00026a8c-2ae2-6b78-27a9-3a242c9b28dd\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_T_WorkPackageMonthRate tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"2e46d8c1-142c-bf4e-a5ec-3a242c9b41ee\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_T_WorkPackageResource tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"7f1a65a5-3ce3-020a-318a-3a242c9b5abc\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_T_Diary tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"97a26991-0674-51fd-a744-3a242c9c805e\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_V_ProjectMember SQL nesnesi kaydedildi\",\"duration\":0.0167},{\"id\":\"07965202-c136-3919-d349-3a242c9cca1f\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_V_ProjectCostSummary SQL nesnesi kaydedildi\",\"duration\":0.0167},{\"id\":\"4ac9dc0a-ed18-1a64-0f6b-3a242c9ce55d\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_V_ResourceList SQL nesnesi kaydedildi\",\"duration\":0.0167},{\"id\":\"793b971e-4ba0-c894-3a7c-3a242c9d153e\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_V_PersonnelManMonth SQL nesnesi kaydedildi\",\"duration\":0.0167},{\"id\":\"77bc24de-223d-cf79-8333-3a242c9d642b\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_V_ManMonthGantt SQL nesnesi kaydedildi\",\"duration\":0.0167},{\"id\":\"94c9fa8c-340f-8a5c-e7a4-3a242c9dbb34\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prj_V_BudgetMonthly SQL nesnesi kaydedildi\",\"duration\":0.0167},{\"id\":\"b2a26b45-9966-7dfb-a781-3a242c9e25b2\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Tag.json wizard\\u0027\\u0131 deploy edildi (17 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"82fba945-7e97-aef6-835e-3a242c9e97c2\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ProjectRole.json wizard\\u0027\\u0131 deploy edildi (67 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"16c88834-05a4-9b69-20d6-3a242ca05973\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"UserMonthRate.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0333},{\"id\":\"e8592995-c02c-74f5-5e18-3a242ca0a546\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"WorkPackageMember.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"8b214260-7590-b34f-59fb-3a242ca0f705\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"WorkPackageMonthRate.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"20f46795-3021-ed40-afc0-3a242ca1b28c\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"WorkPackagePlanned.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"fd9d8c0d-8ae3-9a81-3cd2-3a242ca240e0\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"WorkPackageActual.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"e1b5e86b-cea2-1a6b-1837-3a242ca2d9f5\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"WorkPackage.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"b7c7d5cf-2196-9634-b3d2-3a242ca3539a\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Diary.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"118db059-01b4-ef91-ce51-3a242ca39652\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ProjectSummary.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"e285e154-7597-f445-6be5-3a242ca3e3af\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ProjectSupport.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"6b5406a6-42b2-5701-221c-3a242ca4196a\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ProjectNeeds.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"44c3f703-9189-3030-e665-3a242ca4474d\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ProjectActivities.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"d4ac329d-3294-0ac0-8b72-3a242ca47f9f\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ProjectInnovation.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"4fc0f20a-990b-33f0-09e4-3a242ca4bc3e\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ProjectOutputs.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"4dff87aa-65dc-2b90-c853-3a242ca51c15\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ProjectMember.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"136b0c4c-4f89-adc3-7a9b-3a242ca727b4\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ProjectMember.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0333},{\"id\":\"34498591-a692-9da8-4662-3a242ca78c7c\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ProjectCostSummary.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"7bb397e7-03b6-4207-850d-3a242ca82dd6\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Project.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"88a406c4-6764-5efe-0197-3a242ca980f9\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ManMonth.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"05389c41-f739-3e3b-b856-3a242ca9fa0a\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"ResourceList.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"7f533b3c-b7ac-677e-1867-3a242caa60fa\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"PersonnelManMonth.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"4e7f2077-36f2-580e-197c-3a242caac9d2\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"BudgetReport.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"94e5b0ca-86b3-b7bc-fa4d-3a242caae453\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"38 tamamlanm\\u0131\\u015F alt g\\u00F6rev eklendi\",\"duration\":0.0167},{\"id\":\"0089f993-7dac-72ec-7e71-3a242cab10c0\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"Analize \\u00FCretim notu eklendi\",\"duration\":0.0167},{\"id\":\"d30d4361-21a6-dc2f-8dd7-3a242cab65db\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"24485ad1-55fd-7c1b-4073-3a242cabaf20\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"f913ffb4-5315-20ae-5fba-3a242cabd7bb\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"75f2b514-7755-8997-c957-3a242cac237a\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"5935ada6-349c-99be-2b53-3a242cac509d\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"60a0d750-622e-9610-821c-3a242cac9521\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"93a967d3-1219-3cb8-64e7-3a242cacd59e\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"89ad5ab7-6ffc-81d3-ab3a-3a242cad1234\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"e081bab8-89ce-8fbd-ba62-3a242cad507e\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.ProjectSummary mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"5ff7bb04-4d89-5876-dc3b-3a242cad6833\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.ProjectSupport mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"52cc7e58-cd2e-811b-e9db-3a242cad808e\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.ProjectNeeds mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"5f9984ac-9da5-56f9-e983-3a242cad9821\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.ProjectActivities mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"170fe0c0-1bd4-1597-998d-3a242cadaded\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.ProjectInnovation mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"3f4eea78-aad0-9a48-ba59-3a242cadc5da\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.ProjectOutputs mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"262ddfb5-b688-2fbe-b903-3a242cadebdb\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.ProjectMember mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"0317ea23-2193-b839-35f4-3a242cae1818\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.ProjectCostSummary mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"4691624a-9a3d-f78a-1e42-3a242cae39d6\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.WorkPackageMember mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"502c1723-440a-fb2c-caa9-3a242cae59ca\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.WorkPackageMonthRate mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"26edff6a-d8bf-f8b4-4b17-3a242cae861a\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.WorkPackagePlanned mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"ab486726-5a49-df85-3dc9-3a242caea804\",\"date\":\"2026-10-08\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prj.WorkPackageActual mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167}]", "SubTasks": "[{\"id\":\"470762f5-8610-cdd2-63e5-3a242caae402\",\"title\":\"create_table: Prj_T_Tag\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"99b2a6af-c2ee-4a39-5eb3-3a242caae402\",\"title\":\"create_table: Prj_T_ProjectRole\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"66fefd0d-0d05-bba0-5835-3a242caae402\",\"title\":\"create_table: Prj_T_UserMonthRate\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"8dc20f60-22b5-61b2-bb26-3a242caae402\",\"title\":\"create_table: Prj_T_Project\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"78ee4f0e-df44-463c-9df4-3a242caae402\",\"title\":\"create_table: Prj_T_ProjectMember\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"7f76b976-761f-392d-3711-3a242caae402\",\"title\":\"create_table: Prj_T_WorkPackage\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"51228de7-4b99-32e7-d942-3a242caae402\",\"title\":\"create_table: Prj_T_WorkPackageMember\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"8822408b-b037-4b8e-3a2d-3a242caae402\",\"title\":\"create_table: Prj_T_WorkPackageMonthRate\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"2979a390-6b37-8e87-5d10-3a242caae402\",\"title\":\"create_table: Prj_T_WorkPackageResource\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"bff85217-5ce3-389a-caaf-3a242caae402\",\"title\":\"create_table: Prj_T_Diary\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"d531d3a1-e22f-f16c-84a5-3a242caae402\",\"title\":\"save_sql_object: Prj_V_ProjectMember\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"6d6856ba-27a1-bf57-b712-3a242caae402\",\"title\":\"save_sql_object: Prj_V_ProjectCostSummary\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"dca76774-0915-428f-53c1-3a242caae402\",\"title\":\"save_sql_object: Prj_V_ResourceList\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"69228da0-869f-c426-4c65-3a242caae402\",\"title\":\"save_sql_object: Prj_V_PersonnelManMonth\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"70b1a589-24d0-573d-b7af-3a242caae402\",\"title\":\"save_sql_object: Prj_V_ManMonthGantt\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"d794c190-77f5-63f9-9ab5-3a242caae402\",\"title\":\"save_sql_object: Prj_V_BudgetMonthly\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"c19e9251-467a-0854-ff62-3a242caae402\",\"title\":\"deploy_wizard: Tag.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"9d7b5618-4b99-5427-ce98-3a242caae402\",\"title\":\"deploy_wizard: ProjectRole.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"fa1fa7cc-fa7d-aeab-9b2e-3a242caae402\",\"title\":\"deploy_wizard: UserMonthRate.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"9b372741-816e-8706-7ddb-3a242caae402\",\"title\":\"deploy_wizard: WorkPackageMember.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"fbd46c46-bdff-643c-f1a3-3a242caae402\",\"title\":\"deploy_wizard: WorkPackageMonthRate.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"3c53629c-d42b-a567-50ae-3a242caae402\",\"title\":\"deploy_wizard: WorkPackagePlanned.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"ca619154-dcaa-86ee-6586-3a242caae402\",\"title\":\"deploy_wizard: WorkPackageActual.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"cc79cd79-de19-b47c-d678-3a242caae402\",\"title\":\"deploy_wizard: WorkPackage.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"9f2095e7-b98d-a128-bc09-3a242caae402\",\"title\":\"deploy_wizard: Diary.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"6602b996-9c9f-807b-9903-3a242caae402\",\"title\":\"deploy_wizard: ProjectSummary.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"3bf4a0fb-e7b2-97a2-c079-3a242caae402\",\"title\":\"deploy_wizard: ProjectSupport.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"d37fb9fa-82c5-de77-4efb-3a242caae402\",\"title\":\"deploy_wizard: ProjectNeeds.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"42ad56e7-f792-fe6f-79d5-3a242caae402\",\"title\":\"deploy_wizard: ProjectActivities.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"8e4e8ea5-fc71-55df-20ce-3a242caae402\",\"title\":\"deploy_wizard: ProjectInnovation.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"0002faf4-a928-d50d-9cc5-3a242caae402\",\"title\":\"deploy_wizard: ProjectOutputs.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"58e66a8a-c805-94f8-396a-3a242caae402\",\"title\":\"deploy_wizard: ProjectMember.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"85db9c83-acad-8412-bfd2-3a242caae402\",\"title\":\"deploy_wizard: ProjectCostSummary.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"027f6d8b-6a4b-2c2f-3eb9-3a242caae402\",\"title\":\"deploy_wizard: Project.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"38dcdd1e-bc7a-36a0-2ad9-3a242caae402\",\"title\":\"deploy_wizard: ManMonth.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"1cb0ebcc-a1ff-0606-f5fb-3a242caae402\",\"title\":\"deploy_wizard: ResourceList.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"47639969-0307-c837-8060-3a242caae402\",\"title\":\"deploy_wizard: PersonnelManMonth.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true},{\"id\":\"3242df0a-2b94-736f-e597-3a242caae402\",\"title\":\"deploy_wizard: BudgetReport.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-08\",\"completed\":true}]", "Analysis": "

1. Amaç

\n

Ar-Ge / destekli projelerin (TÜBİTAK, Ar-Ge Merkezi vb.) tek modülde yönetimi: proje kartı ve başvuru metinleri, proje takımı, iş paketleri (Gantt), personelin aylık adam/ay oranları, planlanan ve gerçekleşen maliyetler, günlük çalışma güncesi ve aylık bütçe takibi. Kullanıcılar: proje yöneticisi, Ar-Ge merkezi sorumlusu, proje personeli.

\n\n

2. Görsel analizi

\n\n\n

3. Çözüm yolu

\n

Tümü Wizard List. Tanımlar ve giriş ekranları tablo kaynaklı; Takım, Adam/Ay Gantt'ı, Kaynak Listesi, Personel Adam/Ay Oranları, Bütçe Raporu ve proje maliyet özeti hesaplı olduğundan SQL view + Query kaynağıyla. İş Paketleri ve Adam/Ay Oranları ile Bütçe Raporu Gantt görünümü (ScaleType: months) ile; sayısal ay hücreleri için aynı ekranlarda Pivot görünümü de açık. Proje detayı Contact ekranındaki gibi SubFormsDto sekmeleriyle. Custom component gerekmez.

\n\n

4. Menü yeri

\n

Proje › Tanımlamalar › {Etiketler | Görevler | Aylık Adam/Ay Oranları} ve Proje › {ekran}

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
SeviyeKodAd (TR / EN)İkonDurum
KökApp.PrjProje / ProjectFcGanttChartYeni
AraApp.Prj.DefinitionsTanımlamalar / DefinitionsFcFilingCabinetYeni (kök altında ilk sıra)
EkranApp.Prj.TagEtiketler / TagsFcBookmarkYeni
EkranApp.Prj.ProjectRoleGörevler / Project RolesFcListYeni
EkranApp.Prj.UserMonthRateAylık Adam/Ay Oranları / Monthly Man-Month RatesFcCalendarYeni
EkranApp.Prj.ProjectProjeler / ProjectsFcFolderYeni
EkranApp.Prj.WorkPackageİş Paketleri / Work PackagesFcGanttChartYeni (menülü, Proje'de sekme)
EkranApp.Prj.ManMonthAdam/Ay Oranları / Man-Month RatesFcTimelineYeni
EkranApp.Prj.DiaryGünce Listesi / Work DiaryFcPlannerYeni
EkranApp.Prj.ResourceListKaynak Listesi / Resource ListFcViewDetailsYeni
EkranApp.Prj.PersonnelManMonthPersonel Adam/Ay Oranları / Personnel Man-MonthFcBusinessmanYeni
EkranApp.Prj.BudgetReportProje Bütçe Raporu / Project Budget ReportFcComboChartYeni
\n

ModuleId: Prj · İzin grubu: App.Prj (Yeni) · Route: /admin/list/{ListFormCode}.
\nYetki: App.Prj › App.Prj.Definitions › App.Prj.Tag | ProjectRole | UserMonthRate (ara yetki Yeni); diğer ekranlar App.Prj › {ListFormCode}; alt formlar App.Prj › App.Prj.Project › App.Prj.Project{Sekme} ve App.Prj › App.Prj.WorkPackage › App.Prj.WorkPackage{Sekme}.

\n\n

5. Veri modeli

\n

Tüm tablolar yeni; kiracı + audit + soft delete (standing default). Kullanıcı bilgisi AbpUsers'tan (Name + Surname).

\n\n

View'lar: Prj_V_ProjectMember (takım + Paket Adedi, Adam/Ay Toplamı = Σ Rate/100, Çalışılan Ay, Toplam Maliyet = Adam/Ay × AvgMonthlyCost); Prj_V_ProjectCostSummary (proje × Planlanan/Gerçek × ResourceType pivot + Adam/Ay); Prj_V_ResourceList; Prj_V_PersonnelManMonth (WorkPackageMonthRate ⨝ UserMonthRate: Aya Düşen Oran = Rate × Aylık Oran/100, Gerçek Birim Maliyet = AvgMonthlyCost, Gerçek Toplam = Birim × Aya Düşen/100); Prj_V_ManMonthGantt (personel satırı + altında iş paketi satırları, Key/ParentKey metin, Start/End = ilk/son oranlı ay, Progress = ort. oran, OAA/TAA/TÇA kolonları); Prj_V_BudgetMonthly (proje × ResourceType × yıl-ay: Planlanan, Gerçek, Oran %).

\n\n

6. Alt form ağacı

\n

App.Prj.Project (Contact ekranı düzeni)

\n\n\n\n\n\n\n\n\n\n\n\n\n
SekmeHedefTabTypeMenüİlişkiEkle/Düzenle/SilYetki yolu
Proje ÖzetiApp.Prj.ProjectSummaryFormMenüsüzId → Id✓/✓/–App.Prj › App.Prj.Project › ProjectSummary
DestekApp.Prj.ProjectSupportFormMenüsüzId → Id✓/✓/–… › App.Prj.Project › ProjectSupport
İhtiyaçlarApp.Prj.ProjectNeedsFormMenüsüzId → Id✓/✓/–… › ProjectNeeds
FaaliyetlerApp.Prj.ProjectActivitiesFormMenüsüzId → Id✓/✓/–… › ProjectActivities
Yenilikçi YönüApp.Prj.ProjectInnovationFormMenüsüzId → Id✓/✓/–… › ProjectInnovation
Çıktı ve FaydalarıApp.Prj.ProjectOutputsFormMenüsüzId → Id✓/✓/–… › ProjectOutputs
TakımApp.Prj.ProjectMemberListMenüsüzId → ProjectId✓/✓/✓… › ProjectMember
İş PaketleriApp.Prj.WorkPackageListMenülüId → ProjectId✓/✓/✓kendi dalı
Adam/Ay ve Detaylı Maliyet RaporuApp.Prj.ProjectCostSummaryListMenüsüzId → ProjectId–/–/–… › ProjectCostSummary
GünceApp.Prj.DiaryListMenülüId → ProjectId✓/✓/✓kendi dalı
\n

App.Prj.WorkPackage

\n\n\n\n\n\n\n
SekmeHedefTabTypeMenüİlişkiEkle/Düzenle/SilYetki yolu
PersonelApp.Prj.WorkPackageMemberListMenüsüzId → WorkPackageId✓/✓/✓App.Prj › App.Prj.WorkPackage › WorkPackageMember
Adam/AyApp.Prj.WorkPackageMonthRateListMenüsüzId → WorkPackageId✓/✓/✓… › WorkPackageMonthRate
Planlanan KaynaklarApp.Prj.WorkPackagePlannedListMenüsüzId → WorkPackageId✓/✓/✓… › WorkPackagePlanned
Gerçekleşen MasraflarApp.Prj.WorkPackageActualListMenüsüzId → WorkPackageId✓/✓/✓… › WorkPackageActual
\n\n

7. Etkilenen kısımlar

\n\n\n

8. Görünümler ve davranış

\n\n\n

9. Kararlar

\n\n\n

10. Üretim planı

\n
    \n
  1. create_table: Prj_T_Tag
  2. \n
  3. create_table: Prj_T_ProjectRole
  4. \n
  5. create_table: Prj_T_UserMonthRate
  6. \n
  7. create_table: Prj_T_Project
  8. \n
  9. create_table: Prj_T_ProjectMember
  10. \n
  11. create_table: Prj_T_WorkPackage
  12. \n
  13. create_table: Prj_T_WorkPackageMember
  14. \n
  15. create_table: Prj_T_WorkPackageMonthRate
  16. \n
  17. create_table: Prj_T_WorkPackageResource
  18. \n
  19. create_table: Prj_T_Diary
  20. \n
  21. save_sql_object: Prj_V_ProjectMember
  22. \n
  23. save_sql_object: Prj_V_ProjectCostSummary
  24. \n
  25. save_sql_object: Prj_V_ResourceList
  26. \n
  27. save_sql_object: Prj_V_PersonnelManMonth
  28. \n
  29. save_sql_object: Prj_V_ManMonthGantt
  30. \n
  31. save_sql_object: Prj_V_BudgetMonthly
  32. \n
  33. deploy_wizard: Tag.json
  34. \n
  35. deploy_wizard: ProjectRole.json
  36. \n
  37. deploy_wizard: UserMonthRate.json
  38. \n
  39. deploy_wizard: WorkPackageMember.json
  40. \n
  41. deploy_wizard: WorkPackageMonthRate.json
  42. \n
  43. deploy_wizard: WorkPackagePlanned.json
  44. \n
  45. deploy_wizard: WorkPackageActual.json
  46. \n
  47. deploy_wizard: WorkPackage.json
  48. \n
  49. deploy_wizard: Diary.json
  50. \n
  51. deploy_wizard: ProjectSummary.json
  52. \n
  53. deploy_wizard: ProjectSupport.json
  54. \n
  55. deploy_wizard: ProjectNeeds.json
  56. \n
  57. deploy_wizard: ProjectActivities.json
  58. \n
  59. deploy_wizard: ProjectInnovation.json
  60. \n
  61. deploy_wizard: ProjectOutputs.json
  62. \n
  63. deploy_wizard: ProjectMember.json
  64. \n
  65. deploy_wizard: ProjectCostSummary.json
  66. \n
  67. deploy_wizard: Project.json
  68. \n
  69. deploy_wizard: ManMonth.json
  70. \n
  71. deploy_wizard: ResourceList.json
  72. \n
  73. deploy_wizard: PersonnelManMonth.json
  74. \n
  75. deploy_wizard: BudgetReport.json
  76. \n
\n\n

11. Üretime hazır

\n

Evet

MCP

\n

Üretilenler: 10 tablo (Prj_T_*), 6 view (Prj_V_*; SQL Server + PostgreSQL), 22 wizard. Menü: Proje (App.Prj) › Tanımlamalar (Etiketler, Görevler, Aylık Adam/Ay Oranları) ve Projeler, İş Paketleri, Adam/Ay Oranları, Günce Listesi, Kaynak Listesi, Personel Adam/Ay Oranları, Proje Bütçe Raporu. İzin grubu App.Prj, ModuleId Prj.

\n

Demo veri: 17 etiket, 67 görev. Aylık Adam/Ay demo satırları eklenmedi (görseldeki personel AbpUsers'ta yok).

\n

Varsayımlar / sapmalar:

\n\n

DB Migrate bekleyen wizard'lar: 22 wizard'ın tamamı (isPending). Migrate'ten sonra ekranlar, menü, yetkiler ve demo veri kurulur.

" diff --git a/configs/seeds/data/App.Inventory.Attribute.json b/configs/seeds/data/App.Inventory.Attribute.json index 702a44f0..840aacc1 100644 --- a/configs/seeds/data/App.Inventory.Attribute.json +++ b/configs/seeds/data/App.Inventory.Attribute.json @@ -5,21 +5,21 @@ "Order": 0, "Rows": [ { - "Name": "renk", + "Name": "Renk", "DisplayType": "Radio", "VariantCreation": "Always", "IsActive": true, "Id": "03475830-5dac-8eda-492e-3a2429e0b845" }, { - "Name": "malzeme", + "Name": "Malzeme", "DisplayType": "Radio", "VariantCreation": "Always", "IsActive": true, "Id": "951b3f94-cf17-5881-d58d-3a2429e0b845" }, { - "Name": "boyut", + "Name": "Boyut", "DisplayType": "Radio", "VariantCreation": "Always", "IsActive": true, diff --git a/configs/seeds/data/App.Languages.LanguageText.json b/configs/seeds/data/App.Languages.LanguageText.json index 8567cbe3..1d9854d5 100644 --- a/configs/seeds/data/App.Languages.LanguageText.json +++ b/configs/seeds/data/App.Languages.LanguageText.json @@ -87684,7 +87684,7 @@ "CultureName": "tr", "ResourceName": "Platform", "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." + "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", diff --git a/configs/seeds/data/App.Production.WorkCenter.json b/configs/seeds/data/App.Production.WorkCenter.json index 4a03bc5c..cca43a36 100644 --- a/configs/seeds/data/App.Production.WorkCenter.json +++ b/configs/seeds/data/App.Production.WorkCenter.json @@ -5,7 +5,7 @@ "Order": 0, "Rows": [ { - "Name": "ram makinası", + "Name": "Ram Makinası", "Code": "RAM-01", "WeeklyWorkingHours": 40, "IsActive": true, diff --git a/configs/seeds/docs/modules/App.Inventory.md b/configs/seeds/docs/modules/App.Inventory.md index 0d4600dc..67f343e3 100644 --- a/configs/seeds/docs/modules/App.Inventory.md +++ b/configs/seeds/docs/modules/App.Inventory.md @@ -138,6 +138,7 @@ Dış entegrasyon yok. Reçete operasyonları iş merkezi ve operasyonu Üretim | Kapsam | Kiracı | | Alt formlar | `App.Inventory.AttributeValue` (Id → AttributeId) | | Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Passive` | +| Form varsayılanları | IsActive=true | | Veri aynası | `data/App.Inventory.Attribute.json` | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | @@ -161,7 +162,7 @@ Dış entegrasyon yok. Reçete operasyonları iş merkezi ve operasyonu Üretim | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | -| Alt formlar | `App.Inventory.ProductGeneral` (Id → Id), `App.Inventory.ProductAttributeLine` (Id → ProductId), `App.Inventory.ProductVariant` (Id → ProductId), `App.Inventory.ProductSupplier` (Id → ProductId), `App.Inventory.ProductStock` (Id → Id), `App.Inventory.ProductAccounting` (Id → Id), `App.Inventory.Bom` (Id → ProductId) | +| Alt formlar | `App.Inventory.ProductGeneral` (Id → Id), `App.Inventory.ProductAttributeLine` (Id → ProductId), `App.Inventory.ProductSupplier` (Id → ProductId), `App.Inventory.ProductStock` (Id → Id), `App.Inventory.ProductAccounting` (Id → Id), `App.Inventory.Bom` (Id → ProductId) | | Widget'lar | `App.Widget.Total`, `App.Widget.Saleable`, `App.Widget.Purchasable`, `App.Widget.Service` | | Form varsayılanları | IsActive=true, IsFavorite=false, CanBeSold=true, CanBeExpensed=false, CanBePurchased=false, IsFavorite=false, UomId=Adet, PurchaseUomId=Adet, SalesPrice=0, Cost=0, TrackInventory=true, TrackingMethod=Quantity, ProductType=Wares | | Veri aynası | `data/App.Inventory.Product.json` | @@ -199,10 +200,11 @@ Dış entegrasyon yok. Reçete operasyonları iş merkezi ve operasyonu Üretim | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | | Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | | Kapsam | Kiracı | +| Form varsayılanları | IsActive=true | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | -| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | +| `ProductId` | Ürün | dxSelectBox | | ✓ | sorgu: Inv_T_Product | | `InternalReference` | İç Referans | dxTextBox | | ✓ | | | `ProductName` | Adı | dxTextBox | | ✓ | | | `VariantName` | Varyant Değerleri | dxTextBox | | ✓ | | @@ -211,7 +213,6 @@ Dış entegrasyon yok. Reçete operasyonları iş merkezi ve operasyonu Üretim | `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` @@ -250,15 +251,16 @@ Dış entegrasyon yok. Reçete operasyonları iş merkezi ve operasyonu Üretim | 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'` | +| 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, CAST(NULL AS nvarchar(400)) AS ParentName 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(bp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_Bom bp INNER JOIN Inv_T_Product pp ON pp.Id = bp.ProductId WHERE bp.Id = b0.Id) AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c1.Id) AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c2.Id) AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c3.Id) AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(bp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_Bom bp INNER JOIN Inv_T_Product pp ON pp.Id = bp.ProductId WHERE bp.Id = b0.Id) AS nvarchar(400)) 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, CAST('Operasyonlar' AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c1.Id) AS nvarchar(400)) 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, CAST('Operasyonlar' AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c2.Id) AS nvarchar(400)) 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, CAST('Operasyonlar' AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c3.Id) AS nvarchar(400)) 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, CAST('Operasyonlar' AS nvarchar(400)) 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 | | ✓ | | +| `ParentKey` | Üst Düğüm | dxTextBox | | | | +| `ParentName` | Üst Düğüm | dxTextBox | | | | | `Quantity` | Miktar | dxNumberBox | | ✓ | | | `UomName` | Birim | dxTextBox | | ✓ | | | `Cost` | Maliyet | dxNumberBox | | ✓ | | @@ -385,8 +387,8 @@ Dış entegrasyon yok. Reçete operasyonları iş merkezi ve operasyonu Üretim | `PurchaseTaxRate` | Satınalma Vergisi (%) | dxNumberBox | ✓ | ✓ | | | `Barcode` | Barkod | dxTextBox | | ✓ | | | `PurchaseControlPolicy` | Kontrol Kuralı | dxRadioGroup | ✓ | ✓ | liste: Ordered, Received | -| `PurchaseDescription` | Satınalma Açıklaması | dxTextArea | | ✓ | | -| `InternalNotes` | İç Notlar | dxTextArea | | ✓ | | +| `PurchaseDescription` | Satınalma Açıklaması | dxTextBox | | ✓ | | +| `InternalNotes` | İç Notlar | dxTextBox | | ✓ | | #### Nitelik & Varyantlar — `App.Inventory.ProductAttributeLine` @@ -423,6 +425,7 @@ Dış entegrasyon yok. Reçete operasyonları iş merkezi ve operasyonu Üretim | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | +| Form varsayılanları | MinQuantity=0, CurrencyId=TRY, UomId=Adet, Price=0 | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | @@ -459,7 +462,7 @@ Dış entegrasyon yok. Reçete operasyonları iş merkezi ve operasyonu Üretim | `Volume` | Hacim (m³) | dxNumberBox | | ✓ | | | `GtipCode` | GTİP Kodu | dxTextBox | | ✓ | | | `OriginCountryId` | Malların Menşei | dxSelectBox | | ✓ | sorgu: Sas_H_Country | -| `ReceiptNote` | Alım İçin Açıklama | dxTextArea | | ✓ | | +| `ReceiptNote` | Alım İçin Açıklama | dxTextBox | | ✓ | | | `DeliveryNote` | Teslimatlar İçin Açıklama | dxTextArea | | ✓ | | | `InternalTransferNote` | İç Transferler İçin Açıklama | dxTextArea | | ✓ | | diff --git a/configs/seeds/docs/modules/App.Prj.md b/configs/seeds/docs/modules/App.Prj.md index 8cc8e563..fb719e0e 100644 --- a/configs/seeds/docs/modules/App.Prj.md +++ b/configs/seeds/docs/modules/App.Prj.md @@ -801,11 +801,11 @@ Talep, raporun yalnızca ay bazında gösterilmesini istiyor. Çeyrek bazlı top | Geliştirme talebi | Proje Modülü | | Kaynak | `Prj_T_Project` · filtre `"IsDeleted" = 'false'` | | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✗ · düzenle ✓ · sil ✓ · popup | +| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | | Alt formlar | `App.Prj.ProjectSummary` (Id → Id), `App.Prj.ProjectSupport` (Id → Id), `App.Prj.ProjectNeeds` (Id → Id), `App.Prj.ProjectActivities` (Id → Id), `App.Prj.ProjectInnovation` (Id → Id), `App.Prj.ProjectOutputs` (Id → Id), `App.Prj.ProjectMember` (Id → ProjectId), `App.Prj.WorkPackage` (Id → ProjectId), `App.Prj.ProjectCostSummary` (Id → ProjectId), `App.Prj.Diary` (Id → ProjectId) | | Widget'lar | `App.Widget.Total`, `App.Widget.Active`, `App.Widget.Completed`, `App.Widget.TotalBudget` | -| Form varsayılanları | Status=Draft | +| Form varsayılanları | Status=Draft, ProjectNo=ProjeCode1 | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | diff --git a/configs/seeds/wizard/Attribute.json b/configs/seeds/wizard/Attribute.json index 93bfa80d..01751df8 100644 --- a/configs/seeds/wizard/Attribute.json +++ b/configs/seeds/wizard/Attribute.json @@ -141,7 +141,15 @@ "UpdateBeforeCommand": null, "UpdateAfterCommand": null, "UpdateFieldsDefaultValueDto": [], - "FormFieldsDefaultValueDto": [], + "FormFieldsDefaultValueDto": [ + { + "FieldName": "IsActive", + "FieldDbType": 3, + "Value": "true", + "CustomValueType": 1, + "SqlQuery": "" + } + ], "WidgetsDto": [ { "ColGap": 3, @@ -343,7 +351,7 @@ "Title": "App.Inventory.Attribute.Title", "ShowTitle": true, "Width": 800, - "Height": 350, + "Height": 375, "FullScreen": false, "HideOnOutsideClick": true, "ResizeEnabled": true, diff --git a/configs/seeds/wizard/AttributeValue.json b/configs/seeds/wizard/AttributeValue.json index 39268bec..649d646c 100644 --- a/configs/seeds/wizard/AttributeValue.json +++ b/configs/seeds/wizard/AttributeValue.json @@ -839,7 +839,7 @@ "CaptionName": "App.Listform.ListformField.Attribute", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 2, diff --git a/configs/seeds/wizard/Bom.json b/configs/seeds/wizard/Bom.json index 0bb79592..af2fc5ff 100644 --- a/configs/seeds/wizard/Bom.json +++ b/configs/seeds/wizard/Bom.json @@ -383,8 +383,8 @@ "Popup": { "Title": "App.Inventory.Bom.Title", "ShowTitle": true, - "Width": 800, - "Height": 350, + "Width": 700, + "Height": 500, "FullScreen": false, "HideOnOutsideClick": true, "ResizeEnabled": true, @@ -1020,7 +1020,7 @@ "EditOrderNo": 1, "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", - "ColSpan": 1, + "ColSpan": 2, "EditorOptions": "{\"searchEnabled\":true}", "GridBoxOptions": null, "TagBoxOptions": null, diff --git a/configs/seeds/wizard/BomComponent.json b/configs/seeds/wizard/BomComponent.json index e0a274a6..d6ae4395 100644 --- a/configs/seeds/wizard/BomComponent.json +++ b/configs/seeds/wizard/BomComponent.json @@ -346,8 +346,8 @@ "Popup": { "Title": "App.Inventory.BomComponent.Title", "ShowTitle": true, - "Width": 800, - "Height": 350, + "Width": 550, + "Height": 450, "FullScreen": false, "HideOnOutsideClick": true, "ResizeEnabled": true, @@ -787,7 +787,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -824,7 +824,7 @@ "CaptionName": "App.Listform.ListformField.Bom", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 2, @@ -913,7 +913,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -1051,7 +1051,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1177,7 +1177,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1315,7 +1315,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1453,7 +1453,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, @@ -1579,7 +1579,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, @@ -1705,7 +1705,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 6, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/BomOperation.json b/configs/seeds/wizard/BomOperation.json index 88489f71..b0334003 100644 --- a/configs/seeds/wizard/BomOperation.json +++ b/configs/seeds/wizard/BomOperation.json @@ -334,8 +334,8 @@ "Popup": { "Title": "App.Inventory.BomOperation.Title", "ShowTitle": true, - "Width": 800, - "Height": 275, + "Width": 600, + "Height": 400, "FullScreen": false, "HideOnOutsideClick": true, "ResizeEnabled": true, @@ -353,8 +353,8 @@ "Order": 1, "ItemType": "group", "Caption": "", - "ColCount": 2, - "ColSpan": 2 + "ColCount": 1, + "ColSpan": 1 } ], "PermissionDto": { @@ -775,7 +775,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -812,7 +812,7 @@ "CaptionName": "App.Listform.ListformField.Bom", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 2, @@ -901,7 +901,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -1039,7 +1039,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1177,7 +1177,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1315,7 +1315,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1441,7 +1441,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/BomOverview.json b/configs/seeds/wizard/BomOverview.json index 78664eb0..5e0e5dbe 100644 --- a/configs/seeds/wizard/BomOverview.json +++ b/configs/seeds/wizard/BomOverview.json @@ -44,6 +44,12 @@ "En": "Node", "Tr": "Düğüm" }, + { + "FieldName": "Name", + "CaptionName": "App.Listform.ListformField.Product", + "En": "Product", + "Tr": "Ürün" + }, { "FieldName": "ParentKey", "CaptionName": "App.Listform.ListformField.ParentKey", @@ -51,10 +57,10 @@ "Tr": "Üst Düğüm" }, { - "FieldName": "Name", - "CaptionName": "App.Listform.ListformField.Product", - "En": "Product", - "Tr": "Ürün" + "FieldName": "ParentName", + "CaptionName": "App.Listform.ListformField.ParentKey", + "En": "Parent Node", + "Tr": "Üst Düğüm" }, { "FieldName": "Quantity", @@ -108,7 +114,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 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", + "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, CAST(NULL AS nvarchar(400)) AS ParentName 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(bp.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_Bom bp INNER JOIN Inv_T_Product pp ON pp.Id = bp.ProductId WHERE bp.Id = b0.Id) AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c1.Id) AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c2.Id) AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c3.Id) AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(bp.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_Bom bp INNER JOIN Inv_T_Product pp ON pp.Id = bp.ProductId WHERE bp.Id = b0.Id) AS nvarchar(400)) 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, CAST('Operasyonlar' AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c1.Id) AS nvarchar(400)) 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, CAST('Operasyonlar' AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c2.Id) AS nvarchar(400)) 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, CAST('Operasyonlar' AS nvarchar(400)) 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, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c3.Id) AS nvarchar(400)) 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, CAST('Operasyonlar' AS nvarchar(400)) 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, @@ -777,7 +783,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -810,8 +816,8 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "ParentKey", - "CaptionName": "App.Listform.ListformField.ParentKey", + "FieldName": "Name", + "CaptionName": "App.Listform.ListformField.Product", "PlaceHolder": null, "ReadOnly": false, "Visible": true, @@ -903,12 +909,12 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, - "EditOrderNo": null, - "EditGroupOrderNo": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 1, "EditorType2": "dxTextBox", - "ColSpan": 1, + "ColSpan": 2, "EditorOptions": null, "GridBoxOptions": null, "TagBoxOptions": null, @@ -936,11 +942,11 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "Name", - "CaptionName": "App.Listform.ListformField.Product", + "FieldName": "ParentKey", + "CaptionName": "App.Listform.ListformField.ParentKey", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 3, @@ -1020,7 +1026,7 @@ "DefaultValue": null, "DefaultValueType": 0, "PivotSettingsDto": { - "IsPivot": true, + "IsPivot": false, "Expanded": false, "SortOrder": "asc", "Area": "filter", @@ -1029,12 +1035,12 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, - "EditOrderNo": 1, - "EditGroupOrderNo": 1, + "EditOrderNo": null, + "EditGroupOrderNo": null, "EditorType2": "dxTextBox", - "ColSpan": 2, + "ColSpan": 1, "EditorOptions": null, "GridBoxOptions": null, "TagBoxOptions": null, @@ -1062,140 +1068,14 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "Quantity", - "CaptionName": "App.Listform.ListformField.Quantity", + "FieldName": "ParentName", + "CaptionName": "App.Listform.ListformField.ParentKey", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, "ListOrderNo": 4, - "SourceDbType": 7, - "CultureName": "en", - "DataType": "number", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.BomOverview.Create", - "R": "App.Inventory.BomOverview", - "U": "App.Inventory.BomOverview.Update", - "E": true, - "I": true - }, - "CanRead": false, - "CanCreate": false, - "CanUpdate": false, - "CanExport": false, - "DefaultValue": null, - "DefaultValueType": 0, - "PivotSettingsDto": { - "IsPivot": true, - "Expanded": false, - "SortOrder": "asc", - "Area": "filter", - "Format": null, - "SummaryType": null, - "GroupInterval": "", - "WordWrapEnabled": false - }, - "Alignment": null, - "Format": null, - "EditOrderNo": 2, - "EditGroupOrderNo": 1, - "EditorType2": "dxNumberBox", - "ColSpan": 1, - "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2}}", - "GridBoxOptions": null, - "TagBoxOptions": null, - "ImageUploadOptions": null, - "EditorScript": null, - "LastModificationTime": null, - "LastModifierId": null, - "CreationTime": "0001-01-01T00:00:00", - "CreatorId": null, - "Id": "00000000-0000-0000-0000-000000000000" - }, - { - "EditType": null, - "ListFormCode": "App.Inventory.BomOverview", - "RoleId": null, - "UserId": null, - "ColumnJoinTableDto": { - "JoinType": null, - "TableName": null, - "JoinFieldName": null, - "BaseTableJoinFieldName": null, - "SelectFieldName": null, - "FieldNameAlias": null, - "JoinCondition2": "AND", - "JoinFieldName2": null, - "BaseTableJoinFieldName2_OrValue": null - }, - "FieldName": "UomName", - "CaptionName": "App.Listform.ListformField.Uom", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": true, - "IsActive": true, - "Width": 0, - "ListOrderNo": 5, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -1281,10 +1161,10 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, - "EditOrderNo": 3, - "EditGroupOrderNo": 1, + "EditOrderNo": null, + "EditGroupOrderNo": null, "EditorType2": "dxTextBox", "ColSpan": 1, "EditorOptions": null, @@ -1314,14 +1194,14 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "Cost", - "CaptionName": "App.Listform.ListformField.Cost", + "FieldName": "Quantity", + "CaptionName": "App.Listform.ListformField.Quantity", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 6, + "ListOrderNo": 5, "SourceDbType": 7, "CultureName": "en", "DataType": "number", @@ -1407,7 +1287,259 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 1, + "EditorType2": "dxNumberBox", + "ColSpan": 1, + "EditorOptions": "{\"format\":{\"type\":\"fixedPoint\",\"precision\":2}}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Inventory.BomOverview", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "UomName", + "CaptionName": "App.Listform.ListformField.Uom", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 6, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Inventory.BomOverview.Create", + "R": "App.Inventory.BomOverview", + "U": "App.Inventory.BomOverview.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 3, + "EditGroupOrderNo": 1, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": null, + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Inventory.BomOverview", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Cost", + "CaptionName": "App.Listform.ListformField.Cost", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Inventory.BomOverview.Create", + "R": "App.Inventory.BomOverview", + "U": "App.Inventory.BomOverview.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, @@ -1447,7 +1579,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 7, + "ListOrderNo": 8, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -1533,7 +1665,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, @@ -1573,7 +1705,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 8, + "ListOrderNo": 9, "SourceDbType": 11, "CultureName": "en", "DataType": "number", @@ -1659,7 +1791,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 6, "EditGroupOrderNo": 1, @@ -1696,10 +1828,10 @@ "CaptionName": "App.Listform.ListformField.Bom", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, - "ListOrderNo": 9, + "ListOrderNo": 10, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -1785,7 +1917,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -1825,7 +1957,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 10, + "ListOrderNo": 11, "SourceDbType": 3, "CultureName": "en", "DataType": "boolean", @@ -1911,7 +2043,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, diff --git a/configs/seeds/wizard/Product.json b/configs/seeds/wizard/Product.json index e44691f9..4ecc27f5 100644 --- a/configs/seeds/wizard/Product.json +++ b/configs/seeds/wizard/Product.json @@ -601,19 +601,6 @@ } ] }, - { - "TabType": "List", - "TabTitle": "App.Inventory.ProductVariant", - "Code": "App.Inventory.ProductVariant", - "IsRefresh": false, - "Relation": [ - { - "ParentFieldName": "Id", - "DbType": 9, - "ChildFieldName": "ProductId" - } - ] - }, { "TabType": "List", "TabTitle": "App.Inventory.ProductSupplier", diff --git a/configs/seeds/wizard/ProductAttributeLine.json b/configs/seeds/wizard/ProductAttributeLine.json index e30a5818..c5091a8e 100644 --- a/configs/seeds/wizard/ProductAttributeLine.json +++ b/configs/seeds/wizard/ProductAttributeLine.json @@ -322,8 +322,8 @@ "Popup": { "Title": "App.Inventory.ProductAttributeLine.Title", "ShowTitle": true, - "Width": 800, - "Height": 200, + "Width": 500, + "Height": 350, "FullScreen": false, "HideOnOutsideClick": true, "ResizeEnabled": true, @@ -341,8 +341,8 @@ "Order": 1, "ItemType": "group", "Caption": "", - "ColCount": 2, - "ColSpan": 2 + "ColCount": 1, + "ColSpan": 1 } ], "PermissionDto": { @@ -800,7 +800,7 @@ "CaptionName": "App.Listform.ListformField.Product", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 2, diff --git a/configs/seeds/wizard/ProductGeneral.json b/configs/seeds/wizard/ProductGeneral.json index a119a1a5..a61790cf 100644 --- a/configs/seeds/wizard/ProductGeneral.json +++ b/configs/seeds/wizard/ProductGeneral.json @@ -781,7 +781,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -919,7 +919,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1057,7 +1057,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1183,7 +1183,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1321,7 +1321,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, @@ -1447,11 +1447,11 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, - "EditorType2": "dxTextArea", + "EditorType2": "dxTextBox", "ColSpan": 2, "EditorOptions": null, "GridBoxOptions": null, @@ -1573,11 +1573,11 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 6, "EditGroupOrderNo": 1, - "EditorType2": "dxTextArea", + "EditorType2": "dxTextBox", "ColSpan": 2, "EditorOptions": null, "GridBoxOptions": null, diff --git a/configs/seeds/wizard/ProductStock.json b/configs/seeds/wizard/ProductStock.json index 544e76f3..dfb2c242 100644 --- a/configs/seeds/wizard/ProductStock.json +++ b/configs/seeds/wizard/ProductStock.json @@ -805,7 +805,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -931,7 +931,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1057,7 +1057,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1183,7 +1183,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1309,7 +1309,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, @@ -1435,7 +1435,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, @@ -1561,7 +1561,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 6, "EditGroupOrderNo": 1, @@ -1687,7 +1687,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 7, "EditGroupOrderNo": 1, @@ -1813,11 +1813,11 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 8, "EditGroupOrderNo": 1, - "EditorType2": "dxTextArea", + "EditorType2": "dxTextBox", "ColSpan": 1, "EditorOptions": null, "GridBoxOptions": null, @@ -1939,7 +1939,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 9, "EditGroupOrderNo": 1, @@ -2065,7 +2065,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 10, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/ProductSupplier.json b/configs/seeds/wizard/ProductSupplier.json index 208b73a4..a688558a 100644 --- a/configs/seeds/wizard/ProductSupplier.json +++ b/configs/seeds/wizard/ProductSupplier.json @@ -166,7 +166,36 @@ "UpdateBeforeCommand": null, "UpdateAfterCommand": null, "UpdateFieldsDefaultValueDto": [], - "FormFieldsDefaultValueDto": [], + "FormFieldsDefaultValueDto": [ + { + "FieldName": "MinQuantity", + "FieldDbType": 7, + "Value": "0", + "CustomValueType": 1, + "SqlQuery": "" + }, + { + "FieldName": "CurrencyId", + "FieldDbType": 16, + "Value": "TRY", + "CustomValueType": 1, + "SqlQuery": "" + }, + { + "FieldName": "UomId", + "FieldDbType": 16, + "Value": "Adet", + "CustomValueType": 1, + "SqlQuery": "" + }, + { + "FieldName": "Price", + "FieldDbType": 7, + "Value": "0", + "CustomValueType": 1, + "SqlQuery": "" + } + ], "WidgetsDto": [], "ExtraFilterEditDto": [], "ListFormCode": "App.Inventory.ProductSupplier", @@ -353,7 +382,7 @@ "Title": "App.Inventory.ProductSupplier.Title", "ShowTitle": true, "Width": 800, - "Height": 425, + "Height": 450, "FullScreen": false, "HideOnOutsideClick": true, "ResizeEnabled": true, @@ -793,7 +822,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -830,7 +859,7 @@ "CaptionName": "App.Listform.ListformField.Product", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 2, @@ -919,7 +948,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, @@ -1057,7 +1086,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 1, "EditGroupOrderNo": 1, @@ -1183,7 +1212,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 2, "EditGroupOrderNo": 1, @@ -1321,7 +1350,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 3, "EditGroupOrderNo": 1, @@ -1447,7 +1476,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 4, "EditGroupOrderNo": 1, @@ -1585,7 +1614,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 5, "EditGroupOrderNo": 1, @@ -1711,7 +1740,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 6, "EditGroupOrderNo": 1, @@ -1837,7 +1866,7 @@ "GroupInterval": "", "WordWrapEnabled": false }, - "Alignment": null, + "Alignment": "left", "Format": null, "EditOrderNo": 7, "EditGroupOrderNo": 1, diff --git a/configs/seeds/wizard/ProductVariant.json b/configs/seeds/wizard/ProductVariant.json index 7f074ee3..d1005ef9 100644 --- a/configs/seeds/wizard/ProductVariant.json +++ b/configs/seeds/wizard/ProductVariant.json @@ -97,12 +97,6 @@ "CaptionName": "App.Listform.ListformField.IsActive", "En": "Active", "Tr": "Aktif" - }, - { - "FieldName": "IsDeleted", - "CaptionName": "App.Listform.ListformField.IsDeleted", - "En": "Deleted", - "Tr": "Silindi" } ] } @@ -156,7 +150,15 @@ "UpdateBeforeCommand": null, "UpdateAfterCommand": null, "UpdateFieldsDefaultValueDto": [], - "FormFieldsDefaultValueDto": [], + "FormFieldsDefaultValueDto": [ + { + "FieldName": "IsActive", + "FieldDbType": 3, + "Value": "true", + "CustomValueType": 1, + "SqlQuery": "" + } + ], "WidgetsDto": [], "ExtraFilterEditDto": [], "ListFormCode": "App.Inventory.ProductVariant", @@ -911,8 +913,8 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": null, - "EditGroupOrderNo": null, + "EditOrderNo": 1, + "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", "ColSpan": 1, "EditorOptions": null, @@ -1037,7 +1039,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 1, + "EditOrderNo": 2, "EditGroupOrderNo": 1, "EditorType2": "dxTextBox", "ColSpan": 1, @@ -1163,7 +1165,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 2, + "EditOrderNo": 3, "EditGroupOrderNo": 1, "EditorType2": "dxTextBox", "ColSpan": 1, @@ -1289,7 +1291,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 3, + "EditOrderNo": 4, "EditGroupOrderNo": 1, "EditorType2": "dxTextBox", "ColSpan": 2, @@ -1415,7 +1417,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 4, + "EditOrderNo": 5, "EditGroupOrderNo": 1, "EditorType2": "dxNumberBox", "ColSpan": 1, @@ -1541,7 +1543,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 5, + "EditOrderNo": 6, "EditGroupOrderNo": 1, "EditorType2": "dxNumberBox", "ColSpan": 1, @@ -1667,7 +1669,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 6, + "EditOrderNo": 7, "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", "ColSpan": 1, @@ -1793,7 +1795,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 7, + "EditOrderNo": 8, "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", "ColSpan": 1, @@ -1919,7 +1921,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 8, + "EditOrderNo": 9, "EditGroupOrderNo": 1, "EditorType2": "dxCheckBox", "ColSpan": 1, @@ -1933,132 +1935,6 @@ "CreationTime": "0001-01-01T00:00:00", "CreatorId": null, "Id": "00000000-0000-0000-0000-000000000000" - }, - { - "EditType": null, - "ListFormCode": "App.Inventory.ProductVariant", - "RoleId": null, - "UserId": null, - "ColumnJoinTableDto": { - "JoinType": null, - "TableName": null, - "JoinFieldName": null, - "BaseTableJoinFieldName": null, - "SelectFieldName": null, - "FieldNameAlias": null, - "JoinCondition2": "AND", - "JoinFieldName2": null, - "BaseTableJoinFieldName2_OrValue": null - }, - "FieldName": "IsDeleted", - "CaptionName": "App.Listform.ListformField.IsDeleted", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": true, - "IsActive": true, - "Width": 0, - "ListOrderNo": 11, - "SourceDbType": 3, - "CultureName": "en", - "DataType": "boolean", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.ProductVariant.Create", - "R": "App.Inventory.ProductVariant", - "U": "App.Inventory.ProductVariant.Update", - "E": true, - "I": true - }, - "CanRead": false, - "CanCreate": false, - "CanUpdate": false, - "CanExport": false, - "DefaultValue": null, - "DefaultValueType": 0, - "PivotSettingsDto": { - "IsPivot": true, - "Expanded": false, - "SortOrder": "asc", - "Area": "filter", - "Format": null, - "SummaryType": null, - "GroupInterval": "", - "WordWrapEnabled": false - }, - "Alignment": "left", - "Format": null, - "EditOrderNo": null, - "EditGroupOrderNo": null, - "EditorType2": "dxCheckBox", - "ColSpan": 1, - "EditorOptions": null, - "GridBoxOptions": null, - "TagBoxOptions": null, - "ImageUploadOptions": null, - "EditorScript": null, - "LastModificationTime": null, - "LastModifierId": null, - "CreationTime": "0001-01-01T00:00:00", - "CreatorId": null, - "Id": "00000000-0000-0000-0000-000000000000" } ], "IsDeletedField": true, diff --git a/configs/seeds/wizard/Project.json b/configs/seeds/wizard/Project.json index 1652748c..cabc11e0 100644 --- a/configs/seeds/wizard/Project.json +++ b/configs/seeds/wizard/Project.json @@ -221,6 +221,13 @@ "Value": "Draft", "CustomValueType": 1, "SqlQuery": null + }, + { + "FieldName": "ProjectNo", + "FieldDbType": 16, + "Value": "ProjeCode1", + "CustomValueType": 5, + "SqlQuery": "" } ], "WidgetsDto": [ @@ -412,7 +419,7 @@ "AllowDetail": true, "AllowDeleting": true, "AllowAllDeleting": false, - "AllowAdding": false, + "AllowAdding": true, "AllowDuplicate": false, "UseIcons": false, "ConfirmDelete": true, diff --git a/configs/seeds/wizard/WorkCenter.json b/configs/seeds/wizard/WorkCenter.json index 6b0c8498..fc24d5a7 100644 --- a/configs/seeds/wizard/WorkCenter.json +++ b/configs/seeds/wizard/WorkCenter.json @@ -1188,11 +1188,11 @@ "DataSourceType": 2, "ValueExpr": "Key", "DisplayExpr": "Name", - "CascadeRelationField": null, + "CascadeRelationField": "", "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "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" + "CascadeParentFields": "", + "CascadeEmptyFields": "", + "LookupQuery": "SELECT CAST(Id AS nvarchar(36)) AS [Key], Name AS [Name], Color FROM Prd_T_WorkCenterTag WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [],