("Title")
.IsRequired()
.HasMaxLength(250)
diff --git a/claude.md b/claude.md
index caa9e18a..58975517 100644
--- a/claude.md
+++ b/claude.md
@@ -254,6 +254,13 @@ Bir çelişki varsa sıra: `ai.instructions.md` → `dotnet.instructions.md` →
alanın varsayılanı `FormFieldsDefaultValueDto`'da `CustomValueType: 5`, `Value` = numaratörün `Name`'i.
`@AUTONUMBER`, `MAX + 1` sorgusu ya da SQL ile numara üretilmez (boşluksuz numara açıkça istenmedikçe).
Ayrıntı: `lowcode.instructions.md` §4.3.5.2.
+24. **İş akışlı liste** → tablo, tasarımcının Workflow şablonundaki dört kolonla kurulur ve `WorkflowDto`
+ yalnız bunlara bağlanır: `ApprovalUserName` nvarchar(256), `ApprovalStatus` nvarchar(50),
+ `ApprovalDate` datetime, `ApprovalDescription` nvarchar(200) (PG: varchar/timestamp). Ayrı durum
+ kolonu (`Status`), Guid onaycı kolonu (`ApproverId`) ve red nedeni kolonu açılmaz: durum akışın
+ düğüm başlığıdır, red nedeni onay düğümünün `RejectReason` listesinden seçilip açıklamaya yazılır.
+ Bu dört alan popup düzenleme formunda yer almaz (akış yazar), listede kolon olarak görünür.
+ Ayrıntı: `lowcode.instructions.md` §4.7.
### Cross-cutting: touching one thing means touching these too
@@ -580,7 +587,7 @@ Bir çelişki varsa sıra: `ai.instructions.md` → `dotnet.instructions.md` →
`Abp.Identity.Permission{Groups,s}.json`; platformun kendi menü/yetki kayıtları da diğer liste
verisiyle aynı mekanizmadan (`ListFormSeedDataApplier`) geçer, ayrı bir seeder yoktur. `Order`
alanı bağımlılık sırasını kurar: route → modül → menü, yetki grubu → yetki, ülke grubu → ülke →
- şehir → ilçe (`App.Definitions.{CountryGroup,Country,City,District}.json`), bildirim tipi → kuralı
+ şehir → ilçe (`App.Definitions.{CountryGroup,Country,City,District}.json`), departman → onaycı (`App.Hr.Department` → `App.Definitions.Approver`), bildirim tipi → kuralı
(`App.Notifications.Notification{Types,Rules}.json`). Para birimi, hitap, AI bot
(`App.Definitions.{Currency,ContactTitle,AiBot}.json`), ayar tanımları (`App.SettingDefinitions.json`)
ve zamanlanmış işler (`App.BackgroundWorkers.RecurringJobs.json`), dil → metin
diff --git a/configs/seeds/data/App.Definitions.Approver.json b/configs/seeds/data/App.Definitions.Approver.json
index 0e4afe85..a27b4e28 100644
--- a/configs/seeds/data/App.Definitions.Approver.json
+++ b/configs/seeds/data/App.Definitions.Approver.json
@@ -2,20 +2,13 @@
"ListFormCode": "App.Definitions.Approver",
"KeyFieldName": "Id",
"GeneratedAt": "2026-10-09T18:22:21.5830178Z",
- "Order": 0,
+ "Order": 11,
"Rows": [
- {
- "Id": "4f91635b-6fa1-4547-b687-2f0c0e188a67",
- "DepartmentId": "8f14e45f-ea2d-4d9f-9f1d-1a2b3c4d5e6f",
- "ApprovalArea": "Purchase",
- "ApproverUserId": "77dc76f8-c567-974c-4bc6-3a2433f9216e",
- "IsActive": true
- },
{
"Id": "db014b58-ec8b-4a65-b406-078f66323b7c",
"DepartmentId": "8f14e45f-ea2d-4d9f-9f1d-1a2b3c4d5e6f",
"ApprovalArea": "Purchase",
- "ApproverUserId": "e065080e-be54-c62c-a272-3a243467aa16",
+ "ApproverUserId": "0b221f19-f587-b053-d903-3a24394b182b",
"IsActive": true
}
]
diff --git a/configs/seeds/data/App.DevRequests/53294e77-a4fb-45e4-a80e-acf07b5d75be.json b/configs/seeds/data/App.DevRequests/53294e77-a4fb-45e4-a80e-acf07b5d75be.json
index cb0ea4fe..c1a2749a 100644
--- a/configs/seeds/data/App.DevRequests/53294e77-a4fb-45e4-a80e-acf07b5d75be.json
+++ b/configs/seeds/data/App.DevRequests/53294e77-a4fb-45e4-a80e-acf07b5d75be.json
@@ -10,8 +10,8 @@
"UserName": "system@sozsoft.com",
"RequestDate": null,
"Status": "Testing",
- "Title": "Satınalma -> Satınalma Talepleri",
- "Description": "Satınalma Talepleri : Satınalma yapılması için departmantların iç ve dış olmak üzere talep ettikleri ürünlerin kaydıdır. Talep eden, Talep Eden Departman, Mal Alımı olduğu zaman konulacak Depo ve Konum bilgisi ve Talep Tarihi bilgilerinden sonra Ürün ve talep edilen miktar bilgisi girilmeli. Ürün tanımında yer alan Birim bilgisi yine sistemle entegre şekilde gelmektedir. Termin Tarihi ürünün ne zaman ihtiyaç olduğu ve Talep Nedeni olarak ne amaçla istediği belirtilmelidir. Yine bu kaydın üst kısmında Taslak, Departman Onayı, Satınalma Onayı, Onaylandı, İşlemde, Tamamlandı gibi durumları da onay mekanizması Workflow gibi bir yöntemle yönetmeliyiz. Talepten sonra hemen talep edenin Departman Onaycısı onaylayacak bir liste üzerinden görmeli ve onaylamalı. Bu kişi Adm_T_Approver entity içerisindeki Onay Yeri : Satınalma ve Departman bazında gösterilecek) Sonrasında kayıt Satınalma departmanına düşmeli ondan sonra bu kayıt Satınalma Sorumlusu kabul etmeli ve Satınalma ile ilgili teklif toplama süreci başlamalı.
Taleplerim, Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Planlama Bekleyenler, Tüm Talepler listesinden oluşmalı.
Red Nedenleri : Bazı Satınalma talepleri hem departman onaycısı hemde satınalma tarafından reddedilebilir. Reddetme sebepleri aşağıadki gibidir. Bu liste Satınalma -> Tanımlamalar menüsüne yerleştirilmelidir.
",
+ "Title": "Satınalma -> Malzeme Talepleri",
+ "Description": "Malzeme Talepleri : Satınalma yapılması için departmantların iç ve dış olmak üzere talep ettikleri ürünlerin kaydıdır. Talep eden, Talep Eden Departman, Mal Alımı olduğu zaman konulacak Depo ve Konum bilgisi ve Talep Tarihi bilgilerinden sonra Ürün ve talep edilen miktar bilgisi girilmeli. Ürün tanımında yer alan Birim bilgisi yine sistemle entegre şekilde gelmektedir. Termin Tarihi ürünün ne zaman ihtiyaç olduğu ve Talep Nedeni olarak ne amaçla istediği belirtilmelidir. Yine bu kaydın üst kısmında Taslak, Departman Onayı, Satınalma Onayı, Onaylandı, İşlemde, Tamamlandı gibi durumları da onay mekanizması Workflow gibi bir yöntemle yönetmeliyiz. Talepten sonra hemen talep edenin Departman Onaycısı onaylayacak bir liste üzerinden görmeli ve onaylamalı. Bu kişi Adm_T_Approver entity içerisindeki Onay Yeri : Satınalma ve Departman bazında gösterilecek) Sonrasında kayıt Satınalma departmanına düşmeli ondan sonra bu kayıt Satınalma Sorumlusu kabul etmeli ve Satınalma ile ilgili teklif toplama süreci başlamalı.
Taleplerim, Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Planlama Bekleyenler, Tüm Talepler listesinden oluşmalı.
Red Nedenleri : Bazı Satınalma talepleri hem departman onaycısı hemde satınalma tarafından reddedilebilir. Reddetme sebepleri aşağıadki gibidir. Bu liste Satınalma -> Tanımlamalar menüsüne yerleştirilmelidir.
",
"DueDate": "2026-10-06T21:01:00",
"Tags": "PO",
"Assignees": "system@sozsoft.com",
@@ -20,7 +20,7 @@
"SortOrder": 0,
"Timesheets": "[{\"id\":\"746e8bc8-6246-5c53-2a75-3a24332eaef1\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_T_RejectReason tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"4d4ea437-e4fb-2542-a53a-3a24332ed605\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_T_MaterialRequest tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"c0e3a5b2-d85a-4813-343c-3a24332eec78\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_T_MaterialRequestLine tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"2922d002-6d30-3a07-7a51-3a2433302610\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Definitions.Sequence ekran\\u0131na sat\\u0131r eklendi\",\"duration\":0.0167},{\"id\":\"980b02af-79bd-aaea-2e64-3a243330a1a5\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_P_MaterialRequestAfterSave SQL nesnesi kaydedildi\",\"duration\":0.0167},{\"id\":\"40f8aa4e-18ef-0e78-7f2d-3a2433310e09\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_P_MaterialRequestAfterSave SQL nesnesi kaydedildi\",\"duration\":0.0167},{\"id\":\"ffd1898f-6e00-6835-55cc-3a243331dc2c\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Adm_Approver.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"dc78ece5-0050-4749-7af1-3a2433326e07\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Adm_Approver.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"62e616c5-12b2-8803-4114-3a243332d2da\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_RejectReason.json wizard\\u0027\\u0131 deploy edildi (5 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"13a7f703-538b-a85d-9ee5-3a2433334bd2\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_T_MaterialRequestItem tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"b5e54d3a-6d12-009d-94a4-3a243333accc\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_P_MaterialRequestAfterSave SQL nesnesi kaydedildi\",\"duration\":0.0167},{\"id\":\"2c98a5ae-ccd7-8df9-3305-3a2433346916\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_MaterialRequestLine.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"2aa54ca5-5ca4-f039-a14e-3a243336492d\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_MyMaterialRequest.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0333},{\"id\":\"8aa70c93-93b9-0d5d-cf4f-3a2433372a47\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_MaterialRequestDeptApproval.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"ca3b6c15-8aa2-deb4-df27-3a2433380491\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_MaterialRequestPurchaseApproval.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"215c456f-2290-ecaf-be55-3a243338d23f\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_MaterialRequestPlanning.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"fd28ec5d-5402-9b18-d830-3a243339ec92\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Prc_MaterialRequest.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"e504030b-7f9d-3f4c-c6e8-3a24333a8db8\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Prc mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"276aa28b-7210-616a-a412-3a24333aa710\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"14 tamamlanm\\u0131\\u015F alt g\\u00F6rev eklendi\",\"duration\":0.0167},{\"id\":\"24b186d3-397e-9eec-a86b-3a24333adcfa\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Analize \\u00FCretim notu eklendi\",\"duration\":0.0167}]",
"SubTasks": "[{\"id\":\"834d9315-9266-2050-6954-3a24333aa6be\",\"title\":\"create_table: Prc_T_RejectReason\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"e5ffb0e9-9c69-4c53-b1d6-3a24333aa6be\",\"title\":\"create_table: Prc_T_MaterialRequest\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"f11f6c49-bfdb-a5fb-7d2c-3a24333aa6be\",\"title\":\"create_table: Prc_T_MaterialRequestItem\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"e4509378-28d6-80f6-7948-3a24333aa6be\",\"title\":\"save_sql_object: Prc_P_MaterialRequestAfterSave\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"a3053a8c-3eae-cf4d-11ad-3a24333aa6be\",\"title\":\"deploy_wizard: Adm_Approver.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"708f3732-6afd-913e-667d-3a24333aa6be\",\"title\":\"deploy_wizard: Prc_RejectReason.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"81e8f785-94a1-b919-12a9-3a24333aa6be\",\"title\":\"insert_row: App.Definitions.Sequence \\u2014 MaterialRequest\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"c637a664-1206-b91e-f0e5-3a24333aa6be\",\"title\":\"deploy_wizard: Prc_MaterialRequestLine.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"fad3ffa4-b62b-9d35-0796-3a24333aa6be\",\"title\":\"deploy_wizard: Prc_MyMaterialRequest.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"44b18a01-7267-e5e1-9ac4-3a24333aa6be\",\"title\":\"deploy_wizard: Prc_MaterialRequestDeptApproval.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"15c20659-f079-944a-90d0-3a24333aa6be\",\"title\":\"deploy_wizard: Prc_MaterialRequestPurchaseApproval.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"cdc5d85b-3cce-6973-7694-3a24333aa6be\",\"title\":\"deploy_wizard: Prc_MaterialRequestPlanning.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"15c9c83c-f96a-0386-b462-3a24333aa6be\",\"title\":\"deploy_wizard: Prc_MaterialRequest.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"54d0d2ad-15bf-8f0b-81c7-3a24333aa6be\",\"title\":\"save_module_doc: App.Prc.MaterialRequests\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true}]",
- "Analysis": "1. Amaç \nDepartmanların iç/dış ihtiyaç duydukları malzemeleri satınalmaya iletmesi, talebin önce departman onaycısı sonra satınalma tarafından onaylanması ve onaylı talebin satınalma sorumlusuna (teklif toplama/planlama) düşmesi. Kullanıcılar: talep eden personel, departman onaycıları (Adm_T_Approver › Onay Yeri = Satınalma), satınalma ekibi.
\n\n2. Görsel analizi \n[image-1] Talep formu (başlık + satır sekmesi). Üstte durum çubuğu: Taslak › Departman Onayı › Satınalma Onayı › Onaylandı › İşlemde › Kısmi Tamamlandı › Tamamlandı. Başlık: belge no (SRO/00001 → bizde MT-YYYY-00001), öncelik yıldızları (0–3), Talep Eden (kullanıcı), Departman, Genel Açıklama, Depo, Konum, Şirket (kiracı — alan açılmaz), Talep Tarihi. Sekme \"Talep Satırları\": Ürün, Miktar, Birim, Karşılama Şekli, Termin Tarihi, Talep Nedeni, Kendi Depomda, Tüm Depolar, Teslim, Planlanacak Miktar, Satınalma Sorumlusu, satır durumu rozeti. Görünen satır demo veri adayı değildir (müşteri ortamına ait ürün kodu).
\n[image-2] Onay / Red Bilgileri sekmesi. İki grup: Departman Onayı (Departman Onaycıları — etiket listesi, Onaylayan, Onay Tarihi, Onay Notu) ve Satınalma Onayı (Onaylayan, Onay Tarihi, Onay Notu). Tümü salt okunur, akış doldurur.
\n[image-3] Red Nedenleri listesi. Basit tanım listesi: Red Nedeni, Aktif, sürükle-sırala tutamacı. Satırlar demo veri: İhtiyaç yok, Miktar uygun değil, Yanlış ürün seçildi, Bütçe uygun değil, Diğer (hepsi aktif).
\n\n3. Çözüm yolu \nWizard List (ComponentKind 0) + menüsüz alt form (satırlar) + Grid Workflow (§10.7 \"onaylı talep formu\" iskeleti). Aynı tablo üzerinde durum filtresiyle ayrılmış beş liste ekranı. Onaycı kullanıcı listeleri kayıt sonrası SQL prosedürüyle (save_sql_object) Adm_T_Approver'dan doldurulur ve akış düğümü @Kolon onaycısıyla okur (İzin Talepleri'ndeki @ManagerUserNames deseni). Serbest yerleşim gerekmediği için custom component yok.
\n\n4. Menü yeri \nSatınalma › Satınalma Talepleri › {5 liste} ; Satınalma › Tanımlamalar › Red Nedenleri
\nSeviye Kod Ad (TR / EN) İkon Durum \nKök App.Prc Satınalma / Purchasing — Var \nAra App.Prc.Definitions Tanımlamalar / Definitions — Var \nEkran App.Prc.RejectReason Red Nedenleri / Rejection Reasons FcCancel Yeni \nAra App.Prc.MaterialRequests Satınalma Talepleri / Material Requests FcList Yeni \nEkran App.Prc.MyMaterialRequest Taleplerim / My Requests FcPortraitMode Yeni \nEkran App.Prc.MaterialRequestDeptApproval Departman Onayı Bekleyenler / Awaiting Department Approval FcApproval Yeni \nEkran App.Prc.MaterialRequestPurchaseApproval Satınalma Onayı Bekleyenler / Awaiting Purchasing Approval FcApproval Yeni \nEkran App.Prc.MaterialRequestPlanning Planlama Bekleyenler / Awaiting Planning FcPlanner Yeni \nEkran App.Prc.MaterialRequest Tüm Talepler / All Requests FcDocument Yeni \n
\nModuleId Prc, izin grubu App.Prc, route /admin/list/{ListFormCode}. Taleplerim talepte menü listesi olarak açıkça istendiği için persona kuralına rağmen menüde durur (girdi).
\nYetki: App.Prc › App.Prc.Definitions (Var) › App.Prc.RejectReason ; App.Prc › App.Prc.MaterialRequests (Yeni) › her liste ; alt form: App.Prc › App.Prc.MaterialRequests › {Liste} › App.Prc.MaterialRequestLine.
\n\n5. Veri modeli \nPrc_T_RejectReason (yeni) — Tanım tablosu: Evet (talep \"Tanımlamalar menüsüne\" diyor, görselde Aktif kolonu). Kiracı + tam audit.
\nKolon Tip Zorunlu Not \nName nvarchar(128) ✓ Red nedeni \nSortOrder int ✓ varsayılan 0; görseldeki sıralama tutamacı \nIsActive bit ✓ DEFAULT 1
\n\nPrc_T_MaterialRequest (yeni) — Tanım tablosu: Hayır (hareket belgesi). Kiracı + tam audit.
\nKolon Tip Zorunlu Not \nRequestNo nvarchar(32) Numaratör (Adm_T_Sequence \"MaterialRequest\", MT-YYYY-00001, yıllık sıfırlama) \nPriority int ✓ 0–3 yıldız, DEFAULT 0 \nRequesterUserId uniqueidentifier ✓ AbpUsers; varsayılan @USERID \nDepartmentId uniqueidentifier ✓ Hr_T_Department; talep edenin AbpUsers.DepartmentId'sinden dolar, değiştirilebilir \nWarehouseId uniqueidentifier ✓ Inv_T_Warehouse \nLocationId uniqueidentifier ✓ Inv_T_Location, depoya göre süzülür \nRequestDate datetime ✓ DEFAULT GETDATE() \nDescription nvarchar(MAX) Genel Açıklama (dxTextArea) \nStatus nvarchar(32) ✓ Draft / DeptApproval / PurchaseApproval / Approved / InProgress / PartiallyDone / Done / Rejected; DEFAULT 'Draft' \nApprovalStatus, ApproverId, ApprovalDate, ApprovalNote nvarchar(32) / uniqueidentifier / datetime / nvarchar(MAX) WorkflowDto alanları \nDeptApproverUserNames nvarchar(MAX) \"|\" ayrılmış, prosedür doldurur; formda \"Departman Onaycıları\" (salt okunur) \nPurchaseApproverUserNames nvarchar(MAX) \"|\" ayrılmış, prosedür doldurur (gizli) \nDeptApprovedBy, DeptApprovalDate, DeptApprovalNote uniqueidentifier / datetime / nvarchar(MAX) Görsel 2 sol grup \nPurchaseApprovedBy, PurchaseApprovalDate, PurchaseApprovalNote uniqueidentifier / datetime / nvarchar(MAX) Görsel 2 sağ grup \nRejectReasonId uniqueidentifier Prc_T_RejectReason (aktifler)
\n\nPrc_T_MaterialRequestLine (yeni) — Tanım tablosu: Hayır . Kiracı + tam audit; FK MaterialRequestId → Prc_T_MaterialRequest (Cascade).
\nKolon Tip Zorunlu Not \nMaterialRequestId uniqueidentifier ✓ üst kayıt \nProductId uniqueidentifier ✓ Inv_T_Product, yalnız IsActive=1 ve CanBePurchased=1; görüntü \"[InternalReference] Name\" \nQuantity decimal(18,4) ✓ > 0 \nUomId uniqueidentifier ✓ Adm_T_Uom; üründen COALESCE(PurchaseUomId, UomId) ile dolar, salt okunur \nFulfillmentMethod nvarchar(16) ✓ Purchase (Satınalma) / Transfer (Depodan Transfer); DEFAULT 'Purchase' \nDueDate date ✓ Termin; talep tarihinden önce olamaz \nRequestReason nvarchar(256) ✓ Talep Nedeni \nDeliveredQuantity decimal(18,4) ✓ Teslim, DEFAULT 0, salt okunur \nPlannedQuantity decimal(18,4) Planlanacak Miktar; satır eklenince Quantity ile dolar, satınalma düzenler \nPurchaseResponsibleUserId uniqueidentifier AbpUsers; Satınalma Sorumlusu (planlamada atanır) \nLineStatus nvarchar(16) ✓ Waiting / Planned / Done / Cancelled; DEFAULT 'Waiting'
\nVar olan tablo değişikliği: Adm_T_Approver.ApprovalArea statik listesine PurchaseDesk (Satınalma Masası / Purchasing Desk) seçeneği eklenir (Onaycılar wizard güncellemesi, kolon değişmez).
\n\n6. Alt form ağacı \nSekme Hedef ListFormCode TabType Menü İlişki Ekle / Düzenle / Sil Yetki yolu \nTalep Satırları App.Prc.MaterialRequestLine List Menüsüz Id → MaterialRequestId ✓ / ✓ / ✓ App.Prc › App.Prc.MaterialRequests › {Liste} › App.Prc.MaterialRequestLine
\nOnay / Red Bilgileri ayrı tablo değildir; ana formun ikinci düzenleme grubu (salt okunur alanlar) olarak çizilir. Alt form beş listenin hepsinde aynı ekrandır; ekleme/silme yalnız Status = Draft iken açıktır (alt formun Insert/Delete BeforeCommand'ında üst kayıt durumu kontrolü).
\n\n7. Etkilenen kısımlar \nYeni: 3 tablo, 1 prosedür (Prc_P_MaterialRequestResolveApprovers), 1 tanım ekranı, 1 alt form, 5 liste ekranı, ara menü App.Prc.MaterialRequests ve aynı kodlu ara yetki, her ekranın C/R/U/D/E/I/N yetkileri, dil anahtarları (alanlar, durum ve karşılama şekli statik seçenekleri), Adm_T_Sequence'e \"MaterialRequest\" satırı. Değişen: Onaycılar (App.Definitions.Approver) ApprovalArea seçeneği. İş akışı: iki onay düğümü + talep sahibine Inform (e-posta). Ürün, depo, konum, departman ekranlarına dokunulmaz.
\n\n8. Görünümler ve davranış \nListe filtreleri (aynı tablo, DefaultFilter): Taleplerim = RequesterUserId = @USERID (tüm durumlar; ekle açık); Departman Onayı Bekleyenler = Status = 'DeptApproval' + ApprovalIsFilterUserName; Satınalma Onayı Bekleyenler = Status = 'PurchaseApproval' + ApprovalIsFilterUserName; Planlama Bekleyenler = Status IN ('Approved','InProgress','PartiallyDone'); Tüm Talepler = filtresiz. Onay listelerinde ekleme kapalı.
\nGörünümler: her listede Grid + Card + Pivot + Chart (açılış grid); Tüm Talepler'de ek olarak Todo (kanban) Status kolonuyla, durum sırası görseldeki çubukla aynı. Alt formda widget yok.
\nWidget'lar: Tüm Talepler: Toplam · Departman Onayında · Satınalma Onayında · Onaylandı · Reddedildi. Taleplerim: Taleplerim · Onay Bekleyen · Onaylanan · Reddedilen. Red Nedenleri: Toplam · Aktif · Pasif.
\nİş akışı (WorkflowDto, Taleplerim + iki onay listesi + Tüm Talepler'de aynı grafik): Start → Approval \"Departman Onayı\" (Approver = @DeptApproverUserNames) → onayda Approval \"Satınalma Onayı\" (Approver = @PurchaseApproverUserNames) → onayda Inform (talep sahibi) → End \"Onaylandı\"; her iki ret dalı → Inform → End \"Reddedildi\". ApprovalIsResetWorkflow = true (Taslak'a dönen kayıt düzenlenince akış baştan).
\nDurum geçişleri: Kayıt Draft açılır; satır girildikten sonra toolbar butonu \"Onaya Gönder\" (CommandColumnDto, yalnız Draft ve en az bir satır varken) Status = DeptApproval yapar ve akışı başlatır. Prosedür (UpdateAfterCommand) akış düğümüne göre Status'u DeptApproval → PurchaseApproval → Approved / Rejected olarak senkronlar ve Dept*/Purchase* onay alanlarını ApproverId/ApprovalDate/ApprovalNote'tan kopyalar. Approved sonrası İşlemde / Kısmi Tamamlandı / Tamamlandı, Planlama Bekleyenler'deki satır butonlarıyla elle verilir; satırların tamamı LineStatus = Done olunca Status = Done, bir kısmı Done ise PartiallyDone (aynı prosedür).
\nOnaycı çözümü (prosedür): DeptApproverUserNames = Adm_T_Approver'da DepartmentId = talebin departmanı, ApprovalArea = 'Purchase', IsActive = 1 kullanıcıların UserName'leri; PurchaseApproverUserNames = ApprovalArea = 'PurchaseDesk', IsActive = 1 kullanıcılar. Liste boşsa \"Onaya Gönder\" hata mesajıyla durur (boş onaycı akışı kilitler).
\nRed: Ret notu zorunlu; RejectReasonId onay listelerinde onaycı tarafından düzenlenebilir alan, Rejected durumunda zorunlu (doğrulama prosedürde).
\nEditorScript: RequestDate açılışta bugün; RequesterUserId açılışta @USERID ve DepartmentId kullanıcının departmanı; WarehouseId değişince LocationId temizlenir ve konum lookup'ı depoya süzülür (cascade); ProductId değişince UomId üründen dolar; Quantity değişince PlannedQuantity boşsa Quantity'ye eşitlenir; DueDate < RequestDate ise uyarı ve engel. Status ≠ Draft iken başlık alanları salt okunur.
\n\n9. Kararlar \n\nBelge no biçimi MT-YYYY-00001 (Odoo'daki SRO/ yerine platform numaratörü; İK ekranlarıyla tutarlı). \n\"Şirket\" alanı açılmaz; kiracı kapsamı karşılar. \n(onay) Satınalma onayçısı Adm_T_Approver'a eklenen yeni Onay Yeri PurchaseDesk (Satınalma Masası) satırlarından okunur; departmandan bağımsız, herhangi birinin onayı yeterli. \n(onay) Taslak aşaması için \"Onaya Gönder\" toolbar butonu; buton olmadan akış kayıtta hemen başlar ve Taslak durumu kullanılamaz. \n(onay) Görseldeki \"Kendi Depomda\" ve \"Tüm Depolar\" stok miktarı kolonları üretilmez: uygulamada stok miktarı/hareket tablosu yok (Inv_T_Product yalnız kart bilgisi taşır). Stok modülü gelince sorgu kolonu olarak eklenecek ayrı talep. \n(onay) Karşılama Şekli seçenekleri: Satınalma / Depodan Transfer. \nSatır durumu (rozet) LineStatus ile; başlık durumu satırlardan türetilir. \nGörseldeki \"Transferler\" akıllı butonu ve teklif toplama süreci bu talebin dışında (teklif/sipariş modülü yok); Planlama Bekleyenler listesi o sürecin giriş noktasıdır. \nRed Nedenleri demo verisi görseldeki 5 satır (SortOrder 1–5, aktif). \n \n\n10. Üretim planı \n\ncreate_table: Prc_T_RejectReason \ncreate_table: Prc_T_MaterialRequest \ncreate_table: Prc_T_MaterialRequestLine \nsave_sql_object: Prc_P_MaterialRequestResolveApprovers \ndeploy_wizard: Adm_Approver.json (PurchaseDesk seçeneği, güncelleme) \ndeploy_wizard: Prc_RejectReason.json (seed 5 satır) \ninsert_row: App.Definitions.Sequence — MaterialRequest \ndeploy_wizard: Prc_MaterialRequestLine.json \ndeploy_wizard: Prc_MyMaterialRequest.json \ndeploy_wizard: Prc_MaterialRequestDeptApproval.json \ndeploy_wizard: Prc_MaterialRequestPurchaseApproval.json \ndeploy_wizard: Prc_MaterialRequestPlanning.json \ndeploy_wizard: Prc_MaterialRequest.json \n \n\n11. Üretime hazır \nŞartlı — (onay) etiketli 4 karar: Satınalma onaycısı için PurchaseDesk onay yeri, \"Onaya Gönder\" butonuyla Taslak aşaması, stok miktarı kolonlarının (Kendi Depomda / Tüm Depolar) stok modülüne ertelenmesi, Karşılama Şekli seçenekleri.
MCP \nÜretilenler: tablolar Prc_T_RejectReason, Prc_T_MaterialRequest, Prc_T_MaterialRequestItem; prosedür Prc_P_MaterialRequestAfterSave (SQL Server + PostgreSQL); numaratör MaterialRequest (MT-{yyyy}-00001, yıllık); ekranlar App.Prc.RejectReason (5 demo satır), menüsüz alt form App.Prc.MaterialRequestLine, App.Prc.MyMaterialRequest, App.Prc.MaterialRequestDeptApproval, App.Prc.MaterialRequestPurchaseApproval, App.Prc.MaterialRequestPlanning, App.Prc.MaterialRequest; Onaycılar'a PurchaseDesk (Satınalma Masası) onay yeri; menü Satınalma › Satınalma Talepleri (yeni ara menü/yetki) ve Satınalma › Tanımlamalar › Red Nedenleri; modül dokümanı App.Prc › Satınalma Talepleri.
\nAnalizden sapmalar / varsayımlar:
\n\nSatır tablosu Prc_T_MaterialRequestItem adıyla açıldı: Adm_T_Uom.Id nvarchar olduğu için UomId nvarchar(64) olmalıydı; önce açılan Prc_T_MaterialRequestLine scripti (UomId uniqueidentifier) kullanılmıyor. Migrate'ten önce Wizard Manager / SQL Query Manager'dan bu scripti silmeniz önerilir (onayınız olmadan tablo düşürülmedi). \nPlatform akışı onaylayanı kullanıcı adı (metin) olarak yazıyor; ApproverId uniqueidentifier olduğu için akışa bağlanmadı. Departman/Satınalma onaylayanı, tarihi ve notu prosedürde kaydı son güncelleyen kullanıcıdan ve akışın ApprovalDate/ApprovalNote alanlarından kopyalanır. \nProsedür adı planda Prc_P_MaterialRequestResolveApprovers idi; onaycı çözümü + durum senkronu tek prosedürde: Prc_P_MaterialRequestAfterSave. \n\"Onaya Gönder\" ayrı buton olarak yazılmadı; akışın Start düğümü (platformun Onaya Gönder işlemi) kullanılır. İşlemde / Kısmi Tamamlandı / Tamamlandı satır durumlarından türetilir (ayrı satır butonu yok). Todo (kanban) görünümü eklenmedi. \nOnay listeleri ApprovalStatus (akış düğüm başlığı) ile süzülür; Status kayıt/satır kaydı sonrası prosedürle güncellenir. Akış onayı kayıt güncelleme komutunu tetiklemezse Status ve onaylayan bilgileri bir sonraki kayıtta güncellenir. \nRed nedeni zorunluluğu sunucuda zorlanmadı; alan onay listelerinde düzenlenebilir. \n \nDB Migrate bekleyen wizard'lar: Adm_Approver.json, Prc_RejectReason.json, Prc_MaterialRequestLine.json, Prc_MyMaterialRequest.json, Prc_MaterialRequestDeptApproval.json, Prc_MaterialRequestPurchaseApproval.json, Prc_MaterialRequestPlanning.json, Prc_MaterialRequest.json.
"
+ "Analysis": "1. Amaç \nDepartmanların iç/dış ihtiyaç duydukları malzemeleri satınalmaya iletmesi, talebin önce departman onaycısı sonra satınalma tarafından onaylanması ve onaylı talebin satınalma sorumlusuna (teklif toplama/planlama) düşmesi. Kullanıcılar: talep eden personel, departman onaycıları (Adm_T_Approver › Onay Yeri = Satınalma), satınalma ekibi.
\n\n2. Görsel analizi \n[image-1] Talep formu (başlık + satır sekmesi). Üstte durum çubuğu: Taslak › Departman Onayı › Satınalma Onayı › Onaylandı › İşlemde › Kısmi Tamamlandı › Tamamlandı. Başlık: belge no (SRO/00001 → bizde MT-YYYY-00001), öncelik yıldızları (0–3), Talep Eden (kullanıcı), Departman, Genel Açıklama, Depo, Konum, Şirket (kiracı — alan açılmaz), Talep Tarihi. Sekme \"Talep Satırları\": Ürün, Miktar, Birim, Karşılama Şekli, Termin Tarihi, Talep Nedeni, Kendi Depomda, Tüm Depolar, Teslim, Planlanacak Miktar, Satınalma Sorumlusu, satır durumu rozeti. Görünen satır demo veri adayı değildir (müşteri ortamına ait ürün kodu).
\n[image-2] Onay / Red Bilgileri sekmesi. İki grup: Departman Onayı (Departman Onaycıları — etiket listesi, Onaylayan, Onay Tarihi, Onay Notu) ve Satınalma Onayı (Onaylayan, Onay Tarihi, Onay Notu). Tümü salt okunur, akış doldurur.
\n[image-3] Red Nedenleri listesi. Basit tanım listesi: Red Nedeni, Aktif, sürükle-sırala tutamacı. Satırlar demo veri: İhtiyaç yok, Miktar uygun değil, Yanlış ürün seçildi, Bütçe uygun değil, Diğer (hepsi aktif).
\n\n3. Çözüm yolu \nWizard List (ComponentKind 0) + menüsüz alt form (satırlar) + Grid Workflow (§10.7 \"onaylı talep formu\" iskeleti). Aynı tablo üzerinde durum filtresiyle ayrılmış beş liste ekranı. Onaycı kullanıcı listeleri kayıt sonrası SQL prosedürüyle (save_sql_object) Adm_T_Approver'dan doldurulur ve akış düğümü @Kolon onaycısıyla okur (İzin Talepleri'ndeki @ManagerUserNames deseni). Serbest yerleşim gerekmediği için custom component yok.
\n\n4. Menü yeri \nSatınalma › Malzeme Talepleri › {5 liste} ; Satınalma › Tanımlamalar › Red Nedenleri
\nSeviye Kod Ad (TR / EN) İkon Durum \nKök App.Prc Satınalma / Purchasing — Var \nAra App.Prc.Definitions Tanımlamalar / Definitions — Var \nEkran App.Prc.RejectReason Red Nedenleri / Rejection Reasons FcCancel Yeni \nAra App.Prc.MaterialRequests Malzeme Talepleri / Material Requests FcList Yeni \nEkran App.Prc.MyMaterialRequest Taleplerim / My Requests FcPortraitMode Yeni \nEkran App.Prc.MaterialRequestDeptApproval Departman Onayı Bekleyenler / Awaiting Department Approval FcApproval Yeni \nEkran App.Prc.MaterialRequestPurchaseApproval Satınalma Onayı Bekleyenler / Awaiting Purchasing Approval FcApproval Yeni \nEkran App.Prc.MaterialRequestPlanning Planlama Bekleyenler / Awaiting Planning FcPlanner Yeni \nEkran App.Prc.MaterialRequest Tüm Talepler / All Requests FcDocument Yeni \n
\nModuleId Prc, izin grubu App.Prc, route /admin/list/{ListFormCode}. Taleplerim talepte menü listesi olarak açıkça istendiği için persona kuralına rağmen menüde durur (girdi).
\nYetki: App.Prc › App.Prc.Definitions (Var) › App.Prc.RejectReason ; App.Prc › App.Prc.MaterialRequests (Yeni) › her liste ; alt form: App.Prc › App.Prc.MaterialRequests › {Liste} › App.Prc.MaterialRequestLine.
\n\n5. Veri modeli \nPrc_T_RejectReason (yeni) — Tanım tablosu: Evet (talep \"Tanımlamalar menüsüne\" diyor, görselde Aktif kolonu). Kiracı + tam audit.
\nKolon Tip Zorunlu Not \nName nvarchar(128) ✓ Red nedeni \nSortOrder int ✓ varsayılan 0; görseldeki sıralama tutamacı \nIsActive bit ✓ DEFAULT 1
\n\nPrc_T_MaterialRequest (yeni) — Tanım tablosu: Hayır (hareket belgesi). Kiracı + tam audit.
\nKolon Tip Zorunlu Not \nRequestNo nvarchar(32) Numaratör (Adm_T_Sequence \"MaterialRequest\", MT-YYYY-00001, yıllık sıfırlama) \nPriority int ✓ 0–3 yıldız, DEFAULT 0 \nRequesterUserId uniqueidentifier ✓ AbpUsers; varsayılan @USERID \nDepartmentId uniqueidentifier ✓ Hr_T_Department; talep edenin AbpUsers.DepartmentId'sinden dolar, değiştirilebilir \nWarehouseId uniqueidentifier ✓ Inv_T_Warehouse \nLocationId uniqueidentifier ✓ Inv_T_Location, depoya göre süzülür \nRequestDate datetime ✓ DEFAULT GETDATE() \nDescription nvarchar(MAX) Genel Açıklama (dxTextArea) \nStatus nvarchar(32) ✓ Draft / DeptApproval / PurchaseApproval / Approved / InProgress / PartiallyDone / Done / Rejected; DEFAULT 'Draft' \nApprovalStatus, ApproverId, ApprovalDate, ApprovalNote nvarchar(32) / uniqueidentifier / datetime / nvarchar(MAX) WorkflowDto alanları \nDeptApproverUserNames nvarchar(MAX) \"|\" ayrılmış, prosedür doldurur; formda \"Departman Onaycıları\" (salt okunur) \nPurchaseApproverUserNames nvarchar(MAX) \"|\" ayrılmış, prosedür doldurur (gizli) \nDeptApprovedBy, DeptApprovalDate, DeptApprovalNote uniqueidentifier / datetime / nvarchar(MAX) Görsel 2 sol grup \nPurchaseApprovedBy, PurchaseApprovalDate, PurchaseApprovalNote uniqueidentifier / datetime / nvarchar(MAX) Görsel 2 sağ grup \nRejectReasonId uniqueidentifier Prc_T_RejectReason (aktifler)
\n\nPrc_T_MaterialRequestLine (yeni) — Tanım tablosu: Hayır . Kiracı + tam audit; FK MaterialRequestId → Prc_T_MaterialRequest (Cascade).
\nKolon Tip Zorunlu Not \nMaterialRequestId uniqueidentifier ✓ üst kayıt \nProductId uniqueidentifier ✓ Inv_T_Product, yalnız IsActive=1 ve CanBePurchased=1; görüntü \"[InternalReference] Name\" \nQuantity decimal(18,4) ✓ > 0 \nUomId uniqueidentifier ✓ Adm_T_Uom; üründen COALESCE(PurchaseUomId, UomId) ile dolar, salt okunur \nFulfillmentMethod nvarchar(16) ✓ Purchase (Satınalma) / Transfer (Depodan Transfer); DEFAULT 'Purchase' \nDueDate date ✓ Termin; talep tarihinden önce olamaz \nRequestReason nvarchar(256) ✓ Talep Nedeni \nDeliveredQuantity decimal(18,4) ✓ Teslim, DEFAULT 0, salt okunur \nPlannedQuantity decimal(18,4) Planlanacak Miktar; satır eklenince Quantity ile dolar, satınalma düzenler \nPurchaseResponsibleUserId uniqueidentifier AbpUsers; Satınalma Sorumlusu (planlamada atanır) \nLineStatus nvarchar(16) ✓ Waiting / Planned / Done / Cancelled; DEFAULT 'Waiting'
\nVar olan tablo değişikliği: Adm_T_Approver.ApprovalArea statik listesine PurchaseDesk (Satınalma Masası / Purchasing Desk) seçeneği eklenir (Onaycılar wizard güncellemesi, kolon değişmez).
\n\n6. Alt form ağacı \nSekme Hedef ListFormCode TabType Menü İlişki Ekle / Düzenle / Sil Yetki yolu \nTalep Satırları App.Prc.MaterialRequestLine List Menüsüz Id → MaterialRequestId ✓ / ✓ / ✓ App.Prc › App.Prc.MaterialRequests › {Liste} › App.Prc.MaterialRequestLine
\nOnay / Red Bilgileri ayrı tablo değildir; ana formun ikinci düzenleme grubu (salt okunur alanlar) olarak çizilir. Alt form beş listenin hepsinde aynı ekrandır; ekleme/silme yalnız Status = Draft iken açıktır (alt formun Insert/Delete BeforeCommand'ında üst kayıt durumu kontrolü).
\n\n7. Etkilenen kısımlar \nYeni: 3 tablo, 1 prosedür (Prc_P_MaterialRequestResolveApprovers), 1 tanım ekranı, 1 alt form, 5 liste ekranı, ara menü App.Prc.MaterialRequests ve aynı kodlu ara yetki, her ekranın C/R/U/D/E/I/N yetkileri, dil anahtarları (alanlar, durum ve karşılama şekli statik seçenekleri), Adm_T_Sequence'e \"MaterialRequest\" satırı. Değişen: Onaycılar (App.Definitions.Approver) ApprovalArea seçeneği. İş akışı: iki onay düğümü + talep sahibine Inform (e-posta). Ürün, depo, konum, departman ekranlarına dokunulmaz.
\n\n8. Görünümler ve davranış \nListe filtreleri (aynı tablo, DefaultFilter): Taleplerim = RequesterUserId = @USERID (tüm durumlar; ekle açık); Departman Onayı Bekleyenler = Status = 'DeptApproval' + ApprovalIsFilterUserName; Satınalma Onayı Bekleyenler = Status = 'PurchaseApproval' + ApprovalIsFilterUserName; Planlama Bekleyenler = Status IN ('Approved','InProgress','PartiallyDone'); Tüm Talepler = filtresiz. Onay listelerinde ekleme kapalı.
\nGörünümler: her listede Grid + Card + Pivot + Chart (açılış grid); Tüm Talepler'de ek olarak Todo (kanban) Status kolonuyla, durum sırası görseldeki çubukla aynı. Alt formda widget yok.
\nWidget'lar: Tüm Talepler: Toplam · Departman Onayında · Satınalma Onayında · Onaylandı · Reddedildi. Taleplerim: Taleplerim · Onay Bekleyen · Onaylanan · Reddedilen. Red Nedenleri: Toplam · Aktif · Pasif.
\nİş akışı (WorkflowDto, Taleplerim + iki onay listesi + Tüm Talepler'de aynı grafik): Start → Approval \"Departman Onayı\" (Approver = @DeptApproverUserNames) → onayda Approval \"Satınalma Onayı\" (Approver = @PurchaseApproverUserNames) → onayda Inform (talep sahibi) → End \"Onaylandı\"; her iki ret dalı → Inform → End \"Reddedildi\". ApprovalIsResetWorkflow = true (Taslak'a dönen kayıt düzenlenince akış baştan).
\nDurum geçişleri: Kayıt Draft açılır; satır girildikten sonra toolbar butonu \"Onaya Gönder\" (CommandColumnDto, yalnız Draft ve en az bir satır varken) Status = DeptApproval yapar ve akışı başlatır. Prosedür (UpdateAfterCommand) akış düğümüne göre Status'u DeptApproval → PurchaseApproval → Approved / Rejected olarak senkronlar ve Dept*/Purchase* onay alanlarını ApproverId/ApprovalDate/ApprovalNote'tan kopyalar. Approved sonrası İşlemde / Kısmi Tamamlandı / Tamamlandı, Planlama Bekleyenler'deki satır butonlarıyla elle verilir; satırların tamamı LineStatus = Done olunca Status = Done, bir kısmı Done ise PartiallyDone (aynı prosedür).
\nOnaycı çözümü (prosedür): DeptApproverUserNames = Adm_T_Approver'da DepartmentId = talebin departmanı, ApprovalArea = 'Purchase', IsActive = 1 kullanıcıların UserName'leri; PurchaseApproverUserNames = ApprovalArea = 'PurchaseDesk', IsActive = 1 kullanıcılar. Liste boşsa \"Onaya Gönder\" hata mesajıyla durur (boş onaycı akışı kilitler).
\nRed: Ret notu zorunlu; RejectReasonId onay listelerinde onaycı tarafından düzenlenebilir alan, Rejected durumunda zorunlu (doğrulama prosedürde).
\nEditorScript: RequestDate açılışta bugün; RequesterUserId açılışta @USERID ve DepartmentId kullanıcının departmanı; WarehouseId değişince LocationId temizlenir ve konum lookup'ı depoya süzülür (cascade); ProductId değişince UomId üründen dolar; Quantity değişince PlannedQuantity boşsa Quantity'ye eşitlenir; DueDate < RequestDate ise uyarı ve engel. Status ≠ Draft iken başlık alanları salt okunur.
\n\n9. Kararlar \n\nBelge no biçimi MT-YYYY-00001 (Odoo'daki SRO/ yerine platform numaratörü; İK ekranlarıyla tutarlı). \n\"Şirket\" alanı açılmaz; kiracı kapsamı karşılar. \n(onay) Satınalma onayçısı Adm_T_Approver'a eklenen yeni Onay Yeri PurchaseDesk (Satınalma Masası) satırlarından okunur; departmandan bağımsız, herhangi birinin onayı yeterli. \n(onay) Taslak aşaması için \"Onaya Gönder\" toolbar butonu; buton olmadan akış kayıtta hemen başlar ve Taslak durumu kullanılamaz. \n(onay) Görseldeki \"Kendi Depomda\" ve \"Tüm Depolar\" stok miktarı kolonları üretilmez: uygulamada stok miktarı/hareket tablosu yok (Inv_T_Product yalnız kart bilgisi taşır). Stok modülü gelince sorgu kolonu olarak eklenecek ayrı talep. \n(onay) Karşılama Şekli seçenekleri: Satınalma / Depodan Transfer. \nSatır durumu (rozet) LineStatus ile; başlık durumu satırlardan türetilir. \nGörseldeki \"Transferler\" akıllı butonu ve teklif toplama süreci bu talebin dışında (teklif/sipariş modülü yok); Planlama Bekleyenler listesi o sürecin giriş noktasıdır. \nRed Nedenleri demo verisi görseldeki 5 satır (SortOrder 1–5, aktif). \n \n\n10. Üretim planı \n\ncreate_table: Prc_T_RejectReason \ncreate_table: Prc_T_MaterialRequest \ncreate_table: Prc_T_MaterialRequestLine \nsave_sql_object: Prc_P_MaterialRequestResolveApprovers \ndeploy_wizard: Adm_Approver.json (PurchaseDesk seçeneği, güncelleme) \ndeploy_wizard: Prc_RejectReason.json (seed 5 satır) \ninsert_row: App.Definitions.Sequence — MaterialRequest \ndeploy_wizard: Prc_MaterialRequestLine.json \ndeploy_wizard: Prc_MyMaterialRequest.json \ndeploy_wizard: Prc_MaterialRequestDeptApproval.json \ndeploy_wizard: Prc_MaterialRequestPurchaseApproval.json \ndeploy_wizard: Prc_MaterialRequestPlanning.json \ndeploy_wizard: Prc_MaterialRequest.json \n \n\n11. Üretime hazır \nŞartlı — (onay) etiketli 4 karar: Satınalma onaycısı için PurchaseDesk onay yeri, \"Onaya Gönder\" butonuyla Taslak aşaması, stok miktarı kolonlarının (Kendi Depomda / Tüm Depolar) stok modülüne ertelenmesi, Karşılama Şekli seçenekleri.
MCP \nÜretilenler: tablolar Prc_T_RejectReason, Prc_T_MaterialRequest, Prc_T_MaterialRequestItem; prosedür Prc_P_MaterialRequestAfterSave (SQL Server + PostgreSQL); numaratör MaterialRequest (MT-{yyyy}-00001, yıllık); ekranlar App.Prc.RejectReason (5 demo satır), menüsüz alt form App.Prc.MaterialRequestLine, App.Prc.MyMaterialRequest, App.Prc.MaterialRequestDeptApproval, App.Prc.MaterialRequestPurchaseApproval, App.Prc.MaterialRequestPlanning, App.Prc.MaterialRequest; Onaycılar'a PurchaseDesk (Satınalma Masası) onay yeri; menü Satınalma › Malzeme Talepleri (yeni ara menü/yetki) ve Satınalma › Tanımlamalar › Red Nedenleri; modül dokümanı App.Prc › Malzeme Talepleri.
\nAnalizden sapmalar / varsayımlar:
\n\nSatır tablosu Prc_T_MaterialRequestItem adıyla açıldı: Adm_T_Uom.Id nvarchar olduğu için UomId nvarchar(64) olmalıydı; önce açılan Prc_T_MaterialRequestLine scripti (UomId uniqueidentifier) kullanılmıyor. Migrate'ten önce Wizard Manager / SQL Query Manager'dan bu scripti silmeniz önerilir (onayınız olmadan tablo düşürülmedi). \nPlatform akışı onaylayanı kullanıcı adı (metin) olarak yazıyor; ApproverId uniqueidentifier olduğu için akışa bağlanmadı. Departman/Satınalma onaylayanı, tarihi ve notu prosedürde kaydı son güncelleyen kullanıcıdan ve akışın ApprovalDate/ApprovalNote alanlarından kopyalanır. \nProsedür adı planda Prc_P_MaterialRequestResolveApprovers idi; onaycı çözümü + durum senkronu tek prosedürde: Prc_P_MaterialRequestAfterSave. \n\"Onaya Gönder\" ayrı buton olarak yazılmadı; akışın Start düğümü (platformun Onaya Gönder işlemi) kullanılır. İşlemde / Kısmi Tamamlandı / Tamamlandı satır durumlarından türetilir (ayrı satır butonu yok). Todo (kanban) görünümü eklenmedi. \nOnay listeleri ApprovalStatus (akış düğüm başlığı) ile süzülür; Status kayıt/satır kaydı sonrası prosedürle güncellenir. Akış onayı kayıt güncelleme komutunu tetiklemezse Status ve onaylayan bilgileri bir sonraki kayıtta güncellenir. \nRed nedeni zorunluluğu sunucuda zorlanmadı; alan onay listelerinde düzenlenebilir. \n \nDB Migrate bekleyen wizard'lar: Adm_Approver.json, Prc_RejectReason.json, Prc_MaterialRequestLine.json, Prc_MyMaterialRequest.json, Prc_MaterialRequestDeptApproval.json, Prc_MaterialRequestPurchaseApproval.json, Prc_MaterialRequestPlanning.json, Prc_MaterialRequest.json.
"
}
]
}
diff --git a/configs/seeds/data/App.DevRequests/fc6d0fbb-6b04-4d15-9d27-fec98e5c30fb.json b/configs/seeds/data/App.DevRequests/fc6d0fbb-6b04-4d15-9d27-fec98e5c30fb.json
index 04f2e14e..3900ae21 100644
--- a/configs/seeds/data/App.DevRequests/fc6d0fbb-6b04-4d15-9d27-fec98e5c30fb.json
+++ b/configs/seeds/data/App.DevRequests/fc6d0fbb-6b04-4d15-9d27-fec98e5c30fb.json
@@ -20,7 +20,7 @@
"SortOrder": 10,
"Timesheets": "[{\"id\":\"5eeb942f-071a-75e0-1ad6-3a243219320c\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Talep analiz edildi\",\"duration\":0.0167},{\"id\":\"d0e49c7b-da82-481c-85d2-3a24321c8660\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Adm_T_Approver tablosu olu\\u015Fturuldu\",\"duration\":0.0167},{\"id\":\"7ff88954-171a-2ee9-ec8f-3a24321d0f63\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Approver.json wizard\\u0027\\u0131 deploy edildi (0 demo sat\\u0131r)\",\"duration\":0.0167},{\"id\":\"48a59c85-5eda-5991-4e53-3a24321db3f3\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.Administration mod\\u00FCl dok\\u00FCman\\u0131 kaydedildi\",\"duration\":0.0167},{\"id\":\"bab3c506-9ad8-d234-5572-3a24321dbcf4\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"2 tamamlanm\\u0131\\u015F alt g\\u00F6rev eklendi\",\"duration\":0.0167},{\"id\":\"09e17f9b-4670-e7b3-d5d1-3a24321dcee3\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"Analize \\u00FCretim notu eklendi\",\"duration\":0.0167},{\"id\":\"3279c17a-42fe-0dfd-e46a-3a24321dd838\",\"date\":\"2026-10-09\",\"userName\":\"system@sozsoft.com\",\"description\":\"App.DevRequests ekran\\u0131nda sat\\u0131r g\\u00FCncellendi (Status)\",\"duration\":0.0167}]",
"SubTasks": "[{\"id\":\"ef29af4c-7249-7197-d021-3a24321dbcea\",\"title\":\"create_table: Adm_T_Approver\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true},{\"id\":\"b3f03b7c-60cb-97a7-f2f6-3a24321dbcea\",\"title\":\"deploy_wizard: Approver.json\",\"assignee\":\"system@sozsoft.com\",\"dueDate\":\"2026-10-09\",\"completed\":true}]",
- "Analysis": "Amaç \nUygulamadaki tüm onay adımlarının onaycılarını tek listede toplamak: hangi departmanın hangi onay yerinde (Satınalma, Depo …) kimin onaylayacağı. İlk kullanıcısı Satınalma modülüdür (Satınalma Talepleri departman onayı); yöneticiler ve sistem sorumluları tanımlar.
\n\nÇözüm yolu \nTek Wizard List ekranı (tablo kaynaklı, popup düzenleme). Akışlar onaycıyı bu tablodan kayıt sonrası prosedürle okur ve @Kolon onaycısı olarak kullanır (§4.7); bu ekranın kendisinde iş akışı yoktur. Bu yapı, platform tablosu Hr_T_Department'a kolon eklemeyi gereksiz kılar.
\n\nMenü yeri \nYönetim › Tanımlamalar › Onaycılar
\n\nSeviye Kod Ad (TR / EN) İkon Durum \nKök App.Administration Yönetim / Administration — Var \nAra App.Administration.Definitions Tanımlamalar / Definitions — Var \nEkran App.Definitions.Approver Onaycılar / Approvers FcApproval Yeni \n
\nModuleId: Adm · İzin grubu: App.Administration · Route: /admin/list/App.Definitions.Approver
\nYetki: App.Administration › App.Administration.Definitions (Var) › App.Definitions.Approver (Yeni)
\n\nVeri modeli \nAdm_T_Approver — yeni, tenant + audit + soft delete. Tanım tablosu: Evet (onay akışlarının onaycı kaynağı).
\n\nKolon Tip Zorunlu Not \nDepartmentId uniqueidentifier ✓ → Hr_T_Department; listede \"Şube / Departman\" adı \nApprovalArea nvarchar(32) ✓ Purchase / Warehouse / HumanResources / Finance (Satınalma / Depo / İnsan Kaynakları / Finans); DEFAULT 'Purchase' \nApproverUserId uniqueidentifier ✓ → AbpUsers (aktif) \nIsActive bit ✓ DEFAULT 1 \n
\nTekil kısıt: TenantId + DepartmentId + ApprovalArea + ApproverUserId. Aynı departman ve onay yerine birden çok onaycı girilebilir; akış bunları | ile birleştirip herhangi birinin onayını kabul eder.
\n\nEtkilenen kısımlar \n\n1 yeni tablo, 1 yeni ekran, Yönetim › Tanımlamalar menüsünde 1 satır; yetkiler C/R/U/D/E/I/N. \nDil: ekran adları, alan başlıkları (Departman, Onay Yeri, Onaylayacak Kişi), StaticLookup Purchase/Warehouse/HumanResources/Finance. \nVar olan ekranlara dokunulmaz. \"Satınalma -> Satınalma Talepleri\" talebinin departman onaycısı bu tablodan (ApprovalArea = 'Purchase') okunacaktır; o talebin analizi bu ekrana göre güncellenmelidir (Hr_T_Department kolon ihtiyacı kalkar). \n \n\nGörünümler ve davranış \n\nGrid/Card/Pivot/Chart açık, varsayılan grid; liste Onay Yeri ve Departman'a göre gruplanabilir. \nWidget: Toplam / Aktif / Pasif. \nDepartman lookup'ı aktif şubelerin departmanlarını \"Şube - Departman\" biçiminde gösterir; Onaylayacak Kişi aktif kullanıcıları ad soyad ile gösterir. \nPasif satır akışlarda onaycı olarak kullanılmaz. \n \n\nKararlar \n\nEkran adı \"Onaycılar\", kod App.Definitions.Approver, tablo Adm_T_Approver — Yönetim tanımlarının kod/önek ailesi. Talep başlığı \"Satınalma Onaycıları\" olsa da açıklama tüm onayların burada toplanacağını söylüyor. \nOnay Yeri seçenekleri (onay) : Satınalma, Depo, İnsan Kaynakları, Finans. Yeni yer eklemek seçenek listesine satır eklemektir. \nŞube kolonu tutulmaz; şube departmandan gelir. \nDemo veri yazılmaz (departman ve kullanıcı Id'leri kiracıya özgü). \n \n\nÜretim planı \n\ncreate_table: Adm_T_Approver \ndeploy_wizard: Approver.json \n \n\nÜretime hazır \nEvet
MCP \n\nTablo: Adm_T_Approver (DepartmentId FK → Hr_T_Department, ApprovalArea DEFAULT 'Purchase', ApproverUserId, IsActive DEFAULT 1); tekil TenantId+DepartmentId+ApprovalArea+ApproverUserId. Kiracı + tam audit. \nEkran: App.Definitions.Approver (grid, IsTenant), Toplam/Aktif/Pasif widget'ı. \nMenü/yetki: Yönetim › Tanımlamalar (sıra 6); App.Administration › App.Administration.Definitions › App.Definitions.Approver + C/U/D/E/I/N. \nDil: App.StaticLookup.Purchase/Warehouse/HumanResources/Finance (EN+TR). \nDemo veri: yok. \nAnalize eklenen varsayılanlar: yok. \nDB Migrate bekleyen wizard: Approver.json. \n "
+ "Analysis": "Amaç \nUygulamadaki tüm onay adımlarının onaycılarını tek listede toplamak: hangi departmanın hangi onay yerinde (Satınalma, Depo …) kimin onaylayacağı. İlk kullanıcısı Satınalma modülüdür (Malzeme Talepleri departman onayı); yöneticiler ve sistem sorumluları tanımlar.
\n\nÇözüm yolu \nTek Wizard List ekranı (tablo kaynaklı, popup düzenleme). Akışlar onaycıyı bu tablodan kayıt sonrası prosedürle okur ve @Kolon onaycısı olarak kullanır (§4.7); bu ekranın kendisinde iş akışı yoktur. Bu yapı, platform tablosu Hr_T_Department'a kolon eklemeyi gereksiz kılar.
\n\nMenü yeri \nYönetim › Tanımlamalar › Onaycılar
\n\nSeviye Kod Ad (TR / EN) İkon Durum \nKök App.Administration Yönetim / Administration — Var \nAra App.Administration.Definitions Tanımlamalar / Definitions — Var \nEkran App.Definitions.Approver Onaycılar / Approvers FcApproval Yeni \n
\nModuleId: Adm · İzin grubu: App.Administration · Route: /admin/list/App.Definitions.Approver
\nYetki: App.Administration › App.Administration.Definitions (Var) › App.Definitions.Approver (Yeni)
\n\nVeri modeli \nAdm_T_Approver — yeni, tenant + audit + soft delete. Tanım tablosu: Evet (onay akışlarının onaycı kaynağı).
\n\nKolon Tip Zorunlu Not \nDepartmentId uniqueidentifier ✓ → Hr_T_Department; listede \"Şube / Departman\" adı \nApprovalArea nvarchar(32) ✓ Purchase / Warehouse / HumanResources / Finance (Satınalma / Depo / İnsan Kaynakları / Finans); DEFAULT 'Purchase' \nApproverUserId uniqueidentifier ✓ → AbpUsers (aktif) \nIsActive bit ✓ DEFAULT 1 \n
\nTekil kısıt: TenantId + DepartmentId + ApprovalArea + ApproverUserId. Aynı departman ve onay yerine birden çok onaycı girilebilir; akış bunları | ile birleştirip herhangi birinin onayını kabul eder.
\n\nEtkilenen kısımlar \n\n1 yeni tablo, 1 yeni ekran, Yönetim › Tanımlamalar menüsünde 1 satır; yetkiler C/R/U/D/E/I/N. \nDil: ekran adları, alan başlıkları (Departman, Onay Yeri, Onaylayacak Kişi), StaticLookup Purchase/Warehouse/HumanResources/Finance. \nVar olan ekranlara dokunulmaz. \"Satınalma -> Malzeme Talepleri\" talebinin departman onaycısı bu tablodan (ApprovalArea = 'Purchase') okunacaktır; o talebin analizi bu ekrana göre güncellenmelidir (Hr_T_Department kolon ihtiyacı kalkar). \n \n\nGörünümler ve davranış \n\nGrid/Card/Pivot/Chart açık, varsayılan grid; liste Onay Yeri ve Departman'a göre gruplanabilir. \nWidget: Toplam / Aktif / Pasif. \nDepartman lookup'ı aktif şubelerin departmanlarını \"Şube - Departman\" biçiminde gösterir; Onaylayacak Kişi aktif kullanıcıları ad soyad ile gösterir. \nPasif satır akışlarda onaycı olarak kullanılmaz. \n \n\nKararlar \n\nEkran adı \"Onaycılar\", kod App.Definitions.Approver, tablo Adm_T_Approver — Yönetim tanımlarının kod/önek ailesi. Talep başlığı \"Satınalma Onaycıları\" olsa da açıklama tüm onayların burada toplanacağını söylüyor. \nOnay Yeri seçenekleri (onay) : Satınalma, Depo, İnsan Kaynakları, Finans. Yeni yer eklemek seçenek listesine satır eklemektir. \nŞube kolonu tutulmaz; şube departmandan gelir. \nDemo veri yazılmaz (departman ve kullanıcı Id'leri kiracıya özgü). \n \n\nÜretim planı \n\ncreate_table: Adm_T_Approver \ndeploy_wizard: Approver.json \n \n\nÜretime hazır \nEvet
MCP \n\nTablo: Adm_T_Approver (DepartmentId FK → Hr_T_Department, ApprovalArea DEFAULT 'Purchase', ApproverUserId, IsActive DEFAULT 1); tekil TenantId+DepartmentId+ApprovalArea+ApproverUserId. Kiracı + tam audit. \nEkran: App.Definitions.Approver (grid, IsTenant), Toplam/Aktif/Pasif widget'ı. \nMenü/yetki: Yönetim › Tanımlamalar (sıra 6); App.Administration › App.Administration.Definitions › App.Definitions.Approver + C/U/D/E/I/N. \nDil: App.StaticLookup.Purchase/Warehouse/HumanResources/Finance (EN+TR). \nDemo veri: yok. \nAnalize eklenen varsayılanlar: yok. \nDB Migrate bekleyen wizard: Approver.json. \n "
}
]
}
diff --git a/configs/seeds/data/App.Hr.Department.json b/configs/seeds/data/App.Hr.Department.json
index 117a9a3b..32471863 100644
--- a/configs/seeds/data/App.Hr.Department.json
+++ b/configs/seeds/data/App.Hr.Department.json
@@ -16,6 +16,12 @@
"Name": "Üretim",
"ParentId": "8f14e45f-ea2d-4d9f-9f1d-1a2b3c4d5e6f"
},
+ {
+ "Id": "2c1743a3-91b7-4b57-a6c8-7d8e9f0a112c",
+ "BranchId": "1c125bf3-3ffd-4445-a270-1bc43ac3f61c",
+ "Name": "Satınalma",
+ "ParentId": "8f14e45f-ea2d-4d9f-9f1d-1a2b3c4d5e6f"
+ },
{
"Id": "987bcab0-1b92-4a4e-8d7f-3c2b1a0f9e8d",
"BranchId": "1c125bf3-3ffd-4445-a270-1bc43ac3f61c",
diff --git a/configs/seeds/data/App.Languages.LanguageText.json b/configs/seeds/data/App.Languages.LanguageText.json
index a4efff4e..206c30f9 100644
--- a/configs/seeds/data/App.Languages.LanguageText.json
+++ b/configs/seeds/data/App.Languages.LanguageText.json
@@ -13654,6 +13654,34 @@
"Key": "App.ListFormEdit.EditingAllowDuplicate",
"Value": "Çoğaltmaya İzin Ver"
},
+ {
+ "Id": "33bf5f3a-e6cb-5730-a4dd-0784e9849f4d",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormEdit.EditingGeneral",
+ "Value": "General"
+ },
+ {
+ "Id": "c8446544-7f1c-596d-84c9-8ca105a2990e",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormEdit.EditingGeneral",
+ "Value": "Genel"
+ },
+ {
+ "Id": "b20d74db-49bd-5ad1-a16d-c9eaae8d3bb0",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormEdit.EditingOpenDetailAfterInsert",
+ "Value": "Open Detail After Insert"
+ },
+ {
+ "Id": "24a24d50-ed42-53f0-8f06-19e8b8b455de",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormEdit.EditingOpenDetailAfterInsert",
+ "Value": "Kaydedince Detaya Git"
+ },
{
"Id": "c39c08f3-ced7-574c-9995-04e1c72ab1c3",
"CultureName": "en",
@@ -92969,14 +92997,14 @@
"CultureName": "en",
"ResourceName": "Platform",
"Key": "App.Definitions.Approver.Desc",
- "Value": "Approvers — the single list of who approves what for each department across the application.\nWhere: Administration › Definitions › Approvers.\nFields: department (shown as Branch - Department), approval area (Purchasing / Purchasing Desk / Warehouse / Human Resources / Finance), approver user, active.\nUsed by: approval workflows read the approvers of the record's department and area. Purchasing › Material Requests: the department approval uses area Purchasing for the requester's department; the purchasing approval uses area Purchasing Desk (any department). Several approvers may be defined for the same department and area; any one of them can approve. Passive rows are ignored by workflows."
+ "Value": "Approvers — the single list of who approves what for each department across the application.\nWhere: Administration › Definitions › Approvers.\nFields: department (shown as Branch - Department), approval area (Purchasing / Warehouse / Human Resources / Finance), approver user, active.\nUsed by: approval workflows read the approvers of the record's department and area. Purchasing › Material Requests: the department approval uses area Purchasing for the requester's department; the purchasing approval is not defined here: it goes to users with update permission on Awaiting Purchasing Approval (directly or through their role). Several approvers may be defined for the same department and area; any one of them can approve. Passive rows are ignored by workflows."
},
{
"Id": "3663c5aa-4036-5381-810f-8acee720724c",
"CultureName": "tr",
"ResourceName": "Platform",
"Key": "App.Definitions.Approver.Desc",
- "Value": "Onaycılar — uygulamadaki tüm onay adımlarında her departman için kimin onaylayacağını tutan tek liste.\nNerede: Yönetim › Tanımlamalar › Onaycılar.\nAlanlar: departman (Şube - Departman olarak gösterilir), onay yeri (Satınalma / Satınalma Masası / Depo / İnsan Kaynakları / Finans), onaylayacak kişi, aktif.\nKullanıldığı yer: onay akışları kaydın departmanı ve onay yerine göre onaycıları buradan okur. Satınalma › Satınalma Talepleri: departman onayı talep edenin departmanındaki Satınalma satırlarını, satınalma onayı ise Satınalma Masası satırlarını (departmandan bağımsız) kullanır. Aynı departman ve onay yerine birden çok onaycı girilebilir; herhangi birinin onayı yeterlidir. Pasif satırlar akışlarda kullanılmaz."
+ "Value": "Onaycılar — uygulamadaki tüm onay adımlarında her departman için kimin onaylayacağını tutan tek liste.\nNerede: Yönetim › Tanımlamalar › Onaycılar.\nAlanlar: departman (Şube - Departman olarak gösterilir), onay yeri (Satınalma / Depo / İnsan Kaynakları / Finans), onaylayacak kişi, aktif.\nKullanıldığı yer: onay akışları kaydın departmanı ve onay yerine göre onaycıları buradan okur. Satınalma › Malzeme Talepleri: departman onayı talep edenin departmanındaki Satınalma satırlarını, satınalma onayı burada tanımlanmaz: Satınalma Onayı Bekleyenler ekranında güncelleme yetkisi olan kullanıcılar (doğrudan ya da rolüyle) onaylar. Aynı departman ve onay yerine birden çok onaycı girilebilir; herhangi birinin onayı yeterlidir. Pasif satırlar akışlarda kullanılmaz."
},
{
"Id": "cd7ff644-eefa-516e-8c8c-8b4fa0ec76f8",
@@ -93062,20 +93090,6 @@
"Key": "App.Listform.ListformField.ApproverUser",
"Value": "Onaylayacak Kişi"
},
- {
- "Id": "a0bd0fe5-757d-57a9-b689-e1b0e9af639e",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.StaticLookup.PurchaseDesk",
- "Value": "Purchasing Desk"
- },
- {
- "Id": "ed5a8261-8b99-5809-b1fc-5012e9064ad4",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.StaticLookup.PurchaseDesk",
- "Value": "Satınalma Masası"
- },
{
"Id": "05f3d2d1-2824-5ec8-afa8-2631940be01b",
"CultureName": "en",
@@ -93116,7 +93130,7 @@
"CultureName": "tr",
"ResourceName": "Platform",
"Key": "App.Prc.RejectReason.Desc",
- "Value": "Red Nedenleri — satınalma taleplerinin reddedilme sebepleri (ihtiyaç yok, miktar uygun değil, yanlış ürün, bütçe uygun değil, diğer).\nNerede: Satınalma › Tanımlamalar › Red Nedenleri.\nAlanlar: red nedeni, sıra (seçim listesindeki sırası), aktif.\nKullanıldığı yer: Satınalma › Satınalma Talepleri — departman onaycısı ya da satınalma talebi reddederken neden seçer. Yalnız aktif nedenler listelenir; kullanılmış neden silinmez, pasife alınır."
+ "Value": "Red Nedenleri — satınalma taleplerinin reddedilme sebepleri (ihtiyaç yok, miktar uygun değil, yanlış ürün, bütçe uygun değil, diğer).\nNerede: Satınalma › Tanımlamalar › Red Nedenleri.\nAlanlar: red nedeni, sıra (seçim listesindeki sırası), aktif.\nKullanıldığı yer: Satınalma › Malzeme Talepleri — departman onaycısı ya da satınalma talebi reddederken neden seçer. Yalnız aktif nedenler listelenir; kullanılmış neden silinmez, pasife alınır."
},
{
"Id": "31115331-7e79-54e9-ae55-a2e682571c43",
@@ -93165,14 +93179,14 @@
"CultureName": "en",
"ResourceName": "Platform",
"Key": "App.Prc.MaterialRequestLine.Desc",
- "Value": "Request Lines — the products requested in a material request.\nWhere: Purchasing › Material Requests › any list › Request Lines tab (no menu of its own).\nFields: product (active, purchasable products), quantity, unit (copied from the product's purchase unit, read-only), fulfilment (Purchasing / Warehouse Transfer), due date, request reason, delivered quantity (read-only), planned quantity (defaults to quantity), purchasing responsible, line status (Waiting / Planned / Done / Cancelled).\nRules: lines can be added or deleted only while the request has not been sent for approval. Changing line statuses recalculates the request status (In Progress / Partially Done / Done)."
+ "Value": "Request Lines — the products requested in a material request.\nWhere: Purchasing › Material Requests › My Requests, Awaiting Department Approval and Awaiting Purchasing Approval › Request Lines tab; All Requests shows the lines as columns (no menu of its own).\nFields: product (active, purchasable products), quantity, unit (copied from the product's purchase unit, read-only), fulfilment (Purchasing / Warehouse Transfer), due date, request reason, delivered quantity (read-only), planned quantity (defaults to quantity), purchasing responsible, line status (Waiting / Planned / Done / Cancelled).\nRules: lines can be added or deleted only while the request has not been sent for approval. Changing line statuses recalculates the request status (In Progress / Partially Done / Done)."
},
{
"Id": "cd985741-f49b-5a73-80a5-10f6ea403c1e",
"CultureName": "tr",
"ResourceName": "Platform",
"Key": "App.Prc.MaterialRequestLine.Desc",
- "Value": "Talep Satırları — malzeme talebinde istenen ürünler.\nNerede: Satınalma › Satınalma Talepleri › herhangi bir liste › Talep Satırları sekmesi (kendi menüsü yoktur).\nAlanlar: ürün (aktif ve satın alınabilir ürünler), miktar, birim (ürünün satınalma biriminden gelir, salt okunur), karşılama şekli (Satınalma / Depodan Transfer), termin tarihi, talep nedeni, teslim edilen miktar (salt okunur), planlanacak miktar (boşsa miktar), satınalma sorumlusu, satır durumu (Bekliyor / Planlandı / Tamamlandı / İptal).\nKurallar: satır yalnız talep onaya gönderilmeden eklenip silinebilir. Satır durumları değişince talebin durumu yeniden hesaplanır (İşlemde / Kısmi Tamamlandı / Tamamlandı)."
+ "Value": "Talep Satırları — malzeme talebinde istenen ürünler.\nNerede: Satınalma › Malzeme Talepleri › Taleplerim, Departman Onayı Bekleyenler ve Satınalma Onayı Bekleyenler › Talep Satırları sekmesi; Tüm Talepler satırları kolon olarak gösterir (kendi menüsü yoktur).\nAlanlar: ürün (aktif ve satın alınabilir ürünler), miktar, birim (ürünün satınalma biriminden gelir, salt okunur), karşılama şekli (Satınalma / Depodan Transfer), termin tarihi, talep nedeni, teslim edilen miktar (salt okunur), planlanacak miktar (boşsa miktar), satınalma sorumlusu, satır durumu (Bekliyor / Planlandı / Tamamlandı / İptal).\nKurallar: satır yalnız talep onaya gönderilmeden eklenip silinebilir. Satır durumları değişince talebin durumu yeniden hesaplanır (İşlemde / Kısmi Tamamlandı / Tamamlandı)."
},
{
"Id": "d6911bd6-3f4a-582d-8328-e01403808802",
@@ -93347,14 +93361,14 @@
"CultureName": "en",
"ResourceName": "Platform",
"Key": "App.Prc.MyMaterialRequest.Desc",
- "Value": "My Requests — the material requests you opened, in every status.\nWhere: Purchasing › Material Requests › My Requests.\nFields: request no (MT-YYYY-00001, automatic), priority, requester (you), department (your department by default), warehouse and location where the goods will be put, request date, status, general description; Request Lines tab: product, quantity, unit, fulfilment, due date, request reason.\nFlow: add lines, then send for approval — the department approver (Approvers › area Purchasing for your department) and then purchasing (area Purchasing Desk) approve or reject. Lines can only be added or removed before sending. Approval / rejection details are shown in the approval group.\nRelated: Awaiting Department Approval, Awaiting Purchasing Approval, Awaiting Planning, All Requests."
+ "Value": "My Requests — the material requests you opened, in every status.\nWhere: Purchasing › Material Requests › My Requests.\nFields: request no (MT-YYYY-00001, automatic), priority, requester (you), department (your department by default), warehouse and location where the goods will be put, request date, general description; Request Lines tab: product, quantity, unit, fulfilment, due date, request reason.\nFlow: add lines, then send for approval — the department approver (Approvers › area Purchasing for your department) and then purchasing (users with update permission on Awaiting Purchasing Approval (directly or through their role)) approve or reject. Lines can only be added or removed before sending. Approval status, approver, date and description (with the rejection reason) are filled by the workflow and shown in the list, not in the edit form.\nRelated: Awaiting Department Approval, Awaiting Purchasing Approval, All Requests."
},
{
"Id": "cdcb1b32-ecb7-5fd1-af5b-fdfd2614d779",
"CultureName": "tr",
"ResourceName": "Platform",
"Key": "App.Prc.MyMaterialRequest.Desc",
- "Value": "Taleplerim — açtığınız malzeme talepleri, tüm durumlarıyla.\nNerede: Satınalma › Satınalma Talepleri › Taleplerim.\nAlanlar: talep no (MT-YYYY-00001, otomatik), öncelik, talep eden (siz), departman (varsayılan olarak sizin departmanınız), malın konulacağı depo ve konum, talep tarihi, durum, genel açıklama; Talep Satırları sekmesi: ürün, miktar, birim, karşılama şekli, termin tarihi, talep nedeni.\nAkış: satırları girip onaya gönderin — önce departman onaycısı (Onaycılar › departmanınız için Satınalma onay yeri), ardından satınalma (Satınalma Masası onay yeri) onaylar ya da reddeder. Satırlar yalnız onaya göndermeden önce eklenip silinebilir. Onay / red bilgileri onay grubunda görünür.\nİlişkili: Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Planlama Bekleyenler, Tüm Talepler."
+ "Value": "Taleplerim — açtığınız malzeme talepleri, tüm durumlarıyla.\nNerede: Satınalma › Malzeme Talepleri › Taleplerim.\nAlanlar: talep no (MT-YYYY-00001, otomatik), öncelik, talep eden (siz), departman (varsayılan olarak sizin departmanınız), malın konulacağı depo ve konum, talep tarihi, genel açıklama; Talep Satırları sekmesi: ürün, miktar, birim, karşılama şekli, termin tarihi, talep nedeni.\nAkış: satırları girip onaya gönderin — önce departman onaycısı (Onaycılar › departmanınız için Satınalma onay yeri), ardından satınalma (Satınalma Onayı Bekleyenler ekranında güncelleme yetkisi olan kullanıcılar (doğrudan ya da rolüyle)) onaylar ya da reddeder. Satırlar yalnız onaya göndermeden önce eklenip silinebilir. Onay durumu, onaylayan, tarih ve açıklama (red nedeniyle birlikte) iş akışınca doldurulur; düzenleme formunda değil listede görünür.\nİlişkili: Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Tüm Talepler."
},
{
"Id": "ce3d734c-f508-5647-8f8d-2bf6b056c79a",
@@ -93384,20 +93398,6 @@
"Key": "App.Prc.MaterialRequest.Group.Approval",
"Value": "Onay / Red Bilgileri"
},
- {
- "Id": "048c326c-7709-52a2-919f-928eb4f02fc2",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Prc.MaterialRequest.Status.Draft",
- "Value": "Draft"
- },
- {
- "Id": "e490d63f-4209-516f-9bf7-ded12e62c7e1",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Prc.MaterialRequest.Status.Draft",
- "Value": "Taslak"
- },
{
"Id": "3708a984-4c9b-536b-b4f8-3928bad0c787",
"CultureName": "en",
@@ -93440,48 +93440,6 @@
"Key": "App.Prc.MaterialRequest.Status.Approved",
"Value": "Onaylandı"
},
- {
- "Id": "fc01609d-1b30-57e7-a8aa-a2ba025f8793",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Prc.MaterialRequest.Status.InProgress",
- "Value": "In Progress"
- },
- {
- "Id": "72fa09da-1c88-59b0-a11e-7d9ed3599ea4",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Prc.MaterialRequest.Status.InProgress",
- "Value": "İşlemde"
- },
- {
- "Id": "c1b67758-5e95-5dfd-81b7-4d601ee1a492",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Prc.MaterialRequest.Status.PartiallyDone",
- "Value": "Partially Done"
- },
- {
- "Id": "9dae2baf-ae05-5877-9194-e2ebacb20945",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Prc.MaterialRequest.Status.PartiallyDone",
- "Value": "Kısmi Tamamlandı"
- },
- {
- "Id": "0ae3f045-c580-5a1c-8ffb-2f34940230a0",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Prc.MaterialRequest.Status.Done",
- "Value": "Done"
- },
- {
- "Id": "ccda2c9c-6397-52dc-a159-5b3fd83f8820",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Prc.MaterialRequest.Status.Done",
- "Value": "Tamamlandı"
- },
{
"Id": "b29fee10-a751-5dec-9eb5-8ac8837d5ef8",
"CultureName": "en",
@@ -93564,7 +93522,7 @@
"CultureName": "tr",
"ResourceName": "Platform",
"Key": "App.Prc.MaterialRequests",
- "Value": "Satınalma Talepleri"
+ "Value": "Malzeme Talepleri"
},
{
"Id": "cf76b42b-82ed-5838-9fb2-30b0c8caf3e5",
@@ -93594,20 +93552,6 @@
"Key": "App.Listform.ListformField.LocationId",
"Value": "Konum"
},
- {
- "Id": "caada0e9-b75d-52f2-b07e-c25384a2532e",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.RejectReasonId",
- "Value": "Rejection Reason"
- },
- {
- "Id": "787d4dd5-867b-52a0-8689-f55801750fe0",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.RejectReasonId",
- "Value": "Red Nedeni"
- },
{
"Id": "354564b7-be8f-5e32-9add-9fbda8f912f2",
"CultureName": "en",
@@ -93636,34 +93580,6 @@
"Key": "App.Listform.ListformField.PurchaseApproverUserNames",
"Value": "Satınalma Onaycıları"
},
- {
- "Id": "6f297c45-bc1e-5235-a511-f96c07ef970c",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.ApproverId",
- "Value": "Approver Id"
- },
- {
- "Id": "5d442093-8ce2-5d44-9ea1-4306060a8fd4",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.ApproverId",
- "Value": "Onaylayan Kimlik"
- },
- {
- "Id": "8647efbf-f775-5e53-a00e-f1ce508c609f",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.ApprovalNote",
- "Value": "Approval Note"
- },
- {
- "Id": "9d232928-5938-5b1d-b3c3-d752e1cd2077",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.ApprovalNote",
- "Value": "Onay Notu"
- },
{
"Id": "3cb0bb36-408f-50e8-b260-850cbdd25e7a",
"CultureName": "en",
@@ -93678,90 +93594,6 @@
"Key": "App.Listform.ListformField.DeptApproverUserNames",
"Value": "Departman Onaycıları"
},
- {
- "Id": "8e05f767-5e90-5aed-8e15-f544883da7b4",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.PurchaseApprovedBy",
- "Value": "Purchasing Approved By"
- },
- {
- "Id": "5294b27e-2e61-5c0c-8b69-406425b5f592",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.PurchaseApprovedBy",
- "Value": "Satınalma Onaylayan"
- },
- {
- "Id": "7697f43d-e5da-5666-b919-ae0eb6b7a6a0",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.DeptApprovedBy",
- "Value": "Department Approved By"
- },
- {
- "Id": "f56eb927-0d12-5192-bf36-edb5847aae45",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.DeptApprovedBy",
- "Value": "Departman Onaylayan"
- },
- {
- "Id": "b71494eb-3a96-5f3d-bf22-87421cad6f5c",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.PurchaseApprovalDate",
- "Value": "Purchasing Approval Date"
- },
- {
- "Id": "d4e99bb0-b797-5dd1-a4f8-18163b533b5b",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.PurchaseApprovalDate",
- "Value": "Satınalma Onay Tarihi"
- },
- {
- "Id": "423c12ac-9935-54f0-8973-9e508cc0961a",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.DeptApprovalDate",
- "Value": "Department Approval Date"
- },
- {
- "Id": "c86753a5-1b33-5b79-8fe4-55a8dfd87e88",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.DeptApprovalDate",
- "Value": "Departman Onay Tarihi"
- },
- {
- "Id": "46d7172f-46ca-5b5c-af1b-01b30e4e78e9",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.PurchaseApprovalNote",
- "Value": "Purchasing Approval Note"
- },
- {
- "Id": "1615218a-57a7-5398-b0d3-1f9eef0039db",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.PurchaseApprovalNote",
- "Value": "Satınalma Onay Notu"
- },
- {
- "Id": "08ed225a-1c13-5c79-970e-7ec77930277a",
- "CultureName": "en",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.DeptApprovalNote",
- "Value": "Department Approval Note"
- },
- {
- "Id": "238cae24-91e7-5c8e-82a7-ba6807076cdd",
- "CultureName": "tr",
- "ResourceName": "Platform",
- "Key": "App.Listform.ListformField.DeptApprovalNote",
- "Value": "Departman Onay Notu"
- },
{
"Id": "6992315a-5810-5cf8-9061-6c9f8b61d750",
"CultureName": "en",
@@ -93795,14 +93627,14 @@
"CultureName": "en",
"ResourceName": "Platform",
"Key": "App.Prc.MaterialRequestDeptApproval.Desc",
- "Value": "Awaiting Department Approval — material requests waiting for the department approver's decision.\nWhere: Purchasing › Material Requests › Awaiting Department Approval.\nWho: approvers defined in Administration › Definitions › Approvers with area Purchasing for the requester's department; each approver sees only the requests assigned to them.\nWhat to do: open the request, review the Request Lines tab, then Approve (the request moves to purchasing approval) or Reject with a note and a rejection reason (Purchasing › Definitions › Rejection Reasons). Lines cannot be added or removed here.\nRelated: My Requests, Awaiting Purchasing Approval, All Requests."
+ "Value": "Awaiting Department Approval — material requests waiting for the department approver's decision.\nWhere: Purchasing › Material Requests › Awaiting Department Approval.\nWho: approvers defined in Administration › Definitions › Approvers with area Purchasing for the requester's department; each approver sees only the requests assigned to them.\nWhat to do: open the request, review the Request Lines tab, then Approve (the request moves to purchasing approval) or Reject by choosing a rejection reason (Purchasing › Definitions › Rejection Reasons) and an optional note; the reason and note are written to the approval description. Lines cannot be added or removed here.\nRelated: My Requests, Awaiting Purchasing Approval, All Requests."
},
{
"Id": "3467add9-46c6-59ea-b3ea-19d8524bb6bb",
"CultureName": "tr",
"ResourceName": "Platform",
"Key": "App.Prc.MaterialRequestDeptApproval.Desc",
- "Value": "Departman Onayı Bekleyenler — departman onaycısının kararını bekleyen malzeme talepleri.\nNerede: Satınalma › Satınalma Talepleri › Departman Onayı Bekleyenler.\nKim: Yönetim › Tanımlamalar › Onaycılar'da talep edenin departmanı için Satınalma onay yerinde tanımlı onaycılar; her onaycı yalnız kendisine düşen talepleri görür.\nNe yapılır: talebi açıp Talep Satırları sekmesini inceleyin, ardından Onayla (talep satınalma onayına geçer) ya da not ve red nedeniyle (Satınalma › Tanımlamalar › Red Nedenleri) Reddet. Burada satır eklenip silinemez.\nİlişkili: Taleplerim, Satınalma Onayı Bekleyenler, Tüm Talepler."
+ "Value": "Departman Onayı Bekleyenler — departman onaycısının kararını bekleyen malzeme talepleri.\nNerede: Satınalma › Malzeme Talepleri › Departman Onayı Bekleyenler.\nKim: Yönetim › Tanımlamalar › Onaycılar'da talep edenin departmanı için Satınalma onay yerinde tanımlı onaycılar; her onaycı yalnız kendisine düşen talepleri görür.\nNe yapılır: talebi açıp Talep Satırları sekmesini inceleyin, ardından Onayla (talep satınalma onayına geçer) ya da red nedeni (Satınalma › Tanımlamalar › Red Nedenleri) seçip isteğe bağlı notla Reddet; neden ve not onay açıklamasına yazılır. Burada satır eklenip silinemez.\nİlişkili: Taleplerim, Satınalma Onayı Bekleyenler, Tüm Talepler."
},
{
"Id": "1c9a636f-fdfa-50bf-b3a4-874deed5dad1",
@@ -93837,14 +93669,14 @@
"CultureName": "en",
"ResourceName": "Platform",
"Key": "App.Prc.MaterialRequestPurchaseApproval.Desc",
- "Value": "Awaiting Purchasing Approval — material requests approved by the department and waiting for purchasing.\nWhere: Purchasing › Material Requests › Awaiting Purchasing Approval.\nWho: approvers defined in Administration › Definitions › Approvers with area Purchasing Desk (any department); each approver sees only the requests assigned to them.\nWhat to do: review the request and its lines, then Approve (the request becomes Approved and appears in Awaiting Planning, the requester is notified) or Reject with a note and a rejection reason.\nRelated: Awaiting Department Approval, Awaiting Planning, All Requests."
+ "Value": "Awaiting Purchasing Approval — material requests approved by the department and waiting for purchasing.\nWhere: Purchasing › Material Requests › Awaiting Purchasing Approval.\nWho: users with update permission on Awaiting Purchasing Approval (directly or through their role); the approver list of each request is refreshed when the request is saved, and each approver sees only the requests assigned to them.\nWhat to do: review the request and its lines, then Approve (the request becomes Approved, the requester is notified) or Reject by choosing a rejection reason and an optional note; both are written to the approval description.\nRelated: Awaiting Department Approval, All Requests."
},
{
"Id": "bbcdb2c8-96fc-5ae3-b948-1d68b8a334c5",
"CultureName": "tr",
"ResourceName": "Platform",
"Key": "App.Prc.MaterialRequestPurchaseApproval.Desc",
- "Value": "Satınalma Onayı Bekleyenler — departmanca onaylanmış ve satınalmanın kararını bekleyen malzeme talepleri.\nNerede: Satınalma › Satınalma Talepleri › Satınalma Onayı Bekleyenler.\nKim: Yönetim › Tanımlamalar › Onaycılar'da Satınalma Masası onay yerinde tanımlı onaycılar (departmandan bağımsız); her onaycı yalnız kendisine düşen talepleri görür.\nNe yapılır: talebi ve satırlarını inceleyip Onayla (talep Onaylandı olur, Planlama Bekleyenler'e düşer, talep edene bilgi gider) ya da not ve red nedeniyle Reddet.\nİlişkili: Departman Onayı Bekleyenler, Planlama Bekleyenler, Tüm Talepler."
+ "Value": "Satınalma Onayı Bekleyenler — departmanca onaylanmış ve satınalmanın kararını bekleyen malzeme talepleri.\nNerede: Satınalma › Malzeme Talepleri › Satınalma Onayı Bekleyenler.\nKim: Satınalma Onayı Bekleyenler ekranında güncelleme yetkisi olan kullanıcılar (doğrudan ya da rolüyle); talebin onaycı listesi talep kaydedilince yenilenir, her onaycı yalnız kendisine düşen talepleri görür.\nNe yapılır: talebi ve satırlarını inceleyip Onayla (talep Onaylandı olur, talep edene bilgi gider) ya da red nedeni seçip isteğe bağlı notla Reddet; ikisi de onay açıklamasına yazılır.\nİlişkili: Departman Onayı Bekleyenler, Tüm Talepler."
},
{
"Id": "04e8c193-a841-520d-b338-0d4a73ca066b",
@@ -93879,14 +93711,14 @@
"CultureName": "en",
"ResourceName": "Platform",
"Key": "App.Prc.MaterialRequest.Desc",
- "Value": "All Requests — every material request of the company in every status; used by purchasing management.\nWhere: Purchasing › Material Requests › All Requests.\nFields: request no (MT-YYYY-00001, automatic), priority, requester, department, warehouse and location, request date, status (Draft › Department Approval › Purchasing Approval › Approved › In Progress › Partially Done › Done, or Rejected), approval status, rejection reason, general description; approval group: department approvers, department / purchasing approver, date and note; Request Lines tab.\nFlow: Grid Workflow — department approver (Approvers › area Purchasing of the request's department) → purchasing (area Purchasing Desk) → Approved / Rejected; the requester is notified. Status after approval follows the line statuses.\nRelated: My Requests, Awaiting Department Approval, Awaiting Purchasing Approval, Awaiting Planning, Purchasing › Definitions › Rejection Reasons."
+ "Value": "All Requests — every material request of the company in every status, listed per request line; list of purchasing management.\nWhere: Purchasing › Material Requests › All Requests.\nFields: each row is one request line — request header (request no, priority, requester, department, warehouse and location, request date, general description, approval status / approver / date / description) next to the line (product, quantity, unit, fulfillment method, due date, reason, delivered quantity, purchasing responsible, line status). A request without lines is shown as a single row with empty line columns.\nFlow: requests are created in My Requests and approved in Awaiting Department Approval › Awaiting Purchasing Approval; this list does not add or delete; header fields and the approval status written by that workflow are read-only, editing a row only sets the line's purchasing responsible and line status. Cards count requests, not lines.\nRelated: My Requests, Awaiting Department Approval, Awaiting Purchasing Approval, Purchasing › Definitions › Rejection Reasons."
},
{
"Id": "b9ef44e8-a325-544f-b552-bda2fb6ca9c1",
"CultureName": "tr",
"ResourceName": "Platform",
"Key": "App.Prc.MaterialRequest.Desc",
- "Value": "Tüm Talepler — kurumun bütün malzeme talepleri, tüm durumlarıyla; satınalma yönetiminin listesi.\nNerede: Satınalma › Satınalma Talepleri › Tüm Talepler.\nAlanlar: talep no (MT-YYYY-00001, otomatik), öncelik, talep eden, departman, depo ve konum, talep tarihi, durum (Taslak › Departman Onayı › Satınalma Onayı › Onaylandı › İşlemde › Kısmi Tamamlandı › Tamamlandı ya da Reddedildi), onay durumu, red nedeni, genel açıklama; onay grubu: departman onaycıları, departman / satınalma onaylayanı, tarihi ve notu; Talep Satırları sekmesi.\nAkış: Grid Workflow — departman onaycısı (Onaycılar › talebin departmanı için Satınalma onay yeri) → satınalma (Satınalma Masası onay yeri) → Onaylandı / Reddedildi; talep edene bilgi gider. Onay sonrası durum satır durumlarını izler.\nİlişkili: Taleplerim, Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Planlama Bekleyenler, Satınalma › Tanımlamalar › Red Nedenleri."
+ "Value": "Tüm Talepler — kurumun bütün malzeme talepleri, tüm durumlarıyla, kalem kalem; satınalma yönetiminin listesi.\nNerede: Satınalma › Malzeme Talepleri › Tüm Talepler.\nAlanlar: her satır bir talep kalemidir — talep başlığı (talep no, öncelik, talep eden, departman, depo ve konum, talep tarihi, genel açıklama, onay durumu / onaylayan / tarih / açıklama) ile kalemin bilgileri (ürün, miktar, birim, karşılama yöntemi, termin, talep nedeni, teslim edilen miktar, satınalma sorumlusu, satır durumu) yan yanadır. Kalemi olmayan talep, kalem kolonları boş tek satır olarak görünür.\nAkış: talep Taleplerim ekranında açılır, Departman Onayı Bekleyenler › Satınalma Onayı Bekleyenler ekranlarında onaylanır; bu liste ekleme ve silme yapmaz; başlık alanları ve o iş akışının yazdığı onay durumu salt okunurdur, satırı düzenlemek yalnız kalemin satınalma sorumlusunu ve satır durumunu değiştirir. Kartlar kalemi değil talebi sayar.\nİlişkili: Taleplerim, Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Satınalma › Tanımlamalar › Red Nedenleri."
},
{
"Id": "3d2aa673-6148-5445-9fb8-c260913a910f",
@@ -93929,6 +93761,202 @@
"ResourceName": "Platform",
"Key": "App.Tenant.Name",
"Value": "Kiracı Adı"
+ },
+ {
+ "Id": "4b3114be-222a-5abf-ae77-d2ad2a321e7a",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormEdit.DesignTable",
+ "Value": "Design Table"
+ },
+ {
+ "Id": "95839291-2e69-5129-9796-904fd18dbcee",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormEdit.DesignTable",
+ "Value": "Tablo Tasarımı"
+ },
+ {
+ "Id": "973de671-71f2-547d-97e7-fe6277cf08ed",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.WorkflowNote.RejectReason",
+ "Value": "Reject Reason"
+ },
+ {
+ "Id": "89ce6320-14b2-54ce-b2fc-9ec20fa9361f",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.WorkflowNote.RejectReason",
+ "Value": "Red Nedeni"
+ },
+ {
+ "Id": "20cc436a-9277-55bf-8e07-2a79179af9a4",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonRequired",
+ "Value": "A reject reason must be selected."
+ },
+ {
+ "Id": "5b8cab4e-6616-5681-bd2d-68e42568cdd7",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonRequired",
+ "Value": "Red nedeni seçilmelidir."
+ },
+ {
+ "Id": "1c5d7dde-28cc-5b2f-8f3c-b6a31a981174",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonNotFound",
+ "Value": "The selected reject reason was not found."
+ },
+ {
+ "Id": "c709ef5d-57bb-518c-b67d-6182113131c1",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonNotFound",
+ "Value": "Seçilen red nedeni bulunamadı."
+ },
+ {
+ "Id": "523e57cb-24fe-5087-8682-6adf60ee54e5",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonTableNotFound",
+ "Value": "Reject reason table was not found: {0}"
+ },
+ {
+ "Id": "1f7a2c1b-20c1-5717-8c5b-32cba96482b3",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonTableNotFound",
+ "Value": "Red nedeni tablosu bulunamadı: {0}"
+ },
+ {
+ "Id": "8b9dcc7a-3d32-5cec-a94b-beb86f4c6900",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonColumnNotFound",
+ "Value": "Column '{0}' was not found in reject reason table '{1}'."
+ },
+ {
+ "Id": "3f9232e6-4791-5489-a24b-422fdaa574c5",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonColumnNotFound",
+ "Value": "'{1}' red nedeni tablosunda '{0}' kolonu yok."
+ },
+ {
+ "Id": "3bfaf9e8-3913-590d-8636-5cc69c10990c",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonSection",
+ "Value": "Reject Reason List"
+ },
+ {
+ "Id": "3be0012c-ebc7-562c-8585-1fc376aef1c0",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonSection",
+ "Value": "Red Nedeni Listesi"
+ },
+ {
+ "Id": "27ff219a-0dfe-50b9-98da-ee9564329905",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonHint",
+ "Value": "Leave the table empty to ask only for a description on reject."
+ },
+ {
+ "Id": "f6ddb820-f67d-5073-8a59-feaa977be779",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonHint",
+ "Value": "Tablo boş bırakılırsa red sırasında yalnızca açıklama sorulur."
+ },
+ {
+ "Id": "966f9fd2-8a64-547b-8f2b-7c39508b1837",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonTable",
+ "Value": "Table"
+ },
+ {
+ "Id": "6da2c479-85f2-5885-beb0-08fdce43abc6",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonTable",
+ "Value": "Tablo"
+ },
+ {
+ "Id": "13863cf5-8d59-57cc-a4ae-e3100fc0616d",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonValueField",
+ "Value": "Id Column"
+ },
+ {
+ "Id": "bbfba405-1d51-551e-943f-9bcb67af3e0d",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonValueField",
+ "Value": "Id Kolonu"
+ },
+ {
+ "Id": "4da6dc9f-68a7-5f5a-8153-b3b340372684",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonTextField",
+ "Value": "Text Column"
+ },
+ {
+ "Id": "c439c7f8-3cae-54ea-87b7-a6ce2da43e0e",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonTextField",
+ "Value": "Metin Kolonu"
+ },
+ {
+ "Id": "a10b8a0d-6a04-5043-893b-da40f739f306",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonTargetField",
+ "Value": "Record Field for Id"
+ },
+ {
+ "Id": "8719ba9a-7314-5b95-a38e-1acbd0dab6b0",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonTargetField",
+ "Value": "Id'nin Yazılacağı Kayıt Alanı"
+ },
+ {
+ "Id": "1059eb89-9b04-5524-9272-e40634b3545f",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonIsRequired",
+ "Value": "Selection required"
+ },
+ {
+ "Id": "05786192-1daf-52ef-90b7-daaf730bcfce",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonIsRequired",
+ "Value": "Seçim zorunlu"
+ },
+ {
+ "Id": "634f4c35-51bf-5f1c-9668-ad50814d1f2e",
+ "CultureName": "en",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonPlaceholder",
+ "Value": "Select a reject reason"
+ },
+ {
+ "Id": "6de88842-9612-556a-9162-048c6eaee634",
+ "CultureName": "tr",
+ "ResourceName": "Platform",
+ "Key": "App.ListFormWorkflow.RejectReasonPlaceholder",
+ "Value": "Red nedeni seçin"
}
]
}
diff --git a/configs/seeds/docs/modules/App.Administration.md b/configs/seeds/docs/modules/App.Administration.md
index 4ea2b0c4..d954abbc 100644
--- a/configs/seeds/docs/modules/App.Administration.md
+++ b/configs/seeds/docs/modules/App.Administration.md
@@ -72,7 +72,7 @@ Yetki ağacı: `App.Administration` grubu › `App.Administration.Definitions`
### 7. Entegrasyonlar
-Dış entegrasyon yok. Ülke/Şehir/İlçe, Para Birimi, Dil, Sektör, Kullanıcılar, Departmanlar, Şubeler ve Satınalma tanımları yalnızca okunur. Onaycılar'ı Satınalma › Satınalma Talepleri departman onayı (`ApprovalArea = 'Purchase'`) okuyacaktır; diğer onay yerleri ilgili modüllerin akışları için hazırdır.
+Dış entegrasyon yok. Ülke/Şehir/İlçe, Para Birimi, Dil, Sektör, Kullanıcılar, Departmanlar, Şubeler ve Satınalma tanımları yalnızca okunur. Onaycılar'ı Satınalma › Malzeme Talepleri departman onayı (`ApprovalArea = 'Purchase'`) okuyacaktır; diğer onay yerleri ilgili modüllerin akışları için hazırdır.
### 8. Akış örneği
@@ -178,7 +178,7 @@ Dış entegrasyon yok. Ülke/Şehir/İlçe, Para Birimi, Dil, Sektör, Kullanıc
| Menü | `App.Administration.Definitions` › `App.Definitions.Approver` (sıra 6) |
| Yetki | `App.Definitions.Approver` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Onaycılar — uygulamadaki tüm onay adımlarında her departman için kimin onaylayacağını tutan tek liste. |
-| Geliştirme talebi | Satınalma -> Satınalma Talepleri |
+| Geliştirme talebi | Satınalma -> Malzeme Talepleri |
| Kaynak | `Adm_T_Approver` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
@@ -190,7 +190,7 @@ Dış entegrasyon yok. Ülke/Şehir/İlçe, Para Birimi, Dil, Sektör, Kullanıc
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
| `DepartmentId` | Departman | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Department |
-| `ApprovalArea` | Onay Yeri | dxSelectBox | ✓ | ✓ | liste: Purchase, PurchaseDesk, Warehouse, HumanResources, Finance |
+| `ApprovalArea` | Onay Yeri | dxSelectBox | ✓ | ✓ | liste: Purchase, Warehouse, HumanResources, Finance |
| `ApproverUserId` | Onaylayacak Kişi | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
diff --git a/configs/seeds/docs/modules/App.Prc.md b/configs/seeds/docs/modules/App.Prc.md
index 37efab41..5c45541d 100644
--- a/configs/seeds/docs/modules/App.Prc.md
+++ b/configs/seeds/docs/modules/App.Prc.md
@@ -67,54 +67,58 @@ Yok. Tanımlar Yönetim › Tanımlamalar › Kontaklar'ın Satış ve Satınalm
- Geri alma: Kontak sekmeleri bu tanımlara bağlı olduğu için önce kontak tarafındaki seçimler temizlenir; ekranlar `delete_wizard` ile silinir, tablolar yalnızca açık onayla `dropTables: true` ile düşürülür.
-## Satınalma Talepleri (`App.Prc.MaterialRequests`)
+## Malzeme Talepleri (`App.Prc.MaterialRequests`)
### 1. Amaç ve kapsam
-Departmanların iç ve dış ihtiyaç duydukları malzemeleri satınalmaya iletmesi. Talep eden personel talebi ve satırlarını girer, onaya gönderir; talep önce talep edenin departman onaycısına, sonra satınalmaya (Satınalma Masası) düşer. Onaylanan talep Tüm Talepler listesinde satınalma ekibinin işine düşer; teklif toplama süreci buradan başlar. Teklif, sipariş, transfer ve stok miktarı bu dalın kapsamında değildir.
+Departmanların iç ve dış ihtiyaç duydukları malzemeleri satınalmaya iletmesi. Talep eden personel talebi ve satırlarını girer, onaya gönderir; talep önce talep edenin departman onaycısına, sonra satınalmaya düşer. Onaylanan talep Tüm Talepler listesinde satınalma ekibinin işine düşer; teklif toplama süreci buradan başlar. Teklif, sipariş, transfer ve stok miktarı bu dalın kapsamında değildir.
### 2. Analiz ve kararlar
-- Wizard List ekranları + menüsüz satır alt formu + Grid Workflow. Beş liste aynı tabloyu (`Prc_T_MaterialRequest`) filtreyle gösterir.
+- Wizard List ekranları + menüsüz satır alt formu + Grid Workflow. Taleplerim ve iki onay listesi aynı tabloyu (`Prc_T_MaterialRequest`) filtreyle gösterir; Tüm Talepler başlık × kalem görünümünden (`Prc_V_MaterialRequestLine`) okur, her kalem bir satırdır.
- Belge no numaratörden: `MaterialRequest` (MT-YYYY-00001, yıllık sıfırlanır). Şirket alanı açılmadı (kiracı kapsamı).
-- Departman onaycısı: `Adm_T_Approver`'da Onay Yeri = Satınalma (`Purchase`) ve talebin departmanı. Satınalma onaycısı: Onaycılar'a eklenen yeni Onay Yeri **Satınalma Masası** (`PurchaseDesk`) satırları, departmandan bağımsız. Herhangi bir onaycının onayı yeterli.
+- Departman onaycısı: `Adm_T_Approver`'da Onay Yeri = Satınalma (`Purchase`) ve talebin departmanı. Satınalma onaycısı Onaycılar'da tanımlanmaz: Satınalma Onayı Bekleyenler ekranında karar verebilen, yani `App.Prc.MaterialRequestPurchaseApproval.Update` yetkisi doğrudan ya da rolüyle verilmiş aktif kullanıcılardır (satınalma ekibinin rolüne bu yetki verilir). Herhangi bir onaycının onayı yeterli.
- Taslak aşaması: kayıt Taslak açılır; akış platformun Onaya Gönder işlemiyle başlar (`WorkflowDto.ApprovalIsManualStart: true` — yoksa yeni kayıt akışı kendiliğinden başlatır ve satır girilemez).
- Görseldeki "Kendi Depomda" ve "Tüm Depolar" stok kolonları üretilmedi: uygulamada stok miktarı/hareket tablosu yok; stok modülü gelince ayrı talep.
- Karşılama Şekli: Satınalma / Depodan Transfer.
-- Onay akışının "onaylayan" alanı platformda kullanıcı adı (metin) yazdığı için akışa bağlanmadı (`ApprovalUserFieldName` boş); departman/satınalma onaylayanı kayıt sonrası prosedürde kaydı son güncelleyen kullanıcıdan yazılır. `ApproverId` kolonu kullanılmaz.
+- İş akışı kolonları tablo tasarımcısının Workflow şablonundaki dörtlüdür: `ApprovalUserName` nvarchar(256) (onaycı kullanıcı adları), `ApprovalStatus` nvarchar(50) (bulunulan düğümün başlığı), `ApprovalDate` datetime, `ApprovalDescription` nvarchar(200); dört ekranın `WorkflowDto`'su bunlara bağlıdır. Departman ve satınalma kararları ayrı kolonda tutulmaz; her karar (karar veren, açıklama, red nedeni) iş akışı notlarına yazılır.
+- Onay ve red bilgileri popup düzenleme formunda yer almaz (iş akışı yazar); listede kolon olarak görünür.
+- Red nedeni ayrı kolonda tutulmaz: onay düğümleri red sırasında Red Nedenleri listesinden (`Prc_T_RejectReason`, zorunlu) seçim ister; seçilen neden ve not `ApprovalDescription`'a ve iş akışı notuna yazılır.
- Satır tablosu `Prc_T_MaterialRequestItem` adıyla açıldı (birim kolonu `Adm_T_Uom.Id` ile aynı tipte, nvarchar). İlk açılan `Prc_T_MaterialRequestLine` scripti (UomId uniqueidentifier) kullanılmıyor.
-- Talep durumu satırlardan türetilir; ayrı Tamamlandı butonu yerine satır durumu (Bekliyor / Tamamlandı / İptal) kullanılır.
-- Planlama aşaması kaldırıldı (Planlama Bekleyenler listesi, satırdaki Planlandı durumu ve Planlanacak Miktar). İşlemde (`InProgress`) durumu korunur: talep depoya girdiğinde kullanılacak, şimdilik hiçbir kural yazmaz.
+- Talebin durumu yalnız iş akışından gelir: `ApprovalStatus` boş (taslak) › Departman Onayı › Satınalma Onayı › Onaylandı ya da Reddedildi. Ayrı `Status` kolonu yoktur; karşılama satır durumundan (Bekliyor / Tamamlandı / İptal) izlenir.
+- Planlama aşaması kaldırıldı (Planlama Bekleyenler listesi, satırdaki Planlandı durumu ve Planlanacak Miktar).
### 3. Menü ve ekranlar
-Satınalma (`App.Prc`) › Satınalma Talepleri (`App.Prc.MaterialRequests`):
+Satınalma (`App.Prc`) › Malzeme Talepleri (`App.Prc.MaterialRequests`):
| Ekran | Kod | Filtre / not |
| --- | --- | --- |
| Taleplerim | `App.Prc.MyMaterialRequest` | talep eden = oturumdaki kullanıcı; ekle/sil açık, akış |
| Departman Onayı Bekleyenler | `App.Prc.MaterialRequestDeptApproval` | ApprovalStatus = Departman Onayı; yalnız kendine düşenler |
| Satınalma Onayı Bekleyenler | `App.Prc.MaterialRequestPurchaseApproval` | ApprovalStatus = Satınalma Onayı; yalnız kendine düşenler |
-| Tüm Talepler | `App.Prc.MaterialRequest` | filtresiz; ekle/sil açık, akış |
+| Tüm Talepler | `App.Prc.MaterialRequest` | filtresiz, kalem kalem; ekle/sil kapalı, yalnız kalemin sorumlusu ve durumu düzenlenir, akış yok |
-Talep Satırları (`App.Prc.MaterialRequestLine`) menüsüz alt formdur; beş listenin hepsinde sekmedir. Red Nedenleri (`App.Prc.RejectReason`) Satınalma › Tanımlamalar altındadır (bkz. Tanımlamalar).
+Talep Satırları (`App.Prc.MaterialRequestLine`) menüsüz alt formdur; Taleplerim ve iki onay listesinde sekmedir (Tüm Talepler kalemleri kolon olarak gösterir). Red Nedenleri (`App.Prc.RejectReason`) Satınalma › Tanımlamalar altındadır (bkz. Tanımlamalar).
### 4. Veri modeli
Tüm tablolar kiracı + tam audit + soft delete taşır.
-- `Prc_T_MaterialRequest`: RequestNo, Priority (0–3), RequesterUserId, DepartmentId, WarehouseId, LocationId, RequestDate, Description, Status (Draft / DeptApproval / PurchaseApproval / Approved / InProgress / PartiallyDone / Done / Rejected), ApprovalStatus, ApprovalDate, ApprovalNote (akış), DeptApproverUserNames / PurchaseApproverUserNames (`|` ayrılmış kullanıcı adları), DeptApprovedBy/Date/Note, PurchaseApprovedBy/Date/Note, RejectReasonId, ApproverId (kullanılmaz).
+- `Prc_T_MaterialRequest`: RequestNo, Priority (0–3), RequesterUserId, DepartmentId, WarehouseId, LocationId, RequestDate, Description, ApprovalUserName, ApprovalStatus, ApprovalDate, ApprovalDescription (iş akışı), DeptApproverUserNames / PurchaseApproverUserNames (`|` ayrılmış kullanıcı adları).
- `Prc_T_MaterialRequestItem`: MaterialRequestId (FK, cascade), ProductId, Quantity, UomId (nvarchar, `Adm_T_Uom`), FulfillmentMethod (Purchase / Transfer), DueDate, RequestReason, DeliveredQuantity, PurchaseResponsibleUserId, LineStatus (Waiting / Done / Cancelled).
- `Prc_T_RejectReason`: Name, SortOrder, IsActive.
-- Prosedür `Prc_P_MaterialRequestAfterSave(@Id, @UserId)`.
+- Görünüm `Prc_V_MaterialRequestLine`: talep başlığı LEFT JOIN silinmemiş kalemler; `Id` kalemin Id'si (kalemi olmayan talepte talebin Id'si), `MaterialRequestId` talep. Tüm Talepler'in kaynağıdır.
+- Prosedür `Prc_P_MaterialRequestAfterSave(@Id)`.
### 5. İş kuralları ve hesaplar
-- `Prc_P_MaterialRequestAfterSave` talep kaydı/güncellemesi ve satır ekleme/güncelleme/silme sonrasında çalışır: onaycı kullanıcı listelerini Onaycılar'dan yeniden yazar; ApprovalStatus departman adımını geçince departman onay bilgilerini, Onaylandı/Reddedildi olunca satınalma onay bilgilerini (onaylayan, tarih, not) kopyalar; Status'u türetir: Departman Onayı → DeptApproval, Satınalma Onayı → PurchaseApproval, Reddedildi → Rejected, Onaylandı → satırlara göre (tümü Tamamlandı/İptal → Done, bir kısmı Tamamlandı → PartiallyDone, değilse Approved), boş → Draft.
+- `Prc_P_MaterialRequestAfterSave` talep kaydı/güncellemesi sonrasında çalışır ve onaycı kullanıcı listelerini (`DeptApproverUserNames`, `PurchaseApproverUserNames`) Onaycılar'dan yeniden yazar. Onaycılar sonradan değişirse talep yeniden kaydedilene kadar liste eski kalır. İki liste formda ve listede gizlidir; iş akışı onaycıyı bu alanlardan okur (`@DeptApproverUserNames`, `@PurchaseApproverUserNames`).
- Onaya gönderilmiş talebe satır eklenemez ve satır silinemez (alt form Insert/Delete Before komutu). Onay sürecindeki ya da onaylanmış talep silinemez; reddedilen talep silinebilir.
- Ürün listesi yalnız aktif ve satın alınabilir ürünleri gösterir; birim ürünün satınalma biriminden (yoksa biriminden) kopyalanır, salt okunurdur.
- Depo değişince konum temizlenir; konum listesi depoya göre süzülür. Talep eden değişince departmanı kullanıcı kartından gelir; yeni kayıtta departman oturumdaki kullanıcının departmanıdır.
-- Onaycı listesi boşsa akış o adımda hata verir: Onaycılar'a ilgili departman için Satınalma ve en az bir Satınalma Masası satırı tanımlanmalıdır.
+- Tüm Talepler'de düzenleme `UpdateCommand` ile yalnız `Prc_T_MaterialRequestItem`'ın `PurchaseResponsibleUserId` ve `LineStatus` kolonlarını yazar; başlık alanları salt okunurdur. Kartlar kalemi değil talebi sayar (tablodan okur).
+- Onaycı listesi boşsa akış o adımda hata verir: Onaycılar'a ilgili departman için Satınalma satırı tanımlanmalı ve en az bir kullanıcıya (ya da rolüne) Satınalma Onayı Bekleyenler güncelleme yetkisi verilmelidir.
### 6. Yetki ve görünürlük
@@ -122,26 +126,27 @@ Yetki ağacı: `App.Prc` › `App.Prc.MaterialRequests` › her liste (+ Create/
### 7. Entegrasyonlar
-Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma Masası); Envanter › Tanımlamalar › Ürünler, Depolar, Konumlar; İK departmanları; Yönetim › Tanımlamalar › Diziler (`MaterialRequest`). Akış e-posta bildirimi platformun iş akışı altyapısındadır. Teklif/sipariş modülüyle entegrasyon yok.
+Yönetim › Tanımlamalar › Onaycılar (onay yeri Satınalma); Yönetim › Roller (Satınalma Onayı Bekleyenler yetkisi); Envanter › Tanımlamalar › Ürünler, Depolar, Konumlar; İK departmanları; Yönetim › Tanımlamalar › Diziler (`MaterialRequest`). Akış e-posta bildirimi platformun iş akışı altyapısındadır. Teklif/sipariş modülüyle entegrasyon yok.
### 8. Akış örneği
-1. Onaycılar'da BT departmanı için Satınalma yerinde Ayşe, Satınalma Masası yerinde Mehmet tanımlıdır.
+1. Onaycılar'da BT departmanı için Satınalma yerinde Ayşe tanımlıdır; Mehmet'in rolünde Satınalma Onayı Bekleyenler güncelleme yetkisi vardır.
2. BT'den Ali Taleplerim'de yeni talep açar (MT-2026-00001), depo/konum seçer, Talep Satırları'na 10 adet ürün, termin ve neden girer; Onaya Gönder der.
3. Ayşe Departman Onayı Bekleyenler'de talebi onaylar; talep Satınalma Onayı Bekleyenler'e geçer.
4. Mehmet onaylar; talep Onaylandı olur, Ali'ye bilgi gider.
-5. Satınalma Tüm Talepler'de satıra sorumluyu atar ve satırı Tamamlandı yapar (talep Tamamlandı).
+5. Satınalma Tüm Talepler'de satıra sorumluyu atar ve satırı Tamamlandı yapar.
### 9. Sık sorulanlar
-- **Talebim onay listesinde görünmüyor?** Onaycılar'da talebin departmanı için aktif Satınalma satırı olmalı; satınalma adımı için aktif Satınalma Masası satırı gerekir.
+- **Talebim onay listesinde görünmüyor?** Onaycılar'da talebin departmanı için aktif Satınalma satırı olmalı; satınalma adımı için en az bir aktif kullanıcının (doğrudan ya da rolüyle) Satınalma Onayı Bekleyenler güncelleme yetkisi olmalıdır. Onaycılar ya da yetkiler talep açıldıktan sonra değiştiyse talebi bir kez kaydedin.
- **Onaya gönderdikten sonra satır ekleyebilir miyim?** Hayır; talep reddedilirse ya da akış başa dönerse yeniden düzenlenir.
- **Kendi Depomda / Tüm Depolar miktarları nerede?** Stok modülü geldiğinde eklenecek.
-- **Red nedeni nereden seçilir?** Onay listelerindeki talep formunda Red Nedeni alanından (Satınalma › Tanımlamalar › Red Nedenleri).
+- **Red nedeni nereden seçilir?** Reddet düğmesinin açtığı karar penceresinde, Satınalma › Tanımlamalar › Red Nedenleri listesinden; neden ve not Onay Açıklaması kolonunda görünür.
### 10. Dosyalar ve geri alma
- Tablolar: `sql/object/Prc_T_MaterialRequest.sql`, `Prc_T_MaterialRequestItem.sql`, `Prc_T_RejectReason.sql` (+ postgres eşleri); kullanılmayan `Prc_T_MaterialRequestLine.sql`.
+- Görünüm: `sql/object/Prc_V_MaterialRequestLine.sql` (+ postgres).
- Prosedür: `sql/object/Prc_P_MaterialRequestAfterSave.sql` (+ postgres).
- Wizard'lar: `Prc_MaterialRequestLine.json`, `Prc_MyMaterialRequest.json`, `Prc_MaterialRequestDeptApproval.json`, `Prc_MaterialRequestPurchaseApproval.json`, `Prc_MaterialRequest.json`, `Prc_RejectReason.json`; güncellenen `Adm_Approver.json`.
- Numaratör: `App.Definitions.Sequence` › `MaterialRequest`.
@@ -255,7 +260,7 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| Menü | `App.Prc.Definitions` › `App.Prc.RejectReason` (sıra 5) |
| Yetki | `App.Prc.RejectReason` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Red Nedenleri — satınalma taleplerinin reddedilme sebepleri (ihtiyaç yok, miktar uygun değil, yanlış ürün, bütçe uygun değil, diğer). |
-| Geliştirme talebi | Satınalma -> Satınalma Talepleri |
+| Geliştirme talebi | Satınalma -> Malzeme Talepleri |
| Kaynak | `Prc_T_RejectReason` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
@@ -270,7 +275,7 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| `SortOrder` | Sıra | dxNumberBox | ✓ | ✓ | |
| `IsActive` | Aktif | dxCheckBox | ✓ | ✓ | |
-### Satınalma Talepleri (`App.Prc.MaterialRequests`)
+### Malzeme Talepleri (`App.Prc.MaterialRequests`)
#### Taleplerim — `App.Prc.MyMaterialRequest`
@@ -281,7 +286,7 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| Menü | `App.Prc.MaterialRequests` › `App.Prc.MyMaterialRequest` (sıra 1) |
| Yetki | `App.Prc.MyMaterialRequest` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Taleplerim — açtığınız malzeme talepleri, tüm durumlarıyla. |
-| Geliştirme talebi | Satınalma -> Satınalma Talepleri |
+| Geliştirme talebi | Satınalma -> Malzeme Talepleri |
| Kaynak | `Prc_T_MaterialRequest` · filtre `"IsDeleted" = 'false' AND "RequesterUserId" = '@USERID'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
@@ -289,7 +294,7 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| Alt formlar | `App.Prc.MaterialRequestLine` (Id → MaterialRequestId) |
| Widget'lar | `App.Prc.MaterialRequest.Widget.Mine`, `App.Prc.MaterialRequest.Widget.Pending`, `App.Prc.MaterialRequest.Widget.Approved`, `App.Prc.MaterialRequest.Widget.Rejected` |
| Komutlar | InsertAfter: `Prc_P_MaterialRequestAfterSave` · UpdateAfter: `Prc_P_MaterialRequestAfterSave` · DeleteBefore: SQL |
-| Form varsayılanları | RequestNo=MaterialRequest1, RequesterUserId=@USERID, DepartmentId=, RequestDate=@NOW, Priority=0, Status=Draft |
+| Form varsayılanları | RequestNo=MaterialRequest1, RequesterUserId=@USERID, DepartmentId=, RequestDate=@NOW, Priority=0 |
| Onay akışı | Start 'Onaya Gönderildi' → Approval 'Departman Onayı' → Approval 'Satınalma Onayı' → End 'Onaylandı' → End 'Reddedildi' |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
@@ -301,21 +306,13 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| `WarehouseId` | Depo | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Warehouse · script |
| `LocationId` | Konum | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Location (← WarehouseId) |
| `RequestDate` | Talep Tarihi | dxDateBox | ✓ | ✓ | |
-| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Draft, DeptApproval, PurchaseApproval, Approved, InProgress, PartiallyDone, Done, Rejected |
-| `ApprovalStatus` | Onay Durumu | dxTextBox | | ✓ | |
-| `RejectReasonId` | Red Nedeni | dxSelectBox | | ✓ | sorgu: Prc_T_RejectReason |
| `Description` | Genel Açıklama | dxTextBox | | ✓ | |
-| `PurchaseApproverUserNames` | Satınalma Onaycıları | dxTextBox | | | |
-| `ApproverId` | Onaylayan Kimlik | dxTextBox | | | |
+| `ApprovalStatus` | Onay Durumu | dxTextBox | | | |
+| `ApprovalUserName` | Onaylayan Kullanıcı Adı | dxTextBox | | | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | | |
-| `ApprovalNote` | Onay Notu | dxTextArea | | | |
-| `DeptApproverUserNames` | Departman Onaycıları | dxTextBox | | ✓ | |
-| `PurchaseApprovedBy` | Satınalma Onaylayan | dxSelectBox | | ✓ | sorgu: AbpUsers |
-| `DeptApprovedBy` | Departman Onaylayan | dxSelectBox | | ✓ | sorgu: AbpUsers |
-| `PurchaseApprovalDate` | Satınalma Onay Tarihi | dxDateBox | | ✓ | |
-| `DeptApprovalDate` | Departman Onay Tarihi | dxDateBox | | ✓ | |
-| `PurchaseApprovalNote` | Satınalma Onay Notu | dxTextArea | | ✓ | |
-| `DeptApprovalNote` | Departman Onay Notu | dxTextArea | | ✓ | |
+| `ApprovalDescription` | Onay Açıklaması | dxTextBox | | | |
+| `PurchaseApproverUserNames` | Satınalma Onaycıları | dxTextBox | | | |
+| `DeptApproverUserNames` | Departman Onaycıları | dxTextBox | | | |
#### Departman Onayı Bekleyenler — `App.Prc.MaterialRequestDeptApproval`
@@ -326,7 +323,7 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| Menü | `App.Prc.MaterialRequests` › `App.Prc.MaterialRequestDeptApproval` (sıra 2) |
| Yetki | `App.Prc.MaterialRequestDeptApproval` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Departman Onayı Bekleyenler — departman onaycısının kararını bekleyen malzeme talepleri. |
-| Geliştirme talebi | Satınalma -> Satınalma Talepleri |
+| Geliştirme talebi | Satınalma -> Malzeme Talepleri |
| Kaynak | `Prc_T_MaterialRequest` · filtre `"IsDeleted" = 'false' AND "ApprovalStatus" = N'Departman Onayı'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
@@ -334,7 +331,7 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| Alt formlar | `App.Prc.MaterialRequestLine` (Id → MaterialRequestId) |
| Widget'lar | `App.Prc.MaterialRequest.Status.DeptApproval`, `App.Prc.MaterialRequest.Status.PurchaseApproval`, `App.Prc.MaterialRequest.Status.Rejected` |
| Komutlar | UpdateAfter: `Prc_P_MaterialRequestAfterSave` |
-| Form varsayılanları | Priority=0, Status=Draft |
+| Form varsayılanları | Priority=0 |
| Onay akışı | Start 'Onaya Gönderildi' → Approval 'Departman Onayı' → Approval 'Satınalma Onayı' → End 'Onaylandı' → End 'Reddedildi' |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
@@ -346,14 +343,13 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| `WarehouseId` | Depo | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Warehouse |
| `LocationId` | Konum | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Location |
| `RequestDate` | Talep Tarihi | dxDateBox | ✓ | ✓ | |
-| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Draft, DeptApproval, PurchaseApproval, Approved, InProgress, PartiallyDone, Done, Rejected |
-| `ApprovalStatus` | Onay Durumu | dxTextBox | | ✓ | |
-| `RejectReasonId` | Red Nedeni | dxSelectBox | | ✓ | sorgu: Prc_T_RejectReason |
| `Description` | Genel Açıklama | dxTextArea | | ✓ | |
+| `ApprovalStatus` | Onay Durumu | dxTextBox | | | |
| `DeptApproverUserNames` | Departman Onaycıları | dxTextBox | | | |
| `PurchaseApproverUserNames` | Satınalma Onaycıları | dxTextBox | | | |
+| `ApprovalUserName` | Onaylayan Kullanıcı Adı | dxTextBox | | | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | | |
-| `ApprovalNote` | Onay Notu | dxTextArea | | | |
+| `ApprovalDescription` | Onay Açıklaması | dxTextBox | | | |
#### Satınalma Onayı Bekleyenler — `App.Prc.MaterialRequestPurchaseApproval`
@@ -364,7 +360,7 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| Menü | `App.Prc.MaterialRequests` › `App.Prc.MaterialRequestPurchaseApproval` (sıra 3) |
| Yetki | `App.Prc.MaterialRequestPurchaseApproval` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Satınalma Onayı Bekleyenler — departmanca onaylanmış ve satınalmanın kararını bekleyen malzeme talepleri. |
-| Geliştirme talebi | Satınalma -> Satınalma Talepleri |
+| Geliştirme talebi | Satınalma -> Malzeme Talepleri |
| Kaynak | `Prc_T_MaterialRequest` · filtre `"IsDeleted" = 'false' AND "ApprovalStatus" = N'Satınalma Onayı'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · popup |
@@ -372,7 +368,7 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| Alt formlar | `App.Prc.MaterialRequestLine` (Id → MaterialRequestId) |
| Widget'lar | `App.Prc.MaterialRequest.Status.PurchaseApproval`, `App.Prc.MaterialRequest.Status.Approved`, `App.Prc.MaterialRequest.Status.Rejected` |
| Komutlar | UpdateAfter: `Prc_P_MaterialRequestAfterSave` |
-| Form varsayılanları | Priority=0, Status=Draft |
+| Form varsayılanları | Priority=0 |
| Onay akışı | Start 'Onaya Gönderildi' → Approval 'Departman Onayı' → Approval 'Satınalma Onayı' → End 'Onaylandı' → End 'Reddedildi' |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
@@ -384,17 +380,13 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| `WarehouseId` | Depo | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Warehouse |
| `LocationId` | Konum | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Location |
| `RequestDate` | Talep Tarihi | dxDateBox | ✓ | ✓ | |
-| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Draft, DeptApproval, PurchaseApproval, Approved, InProgress, PartiallyDone, Done, Rejected |
-| `ApprovalStatus` | Onay Durumu | dxTextBox | | ✓ | |
-| `RejectReasonId` | Red Nedeni | dxSelectBox | | ✓ | sorgu: Prc_T_RejectReason |
| `Description` | Genel Açıklama | dxTextArea | | ✓ | |
+| `ApprovalStatus` | Onay Durumu | dxTextBox | | | |
| `DeptApproverUserNames` | Departman Onaycıları | dxTextBox | | | |
| `PurchaseApproverUserNames` | Satınalma Onaycıları | dxTextBox | | | |
+| `ApprovalUserName` | Onaylayan Kullanıcı Adı | dxTextBox | | | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | | |
-| `ApprovalNote` | Onay Notu | dxTextArea | | | |
-| `DeptApprovedBy` | Departman Onaylayan | dxSelectBox | | ✓ | sorgu: AbpUsers |
-| `DeptApprovalDate` | Departman Onay Tarihi | dxDateBox | | ✓ | |
-| `DeptApprovalNote` | Departman Onay Notu | dxTextArea | | ✓ | |
+| `ApprovalDescription` | Onay Açıklaması | dxTextBox | | | |
#### Tüm Talepler — `App.Prc.MaterialRequest`
@@ -404,42 +396,38 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| Yol | Liste (Wizard) |
| Menü | `App.Prc.MaterialRequests` › `App.Prc.MaterialRequest` (sıra 5) |
| Yetki | `App.Prc.MaterialRequest` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
-| Açıklama | Tüm Talepler — kurumun bütün malzeme talepleri, tüm durumlarıyla; satınalma yönetiminin listesi. |
-| Geliştirme talebi | Satınalma -> Satınalma Talepleri |
-| Kaynak | `Prc_T_MaterialRequest` · filtre `"IsDeleted" = 'false'` |
+| Açıklama | Tüm Talepler — kurumun bütün malzeme talepleri, tüm durumlarıyla, kalem kalem; satınalma yönetiminin listesi. |
+| Geliştirme talebi | Satınalma -> Malzeme Talepleri |
+| Kaynak | `Prc_V_MaterialRequestLine` · 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.Prc.MaterialRequestLine` (Id → MaterialRequestId) |
| Widget'lar | `App.Prc.MaterialRequest.Status.DeptApproval`, `App.Prc.MaterialRequest.Status.PurchaseApproval`, `App.Prc.MaterialRequest.Status.Approved`, `App.Prc.MaterialRequest.Status.Rejected` |
-| Komutlar | InsertAfter: `Prc_P_MaterialRequestAfterSave` · UpdateAfter: `Prc_P_MaterialRequestAfterSave` · DeleteBefore: SQL |
-| Form varsayılanları | RequestNo=MaterialRequest1, RequesterUserId=@USERID, DepartmentId=, RequestDate=@NOW, Priority=0, Status=Draft |
-| Onay akışı | Start 'Onaya Gönderildi' → Approval 'Departman Onayı' → Approval 'Satınalma Onayı' → End 'Onaylandı' → End 'Reddedildi' |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
| --- | --- | --- | --- | --- | --- |
-| `RequestNo` | Talep No | dxTextBox | | ✓ | |
-| `Priority` | Öncelik (0-3) | dxRating | ✓ | ✓ | |
-| `RequesterUserId` | Talep Eden | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers · script |
-| `DepartmentId` | Departman | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Department |
-| `WarehouseId` | Depo | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Warehouse · script |
-| `LocationId` | Konum | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Location (← WarehouseId) |
-| `RequestDate` | Talep Tarihi | dxDateBox | ✓ | ✓ | |
-| `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Draft, DeptApproval, PurchaseApproval, Approved, InProgress, PartiallyDone, Done, Rejected |
-| `ApprovalStatus` | Onay Durumu | dxTextBox | | ✓ | |
-| `RejectReasonId` | Red Nedeni | dxSelectBox | | ✓ | sorgu: Prc_T_RejectReason |
-| `Description` | Genel Açıklama | dxTextBox | | ✓ | |
-| `PurchaseApproverUserNames` | Satınalma Onaycıları | dxTextBox | | | |
-| `ApproverId` | Onaylayan Kimlik | dxTextBox | | | |
+| `RequestNo` | Talep No | dxTextBox | | | |
+| `Priority` | Öncelik (0-3) | dxRating | ✓ | | |
+| `RequesterUserId` | Talep Eden | dxSelectBox | ✓ | | sorgu: AbpUsers |
+| `DepartmentId` | Departman | dxSelectBox | ✓ | | sorgu: Hr_T_Department |
+| `WarehouseId` | Depo | dxSelectBox | ✓ | | sorgu: Inv_T_Warehouse |
+| `LocationId` | Konum | dxSelectBox | ✓ | | sorgu: Inv_T_Location (← WarehouseId) |
+| `RequestDate` | Talep Tarihi | dxDateBox | ✓ | | |
+| `Description` | Genel Açıklama | dxTextBox | | | |
+| `ApprovalStatus` | Onay Durumu | dxTextBox | | | |
+| `ApprovalUserName` | Onaylayan Kullanıcı Adı | dxTextBox | | | |
| `ApprovalDate` | Onay Tarihi | dxDateBox | | | |
-| `ApprovalNote` | Onay Notu | dxTextArea | | | |
-| `DeptApproverUserNames` | Departman Onaycıları | dxTextBox | | ✓ | |
-| `PurchaseApprovedBy` | Satınalma Onaylayan | dxSelectBox | | ✓ | sorgu: AbpUsers |
-| `DeptApprovedBy` | Departman Onaylayan | dxSelectBox | | ✓ | sorgu: AbpUsers |
-| `PurchaseApprovalDate` | Satınalma Onay Tarihi | dxDateBox | | ✓ | |
-| `DeptApprovalDate` | Departman Onay Tarihi | dxDateBox | | ✓ | |
-| `PurchaseApprovalNote` | Satınalma Onay Notu | dxTextArea | | ✓ | |
-| `DeptApprovalNote` | Departman Onay Notu | dxTextArea | | ✓ | |
+| `ApprovalDescription` | Onay Açıklaması | dxTextBox | | | |
+| `MaterialRequestId` | Malzeme Talebi | dxTextBox | | | |
+| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product |
+| `Quantity` | Miktar | dxNumberBox | | | |
+| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom |
+| `FulfillmentMethod` | Karşılama Şekli | dxSelectBox | | | liste: Purchase, Transfer |
+| `DueDate` | Termin Tarihi | dxDateBox | | | |
+| `RequestReason` | Talep Nedeni | dxTextArea | | | |
+| `DeliveredQuantity` | Teslim | dxNumberBox | | | |
+| `PurchaseResponsibleUserId` | Satınalma Sorumlusu | dxSelectBox | | ✓ | sorgu: AbpUsers |
+| `LineStatus` | Satır Durumu | dxSelectBox | ✓ | ✓ | liste: Waiting, Done, Cancelled |
#### Talep Satırları — `App.Prc.MaterialRequestLine`
@@ -450,12 +438,12 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| Menü | Menüsüz (alt form) |
| Yetki | `App.Prc.MaterialRequestLine` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` |
| Açıklama | Talep Satırları — malzeme talebinde istenen ürünler. |
-| Geliştirme talebi | Satınalma -> Satınalma Talepleri |
+| Geliştirme talebi | Satınalma -> Malzeme Talepleri |
| Kaynak | `Prc_T_MaterialRequestItem` · filtre `"IsDeleted" = 'false'` |
| Görünümler | Grid, Card, Pivot, Chart (açılış grid) |
| Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup |
| Kapsam | Kiracı |
-| Komutlar | InsertBefore: SQL · InsertAfter: `Prc_P_MaterialRequestAfterSave` · UpdateAfter: `Prc_P_MaterialRequestAfterSave` · DeleteBefore: SQL · DeleteAfter: `Prc_P_MaterialRequestAfterSave` |
+| Komutlar | InsertBefore: SQL · DeleteBefore: SQL |
| Form varsayılanları | FulfillmentMethod=Purchase, DeliveredQuantity=0, LineStatus=Waiting, Quantity=1, PurchaseResponsibleUserId=@USERID |
| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak |
@@ -466,7 +454,7 @@ Yönetim › Tanımlamalar › Onaycılar (onay yerleri Satınalma ve Satınalma
| `UomId` | Birim | dxSelectBox | ✓ | ✓ | sorgu: Adm_T_Uom |
| `FulfillmentMethod` | Karşılama Şekli | dxSelectBox | ✓ | ✓ | liste: Purchase, Transfer |
| `DueDate` | Termin Tarihi | dxDateBox | ✓ | ✓ | |
-| `RequestReason` | Talep Nedeni | dxTextBox | ✓ | ✓ | |
+| `RequestReason` | Talep Nedeni | dxTextArea | ✓ | ✓ | |
| `DeliveredQuantity` | Teslim | dxNumberBox | | ✓ | |
| `PurchaseResponsibleUserId` | Satınalma Sorumlusu | dxSelectBox | | ✓ | sorgu: AbpUsers |
| `LineStatus` | Satır Durumu | dxSelectBox | ✓ | ✓ | liste: Waiting, Done, Cancelled |
diff --git a/configs/seeds/postgres/object/Prc_P_MaterialRequestAfterSave.sql b/configs/seeds/postgres/object/Prc_P_MaterialRequestAfterSave.sql
index e68addd2..db8dafe6 100644
--- a/configs/seeds/postgres/object/Prc_P_MaterialRequestAfterSave.sql
+++ b/configs/seeds/postgres/object/Prc_P_MaterialRequestAfterSave.sql
@@ -1,6 +1,5 @@
CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestAfterSave"(
- "p_Id" uuid,
- "p_UserId" uuid DEFAULT NULL
+ "p_Id" uuid
)
LANGUAGE plpgsql
AS $$
@@ -17,45 +16,20 @@ BEGIN
AND a."TenantId" IS NOT DISTINCT FROM r."TenantId"),
"PurchaseApproverUserNames" = (
SELECT string_agg(u."UserName", '|')
- FROM "Adm_T_Approver" a
- INNER JOIN "AbpUsers" u ON u."Id" = a."ApproverUserId" AND u."IsDeleted" = false
- WHERE a."IsDeleted" = false AND a."IsActive" = true AND a."ApprovalArea" = 'PurchaseDesk'
- AND a."TenantId" IS NOT DISTINCT FROM r."TenantId")
- WHERE r."Id" = "p_Id";
-
- UPDATE "Prc_T_MaterialRequest" r SET
- "PurchaseApprovedBy" = COALESCE("p_UserId", r."LastModifierId"),
- "PurchaseApprovalDate" = COALESCE(r."ApprovalDate", now()),
- "PurchaseApprovalNote" = r."ApprovalNote"
- WHERE r."Id" = "p_Id" AND r."PurchaseApprovedBy" IS NULL AND r."DeptApprovedBy" IS NOT NULL
- AND r."ApprovalStatus" IN ('Onaylandı', 'Reddedildi');
-
- UPDATE "Prc_T_MaterialRequest" r SET
- "DeptApprovedBy" = COALESCE("p_UserId", r."LastModifierId"),
- "DeptApprovalDate" = COALESCE(r."ApprovalDate", now()),
- "DeptApprovalNote" = r."ApprovalNote"
- WHERE r."Id" = "p_Id" AND r."DeptApprovedBy" IS NULL
- AND r."ApprovalStatus" IN ('Satınalma Onayı', 'Onaylandı', 'Reddedildi');
-
- UPDATE "Prc_T_MaterialRequest" r SET "Status" =
- CASE
- WHEN r."ApprovalStatus" = 'Departman Onayı' THEN 'DeptApproval'
- WHEN r."ApprovalStatus" = 'Satınalma Onayı' THEN 'PurchaseApproval'
- WHEN r."ApprovalStatus" = 'Reddedildi' THEN 'Rejected'
- WHEN r."ApprovalStatus" = 'Onaylandı' THEN
- CASE
- WHEN s."Total" > 0 AND s."Closed" = s."Total" THEN 'Done'
- WHEN s."Closed" > 0 THEN 'PartiallyDone'
- ELSE 'Approved'
- END
- ELSE 'Draft'
- END
- FROM (
- SELECT COUNT(*) AS "Total",
- COALESCE(SUM(CASE WHEN l."LineStatus" IN ('Done', 'Cancelled') THEN 1 ELSE 0 END), 0) AS "Closed"
- FROM "Prc_T_MaterialRequestItem" l
- WHERE l."MaterialRequestId" = "p_Id" AND l."IsDeleted" = false
- ) s
+ FROM "AbpUsers" u
+ WHERE u."IsDeleted" = false AND u."IsActive" = true
+ AND u."TenantId" IS NOT DISTINCT FROM r."TenantId"
+ AND EXISTS (
+ SELECT 1
+ FROM "AbpPermissionGrants" g
+ WHERE g."Name" = 'App.Prc.MaterialRequestPurchaseApproval.Update'
+ AND g."TenantId" IS NOT DISTINCT FROM r."TenantId"
+ AND ((g."ProviderName" = 'U' AND g."ProviderKey" = u."Id"::text)
+ OR (g."ProviderName" = 'R' AND g."ProviderKey" IN (
+ SELECT ro."Name"
+ FROM "AbpUserRoles" ur
+ INNER JOIN "AbpRoles" ro ON ro."Id" = ur."RoleId"
+ WHERE ur."UserId" = u."Id")))))
WHERE r."Id" = "p_Id";
END;
$$;
diff --git a/configs/seeds/postgres/object/Prc_T_MaterialRequest.sql b/configs/seeds/postgres/object/Prc_T_MaterialRequest.sql
index 2dc0dc9b..5d358f81 100644
--- a/configs/seeds/postgres/object/Prc_T_MaterialRequest.sql
+++ b/configs/seeds/postgres/object/Prc_T_MaterialRequest.sql
@@ -10,20 +10,12 @@ CREATE TABLE IF NOT EXISTS public."Prc_T_MaterialRequest"
"LocationId" uuid NOT NULL,
"RequestDate" timestamp NOT NULL DEFAULT LOCALTIMESTAMP,
"Description" text NULL,
- "Status" varchar(32) NOT NULL DEFAULT 'Draft',
- "ApprovalStatus" varchar(32) NULL,
- "ApproverId" uuid NULL,
+ "ApprovalUserName" varchar(256) NULL,
+ "ApprovalStatus" varchar(50) NULL,
"ApprovalDate" timestamp NULL,
- "ApprovalNote" text NULL,
+ "ApprovalDescription" varchar(200) NULL,
"DeptApproverUserNames" text NULL,
"PurchaseApproverUserNames" text NULL,
- "DeptApprovedBy" uuid NULL,
- "DeptApprovalDate" timestamp NULL,
- "DeptApprovalNote" text NULL,
- "PurchaseApprovedBy" uuid NULL,
- "PurchaseApprovalDate" timestamp NULL,
- "PurchaseApprovalNote" text NULL,
- "RejectReasonId" uuid NULL,
"CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'),
"CreatorId" uuid NULL,
"LastModificationTime" timestamp NULL,
@@ -34,6 +26,6 @@ CREATE TABLE IF NOT EXISTS public."Prc_T_MaterialRequest"
CONSTRAINT "PK_Prc_T_MaterialRequest" PRIMARY KEY ("Id")
);
-CREATE INDEX IF NOT EXISTS "IX_Prc_T_MaterialRequest_TenantId_Status" ON public."Prc_T_MaterialRequest" ("TenantId", "Status");
+CREATE INDEX IF NOT EXISTS "IX_Prc_T_MaterialRequest_TenantId_ApprovalStatus" ON public."Prc_T_MaterialRequest" ("TenantId", "ApprovalStatus");
CREATE INDEX IF NOT EXISTS "IX_Prc_T_MaterialRequest_TenantId_RequesterUserId" ON public."Prc_T_MaterialRequest" ("TenantId", "RequesterUserId");
diff --git a/configs/seeds/postgres/object/Prc_V_MaterialRequestLine.sql b/configs/seeds/postgres/object/Prc_V_MaterialRequestLine.sql
new file mode 100644
index 00000000..8cbbec5b
--- /dev/null
+++ b/configs/seeds/postgres/object/Prc_V_MaterialRequestLine.sql
@@ -0,0 +1,11 @@
+CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestLine"
+AS
+-- Tüm Talepler listesinin kaynağı: talep başlığı × kalem, her kalem bir satır. Kalemi olmayan talep de
+-- listeden düşmesin diye LEFT JOIN; o satırın anahtarı talebin kendi Id'sidir.
+SELECT COALESCE(i."Id", r."Id") AS "Id", r."Id" AS "MaterialRequestId", r."TenantId", r."IsDeleted",
+ r."RequestNo", r."Priority", r."RequesterUserId", r."DepartmentId", r."WarehouseId", r."LocationId", r."RequestDate",
+ r."Description", r."ApprovalStatus", r."ApprovalUserName", r."ApprovalDate", r."ApprovalDescription",
+ i."ProductId", i."Quantity", i."UomId", i."FulfillmentMethod", i."DueDate", i."RequestReason", i."DeliveredQuantity",
+ i."PurchaseResponsibleUserId", i."LineStatus"
+FROM "Prc_T_MaterialRequest" r
+LEFT JOIN "Prc_T_MaterialRequestItem" i ON i."MaterialRequestId" = r."Id" AND i."IsDeleted" = FALSE;
diff --git a/configs/seeds/sql/object/Prc_P_MaterialRequestAfterSave.sql b/configs/seeds/sql/object/Prc_P_MaterialRequestAfterSave.sql
index 097d2e66..250d86a5 100644
--- a/configs/seeds/sql/object/Prc_P_MaterialRequestAfterSave.sql
+++ b/configs/seeds/sql/object/Prc_P_MaterialRequestAfterSave.sql
@@ -1,12 +1,13 @@
CREATE OR ALTER PROCEDURE [dbo].[Prc_P_MaterialRequestAfterSave]
- @Id uniqueidentifier,
- @UserId uniqueidentifier = NULL
+ @Id uniqueidentifier
AS
BEGIN
SET NOCOUNT ON;
IF @Id IS NULL RETURN;
- -- Onaycılar (Adm_T_Approver): departman onayı = Purchase + talebin departmanı, satınalma onayı = PurchaseDesk
+ -- Departman onaycıları: Onaycılar'da talebin departmanı için Satınalma onay yeri.
+ -- Satınalma onaycıları: Satınalma Onayı Bekleyenler ekranında karar verebilen (güncelleme yetkisi
+ -- doğrudan ya da rolüyle verilmiş) aktif kullanıcılar.
UPDATE r SET
DeptApproverUserNames = (
SELECT STRING_AGG(u.UserName, '|')
@@ -17,52 +18,21 @@ BEGIN
AND ((a.TenantId IS NULL AND r.TenantId IS NULL) OR a.TenantId = r.TenantId)),
PurchaseApproverUserNames = (
SELECT STRING_AGG(u.UserName, '|')
- FROM Adm_T_Approver a
- INNER JOIN AbpUsers u ON u.Id = a.ApproverUserId AND u.IsDeleted = 0
- WHERE a.IsDeleted = 0 AND a.IsActive = 1 AND a.ApprovalArea = 'PurchaseDesk'
- AND ((a.TenantId IS NULL AND r.TenantId IS NULL) OR a.TenantId = r.TenantId))
+ FROM AbpUsers u
+ WHERE u.IsDeleted = 0 AND u.IsActive = 1
+ AND ((u.TenantId IS NULL AND r.TenantId IS NULL) OR u.TenantId = r.TenantId)
+ AND EXISTS (
+ SELECT 1
+ FROM AbpPermissionGrants g
+ WHERE g.Name = N'App.Prc.MaterialRequestPurchaseApproval.Update'
+ AND ((g.TenantId IS NULL AND r.TenantId IS NULL) OR g.TenantId = r.TenantId)
+ AND ((g.ProviderName = N'U' AND g.ProviderKey = CAST(u.Id AS nvarchar(64)))
+ OR (g.ProviderName = N'R' AND g.ProviderKey IN (
+ SELECT ro.Name
+ FROM AbpUserRoles ur
+ INNER JOIN AbpRoles ro ON ro.Id = ur.RoleId
+ WHERE ur.UserId = u.Id)))))
FROM Prc_T_MaterialRequest r
WHERE r.Id = @Id;
-
- -- Satınalma kararı: departman adımı daha önce kaydedilmişse
- UPDATE r SET
- PurchaseApprovedBy = COALESCE(@UserId, r.LastModifierId),
- PurchaseApprovalDate = COALESCE(r.ApprovalDate, GETDATE()),
- PurchaseApprovalNote = r.ApprovalNote
- FROM Prc_T_MaterialRequest r
- WHERE r.Id = @Id AND r.PurchaseApprovedBy IS NULL AND r.DeptApprovedBy IS NOT NULL
- AND r.ApprovalStatus IN (N'Onaylandı', N'Reddedildi');
-
- -- Departman kararı (onaylanıp satınalmaya geçti ya da departmanda reddedildi)
- UPDATE r SET
- DeptApprovedBy = COALESCE(@UserId, r.LastModifierId),
- DeptApprovalDate = COALESCE(r.ApprovalDate, GETDATE()),
- DeptApprovalNote = r.ApprovalNote
- FROM Prc_T_MaterialRequest r
- WHERE r.Id = @Id AND r.DeptApprovedBy IS NULL
- AND r.ApprovalStatus IN (N'Satınalma Onayı', N'Onaylandı', N'Reddedildi');
-
- -- Durum: onay akışından ve satır durumlarından türetilir
- UPDATE r SET Status =
- CASE
- WHEN r.ApprovalStatus = N'Departman Onayı' THEN 'DeptApproval'
- WHEN r.ApprovalStatus = N'Satınalma Onayı' THEN 'PurchaseApproval'
- WHEN r.ApprovalStatus = N'Reddedildi' THEN 'Rejected'
- WHEN r.ApprovalStatus = N'Onaylandı' THEN
- CASE
- WHEN s.Total > 0 AND s.Closed = s.Total THEN 'Done'
- WHEN s.Closed > 0 THEN 'PartiallyDone'
- ELSE 'Approved'
- END
- ELSE 'Draft'
- END
- FROM Prc_T_MaterialRequest r
- CROSS APPLY (
- SELECT COUNT(*) AS Total,
- ISNULL(SUM(CASE WHEN l.LineStatus IN ('Done', 'Cancelled') THEN 1 ELSE 0 END), 0) AS Closed
- FROM Prc_T_MaterialRequestItem l
- WHERE l.MaterialRequestId = r.Id AND l.IsDeleted = 0
- ) s
- WHERE r.Id = @Id;
END
GO
diff --git a/configs/seeds/sql/object/Prc_T_MaterialRequest.sql b/configs/seeds/sql/object/Prc_T_MaterialRequest.sql
index 9e707802..a4726c8d 100644
--- a/configs/seeds/sql/object/Prc_T_MaterialRequest.sql
+++ b/configs/seeds/sql/object/Prc_T_MaterialRequest.sql
@@ -12,20 +12,12 @@ BEGIN
[LocationId] uniqueidentifier NOT NULL,
[RequestDate] datetime NOT NULL DEFAULT GETDATE(),
[Description] nvarchar(MAX) NULL,
- [Status] nvarchar(32) NOT NULL DEFAULT 'Draft',
- [ApprovalStatus] nvarchar(32) NULL,
- [ApproverId] uniqueidentifier NULL,
+ [ApprovalUserName] nvarchar(256) NULL,
+ [ApprovalStatus] nvarchar(50) NULL,
[ApprovalDate] datetime NULL,
- [ApprovalNote] nvarchar(MAX) NULL,
+ [ApprovalDescription] nvarchar(200) NULL,
[DeptApproverUserNames] nvarchar(MAX) NULL,
[PurchaseApproverUserNames] nvarchar(MAX) NULL,
- [DeptApprovedBy] uniqueidentifier NULL,
- [DeptApprovalDate] datetime NULL,
- [DeptApprovalNote] nvarchar(MAX) NULL,
- [PurchaseApprovedBy] uniqueidentifier NULL,
- [PurchaseApprovalDate] datetime NULL,
- [PurchaseApprovalNote] nvarchar(MAX) NULL,
- [RejectReasonId] uniqueidentifier NULL,
[CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(),
[CreatorId] uniqueidentifier NULL,
[LastModificationTime] datetime2 NULL,
@@ -41,9 +33,9 @@ BEGIN
END
GO
-IF INDEXPROPERTY(OBJECT_ID(N'[dbo].[Prc_T_MaterialRequest]'), 'IX_Prc_T_MaterialRequest_TenantId_Status', 'IndexID') IS NULL
+IF INDEXPROPERTY(OBJECT_ID(N'[dbo].[Prc_T_MaterialRequest]'), 'IX_Prc_T_MaterialRequest_TenantId_ApprovalStatus', 'IndexID') IS NULL
BEGIN
- CREATE INDEX [IX_Prc_T_MaterialRequest_TenantId_Status] ON [dbo].[Prc_T_MaterialRequest] ([TenantId] ASC, [Status] ASC);
+ CREATE INDEX [IX_Prc_T_MaterialRequest_TenantId_ApprovalStatus] ON [dbo].[Prc_T_MaterialRequest] ([TenantId] ASC, [ApprovalStatus] ASC);
END
GO
diff --git a/configs/seeds/sql/object/Prc_V_MaterialRequestLine.sql b/configs/seeds/sql/object/Prc_V_MaterialRequestLine.sql
new file mode 100644
index 00000000..3cb4398b
--- /dev/null
+++ b/configs/seeds/sql/object/Prc_V_MaterialRequestLine.sql
@@ -0,0 +1,12 @@
+CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestLine]
+AS
+-- Tüm Talepler listesinin kaynağı: talep başlığı × kalem, her kalem bir satır. Kalemi olmayan talep de
+-- listeden düşmesin diye LEFT JOIN; o satırın anahtarı talebin kendi Id'sidir.
+SELECT COALESCE(i.Id, r.Id) AS Id, r.Id AS MaterialRequestId, r.TenantId, r.IsDeleted,
+ r.RequestNo, r.Priority, r.RequesterUserId, r.DepartmentId, r.WarehouseId, r.LocationId, r.RequestDate,
+ r.Description, r.ApprovalStatus, r.ApprovalUserName, r.ApprovalDate, r.ApprovalDescription,
+ i.ProductId, i.Quantity, i.UomId, i.FulfillmentMethod, i.DueDate, i.RequestReason, i.DeliveredQuantity,
+ i.PurchaseResponsibleUserId, i.LineStatus
+FROM Prc_T_MaterialRequest r
+LEFT JOIN Prc_T_MaterialRequestItem i ON i.MaterialRequestId = r.Id AND i.IsDeleted = 0;
+GO
diff --git a/configs/seeds/wizard/Adm_Approver.json b/configs/seeds/wizard/Adm_Approver.json
index f70471ee..ef58e38d 100644
--- a/configs/seeds/wizard/Adm_Approver.json
+++ b/configs/seeds/wizard/Adm_Approver.json
@@ -32,19 +32,14 @@
"MenuTr": "Onaycılar",
"TitleEn": "Approvers",
"TitleTr": "Onaycılar",
- "DescEn": "Approvers — the single list of who approves what for each department across the application.\nWhere: Administration › Definitions › Approvers.\nFields: department (shown as Branch - Department), approval area (Purchasing / Purchasing Desk / Warehouse / Human Resources / Finance), approver user, active.\nUsed by: approval workflows read the approvers of the record's department and area. Purchasing › Material Requests: the department approval uses area Purchasing for the requester's department; the purchasing approval uses area Purchasing Desk (any department). Several approvers may be defined for the same department and area; any one of them can approve. Passive rows are ignored by workflows.",
- "DescTr": "Onaycılar — uygulamadaki tüm onay adımlarında her departman için kimin onaylayacağını tutan tek liste.\nNerede: Yönetim › Tanımlamalar › Onaycılar.\nAlanlar: departman (Şube - Departman olarak gösterilir), onay yeri (Satınalma / Satınalma Masası / Depo / İnsan Kaynakları / Finans), onaylayacak kişi, aktif.\nKullanıldığı yer: onay akışları kaydın departmanı ve onay yerine göre onaycıları buradan okur. Satınalma › Satınalma Talepleri: departman onayı talep edenin departmanındaki Satınalma satırlarını, satınalma onayı ise Satınalma Masası satırlarını (departmandan bağımsız) kullanır. Aynı departman ve onay yerine birden çok onaycı girilebilir; herhangi birinin onayı yeterlidir. Pasif satırlar akışlarda kullanılmaz.",
+ "DescEn": "Approvers — the single list of who approves what for each department across the application.\nWhere: Administration › Definitions › Approvers.\nFields: department (shown as Branch - Department), approval area (Purchasing / Warehouse / Human Resources / Finance), approver user, active.\nUsed by: approval workflows read the approvers of the record's department and area. Purchasing › Material Requests: the department approval uses area Purchasing for the requester's department; the purchasing approval is not defined here: it goes to users with update permission on Awaiting Purchasing Approval (directly or through their role). Several approvers may be defined for the same department and area; any one of them can approve. Passive rows are ignored by workflows.",
+ "DescTr": "Onaycılar — uygulamadaki tüm onay adımlarında her departman için kimin onaylayacağını tutan tek liste.\nNerede: Yönetim › Tanımlamalar › Onaycılar.\nAlanlar: departman (Şube - Departman olarak gösterilir), onay yeri (Satınalma / Depo / İnsan Kaynakları / Finans), onaylayacak kişi, aktif.\nKullanıldığı yer: onay akışları kaydın departmanı ve onay yerine göre onaycıları buradan okur. Satınalma › Malzeme Talepleri: departman onayı talep edenin departmanındaki Satınalma satırlarını, satınalma onayı burada tanımlanmaz: Satınalma Onayı Bekleyenler ekranında güncelleme yetkisi olan kullanıcılar (doğrudan ya da rolüyle) onaylar. Aynı departman ve onay yerine birden çok onaycı girilebilir; herhangi birinin onayı yeterlidir. Pasif satırlar akışlarda kullanılmaz.",
"Texts": [
{
"Key": "App.StaticLookup.Purchase",
"En": "Purchasing",
"Tr": "Satınalma"
},
- {
- "Key": "App.StaticLookup.PurchaseDesk",
- "En": "Purchasing Desk",
- "Tr": "Satınalma Masası"
- },
{
"Key": "App.StaticLookup.Warehouse",
"En": "Warehouse",
@@ -1061,7 +1056,7 @@
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
- "LookupQuery": "[{\"key\":\"Purchase\",\"name\":\"App.StaticLookup.Purchase\"},{\"key\":\"PurchaseDesk\",\"name\":\"App.StaticLookup.PurchaseDesk\"},{\"key\":\"Warehouse\",\"name\":\"App.StaticLookup.Warehouse\"},{\"key\":\"HumanResources\",\"name\":\"App.StaticLookup.HumanResources\"},{\"key\":\"Finance\",\"name\":\"App.StaticLookup.Finance\"}]"
+ "LookupQuery": "[{\"key\":\"Purchase\",\"name\":\"App.StaticLookup.Purchase\"},{\"key\":\"Warehouse\",\"name\":\"App.StaticLookup.Warehouse\"},{\"key\":\"HumanResources\",\"name\":\"App.StaticLookup.HumanResources\"},{\"key\":\"Finance\",\"name\":\"App.StaticLookup.Finance\"}]"
},
"ValidationRuleDto": [
{
@@ -1403,7 +1398,6 @@
"App.Definitions.Approver.Title",
"App.Definitions.Approver.Desc",
"App.StaticLookup.Purchase",
- "App.StaticLookup.PurchaseDesk",
"App.StaticLookup.Warehouse",
"App.StaticLookup.HumanResources",
"App.StaticLookup.Finance",
@@ -1428,6 +1422,6 @@
},
"DevRequest": {
"Id": "53294e77-a4fb-45e4-a80e-acf07b5d75be",
- "Title": "Satınalma -> Satınalma Talepleri"
+ "Title": "Satınalma -> Malzeme Talepleri"
}
}
\ No newline at end of file
diff --git a/configs/seeds/wizard/Prc_MaterialRequest.json b/configs/seeds/wizard/Prc_MaterialRequest.json
index da015923..7c4a99d8 100644
--- a/configs/seeds/wizard/Prc_MaterialRequest.json
+++ b/configs/seeds/wizard/Prc_MaterialRequest.json
@@ -25,15 +25,15 @@
},
"Language": {
"MenuParentEn": "Material Requests",
- "MenuParentTr": "Satınalma Talepleri",
+ "MenuParentTr": "Malzeme Talepleri",
"PermissionGroupEn": "Purchasing",
"PermissionGroupTr": "Satınalma",
"MenuEn": "All Requests",
"MenuTr": "Tüm Talepler",
"TitleEn": "All Material Requests",
"TitleTr": "Tüm Talepler",
- "DescEn": "All Requests — every material request of the company in every status; used by purchasing management.\nWhere: Purchasing › Material Requests › All Requests.\nFields: request no (MT-YYYY-00001, automatic), priority, requester, department, warehouse and location, request date, status (Draft › Department Approval › Purchasing Approval › Approved › In Progress › Partially Done › Done, or Rejected), approval status, rejection reason, general description; approval group: department approvers, department / purchasing approver, date and note; Request Lines tab.\nFlow: Grid Workflow — department approver (Approvers › area Purchasing of the request's department) → purchasing (area Purchasing Desk) → Approved / Rejected; the requester is notified. Status after approval follows the line statuses.\nRelated: My Requests, Awaiting Department Approval, Awaiting Purchasing Approval, Awaiting Planning, Purchasing › Definitions › Rejection Reasons.",
- "DescTr": "Tüm Talepler — kurumun bütün malzeme talepleri, tüm durumlarıyla; satınalma yönetiminin listesi.\nNerede: Satınalma › Satınalma Talepleri › Tüm Talepler.\nAlanlar: talep no (MT-YYYY-00001, otomatik), öncelik, talep eden, departman, depo ve konum, talep tarihi, durum (Taslak › Departman Onayı › Satınalma Onayı › Onaylandı › İşlemde › Kısmi Tamamlandı › Tamamlandı ya da Reddedildi), onay durumu, red nedeni, genel açıklama; onay grubu: departman onaycıları, departman / satınalma onaylayanı, tarihi ve notu; Talep Satırları sekmesi.\nAkış: Grid Workflow — departman onaycısı (Onaycılar › talebin departmanı için Satınalma onay yeri) → satınalma (Satınalma Masası onay yeri) → Onaylandı / Reddedildi; talep edene bilgi gider. Onay sonrası durum satır durumlarını izler.\nİlişkili: Taleplerim, Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Planlama Bekleyenler, Satınalma › Tanımlamalar › Red Nedenleri.",
+ "DescEn": "All Requests — every material request of the company in every status, listed per request line; list of purchasing management.\nWhere: Purchasing › Material Requests › All Requests.\nFields: each row is one request line — request header (request no, priority, requester, department, warehouse and location, request date, general description, approval status / approver / date / description) next to the line (product, quantity, unit, fulfillment method, due date, reason, delivered quantity, purchasing responsible, line status). A request without lines is shown as a single row with empty line columns.\nFlow: requests are created in My Requests and approved in Awaiting Department Approval › Awaiting Purchasing Approval; this list does not add or delete; header fields and the approval status written by that workflow are read-only, editing a row only sets the line's purchasing responsible and line status. Cards count requests, not lines.\nRelated: My Requests, Awaiting Department Approval, Awaiting Purchasing Approval, Purchasing › Definitions › Rejection Reasons.",
+ "DescTr": "Tüm Talepler — kurumun bütün malzeme talepleri, tüm durumlarıyla, kalem kalem; satınalma yönetiminin listesi.\nNerede: Satınalma › Malzeme Talepleri › Tüm Talepler.\nAlanlar: her satır bir talep kalemidir — talep başlığı (talep no, öncelik, talep eden, departman, depo ve konum, talep tarihi, genel açıklama, onay durumu / onaylayan / tarih / açıklama) ile kalemin bilgileri (ürün, miktar, birim, karşılama yöntemi, termin, talep nedeni, teslim edilen miktar, satınalma sorumlusu, satır durumu) yan yanadır. Kalemi olmayan talep, kalem kolonları boş tek satır olarak görünür.\nAkış: talep Taleplerim ekranında açılır, Departman Onayı Bekleyenler › Satınalma Onayı Bekleyenler ekranlarında onaylanır; bu liste ekleme ve silme yapmaz; başlık alanları ve o iş akışının yazdığı onay durumu salt okunurdur, satırı düzenlemek yalnız kalemin satınalma sorumlusunu ve satır durumunu değiştirir. Kartlar kalemi değil talebi sayar.\nİlişkili: Taleplerim, Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Satınalma › Tanımlamalar › Red Nedenleri.",
"Texts": [
{
"Key": "App.Prc.MaterialRequest.Group.Request",
@@ -45,11 +45,6 @@
"En": "Approval / Rejection",
"Tr": "Onay / Red Bilgileri"
},
- {
- "Key": "App.Prc.MaterialRequest.Status.Draft",
- "En": "Draft",
- "Tr": "Taslak"
- },
{
"Key": "App.Prc.MaterialRequest.Status.DeptApproval",
"En": "Department Approval",
@@ -65,21 +60,6 @@
"En": "Approved",
"Tr": "Onaylandı"
},
- {
- "Key": "App.Prc.MaterialRequest.Status.InProgress",
- "En": "In Progress",
- "Tr": "İşlemde"
- },
- {
- "Key": "App.Prc.MaterialRequest.Status.PartiallyDone",
- "En": "Partially Done",
- "Tr": "Kısmi Tamamlandı"
- },
- {
- "Key": "App.Prc.MaterialRequest.Status.Done",
- "En": "Done",
- "Tr": "Tamamlandı"
- },
{
"Key": "App.Prc.MaterialRequest.Status.Rejected",
"En": "Rejected",
@@ -139,10 +119,10 @@
"Tr": "Talep Tarihi"
},
{
- "FieldName": "Status",
- "CaptionName": "App.Listform.ListformField.Status",
- "En": "Status",
- "Tr": "Durum"
+ "FieldName": "Description",
+ "CaptionName": "App.Listform.ListformField.GeneralDescription",
+ "En": "General Description",
+ "Tr": "Genel Açıklama"
},
{
"FieldName": "ApprovalStatus",
@@ -151,28 +131,10 @@
"Tr": "Onay Durumu"
},
{
- "FieldName": "RejectReasonId",
- "CaptionName": "App.Listform.ListformField.RejectReasonId",
- "En": "Rejection Reason",
- "Tr": "Red Nedeni"
- },
- {
- "FieldName": "Description",
- "CaptionName": "App.Listform.ListformField.GeneralDescription",
- "En": "General Description",
- "Tr": "Genel Açıklama"
- },
- {
- "FieldName": "PurchaseApproverUserNames",
- "CaptionName": "App.Listform.ListformField.PurchaseApproverUserNames",
- "En": "Purchasing Approvers",
- "Tr": "Satınalma Onaycıları"
- },
- {
- "FieldName": "ApproverId",
- "CaptionName": "App.Listform.ListformField.ApproverId",
- "En": "Approver Id",
- "Tr": "Onaylayan Kimlik"
+ "FieldName": "ApprovalUserName",
+ "CaptionName": "App.Listform.ListformField.ApprovalUserName",
+ "En": "Approval User Name",
+ "Tr": "Onaylayan Kullanıcı Adı"
},
{
"FieldName": "ApprovalDate",
@@ -181,56 +143,70 @@
"Tr": "Onay Tarihi"
},
{
- "FieldName": "ApprovalNote",
- "CaptionName": "App.Listform.ListformField.ApprovalNote",
- "En": "Approval Note",
- "Tr": "Onay Notu"
- }
- ]
- },
- {
- "Items": [
- {
- "FieldName": "DeptApproverUserNames",
- "CaptionName": "App.Listform.ListformField.DeptApproverUserNames",
- "En": "Department Approvers",
- "Tr": "Departman Onaycıları"
+ "FieldName": "ApprovalDescription",
+ "CaptionName": "App.Listform.ListformField.ApprovalDescription",
+ "En": "Approval Description",
+ "Tr": "Onay Açıklaması"
},
{
- "FieldName": "PurchaseApprovedBy",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovedBy",
- "En": "Purchasing Approved By",
- "Tr": "Satınalma Onaylayan"
+ "FieldName": "MaterialRequestId",
+ "CaptionName": "App.Listform.ListformField.MaterialRequestId",
+ "En": "Material Request",
+ "Tr": "Malzeme Talebi"
},
{
- "FieldName": "DeptApprovedBy",
- "CaptionName": "App.Listform.ListformField.DeptApprovedBy",
- "En": "Department Approved By",
- "Tr": "Departman Onaylayan"
+ "FieldName": "ProductId",
+ "CaptionName": "App.Listform.ListformField.ProductId",
+ "En": "Product",
+ "Tr": "Ürün"
},
{
- "FieldName": "PurchaseApprovalDate",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovalDate",
- "En": "Purchasing Approval Date",
- "Tr": "Satınalma Onay Tarihi"
+ "FieldName": "Quantity",
+ "CaptionName": "App.Listform.ListformField.Quantity",
+ "En": "Quantity",
+ "Tr": "Miktar"
},
{
- "FieldName": "DeptApprovalDate",
- "CaptionName": "App.Listform.ListformField.DeptApprovalDate",
- "En": "Department Approval Date",
- "Tr": "Departman Onay Tarihi"
+ "FieldName": "UomId",
+ "CaptionName": "App.Listform.ListformField.UomId",
+ "En": "Unit",
+ "Tr": "Birim"
},
{
- "FieldName": "PurchaseApprovalNote",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovalNote",
- "En": "Purchasing Approval Note",
- "Tr": "Satınalma Onay Notu"
+ "FieldName": "FulfillmentMethod",
+ "CaptionName": "App.Listform.ListformField.FulfillmentMethod",
+ "En": "Fulfilment",
+ "Tr": "Karşılama Şekli"
},
{
- "FieldName": "DeptApprovalNote",
- "CaptionName": "App.Listform.ListformField.DeptApprovalNote",
- "En": "Department Approval Note",
- "Tr": "Departman Onay Notu"
+ "FieldName": "DueDate",
+ "CaptionName": "App.Listform.ListformField.DueDate",
+ "En": "Due Date",
+ "Tr": "Termin Tarihi"
+ },
+ {
+ "FieldName": "RequestReason",
+ "CaptionName": "App.Listform.ListformField.RequestReason",
+ "En": "Request Reason",
+ "Tr": "Talep Nedeni"
+ },
+ {
+ "FieldName": "DeliveredQuantity",
+ "CaptionName": "App.Listform.ListformField.DeliveredQuantity",
+ "En": "Delivered",
+ "Tr": "Teslim"
+ },
+ {
+ "FieldName": "PurchaseResponsibleUserId",
+ "CaptionName": "App.Listform.ListformField.PurchaseResponsibleUserId",
+ "En": "Purchasing Responsible",
+ "Tr": "Satınalma Sorumlusu"
+ },
+ {
+ "FieldName": "LineStatus",
+ "CaptionName": "App.Listform.ListformField.LineStatus",
+ "En": "Line Status",
+ "Tr": "Satır Durumu"
}
]
}
@@ -242,68 +218,24 @@
"KeyFieldDbSourceType": 9,
"TableName": null,
"DefaultFilter": "\"IsDeleted\" = 'false'",
- "SelectCommand": "Prc_T_MaterialRequest",
- "SelectCommandType": 1,
+ "SelectCommand": "Prc_V_MaterialRequestLine",
+ "SelectCommandType": 2,
"SelectFieldsDefaultValueDto": [],
"SeedFilePath": null,
"SeedSyncInsert": false,
"SeedSyncUpdate": false,
"SeedSyncDelete": false,
- "DeleteCommand": "UPDATE \"Prc_T_MaterialRequest\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id",
- "DeleteBeforeCommand": "IF EXISTS (SELECT 1 FROM Prc_T_MaterialRequest WHERE Id IN @Id AND ISNULL(ApprovalStatus, N'') NOT IN (N'', N'Reddedildi')) THROW 50003, N'Onay sürecindeki ya da onaylanmış talep silinemez.', 1;",
+ "DeleteCommand": null,
+ "DeleteBeforeCommand": null,
"DeleteAfterCommand": null,
- "DeleteFieldsDefaultValueDto": [
- {
- "FieldName": "DeleterId",
- "FieldDbType": 9,
- "Value": "@USERID",
- "CustomValueType": 2,
- "SqlQuery": null
- },
- {
- "FieldName": "Id",
- "FieldDbType": 9,
- "Value": "@ID",
- "CustomValueType": 2,
- "SqlQuery": null
- }
- ],
+ "DeleteFieldsDefaultValueDto": [],
"InsertCommand": null,
"InsertBeforeCommand": null,
- "InsertAfterCommand": "EXEC dbo.Prc_P_MaterialRequestAfterSave @Id, @CreatorId",
- "InsertFieldsDefaultValueDto": [
- {
- "FieldName": "CreationTime",
- "FieldDbType": 6,
- "Value": "@NOW",
- "CustomValueType": 2,
- "SqlQuery": null
- },
- {
- "FieldName": "CreatorId",
- "FieldDbType": 9,
- "Value": "@USERID",
- "CustomValueType": 2,
- "SqlQuery": null
- },
- {
- "FieldName": "IsDeleted",
- "FieldDbType": 3,
- "Value": "false",
- "CustomValueType": 1,
- "SqlQuery": null
- },
- {
- "FieldName": "Id",
- "FieldDbType": 9,
- "Value": "@NEWID",
- "CustomValueType": 2,
- "SqlQuery": null
- }
- ],
- "UpdateCommand": null,
+ "InsertAfterCommand": null,
+ "InsertFieldsDefaultValueDto": [],
+ "UpdateCommand": "UPDATE \"Prc_T_MaterialRequestItem\" SET \"PurchaseResponsibleUserId\" = @PurchaseResponsibleUserId, \"LineStatus\" = @LineStatus, \"LastModificationTime\" = @LastModificationTime, \"LastModifierId\" = @LastModifierId WHERE \"Id\" IN @Id AND \"TenantId\" IS NOT DISTINCT FROM @TenantId",
"UpdateBeforeCommand": null,
- "UpdateAfterCommand": "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Prc_T_MaterialRequest WHERE Id IN @Id); EXEC dbo.Prc_P_MaterialRequestAfterSave @_id, @LastModifierId",
+ "UpdateAfterCommand": null,
"UpdateFieldsDefaultValueDto": [
{
"FieldName": "LastModificationTime",
@@ -318,57 +250,21 @@
"Value": "@USERID",
"CustomValueType": 2,
"SqlQuery": ""
- }
- ],
- "FormFieldsDefaultValueDto": [
- {
- "FieldName": "RequestNo",
- "FieldDbType": 16,
- "Value": "MaterialRequest1",
- "CustomValueType": 5,
- "SqlQuery": ""
},
{
- "FieldName": "RequesterUserId",
+ "FieldName": "Id",
"FieldDbType": 9,
- "Value": "@USERID",
+ "Value": "@ID",
"CustomValueType": 2,
"SqlQuery": ""
- },
- {
- "FieldName": "DepartmentId",
- "FieldDbType": 9,
- "Value": "",
- "CustomValueType": 3,
- "SqlQuery": "SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID'"
- },
- {
- "FieldName": "RequestDate",
- "FieldDbType": 6,
- "Value": "@NOW",
- "CustomValueType": 2,
- "SqlQuery": ""
- },
- {
- "FieldName": "Priority",
- "FieldDbType": 11,
- "Value": "0",
- "CustomValueType": 1,
- "SqlQuery": ""
- },
- {
- "FieldName": "Status",
- "FieldDbType": 16,
- "Value": "Draft",
- "CustomValueType": 1,
- "SqlQuery": ""
}
],
+ "FormFieldsDefaultValueDto": [],
"WidgetsDto": [
{
"ColGap": 3,
"ColSpan": 3,
- "SqlQuery": "SELECT 'App.Prc.MaterialRequest.Status.DeptApproval' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'orange' AS \"Color\", 'App.Prc.MaterialRequest' AS \"SubTitle\", 'FaUserTie' AS \"Icon\" FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"Status\" = 'DeptApproval' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.PurchaseApproval', CAST(COUNT(*) AS VARCHAR(32)), 'purple', 'App.Prc.MaterialRequest', 'FaHourglassHalf' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"Status\" = 'PurchaseApproval' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.Approved', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Prc.MaterialRequest', 'FaCheckCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"Status\" IN ('Approved', 'InProgress', 'PartiallyDone', 'Done') UNION ALL SELECT 'App.Prc.MaterialRequest.Status.Rejected', CAST(COUNT(*) AS VARCHAR(32)), 'red', 'App.Prc.MaterialRequest', 'FaTimesCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"Status\" = 'Rejected'",
+ "SqlQuery": "SELECT 'App.Prc.MaterialRequest.Status.DeptApproval' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'orange' AS \"Color\", 'App.Prc.MaterialRequest' AS \"SubTitle\", 'FaUserTie' AS \"Icon\" FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"ApprovalStatus\" = N'Departman Onayı' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.PurchaseApproval', CAST(COUNT(*) AS VARCHAR(32)), 'purple', 'App.Prc.MaterialRequest', 'FaHourglassHalf' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"ApprovalStatus\" = N'Satınalma Onayı' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.Approved', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Prc.MaterialRequest', 'FaCheckCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"ApprovalStatus\" = N'Onaylandı' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.Rejected', CAST(COUNT(*) AS VARCHAR(32)), 'red', 'App.Prc.MaterialRequest', 'FaTimesCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"ApprovalStatus\" = N'Reddedildi'",
"Title": "Title",
"Value": "Value",
"ValueClassName": "text-3xl",
@@ -550,10 +446,10 @@
"Mode": "popup",
"RefreshMode": "full",
"AllowUpdating": true,
- "AllowDetail": true,
- "AllowDeleting": true,
+ "AllowDetail": false,
+ "AllowDeleting": false,
"AllowAllDeleting": false,
- "AllowAdding": true,
+ "AllowAdding": false,
"AllowDuplicate": false,
"UseIcons": false,
"ConfirmDelete": true,
@@ -564,8 +460,8 @@
"Popup": {
"Title": "App.Prc.MaterialRequest.Title",
"ShowTitle": true,
- "Width": 1100,
- "Height": 750,
+ "Width": 800,
+ "Height": 400,
"FullScreen": false,
"HideOnOutsideClick": true,
"ResizeEnabled": true,
@@ -582,16 +478,9 @@
{
"Order": 1,
"ItemType": "group",
- "Caption": "App.Prc.MaterialRequest.Group.Request",
- "ColCount": 4,
- "ColSpan": 4
- },
- {
- "Order": 2,
- "ItemType": "group",
- "Caption": "App.Prc.MaterialRequest.Group.Approval",
- "ColCount": 4,
- "ColSpan": 4
+ "Caption": "App.Prc.MaterialRequestLine",
+ "ColCount": 2,
+ "ColSpan": 2
}
],
"PermissionDto": {
@@ -620,23 +509,9 @@
"IsOrganizationUnit": false,
"ListFormType": "List",
"IsSubForm": false,
- "ShowNote": true,
+ "ShowNote": false,
"SubFormsListFormType": "Form",
- "SubFormsDto": [
- {
- "TabType": "List",
- "TabTitle": "App.Prc.MaterialRequestLine",
- "Code": "App.Prc.MaterialRequestLine",
- "IsRefresh": false,
- "Relation": [
- {
- "ParentFieldName": "Id",
- "DbType": 9,
- "ChildFieldName": "MaterialRequestId"
- }
- ]
- }
- ],
+ "SubFormsDto": [],
"ExtraFilterDto": [],
"LayoutDto": {
"Grid": true,
@@ -651,104 +526,13 @@
},
"WorkflowDto": {
"ApprovalUserFieldName": null,
- "ApprovalDateFieldName": "ApprovalDate",
- "ApprovalStatusFieldName": "ApprovalStatus",
- "ApprovalDescriptionFieldName": "ApprovalNote",
+ "ApprovalDateFieldName": null,
+ "ApprovalStatusFieldName": null,
+ "ApprovalDescriptionFieldName": null,
"ApprovalIsFilterUserName": false,
- "ApprovalIsResetWorkflow": true,
+ "ApprovalIsResetWorkflow": false,
"ApprovalIsManualStart": false,
- "Criteria": [
- {
- "ListFormCode": "App.Prc.MaterialRequest",
- "Kind": "Start",
- "Title": "Onaya Gönderildi",
- "CompareColumn": "",
- "CompareOperator": "",
- "CompareValue": 0,
- "Approver": "",
- "NextOnStart": "App.Prc.MaterialRequest-N2",
- "NextOnTrue": "",
- "NextOnFalse": "",
- "NextOnApprove": "",
- "NextOnReject": "",
- "PositionX": 40,
- "PositionY": 40,
- "CompareOutcomes": [],
- "Id": "App.Prc.MaterialRequest-N1"
- },
- {
- "ListFormCode": "App.Prc.MaterialRequest",
- "Kind": "Approval",
- "Title": "Departman Onayı",
- "CompareColumn": "",
- "CompareOperator": "",
- "CompareValue": 0,
- "Approver": "@DeptApproverUserNames",
- "NextOnStart": "",
- "NextOnTrue": "",
- "NextOnFalse": "",
- "NextOnApprove": "App.Prc.MaterialRequest-N3",
- "NextOnReject": "App.Prc.MaterialRequest-N5",
- "PositionX": 40,
- "PositionY": 160,
- "CompareOutcomes": [],
- "Id": "App.Prc.MaterialRequest-N2"
- },
- {
- "ListFormCode": "App.Prc.MaterialRequest",
- "Kind": "Approval",
- "Title": "Satınalma Onayı",
- "CompareColumn": "",
- "CompareOperator": "",
- "CompareValue": 0,
- "Approver": "@PurchaseApproverUserNames",
- "NextOnStart": "",
- "NextOnTrue": "",
- "NextOnFalse": "",
- "NextOnApprove": "App.Prc.MaterialRequest-N4",
- "NextOnReject": "App.Prc.MaterialRequest-N5",
- "PositionX": 40,
- "PositionY": 280,
- "CompareOutcomes": [],
- "Id": "App.Prc.MaterialRequest-N3"
- },
- {
- "ListFormCode": "App.Prc.MaterialRequest",
- "Kind": "End",
- "Title": "Onaylandı",
- "CompareColumn": "",
- "CompareOperator": "",
- "CompareValue": 0,
- "Approver": "",
- "NextOnStart": "",
- "NextOnTrue": "",
- "NextOnFalse": "",
- "NextOnApprove": "",
- "NextOnReject": "",
- "PositionX": 40,
- "PositionY": 400,
- "CompareOutcomes": [],
- "Id": "App.Prc.MaterialRequest-N4"
- },
- {
- "ListFormCode": "App.Prc.MaterialRequest",
- "Kind": "End",
- "Title": "Reddedildi",
- "CompareColumn": "",
- "CompareOperator": "",
- "CompareValue": 0,
- "Approver": "",
- "NextOnStart": "",
- "NextOnTrue": "",
- "NextOnFalse": "",
- "NextOnApprove": "",
- "NextOnReject": "",
- "PositionX": 320,
- "PositionY": 400,
- "CompareOutcomes": [],
- "Id": "App.Prc.MaterialRequest-N5"
- }
- ]
+ "Criteria": []
},
"UserId": null,
"RoleId": null,
@@ -1039,8 +823,8 @@
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -1165,8 +949,8 @@
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -1246,8 +1030,8 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 1,
- "EditGroupOrderNo": 1,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": "{\"readOnly\":true}",
@@ -1291,8 +1075,8 @@
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -1384,8 +1168,8 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 2,
- "EditGroupOrderNo": 1,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxRating",
"ColSpan": 1,
"EditorOptions": "{\"min\":0,\"max\":3,\"showSpinButtons\":true}",
@@ -1429,8 +1213,8 @@
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -1522,15 +1306,15 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 3,
- "EditGroupOrderNo": 1,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxSelectBox",
"ColSpan": 1,
"EditorOptions": "{\"showClearButton\":true,\"searchEnabled\":true}",
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
- "EditorScript": "// @builder {\"v\":1,\"rules\":[{\"id\":\"copy_1\",\"recipe\":\"copy\",\"condition\":{\"operator\":\"always\",\"source\":\"\",\"value\":\"\"},\"params\":{\"source\":\"DepartmentId\",\"target\":\"DepartmentId\"},\"fields\":[],\"trigger\":\"change\"}]}\ncopy(\"DepartmentId\", \"DepartmentId\")",
+ "EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
@@ -1567,8 +1351,8 @@
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -1660,8 +1444,8 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 4,
- "EditGroupOrderNo": 1,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxSelectBox",
"ColSpan": 1,
"EditorOptions": "{\"showClearButton\":true,\"searchEnabled\":true}",
@@ -1705,8 +1489,8 @@
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -1798,15 +1582,15 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 5,
- "EditGroupOrderNo": 1,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxSelectBox",
"ColSpan": 1,
"EditorOptions": "{\"showClearButton\":true,\"searchEnabled\":true}",
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
- "EditorScript": "// @builder {\"v\":1,\"rules\":[{\"id\":\"clear_1\",\"recipe\":\"clear\",\"condition\":{\"operator\":\"always\",\"source\":\"\",\"value\":\"\"},\"params\":{},\"fields\":[\"LocationId\"],\"trigger\":\"change\"}]}\nclear(\"LocationId\")",
+ "EditorScript": null,
"LastModificationTime": null,
"LastModifierId": null,
"CreationTime": "0001-01-01T00:00:00",
@@ -1843,8 +1627,8 @@
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -1936,8 +1720,8 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 6,
- "EditGroupOrderNo": 1,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxSelectBox",
"ColSpan": 1,
"EditorOptions": "{\"showClearButton\":true,\"searchEnabled\":true}",
@@ -1981,8 +1765,8 @@
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -2074,8 +1858,8 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 7,
- "EditGroupOrderNo": 1,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxDateBox",
"ColSpan": 1,
"EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"useMaskBehavior\":true}",
@@ -2105,8 +1889,8 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "Status",
- "CaptionName": "App.Listform.ListformField.Status",
+ "FieldName": "Description",
+ "CaptionName": "App.Listform.ListformField.GeneralDescription",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
@@ -2119,8 +1903,8 @@
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -2163,28 +1947,16 @@
"ShowInColumn": null
},
"LookupDto": {
- "DataSourceType": 1,
- "ValueExpr": "key",
- "DisplayExpr": "name",
+ "DataSourceType": 0,
+ "ValueExpr": "Key",
+ "DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
- "LookupQuery": "[{\"key\":\"Draft\",\"name\":\"App.Prc.MaterialRequest.Status.Draft\"},{\"key\":\"DeptApproval\",\"name\":\"App.Prc.MaterialRequest.Status.DeptApproval\"},{\"key\":\"PurchaseApproval\",\"name\":\"App.Prc.MaterialRequest.Status.PurchaseApproval\"},{\"key\":\"Approved\",\"name\":\"App.Prc.MaterialRequest.Status.Approved\"},{\"key\":\"InProgress\",\"name\":\"App.Prc.MaterialRequest.Status.InProgress\"},{\"key\":\"PartiallyDone\",\"name\":\"App.Prc.MaterialRequest.Status.PartiallyDone\"},{\"key\":\"Done\",\"name\":\"App.Prc.MaterialRequest.Status.Done\"},{\"key\":\"Rejected\",\"name\":\"App.Prc.MaterialRequest.Status.Rejected\"}]"
+ "LookupQuery": null
},
- "ValidationRuleDto": [
- {
- "Type": "required",
- "Message": null,
- "IgnoreEmptyValue": false,
- "Reevaluate": true,
- "ComparisonType": "",
- "Pattern": "",
- "Max": null,
- "Min": null,
- "Trim": true
- }
- ],
+ "ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
@@ -2212,11 +1984,11 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 8,
- "EditGroupOrderNo": 1,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true}",
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxTextBox",
+ "ColSpan": 2,
+ "EditorOptions": "{\"autoResizeEnabled\":true,\"minHeight\":60}",
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
@@ -2257,386 +2029,8 @@
"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.Prc.MaterialRequest.Create",
- "R": "App.Prc.MaterialRequest",
- "U": "App.Prc.MaterialRequest.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": 9,
- "EditGroupOrderNo": 1,
- "EditorType2": "dxTextBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequest",
- "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": "RejectReasonId",
- "CaptionName": "App.Listform.ListformField.RejectReasonId",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 11,
- "SourceDbType": 9,
- "CultureName": "en",
- "DataType": "string",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 2,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Prc_T_RejectReason WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY SortOrder, Name"
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MaterialRequest.Create",
- "R": "App.Prc.MaterialRequest",
- "U": "App.Prc.MaterialRequest.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": 10,
- "EditGroupOrderNo": 1,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
- "EditorOptions": "{\"showClearButton\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequest",
- "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": "Description",
- "CaptionName": "App.Listform.ListformField.GeneralDescription",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 12,
- "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.Prc.MaterialRequest.Create",
- "R": "App.Prc.MaterialRequest",
- "U": "App.Prc.MaterialRequest.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": 11,
- "EditGroupOrderNo": 1,
- "EditorType2": "dxTextBox",
- "ColSpan": 2,
- "EditorOptions": "{\"autoResizeEnabled\":true,\"minHeight\":60}",
- "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.Prc.MaterialRequest",
- "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": "PurchaseApproverUserNames",
- "CaptionName": "App.Listform.ListformField.PurchaseApproverUserNames",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": false,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 13,
- "SourceDbType": 16,
- "CultureName": "en",
- "DataType": "string",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -2720,7 +2114,7 @@
"EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 1,
- "EditorOptions": null,
+ "EditorOptions": "{\"readOnly\":true}",
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
@@ -2747,22 +2141,22 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "ApproverId",
- "CaptionName": "App.Listform.ListformField.ApproverId",
+ "FieldName": "ApprovalUserName",
+ "CaptionName": "App.Listform.ListformField.ApprovalUserName",
"PlaceHolder": null,
"ReadOnly": false,
- "Visible": false,
+ "Visible": true,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 14,
- "SourceDbType": 9,
+ "ListOrderNo": 11,
+ "SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -2877,18 +2271,18 @@
"CaptionName": "App.Listform.ListformField.ApprovalDate",
"PlaceHolder": null,
"ReadOnly": false,
- "Visible": false,
+ "Visible": true,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 15,
+ "ListOrderNo": 12,
"SourceDbType": 6,
"CultureName": "en",
"DataType": "datetime",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -2999,22 +2393,904 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "ApprovalNote",
- "CaptionName": "App.Listform.ListformField.ApprovalNote",
+ "FieldName": "ApprovalDescription",
+ "CaptionName": "App.Listform.ListformField.ApprovalDescription",
"PlaceHolder": null,
"ReadOnly": false,
- "Visible": false,
+ "Visible": true,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 16,
+ "ListOrderNo": 13,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
+ "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.Prc.MaterialRequest.Create",
+ "R": "App.Prc.MaterialRequest",
+ "U": "App.Prc.MaterialRequest.Update",
+ "E": true,
+ "I": true
+ },
+ "CanRead": false,
+ "CanCreate": false,
+ "CanUpdate": false,
+ "CanExport": false,
+ "DefaultValue": null,
+ "DefaultValueType": 0,
+ "PivotSettingsDto": {
+ "IsPivot": true,
+ "Expanded": false,
+ "SortOrder": "asc",
+ "Area": "filter",
+ "Format": null,
+ "SummaryType": null,
+ "GroupInterval": "",
+ "WordWrapEnabled": false
+ },
+ "Alignment": "left",
+ "Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxTextBox",
+ "ColSpan": 1,
+ "EditorOptions": null,
+ "GridBoxOptions": null,
+ "TagBoxOptions": null,
+ "ImageUploadOptions": null,
+ "EditorScript": null,
+ "LastModificationTime": null,
+ "LastModifierId": null,
+ "CreationTime": "0001-01-01T00:00:00",
+ "CreatorId": null,
+ "Id": "00000000-0000-0000-0000-000000000000"
+ },
+ {
+ "EditType": null,
+ "ListFormCode": "App.Prc.MaterialRequest",
+ "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": "MaterialRequestId",
+ "CaptionName": "App.Listform.ListformField.MaterialRequestId",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": false,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 14,
+ "SourceDbType": 9,
+ "CultureName": "en",
+ "DataType": "string",
+ "SortIndex": 0,
+ "SortDirection": null,
+ "AllowSearch": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
+ "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.Prc.MaterialRequest.Create",
+ "R": "App.Prc.MaterialRequest",
+ "U": "App.Prc.MaterialRequest.Update",
+ "E": true,
+ "I": true
+ },
+ "CanRead": false,
+ "CanCreate": false,
+ "CanUpdate": false,
+ "CanExport": false,
+ "DefaultValue": null,
+ "DefaultValueType": 0,
+ "PivotSettingsDto": {
+ "IsPivot": true,
+ "Expanded": false,
+ "SortOrder": "asc",
+ "Area": "filter",
+ "Format": null,
+ "SummaryType": null,
+ "GroupInterval": "",
+ "WordWrapEnabled": false
+ },
+ "Alignment": "left",
+ "Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxTextBox",
+ "ColSpan": 1,
+ "EditorOptions": null,
+ "GridBoxOptions": null,
+ "TagBoxOptions": null,
+ "ImageUploadOptions": null,
+ "EditorScript": null,
+ "LastModificationTime": null,
+ "LastModifierId": null,
+ "CreationTime": "0001-01-01T00:00:00",
+ "CreatorId": null,
+ "Id": "00000000-0000-0000-0000-000000000000"
+ },
+ {
+ "EditType": null,
+ "ListFormCode": "App.Prc.MaterialRequest",
+ "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": "ProductId",
+ "CaptionName": "App.Listform.ListformField.ProductId",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": true,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 15,
+ "SourceDbType": 9,
+ "CultureName": "en",
+ "DataType": "string",
+ "SortIndex": 0,
+ "SortDirection": null,
+ "AllowSearch": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
+ "ColumnCssClass": null,
+ "ColumnCssValue": null,
+ "BandName": null,
+ "ColumnFilterDto": {
+ "AllowFiltering": true,
+ "FilterOperations": null,
+ "SelectedFilterOperation": null,
+ "FilterValue": null
+ },
+ "ColumnHeaderDto": {
+ "AllowHeaderFiltering": true,
+ "AllowSearch": false,
+ "DataSource": null,
+ "DataSourceString": ""
+ },
+ "ColumnGroupingDto": {
+ "AllowGrouping": true,
+ "GroupIndex": null,
+ "AutoExpandGroup": false
+ },
+ "ColumnCustomizationDto": {
+ "Fixed": false,
+ "FixedPosition": "left",
+ "AllowReordering": true
+ },
+ "ColumnTotalSummaryDto": {
+ "SummaryType": null,
+ "ValueFormat": null,
+ "ShowInGroupFooter": false,
+ "AlignByColumn": false,
+ "DisplayFormat": null,
+ "ShowInColumn": null
+ },
+ "ColumnGroupSummaryDto": {
+ "SummaryType": null,
+ "ValueFormat": null,
+ "ShowInGroupFooter": false,
+ "AlignByColumn": false,
+ "DisplayFormat": null,
+ "ShowInColumn": null
+ },
+ "LookupDto": {
+ "DataSourceType": 2,
+ "ValueExpr": "Key",
+ "DisplayExpr": "Name",
+ "CascadeRelationField": null,
+ "CascadeFilterOperator": "=",
+ "CascadeParentFields": null,
+ "CascadeEmptyFields": null,
+ "LookupQuery": "SELECT p.Id AS [Key], CONCAT(CASE WHEN p.InternalReference IS NULL OR p.InternalReference = '' THEN '' ELSE CONCAT('[', p.InternalReference, '] ') END, p.Name) AS [Name], COALESCE(p.PurchaseUomId, p.UomId) AS UomId FROM Inv_T_Product p WHERE p.IsDeleted = 'false' AND p.IsActive = 1 AND p.CanBePurchased = 1 AND p.TenantId = '@TENANTID' ORDER BY p.Name"
+ },
+ "ValidationRuleDto": [],
+ "ColumnStylingDto": [],
+ "PermissionDto": {
+ "Deny": false,
+ "C": "App.Prc.MaterialRequest.Create",
+ "R": "App.Prc.MaterialRequest",
+ "U": "App.Prc.MaterialRequest.Update",
+ "E": true,
+ "I": true
+ },
+ "CanRead": false,
+ "CanCreate": false,
+ "CanUpdate": false,
+ "CanExport": false,
+ "DefaultValue": null,
+ "DefaultValueType": 0,
+ "PivotSettingsDto": {
+ "IsPivot": true,
+ "Expanded": false,
+ "SortOrder": "asc",
+ "Area": "filter",
+ "Format": null,
+ "SummaryType": null,
+ "GroupInterval": "",
+ "WordWrapEnabled": false
+ },
+ "Alignment": "left",
+ "Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxSelectBox",
+ "ColSpan": 2,
+ "EditorOptions": "{\"showClearButton\":true,\"searchEnabled\":true}",
+ "GridBoxOptions": null,
+ "TagBoxOptions": null,
+ "ImageUploadOptions": null,
+ "EditorScript": null,
+ "LastModificationTime": null,
+ "LastModifierId": null,
+ "CreationTime": "0001-01-01T00:00:00",
+ "CreatorId": null,
+ "Id": "00000000-0000-0000-0000-000000000000"
+ },
+ {
+ "EditType": null,
+ "ListFormCode": "App.Prc.MaterialRequest",
+ "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": "Quantity",
+ "CaptionName": "App.Listform.ListformField.Quantity",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": true,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 16,
+ "SourceDbType": 7,
+ "CultureName": "en",
+ "DataType": "number",
+ "SortIndex": 0,
+ "SortDirection": null,
+ "AllowSearch": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
+ "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.Prc.MaterialRequest.Create",
+ "R": "App.Prc.MaterialRequest",
+ "U": "App.Prc.MaterialRequest.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": "dxNumberBox",
+ "ColSpan": 1,
+ "EditorOptions": "{\"format\":\"#,##0.##\",\"min\":0.0001,\"showSpinButtons\":true}",
+ "GridBoxOptions": null,
+ "TagBoxOptions": null,
+ "ImageUploadOptions": null,
+ "EditorScript": null,
+ "LastModificationTime": null,
+ "LastModifierId": null,
+ "CreationTime": "0001-01-01T00:00:00",
+ "CreatorId": null,
+ "Id": "00000000-0000-0000-0000-000000000000"
+ },
+ {
+ "EditType": null,
+ "ListFormCode": "App.Prc.MaterialRequest",
+ "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": "UomId",
+ "CaptionName": "App.Listform.ListformField.UomId",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": true,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 17,
+ "SourceDbType": 16,
+ "CultureName": "en",
+ "DataType": "string",
+ "SortIndex": 0,
+ "SortDirection": null,
+ "AllowSearch": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
+ "ColumnCssClass": null,
+ "ColumnCssValue": null,
+ "BandName": null,
+ "ColumnFilterDto": {
+ "AllowFiltering": true,
+ "FilterOperations": null,
+ "SelectedFilterOperation": null,
+ "FilterValue": null
+ },
+ "ColumnHeaderDto": {
+ "AllowHeaderFiltering": true,
+ "AllowSearch": false,
+ "DataSource": null,
+ "DataSourceString": ""
+ },
+ "ColumnGroupingDto": {
+ "AllowGrouping": true,
+ "GroupIndex": null,
+ "AutoExpandGroup": false
+ },
+ "ColumnCustomizationDto": {
+ "Fixed": false,
+ "FixedPosition": "left",
+ "AllowReordering": true
+ },
+ "ColumnTotalSummaryDto": {
+ "SummaryType": null,
+ "ValueFormat": null,
+ "ShowInGroupFooter": false,
+ "AlignByColumn": false,
+ "DisplayFormat": null,
+ "ShowInColumn": null
+ },
+ "ColumnGroupSummaryDto": {
+ "SummaryType": null,
+ "ValueFormat": null,
+ "ShowInGroupFooter": false,
+ "AlignByColumn": false,
+ "DisplayFormat": null,
+ "ShowInColumn": null
+ },
+ "LookupDto": {
+ "DataSourceType": 2,
+ "ValueExpr": "Key",
+ "DisplayExpr": "Name",
+ "CascadeRelationField": null,
+ "CascadeFilterOperator": "=",
+ "CascadeParentFields": null,
+ "CascadeEmptyFields": null,
+ "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Adm_T_Uom WHERE IsDeleted = 'false' ORDER BY Name"
+ },
+ "ValidationRuleDto": [],
+ "ColumnStylingDto": [],
+ "PermissionDto": {
+ "Deny": false,
+ "C": "App.Prc.MaterialRequest.Create",
+ "R": "App.Prc.MaterialRequest",
+ "U": "App.Prc.MaterialRequest.Update",
+ "E": true,
+ "I": true
+ },
+ "CanRead": false,
+ "CanCreate": false,
+ "CanUpdate": false,
+ "CanExport": false,
+ "DefaultValue": null,
+ "DefaultValueType": 0,
+ "PivotSettingsDto": {
+ "IsPivot": true,
+ "Expanded": false,
+ "SortOrder": "asc",
+ "Area": "filter",
+ "Format": null,
+ "SummaryType": null,
+ "GroupInterval": "",
+ "WordWrapEnabled": false
+ },
+ "Alignment": "left",
+ "Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxSelectBox",
+ "ColSpan": 1,
+ "EditorOptions": "{\"readOnly\":true}",
+ "GridBoxOptions": null,
+ "TagBoxOptions": null,
+ "ImageUploadOptions": null,
+ "EditorScript": null,
+ "LastModificationTime": null,
+ "LastModifierId": null,
+ "CreationTime": "0001-01-01T00:00:00",
+ "CreatorId": null,
+ "Id": "00000000-0000-0000-0000-000000000000"
+ },
+ {
+ "EditType": null,
+ "ListFormCode": "App.Prc.MaterialRequest",
+ "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": "FulfillmentMethod",
+ "CaptionName": "App.Listform.ListformField.FulfillmentMethod",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": true,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 18,
+ "SourceDbType": 16,
+ "CultureName": "en",
+ "DataType": "string",
+ "SortIndex": 0,
+ "SortDirection": null,
+ "AllowSearch": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
+ "ColumnCssClass": null,
+ "ColumnCssValue": null,
+ "BandName": null,
+ "ColumnFilterDto": {
+ "AllowFiltering": true,
+ "FilterOperations": null,
+ "SelectedFilterOperation": null,
+ "FilterValue": null
+ },
+ "ColumnHeaderDto": {
+ "AllowHeaderFiltering": true,
+ "AllowSearch": false,
+ "DataSource": null,
+ "DataSourceString": ""
+ },
+ "ColumnGroupingDto": {
+ "AllowGrouping": true,
+ "GroupIndex": null,
+ "AutoExpandGroup": false
+ },
+ "ColumnCustomizationDto": {
+ "Fixed": false,
+ "FixedPosition": "left",
+ "AllowReordering": true
+ },
+ "ColumnTotalSummaryDto": {
+ "SummaryType": null,
+ "ValueFormat": null,
+ "ShowInGroupFooter": false,
+ "AlignByColumn": false,
+ "DisplayFormat": null,
+ "ShowInColumn": null
+ },
+ "ColumnGroupSummaryDto": {
+ "SummaryType": null,
+ "ValueFormat": null,
+ "ShowInGroupFooter": false,
+ "AlignByColumn": false,
+ "DisplayFormat": null,
+ "ShowInColumn": null
+ },
+ "LookupDto": {
+ "DataSourceType": 1,
+ "ValueExpr": "key",
+ "DisplayExpr": "name",
+ "CascadeRelationField": null,
+ "CascadeFilterOperator": "=",
+ "CascadeParentFields": null,
+ "CascadeEmptyFields": null,
+ "LookupQuery": "[{\"key\":\"Purchase\",\"name\":\"App.StaticLookup.Purchase\"},{\"key\":\"Transfer\",\"name\":\"App.StaticLookup.WarehouseTransfer\"}]"
+ },
+ "ValidationRuleDto": [],
+ "ColumnStylingDto": [],
+ "PermissionDto": {
+ "Deny": false,
+ "C": "App.Prc.MaterialRequest.Create",
+ "R": "App.Prc.MaterialRequest",
+ "U": "App.Prc.MaterialRequest.Update",
+ "E": true,
+ "I": true
+ },
+ "CanRead": false,
+ "CanCreate": false,
+ "CanUpdate": false,
+ "CanExport": false,
+ "DefaultValue": null,
+ "DefaultValueType": 0,
+ "PivotSettingsDto": {
+ "IsPivot": true,
+ "Expanded": false,
+ "SortOrder": "asc",
+ "Area": "filter",
+ "Format": null,
+ "SummaryType": null,
+ "GroupInterval": "",
+ "WordWrapEnabled": false
+ },
+ "Alignment": "left",
+ "Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxSelectBox",
+ "ColSpan": 1,
+ "EditorOptions": 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.Prc.MaterialRequest",
+ "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": "DueDate",
+ "CaptionName": "App.Listform.ListformField.DueDate",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": true,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 19,
+ "SourceDbType": 6,
+ "CultureName": "en",
+ "DataType": "datetime",
+ "SortIndex": 0,
+ "SortDirection": null,
+ "AllowSearch": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
+ "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.Prc.MaterialRequest.Create",
+ "R": "App.Prc.MaterialRequest",
+ "U": "App.Prc.MaterialRequest.Update",
+ "E": true,
+ "I": true
+ },
+ "CanRead": false,
+ "CanCreate": false,
+ "CanUpdate": false,
+ "CanExport": false,
+ "DefaultValue": null,
+ "DefaultValueType": 0,
+ "PivotSettingsDto": {
+ "IsPivot": true,
+ "Expanded": false,
+ "SortOrder": "asc",
+ "Area": "filter",
+ "Format": null,
+ "SummaryType": null,
+ "GroupInterval": "",
+ "WordWrapEnabled": false
+ },
+ "Alignment": "left",
+ "Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxDateBox",
+ "ColSpan": 1,
+ "EditorOptions": "{\"type\":\"date\",\"displayFormat\":\"dd.MM.yyyy\",\"useMaskBehavior\":true,\"showClearButton\":true}",
+ "GridBoxOptions": null,
+ "TagBoxOptions": null,
+ "ImageUploadOptions": null,
+ "EditorScript": null,
+ "LastModificationTime": null,
+ "LastModifierId": null,
+ "CreationTime": "0001-01-01T00:00:00",
+ "CreatorId": null,
+ "Id": "00000000-0000-0000-0000-000000000000"
+ },
+ {
+ "EditType": null,
+ "ListFormCode": "App.Prc.MaterialRequest",
+ "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": "RequestReason",
+ "CaptionName": "App.Listform.ListformField.RequestReason",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": true,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 20,
+ "SourceDbType": 16,
+ "CultureName": "en",
+ "DataType": "string",
+ "SortIndex": 0,
+ "SortDirection": null,
+ "AllowSearch": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -3097,8 +3373,8 @@
"EditOrderNo": null,
"EditGroupOrderNo": null,
"EditorType2": "dxTextArea",
- "ColSpan": 1,
- "EditorOptions": null,
+ "ColSpan": 2,
+ "EditorOptions": "{\"showClearButton\":true,\"maxLength\":256}",
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
@@ -3125,22 +3401,22 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "DeptApproverUserNames",
- "CaptionName": "App.Listform.ListformField.DeptApproverUserNames",
+ "FieldName": "DeliveredQuantity",
+ "CaptionName": "App.Listform.ListformField.DeliveredQuantity",
"PlaceHolder": null,
"ReadOnly": false,
- "Visible": false,
+ "Visible": true,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 17,
- "SourceDbType": 16,
+ "ListOrderNo": 21,
+ "SourceDbType": 7,
"CultureName": "en",
- "DataType": "string",
+ "DataType": "number",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
+ "AllowEditing": false,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -3220,11 +3496,137 @@
},
"Alignment": "left",
"Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxNumberBox",
+ "ColSpan": 1,
+ "EditorOptions": "{\"readOnly\":true,\"format\":\"#,##0.##\"}",
+ "GridBoxOptions": null,
+ "TagBoxOptions": null,
+ "ImageUploadOptions": null,
+ "EditorScript": null,
+ "LastModificationTime": null,
+ "LastModifierId": null,
+ "CreationTime": "0001-01-01T00:00:00",
+ "CreatorId": null,
+ "Id": "00000000-0000-0000-0000-000000000000"
+ },
+ {
+ "EditType": null,
+ "ListFormCode": "App.Prc.MaterialRequest",
+ "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": "PurchaseResponsibleUserId",
+ "CaptionName": "App.Listform.ListformField.PurchaseResponsibleUserId",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": true,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 22,
+ "SourceDbType": 9,
+ "CultureName": "en",
+ "DataType": "string",
+ "SortIndex": 0,
+ "SortDirection": null,
+ "AllowSearch": true,
+ "AllowEditing": true,
+ "AllowAdding": false,
+ "ColumnCssClass": null,
+ "ColumnCssValue": null,
+ "BandName": null,
+ "ColumnFilterDto": {
+ "AllowFiltering": true,
+ "FilterOperations": null,
+ "SelectedFilterOperation": null,
+ "FilterValue": null
+ },
+ "ColumnHeaderDto": {
+ "AllowHeaderFiltering": true,
+ "AllowSearch": false,
+ "DataSource": null,
+ "DataSourceString": ""
+ },
+ "ColumnGroupingDto": {
+ "AllowGrouping": true,
+ "GroupIndex": null,
+ "AutoExpandGroup": false
+ },
+ "ColumnCustomizationDto": {
+ "Fixed": false,
+ "FixedPosition": "left",
+ "AllowReordering": true
+ },
+ "ColumnTotalSummaryDto": {
+ "SummaryType": null,
+ "ValueFormat": null,
+ "ShowInGroupFooter": false,
+ "AlignByColumn": false,
+ "DisplayFormat": null,
+ "ShowInColumn": null
+ },
+ "ColumnGroupSummaryDto": {
+ "SummaryType": null,
+ "ValueFormat": null,
+ "ShowInGroupFooter": false,
+ "AlignByColumn": false,
+ "DisplayFormat": null,
+ "ShowInColumn": null
+ },
+ "LookupDto": {
+ "DataSourceType": 2,
+ "ValueExpr": "Key",
+ "DisplayExpr": "Name",
+ "CascadeRelationField": null,
+ "CascadeFilterOperator": "=",
+ "CascadeParentFields": null,
+ "CascadeEmptyFields": null,
+ "LookupQuery": "SELECT Id AS [Key], CONCAT(Name, ' ', Surname) AS [Name] FROM AbpUsers WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name, Surname"
+ },
+ "ValidationRuleDto": [],
+ "ColumnStylingDto": [],
+ "PermissionDto": {
+ "Deny": false,
+ "C": "App.Prc.MaterialRequest.Create",
+ "R": "App.Prc.MaterialRequest",
+ "U": "App.Prc.MaterialRequest.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": 1,
- "EditGroupOrderNo": 2,
- "EditorType2": "dxTextBox",
- "ColSpan": 4,
- "EditorOptions": "{\"readOnly\":true}",
+ "EditGroupOrderNo": 1,
+ "EditorType2": "dxSelectBox",
+ "ColSpan": 1,
+ "EditorOptions": "{\"showClearButton\":true,\"searchEnabled\":true}",
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
@@ -3251,22 +3653,22 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "PurchaseApprovedBy",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovedBy",
+ "FieldName": "LineStatus",
+ "CaptionName": "App.Listform.ListformField.LineStatus",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 18,
- "SourceDbType": 9,
+ "ListOrderNo": 23,
+ "SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
"SortIndex": 0,
"SortDirection": null,
"AllowSearch": true,
"AllowEditing": true,
- "AllowAdding": true,
+ "AllowAdding": false,
"ColumnCssClass": null,
"ColumnCssValue": null,
"BandName": null,
@@ -3309,16 +3711,28 @@
"ShowInColumn": null
},
"LookupDto": {
- "DataSourceType": 2,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
+ "DataSourceType": 1,
+ "ValueExpr": "key",
+ "DisplayExpr": "name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
- "LookupQuery": "SELECT Id AS [Key], CONCAT(Name, ' ', Surname) AS [Name] FROM AbpUsers WHERE IsDeleted = 'false'"
+ "LookupQuery": "[{\"key\":\"Waiting\",\"name\":\"App.Prc.MaterialRequest.LineStatus.Waiting\"},{\"key\":\"Done\",\"name\":\"App.Prc.MaterialRequest.LineStatus.Done\"},{\"key\":\"Cancelled\",\"name\":\"App.Prc.MaterialRequest.LineStatus.Cancelled\"}]"
},
- "ValidationRuleDto": [],
+ "ValidationRuleDto": [
+ {
+ "Type": "required",
+ "Message": null,
+ "IgnoreEmptyValue": false,
+ "Reevaluate": true,
+ "ComparisonType": "",
+ "Pattern": "",
+ "Max": null,
+ "Min": null,
+ "Trim": true
+ }
+ ],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
@@ -3347,640 +3761,10 @@
"Alignment": "left",
"Format": null,
"EditOrderNo": 2,
- "EditGroupOrderNo": 2,
+ "EditGroupOrderNo": 1,
"EditorType2": "dxSelectBox",
"ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequest",
- "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": "DeptApprovedBy",
- "CaptionName": "App.Listform.ListformField.DeptApprovedBy",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 19,
- "SourceDbType": 9,
- "CultureName": "en",
- "DataType": "string",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 2,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": "SELECT Id AS [Key], CONCAT(Name, ' ', Surname) AS [Name] FROM AbpUsers WHERE IsDeleted = 'false'"
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MaterialRequest.Create",
- "R": "App.Prc.MaterialRequest",
- "U": "App.Prc.MaterialRequest.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": 2,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequest",
- "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": "PurchaseApprovalDate",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovalDate",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 20,
- "SourceDbType": 6,
- "CultureName": "en",
- "DataType": "datetime",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 0,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": null
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MaterialRequest.Create",
- "R": "App.Prc.MaterialRequest",
- "U": "App.Prc.MaterialRequest.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": 2,
- "EditorType2": "dxDateBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true,\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\"}",
- "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.Prc.MaterialRequest",
- "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": "DeptApprovalDate",
- "CaptionName": "App.Listform.ListformField.DeptApprovalDate",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 21,
- "SourceDbType": 6,
- "CultureName": "en",
- "DataType": "datetime",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 0,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": null
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MaterialRequest.Create",
- "R": "App.Prc.MaterialRequest",
- "U": "App.Prc.MaterialRequest.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
- "EditOrderNo": 5,
- "EditGroupOrderNo": 2,
- "EditorType2": "dxDateBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true,\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\"}",
- "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.Prc.MaterialRequest",
- "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": "PurchaseApprovalNote",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovalNote",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 22,
- "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.Prc.MaterialRequest.Create",
- "R": "App.Prc.MaterialRequest",
- "U": "App.Prc.MaterialRequest.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
- "EditOrderNo": 6,
- "EditGroupOrderNo": 2,
- "EditorType2": "dxTextArea",
- "ColSpan": 2,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequest",
- "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": "DeptApprovalNote",
- "CaptionName": "App.Listform.ListformField.DeptApprovalNote",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 23,
- "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.Prc.MaterialRequest.Create",
- "R": "App.Prc.MaterialRequest",
- "U": "App.Prc.MaterialRequest.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
- "EditOrderNo": 7,
- "EditGroupOrderNo": 2,
- "EditorType2": "dxTextArea",
- "ColSpan": 2,
- "EditorOptions": "{\"readOnly\":true}",
+ "EditorOptions": null,
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
@@ -3998,7 +3782,9 @@
"LanguageKeys": [
"App.Prc.MaterialRequest",
"App.Prc.MaterialRequest.Title",
- "App.Prc.MaterialRequest.Desc"
+ "App.Prc.MaterialRequest.Desc",
+ "App.Listform.ListformField.ApprovalUserName",
+ "App.Listform.ListformField.ApprovalDescription"
],
"PermissionGroupNames": [],
"PermissionNames": [
@@ -4018,6 +3804,6 @@
},
"DevRequest": {
"Id": "53294e77-a4fb-45e4-a80e-acf07b5d75be",
- "Title": "Satınalma -> Satınalma Talepleri"
+ "Title": "Satınalma -> Malzeme Talepleri"
}
}
\ No newline at end of file
diff --git a/configs/seeds/wizard/Prc_MaterialRequestDeptApproval.json b/configs/seeds/wizard/Prc_MaterialRequestDeptApproval.json
index 3beafa91..6aa8fabe 100644
--- a/configs/seeds/wizard/Prc_MaterialRequestDeptApproval.json
+++ b/configs/seeds/wizard/Prc_MaterialRequestDeptApproval.json
@@ -25,15 +25,15 @@
},
"Language": {
"MenuParentEn": "Material Requests",
- "MenuParentTr": "Satınalma Talepleri",
+ "MenuParentTr": "Malzeme Talepleri",
"PermissionGroupEn": "Purchasing",
"PermissionGroupTr": "Satınalma",
"MenuEn": "Awaiting Department Approval",
"MenuTr": "Departman Onayı Bekleyenler",
"TitleEn": "Awaiting Department Approval",
"TitleTr": "Departman Onayı Bekleyenler",
- "DescEn": "Awaiting Department Approval — material requests waiting for the department approver's decision.\nWhere: Purchasing › Material Requests › Awaiting Department Approval.\nWho: approvers defined in Administration › Definitions › Approvers with area Purchasing for the requester's department; each approver sees only the requests assigned to them.\nWhat to do: open the request, review the Request Lines tab, then Approve (the request moves to purchasing approval) or Reject with a note and a rejection reason (Purchasing › Definitions › Rejection Reasons). Lines cannot be added or removed here.\nRelated: My Requests, Awaiting Purchasing Approval, All Requests.",
- "DescTr": "Departman Onayı Bekleyenler — departman onaycısının kararını bekleyen malzeme talepleri.\nNerede: Satınalma › Satınalma Talepleri › Departman Onayı Bekleyenler.\nKim: Yönetim › Tanımlamalar › Onaycılar'da talep edenin departmanı için Satınalma onay yerinde tanımlı onaycılar; her onaycı yalnız kendisine düşen talepleri görür.\nNe yapılır: talebi açıp Talep Satırları sekmesini inceleyin, ardından Onayla (talep satınalma onayına geçer) ya da not ve red nedeniyle (Satınalma › Tanımlamalar › Red Nedenleri) Reddet. Burada satır eklenip silinemez.\nİlişkili: Taleplerim, Satınalma Onayı Bekleyenler, Tüm Talepler.",
+ "DescEn": "Awaiting Department Approval — material requests waiting for the department approver's decision.\nWhere: Purchasing › Material Requests › Awaiting Department Approval.\nWho: approvers defined in Administration › Definitions › Approvers with area Purchasing for the requester's department; each approver sees only the requests assigned to them.\nWhat to do: open the request, review the Request Lines tab, then Approve (the request moves to purchasing approval) or Reject by choosing a rejection reason (Purchasing › Definitions › Rejection Reasons) and an optional note; the reason and note are written to the approval description. Lines cannot be added or removed here.\nRelated: My Requests, Awaiting Purchasing Approval, All Requests.",
+ "DescTr": "Departman Onayı Bekleyenler — departman onaycısının kararını bekleyen malzeme talepleri.\nNerede: Satınalma › Malzeme Talepleri › Departman Onayı Bekleyenler.\nKim: Yönetim › Tanımlamalar › Onaycılar'da talep edenin departmanı için Satınalma onay yerinde tanımlı onaycılar; her onaycı yalnız kendisine düşen talepleri görür.\nNe yapılır: talebi açıp Talep Satırları sekmesini inceleyin, ardından Onayla (talep satınalma onayına geçer) ya da red nedeni (Satınalma › Tanımlamalar › Red Nedenleri) seçip isteğe bağlı notla Reddet; neden ve not onay açıklamasına yazılır. Burada satır eklenip silinemez.\nİlişkili: Taleplerim, Satınalma Onayı Bekleyenler, Tüm Talepler.",
"Texts": [
{
"Key": "App.Prc.MaterialRequest.Group.Request",
@@ -45,11 +45,6 @@
"En": "Approval / Rejection",
"Tr": "Onay / Red Bilgileri"
},
- {
- "Key": "App.Prc.MaterialRequest.Status.Draft",
- "En": "Draft",
- "Tr": "Taslak"
- },
{
"Key": "App.Prc.MaterialRequest.Status.DeptApproval",
"En": "Department Approval",
@@ -65,21 +60,6 @@
"En": "Approved",
"Tr": "Onaylandı"
},
- {
- "Key": "App.Prc.MaterialRequest.Status.InProgress",
- "En": "In Progress",
- "Tr": "İşlemde"
- },
- {
- "Key": "App.Prc.MaterialRequest.Status.PartiallyDone",
- "En": "Partially Done",
- "Tr": "Kısmi Tamamlandı"
- },
- {
- "Key": "App.Prc.MaterialRequest.Status.Done",
- "En": "Done",
- "Tr": "Tamamlandı"
- },
{
"Key": "App.Prc.MaterialRequest.Status.Rejected",
"En": "Rejected",
@@ -139,10 +119,10 @@
"Tr": "Talep Tarihi"
},
{
- "FieldName": "Status",
- "CaptionName": "App.Listform.ListformField.Status",
- "En": "Status",
- "Tr": "Durum"
+ "FieldName": "Description",
+ "CaptionName": "App.Listform.ListformField.GeneralDescription",
+ "En": "General Description",
+ "Tr": "Genel Açıklama"
},
{
"FieldName": "ApprovalStatus",
@@ -150,18 +130,6 @@
"En": "Approval Status",
"Tr": "Onay Durumu"
},
- {
- "FieldName": "RejectReasonId",
- "CaptionName": "App.Listform.ListformField.RejectReasonId",
- "En": "Rejection Reason",
- "Tr": "Red Nedeni"
- },
- {
- "FieldName": "Description",
- "CaptionName": "App.Listform.ListformField.GeneralDescription",
- "En": "General Description",
- "Tr": "Genel Açıklama"
- },
{
"FieldName": "DeptApproverUserNames",
"CaptionName": "App.Listform.ListformField.DeptApproverUserNames",
@@ -174,6 +142,12 @@
"En": "Purchasing Approvers",
"Tr": "Satınalma Onaycıları"
},
+ {
+ "FieldName": "ApprovalUserName",
+ "CaptionName": "App.Listform.ListformField.ApprovalUserName",
+ "En": "Approval User Name",
+ "Tr": "Onaylayan Kullanıcı Adı"
+ },
{
"FieldName": "ApprovalDate",
"CaptionName": "App.Listform.ListformField.ApprovalDate",
@@ -181,10 +155,10 @@
"Tr": "Onay Tarihi"
},
{
- "FieldName": "ApprovalNote",
- "CaptionName": "App.Listform.ListformField.ApprovalNote",
- "En": "Approval Note",
- "Tr": "Onay Notu"
+ "FieldName": "ApprovalDescription",
+ "CaptionName": "App.Listform.ListformField.ApprovalDescription",
+ "En": "Approval Description",
+ "Tr": "Onay Açıklaması"
}
]
}
@@ -257,7 +231,7 @@
],
"UpdateCommand": null,
"UpdateBeforeCommand": null,
- "UpdateAfterCommand": "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Prc_T_MaterialRequest WHERE Id IN @Id); EXEC dbo.Prc_P_MaterialRequestAfterSave @_id, @LastModifierId",
+ "UpdateAfterCommand": "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Prc_T_MaterialRequest WHERE Id IN @Id); EXEC dbo.Prc_P_MaterialRequestAfterSave @_id",
"UpdateFieldsDefaultValueDto": [
{
"FieldName": "LastModificationTime",
@@ -281,20 +255,13 @@
"Value": "0",
"CustomValueType": 1,
"SqlQuery": null
- },
- {
- "FieldName": "Status",
- "FieldDbType": 16,
- "Value": "Draft",
- "CustomValueType": 1,
- "SqlQuery": null
}
],
"WidgetsDto": [
{
"ColGap": 3,
"ColSpan": 4,
- "SqlQuery": "SELECT 'App.Prc.MaterialRequest.Status.DeptApproval' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'orange' AS \"Color\", 'App.Prc.MaterialRequestDeptApproval' AS \"SubTitle\", 'FaUserTie' AS \"Icon\" FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"Status\" = 'DeptApproval' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.PurchaseApproval', CAST(COUNT(*) AS VARCHAR(32)), 'purple', 'App.Prc.MaterialRequestDeptApproval', 'FaHourglassHalf' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"Status\" = 'PurchaseApproval' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.Rejected', CAST(COUNT(*) AS VARCHAR(32)), 'red', 'App.Prc.MaterialRequestDeptApproval', 'FaTimesCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"Status\" = 'Rejected'",
+ "SqlQuery": "SELECT 'App.Prc.MaterialRequest.Status.DeptApproval' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'orange' AS \"Color\", 'App.Prc.MaterialRequestDeptApproval' AS \"SubTitle\", 'FaUserTie' AS \"Icon\" FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"ApprovalStatus\" = N'Departman Onayı' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.PurchaseApproval', CAST(COUNT(*) AS VARCHAR(32)), 'purple', 'App.Prc.MaterialRequestDeptApproval', 'FaHourglassHalf' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"ApprovalStatus\" = N'Satınalma Onayı' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.Rejected', CAST(COUNT(*) AS VARCHAR(32)), 'red', 'App.Prc.MaterialRequestDeptApproval', 'FaTimesCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"ApprovalStatus\" = N'Reddedildi'",
"Title": "Title",
"Value": "Value",
"ValueClassName": "text-3xl",
@@ -569,13 +536,13 @@
"DefaultLayout": "grid"
},
"WorkflowDto": {
- "ApprovalUserFieldName": null,
+ "ApprovalUserFieldName": "ApprovalUserName",
"ApprovalDateFieldName": "ApprovalDate",
"ApprovalStatusFieldName": "ApprovalStatus",
- "ApprovalDescriptionFieldName": "ApprovalNote",
+ "ApprovalDescriptionFieldName": "ApprovalDescription",
"ApprovalIsFilterUserName": true,
"ApprovalIsResetWorkflow": true,
- "ApprovalIsManualStart": false,
+ "ApprovalIsManualStart": true,
"Criteria": [
{
"ListFormCode": "App.Prc.MaterialRequestDeptApproval",
@@ -611,6 +578,13 @@
"PositionX": 40,
"PositionY": 160,
"CompareOutcomes": [],
+ "RejectReason": {
+ "TableName": "Prc_T_RejectReason",
+ "ValueField": "Id",
+ "TextField": "Name",
+ "TargetField": "",
+ "Required": true
+ },
"Id": "App.Prc.MaterialRequestDeptApproval-N2"
},
{
@@ -629,6 +603,13 @@
"PositionX": 40,
"PositionY": 280,
"CompareOutcomes": [],
+ "RejectReason": {
+ "TableName": "Prc_T_RejectReason",
+ "ValueField": "Id",
+ "TextField": "Name",
+ "TargetField": "",
+ "Required": true
+ },
"Id": "App.Prc.MaterialRequestDeptApproval-N3"
},
{
@@ -2024,8 +2005,8 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "Status",
- "CaptionName": "App.Listform.ListformField.Status",
+ "FieldName": "Description",
+ "CaptionName": "App.Listform.ListformField.GeneralDescription",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
@@ -2082,28 +2063,16 @@
"ShowInColumn": null
},
"LookupDto": {
- "DataSourceType": 1,
- "ValueExpr": "key",
- "DisplayExpr": "name",
+ "DataSourceType": 0,
+ "ValueExpr": "Key",
+ "DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
- "LookupQuery": "[{\"key\":\"Draft\",\"name\":\"App.Prc.MaterialRequest.Status.Draft\"},{\"key\":\"DeptApproval\",\"name\":\"App.Prc.MaterialRequest.Status.DeptApproval\"},{\"key\":\"PurchaseApproval\",\"name\":\"App.Prc.MaterialRequest.Status.PurchaseApproval\"},{\"key\":\"Approved\",\"name\":\"App.Prc.MaterialRequest.Status.Approved\"},{\"key\":\"InProgress\",\"name\":\"App.Prc.MaterialRequest.Status.InProgress\"},{\"key\":\"PartiallyDone\",\"name\":\"App.Prc.MaterialRequest.Status.PartiallyDone\"},{\"key\":\"Done\",\"name\":\"App.Prc.MaterialRequest.Status.Done\"},{\"key\":\"Rejected\",\"name\":\"App.Prc.MaterialRequest.Status.Rejected\"}]"
+ "LookupQuery": null
},
- "ValidationRuleDto": [
- {
- "Type": "required",
- "Message": null,
- "IgnoreEmptyValue": false,
- "Reevaluate": true,
- "ComparisonType": "",
- "Pattern": "",
- "Max": null,
- "Min": null,
- "Trim": true
- }
- ],
+ "ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
@@ -2133,8 +2102,8 @@
"Format": null,
"EditOrderNo": 8,
"EditGroupOrderNo": 1,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
+ "EditorType2": "dxTextArea",
+ "ColSpan": 4,
"EditorOptions": "{\"readOnly\":true}",
"GridBoxOptions": null,
"TagBoxOptions": null,
@@ -2257,8 +2226,8 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 9,
- "EditGroupOrderNo": 1,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": "{\"readOnly\":true}",
@@ -2272,258 +2241,6 @@
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequestDeptApproval",
- "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": "RejectReasonId",
- "CaptionName": "App.Listform.ListformField.RejectReasonId",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 11,
- "SourceDbType": 9,
- "CultureName": "en",
- "DataType": "string",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 2,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Prc_T_RejectReason WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY SortOrder, Name"
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MaterialRequestDeptApproval.Create",
- "R": "App.Prc.MaterialRequestDeptApproval",
- "U": "App.Prc.MaterialRequestDeptApproval.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": 10,
- "EditGroupOrderNo": 1,
- "EditorType2": "dxSelectBox",
- "ColSpan": 3,
- "EditorOptions": "{\"showClearButton\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequestDeptApproval",
- "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": "Description",
- "CaptionName": "App.Listform.ListformField.GeneralDescription",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 12,
- "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.Prc.MaterialRequestDeptApproval.Create",
- "R": "App.Prc.MaterialRequestDeptApproval",
- "U": "App.Prc.MaterialRequestDeptApproval.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": 11,
- "EditGroupOrderNo": 1,
- "EditorType2": "dxTextArea",
- "ColSpan": 4,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
{
"EditType": null,
"ListFormCode": "App.Prc.MaterialRequestDeptApproval",
@@ -2547,7 +2264,7 @@
"Visible": false,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 13,
+ "ListOrderNo": 11,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
@@ -2673,7 +2390,133 @@
"Visible": false,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 14,
+ "ListOrderNo": 12,
+ "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.Prc.MaterialRequestDeptApproval.Create",
+ "R": "App.Prc.MaterialRequestDeptApproval",
+ "U": "App.Prc.MaterialRequestDeptApproval.Update",
+ "E": true,
+ "I": true
+ },
+ "CanRead": false,
+ "CanCreate": false,
+ "CanUpdate": false,
+ "CanExport": false,
+ "DefaultValue": null,
+ "DefaultValueType": 0,
+ "PivotSettingsDto": {
+ "IsPivot": true,
+ "Expanded": false,
+ "SortOrder": "asc",
+ "Area": "filter",
+ "Format": null,
+ "SummaryType": null,
+ "GroupInterval": "",
+ "WordWrapEnabled": false
+ },
+ "Alignment": "left",
+ "Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxTextBox",
+ "ColSpan": 1,
+ "EditorOptions": null,
+ "GridBoxOptions": null,
+ "TagBoxOptions": null,
+ "ImageUploadOptions": null,
+ "EditorScript": null,
+ "LastModificationTime": null,
+ "LastModifierId": null,
+ "CreationTime": "0001-01-01T00:00:00",
+ "CreatorId": null,
+ "Id": "00000000-0000-0000-0000-000000000000"
+ },
+ {
+ "EditType": null,
+ "ListFormCode": "App.Prc.MaterialRequestDeptApproval",
+ "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": "ApprovalUserName",
+ "CaptionName": "App.Listform.ListformField.ApprovalUserName",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": true,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 13,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
@@ -2796,10 +2639,10 @@
"CaptionName": "App.Listform.ListformField.ApprovalDate",
"PlaceHolder": null,
"ReadOnly": false,
- "Visible": false,
+ "Visible": true,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 15,
+ "ListOrderNo": 14,
"SourceDbType": 6,
"CultureName": "en",
"DataType": "datetime",
@@ -2918,14 +2761,14 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "ApprovalNote",
- "CaptionName": "App.Listform.ListformField.ApprovalNote",
+ "FieldName": "ApprovalDescription",
+ "CaptionName": "App.Listform.ListformField.ApprovalDescription",
"PlaceHolder": null,
"ReadOnly": false,
- "Visible": false,
+ "Visible": true,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 16,
+ "ListOrderNo": 15,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
@@ -3015,7 +2858,7 @@
"Format": null,
"EditOrderNo": null,
"EditGroupOrderNo": null,
- "EditorType2": "dxTextArea",
+ "EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
@@ -3035,7 +2878,9 @@
"LanguageKeys": [
"App.Prc.MaterialRequestDeptApproval",
"App.Prc.MaterialRequestDeptApproval.Title",
- "App.Prc.MaterialRequestDeptApproval.Desc"
+ "App.Prc.MaterialRequestDeptApproval.Desc",
+ "App.Listform.ListformField.ApprovalUserName",
+ "App.Listform.ListformField.ApprovalDescription"
],
"PermissionGroupNames": [],
"PermissionNames": [
@@ -3055,6 +2900,6 @@
},
"DevRequest": {
"Id": "53294e77-a4fb-45e4-a80e-acf07b5d75be",
- "Title": "Satınalma -> Satınalma Talepleri"
+ "Title": "Satınalma -> Malzeme Talepleri"
}
}
\ No newline at end of file
diff --git a/configs/seeds/wizard/Prc_MaterialRequestLine.json b/configs/seeds/wizard/Prc_MaterialRequestLine.json
index 1f8ae5e8..95fecddc 100644
--- a/configs/seeds/wizard/Prc_MaterialRequestLine.json
+++ b/configs/seeds/wizard/Prc_MaterialRequestLine.json
@@ -26,15 +26,15 @@
},
"Language": {
"MenuParentEn": "Material Requests",
- "MenuParentTr": "Satınalma Talepleri",
+ "MenuParentTr": "Malzeme Talepleri",
"PermissionGroupEn": "Purchasing",
"PermissionGroupTr": "Satınalma",
"MenuEn": "Request Lines",
"MenuTr": "Talep Satırları",
"TitleEn": "Request Lines",
"TitleTr": "Talep Satırları",
- "DescEn": "Request Lines — the products requested in a material request.\nWhere: Purchasing › Material Requests › any list › Request Lines tab (no menu of its own).\nFields: product (active, purchasable products), quantity, unit (copied from the product's purchase unit, read-only), fulfilment (Purchasing / Warehouse Transfer), due date, request reason, delivered quantity (read-only), purchasing responsible, line status (Waiting / Done / Cancelled).\nRules: lines can be added or deleted only while the request has not been sent for approval. Changing line statuses recalculates the request status (Partially Done / Done).",
- "DescTr": "Talep Satırları — malzeme talebinde istenen ürünler.\nNerede: Satınalma › Satınalma Talepleri › herhangi bir liste › Talep Satırları sekmesi (kendi menüsü yoktur).\nAlanlar: ürün (aktif ve satın alınabilir ürünler), miktar, birim (ürünün satınalma biriminden gelir, salt okunur), karşılama şekli (Satınalma / Depodan Transfer), termin tarihi, talep nedeni, teslim edilen miktar (salt okunur), satınalma sorumlusu, satır durumu (Bekliyor / Tamamlandı / İptal).\nKurallar: satır yalnız talep onaya gönderilmeden eklenip silinebilir. Satır durumları değişince talebin durumu yeniden hesaplanır (Kısmi Tamamlandı / Tamamlandı).",
+ "DescEn": "Request Lines — the products requested in a material request.\nWhere: Purchasing › Material Requests › My Requests, Awaiting Department Approval and Awaiting Purchasing Approval › Request Lines tab; All Requests shows the lines as columns (no menu of its own).\nFields: product (active, purchasable products), quantity, unit (copied from the product's purchase unit, read-only), fulfilment (Purchasing / Warehouse Transfer), due date, request reason, delivered quantity (read-only), purchasing responsible, line status (Waiting / Done / Cancelled).\nRules: lines can be added or deleted only while the request has not been sent for approval. Changing line statuses recalculates the request status (Partially Done / Done).",
+ "DescTr": "Talep Satırları — malzeme talebinde istenen ürünler.\nNerede: Satınalma › Malzeme Talepleri › Taleplerim, Departman Onayı Bekleyenler ve Satınalma Onayı Bekleyenler › Talep Satırları sekmesi; Tüm Talepler satırları kolon olarak gösterir (kendi menüsü yoktur).\nAlanlar: ürün (aktif ve satın alınabilir ürünler), miktar, birim (ürünün satınalma biriminden gelir, salt okunur), karşılama şekli (Satınalma / Depodan Transfer), termin tarihi, talep nedeni, teslim edilen miktar (salt okunur), satınalma sorumlusu, satır durumu (Bekliyor / Tamamlandı / İptal).\nKurallar: satır yalnız talep onaya gönderilmeden eklenip silinebilir. Satır durumları değişince talebin durumu yeniden hesaplanır (Kısmi Tamamlandı / Tamamlandı).",
"Texts": [
{
"Key": "App.StaticLookup.Purchase",
@@ -151,7 +151,7 @@
"SeedSyncDelete": false,
"DeleteCommand": "UPDATE \"Prc_T_MaterialRequestItem\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id",
"DeleteBeforeCommand": "IF EXISTS (SELECT 1 FROM Prc_T_MaterialRequestItem i INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId WHERE i.Id IN @Id AND ISNULL(r.ApprovalStatus, N'') <> N'') THROW 50002, N'Onaya gönderilmiş talepten satır silinemez.', 1;",
- "DeleteAfterCommand": "DECLARE @_r uniqueidentifier = (SELECT TOP 1 MaterialRequestId FROM Prc_T_MaterialRequestItem WHERE Id IN @Id); EXEC dbo.Prc_P_MaterialRequestAfterSave @_r, @DeleterId",
+ "DeleteAfterCommand": null,
"DeleteFieldsDefaultValueDto": [
{
"FieldName": "DeleterId",
@@ -170,7 +170,7 @@
],
"InsertCommand": null,
"InsertBeforeCommand": "IF EXISTS (SELECT 1 FROM Prc_T_MaterialRequest WHERE Id = @MaterialRequestId AND ISNULL(ApprovalStatus, N'') <> N'') THROW 50001, N'Onaya gönderilmiş talebe satır eklenemez.', 1;",
- "InsertAfterCommand": "EXEC dbo.Prc_P_MaterialRequestAfterSave @MaterialRequestId, @CreatorId",
+ "InsertAfterCommand": null,
"InsertFieldsDefaultValueDto": [
{
"FieldName": "CreationTime",
@@ -203,7 +203,7 @@
],
"UpdateCommand": null,
"UpdateBeforeCommand": null,
- "UpdateAfterCommand": "DECLARE @_r uniqueidentifier = (SELECT TOP 1 MaterialRequestId FROM Prc_T_MaterialRequestItem WHERE Id IN @Id); EXEC dbo.Prc_P_MaterialRequestAfterSave @_r, @LastModifierId",
+ "UpdateAfterCommand": null,
"UpdateFieldsDefaultValueDto": [
{
"FieldName": "LastModificationTime",
@@ -513,6 +513,7 @@
"ApprovalDescriptionFieldName": null,
"ApprovalIsFilterUserName": false,
"ApprovalIsResetWorkflow": false,
+ "ApprovalIsManualStart": false,
"Criteria": []
},
"UserId": null,
@@ -920,7 +921,7 @@
"CaptionName": "App.Listform.ListformField.MaterialRequestId",
"PlaceHolder": null,
"ReadOnly": false,
- "Visible": true,
+ "Visible": false,
"IsActive": true,
"Width": 0,
"ListOrderNo": 2,
@@ -1841,7 +1842,7 @@
"Format": null,
"EditOrderNo": 6,
"EditGroupOrderNo": 1,
- "EditorType2": "dxTextBox",
+ "EditorType2": "dxTextArea",
"ColSpan": 2,
"EditorOptions": "{\"showClearButton\":true,\"maxLength\":256}",
"GridBoxOptions": null,
@@ -2279,6 +2280,6 @@
},
"DevRequest": {
"Id": "53294e77-a4fb-45e4-a80e-acf07b5d75be",
- "Title": "Satınalma -> Satınalma Talepleri"
+ "Title": "Satınalma -> Malzeme Talepleri"
}
}
\ No newline at end of file
diff --git a/configs/seeds/wizard/Prc_MaterialRequestPurchaseApproval.json b/configs/seeds/wizard/Prc_MaterialRequestPurchaseApproval.json
index f235b439..c7bee3c2 100644
--- a/configs/seeds/wizard/Prc_MaterialRequestPurchaseApproval.json
+++ b/configs/seeds/wizard/Prc_MaterialRequestPurchaseApproval.json
@@ -25,15 +25,15 @@
},
"Language": {
"MenuParentEn": "Material Requests",
- "MenuParentTr": "Satınalma Talepleri",
+ "MenuParentTr": "Malzeme Talepleri",
"PermissionGroupEn": "Purchasing",
"PermissionGroupTr": "Satınalma",
"MenuEn": "Awaiting Purchasing Approval",
"MenuTr": "Satınalma Onayı Bekleyenler",
"TitleEn": "Awaiting Purchasing Approval",
"TitleTr": "Satınalma Onayı Bekleyenler",
- "DescEn": "Awaiting Purchasing Approval — material requests approved by the department and waiting for purchasing.\nWhere: Purchasing › Material Requests › Awaiting Purchasing Approval.\nWho: approvers defined in Administration › Definitions › Approvers with area Purchasing Desk (any department); each approver sees only the requests assigned to them.\nWhat to do: review the request and its lines, then Approve (the request becomes Approved and appears in Awaiting Planning, the requester is notified) or Reject with a note and a rejection reason.\nRelated: Awaiting Department Approval, Awaiting Planning, All Requests.",
- "DescTr": "Satınalma Onayı Bekleyenler — departmanca onaylanmış ve satınalmanın kararını bekleyen malzeme talepleri.\nNerede: Satınalma › Satınalma Talepleri › Satınalma Onayı Bekleyenler.\nKim: Yönetim › Tanımlamalar › Onaycılar'da Satınalma Masası onay yerinde tanımlı onaycılar (departmandan bağımsız); her onaycı yalnız kendisine düşen talepleri görür.\nNe yapılır: talebi ve satırlarını inceleyip Onayla (talep Onaylandı olur, Planlama Bekleyenler'e düşer, talep edene bilgi gider) ya da not ve red nedeniyle Reddet.\nİlişkili: Departman Onayı Bekleyenler, Planlama Bekleyenler, Tüm Talepler.",
+ "DescEn": "Awaiting Purchasing Approval — material requests approved by the department and waiting for purchasing.\nWhere: Purchasing › Material Requests › Awaiting Purchasing Approval.\nWho: users with update permission on Awaiting Purchasing Approval (directly or through their role); the approver list of each request is refreshed when the request is saved, and each approver sees only the requests assigned to them.\nWhat to do: review the request and its lines, then Approve (the request becomes Approved, the requester is notified) or Reject by choosing a rejection reason and an optional note; both are written to the approval description.\nRelated: Awaiting Department Approval, All Requests.",
+ "DescTr": "Satınalma Onayı Bekleyenler — departmanca onaylanmış ve satınalmanın kararını bekleyen malzeme talepleri.\nNerede: Satınalma › Malzeme Talepleri › Satınalma Onayı Bekleyenler.\nKim: Satınalma Onayı Bekleyenler ekranında güncelleme yetkisi olan kullanıcılar (doğrudan ya da rolüyle); talebin onaycı listesi talep kaydedilince yenilenir, her onaycı yalnız kendisine düşen talepleri görür.\nNe yapılır: talebi ve satırlarını inceleyip Onayla (talep Onaylandı olur, talep edene bilgi gider) ya da red nedeni seçip isteğe bağlı notla Reddet; ikisi de onay açıklamasına yazılır.\nİlişkili: Departman Onayı Bekleyenler, Tüm Talepler.",
"Texts": [
{
"Key": "App.Prc.MaterialRequest.Group.Request",
@@ -45,11 +45,6 @@
"En": "Approval / Rejection",
"Tr": "Onay / Red Bilgileri"
},
- {
- "Key": "App.Prc.MaterialRequest.Status.Draft",
- "En": "Draft",
- "Tr": "Taslak"
- },
{
"Key": "App.Prc.MaterialRequest.Status.DeptApproval",
"En": "Department Approval",
@@ -65,21 +60,6 @@
"En": "Approved",
"Tr": "Onaylandı"
},
- {
- "Key": "App.Prc.MaterialRequest.Status.InProgress",
- "En": "In Progress",
- "Tr": "İşlemde"
- },
- {
- "Key": "App.Prc.MaterialRequest.Status.PartiallyDone",
- "En": "Partially Done",
- "Tr": "Kısmi Tamamlandı"
- },
- {
- "Key": "App.Prc.MaterialRequest.Status.Done",
- "En": "Done",
- "Tr": "Tamamlandı"
- },
{
"Key": "App.Prc.MaterialRequest.Status.Rejected",
"En": "Rejected",
@@ -139,10 +119,10 @@
"Tr": "Talep Tarihi"
},
{
- "FieldName": "Status",
- "CaptionName": "App.Listform.ListformField.Status",
- "En": "Status",
- "Tr": "Durum"
+ "FieldName": "Description",
+ "CaptionName": "App.Listform.ListformField.GeneralDescription",
+ "En": "General Description",
+ "Tr": "Genel Açıklama"
},
{
"FieldName": "ApprovalStatus",
@@ -150,18 +130,6 @@
"En": "Approval Status",
"Tr": "Onay Durumu"
},
- {
- "FieldName": "RejectReasonId",
- "CaptionName": "App.Listform.ListformField.RejectReasonId",
- "En": "Rejection Reason",
- "Tr": "Red Nedeni"
- },
- {
- "FieldName": "Description",
- "CaptionName": "App.Listform.ListformField.GeneralDescription",
- "En": "General Description",
- "Tr": "Genel Açıklama"
- },
{
"FieldName": "DeptApproverUserNames",
"CaptionName": "App.Listform.ListformField.DeptApproverUserNames",
@@ -174,6 +142,12 @@
"En": "Purchasing Approvers",
"Tr": "Satınalma Onaycıları"
},
+ {
+ "FieldName": "ApprovalUserName",
+ "CaptionName": "App.Listform.ListformField.ApprovalUserName",
+ "En": "Approval User Name",
+ "Tr": "Onaylayan Kullanıcı Adı"
+ },
{
"FieldName": "ApprovalDate",
"CaptionName": "App.Listform.ListformField.ApprovalDate",
@@ -181,32 +155,10 @@
"Tr": "Onay Tarihi"
},
{
- "FieldName": "ApprovalNote",
- "CaptionName": "App.Listform.ListformField.ApprovalNote",
- "En": "Approval Note",
- "Tr": "Onay Notu"
- }
- ]
- },
- {
- "Items": [
- {
- "FieldName": "DeptApprovedBy",
- "CaptionName": "App.Listform.ListformField.DeptApprovedBy",
- "En": "Department Approved By",
- "Tr": "Departman Onaylayan"
- },
- {
- "FieldName": "DeptApprovalDate",
- "CaptionName": "App.Listform.ListformField.DeptApprovalDate",
- "En": "Department Approval Date",
- "Tr": "Departman Onay Tarihi"
- },
- {
- "FieldName": "DeptApprovalNote",
- "CaptionName": "App.Listform.ListformField.DeptApprovalNote",
- "En": "Department Approval Note",
- "Tr": "Departman Onay Notu"
+ "FieldName": "ApprovalDescription",
+ "CaptionName": "App.Listform.ListformField.ApprovalDescription",
+ "En": "Approval Description",
+ "Tr": "Onay Açıklaması"
}
]
}
@@ -279,7 +231,7 @@
],
"UpdateCommand": null,
"UpdateBeforeCommand": null,
- "UpdateAfterCommand": "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Prc_T_MaterialRequest WHERE Id IN @Id); EXEC dbo.Prc_P_MaterialRequestAfterSave @_id, @LastModifierId",
+ "UpdateAfterCommand": "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Prc_T_MaterialRequest WHERE Id IN @Id); EXEC dbo.Prc_P_MaterialRequestAfterSave @_id",
"UpdateFieldsDefaultValueDto": [
{
"FieldName": "LastModificationTime",
@@ -303,20 +255,13 @@
"Value": "0",
"CustomValueType": 1,
"SqlQuery": null
- },
- {
- "FieldName": "Status",
- "FieldDbType": 16,
- "Value": "Draft",
- "CustomValueType": 1,
- "SqlQuery": null
}
],
"WidgetsDto": [
{
"ColGap": 3,
"ColSpan": 4,
- "SqlQuery": "SELECT 'App.Prc.MaterialRequest.Status.PurchaseApproval' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'purple' AS \"Color\", 'App.Prc.MaterialRequestPurchaseApproval' AS \"SubTitle\", 'FaHourglassHalf' AS \"Icon\" FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"Status\" = 'PurchaseApproval' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.Approved', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Prc.MaterialRequestPurchaseApproval', 'FaCheckCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"Status\" = 'Approved' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.Rejected', CAST(COUNT(*) AS VARCHAR(32)), 'red', 'App.Prc.MaterialRequestPurchaseApproval', 'FaTimesCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"Status\" = 'Rejected'",
+ "SqlQuery": "SELECT 'App.Prc.MaterialRequest.Status.PurchaseApproval' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'purple' AS \"Color\", 'App.Prc.MaterialRequestPurchaseApproval' AS \"SubTitle\", 'FaHourglassHalf' AS \"Icon\" FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"ApprovalStatus\" = N'Satınalma Onayı' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.Approved', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Prc.MaterialRequestPurchaseApproval', 'FaCheckCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"ApprovalStatus\" = N'Onaylandı' UNION ALL SELECT 'App.Prc.MaterialRequest.Status.Rejected', CAST(COUNT(*) AS VARCHAR(32)), 'red', 'App.Prc.MaterialRequestPurchaseApproval', 'FaTimesCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"ApprovalStatus\" = N'Reddedildi'",
"Title": "Title",
"Value": "Value",
"ValueClassName": "text-3xl",
@@ -533,13 +478,6 @@
"Caption": "App.Prc.MaterialRequest.Group.Request",
"ColCount": 2,
"ColSpan": 2
- },
- {
- "Order": 2,
- "ItemType": "group",
- "Caption": "App.Prc.MaterialRequest.Group.Approval",
- "ColCount": 2,
- "ColSpan": 2
}
],
"PermissionDto": {
@@ -598,10 +536,10 @@
"DefaultLayout": "grid"
},
"WorkflowDto": {
- "ApprovalUserFieldName": null,
+ "ApprovalUserFieldName": "ApprovalUserName",
"ApprovalDateFieldName": "ApprovalDate",
"ApprovalStatusFieldName": "ApprovalStatus",
- "ApprovalDescriptionFieldName": "ApprovalNote",
+ "ApprovalDescriptionFieldName": "ApprovalDescription",
"ApprovalIsFilterUserName": true,
"ApprovalIsResetWorkflow": true,
"ApprovalIsManualStart": false,
@@ -640,6 +578,13 @@
"PositionX": 40,
"PositionY": 160,
"CompareOutcomes": [],
+ "RejectReason": {
+ "TableName": "Prc_T_RejectReason",
+ "ValueField": "Id",
+ "TextField": "Name",
+ "TargetField": "",
+ "Required": true
+ },
"Id": "App.Prc.MaterialRequestPurchaseApproval-N2"
},
{
@@ -658,6 +603,13 @@
"PositionX": 40,
"PositionY": 280,
"CompareOutcomes": [],
+ "RejectReason": {
+ "TableName": "Prc_T_RejectReason",
+ "ValueField": "Id",
+ "TextField": "Name",
+ "TargetField": "",
+ "Required": true
+ },
"Id": "App.Prc.MaterialRequestPurchaseApproval-N3"
},
{
@@ -2053,8 +2005,8 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "Status",
- "CaptionName": "App.Listform.ListformField.Status",
+ "FieldName": "Description",
+ "CaptionName": "App.Listform.ListformField.GeneralDescription",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
@@ -2111,28 +2063,16 @@
"ShowInColumn": null
},
"LookupDto": {
- "DataSourceType": 1,
- "ValueExpr": "key",
- "DisplayExpr": "name",
+ "DataSourceType": 0,
+ "ValueExpr": "Key",
+ "DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
- "LookupQuery": "[{\"key\":\"Draft\",\"name\":\"App.Prc.MaterialRequest.Status.Draft\"},{\"key\":\"DeptApproval\",\"name\":\"App.Prc.MaterialRequest.Status.DeptApproval\"},{\"key\":\"PurchaseApproval\",\"name\":\"App.Prc.MaterialRequest.Status.PurchaseApproval\"},{\"key\":\"Approved\",\"name\":\"App.Prc.MaterialRequest.Status.Approved\"},{\"key\":\"InProgress\",\"name\":\"App.Prc.MaterialRequest.Status.InProgress\"},{\"key\":\"PartiallyDone\",\"name\":\"App.Prc.MaterialRequest.Status.PartiallyDone\"},{\"key\":\"Done\",\"name\":\"App.Prc.MaterialRequest.Status.Done\"},{\"key\":\"Rejected\",\"name\":\"App.Prc.MaterialRequest.Status.Rejected\"}]"
+ "LookupQuery": null
},
- "ValidationRuleDto": [
- {
- "Type": "required",
- "Message": null,
- "IgnoreEmptyValue": false,
- "Reevaluate": true,
- "ComparisonType": "",
- "Pattern": "",
- "Max": null,
- "Min": null,
- "Trim": true
- }
- ],
+ "ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
@@ -2162,8 +2102,8 @@
"Format": null,
"EditOrderNo": 8,
"EditGroupOrderNo": 1,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
+ "EditorType2": "dxTextArea",
+ "ColSpan": 2,
"EditorOptions": "{\"readOnly\":true}",
"GridBoxOptions": null,
"TagBoxOptions": null,
@@ -2286,8 +2226,8 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 9,
- "EditGroupOrderNo": 1,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": "{\"readOnly\":true}",
@@ -2301,258 +2241,6 @@
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
},
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequestPurchaseApproval",
- "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": "RejectReasonId",
- "CaptionName": "App.Listform.ListformField.RejectReasonId",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 11,
- "SourceDbType": 9,
- "CultureName": "en",
- "DataType": "string",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 2,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Prc_T_RejectReason WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY SortOrder, Name"
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MaterialRequestPurchaseApproval.Create",
- "R": "App.Prc.MaterialRequestPurchaseApproval",
- "U": "App.Prc.MaterialRequestPurchaseApproval.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": 10,
- "EditGroupOrderNo": 1,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
- "EditorOptions": "{\"showClearButton\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequestPurchaseApproval",
- "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": "Description",
- "CaptionName": "App.Listform.ListformField.GeneralDescription",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 12,
- "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.Prc.MaterialRequestPurchaseApproval.Create",
- "R": "App.Prc.MaterialRequestPurchaseApproval",
- "U": "App.Prc.MaterialRequestPurchaseApproval.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": 11,
- "EditGroupOrderNo": 1,
- "EditorType2": "dxTextArea",
- "ColSpan": 2,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
{
"EditType": null,
"ListFormCode": "App.Prc.MaterialRequestPurchaseApproval",
@@ -2576,7 +2264,7 @@
"Visible": false,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 13,
+ "ListOrderNo": 11,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
@@ -2702,7 +2390,133 @@
"Visible": false,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 14,
+ "ListOrderNo": 12,
+ "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.Prc.MaterialRequestPurchaseApproval.Create",
+ "R": "App.Prc.MaterialRequestPurchaseApproval",
+ "U": "App.Prc.MaterialRequestPurchaseApproval.Update",
+ "E": true,
+ "I": true
+ },
+ "CanRead": false,
+ "CanCreate": false,
+ "CanUpdate": false,
+ "CanExport": false,
+ "DefaultValue": null,
+ "DefaultValueType": 0,
+ "PivotSettingsDto": {
+ "IsPivot": true,
+ "Expanded": false,
+ "SortOrder": "asc",
+ "Area": "filter",
+ "Format": null,
+ "SummaryType": null,
+ "GroupInterval": "",
+ "WordWrapEnabled": false
+ },
+ "Alignment": "left",
+ "Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxTextBox",
+ "ColSpan": 1,
+ "EditorOptions": null,
+ "GridBoxOptions": null,
+ "TagBoxOptions": null,
+ "ImageUploadOptions": null,
+ "EditorScript": null,
+ "LastModificationTime": null,
+ "LastModifierId": null,
+ "CreationTime": "0001-01-01T00:00:00",
+ "CreatorId": null,
+ "Id": "00000000-0000-0000-0000-000000000000"
+ },
+ {
+ "EditType": null,
+ "ListFormCode": "App.Prc.MaterialRequestPurchaseApproval",
+ "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": "ApprovalUserName",
+ "CaptionName": "App.Listform.ListformField.ApprovalUserName",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": true,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 13,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
@@ -2825,136 +2639,136 @@
"CaptionName": "App.Listform.ListformField.ApprovalDate",
"PlaceHolder": null,
"ReadOnly": false,
- "Visible": false,
+ "Visible": true,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 14,
+ "SourceDbType": 6,
+ "CultureName": "en",
+ "DataType": "datetime",
+ "SortIndex": 0,
+ "SortDirection": null,
+ "AllowSearch": true,
+ "AllowEditing": true,
+ "AllowAdding": true,
+ "ColumnCssClass": null,
+ "ColumnCssValue": null,
+ "BandName": null,
+ "ColumnFilterDto": {
+ "AllowFiltering": true,
+ "FilterOperations": null,
+ "SelectedFilterOperation": null,
+ "FilterValue": null
+ },
+ "ColumnHeaderDto": {
+ "AllowHeaderFiltering": true,
+ "AllowSearch": false,
+ "DataSource": null,
+ "DataSourceString": ""
+ },
+ "ColumnGroupingDto": {
+ "AllowGrouping": true,
+ "GroupIndex": null,
+ "AutoExpandGroup": false
+ },
+ "ColumnCustomizationDto": {
+ "Fixed": false,
+ "FixedPosition": "left",
+ "AllowReordering": true
+ },
+ "ColumnTotalSummaryDto": {
+ "SummaryType": null,
+ "ValueFormat": null,
+ "ShowInGroupFooter": false,
+ "AlignByColumn": false,
+ "DisplayFormat": null,
+ "ShowInColumn": null
+ },
+ "ColumnGroupSummaryDto": {
+ "SummaryType": null,
+ "ValueFormat": null,
+ "ShowInGroupFooter": false,
+ "AlignByColumn": false,
+ "DisplayFormat": null,
+ "ShowInColumn": null
+ },
+ "LookupDto": {
+ "DataSourceType": 0,
+ "ValueExpr": "Key",
+ "DisplayExpr": "Name",
+ "CascadeRelationField": null,
+ "CascadeFilterOperator": "=",
+ "CascadeParentFields": null,
+ "CascadeEmptyFields": null,
+ "LookupQuery": null
+ },
+ "ValidationRuleDto": [],
+ "ColumnStylingDto": [],
+ "PermissionDto": {
+ "Deny": false,
+ "C": "App.Prc.MaterialRequestPurchaseApproval.Create",
+ "R": "App.Prc.MaterialRequestPurchaseApproval",
+ "U": "App.Prc.MaterialRequestPurchaseApproval.Update",
+ "E": true,
+ "I": true
+ },
+ "CanRead": false,
+ "CanCreate": false,
+ "CanUpdate": false,
+ "CanExport": false,
+ "DefaultValue": null,
+ "DefaultValueType": 0,
+ "PivotSettingsDto": {
+ "IsPivot": true,
+ "Expanded": false,
+ "SortOrder": "asc",
+ "Area": "filter",
+ "Format": null,
+ "SummaryType": null,
+ "GroupInterval": "",
+ "WordWrapEnabled": false
+ },
+ "Alignment": "left",
+ "Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxDateBox",
+ "ColSpan": 1,
+ "EditorOptions": 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.Prc.MaterialRequestPurchaseApproval",
+ "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": "ApprovalDescription",
+ "CaptionName": "App.Listform.ListformField.ApprovalDescription",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": true,
"IsActive": true,
"Width": 0,
"ListOrderNo": 15,
- "SourceDbType": 6,
- "CultureName": "en",
- "DataType": "datetime",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 0,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": null
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MaterialRequestPurchaseApproval.Create",
- "R": "App.Prc.MaterialRequestPurchaseApproval",
- "U": "App.Prc.MaterialRequestPurchaseApproval.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
- "EditOrderNo": null,
- "EditGroupOrderNo": null,
- "EditorType2": "dxDateBox",
- "ColSpan": 1,
- "EditorOptions": 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.Prc.MaterialRequestPurchaseApproval",
- "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": "ApprovalNote",
- "CaptionName": "App.Listform.ListformField.ApprovalNote",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": false,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 16,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
@@ -3044,7 +2858,7 @@
"Format": null,
"EditOrderNo": null,
"EditGroupOrderNo": null,
- "EditorType2": "dxTextArea",
+ "EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
@@ -3056,384 +2870,6 @@
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequestPurchaseApproval",
- "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": "DeptApprovedBy",
- "CaptionName": "App.Listform.ListformField.DeptApprovedBy",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 17,
- "SourceDbType": 9,
- "CultureName": "en",
- "DataType": "string",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 2,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": "SELECT Id AS [Key], CONCAT(Name, ' ', Surname) AS [Name] FROM AbpUsers WHERE IsDeleted = 'false'"
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MaterialRequestPurchaseApproval.Create",
- "R": "App.Prc.MaterialRequestPurchaseApproval",
- "U": "App.Prc.MaterialRequestPurchaseApproval.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": 1,
- "EditGroupOrderNo": 2,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MaterialRequestPurchaseApproval",
- "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": "DeptApprovalDate",
- "CaptionName": "App.Listform.ListformField.DeptApprovalDate",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 18,
- "SourceDbType": 6,
- "CultureName": "en",
- "DataType": "datetime",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 0,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": null
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MaterialRequestPurchaseApproval.Create",
- "R": "App.Prc.MaterialRequestPurchaseApproval",
- "U": "App.Prc.MaterialRequestPurchaseApproval.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
- "EditOrderNo": 2,
- "EditGroupOrderNo": 2,
- "EditorType2": "dxDateBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true,\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\"}",
- "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.Prc.MaterialRequestPurchaseApproval",
- "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": "DeptApprovalNote",
- "CaptionName": "App.Listform.ListformField.DeptApprovalNote",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 19,
- "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.Prc.MaterialRequestPurchaseApproval.Create",
- "R": "App.Prc.MaterialRequestPurchaseApproval",
- "U": "App.Prc.MaterialRequestPurchaseApproval.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": 2,
- "EditorType2": "dxTextArea",
- "ColSpan": 2,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
}
],
"IsDeletedField": true,
@@ -3442,7 +2878,9 @@
"LanguageKeys": [
"App.Prc.MaterialRequestPurchaseApproval",
"App.Prc.MaterialRequestPurchaseApproval.Title",
- "App.Prc.MaterialRequestPurchaseApproval.Desc"
+ "App.Prc.MaterialRequestPurchaseApproval.Desc",
+ "App.Listform.ListformField.ApprovalUserName",
+ "App.Listform.ListformField.ApprovalDescription"
],
"PermissionGroupNames": [],
"PermissionNames": [
@@ -3462,6 +2900,6 @@
},
"DevRequest": {
"Id": "53294e77-a4fb-45e4-a80e-acf07b5d75be",
- "Title": "Satınalma -> Satınalma Talepleri"
+ "Title": "Satınalma -> Malzeme Talepleri"
}
}
\ No newline at end of file
diff --git a/configs/seeds/wizard/Prc_MyMaterialRequest.json b/configs/seeds/wizard/Prc_MyMaterialRequest.json
index 5d6c5742..72500a5c 100644
--- a/configs/seeds/wizard/Prc_MyMaterialRequest.json
+++ b/configs/seeds/wizard/Prc_MyMaterialRequest.json
@@ -25,15 +25,15 @@
},
"Language": {
"MenuParentEn": "Material Requests",
- "MenuParentTr": "Satınalma Talepleri",
+ "MenuParentTr": "Malzeme Talepleri",
"PermissionGroupEn": "Purchasing",
"PermissionGroupTr": "Satınalma",
"MenuEn": "My Requests",
"MenuTr": "Taleplerim",
"TitleEn": "My Material Requests",
"TitleTr": "Taleplerim",
- "DescEn": "My Requests — the material requests you opened, in every status.\nWhere: Purchasing › Material Requests › My Requests.\nFields: request no (MT-YYYY-00001, automatic), priority, requester (you), department (your department by default), warehouse and location where the goods will be put, request date, status, general description; Request Lines tab: product, quantity, unit, fulfilment, due date, request reason.\nFlow: add lines, then send for approval — the department approver (Approvers › area Purchasing for your department) and then purchasing (area Purchasing Desk) approve or reject. Lines can only be added or removed before sending. Approval / rejection details are shown in the approval group.\nRelated: Awaiting Department Approval, Awaiting Purchasing Approval, Awaiting Planning, All Requests.",
- "DescTr": "Taleplerim — açtığınız malzeme talepleri, tüm durumlarıyla.\nNerede: Satınalma › Satınalma Talepleri › Taleplerim.\nAlanlar: talep no (MT-YYYY-00001, otomatik), öncelik, talep eden (siz), departman (varsayılan olarak sizin departmanınız), malın konulacağı depo ve konum, talep tarihi, durum, genel açıklama; Talep Satırları sekmesi: ürün, miktar, birim, karşılama şekli, termin tarihi, talep nedeni.\nAkış: satırları girip onaya gönderin — önce departman onaycısı (Onaycılar › departmanınız için Satınalma onay yeri), ardından satınalma (Satınalma Masası onay yeri) onaylar ya da reddeder. Satırlar yalnız onaya göndermeden önce eklenip silinebilir. Onay / red bilgileri onay grubunda görünür.\nİlişkili: Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Planlama Bekleyenler, Tüm Talepler.",
+ "DescEn": "My Requests — the material requests you opened, in every status.\nWhere: Purchasing › Material Requests › My Requests.\nFields: request no (MT-YYYY-00001, automatic), priority, requester (you), department (your department by default), warehouse and location where the goods will be put, request date, general description; Request Lines tab: product, quantity, unit, fulfilment, due date, request reason.\nFlow: add lines, then send for approval — the department approver (Approvers › area Purchasing for your department) and then purchasing (users with update permission on Awaiting Purchasing Approval (directly or through their role)) approve or reject. Lines can only be added or removed before sending. Approval status, approver, date and description (with the rejection reason) are filled by the workflow and shown in the list, not in the edit form.\nRelated: Awaiting Department Approval, Awaiting Purchasing Approval, All Requests.",
+ "DescTr": "Taleplerim — açtığınız malzeme talepleri, tüm durumlarıyla.\nNerede: Satınalma › Malzeme Talepleri › Taleplerim.\nAlanlar: talep no (MT-YYYY-00001, otomatik), öncelik, talep eden (siz), departman (varsayılan olarak sizin departmanınız), malın konulacağı depo ve konum, talep tarihi, genel açıklama; Talep Satırları sekmesi: ürün, miktar, birim, karşılama şekli, termin tarihi, talep nedeni.\nAkış: satırları girip onaya gönderin — önce departman onaycısı (Onaycılar › departmanınız için Satınalma onay yeri), ardından satınalma (Satınalma Onayı Bekleyenler ekranında güncelleme yetkisi olan kullanıcılar (doğrudan ya da rolüyle)) onaylar ya da reddeder. Satırlar yalnız onaya göndermeden önce eklenip silinebilir. Onay durumu, onaylayan, tarih ve açıklama (red nedeniyle birlikte) iş akışınca doldurulur; düzenleme formunda değil listede görünür.\nİlişkili: Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Tüm Talepler.",
"Texts": [
{
"Key": "App.Prc.MaterialRequest.Group.Request",
@@ -45,11 +45,6 @@
"En": "Approval / Rejection",
"Tr": "Onay / Red Bilgileri"
},
- {
- "Key": "App.Prc.MaterialRequest.Status.Draft",
- "En": "Draft",
- "Tr": "Taslak"
- },
{
"Key": "App.Prc.MaterialRequest.Status.DeptApproval",
"En": "Department Approval",
@@ -65,21 +60,6 @@
"En": "Approved",
"Tr": "Onaylandı"
},
- {
- "Key": "App.Prc.MaterialRequest.Status.InProgress",
- "En": "In Progress",
- "Tr": "İşlemde"
- },
- {
- "Key": "App.Prc.MaterialRequest.Status.PartiallyDone",
- "En": "Partially Done",
- "Tr": "Kısmi Tamamlandı"
- },
- {
- "Key": "App.Prc.MaterialRequest.Status.Done",
- "En": "Done",
- "Tr": "Tamamlandı"
- },
{
"Key": "App.Prc.MaterialRequest.Status.Rejected",
"En": "Rejected",
@@ -159,10 +139,10 @@
"Tr": "Talep Tarihi"
},
{
- "FieldName": "Status",
- "CaptionName": "App.Listform.ListformField.Status",
- "En": "Status",
- "Tr": "Durum"
+ "FieldName": "Description",
+ "CaptionName": "App.Listform.ListformField.GeneralDescription",
+ "En": "General Description",
+ "Tr": "Genel Açıklama"
},
{
"FieldName": "ApprovalStatus",
@@ -171,28 +151,10 @@
"Tr": "Onay Durumu"
},
{
- "FieldName": "RejectReasonId",
- "CaptionName": "App.Listform.ListformField.RejectReasonId",
- "En": "Rejection Reason",
- "Tr": "Red Nedeni"
- },
- {
- "FieldName": "Description",
- "CaptionName": "App.Listform.ListformField.GeneralDescription",
- "En": "General Description",
- "Tr": "Genel Açıklama"
- },
- {
- "FieldName": "PurchaseApproverUserNames",
- "CaptionName": "App.Listform.ListformField.PurchaseApproverUserNames",
- "En": "Purchasing Approvers",
- "Tr": "Satınalma Onaycıları"
- },
- {
- "FieldName": "ApproverId",
- "CaptionName": "App.Listform.ListformField.ApproverId",
- "En": "Approver Id",
- "Tr": "Onaylayan Kimlik"
+ "FieldName": "ApprovalUserName",
+ "CaptionName": "App.Listform.ListformField.ApprovalUserName",
+ "En": "Approval User Name",
+ "Tr": "Onaylayan Kullanıcı Adı"
},
{
"FieldName": "ApprovalDate",
@@ -201,56 +163,22 @@
"Tr": "Onay Tarihi"
},
{
- "FieldName": "ApprovalNote",
- "CaptionName": "App.Listform.ListformField.ApprovalNote",
- "En": "Approval Note",
- "Tr": "Onay Notu"
- }
- ]
- },
- {
- "Items": [
+ "FieldName": "ApprovalDescription",
+ "CaptionName": "App.Listform.ListformField.ApprovalDescription",
+ "En": "Approval Description",
+ "Tr": "Onay Açıklaması"
+ },
+ {
+ "FieldName": "PurchaseApproverUserNames",
+ "CaptionName": "App.Listform.ListformField.PurchaseApproverUserNames",
+ "En": "Purchasing Approvers",
+ "Tr": "Satınalma Onaycıları"
+ },
{
"FieldName": "DeptApproverUserNames",
"CaptionName": "App.Listform.ListformField.DeptApproverUserNames",
"En": "Department Approvers",
"Tr": "Departman Onaycıları"
- },
- {
- "FieldName": "PurchaseApprovedBy",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovedBy",
- "En": "Purchasing Approved By",
- "Tr": "Satınalma Onaylayan"
- },
- {
- "FieldName": "DeptApprovedBy",
- "CaptionName": "App.Listform.ListformField.DeptApprovedBy",
- "En": "Department Approved By",
- "Tr": "Departman Onaylayan"
- },
- {
- "FieldName": "PurchaseApprovalDate",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovalDate",
- "En": "Purchasing Approval Date",
- "Tr": "Satınalma Onay Tarihi"
- },
- {
- "FieldName": "DeptApprovalDate",
- "CaptionName": "App.Listform.ListformField.DeptApprovalDate",
- "En": "Department Approval Date",
- "Tr": "Departman Onay Tarihi"
- },
- {
- "FieldName": "PurchaseApprovalNote",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovalNote",
- "En": "Purchasing Approval Note",
- "Tr": "Satınalma Onay Notu"
- },
- {
- "FieldName": "DeptApprovalNote",
- "CaptionName": "App.Listform.ListformField.DeptApprovalNote",
- "En": "Department Approval Note",
- "Tr": "Departman Onay Notu"
}
]
}
@@ -290,7 +218,7 @@
],
"InsertCommand": null,
"InsertBeforeCommand": null,
- "InsertAfterCommand": "EXEC dbo.Prc_P_MaterialRequestAfterSave @Id, @CreatorId",
+ "InsertAfterCommand": "EXEC dbo.Prc_P_MaterialRequestAfterSave @Id",
"InsertFieldsDefaultValueDto": [
{
"FieldName": "CreationTime",
@@ -323,7 +251,7 @@
],
"UpdateCommand": null,
"UpdateBeforeCommand": null,
- "UpdateAfterCommand": "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Prc_T_MaterialRequest WHERE Id IN @Id); EXEC dbo.Prc_P_MaterialRequestAfterSave @_id, @LastModifierId",
+ "UpdateAfterCommand": "DECLARE @_id uniqueidentifier = (SELECT TOP 1 Id FROM Prc_T_MaterialRequest WHERE Id IN @Id); EXEC dbo.Prc_P_MaterialRequestAfterSave @_id",
"UpdateFieldsDefaultValueDto": [
{
"FieldName": "LastModificationTime",
@@ -375,20 +303,13 @@
"Value": "0",
"CustomValueType": 1,
"SqlQuery": ""
- },
- {
- "FieldName": "Status",
- "FieldDbType": 16,
- "Value": "Draft",
- "CustomValueType": 1,
- "SqlQuery": ""
}
],
"WidgetsDto": [
{
"ColGap": 3,
"ColSpan": 3,
- "SqlQuery": "SELECT 'App.Prc.MaterialRequest.Widget.Mine' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Prc.MyMaterialRequest' AS \"SubTitle\", 'FaClipboardList' AS \"Icon\" FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"RequesterUserId\" = '@USERID' UNION ALL SELECT 'App.Prc.MaterialRequest.Widget.Pending', CAST(COUNT(*) AS VARCHAR(32)), 'orange', 'App.Prc.MyMaterialRequest', 'FaHourglassHalf' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"RequesterUserId\" = '@USERID' AND \"Status\" IN ('DeptApproval', 'PurchaseApproval') UNION ALL SELECT 'App.Prc.MaterialRequest.Widget.Approved', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Prc.MyMaterialRequest', 'FaCheckCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"RequesterUserId\" = '@USERID' AND \"Status\" IN ('Approved', 'InProgress', 'PartiallyDone', 'Done') UNION ALL SELECT 'App.Prc.MaterialRequest.Widget.Rejected', CAST(COUNT(*) AS VARCHAR(32)), 'red', 'App.Prc.MyMaterialRequest', 'FaTimesCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"RequesterUserId\" = '@USERID' AND \"Status\" = 'Rejected'",
+ "SqlQuery": "SELECT 'App.Prc.MaterialRequest.Widget.Mine' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Prc.MyMaterialRequest' AS \"SubTitle\", 'FaClipboardList' AS \"Icon\" FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"RequesterUserId\" = '@USERID' UNION ALL SELECT 'App.Prc.MaterialRequest.Widget.Pending', CAST(COUNT(*) AS VARCHAR(32)), 'orange', 'App.Prc.MyMaterialRequest', 'FaHourglassHalf' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"RequesterUserId\" = '@USERID' AND \"ApprovalStatus\" IN (N'Departman Onayı', N'Satınalma Onayı') UNION ALL SELECT 'App.Prc.MaterialRequest.Widget.Approved', CAST(COUNT(*) AS VARCHAR(32)), 'green', 'App.Prc.MyMaterialRequest', 'FaCheckCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"RequesterUserId\" = '@USERID' AND \"ApprovalStatus\" = N'Onaylandı' UNION ALL SELECT 'App.Prc.MaterialRequest.Widget.Rejected', CAST(COUNT(*) AS VARCHAR(32)), 'red', 'App.Prc.MyMaterialRequest', 'FaTimesCircle' FROM \"Prc_T_MaterialRequest\" WHERE \"TenantId\" = '@TENANTID' AND \"RequesterUserId\" = '@USERID' AND \"ApprovalStatus\" = N'Reddedildi'",
"Title": "Title",
"Value": "Value",
"ValueClassName": "text-3xl",
@@ -575,6 +496,7 @@
"AllowAllDeleting": false,
"AllowAdding": true,
"AllowDuplicate": false,
+ "OpenDetailAfterInsert": true,
"UseIcons": false,
"ConfirmDelete": true,
"NewRowPosition": "viewportTop",
@@ -605,13 +527,6 @@
"Caption": "App.Prc.MaterialRequest.Group.Request",
"ColCount": 4,
"ColSpan": 4
- },
- {
- "Order": 2,
- "ItemType": "group",
- "Caption": "App.Prc.MaterialRequest.Group.Approval",
- "ColCount": 4,
- "ColSpan": 4
}
],
"PermissionDto": {
@@ -670,13 +585,13 @@
"DefaultLayout": "grid"
},
"WorkflowDto": {
- "ApprovalUserFieldName": "ApproverId",
+ "ApprovalUserFieldName": "ApprovalUserName",
"ApprovalDateFieldName": "ApprovalDate",
"ApprovalStatusFieldName": "ApprovalStatus",
- "ApprovalDescriptionFieldName": "ApprovalNote",
+ "ApprovalDescriptionFieldName": "ApprovalDescription",
"ApprovalIsFilterUserName": false,
"ApprovalIsResetWorkflow": true,
- "ApprovalIsManualStart": false,
+ "ApprovalIsManualStart": true,
"Criteria": [
{
"ListFormCode": "App.Prc.MyMaterialRequest",
@@ -2125,8 +2040,8 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "Status",
- "CaptionName": "App.Listform.ListformField.Status",
+ "FieldName": "Description",
+ "CaptionName": "App.Listform.ListformField.GeneralDescription",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
@@ -2183,28 +2098,16 @@
"ShowInColumn": null
},
"LookupDto": {
- "DataSourceType": 1,
- "ValueExpr": "key",
- "DisplayExpr": "name",
+ "DataSourceType": 0,
+ "ValueExpr": "Key",
+ "DisplayExpr": "Name",
"CascadeRelationField": null,
"CascadeFilterOperator": "=",
"CascadeParentFields": null,
"CascadeEmptyFields": null,
- "LookupQuery": "[{\"key\":\"Draft\",\"name\":\"App.Prc.MaterialRequest.Status.Draft\"},{\"key\":\"DeptApproval\",\"name\":\"App.Prc.MaterialRequest.Status.DeptApproval\"},{\"key\":\"PurchaseApproval\",\"name\":\"App.Prc.MaterialRequest.Status.PurchaseApproval\"},{\"key\":\"Approved\",\"name\":\"App.Prc.MaterialRequest.Status.Approved\"},{\"key\":\"InProgress\",\"name\":\"App.Prc.MaterialRequest.Status.InProgress\"},{\"key\":\"PartiallyDone\",\"name\":\"App.Prc.MaterialRequest.Status.PartiallyDone\"},{\"key\":\"Done\",\"name\":\"App.Prc.MaterialRequest.Status.Done\"},{\"key\":\"Rejected\",\"name\":\"App.Prc.MaterialRequest.Status.Rejected\"}]"
+ "LookupQuery": null
},
- "ValidationRuleDto": [
- {
- "Type": "required",
- "Message": null,
- "IgnoreEmptyValue": false,
- "Reevaluate": true,
- "ComparisonType": "",
- "Pattern": "",
- "Max": null,
- "Min": null,
- "Trim": true
- }
- ],
+ "ValidationRuleDto": [],
"ColumnStylingDto": [],
"PermissionDto": {
"Deny": false,
@@ -2234,9 +2137,9 @@
"Format": null,
"EditOrderNo": 8,
"EditGroupOrderNo": 1,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true}",
+ "EditorType2": "dxTextBox",
+ "ColSpan": 2,
+ "EditorOptions": "{\"autoResizeEnabled\":true,\"minHeight\":60}",
"GridBoxOptions": null,
"TagBoxOptions": null,
"ImageUploadOptions": null,
@@ -2358,8 +2261,8 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 9,
- "EditGroupOrderNo": 1,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": "{\"readOnly\":true}",
@@ -2389,140 +2292,14 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "RejectReasonId",
- "CaptionName": "App.Listform.ListformField.RejectReasonId",
+ "FieldName": "ApprovalUserName",
+ "CaptionName": "App.Listform.ListformField.ApprovalUserName",
"PlaceHolder": null,
"ReadOnly": false,
"Visible": true,
"IsActive": true,
"Width": 0,
"ListOrderNo": 11,
- "SourceDbType": 9,
- "CultureName": "en",
- "DataType": "string",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 2,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Prc_T_RejectReason WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY SortOrder, Name"
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MyMaterialRequest.Create",
- "R": "App.Prc.MyMaterialRequest",
- "U": "App.Prc.MyMaterialRequest.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": 10,
- "EditGroupOrderNo": 1,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
- "EditorOptions": "{\"showClearButton\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MyMaterialRequest",
- "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": "Description",
- "CaptionName": "App.Listform.ListformField.GeneralDescription",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 12,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
@@ -2610,258 +2387,6 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 11,
- "EditGroupOrderNo": 1,
- "EditorType2": "dxTextBox",
- "ColSpan": 2,
- "EditorOptions": "{\"autoResizeEnabled\":true,\"minHeight\":60}",
- "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.Prc.MyMaterialRequest",
- "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": "PurchaseApproverUserNames",
- "CaptionName": "App.Listform.ListformField.PurchaseApproverUserNames",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": false,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 13,
- "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.Prc.MyMaterialRequest.Create",
- "R": "App.Prc.MyMaterialRequest",
- "U": "App.Prc.MyMaterialRequest.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
- "EditOrderNo": null,
- "EditGroupOrderNo": null,
- "EditorType2": "dxTextBox",
- "ColSpan": 1,
- "EditorOptions": null,
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MyMaterialRequest",
- "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": "ApproverId",
- "CaptionName": "App.Listform.ListformField.ApproverId",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": false,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 14,
- "SourceDbType": 9,
- "CultureName": "en",
- "DataType": "string",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 0,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": null
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MyMaterialRequest.Create",
- "R": "App.Prc.MyMaterialRequest",
- "U": "App.Prc.MyMaterialRequest.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
"EditOrderNo": null,
"EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
@@ -2897,10 +2422,10 @@
"CaptionName": "App.Listform.ListformField.ApprovalDate",
"PlaceHolder": null,
"ReadOnly": false,
- "Visible": false,
+ "Visible": true,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 15,
+ "ListOrderNo": 12,
"SourceDbType": 6,
"CultureName": "en",
"DataType": "datetime",
@@ -3019,14 +2544,14 @@
"JoinFieldName2": null,
"BaseTableJoinFieldName2_OrValue": null
},
- "FieldName": "ApprovalNote",
- "CaptionName": "App.Listform.ListformField.ApprovalNote",
+ "FieldName": "ApprovalDescription",
+ "CaptionName": "App.Listform.ListformField.ApprovalDescription",
"PlaceHolder": null,
"ReadOnly": false,
- "Visible": false,
+ "Visible": true,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 16,
+ "ListOrderNo": 13,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
@@ -3116,7 +2641,133 @@
"Format": null,
"EditOrderNo": null,
"EditGroupOrderNo": null,
- "EditorType2": "dxTextArea",
+ "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.Prc.MyMaterialRequest",
+ "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": "PurchaseApproverUserNames",
+ "CaptionName": "App.Listform.ListformField.PurchaseApproverUserNames",
+ "PlaceHolder": null,
+ "ReadOnly": false,
+ "Visible": false,
+ "IsActive": true,
+ "Width": 0,
+ "ListOrderNo": 14,
+ "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.Prc.MyMaterialRequest.Create",
+ "R": "App.Prc.MyMaterialRequest",
+ "U": "App.Prc.MyMaterialRequest.Update",
+ "E": true,
+ "I": true
+ },
+ "CanRead": false,
+ "CanCreate": false,
+ "CanUpdate": false,
+ "CanExport": false,
+ "DefaultValue": null,
+ "DefaultValueType": 0,
+ "PivotSettingsDto": {
+ "IsPivot": true,
+ "Expanded": false,
+ "SortOrder": "asc",
+ "Area": "filter",
+ "Format": null,
+ "SummaryType": null,
+ "GroupInterval": "",
+ "WordWrapEnabled": false
+ },
+ "Alignment": "left",
+ "Format": null,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
+ "EditorType2": "dxTextBox",
"ColSpan": 1,
"EditorOptions": null,
"GridBoxOptions": null,
@@ -3152,7 +2803,7 @@
"Visible": false,
"IsActive": true,
"Width": 0,
- "ListOrderNo": 17,
+ "ListOrderNo": 15,
"SourceDbType": 16,
"CultureName": "en",
"DataType": "string",
@@ -3240,8 +2891,8 @@
},
"Alignment": "left",
"Format": null,
- "EditOrderNo": 1,
- "EditGroupOrderNo": 2,
+ "EditOrderNo": null,
+ "EditGroupOrderNo": null,
"EditorType2": "dxTextBox",
"ColSpan": 4,
"EditorOptions": "{\"readOnly\":true}",
@@ -3254,762 +2905,6 @@
"CreationTime": "0001-01-01T00:00:00",
"CreatorId": null,
"Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MyMaterialRequest",
- "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": "PurchaseApprovedBy",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovedBy",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 18,
- "SourceDbType": 9,
- "CultureName": "en",
- "DataType": "string",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 2,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": "SELECT Id AS [Key], CONCAT(Name, ' ', Surname) AS [Name] FROM AbpUsers WHERE IsDeleted = 'false'"
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MyMaterialRequest.Create",
- "R": "App.Prc.MyMaterialRequest",
- "U": "App.Prc.MyMaterialRequest.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
- "EditOrderNo": 2,
- "EditGroupOrderNo": 2,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MyMaterialRequest",
- "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": "DeptApprovedBy",
- "CaptionName": "App.Listform.ListformField.DeptApprovedBy",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 19,
- "SourceDbType": 9,
- "CultureName": "en",
- "DataType": "string",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 2,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": "SELECT Id AS [Key], CONCAT(Name, ' ', Surname) AS [Name] FROM AbpUsers WHERE IsDeleted = 'false'"
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MyMaterialRequest.Create",
- "R": "App.Prc.MyMaterialRequest",
- "U": "App.Prc.MyMaterialRequest.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": 2,
- "EditorType2": "dxSelectBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MyMaterialRequest",
- "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": "PurchaseApprovalDate",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovalDate",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 20,
- "SourceDbType": 6,
- "CultureName": "en",
- "DataType": "datetime",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 0,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": null
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MyMaterialRequest.Create",
- "R": "App.Prc.MyMaterialRequest",
- "U": "App.Prc.MyMaterialRequest.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": 2,
- "EditorType2": "dxDateBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true,\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\"}",
- "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.Prc.MyMaterialRequest",
- "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": "DeptApprovalDate",
- "CaptionName": "App.Listform.ListformField.DeptApprovalDate",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 21,
- "SourceDbType": 6,
- "CultureName": "en",
- "DataType": "datetime",
- "SortIndex": 0,
- "SortDirection": null,
- "AllowSearch": true,
- "AllowEditing": true,
- "AllowAdding": true,
- "ColumnCssClass": null,
- "ColumnCssValue": null,
- "BandName": null,
- "ColumnFilterDto": {
- "AllowFiltering": true,
- "FilterOperations": null,
- "SelectedFilterOperation": null,
- "FilterValue": null
- },
- "ColumnHeaderDto": {
- "AllowHeaderFiltering": true,
- "AllowSearch": false,
- "DataSource": null,
- "DataSourceString": ""
- },
- "ColumnGroupingDto": {
- "AllowGrouping": true,
- "GroupIndex": null,
- "AutoExpandGroup": false
- },
- "ColumnCustomizationDto": {
- "Fixed": false,
- "FixedPosition": "left",
- "AllowReordering": true
- },
- "ColumnTotalSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "ColumnGroupSummaryDto": {
- "SummaryType": null,
- "ValueFormat": null,
- "ShowInGroupFooter": false,
- "AlignByColumn": false,
- "DisplayFormat": null,
- "ShowInColumn": null
- },
- "LookupDto": {
- "DataSourceType": 0,
- "ValueExpr": "Key",
- "DisplayExpr": "Name",
- "CascadeRelationField": null,
- "CascadeFilterOperator": "=",
- "CascadeParentFields": null,
- "CascadeEmptyFields": null,
- "LookupQuery": null
- },
- "ValidationRuleDto": [],
- "ColumnStylingDto": [],
- "PermissionDto": {
- "Deny": false,
- "C": "App.Prc.MyMaterialRequest.Create",
- "R": "App.Prc.MyMaterialRequest",
- "U": "App.Prc.MyMaterialRequest.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
- "EditOrderNo": 5,
- "EditGroupOrderNo": 2,
- "EditorType2": "dxDateBox",
- "ColSpan": 1,
- "EditorOptions": "{\"readOnly\":true,\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\"}",
- "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.Prc.MyMaterialRequest",
- "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": "PurchaseApprovalNote",
- "CaptionName": "App.Listform.ListformField.PurchaseApprovalNote",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 22,
- "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.Prc.MyMaterialRequest.Create",
- "R": "App.Prc.MyMaterialRequest",
- "U": "App.Prc.MyMaterialRequest.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
- "EditOrderNo": 6,
- "EditGroupOrderNo": 2,
- "EditorType2": "dxTextArea",
- "ColSpan": 2,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
- },
- {
- "EditType": null,
- "ListFormCode": "App.Prc.MyMaterialRequest",
- "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": "DeptApprovalNote",
- "CaptionName": "App.Listform.ListformField.DeptApprovalNote",
- "PlaceHolder": null,
- "ReadOnly": false,
- "Visible": true,
- "IsActive": true,
- "Width": 0,
- "ListOrderNo": 23,
- "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.Prc.MyMaterialRequest.Create",
- "R": "App.Prc.MyMaterialRequest",
- "U": "App.Prc.MyMaterialRequest.Update",
- "E": true,
- "I": true
- },
- "CanRead": false,
- "CanCreate": false,
- "CanUpdate": false,
- "CanExport": false,
- "DefaultValue": null,
- "DefaultValueType": 0,
- "PivotSettingsDto": {
- "IsPivot": true,
- "Expanded": false,
- "SortOrder": "asc",
- "Area": "filter",
- "Format": null,
- "SummaryType": null,
- "GroupInterval": "",
- "WordWrapEnabled": false
- },
- "Alignment": "left",
- "Format": null,
- "EditOrderNo": 7,
- "EditGroupOrderNo": 2,
- "EditorType2": "dxTextArea",
- "ColSpan": 2,
- "EditorOptions": "{\"readOnly\":true}",
- "GridBoxOptions": null,
- "TagBoxOptions": null,
- "ImageUploadOptions": null,
- "EditorScript": null,
- "LastModificationTime": null,
- "LastModifierId": null,
- "CreationTime": "0001-01-01T00:00:00",
- "CreatorId": null,
- "Id": "00000000-0000-0000-0000-000000000000"
}
],
"IsDeletedField": true,
@@ -4021,13 +2916,9 @@
"App.Prc.MyMaterialRequest.Desc",
"App.Prc.MaterialRequest.Group.Request",
"App.Prc.MaterialRequest.Group.Approval",
- "App.Prc.MaterialRequest.Status.Draft",
"App.Prc.MaterialRequest.Status.DeptApproval",
"App.Prc.MaterialRequest.Status.PurchaseApproval",
"App.Prc.MaterialRequest.Status.Approved",
- "App.Prc.MaterialRequest.Status.InProgress",
- "App.Prc.MaterialRequest.Status.PartiallyDone",
- "App.Prc.MaterialRequest.Status.Done",
"App.Prc.MaterialRequest.Status.Rejected",
"App.Prc.MaterialRequest.Widget.Mine",
"App.Prc.MaterialRequest.Widget.Pending",
@@ -4036,18 +2927,11 @@
"App.Prc.MaterialRequests",
"App.Listform.ListformField.RequesterUserId",
"App.Listform.ListformField.LocationId",
- "App.Listform.ListformField.RejectReasonId",
"App.Listform.ListformField.GeneralDescription",
"App.Listform.ListformField.PurchaseApproverUserNames",
- "App.Listform.ListformField.ApproverId",
- "App.Listform.ListformField.ApprovalNote",
"App.Listform.ListformField.DeptApproverUserNames",
- "App.Listform.ListformField.PurchaseApprovedBy",
- "App.Listform.ListformField.DeptApprovedBy",
- "App.Listform.ListformField.PurchaseApprovalDate",
- "App.Listform.ListformField.DeptApprovalDate",
- "App.Listform.ListformField.PurchaseApprovalNote",
- "App.Listform.ListformField.DeptApprovalNote"
+ "App.Listform.ListformField.ApprovalUserName",
+ "App.Listform.ListformField.ApprovalDescription"
],
"PermissionGroupNames": [],
"PermissionNames": [
@@ -4069,6 +2953,6 @@
},
"DevRequest": {
"Id": "53294e77-a4fb-45e4-a80e-acf07b5d75be",
- "Title": "Satınalma -> Satınalma Talepleri"
+ "Title": "Satınalma -> Malzeme Talepleri"
}
}
\ No newline at end of file
diff --git a/configs/seeds/wizard/Prc_RejectReason.json b/configs/seeds/wizard/Prc_RejectReason.json
index fa8f4e56..c98104af 100644
--- a/configs/seeds/wizard/Prc_RejectReason.json
+++ b/configs/seeds/wizard/Prc_RejectReason.json
@@ -33,7 +33,7 @@
"TitleEn": "Rejection Reasons",
"TitleTr": "Red Nedenleri",
"DescEn": "Rejection Reasons — reasons a purchasing request can be rejected for (no need, quantity not suitable, wrong product, budget not suitable, other).\nWhere: Purchasing › Definitions › Rejection Reasons.\nFields: reason, sort order (order in the selection list), active.\nUsed by: Purchasing › Material Requests — the department approver or purchasing selects a reason when rejecting a request. Only active reasons are offered; deactivate a used reason instead of deleting it.",
- "DescTr": "Red Nedenleri — satınalma taleplerinin reddedilme sebepleri (ihtiyaç yok, miktar uygun değil, yanlış ürün, bütçe uygun değil, diğer).\nNerede: Satınalma › Tanımlamalar › Red Nedenleri.\nAlanlar: red nedeni, sıra (seçim listesindeki sırası), aktif.\nKullanıldığı yer: Satınalma › Satınalma Talepleri — departman onaycısı ya da satınalma talebi reddederken neden seçer. Yalnız aktif nedenler listelenir; kullanılmış neden silinmez, pasife alınır."
+ "DescTr": "Red Nedenleri — satınalma taleplerinin reddedilme sebepleri (ihtiyaç yok, miktar uygun değil, yanlış ürün, bütçe uygun değil, diğer).\nNerede: Satınalma › Tanımlamalar › Red Nedenleri.\nAlanlar: red nedeni, sıra (seçim listesindeki sırası), aktif.\nKullanıldığı yer: Satınalma › Malzeme Talepleri — departman onaycısı ya da satınalma talebi reddederken neden seçer. Yalnız aktif nedenler listelenir; kullanılmış neden silinmez, pasife alınır."
},
"Groups": [
{
@@ -1251,6 +1251,6 @@
},
"DevRequest": {
"Id": "53294e77-a4fb-45e4-a80e-acf07b5d75be",
- "Title": "Satınalma -> Satınalma Talepleri"
+ "Title": "Satınalma -> Malzeme Talepleri"
}
}
\ No newline at end of file
diff --git a/ui/src/proxy/admin/wizard/models.ts b/ui/src/proxy/admin/wizard/models.ts
index a6473920..e0f68b34 100644
--- a/ui/src/proxy/admin/wizard/models.ts
+++ b/ui/src/proxy/admin/wizard/models.ts
@@ -72,6 +72,7 @@ export interface ListFormWizardDto {
allowDeleting: boolean
confirmDelete: boolean
allowDetail: boolean
+ openDetailAfterInsert: boolean
/**
* Ekran verisi `data/{ListFormCode}.json` seed dosyasına aynalanır; migrate satırları geri yükler.
* Wizard adımlarında sorulmaz (MCP ile demo veri taşıyan ekranlar açar), düzenlemede korunur.
diff --git a/ui/src/proxy/form/models.ts b/ui/src/proxy/form/models.ts
index 499dc896..112b1b45 100644
--- a/ui/src/proxy/form/models.ts
+++ b/ui/src/proxy/form/models.ts
@@ -490,6 +490,7 @@ export interface GridEditingDto {
allowAllDeleting: boolean
allowAdding: boolean
allowDuplicate: boolean
+ openDetailAfterInsert: boolean
useIcons: boolean
confirmDelete: boolean
newRowPosition?: NewRowPosition
@@ -982,6 +983,16 @@ export interface ListFormWorkflowCriteriaDto {
positionX: number
positionY: number
compareOutcomes: CompareOutcomeDto[]
+ rejectReason?: WorkflowRejectReasonDto | null
+}
+
+/** Onay düğümünde reddin listeden seçilen nedeni; tablo boşsa red yalnızca açıklama ister. */
+export interface WorkflowRejectReasonDto {
+ tableName: string
+ valueField: string
+ textField: string
+ targetField?: string | null
+ required: boolean
}
export interface LayoutDto {
diff --git a/ui/src/routes/route.constant.ts b/ui/src/routes/route.constant.ts
index 3562dd5e..6f0c24ed 100644
--- a/ui/src/routes/route.constant.ts
+++ b/ui/src/routes/route.constant.ts
@@ -237,3 +237,9 @@
// },
},
}
+
+/** Kaydın form sayfası adresi: görüntüleme (`formView`) ya da düzenleme (`formEdit`). */
+export const getFormRecordUrl = (listFormCode: string, id: unknown, edit = false) =>
+ (edit ? ROUTES_ENUM.protected.admin.formEdit : ROUTES_ENUM.protected.admin.formView)
+ .replace(':listFormCode', encodeURIComponent(listFormCode))
+ .replace(':id', encodeURIComponent(String(id)))
diff --git a/ui/src/services/workflow.service.ts b/ui/src/services/workflow.service.ts
index 510d7426..ad15e7b9 100644
--- a/ui/src/services/workflow.service.ts
+++ b/ui/src/services/workflow.service.ts
@@ -1,4 +1,7 @@
import apiService from './api.service'
+import type { WorkflowRejectReasonDto } from '@/proxy/form/models'
+
+export type { WorkflowRejectReasonDto }
export interface WorkflowConditionDto {
compareColumn: string
@@ -12,6 +15,11 @@ export interface CompareOutcomeDto {
conditions: WorkflowConditionDto[]
}
+export interface WorkflowRejectReasonItemDto {
+ id: string
+ text: string
+}
+
export interface WorkflowCriteriaDto {
id: string
listFormCode: string
@@ -30,6 +38,7 @@ export interface WorkflowCriteriaDto {
positionX: number
positionY: number
compareOutcomes: CompareOutcomeDto[]
+ rejectReason?: WorkflowRejectReasonDto | null
}
export interface WorkflowCriteriasDto {
@@ -117,11 +126,22 @@ export const workflowService = {
approved: boolean,
note?: string,
currentNodeId?: string,
+ rejectReasonId?: string,
) {
const response = await apiService.fetchData({
method: 'POST',
url: `${baseUrl}/decision`,
- data: { listFormCode, keys, approved, note, currentNodeId },
+ data: { listFormCode, keys, approved, note, currentNodeId, rejectReasonId },
+ })
+
+ return response.data
+ },
+
+ async getRejectReasons(listFormCode: string, criteriaId: string) {
+ const response = await apiService.fetchData({
+ method: 'GET',
+ url: `${baseUrl}/reject-reasons`,
+ params: { listFormCode, criteriaId },
})
return response.data
diff --git a/ui/src/utils/workflow/workflowHelpers.ts b/ui/src/utils/workflow/workflowHelpers.ts
index a01fb1fa..656a142e 100644
--- a/ui/src/utils/workflow/workflowHelpers.ts
+++ b/ui/src/utils/workflow/workflowHelpers.ts
@@ -5,6 +5,7 @@ import type {
SaveCriteriaInput,
WorkflowConditionDto,
WorkflowCriteriaDto,
+ WorkflowRejectReasonDto,
} from '@/services/workflow.service'
export type WorkflowCriteriaForm = Partial & {
@@ -470,6 +471,22 @@ export function normalizeCriteria(item: WorkflowCriteriaForm): SaveCriteriaInput
positionX: Number(item.positionX || 32),
positionY: Number(item.positionY || 150),
compareOutcomes,
+ rejectReason: item.kind === 'Approval' ? normalizeRejectReason(item.rejectReason) : null,
+ }
+}
+
+/** Tablo, Id ve metin kolonu birlikte seçilmedikçe tanım saklanmaz; red yalnızca açıklama ister. */
+function normalizeRejectReason(
+ value?: WorkflowRejectReasonDto | null,
+): WorkflowRejectReasonDto | null {
+ if (!value?.tableName || !value.valueField || !value.textField) return null
+
+ return {
+ tableName: value.tableName,
+ valueField: value.valueField,
+ textField: value.textField,
+ targetField: value.targetField || '',
+ required: value.required !== false,
}
}
diff --git a/ui/src/views/admin/listForm/edit/FormTabDatabaseDataSource.tsx b/ui/src/views/admin/listForm/edit/FormTabDatabaseDataSource.tsx
index bbd8fe64..838729b6 100644
--- a/ui/src/views/admin/listForm/edit/FormTabDatabaseDataSource.tsx
+++ b/ui/src/views/admin/listForm/edit/FormTabDatabaseDataSource.tsx
@@ -5,7 +5,8 @@ import { SelectBoxOption } from '@/types/shared'
import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization'
import { Field, FieldProps, Form, Formik } from 'formik'
-import { useEffect, useState } from 'react'
+import { lazy, Suspense, useEffect, useState } from 'react'
+import { FaTable } from 'react-icons/fa'
import * as Yup from 'yup'
import { FormEditProps } from './FormEdit'
import { dbSourceTypeOptions, selectCommandTypeOptions, sqlDataTypeToDbType } from './options'
@@ -15,6 +16,8 @@ import { sqlObjectManagerService } from '@/services/sql-query-manager.service'
import type { DatabaseColumnDto, SqlObjectExplorerDto } from '@/proxy/sql-query-manager/models'
import CreatableSelect from 'react-select/creatable'
+const SqlTableDesignerDialog = lazy(() => import('@/views/developerKit/SqlTableDesignerDialog'))
+
const schema = Yup.object().shape({
isOrganizationUnit: Yup.bool(),
isTenant: Yup.bool(),
@@ -133,6 +136,21 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [dbObjects])
+ // ── Table Designer ──────────────────────────────────────────────────────────
+ const [designTable, setDesignTable] = useState<{ schemaName: string; tableName: string } | null>(
+ null,
+ )
+
+ const findSelectedTable = (selectCommand?: string, selectCommandType?: SelectCommandTypeEnum) =>
+ selectCommandType === SelectCommandTypeEnum.Table && selectCommand
+ ? dbObjects?.tables.find(
+ (t) =>
+ t.tableName === selectCommand ||
+ t.fullName === selectCommand ||
+ `${t.schemaName}.${t.tableName}` === selectCommand,
+ )
+ : undefined
+
if (!initialValues) {
return null
}
@@ -160,7 +178,9 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
checked={field.value === true}
onChange={(checked) => form.setFieldValue(field.name, checked)}
>
- {translate(`::App.ListFormEdit.${name[0].toUpperCase()}${name.slice(1)}`)}
+ {translate(
+ `::App.ListFormEdit.${name[0].toUpperCase()}${name.slice(1)}`,
+ )}
)}
@@ -262,56 +282,80 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
},
]
: []
+ const selectedTable = findSelectedTable(field.value, values.selectCommandType)
return (
- {
- if (!option) {
- form.setFieldValue(field.name, '')
- form.setFieldValue('selectCommandType', undefined)
- form.setFieldValue('keyFieldName', '')
- form.setFieldValue('keyFieldDbSourceType', undefined)
- setSelectCommandColumns([])
- return
+
+
+ {
+ if (!option) {
+ form.setFieldValue(field.name, '')
+ form.setFieldValue('selectCommandType', undefined)
+ form.setFieldValue('keyFieldName', '')
+ form.setFieldValue('keyFieldDbSourceType', undefined)
+ setSelectCommandColumns([])
+ return
+ }
+ form.setFieldValue(field.name, option.value)
+ const type = option.__isNew__
+ ? SelectCommandTypeEnum.Query
+ : (option.__type ?? SelectCommandTypeEnum.Query)
+ form.setFieldValue('selectCommandType', type)
+ form.setFieldValue('keyFieldName', '')
+ form.setFieldValue('keyFieldDbSourceType', undefined)
+ if (
+ !option.__isNew__ &&
+ option.__schema != null &&
+ option.__rawName
+ ) {
+ loadColumns(
+ values.dataSourceCode ?? '',
+ option.__schema,
+ option.__rawName,
+ )
+ } else {
+ setSelectCommandColumns([])
+ }
+ }}
+ onCreateOption={(inputValue: string) => {
+ form.setFieldValue(field.name, inputValue)
+ form.setFieldValue('selectCommandType', SelectCommandTypeEnum.Query)
+ form.setFieldValue('keyFieldName', '')
+ form.setFieldValue('keyFieldDbSourceType', undefined)
+ setSelectCommandColumns([])
+ }}
+ />
+
+
}
+ disabled={!values.dataSourceCode || !selectedTable}
+ onClick={() =>
+ selectedTable &&
+ setDesignTable({
+ schemaName: selectedTable.schemaName,
+ tableName: selectedTable.tableName,
+ })
}
- form.setFieldValue(field.name, option.value)
- const type = option.__isNew__
- ? SelectCommandTypeEnum.Query
- : (option.__type ?? SelectCommandTypeEnum.Query)
- form.setFieldValue('selectCommandType', type)
- form.setFieldValue('keyFieldName', '')
- form.setFieldValue('keyFieldDbSourceType', undefined)
- if (!option.__isNew__ && option.__schema != null && option.__rawName) {
- loadColumns(
- values.dataSourceCode ?? '',
- option.__schema,
- option.__rawName,
- )
- } else {
- setSelectCommandColumns([])
- }
- }}
- onCreateOption={(inputValue: string) => {
- form.setFieldValue(field.name, inputValue)
- form.setFieldValue('selectCommandType', SelectCommandTypeEnum.Query)
- form.setFieldValue('keyFieldName', '')
- form.setFieldValue('keyFieldDbSourceType', undefined)
- setSelectCommandColumns([])
- }}
- />
+ >
+ {translate('::App.ListFormEdit.DesignTable')}
+
+
)
}}
@@ -343,9 +387,7 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
) : selectCommandColumns.length === 0 && !isLoadingColumns ? (
{translate('::App.ListFormEdit.ColumnsLoadAfterSelect', {
- command: translate(
- '::App.ListFormEdit.DatabaseDataSourceSelectCommand',
- ),
+ command: translate('::App.ListFormEdit.DatabaseDataSourceSelectCommand'),
})}
) : null
@@ -418,7 +460,9 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
checked={field.value === true}
onChange={(checked) => form.setFieldValue(field.name, checked)}
>
- {translate(`::App.ListFormEdit.${name[0].toUpperCase()}${name.slice(1)}`)}
+ {translate(
+ `::App.ListFormEdit.${name[0].toUpperCase()}${name.slice(1)}`,
+ )}
)}
@@ -428,12 +472,29 @@ function FormTabDatabaseDataSource(props: FormEditProps) {
- {isSubmitting ? translate('::App.Platform.Saving') : translate('::App.Platform.Save')}
+ {isSubmitting
+ ? translate('::App.Platform.Saving')
+ : translate('::App.Platform.Save')}
)}
+
+ {designTable && (
+
+ setDesignTable(null)}
+ onDeployed={async (table) => {
+ await loadDbObjects(currentDataSource)
+ await loadColumns(currentDataSource, table.schemaName || 'dbo', table.tableName)
+ }}
+ />
+
+ )}
)
}
diff --git a/ui/src/views/admin/listForm/edit/FormTabEdit.tsx b/ui/src/views/admin/listForm/edit/FormTabEdit.tsx
index a9386254..bd67227c 100644
--- a/ui/src/views/admin/listForm/edit/FormTabEdit.tsx
+++ b/ui/src/views/admin/listForm/edit/FormTabEdit.tsx
@@ -1,16 +1,11 @@
import { Container } from '@/components/shared'
import { Button, Card, Checkbox, FormContainer, FormItem, Input, Select } from '@/components/ui'
import { ListFormEditTabs } from '@/proxy/admin/list-form/options'
+import type { GridEditingDto, GridEditingPopupDto } from '@/proxy/form/models'
import { useStoreState } from '@/store'
import { useLocalization } from '@/utils/hooks/useLocalization'
-import type {
- GridsEditMode,
- GridsEditRefreshMode,
- NewRowPosition,
- StartEditAction,
-} from 'devextreme/common/grids'
-import { Field, FieldProps, Form, Formik } from 'formik'
-import { object } from 'yup'
+import { Field, FieldProps, Form, Formik, getIn } from 'formik'
+import type { ReactNode } from 'react'
import { FormEditProps } from './FormEdit'
import {
editingOptionModeOptions,
@@ -19,7 +14,11 @@ import {
editingOptionStartEditActionOptions,
} from './options'
-const schema = object()
+// `editingOptionDto` altındaki alan yolu; popup alanları `popup.` önekiyle.
+type EditingField =
+ | Exclude
+ | `popup.${keyof GridEditingPopupDto}`
+type SelectOption = { value: string; label: string }
function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
const { translate } = useLocalization()
@@ -33,467 +32,163 @@ function FormTabEdit(props: FormEditProps & { listFormCode: string }) {
{
await props.onSubmit(ListFormEditTabs.Edit.EditForm, values, formikHelpers)
}}
>
- {({ touched, errors, values, isSubmitting }) => (
-