diff --git a/.github/instructions/lowcode-reference.instructions.md b/.github/instructions/lowcode-reference.instructions.md index 18dc406e..7da54ecd 100644 --- a/.github/instructions/lowcode-reference.instructions.md +++ b/.github/instructions/lowcode-reference.instructions.md @@ -382,6 +382,17 @@ kullanıcı `ServerWhere` özelleştirmesi, widget `SqlQuery`, `LookupQuery`, `D onaycı filtresi. Widget SQL'i bu filtrelerden **geçmez** (kiracı koşulunu kendisi yazar). Yazma tarafında şube/birim ataması yoktur — `BranchId` varsayılanla ya da formdan gelir. +**Kullanıcının şubeleri ve şubedeki varsayılan depo/konum:** kullanıcı–şube ataması `Sas_T_BranchUsers`'tadır ve +Kullanıcılar › detay › Yetkiler › Şube Yönetimi'nden yapılır. Atanan her şubede kullanıcının **varsayılan deposu** +(`DefaultWarehouseId`, şubenin aktif deposu) ve **varsayılan konumu** (`DefaultLocationId`, o deponun aktif iç konumu) +seçilir; şubenin deposu, deponun iç konumu varsa ikisi zorunludur (ekran ve `PlatformIdentityAppService.UpdatePermissionAsync`). +Seçenekleri Envanter'in `Inv_T_Warehouse`/`Inv_T_Location` tablolarından servis okur; modül yoksa seçenek boş kalır. +Bir ekranda "şube seçilince kullanıcının varsayılan deposu/konumu gelsin" için: `IsBranch: true`, şube lookup'ı +`Sas_T_BranchUsers` ile `UserId = '@USERID'` üzerinden süzülüp `DefaultWarehouseId`/`DefaultLocationId` kolonlarını +döndürür, şube alanının `EditorScript`'i `copy("DefaultWarehouseId", "WarehouseId")` (+ konum) ile yazar; yeni kaydın +şube/depo/konum varsayılanı `DbQuery` ile aynı tablodan okunur. Örnek: `App.Prc.MyMaterialRequest`, +`App.Prc.PurchaseRfq`, `App.Prc.PurchaseOrder`. + ### 4.3 `*ServiceAddress` `InsertServiceAddress` / `UpdateServiceAddress` / `DeleteServiceAddress` varsayılan olarak @@ -565,7 +576,7 @@ denenir. Buraya yazılan kod ekran her açıldığında çalışır ve hiçbir y | `ListFormType` | `"List"` | `ListFormTypeEnum`: `List` (ızgara) \| `Form` (tek kayıt) \| `Chart` (yalnız grafik). Route karşılıkları: `/admin/list/{kod}` · `/admin/form/{kod}[/{id}[/edit]]` · `/admin/chart/{kod}` | | `IsSubForm` | `false` | Bilgi amaçlı — runtime okumaz; alt form davranışını sekmenin `isSubForm` prop'u belirler | | `SubFormsListFormType` | `"Form"` | **Bu ekranın kendi** `SubFormsJson` sekmelerinin nerede çizileceği: `List` → liste sayfasında grid/tree/card'ın altında, **seçili satıra bağlı** ana-detay (`SelectionJson.Mode` `single`/`multiple` olmalı) · `Form` → yalnız form/detay sayfasında | -| `ShowNote` | `true` | Not paneli (alt form ya da iş akışı varsa wizard açar) | +| `ShowNote` | `true` | Not paneli (alt form ya da iş akışı varsa wizard açar); yalnızca kayıt kaynağı Table olan listede — View/Query/SP/TVF listesinde kapalı, `PermissionJson.N` boş | `ListFormType = "Form"` listesiz, tek kayıtlık kart ekrandır; canlı örneği Administration › Licence'tır (§12.7); `/admin/form/{kod}` (id'siz) adresinde yeni kayıt yerine görüntüleme açılır ve @@ -617,7 +628,7 @@ Aşağıdakilerin hepsi ekranla **kendiliğinden** gelir; açmak için yalnızca | Özel butonlar | `CommandColumnJson` (`lowcode` §4.9) | Grid, Tree, Card, Todo (yalnız Url/OnClick) ve form sayfası; Gantt/Scheduler/Pivot/Chart'ta yok | **Satır butonları:** Düzenle (`AllowUpdating` + `U`), Sil (`AllowDeleting` + `D`), Detay (`AllowDetail` + -**`U`**), Not (`ShowNote` + `PermissionJson.N`), Kopyala (`AllowDuplicate` + `C`), özel butonlar. Card'da +**`U`**), Not (`ShowNote` + `PermissionJson.N`; yalnızca Table kaynağı), Kopyala (`AllowDuplicate` + `C`), özel butonlar. Grid/Tree'de buton kolonu sağa sabittir (`fixedPosition: right`); kolonlar sığmayınca da görünür kalır. Card'da butonlar kart başlığındadır; form sayfasında Düzenle/Sil/Detay dışındaki satır butonları ve toolbar butonları **form toolbar'ına taşınır**. @@ -1449,7 +1460,7 @@ Platform tablolarının adı `TableNameResolver` tarafından üretilir: ### 12.2 Saas menüsü Kök menü `App.Saas`. Yetki adı her satırda menünün `RequiredPermissionName` değeridir; ListForm -ekranlarında alt yetkiler `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` +ekranlarında alt yetkiler `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` (Table kaynağında ayrıca `.Note`) soneklerini alır. | Ekran | Kod / route | Tablo | Kapsam | Komponent üretirken ne işe yarar | diff --git a/.github/instructions/lowcode.instructions.md b/.github/instructions/lowcode.instructions.md index 60c0c0ac..e8f54ac1 100644 --- a/.github/instructions/lowcode.instructions.md +++ b/.github/instructions/lowcode.instructions.md @@ -1011,7 +1011,7 @@ Tutarlılık zorunludur; menü, route, yetki ve dil anahtarı aynı kökten tür | `MenuCode` | `ListFormCode` ile aynı | `App.Mrp.Orders` | | Üst menü kodu | `App.{Modul}` | `App.Mrp` | | Yetki grubu | `App.{Modul}` | `App.Mrp` | -| Yetkiler | `{MenuCode}` + `.Create/.Update/.Delete/.Export/.Import/.Note` | `App.Mrp.Orders.Create` | +| Yetkiler | `{MenuCode}` + `.Create/.Update/.Delete/.Export/.Import` (+ `.Note` yalnızca kayıt kaynağı Table ise) | `App.Mrp.Orders.Create` | | Dil anahtarı (menü/başlık) | `{MenuCode}` | `App.Mrp.Orders` | | Dil anahtarı (alan) | `App.Listform.ListformField.{Alan}` | `App.Listform.ListformField.OrderNo` | | Route (List) | `/admin/list/{ListFormCode}` — statik `:listFormCode` route'u karşılar, DB'ye kayıt yazılmaz | `/admin/list/App.Mrp.Orders` | @@ -1321,7 +1321,10 @@ saklanır. Dosya okunurken bu alanlar `ListForm`/`Fields` üzerinden geri doldur | `Language.Texts` | Başka bir cevaptan üretilmeyen dil anahtarları: `[{ "Key", "En", "Tr" }]` (widget başlığı gibi). Anahtar yoksa deploy satırı yazar ve wizard'a bağlar (silmede gider). Deploy, widget sorgularındaki tek tırnaklı noktalı her tanımlayıcıyı (`'App.Widget.ThisMonth'`) dil anahtarı sayar; veritabanında, bekleyen dil satırlarında, bu wizard'ın ürettiklerinde ya da burada yoksa deploy'u adlarıyla reddeder. | Üretilen yetkiler: `{MenuCode}` (okuma, kök) + List yolunda `.Create .Update .Delete .Export -.Import .Note`, Custom yolunda yalnızca `.Create .Update .Delete`. Hiçbiri bir role otomatik +.Import` (+ `.Note` yalnızca `SelectCommandType = Table` iken), Custom yolunda yalnızca `.Create .Update .Delete`. +**Not yalnızca tablo kaynaklı listede vardır:** View, Query, StoredProcedure ve TableValuedFunction kaynaklı listede +`PermissionJson.N` boş, `ShowNote` kapalıdır ve `.Note` yetki satırı yazılmaz — view/sorgu satırının notun bağlanacağı kalıcı +kaydı yoktur (`ListFormWizardDto.HasNote`; C# seeder'da `DefaultPermissionJson(name, hasNote: false)`). Hiçbiri bir role otomatik atanmaz (admin dahil); ekranı görecek roller yetkiyi rol ekranından alır. **Veri** @@ -1807,6 +1810,59 @@ yalnızca otomatik üretilecek numara içindir. `Sequence` kiracıya aittir (`IM host veritabanını paylaşan kiracıya seed dosyası uygulanmadığı için numaratör satırı o kiracıda ekrandan açılır. +#### 4.3.5.3 Özel komutun parametreleri — `*FieldsDefaultValueJson` komutla birlikte yazılır (zorunlu) + +MCP, prompt ya da wizard ile üretilen veya düzenlenen her ekranda bir `InsertCommand` / `UpdateCommand` / +`DeleteCommand` ya da `*BeforeCommand` / `*AfterCommand` kancası yazıldığında, komut metnindeki **her +`@Parametre` aynı işte bir kaynağa bağlanır**. Komut yalnızca kendisine verilen parametrelerle çalışır +(`QueryManager` komutu olduğu gibi çalıştırır, eksik parametreyi tamamlamaz); kaynağı olmayan parametre +çalışma anında `Must declare the scalar variable "@X"` hatası verir ve ekran manuel düzeltme ister. Wizard'ın +kendiliğinden yazdığı varsayılanlar (§4.4.1 tablosu) yalnızca tablonun audit kolonlarına göredir: +view / sorgu / prosedür kaynaklı ekranda ve özel komutta eksik kalır — bu boşluğu üreten doldurur. + +| Komuttaki parametre | Kaynağı | +| --- | --- | +| `@TenantId` | `IsTenant: true` ise sunucu ekler; listeye yazılmaz | +| `@Alan` (kaydın bir alanı) | Gönderilen kayıttan gelir: alan ekranda tanımlı olmalı ve Insert'te `C`, Update'te `U` yetkisi taşımalı. Kaydı ızgara/form değil buton gönderiyorsa (`dynamicFetch('list-form-data/…')`) alan çağrının `data`'sına yazılır | +| `@Id` — Update | Özel `UpdateCommand`'da `UpdateFieldsDefaultValueJson` → `Id = @ID` (tek değer: `= @Id`, `EXEC … @Id`). `UpdateCommand` boşsa (üretilen `UPDATE`) anahtar dizi olarak eklenir; bu ekranın Update kancalarında `IN @Id` yazılır | +| `@Id` — Delete | `DeleteFieldsDefaultValueJson` → `Id = @ID` (seçili anahtarların tamamı; komutta `IN @Id`) | +| `@Id` — Insert (yeni anahtar) | `InsertFieldsDefaultValueJson` → `Id = @NEWID` | +| `@LastModifierId` · `@LastModificationTime` | `UpdateFieldsDefaultValueJson` → `@USERID` · `@NOW` | +| `@DeleterId` | `DeleteFieldsDefaultValueJson` → `@USERID` | +| `@CreatorId` · `@CreationTime` | `InsertFieldsDefaultValueJson` → `@USERID` · `@NOW` | +| Sabit ya da sorgudan gelen değer | `CustomValueType: 1` (Value) / `3` (DbQuery), §4.3.5 | + +`SelectCommand` parametre almaz ve `SelectFieldsDefaultValueJson` çalışma anında okunmaz (§4.3.5): okuma +koşulu `DefaultFilter`'a token'la yazılır (`"CreatorId" = '@USERID'`). + +Örnekler (Satınalma › Planlama): + +```jsonc +// App.Prc.MaterialRequestPlanLine — InsertCommand: EXEC Prc_P_MaterialRequestPlanSuggest @BaseId, @TenantId, @CreatorId +// @BaseId gönderilen kayıttan, @TenantId sunucudan, @CreatorId listeden +"InsertFieldsDefaultValueDto": [ + { "FieldName": "CreationTime", "FieldDbType": 6, "Value": "@NOW", "CustomValueType": 2 }, + { "FieldName": "CreatorId", "FieldDbType": 9, "Value": "@USERID", "CustomValueType": 2 } +], +// App.Prc.MaterialRequestPlanTrack — UpdateCommand: EXEC Prc_P_MaterialRequestStockUndo @Id, @TenantId, @LastModifierId +"UpdateFieldsDefaultValueDto": [ + { "FieldName": "LastModificationTime", "FieldDbType": 6, "Value": "@NOW", "CustomValueType": 2 }, + { "FieldName": "LastModifierId", "FieldDbType": 9, "Value": "@USERID", "CustomValueType": 2 }, + { "FieldName": "Id", "FieldDbType": 9, "Value": "@ID", "CustomValueType": 2 } +], +// DefaultDeleteCommand (… "DeleterId"=@DeleterId … WHERE "Id" IN @Id) — view kaynaklı ekranda da +"DeleteFieldsDefaultValueDto": [ + { "FieldName": "DeleterId", "FieldDbType": 9, "Value": "@USERID", "CustomValueType": 2 }, + { "FieldName": "Id", "FieldDbType": 9, "Value": "@ID", "CustomValueType": 2 } +] +``` + +**Kontrol (teslimden önce):** her komut metninden `@\w+` adları çıkarılır ve her biri tablodaki bir kaynağa +eşlenir; `@ID`, `@USERID`, `@NOW` gibi token'lar komutta değil listenin `Value`'sunda durur. Eşlenmeyen +parametre varsa ekran teslim edilmez. Wizard dosyasında listeler `ListForm.InsertFieldsDefaultValueDto` / +`UpdateFieldsDefaultValueDto` / `DeleteFieldsDefaultValueDto` adıyla durur; MCP `deploy_wizard`'da komutla aynı +çağrının `ListForm` bölümünde verilir — komutu yazıp listeyi sonraya bırakmak yoktur. + ### 4.3.6 Doğrulama — `ValidationRuleJson` Alan başına DevExtreme doğrulama kuralları dizisi. Wizard `IsRequired: true` alanlara `required` @@ -2022,7 +2078,7 @@ ile ekler (§4.0). Sıra değerleri veritabanı ile dosyadaki satırların birle | Üretilen | Kural | | --- | --- | | Dil anahtarları | `{MenuCode}` (menü), `{ListFormCode}.Title`, `{ListFormCode}.Desc`, `{PermissionGroupName}` ve her alan için `CaptionName` | -| Yetkiler | `{MenuCode}` kökü + `.Create/.Update/.Delete` (+ List yolunda `.Export/.Import/.Note`) | +| Yetkiler | `{MenuCode}` kökü + `.Create/.Update/.Delete` (+ List yolunda `.Export/.Import`; `.Note` yalnızca Table kaynağında) | | Yetkilerin dil anahtarları | Ortak sabitler: `App.Platform.Create/Update/Delete/Export/Import/Note` | | Üst menü zinciri | `MenuParentPath` + `MenuParentCode` kökten yürünür; kodu bulunamayan seviye önce aynı üstün altındaki dallarla adıyla eşleştirilir (dalın `DisplayName` anahtarı = verilen kod, ya da EN/TR adı aynı) ve eşleşen dalın koduna bağlanır; eşleşme yoksa bir üstünün altına `Order = max(kardeş Order) + 1` ile yaratılır (kökte kök menülerin sonu) | | Menü sırası | `MenuOrder` 0/boş ise `max(kardeş Order) + 1` | @@ -2036,10 +2092,10 @@ ile ekler (§4.0). Sıra değerleri veritabanı ile dosyadaki satırların birle | `DefaultFilter` | `IsDeletedField: true` ise `"IsDeleted" = 'false'` | | `InsertFieldsDefaultValueJson` | `IsCreatedField: true` ise `CreationTime=@NOW`, `CreatorId=@USERID`, `IsDeleted=false`, `Id=@NEWID`; değilse yalnızca `Id=@NEWID` | | `DeleteFieldsDefaultValueJson` | `IsDeletedField: true` ise `DeleterId=@USERID`, `Id=@ID`; değilse yalnızca `Id=@ID` | -| `UpdateFieldsDefaultValueJson` | Tabloda `LastModifierId` varsa `LastModificationTime=@NOW`, `LastModifierId=@USERID`; yoksa boş. `*AfterCommand`/`*BeforeCommand` içindeki `@LastModifierId` bu satırdan gelir | +| `UpdateFieldsDefaultValueJson` | Tabloda `LastModifierId` varsa `LastModificationTime=@NOW`, `LastModifierId=@USERID`; yoksa boş. `*AfterCommand`/`*BeforeCommand` içindeki `@LastModifierId` bu satırdan gelir. Özel komut eklenen ekranda (view kaynağı dahil) bu üç liste komutun parametrelerine göre tamamlanır — §4.3.5.3 | | `ValidationRuleJson` | `IsRequired: true` olan alanlara required kuralı | | `LookupJson` | `LookupQuery` doluysa `LookupDataSourceType` + `DisplayExpr` + `ValueExpr` ile | -| `ShowNote` | Alt form veya iş akışı varsa açılır | +| `ShowNote` | Kayıt kaynağı Table ise ve alt form veya iş akışı varsa açılır; Table dışı kaynakta hep kapalı | | `SelectionJson` | İş akışı varsa `single`, yoksa `none` | | Görünüm option JSON'ları | İlgili bayrak açık **ve** zorunlu alanı dolu ise yazılır; eksikse görünüm sessizce kapanır | @@ -2385,7 +2441,7 @@ bu dördü dışında akış kolonu açılmaz: | `ApprovalStatusFieldName` | Durum | | `ApprovalDescriptionFieldName` | Onay/ret açıklaması | | `ApprovalIsFilterUserName` | Liste yalnızca kullanıcının onayına düşenleri göstersin: onaycı kolonu **boş** olan (akış başlatılabilsin diye) ya da `\|` ile bölünmüş değerlerinde kullanıcının UserName/Email/Name'i geçen satırlar | -| `ApprovalIsResetWorkflow` | Toolbar'daki **Workflow Reset** düğmesini açar (yalnızca akışı başlamış satırda etkin); otomatik sıfırlama yoktur, bayrak kapalıyken `…/reset` reddedilir. `ApprovalIsManualStart` açıksa sıfırlama akışı yeniden çalıştırmaz; kayıt taslağa döner ve akış başlat düğmesiyle başlar | +| `ApprovalIsResetWorkflow` | Toolbar'daki **Taslak** (iş akışı sıfırlama) düğmesini açar (yalnızca akışı başlamış satırda etkin); otomatik sıfırlama yoktur, bayrak kapalıyken `…/reset` reddedilir. `ApprovalIsManualStart` açıksa sıfırlama akışı yeniden çalıştırmaz; kayıt taslağa döner ve akış başlat düğmesiyle başlar | | `ApprovalIsManualStart` | Yeni kayıt akışı kendiliğinden başlatmasın; kayıt taslak kalır, akış toolbar'daki başlat düğmesiyle başlar. Onaya gönderilmiş başlığa satır eklemeyi engelleyen alt formu olan ekranlarda (talep + satırlar) açılır; kapalıyken Grid/Tree yeni kaydın ardından akışı başlatır | `Criteria` düğüm grafiğidir. `Kind` değerleri: **`Start`**, **`Compare`**, **`Approval`**, @@ -2670,8 +2726,16 @@ Kurallar: - `DialogName` **kayıtlı bir custom component adı değildir**; platformda tanımlı şu diyalogları açar: `RolesPermission`, `UsersPermission`, `TenantsConnectionString`, `CreateTenantFromOrderDialog`, `CreateNotification`, `AuditLogDetail`, `BranchSeed`, - `DynamicServiceEditor`. Kayıt yeri `views/shared/DialogContext/DialogShowComponent.tsx`'tir; - her diyalog `open` + `onDialogClose` prop'larını alır. + `DynamicServiceEditor`, `DiaryEntry`, `PurchaseDocGrid`, `MaterialRequestPlan`. Kayıt yeri + `views/shared/DialogContext/DialogShowComponent.tsx`'tir; her diyalog `open` + `onDialogClose` prop'larını alır. + Son ikisi satır ya da toolbar butonunun `OnClick`'inden `dialog.setConfig({ component, props, onClose })` ile + açılır ve ekranları platformun Grid'iyle `BaseId` filtresine süzerek gösterir; ekran kodları prop'tur, bileşene yazılmaz: + - `PurchaseDocGrid` — tek ekran: `docId`, `listFormCode`, `title`, `info` (dil anahtarları `::` öneksiz). + - `MaterialRequestPlan` — sekmeli karar ızgaraları + taslak ızgarası + Onayla: `itemId`, `planListFormCode` (özet satırı + `Id` ile buradan okunur, Onayla bu ekranın `UpdateCommand`'ını `list-form-data/update` ile çalıştırır, buton + `{planListFormCode}.Update` ister), `tabs` (ekran kodları; başlık `{kod}.Title`), `activeTab`, `draftListFormCode`, + `info`. Bir ızgaradaki kayıt (`refreshData`) diğer ızgaraları ve özeti yeniler; kaydı yapan ızgara yeniden kurulmaz, + süren batch kaydı kesilmesin diye. Örnek: Satınalma › Talepler › Planlama (`App.Prc.md`). Kendi ekranını açmak istiyorsan **Adres** modunu kullan (custom component route'u ya da `/admin/list/{ListFormCode}`). - `DialogName: "BarcodeScanDialog"` **toolbar butonuna özeldir** (`ButtonPosition: 1`) ve sürekli @@ -2770,7 +2834,7 @@ Builder'ı (§5) açar — çıktıları `EditorOptions`/`EditorScript` string'l **Adım 7 — İş Akışı.** Zorunlu ikili: `ApprovalUserFieldName` + `ApprovalStatusFieldName`; opsiyonel `ApprovalDateFieldName`, `ApprovalDescriptionFieldName`, `ApprovalIsFilterUserName` -(liste yalnız sıradaki onaycıya düşsün), `ApprovalIsResetWorkflow` (toolbar'a Workflow Reset +(liste yalnız sıradaki onaycıya düşsün), `ApprovalIsResetWorkflow` (toolbar'a Taslak düğmesi; otomatik sıfırlama yok), `ApprovalIsManualStart` (yeni kayıt taslak kalsın, akış başlat düğmesiyle başlasın). Onay düğümleri (`Criteria`) görsel akış tasarımcısında kurulur ve `ListFormWorkflow` kayıtlarına gider (§4.7). @@ -4173,6 +4237,39 @@ içindir. `Groups[0].Items[0]` olarak `IncludeInEditingForm: false` ile de yaz (§4.4.1). 5. DB Migrate çalıştır; log'da `Executing: CREATE TABLE …` satırını gör. +### 8.6 Ölü artefakt taraması (her işin sonunda) + +Yeni bir nesne eskisinin işini devraldığında eskisi **aynı işte** silinir; "sonra temizlenir" yoktur. +Bir artefakt şu kaynaklardan biri onu kullanıyorsa yaşar, hiçbiri kullanmıyorsa silinir: + +| Artefakt | Kullanılıyor sayılır, eğer… | +| --- | --- | +| SQL nesnesi (`{sql,postgres}/{object,execute,host}/X.sql`: tablo, view, yordam, fonksiyon) | adı bir wizard'ın `ListForm`/`Fields` bölümünde (kaynak, komut, lookup, widget, `CommandColumns`), `data/` ya da `crud/` dosyasında, `api/`/`ui/` kodunda geçiyor; `TableNameResolver` ile çözülüyor (`nameof(TableNameEnum.X)` + önek); ya da **kullanılan** başka bir SQL nesnesinin gövdesinden çağrılıyor (zincir izlenir). `execute/` scriptleri migrate'te her zaman çalıştığı için köktür | +| Wizard (`wizard/*.json`) | kendi menüsü var (`CreateMenu` varsayılan) ya da başka bir wizard'ın `SubForms`/komut/URL'si, kod veya veri onu gösteriyor | +| `data/{Kod}.json` / `data/{Kod}/` | `{Kod}` bir wizard'ın ya da `ListFormSeeder_*.cs`'in kurduğu ekran (`listFormName`), ya da platform satır dosyası (menü, yetki, dil, ABP yetki ekranları) | +| Dil anahtarı | bir ekran öğesi (alan başlığı, buton, form grubu, widget, menü, yetki) ya da kod/veri onu gösteriyor | + +Sayılmayanlar: yorum satırları (`--`, `//`), wizard'ın `Language` bölümündeki açıklama metni, +`InsertedRecords` sahiplik listesi, modül dokümanı ve geliştirme talebi kayıtları (`data/App.DevRequests/`, açıklama/analiz metni) — bunlarda geçen ad nesneyi yaşatmaz. + +**Dil anahtarı dikkat:** kodun çalışma anında birleştirdiği anahtarlar metin aramasında referanssız görünür +(`App.Listform.ListformField.${field}` — profil sekmeleri, `App.Mcp.Error.*` hata kodları, enum adından +türeyen `App.ListForm.Wizard*`, ABP'nin `Abp.Identity.*` mesajları). Bu ailelerden anahtar silinmeden +önce birleştiren kod okunur; toplu silme yapılmaz. + +**Silme yolu:** +- SQL nesnesi: `sql/` ve `postgres/` dosyası birlikte silinir. Dosyayı silmek kurulu veritabanından + nesneyi düşürmez; kurulu ortam için seed dışında tek seferlik `DROP VIEW/PROCEDURE/FUNCTION` betiği + verilir. Tablo düşürülmez (şema kuralı: hiçbir tablo `DROP` edilmez) — yalnız scripti kalkar, veri kararını kullanıcı verir. +- Wizard: Wizard Manager ya da MCP `delete_wizard` (dosyayı elle silmek kayıtları temizlemez, §4.5); + elle silinen alt formun kayıtları üst wizard'ın `Pending.Replaced`'ına yazılır. +- Kurulu ekranın sahip olduğu dil anahtarı: wizard'ın `Language.Texts` ve `InsertedRecords.LanguageKeys` + listesinden çıkarılır, `Pending.Replaced.LanguageKeys`'e yazılır (migrate veritabanı satırını siler), + EN + TR satırı `data/App.Languages.LanguageText.json`'dan silinir. + +Tarama sonunda iki sağlayıcının nesne listesi aynı olmalı (her `sql/` dosyasının `postgres/` eşi var) +ve kurulu veritabanında seed dosyası olmayan yordam/view/fonksiyon kalmamalıdır. + --- ## 9. Artefakt F — CRUD Endpoint ve Developer Kit @@ -5172,9 +5269,9 @@ isteniyorsa geçilir. 5. **Onay akışı** — §4.7'deki `WorkflowDto`. Tipik grafik: `Start → Compare (tutar eşiği) → Approval (yönetici) / Approval (üst yönetici) → Inform → End`. `ApprovalIsFilterUserName: true` ile herkes yalnızca kendi onayına düşenleri görür, - `ApprovalIsResetWorkflow: true` ile toolbar'daki Workflow Reset düğmesi akışı başa alır. + `ApprovalIsResetWorkflow: true` ile toolbar'daki Taslak düğmesi akışı başa alır. 6. **Yetki** — wizard `App.Hr.AdvanceRequests` kökünü ve `.Create/.Update/.Delete/.Export/ - .Import/.Note` alt yetkilerini üretir. Onaylayanların rolüne kök + `.Update` verilir; + .Import/.Note` alt yetkilerini üretir (`.Note` tablo kaynaklı olduğu için). Onaylayanların rolüne kök + `.Update` verilir; talep sahiplerine kök + `.Create` yeter. 7. **Dil** — menü/başlık/açıklama metinleri wizard dosyasındaki `Language` bölümünden, alan başlıkları her `Items` öğesinin `En`/`Tr` alanlarından üretilir. @@ -5197,8 +5294,12 @@ tedarikçi lookup'ı + iki kademeli onay). Kalem taşıyan türevlerde ana ekran - [ ] `IsTenant` (ve gerekiyorsa `IsBranch`/`IsOrganizationUnit`) doğru; sorgular tenant güvenli. - [ ] Tüm SQL parametreli; string birleştirme yok. - [ ] `DeleteCommand = DefaultDeleteCommand("{Tablo}")`. +- [ ] Her `*Command` / `*BeforeCommand` / `*AfterCommand` parametresinin kaynağı var: gönderilen alan, + `IsTenant` ile gelen `@TenantId` ya da `Insert/Update/DeleteFieldsDefaultValueJson` satırı (§4.3.5.3). - [ ] Seed dosyası oluştu; `InsertedRecords` yalnızca gerçekten yaratılan kayıtları içeriyor. - [ ] Bağımlılıklar (custom component, crud endpoint, sql nesnesi) da seed'li. +- [ ] Ölü artefakt yok: yerini yenisine bırakan SQL nesnesi/wizard/veri dosyası ve kullanılmayan dil + anahtarı silindi (§8.6). - [ ] Hazır ekranlara eklenen kayıtlar (Sequence, zamanlanmış iş, bildirim tipi/kuralı, Custom Endpoint…) ekranın `data/` dosyasına yazıldı; `SeedFilePath`'i olmayan ekranın kaydı için `sql/execute/` altında geri getirici prosedür var (§9.14). diff --git a/README.md b/README.md index cadc2739..2eada99b 100644 --- a/README.md +++ b/README.md @@ -536,7 +536,7 @@ listesi). Formlar içinde iş akışına bağlı özel butonlar gösterilebilir. 2. **ListFormField** kümesi (sütunlar, editörler, lookup'lar, doğrulamalar) 3. **Route** kaydı (`key`, `path`, `componentPath`, `routeType`, `authority`) 4. **Menu** kaydı (`ParentCode`, `Code`, `DisplayName`, `Url`, `Icon`, `RequiredPermissionName`, `Order`) -5. **Permission** kayıtları (`.Default`, `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note`) +5. **Permission** kayıtları (`.Default`, `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`; `.Note` yalnızca kayıt kaynağı Table ise) 6. **Dil anahtarları** (menü, başlık, açıklama; EN + TR) 7. Gerekiyorsa **ayar/entegrasyon** bağımlılıkları 8. **Seed dosyası** — `configs/seeds/wizard/{Ad}.json` (wizard cevapları + üretilen `ListForm`/`Fields` sözleşmesi) @@ -1038,7 +1038,7 @@ taşınır (satır alt formun wizard'ına ait kalır, başka bir listeye bağlan Hiçbir listenin alt formu olmayan menüsüz wizard'ın yetkisi grubun kökünde kalır. Wizard deploy'u yeni grubu ve yeni yetkileri (seed satırı olarak) veritabanı ile seed dosyasındaki kardeşlerin en büyük sırasının bir fazlasıyla, alt yetkileri `WizardSeedRowKeys.ChildPermissions` dizilimiyle -(List: Create/Update/Delete/Export/Import/Note, Custom: Create/Update/Delete) 1'den yazar +(List: Create/Update/Delete/Export/Import + Table kaynağında Note, Custom: Create/Update/Delete) 1'den yazar (`ListFormWizardAppService.WritePermissionGroupAsync` / `WritePermissionRowsAsync`). Aksiyon yetkisi olan alt gruplar (UI tarafındaki karşılıkları `constants/permission.constant.ts` @@ -1333,7 +1333,8 @@ ekranın kendi ayrıntılı açıklamasını gösterir (`DescTr`/`DescEn`, `lowc ABP her zaman host'ta okur. Kiracı tablolarının satırları `DataSourceManager` üzerinden kiracının veri kaynağına gider. - **Şube (Branch):** Tenant altındaki fiziksel/örgütsel kırılım; kullanıcı–şube eşlemesi - `BranchUsers` ile tutulur, lisans limiti girişte kontrol edilir. + `BranchUsers` ile tutulur (atamada kullanıcının o şubedeki varsayılan deposu ve konumu da tutulur — + `DefaultWarehouseId`/`DefaultLocationId`, Kullanıcılar › Yetkiler), lisans limiti girişte kontrol edilir. - **Organizasyon birimi:** ABP `OrganizationUnit` ağacı; ListForm'lar OU bazlı filtrelenebilir. - Lokalizasyon: isteğin kültürü (metin, tarih, sayı) `UseAbpRequestLocalization` ile UI'ın gönderdiği `Accept-Language`'tan kurulur. `TenantLocalizationMiddleware` + `TenantLocalizationInitializer` istek dışı diff --git a/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedBranchViewModel.cs b/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedBranchViewModel.cs index 26df205f..faa428ee 100644 --- a/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedBranchViewModel.cs +++ b/api/src/Sozsoft.Platform.Application.Contracts/Identity/Dto/AssignedBranchViewModel.cs @@ -9,5 +9,27 @@ public class AssignedBranchViewModel public string Name { get; set; } public bool IsAssigned { get; set; } + + public Guid? DefaultWarehouseId { get; set; } + + public Guid? DefaultLocationId { get; set; } + + /// Şubenin depoları ve konumları; varsayılan depo/konum seçimini besler, kayıtta yok sayılır. + public BranchWarehouseViewModel[] Warehouses { get; set; } = []; } +public class BranchWarehouseViewModel +{ + public Guid Id { get; set; } + + public string Name { get; set; } + + public BranchLocationViewModel[] Locations { get; set; } = []; +} + +public class BranchLocationViewModel +{ + public Guid Id { get; set; } + + public string Name { get; set; } +} diff --git a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/ListFormWizardDto.cs b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/ListFormWizardDto.cs index 98fc8c42..253e4e88 100644 --- a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/ListFormWizardDto.cs +++ b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/ListFormWizardDto.cs @@ -170,6 +170,11 @@ public class ListFormWizardDto public string DataSourceConnectionString { get; set; } public SelectCommandTypeEnum SelectCommandType { get; set; } + + /// Not (yetki, buton, panel) yalnizca tablo kaynakli listede uretilir. + [JsonIgnore] + public bool HasNote => SelectCommandType == SelectCommandTypeEnum.Table; + public string SelectCommand { get; set; } public string KeyFieldName { get; set; } public DbType KeyFieldDbSourceType { get; set; } @@ -294,7 +299,7 @@ public class ListFormWizardDto Description = descLangKey, PageSize = 10, IsSubForm = false, - ShowNote = subForms.Count > 0 || workflow.Criteria.Count > 0, + ShowNote = HasNote && (subForms.Count > 0 || workflow.Criteria.Count > 0), SortMode = PlatformConsts.GridOptions.SortModeSingle, DataSourceCode = DataSourceCode, IsTenant = IsTenant, @@ -336,7 +341,7 @@ public class ListFormWizardDto ? PlatformConsts.GridOptions.SelectionModeSingle : PlatformConsts.GridOptions.SelectionModeNone); dto.ColumnOptionJson = WizardConsts.DefaultColumnOptionJson(); - dto.PermissionJson = WizardConsts.DefaultPermissionJson(code); + dto.PermissionJson = WizardConsts.DefaultPermissionJson(code, HasNote); dto.PagerOptionJson = WizardConsts.DefaultPagerOptionJson; // Wizard alt formlari Form tipinde (SubFormsListFormType) uretir; sekmeler yalnizca Detay // (tek kayit) gorunumunde acilir, Detay kapali uretilirse sekmelere ulasilamaz. diff --git a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/WizardSeedRowKeys.cs b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/WizardSeedRowKeys.cs index 9eebb315..cdbb18b6 100644 --- a/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/WizardSeedRowKeys.cs +++ b/api/src/Sozsoft.Platform.Application.Contracts/ListForms/Wizard/WizardSeedRowKeys.cs @@ -23,10 +23,11 @@ public static class WizardSeedRowKeys ("Delete", WizardConsts.LangKeyDelete), ]; - // Export/Import/Note yalnizca ListForm ekosisteminin sundugu islemlerdir. - return wizard.ComponentKind == WizardComponentKindEnum.Custom - ? crud - : [.. crud, ("Export", WizardConsts.LangKeyExport), ("Import", WizardConsts.LangKeyImport), ("Note", WizardConsts.LangKeyNote)]; + // Export/Import/Note yalnizca ListForm ekosisteminin sundugu islemlerdir; Not ayrica yalnizca tablo kaynakli listededir. + if (wizard.ComponentKind == WizardComponentKindEnum.Custom) + return crud; + (string, string)[] list = [.. crud, ("Export", WizardConsts.LangKeyExport), ("Import", WizardConsts.LangKeyImport)]; + return wizard.HasNote ? [.. list, ("Note", WizardConsts.LangKeyNote)] : list; } /// Menuye eklenmeyen wizard'da izin grubu sorulmaz; bos geldiginde uygulama grubuna duser. diff --git a/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs b/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs index 622be341..9192c0c1 100644 --- a/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs +++ b/api/src/Sozsoft.Platform.Application/Identity/PlatformIdentityAppService.cs @@ -7,9 +7,11 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Logging; using OpenIddict.Abstractions; using Sozsoft.Platform.BlobStoring; using Sozsoft.Platform.Data.Seeds; +using Sozsoft.Platform.DynamicData; using Sozsoft.Platform.Entities; using Sozsoft.Platform.Extensions; using Sozsoft.Platform.Identity.Dto; @@ -42,6 +44,7 @@ public class PlatformIdentityAppService : ApplicationService public IRepository jobPositionRepository { get; } public BlobManager BlobCdnManager { get; } private readonly IConfiguration configuration; + private readonly IDynamicDataManager dynamicDataManager; public PlatformIdentityAppService( IIdentityUserAppService identityUserAppService, @@ -59,7 +62,8 @@ public class PlatformIdentityAppService : ApplicationService IRepository jobPositionRepository, BlobManager blobCdnManager, IConfiguration configuration, - IGuidGenerator guidGenerator + IGuidGenerator guidGenerator, + IDynamicDataManager dynamicDataManager ) { this.IdentityUserAppService = identityUserAppService; @@ -78,6 +82,7 @@ public class PlatformIdentityAppService : ApplicationService this.branchUsersRepository = branchUsersRepository; this.claimTypesRepository = claimTypesRepository; this.guidGenerator = guidGenerator; + this.dynamicDataManager = dynamicDataManager; } // Kullanıcı detay ekranı (Users listesindeki Detail komutu) bu yetkiyle açılır. @@ -100,14 +105,22 @@ public class PlatformIdentityAppService : ApplicationService //Branch var queryBranch = await branchUsersRepository.GetQueryableAsync(); - var branchUsers = await AsyncExecuter.ToListAsync( - queryBranch.Where(a => a.UserId == UserId).Select(r => r.BranchId)); + var branchUsers = (await AsyncExecuter.ToListAsync(queryBranch.Where(a => a.UserId == UserId))) + .ToDictionary(a => a.BranchId); var branchList = await branchRepository.GetListAsync(a => a.TenantId == currentTenantId); - var branches = branchList.Select(branch => new AssignedBranchViewModel + var branchWarehouses = await GetBranchWarehousesAsync(); + var branches = branchList.Select(branch => { - Id = branch.Id, - Name = branch.Name, - IsAssigned = branchUsers.Contains(branch.Id) + var assigned = branchUsers.GetValueOrDefault(branch.Id); + return new AssignedBranchViewModel + { + Id = branch.Id, + Name = branch.Name, + IsAssigned = assigned != null, + DefaultWarehouseId = assigned?.DefaultWarehouseId, + DefaultLocationId = assigned?.DefaultLocationId, + Warehouses = branchWarehouses.GetValueOrDefault(branch.Id) ?? [] + }; }) .ToArray(); @@ -211,22 +224,97 @@ public class PlatformIdentityAppService : ApplicationService .Where(b => b.IsAssigned) .Select(b => b.Id) .ToList(); - var assignedBranchIds = (await branchRepository.GetListAsync( - b => requestedBranchIds.Contains(b.Id) && b.TenantId == CurrentTenant.Id)) - .Select(b => b.Id) - .ToList(); + var assignedBranches = await branchRepository.GetListAsync( + b => requestedBranchIds.Contains(b.Id) && b.TenantId == CurrentTenant.Id); + var branchWarehouses = await GetBranchWarehousesAsync(); - foreach (var branchId in assignedBranchIds) + foreach (var branch in assignedBranches) { - var branchUser = new BranchUsers + var input = UserInfo.Branches.First(b => b.Id == branch.Id); + var (warehouseId, locationId) = ResolveBranchDefaults(branch.Name, input, branchWarehouses.GetValueOrDefault(branch.Id) ?? []); + await branchUsersRepository.InsertAsync(new BranchUsers { UserId = user.Id, - BranchId = branchId - }; - await branchUsersRepository.InsertAsync(branchUser); + BranchId = branch.Id, + DefaultWarehouseId = warehouseId, + DefaultLocationId = locationId + }); } } + /// + /// Şubenin deposu varsa varsayılan depo, deponun iç konumu varsa varsayılan konum zorunludur ve seçilen değer o şubeye/depoya + /// ait olmalıdır; şubede (ya da depoda) hiç kayıt yoksa alan boş kalır. + /// + private (Guid? WarehouseId, Guid? LocationId) ResolveBranchDefaults( + string branchName, AssignedBranchViewModel input, BranchWarehouseViewModel[] warehouses) + { + if (warehouses.Length == 0) + { + return (null, null); + } + + var warehouse = warehouses.FirstOrDefault(w => w.Id == input.DefaultWarehouseId) + ?? throw new UserFriendlyException(L["Abp.Identity.User.BranchDefaultWarehouseRequired", branchName]); + if (warehouse.Locations.Length == 0) + { + return (warehouse.Id, null); + } + + var location = warehouse.Locations.FirstOrDefault(l => l.Id == input.DefaultLocationId) + ?? throw new UserFriendlyException(L["Abp.Identity.User.BranchDefaultLocationRequired", branchName]); + return (warehouse.Id, location.Id); + } + + /// + /// Kiracının aktif depoları ve iç konumları, şubeye göre. Depo ve konum Envanter modülünün seed tablolarıdır (EF varlığı değil); + /// modül kurulu değilse şubelerin depo seçeneği boş kalır. + /// + private async Task> GetBranchWarehousesAsync() + { + var tenantFilter = CurrentTenant.Id.HasValue ? "w.\"TenantId\" = @TenantId" : "w.\"TenantId\" IS NULL"; + var sql = + "SELECT w.\"Id\" AS \"WarehouseId\", w.\"BranchId\", CONCAT(w.\"Code\", ' - ', w.\"Name\") AS \"WarehouseName\", " + + "l.\"Id\" AS \"LocationId\", " + + "CASE WHEN l.\"Code\" IS NULL THEN l.\"Name\" ELSE CONCAT(l.\"Code\", ' - ', l.\"Name\") END AS \"LocationName\" " + + "FROM \"Inv_T_Warehouse\" w " + + "LEFT JOIN \"Inv_T_Location\" l ON l.\"WarehouseId\" = w.\"Id\" AND l.\"IsDeleted\" = 'false' AND l.\"IsActive\" = 'true' " + + "AND l.\"LocationType\" = 'Internal' " + + $"WHERE w.\"IsDeleted\" = 'false' AND w.\"IsActive\" = 'true' AND {tenantFilter} " + + "ORDER BY w.\"Code\", l.\"Code\", l.\"Name\""; + + IEnumerable rows; + try + { + var (repository, connectionString, _) = await dynamicDataManager.GetAsync(true, SeedConsts.DataSources.DefaultCode); + rows = await repository.QueryAsync(sql, connectionString, + CurrentTenant.Id.HasValue ? new Dictionary { ["TenantId"] = CurrentTenant.Id.Value } : null); + } + catch (Exception ex) + { + Logger.LogWarning(ex, "Branch warehouses could not be read; default warehouse/location selection is disabled."); + return []; + } + + return rows + .Cast>() + .GroupBy(r => (Guid)r["BranchId"]) + .ToDictionary( + branch => branch.Key, + branch => branch + .GroupBy(r => ((Guid)r["WarehouseId"], (string)r["WarehouseName"])) + .Select(w => new BranchWarehouseViewModel + { + Id = w.Key.Item1, + Name = w.Key.Item2, + Locations = w + .Where(r => r["LocationId"] != null) + .Select(r => new BranchLocationViewModel { Id = (Guid)r["LocationId"], Name = (string)r["LocationName"] }) + .ToArray() + }) + .ToArray()); + } + [Authorize(IdentityPermissions.Users.Update)] public async Task UpdateLockoutAsync(UserInfoViewModel UserInfo) { diff --git a/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs b/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs index d65201ed..72587df4 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Administration.cs @@ -6714,7 +6714,7 @@ public class ListFormSeeder_Administration : IDataSeedContributor, ITransientDep GroupPanelJson = DefaultGroupPanelJson(), SelectionJson = DefaultSelectionSingleJson, ColumnOptionJson = DefaultColumnOptionJson(), - PermissionJson = DefaultPermissionJson(listFormName), + PermissionJson = DefaultPermissionJson(listFormName, hasNote: false), PagerOptionJson = DefaultPagerOptionJson, EditingOptionJson = DefaultEditingOptionJson(listFormName, 600, 450, false, false, false, false, false), }, autoSave: true diff --git a/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_DefaultJsons.cs b/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_DefaultJsons.cs index c6ca3368..e3cc98be 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_DefaultJsons.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_DefaultJsons.cs @@ -247,7 +247,8 @@ public static class ListFormSeeder_DefaultJsons N = a, }); } - public static string DefaultPermissionJson(string permissionName) + /// Not yalnizca tablo kaynakli listede vardir (view/sorgu listesine = false). + public static string DefaultPermissionJson(string permissionName, bool hasNote = true) { return JsonSerializer.Serialize(new PermissionCrudDto { @@ -257,7 +258,7 @@ public static class ListFormSeeder_DefaultJsons D = permissionName + ".Delete", E = permissionName + ".Export", I = permissionName + ".Import", - N = permissionName + ".Note", + N = hasNote ? permissionName + ".Note" : null, }); } public static string DefaultFieldPermissionJson(string permissionName) diff --git a/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Saas.cs b/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Saas.cs index 4aaa83f5..f753f37d 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Saas.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Migrations/ListFormSeeder_Saas.cs @@ -4812,7 +4812,7 @@ public class ListFormSeeder_Saas : IDataSeedContributor, ITransientDependency GroupPanelJson = DefaultGroupPanelJson(), SelectionJson = DefaultSelectionSingleJson, ColumnOptionJson = DefaultColumnOptionJson(), - PermissionJson = DefaultPermissionJson(listFormName), + PermissionJson = DefaultPermissionJson(listFormName, hasNote: false), PagerOptionJson = DefaultPagerOptionJson } ); diff --git a/api/src/Sozsoft.Platform.DbMigrator/Migrations/PlatformIdentityDataSeeder.cs b/api/src/Sozsoft.Platform.DbMigrator/Migrations/PlatformIdentityDataSeeder.cs index f757ff5b..012c6b78 100644 --- a/api/src/Sozsoft.Platform.DbMigrator/Migrations/PlatformIdentityDataSeeder.cs +++ b/api/src/Sozsoft.Platform.DbMigrator/Migrations/PlatformIdentityDataSeeder.cs @@ -185,11 +185,15 @@ public class PlatformIdentityDataSeeder : IdentityDataSeeder var defaultBranchUsers = await _branchUsersRepository.FirstOrDefaultAsync(bu => bu.UserId == adminUser.Id && bu.BranchId == defaultBranch.Id); if (defaultBranchUsers is null) { + // Varsayılan depo/konum seed satırları host şubesine aittir; kiracı şubesi yeni kimlik aldığı için orada boş kalır. + var isHostBranch = defaultBranch.Id == PlatformConsts.Branches.BranchIdDefaultValue; await _branchUsersRepository.InsertAsync(new BranchUsers { BranchId = defaultBranch.Id, UserId = adminUser.Id, - TenantId = tenantId + TenantId = tenantId, + DefaultWarehouseId = isHostBranch ? PlatformConsts.Branches.WarehouseIdDefaultValue : null, + DefaultLocationId = isHostBranch ? PlatformConsts.Branches.LocationIdDefaultValue : null }, autoSave: true); } } diff --git a/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs b/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs index 929c7c27..44a16fdf 100644 --- a/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs +++ b/api/src/Sozsoft.Platform.Domain.Shared/PlatformConsts.cs @@ -65,6 +65,10 @@ public static class PlatformConsts { // Host şubesinin kimliği sabittir; seed edilen departman/pozisyon satırları BranchId ile ona bağlanır. public static readonly Guid BranchIdDefaultValue = Guid.Parse("1c125bf3-3ffd-4445-a270-1bc43ac3f61c"); + // Host yöneticisinin şubedeki varsayılan deposu ve konumu: host şubesine bağlı seed satırları + // (data/App.Inventory.Warehouse.json "IKT", data/App.Inventory.Location.json "0001 - Ana Depo"). + public static readonly Guid WarehouseIdDefaultValue = Guid.Parse("1840580a-7984-cb0a-4008-3a2431f55623"); + public static readonly Guid LocationIdDefaultValue = Guid.Parse("d92a4c2e-1ca2-4453-a66c-e7b3bf682716"); public const string BranchCode = "Br1"; public const string BranchName = "Branch1"; public const long BranchVknTckn = 52849619172; diff --git a/api/src/Sozsoft.Platform.Domain.Shared/WizardConsts.cs b/api/src/Sozsoft.Platform.Domain.Shared/WizardConsts.cs index 9709704e..04e7ea78 100644 --- a/api/src/Sozsoft.Platform.Domain.Shared/WizardConsts.cs +++ b/api/src/Sozsoft.Platform.Domain.Shared/WizardConsts.cs @@ -78,7 +78,8 @@ public static class WizardConsts FocusedRowEnabled = FocusedRowEnabled, }); - public static string DefaultPermissionJson(string permissionName) + /// Not yalnizca tablo kaynakli listede vardir: view/sorgu satirinin notu bagli oldugu kalici kaydi yoktur. + public static string DefaultPermissionJson(string permissionName, bool hasNote) { return JsonSerializer.Serialize(new { @@ -88,7 +89,7 @@ public static class WizardConsts D = permissionName + ".Delete", E = permissionName + ".Export", I = permissionName + ".Import", - N = permissionName + ".Note", + N = hasNote ? permissionName + ".Note" : null, }); } diff --git a/api/src/Sozsoft.Platform.Domain/Entities/Host/Branch/BranchUsers.cs b/api/src/Sozsoft.Platform.Domain/Entities/Host/Branch/BranchUsers.cs index e9ee0bf3..36c198be 100644 --- a/api/src/Sozsoft.Platform.Domain/Entities/Host/Branch/BranchUsers.cs +++ b/api/src/Sozsoft.Platform.Domain/Entities/Host/Branch/BranchUsers.cs @@ -11,6 +11,10 @@ public class BranchUsers : Entity, IMultiTenant public Guid BranchId { get; set; } public Guid UserId { get; set; } + // Kullanıcının bu şubede açtığı belgelerin varsayılan deposu ve konumu (Envanter tabloları; şube seçilince forma gelir). + public Guid? DefaultWarehouseId { get; set; } + public Guid? DefaultLocationId { get; set; } + Guid? IMultiTenant.TenantId => TenantId; } diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261009171249_Initial.Designer.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261014072150_Initial.Designer.cs similarity index 99% rename from api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261009171249_Initial.Designer.cs rename to api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261014072150_Initial.Designer.cs index 7e19f510..22091e55 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261009171249_Initial.Designer.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261014072150_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace Sozsoft.Platform.Migrations { [DbContext(typeof(PlatformDbContext))] - [Migration("20261009171249_Initial")] + [Migration("20261014072150_Initial")] partial class Initial { /// @@ -1483,6 +1483,12 @@ namespace Sozsoft.Platform.Migrations b.Property("BranchId") .HasColumnType("uniqueidentifier"); + b.Property("DefaultLocationId") + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultWarehouseId") + .HasColumnType("uniqueidentifier"); + b.Property("TenantId") .HasColumnType("uniqueidentifier") .HasColumnName("TenantId"); diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261009171249_Initial.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261014072150_Initial.cs similarity index 99% rename from api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261009171249_Initial.cs rename to api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261014072150_Initial.cs index e9690dab..bbf2c1f0 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261009171249_Initial.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/20261014072150_Initial.cs @@ -2195,7 +2195,9 @@ namespace Sozsoft.Platform.Migrations Id = table.Column(type: "uniqueidentifier", nullable: false), TenantId = table.Column(type: "uniqueidentifier", nullable: true), BranchId = table.Column(type: "uniqueidentifier", nullable: false), - UserId = table.Column(type: "uniqueidentifier", nullable: false) + UserId = table.Column(type: "uniqueidentifier", nullable: false), + DefaultWarehouseId = table.Column(type: "uniqueidentifier", nullable: true), + DefaultLocationId = table.Column(type: "uniqueidentifier", nullable: true) }, constraints: table => { diff --git a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs index d673b17c..08a7ef02 100644 --- a/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs +++ b/api/src/Sozsoft.Platform.EntityFrameworkCore/Migrations/PlatformDbContextModelSnapshot.cs @@ -1480,6 +1480,12 @@ namespace Sozsoft.Platform.Migrations b.Property("BranchId") .HasColumnType("uniqueidentifier"); + b.Property("DefaultLocationId") + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultWarehouseId") + .HasColumnType("uniqueidentifier"); + b.Property("TenantId") .HasColumnType("uniqueidentifier") .HasColumnName("TenantId"); diff --git a/claude.md b/claude.md index 8a1cf632..08cc42d9 100644 --- a/claude.md +++ b/claude.md @@ -224,6 +224,11 @@ Bir çelişki varsa sıra: `ai.instructions.md` → `dotnet.instructions.md` → tekrar sorgu/dosya okuması kaldırılır, kod/değer **statik yazılmaz** — tablo adı `TableNameResolver`'dan, değer tablo/seed/ayar verisinden dinamik bulunur. Son mesajda ne temizlendiği tek satırla söylenir. + Kapsam seed artefaktlarını da içerir: yeni bir yordam/view/ekran eskisinin işini devralınca eskisi + aynı işte silinir (iki sağlayıcının dosyası, wizard'ı, menü/yetki/dil satırları). Kullanımı biten + SQL nesnesi (tablo, view, yordam, fonksiyon), menüsüz ve referanssız wizard, ekranı olmayan `data/` + dosyası ve hiçbir ekran öğesinin göstermediği dil anahtarı bırakılmaz; tarama kuralı + `lowcode.instructions.md` §8.6. 18. **Yeni kaydın form varsayılanı** → Wizard ve MCP ile üretilen her listede form varsayılanı kolonun veritabanındaki sabit `DEFAULT` değeridir; deploy onu tablodan (katalog ya da seed scripti) okuyup `FormFieldsDefaultValueJson`'a yazar, değer koda gömülmez. Bu yüzden tablo @@ -264,6 +269,19 @@ Bir çelişki varsa sıra: `ai.instructions.md` → `dotnet.instructions.md` → 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. +25. **Not yalnızca Table kaynağında** → kayıt kaynağı (`SelectCommandType`) Table olmayan listede (View, Query, + StoredProcedure, TableValuedFunction) Not yoktur: `PermissionJson.N` boş, `ShowNote` kapalı, `{Kod}.Note` yetki satırı ve + satırdaki Not butonu üretilmez; view/sorgu satırının notun bağlanacağı kalıcı kaydı yoktur. Wizard/MCP bunu kendisi uygular + (`ListFormWizardDto.HasNote`), C# seeder'da `DefaultPermissionJson(name, hasNote: false)` yazılır. Ayrıntı: + `lowcode.instructions.md` §4.2 (Üretilen yetkiler). +26. **Özel komutun parametreleri boş bırakılmaz** → MCP/prompt/wizard ile üretilen ya da düzenlenen ekranda yazılan her + `InsertCommand`/`UpdateCommand`/`DeleteCommand` ve `*BeforeCommand`/`*AfterCommand` ile aynı işte + `Insert/Update/DeleteFieldsDefaultValueJson` da tamamlanır: komuttaki her `@Parametre` gönderilen alana, `IsTenant`'ın + eklediği `@TenantId`'ye ya da listedeki bir satıra (`Id=@ID`, `LastModifierId=@USERID`, `DeleterId=@USERID`, + `CreatorId=@USERID`, `*Time=@NOW`) bağlanır; kaynağı olmayan parametre "Must declare the scalar variable" verir. + Wizard'ın audit varsayılanları view/sorgu kaynaklı ekranda ve özel komutta eksik kalır, bu yüzden kontrol üretendedir. + `SelectFieldsDefaultValueJson` çalışma anında okunmaz; okuma koşulu `DefaultFilter`'a yazılır. Ayrıntı: + `lowcode.instructions.md` §4.3.5.3. ### Cross-cutting: touching one thing means touching these too @@ -639,6 +657,9 @@ Bir çelişki varsa sıra: `ai.instructions.md` → `dotnet.instructions.md` → silinmeden önce **repo geneli** (api + ui + configs) referans taraması yapılır; DI ile çözülen tipler düz metin aramasında referanssız görünür. - Yorum satırına alınmış kod bloğu bırakılmaz. +- Seed tarafında ölü artefakt yok (`lowcode.instructions.md` §8.6): yerini yenisine bırakan SQL nesnesi, + wizard ve veri dosyası silinmiş; her `sql/` dosyasının `postgres/` eşi var; kullanılmayan dil anahtarı + wizard'ın `Language.Texts`/`InsertedRecords`'undan ve dil dosyasından çıkarılmış. - Modül/ekran/bileşen ekleyen ya da davranışını değiştiren iş modül dokümanını (`configs/seeds/docs/modules/{Menü}.md`) yazar veya günceller; liste ekranının açıklaması ayrıntılıdır (standing default 14–15). diff --git a/configs/seeds/data/Abp.Identity.Permissions.json b/configs/seeds/data/Abp.Identity.Permissions.json index 2fc816dd..cf990d1a 100644 --- a/configs/seeds/data/Abp.Identity.Permissions.json +++ b/configs/seeds/data/Abp.Identity.Permissions.json @@ -13414,16 +13414,6 @@ "MultiTenancySide": 3, "Modules": "Inventory" }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.ProductVariant.Note", - "ParentName": "App.Inventory.ProductVariant", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, { "GroupName": "App.Inventory", "Name": "App.Inventory.BomComponent", @@ -13694,16 +13684,6 @@ "MultiTenancySide": 3, "Modules": "Inventory" }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.BomOverview.Note", - "ParentName": "App.Inventory.BomOverview", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, { "GroupName": "App.Inventory", "Name": "App.Inventory.Bom", @@ -15824,16 +15804,6 @@ "MultiTenancySide": 3, "Modules": "Prj" }, - { - "GroupName": "App.Prj", - "Name": "App.Prj.ProjectCostSummary.Note", - "ParentName": "App.Prj.ProjectCostSummary", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prj" - }, { "GroupName": "App.Prj", "Name": "App.Prj.Project", @@ -15964,16 +15934,6 @@ "MultiTenancySide": 3, "Modules": "Prj" }, - { - "GroupName": "App.Prj", - "Name": "App.Prj.ManMonth.Note", - "ParentName": "App.Prj.ManMonth", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prj" - }, { "GroupName": "App.Prj", "Name": "App.Prj.ResourceList", @@ -16034,16 +15994,6 @@ "MultiTenancySide": 3, "Modules": "Prj" }, - { - "GroupName": "App.Prj", - "Name": "App.Prj.ResourceList.Note", - "ParentName": "App.Prj.ResourceList", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prj" - }, { "GroupName": "App.Prj", "Name": "App.Prj.PersonnelManMonth", @@ -16104,16 +16054,6 @@ "MultiTenancySide": 3, "Modules": "Prj" }, - { - "GroupName": "App.Prj", - "Name": "App.Prj.PersonnelManMonth.Note", - "ParentName": "App.Prj.PersonnelManMonth", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prj" - }, { "GroupName": "App.Prj", "Name": "App.Prj.BudgetReport", @@ -16174,16 +16114,6 @@ "MultiTenancySide": 3, "Modules": "Prj" }, - { - "GroupName": "App.Prj", - "Name": "App.Prj.BudgetReport.Note", - "ParentName": "App.Prj.BudgetReport", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prj" - }, { "GroupName": "App.Inventory", "Name": "App.Inventory.Warehouse", @@ -16824,12 +16754,512 @@ "MultiTenancySide": 3, "Modules": "Prc" }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlan", + "ParentName": "App.Prc.MaterialRequests", + "DisplayName": "App.Prc.MaterialRequestPlan", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlan.Create", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlan.Update", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlan.Delete", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlan.Export", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlan.Import", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanStock", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Prc.MaterialRequestPlanStock", + "Order": 7, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanStock.Create", + "ParentName": "App.Prc.MaterialRequestPlanStock", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanStock.Update", + "ParentName": "App.Prc.MaterialRequestPlanStock", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanStock.Delete", + "ParentName": "App.Prc.MaterialRequestPlanStock", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanStock.Export", + "ParentName": "App.Prc.MaterialRequestPlanStock", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanStock.Import", + "ParentName": "App.Prc.MaterialRequestPlanStock", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanStock.Note", + "ParentName": "App.Prc.MaterialRequestPlanStock", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSupplier", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Prc.MaterialRequestPlanSupplier", + "Order": 8, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSupplier.Create", + "ParentName": "App.Prc.MaterialRequestPlanSupplier", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSupplier.Update", + "ParentName": "App.Prc.MaterialRequestPlanSupplier", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSupplier.Delete", + "ParentName": "App.Prc.MaterialRequestPlanSupplier", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSupplier.Export", + "ParentName": "App.Prc.MaterialRequestPlanSupplier", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSupplier.Import", + "ParentName": "App.Prc.MaterialRequestPlanSupplier", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSupplier.Note", + "ParentName": "App.Prc.MaterialRequestPlanSupplier", + "DisplayName": "App.Platform.Note", + "Order": 6, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLastPurchase", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Prc.MaterialRequestPlanLastPurchase", + "Order": 9, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "ParentName": "App.Prc.MaterialRequestPlanLastPurchase", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLastPurchase.Update", + "ParentName": "App.Prc.MaterialRequestPlanLastPurchase", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLastPurchase.Delete", + "ParentName": "App.Prc.MaterialRequestPlanLastPurchase", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLastPurchase.Export", + "ParentName": "App.Prc.MaterialRequestPlanLastPurchase", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLastPurchase.Import", + "ParentName": "App.Prc.MaterialRequestPlanLastPurchase", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSource", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Prc.MaterialRequestPlanSource", + "Order": 10, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSource.Create", + "ParentName": "App.Prc.MaterialRequestPlanSource", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSource.Update", + "ParentName": "App.Prc.MaterialRequestPlanSource", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSource.Delete", + "ParentName": "App.Prc.MaterialRequestPlanSource", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSource.Export", + "ParentName": "App.Prc.MaterialRequestPlanSource", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanSource.Import", + "ParentName": "App.Prc.MaterialRequestPlanSource", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanVendor", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Prc.MaterialRequestPlanVendor", + "Order": 11, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanVendor.Create", + "ParentName": "App.Prc.MaterialRequestPlanVendor", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanVendor.Update", + "ParentName": "App.Prc.MaterialRequestPlanVendor", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanVendor.Delete", + "ParentName": "App.Prc.MaterialRequestPlanVendor", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanVendor.Export", + "ParentName": "App.Prc.MaterialRequestPlanVendor", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanVendor.Import", + "ParentName": "App.Prc.MaterialRequestPlanVendor", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLine", + "ParentName": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Prc.MaterialRequestPlanLine", + "Order": 12, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLine.Create", + "ParentName": "App.Prc.MaterialRequestPlanLine", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLine.Update", + "ParentName": "App.Prc.MaterialRequestPlanLine", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLine.Delete", + "ParentName": "App.Prc.MaterialRequestPlanLine", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLine.Export", + "ParentName": "App.Prc.MaterialRequestPlanLine", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanLine.Import", + "ParentName": "App.Prc.MaterialRequestPlanLine", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanTrack", + "ParentName": "App.Prc.MaterialRequests", + "DisplayName": "App.Prc.MaterialRequestPlanTrack", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanTrack.Create", + "ParentName": "App.Prc.MaterialRequestPlanTrack", + "DisplayName": "App.Platform.Create", + "Order": 1, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanTrack.Update", + "ParentName": "App.Prc.MaterialRequestPlanTrack", + "DisplayName": "App.Platform.Update", + "Order": 2, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanTrack.Delete", + "ParentName": "App.Prc.MaterialRequestPlanTrack", + "DisplayName": "App.Platform.Delete", + "Order": 3, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanTrack.Export", + "ParentName": "App.Prc.MaterialRequestPlanTrack", + "DisplayName": "App.Platform.Export", + "Order": 4, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, + { + "GroupName": "App.Prc", + "Name": "App.Prc.MaterialRequestPlanTrack.Import", + "ParentName": "App.Prc.MaterialRequestPlanTrack", + "DisplayName": "App.Platform.Import", + "Order": 5, + "IsEnabled": true, + "MultiTenancySide": 3, + "Modules": "Prc" + }, { "GroupName": "App.Prc", "Name": "App.Prc.MaterialRequest", "ParentName": "App.Prc.MaterialRequests", "DisplayName": "App.Prc.MaterialRequest", - "Order": 5, + "Order": 6, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Prc" @@ -16884,16 +17314,6 @@ "MultiTenancySide": 3, "Modules": "Prc" }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.MaterialRequest.Note", - "ParentName": "App.Prc.MaterialRequest", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, { "GroupName": "App.Prc", "Name": "App.Prc.PurchaseAgreementLine", @@ -17184,82 +17604,12 @@ "MultiTenancySide": 3, "Modules": "Prc" }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseRfqImportItem", - "ParentName": "App.Prc.PurchaseRfq", - "DisplayName": "App.Prc.PurchaseRfqImportItem", - "Order": 8, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseRfqImportItem.Create", - "ParentName": "App.Prc.PurchaseRfqImportItem", - "DisplayName": "App.Platform.Create", - "Order": 1, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseRfqImportItem.Update", - "ParentName": "App.Prc.PurchaseRfqImportItem", - "DisplayName": "App.Platform.Update", - "Order": 2, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseRfqImportItem.Delete", - "ParentName": "App.Prc.PurchaseRfqImportItem", - "DisplayName": "App.Platform.Delete", - "Order": 3, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseRfqImportItem.Export", - "ParentName": "App.Prc.PurchaseRfqImportItem", - "DisplayName": "App.Platform.Export", - "Order": 4, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseRfqImportItem.Import", - "ParentName": "App.Prc.PurchaseRfqImportItem", - "DisplayName": "App.Platform.Import", - "Order": 5, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseRfqImportItem.Note", - "ParentName": "App.Prc.PurchaseRfqImportItem", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, { "GroupName": "App.Prc", "Name": "App.Prc.PurchaseRfqQuote", "ParentName": "App.Prc.PurchaseRfq", "DisplayName": "App.Prc.PurchaseRfqQuote", - "Order": 9, + "Order": 8, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Prc" @@ -17329,7 +17679,7 @@ "Name": "App.Prc.PurchaseRfqOther", "ParentName": "App.Prc.PurchaseRfq", "DisplayName": "App.Prc.PurchaseRfqOther", - "Order": 10, + "Order": 9, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Prc" @@ -17399,7 +17749,7 @@ "Name": "App.Prc.PurchaseRfqAlternative", "ParentName": "App.Prc.PurchaseRfq", "DisplayName": "App.Prc.PurchaseRfqAlternative", - "Order": 11, + "Order": 10, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Prc" @@ -17454,22 +17804,12 @@ "MultiTenancySide": 3, "Modules": "Prc" }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseRfqAlternative.Note", - "ParentName": "App.Prc.PurchaseRfqAlternative", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, { "GroupName": "App.Prc", "Name": "App.Prc.PurchaseRfqComparison", "ParentName": "App.Prc.PurchaseRfq", "DisplayName": "App.Prc.PurchaseRfqComparison", - "Order": 12, + "Order": 11, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Prc" @@ -17524,22 +17864,12 @@ "MultiTenancySide": 3, "Modules": "Prc" }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseRfqComparison.Note", - "ParentName": "App.Prc.PurchaseRfqComparison", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, { "GroupName": "App.Prc", "Name": "App.Prc.PurchaseRfqAlternativeSupplier", "ParentName": "App.Prc.PurchaseRfq", "DisplayName": "App.Prc.PurchaseRfqAlternativeSupplier", - "Order": 13, + "Order": 12, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Prc" @@ -17594,16 +17924,6 @@ "MultiTenancySide": 3, "Modules": "Prc" }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseRfqAlternativeSupplier.Note", - "ParentName": "App.Prc.PurchaseRfqAlternativeSupplier", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, { "GroupName": "App.Prc", "Name": "App.Prc.PurchaseOrder", @@ -17744,82 +18064,12 @@ "MultiTenancySide": 3, "Modules": "Prc" }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseOrderImportItem", - "ParentName": "App.Prc.PurchaseOrder", - "DisplayName": "App.Prc.PurchaseOrderImportItem", - "Order": 8, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseOrderImportItem.Create", - "ParentName": "App.Prc.PurchaseOrderImportItem", - "DisplayName": "App.Platform.Create", - "Order": 1, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseOrderImportItem.Update", - "ParentName": "App.Prc.PurchaseOrderImportItem", - "DisplayName": "App.Platform.Update", - "Order": 2, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseOrderImportItem.Delete", - "ParentName": "App.Prc.PurchaseOrderImportItem", - "DisplayName": "App.Platform.Delete", - "Order": 3, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseOrderImportItem.Export", - "ParentName": "App.Prc.PurchaseOrderImportItem", - "DisplayName": "App.Platform.Export", - "Order": 4, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseOrderImportItem.Import", - "ParentName": "App.Prc.PurchaseOrderImportItem", - "DisplayName": "App.Platform.Import", - "Order": 5, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseOrderImportItem.Note", - "ParentName": "App.Prc.PurchaseOrderImportItem", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, { "GroupName": "App.Prc", "Name": "App.Prc.PurchaseOrderOther", "ParentName": "App.Prc.PurchaseOrder", "DisplayName": "App.Prc.PurchaseOrderOther", - "Order": 9, + "Order": 8, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Prc" @@ -17889,7 +18139,7 @@ "Name": "App.Prc.PurchaseOrderAlternative", "ParentName": "App.Prc.PurchaseOrder", "DisplayName": "App.Prc.PurchaseOrderAlternative", - "Order": 10, + "Order": 9, "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Prc" @@ -17954,16 +18204,6 @@ "MultiTenancySide": 3, "Modules": "Prc" }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseOrderProduct.Note", - "ParentName": "App.Prc.PurchaseOrderProduct", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, { "GroupName": "App.Prc", "Name": "App.Prc.PurchaseOrderAlternative.Create", @@ -18014,16 +18254,6 @@ "MultiTenancySide": 3, "Modules": "Prc" }, - { - "GroupName": "App.Prc", - "Name": "App.Prc.PurchaseOrderAlternative.Note", - "ParentName": "App.Prc.PurchaseOrderAlternative", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Prc" - }, { "GroupName": "App.Inventory", "Name": "App.Inventory.Operations", @@ -18374,16 +18604,6 @@ "MultiTenancySide": 3, "Modules": "Inventory" }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.TransferLineLot.Note", - "ParentName": "App.Inventory.TransferLineLot", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, { "GroupName": "App.Inventory", "Name": "App.Inventory.TransferLineLotStock", @@ -18444,16 +18664,6 @@ "MultiTenancySide": 3, "Modules": "Inventory" }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.TransferLineLotStock.Note", - "ParentName": "App.Inventory.TransferLineLotStock", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, { "GroupName": "App.Inventory", "Name": "App.Inventory.TransferOther", @@ -18664,76 +18874,6 @@ "MultiTenancySide": 3, "Modules": "Inventory" }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.TransferImportItem", - "ParentName": "App.Inventory.InternalTransfer", - "DisplayName": "App.Inventory.TransferImportItem", - "Order": 8, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.TransferImportItem.Create", - "ParentName": "App.Inventory.TransferImportItem", - "DisplayName": "App.Platform.Create", - "Order": 1, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.TransferImportItem.Update", - "ParentName": "App.Inventory.TransferImportItem", - "DisplayName": "App.Platform.Update", - "Order": 2, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.TransferImportItem.Delete", - "ParentName": "App.Inventory.TransferImportItem", - "DisplayName": "App.Platform.Delete", - "Order": 3, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.TransferImportItem.Export", - "ParentName": "App.Inventory.TransferImportItem", - "DisplayName": "App.Platform.Export", - "Order": 4, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.TransferImportItem.Import", - "ParentName": "App.Inventory.TransferImportItem", - "DisplayName": "App.Platform.Import", - "Order": 5, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.TransferImportItem.Note", - "ParentName": "App.Inventory.TransferImportItem", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" - }, { "GroupName": "App.Inventory", "Name": "App.Inventory.Transfer", @@ -18933,16 +19073,6 @@ "IsEnabled": true, "MultiTenancySide": 3, "Modules": "Inventory" - }, - { - "GroupName": "App.Inventory", - "Name": "App.Inventory.StockMove.Note", - "ParentName": "App.Inventory.StockMove", - "DisplayName": "App.Platform.Note", - "Order": 6, - "IsEnabled": true, - "MultiTenancySide": 3, - "Modules": "Inventory" } ] } diff --git a/configs/seeds/data/App.Inventory.Warehouse.json b/configs/seeds/data/App.Inventory.Warehouse.json index ef1e9600..5bb8b81e 100644 --- a/configs/seeds/data/App.Inventory.Warehouse.json +++ b/configs/seeds/data/App.Inventory.Warehouse.json @@ -5,29 +5,15 @@ "Order": 0, "Rows": [ { - "Name": "KADİFETEKS MENSUCAT SANAYİ A.Ş.", - "Code": "WH", - "BranchId": "1c125bf3-3ffd-4445-a270-1bc43ac3f61c", - "IsActive": true, - "Id": "89f31a2d-9cb5-97b5-740b-3a2431f55623" - }, - { - "Name": "Grup Şirketler", - "Code": "GRP", - "BranchId": "1c125bf3-3ffd-4445-a270-1bc43ac3f61c", - "IsActive": true, - "Id": "c27e0d96-e943-fe45-48f9-3a2431f55623" - }, - { - "Name": "İkitelli Fabrika", - "Code": "IKT", + "Name": "1. Kısım", + "Code": "0001", "BranchId": "1c125bf3-3ffd-4445-a270-1bc43ac3f61c", "IsActive": true, "Id": "1840580a-7984-cb0a-4008-3a2431f55623" }, { - "Name": "Kuzuluk Fabrika", - "Code": "KZL", + "Name": "2. Kısım", + "Code": "0002", "BranchId": "1c125bf3-3ffd-4445-a270-1bc43ac3f61c", "IsActive": true, "Id": "a729660b-5397-6019-1b2e-3a2431f55623" diff --git a/configs/seeds/data/App.Languages.LanguageText.json b/configs/seeds/data/App.Languages.LanguageText.json index 8e7fd87a..3b82fd97 100644 --- a/configs/seeds/data/App.Languages.LanguageText.json +++ b/configs/seeds/data/App.Languages.LanguageText.json @@ -10607,28 +10607,28 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.ListForm.WorkflowStart", - "Value": "Workflow Start" + "Value": "Approve" }, { "Id": "4d34e602-e0aa-5397-b66a-89640d98c8f8", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.ListForm.WorkflowStart", - "Value": "İş Akışı Başlat" + "Value": "Onayla" }, { "Id": "5a3fbc3d-63aa-5907-b77f-fc67aaa96e22", "CultureName": "en", "ResourceName": "Platform", "Key": "App.ListForm.WorkflowReset", - "Value": "Workflow Reset" + "Value": "Draft" }, { "Id": "37a18b4d-da68-5df2-8674-80779e1a765d", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.ListForm.WorkflowReset", - "Value": "İş Akışı Sıfırla" + "Value": "Taslak" }, { "Id": "14883a3d-19c3-56c6-b5eb-0c6ef7e24889", @@ -37564,7 +37564,7 @@ "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Listform.ListformField.RequiredDate", - "Value": "Zorunlu Tarih" + "Value": "Termin Tarihi" }, { "Id": "ac3f4b42-0108-58d2-ac27-ccb714ccbe98", @@ -37648,7 +37648,7 @@ "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Listform.ListformField.ReservedQuantity", - "Value": "Rezerve Edilen Miktar" + "Value": "Rezerve Miktar" }, { "Id": "a271770b-c32f-5926-b3b9-8a31c8af481a", @@ -75016,20 +75016,6 @@ "Key": "App.Hr.VehicleExpense.Desc", "Value": "Masraf Girişleri — araç için gelen her fatura/fiş: başlık bilgileri ve kalemleri.\nNerede: İnsan Kaynakları › Araçlar › Masraf Girişleri. Detayın Kalemler sekmesinde tutarlar girilir.\nAlanlar: araç, fatura no, fatura tarihi (varsayılan bugün), firma (Gidilecek Yerler tanımı), belge türü, dosya.\nWidget'lar: toplam fatura, bugün girilen ve tüm kalemlerin toplam net tutarı.\nKullanım: Pivot ile araç × masraf kalemi × dönem maliyet analizi." }, - { - "Id": "af03a8ff-213b-502b-82cd-39000cb6e77e", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Hr.VehicleExpense.Widget.ThisMonth", - "Value": "This Month" - }, - { - "Id": "7814b7e2-629b-5f11-a21d-d06dcfd1430f", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Hr.VehicleExpense.Widget.ThisMonth", - "Value": "Bu Ay" - }, { "Id": "5ae6705e-d3f5-521f-abfe-8b45a36d8061", "CultureName": "en", @@ -75492,20 +75478,6 @@ "Key": "App.Listform.ListformField.ShiftId", "Value": "Vardiya" }, - { - "Id": "c4bebb07-722e-5292-a6d1-43ca79ac6b24", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Listform.ListformField.CreatorId", - "Value": "Created By" - }, - { - "Id": "cf65fff8-a56e-5b77-bad3-a144c881b8fe", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Listform.ListformField.CreatorId", - "Value": "Kayıt" - }, { "Id": "10bafbfd-8d24-59fd-9e13-344e52c51cfa", "CultureName": "en", @@ -80840,20 +80812,6 @@ "Key": "App.Hr.Performance.Widget.Completed", "Value": "Tamamlanan" }, - { - "Id": "714ebfd2-66db-578f-832a-254f91de3a81", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Hr.Performance.Widget.InProgress", - "Value": "In Progress" - }, - { - "Id": "c5ea459b-966c-5081-b393-1999a60f0aa2", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Hr.Performance.Widget.InProgress", - "Value": "Devam Eden" - }, { "Id": "b0a47f17-bc21-53ae-9ae6-ec92b7866dc7", "CultureName": "en", @@ -87238,34 +87196,6 @@ "Key": "App.Listform.ListformField.PaymentQrType", "Value": "Ödeme QR Kodu" }, - { - "Id": "174fadc9-462a-53cb-b59f-041abcafb61a", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Listform.ListformField.Latitude", - "Value": "Latitude" - }, - { - "Id": "7d7b13c5-4f79-50a2-8b14-810d95b2cd33", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Listform.ListformField.Latitude", - "Value": "Enlem" - }, - { - "Id": "7dd33db0-5bed-5d1c-898f-9fc9460eb97e", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Listform.ListformField.Longitude", - "Value": "Longitude" - }, - { - "Id": "baafcfc6-1849-5904-9f01-fe60a63f83a2", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Listform.ListformField.Longitude", - "Value": "Boylam" - }, { "Id": "f62001da-76fc-59e7-a302-39ca902d471e", "CultureName": "en", @@ -88176,20 +88106,6 @@ "Key": "App.Listform.ListformField.VariantValues", "Value": "Varyant Değerleri" }, - { - "Id": "7eca7317-105c-52e0-88f9-6cbcbc783d58", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Listform.ListformField.VariantKey", - "Value": "Variant Key" - }, - { - "Id": "1d05db72-a75c-5d04-aa04-677d8bb0c8a4", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Listform.ListformField.VariantKey", - "Value": "Varyant Anahtarı" - }, { "Id": "529930af-a177-5bfb-a1ee-ca3f69271d67", "CultureName": "en", @@ -88839,14 +88755,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.ProductSupplier.Desc", - "Value": "Product Supplier Prices — from which supplier the product is bought and at what price.\nWhere: Inventory › Definitions › Products › Purchase tab (no menu of its own).\nFields: supplier (from Contacts), variant (optional, for products with attributes), minimum quantity, unit, unit price, currency, delivery lead time (days).\nThe product link (ProductId) is written automatically from the open product." + "Value": "Product Supplier Prices — from which supplier the product is bought and at what price.\nWhere: Inventory › Definitions › Products › Purchase tab (no menu of its own).\nFields: supplier (from Contacts), variant (optional, for products with attributes), minimum quantity, unit, unit price, currency, delivery lead time (days).\nThe product link (ProductId) is written automatically from the open product.\nAutomatic: when a receipt opened from a purchase order is completed (Validate), the supplier's row is updated with the order's unit price and the last purchase date (one row per supplier × unit × currency; the tier matching the received quantity); if there is none, a row is added." }, { "Id": "0375d62e-e26a-5189-b8ed-898c108e29bb", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.ProductSupplier.Desc", - "Value": "Ürün Tedarikçi Fiyatları — ürünün hangi tedarikçiden hangi bedele alındığı.\nNerede: Envanter › Tanımlamalar › Ürünler › Satınalma sekmesi (kendi menüsü yoktur).\nAlanlar: tedarikçi (Kontaklar'dan), varyant (isteğe bağlı, nitelikli ürünlerde), minimum miktar, birim, birim fiyat, kur, teslim süresi (gün).\nÜrün bağlantısı (ProductId) açık olan ürün kaydından otomatik yazılır." + "Value": "Ürün Tedarikçi Fiyatları — ürünün hangi tedarikçiden hangi bedele alındığı.\nNerede: Envanter › Tanımlamalar › Ürünler › Satınalma sekmesi (kendi menüsü yoktur).\nAlanlar: tedarikçi (Kontaklar'dan), varyant (isteğe bağlı, nitelikli ürünlerde), minimum miktar, birim, birim fiyat, kur, teslim süresi (gün).\nÜrün bağlantısı (ProductId) açık olan ürün kaydından otomatik yazılır.\nOtomatik: satınalma siparişinden açılan alım Doğrula ile stoğa girince tedarikçinin satırı siparişin birim fiyatı ve son alım tarihiyle güncellenir (tedarikçi × birim × para birimi başına tek satır; alınan miktara uyan kademe); satır yoksa eklenir." }, { "Id": "85c81c1f-355b-50ec-b295-f61b10bdfc26", @@ -93165,28 +93081,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Prc.MaterialRequestLine.Desc", - "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)." + "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), required date, line status (Waiting / Done / Cancelled), request reason, delivered quantity (read-only).\nRules: lines can be added, changed or deleted only while the request is a draft; to change a sent request, move it back to Draft, edit it and send it for approval again. How a line is fulfilled (purchase or internal transfer) and who is responsible are decided in Planning: the user who plans becomes the purchasing responsible. Changing line statuses recalculates the request status (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 › Talepler › 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", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.StaticLookup.WarehouseTransfer", - "Value": "Warehouse Transfer" - }, - { - "Id": "edbab48a-17e3-57b3-b80d-b2055550c4c8", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.StaticLookup.WarehouseTransfer", - "Value": "Depodan Transfer" + "Value": "Talep Satırları — malzeme talebinde istenen ürünler.\nNerede: Satınalma › Talepler › 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), termin tarihi, satır durumu (Bekliyor / Tamamlandı / İptal), talep nedeni, teslim edilen miktar (salt okunur).\nKurallar: satır yalnız talep Taslak iken eklenip değiştirilip silinebilir; onaya gönderilmiş talebin satırı için talep Taslak adımına alınır, düzenlenir ve yeniden onaya gönderilir. Kalemin nasıl karşılanacağı (satınalma ya da iç transfer) ve sorumlusu Planlama'da belirlenir: planlamayı yapan kullanıcı satınalma sorumlusudur. Satır durumları değişince talebin durumu yeniden hesaplanır (Kısmi Tamamlandı / Tamamlandı)." }, { "Id": "df777320-d7c8-5c5d-8954-65a3d2ac46b4", @@ -93244,20 +93146,6 @@ "Key": "App.Listform.ListformField.MaterialRequestId", "Value": "Malzeme Talebi" }, - { - "Id": "81ab2aca-ff95-55bf-9c20-aab648a997ff", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Listform.ListformField.FulfillmentMethod", - "Value": "Fulfilment" - }, - { - "Id": "a751bbc2-6d6e-5374-9b2d-e919fcc6d908", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Listform.ListformField.FulfillmentMethod", - "Value": "Karşılama Şekli" - }, { "Id": "54f9886c-7e06-59e9-a3cf-45ad39dd70d1", "CultureName": "en", @@ -93347,14 +93235,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, 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." + "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), branch and department (yours by default; departments are filtered by branch), warehouse (filtered by branch) and location (filtered by warehouse) where the goods will be put, request date, general description (rich text); 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. A request that has been sent (pending or approved) cannot be changed: header fields and the lines (product, quantity, unit, due date, reason) are locked and lines cannot be added or removed. To change it, move the request back to Draft, edit it and send it for approval again. 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.\nBranch: only the branches the user is authorized for (Users › Permissions › Branch Management) can be chosen and the list shows only their records; choosing a branch fills in the user's default warehouse and location of that branch, and a new record opens with your department's branch (when you are authorized for it).\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 › Talepler › 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." + "Value": "Taleplerim — açtığınız malzeme talepleri, tüm durumlarıyla.\nNerede: Satınalma › Talepler › Taleplerim.\nAlanlar: talep no (MT-YYYY-00001, otomatik), öncelik, talep eden (siz), şube ve departman (varsayılan olarak sizinkiler; departman şubeye göre süzülür), malın konulacağı depo (şubeye göre) ve konum (depoya göre), talep tarihi, genel açıklama (biçimli metin); 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. Onaya gönderilen talep (onaylanmış ya da onayda olan) değiştirilemez: başlık alanları ve satırların ürünü, miktarı, birimi, termini, nedeni kilitlenir, satır eklenip silinemez. Değişiklik için talebi Taslak adımına alın, düzenleyin ve yeniden onaya gönderin. 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Şube: yalnız kullanıcının yetkili olduğu şubeler (Kullanıcılar › Yetkiler › Şube Yönetimi) seçilir ve listede yalnız bu şubelerin kayıtları görünür; şube seçilince kullanıcının o şubedeki varsayılan deposu ve konumu kendiliğinden gelir, yeni kayıt departmanınızın şubesiyle (o şubeye yetkiliyseniz) açılır.\nİlişkili: Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Tüm Talepler." }, { "Id": "ce3d734c-f508-5647-8f8d-2bf6b056c79a", @@ -93370,20 +93258,6 @@ "Key": "App.Prc.MaterialRequest.Group.Request", "Value": "Malzeme Talebi" }, - { - "Id": "c9f7e34c-6282-548b-bdff-3be6d4478d71", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.MaterialRequest.Group.Approval", - "Value": "Approval / Rejection" - }, - { - "Id": "fcec5d8b-d157-5f55-a321-a71e1230ffcd", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.MaterialRequest.Group.Approval", - "Value": "Onay / Red Bilgileri" - }, { "Id": "3708a984-4c9b-536b-b4f8-3928bad0c787", "CultureName": "en", @@ -93697,14 +93571,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Prc.MaterialRequest.Desc", - "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." + "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, branch, department, warehouse and location, request date, general description, approval status / approver / date / description) next to the line (product, quantity, unit, required date, reason, delivered quantity, 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 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, kalem kalem; satınalma yönetiminin listesi.\nNerede: Satınalma › Talepler › 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." + "Value": "Tüm Talepler — kurumun bütün malzeme talepleri, tüm durumlarıyla, kalem kalem; satınalma yönetiminin listesi.\nNerede: Satınalma › Talepler › Tüm Talepler.\nAlanlar: her satır bir talep kalemidir — talep başlığı (talep no, öncelik, talep eden, şube, departman, depo ve konum, talep tarihi, genel açıklama, onay durumu / onaylayan / tarih / açıklama) ile kalemin bilgileri (ürün, miktar, birim, termin tarihi, talep nedeni, teslim edilen miktar, 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ı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", @@ -94126,34 +94000,6 @@ "Key": "App.Prc.AgreementStatus.Cancelled", "Value": "İptal" }, - { - "Id": "63fa40a7-c18c-52f4-ae9e-9e2d12ec9d08", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseAgreement.NewRfq", - "Value": "New RFQ" - }, - { - "Id": "29691852-1343-5bd5-a906-91064dc894a7", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseAgreement.NewRfq", - "Value": "Yeni Teklif" - }, - { - "Id": "b94d9688-4b5b-5971-87c3-ef0f5f4c9209", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseAgreement.NewRfqHint", - "Value": "Open Requests for Quotation; select this agreement on a new RFQ" - }, - { - "Id": "4629ff4b-4688-52e5-94e2-6e7b985f86dd", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseAgreement.NewRfqHint", - "Value": "Teklif Talepleri'ni açar; yeni teklifte bu sözleşmeyi seçin" - }, { "Id": "169851fd-2d6b-56db-a3f5-6381cc271f32", "CultureName": "en", @@ -94607,14 +94453,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Prc.PurchaseRfq.Desc", - "Value": "Requests for Quotation — one purchasing document per supplier; documents opened for the same need form a tender and are compared before ordering.\nWhere: Purchasing › Orders › Requests for Quotation; tabs Products, Request Lines, Supplier Quote, Other Information, Quotes (other documents of the tender) and Price Comparison.\nStatuses: RFQ (draft) › RFQ Sent (e-mail queued to the supplier) › Purchase Order (converted) / Cancelled.\nFields: RFQ no (automatic, RFQ00001), supplier, supplier reference, agreement, currency, order deadline, expected arrival, ask confirmation, deliver to, terms; the list also shows tender, source (material request numbers of the lines), buyer and untaxed / tax / total (calculated from the lines).\nToolbar (select an RFQ): Import from Requests opens the approved request lines (several requests at once) to tick and save; Create Alternative adds suppliers to the tender (each gets a copy of the document with prices from its price list) and has a price entry table for all suppliers. The same work can be done in the Request Lines, Quotes and Price Comparison tabs. Choosing an agreement fills an empty RFQ with its remaining lines.\nStatus buttons (toolbar, confirmed before running): Send by E-mail, Send Whole Tender (all draft documents of the tender), Convert to Purchase Order (line by line: the Selected line, otherwise the Recommended line of the Price Comparison wins; one purchase order per winning supplier, documents that win nothing are cancelled), Cancel, Set to Draft (a cancelled RFQ). An RFQ converted or cancelled cannot be edited." + "Value": "Requests for Quotation — one purchasing document per supplier; documents opened for the same need form a tender and are compared before ordering.\nWhere: Purchasing › Orders › Requests for Quotation; tabs Products, Supplier Quote, Other Information, Quotes (other documents of the tender) and Price Comparison.\nStatuses: RFQ (draft) › RFQ Sent (e-mail queued to the supplier) › Purchase Order (converted) / Cancelled.\nFields: RFQ no (automatic, RFQ00001), supplier, supplier reference, branch, agreement (filtered by supplier and branch), receiving warehouse (filtered by branch) and operation type (filtered by warehouse; all three required; copied to the order by Convert to Order and to alternative quotes), currency, order deadline, expected arrival, ask confirmation, deliver to, terms; the list also shows tender, source (material request numbers of the lines), buyer and untaxed / tax / total (calculated from the lines).\nToolbar (select an RFQ): Create Alternative adds suppliers to the tender (each gets a copy of the document with prices from its price list) and has a price entry table for all suppliers. The same work can be done in the Quotes and Price Comparison tabs. Request lines come to an RFQ through the Purchasing decision in Purchasing › Requests › Planning: the line is added to the supplier's draft RFQ for the same branch and warehouse, otherwise a new draft is opened. Choosing an agreement fills an empty RFQ with its remaining lines.\nBranch: only the branches the user is authorized for (Users › Permissions › Branch Management) can be chosen and the list shows only their records; choosing a branch fills in the user's default warehouse of that branch, and a new record opens with your department's branch (when you are authorized for it).\nStatus buttons (toolbar, confirmed before running): Send by E-mail, Send Whole Tender (all draft documents of the tender), Convert to Purchase Order (line by line: the Selected line, otherwise the Recommended line of the Price Comparison wins; one purchase order per winning supplier, documents that win nothing are cancelled), Cancel, Set to Draft (a cancelled RFQ). An RFQ converted or cancelled cannot be edited." }, { "Id": "fb52ef21-5df4-55f3-98c3-3eeb9cc399e4", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Prc.PurchaseRfq.Desc", - "Value": "Teklif Talepleri — her tedarikçi için ayrı satınalma belgesi; aynı ihtiyaç için açılan belgeler bir ihale oluşturur ve siparişten önce kıyaslanır.\nNerede: Satınalma › Siparişler › Teklif Talepleri; sekmeler Ürünler, Talep Kalemleri, Tedarikçi Teklifi, Diğer Bilgiler, Teklifler (ihalenin diğer belgeleri) ve Fiyat Karşılaştırması.\nDurumlar: Teklif Talebi (taslak) › Teklif Talebi Gönderildi (tedarikçiye e-posta kuyruğa alındı) › Satınalma Siparişi (dönüştürüldü) / İptal Edildi.\nAlanlar: teklif talep no (otomatik, RFQ00001), tedarikçi, tedarikçi referansı, sözleşme, para birimi, sipariş zaman sınırı, beklenen geliş, onay isteyin, teslim alacak, şartlar; listede ayrıca ihale, kaynak (kalemlerin malzeme talebi numaraları), alıcı ve vergi hariç / KDV / toplam (kalemlerden hesaplanır) görünür.\nAraç çubuğu (bir teklif seçilir): Talepten Aktar onaylı talep kalemlerini (birden fazla talep birlikte) işaretleyip kaydetmek için açar; Alternatif Oluştur ihaleye tedarikçi ekler (her biri belgenin kopyasını tedarikçinin fiyat listesiyle alır) ve bütün tedarikçiler için fiyat giriş tablosu sunar. Aynı işler Talep Kalemleri, Teklifler ve Fiyat Karşılaştırması sekmelerinden de yapılır. Sözleşme seçilince boş teklif kalan sözleşme kalemleriyle dolar.\nDurum butonları (araç çubuğu, çalışmadan önce onay ister): E-posta ile Gönder, İhaleyi Gönder (ihalenin bütün taslak belgeleri), Siparişe Dönüştür (kalem bazında: Fiyat Karşılaştırması'nda Seçili satır, yoksa Önerilen satır kazanır; kazanan her tedarikçiye bir satınalma siparişi açılır, hiç kalem kazanamayan belge iptal olur), İptal, Taslak olarak ayarla (iptal edilmiş teklif). Siparişe dönüşmüş ya da iptal edilmiş teklif düzenlenemez." + "Value": "Teklif Talepleri — her tedarikçi için ayrı satınalma belgesi; aynı ihtiyaç için açılan belgeler bir ihale oluşturur ve siparişten önce kıyaslanır.\nNerede: Satınalma › Siparişler › Teklif Talepleri; sekmeler Ürünler, Tedarikçi Teklifi, Diğer Bilgiler, Teklifler (ihalenin diğer belgeleri) ve Fiyat Karşılaştırması.\nDurumlar: Teklif Talebi (taslak) › Teklif Talebi Gönderildi (tedarikçiye e-posta kuyruğa alındı) › Satınalma Siparişi (dönüştürüldü) / İptal Edildi.\nAlanlar: teklif talep no (otomatik, RFQ00001), tedarikçi, tedarikçi referansı, şube, sözleşme (tedarikçi ve şubeye göre), teslim alınacak depo (şubeye göre) ve operasyon türü (depoya göre; üçü de zorunlu; Siparişe Dönüştür ile siparişe, alternatif teklife kopyalanır), para birimi, sipariş zaman sınırı, beklenen geliş, onay isteyin, teslim alacak, şartlar; listede ayrıca ihale, kaynak (kalemlerin malzeme talebi numaraları), alıcı ve vergi hariç / KDV / toplam (kalemlerden hesaplanır) görünür.\nAraç çubuğu (bir teklif seçilir): Alternatif Oluştur ihaleye tedarikçi ekler (her biri belgenin kopyasını tedarikçinin fiyat listesiyle alır) ve bütün tedarikçiler için fiyat giriş tablosu sunar. Aynı işler Teklifler ve Fiyat Karşılaştırması sekmelerinden de yapılır. Talep kalemleri teklife Satınalma › Talepler › Planlama'daki Satınalma kararıyla gelir: kalem tedarikçinin aynı şube ve depodaki taslak teklif talebine eklenir, yoksa yeni taslak açılır. Sözleşme seçilince boş teklif kalan sözleşme kalemleriyle dolar.\nŞube: yalnız kullanıcının yetkili olduğu şubeler (Kullanıcılar › Yetkiler › Şube Yönetimi) seçilir ve listede yalnız bu şubelerin kayıtları görünür; şube seçilince kullanıcının o şubedeki varsayılan deposu kendiliğinden gelir, yeni kayıt departmanınızın şubesiyle (o şubeye yetkiliyseniz) açılır.\nDurum butonları (araç çubuğu, çalışmadan önce onay ister): E-posta ile Gönder, İhaleyi Gönder (ihalenin bütün taslak belgeleri), Siparişe Dönüştür (kalem bazında: Fiyat Karşılaştırması'nda Seçili satır, yoksa Önerilen satır kazanır; kazanan her tedarikçiye bir satınalma siparişi açılır, hiç kalem kazanamayan belge iptal olur), İptal, Taslak olarak ayarla (iptal edilmiş teklif). Siparişe dönüşmüş ya da iptal edilmiş teklif düzenlenemez." }, { "Id": "1bf349e4-0b50-53e2-9d5b-13da196cc214", @@ -94831,14 +94677,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Prc.PurchaseOrder.Desc", - "Value": "Purchase Orders — orders given to suppliers, either converted from a tender of requests for quotation or written directly without collecting quotes.\nWhere: Purchasing › Orders › Purchase Orders; tabs Products, Request Lines (draft orders), Other Information and Quotes (the RFQs of the source tender).\nStatuses: Draft › Confirmed / Cancelled; orders converted from an RFQ open confirmed.\nFields: order no (automatic, P00001), supplier, supplier reference, agreement, currency, confirmation date, expected arrival, arrival (entered when the goods arrive), deliver to, terms; the list also shows untaxed / tax / total (calculated from the lines); Source shows the RFQ no when converted from a quote, otherwise the material request numbers.\nToolbar (select an order): Import from Requests (draft orders), and the status buttons Confirm Order, Send by E-mail (queues the order with prices to the supplier's contact e-mail), Cancel, Set to Draft (a cancelled order); status buttons ask for confirmation. Only a draft order written without an RFQ can be deleted; a cancelled order cannot be edited." + "Value": "Purchase Orders — orders given to suppliers, either converted from a tender of requests for quotation or written directly without collecting quotes.\nWhere: Purchasing › Orders › Purchase Orders; tabs Products, Other Information and Quotes (the RFQs of the source tender).\nStatuses: Draft › Confirmed / Cancelled; orders converted from an RFQ open confirmed.\nFields: order no (automatic, P00001), supplier, supplier reference, branch, agreement (filtered by supplier and branch), receiving warehouse (filtered by branch) and operation type (filtered by warehouse; all three required; taken from the RFQ when converted from a quote), currency, confirmation date, expected arrival, arrival (entered when the goods arrive), deliver to, terms; the list also shows untaxed / tax / total (calculated from the lines); Source shows the RFQ no when converted from a quote; request lines reach an order only through an RFQ (Purchasing › Requests › Planning, Purchasing decision).\nBranch: only the branches the user is authorized for (Users › Permissions › Branch Management) can be chosen and the list shows only their records; choosing a branch fills in the user's default warehouse of that branch, and a new record opens with your department's branch (when you are authorized for it).\nToolbar (select an order): the status buttons Confirm Order, Send by E-mail (queues the order with prices to the supplier's contact e-mail), Cancel, Set to Draft (a cancelled order); status buttons ask for confirmation. Only a draft order written without an RFQ can be deleted; a cancelled order cannot be edited." }, { "Id": "478b1fe5-8780-55e4-a308-2fc0925fbfba", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Prc.PurchaseOrder.Desc", - "Value": "Satınalma Siparişleri — tedarikçilere verilen siparişler; teklif talebi ihalesinden dönüştürülür ya da teklif toplamadan doğrudan yazılır.\nNerede: Satınalma › Siparişler › Satınalma Siparişleri; sekmeler Ürünler, Talep Kalemleri (taslak siparişte), Diğer Bilgiler ve Teklifler (kaynak ihalenin teklif talepleri).\nDurumlar: Taslak › Onaylandı / İptal; teklif talebinden dönüştürülen sipariş onaylı açılır.\nAlanlar: sipariş no (otomatik, P00001), tedarikçi, tedarikçi referansı, sözleşme, para birimi, onaylama tarihi, beklenen geliş, varış (mal gelince girilir), teslim alacak, şartlar; listede ayrıca vergi hariç / KDV / toplam (kalemlerden hesaplanır) görünür; Kaynak teklif talebinden gelen siparişte teklif talep no, doğrudan yazılanda malzeme talebi numaralarıdır.\nAraç çubuğu (bir sipariş seçilir): Talepten Aktar (taslak siparişte) ve durum butonları Siparişi Onayla, E-posta ile Gönder (sipariş fiyatlarıyla tedarikçinin kontak e-postasına kuyruğa alınır), İptal, Taslak olarak ayarla (iptal edilmiş sipariş); durum butonları onay ister. Yalnız teklifsiz yazılmış taslak sipariş silinebilir; iptal edilmiş sipariş düzenlenemez." + "Value": "Satınalma Siparişleri — tedarikçilere verilen siparişler; teklif talebi ihalesinden dönüştürülür ya da teklif toplamadan doğrudan yazılır.\nNerede: Satınalma › Siparişler › Satınalma Siparişleri; sekmeler Ürünler, Diğer Bilgiler ve Teklifler (kaynak ihalenin teklif talepleri).\nDurumlar: Taslak › Onaylandı / İptal; teklif talebinden dönüştürülen sipariş onaylı açılır.\nAlanlar: sipariş no (otomatik, P00001), tedarikçi, tedarikçi referansı, şube, sözleşme (tedarikçi ve şubeye göre), teslim alınacak depo (şubeye göre) ve operasyon türü (depoya göre; üçü de zorunlu; teklif talebinden dönüştürülen siparişte talepten gelir), para birimi, onaylama tarihi, beklenen geliş, varış (mal gelince girilir), teslim alacak, şartlar; listede ayrıca vergi hariç / KDV / toplam (kalemlerden hesaplanır) görünür; Kaynak teklif talebinden gelen siparişte teklif talep no'dur; talep kalemleri siparişe yalnız teklif talebi üzerinden (Satınalma › Talepler › Planlama, Satınalma kararı) gelir.\nŞube: yalnız kullanıcının yetkili olduğu şubeler (Kullanıcılar › Yetkiler › Şube Yönetimi) seçilir ve listede yalnız bu şubelerin kayıtları görünür; şube seçilince kullanıcının o şubedeki varsayılan deposu kendiliğinden gelir, yeni kayıt departmanınızın şubesiyle (o şubeye yetkiliyseniz) açılır.\nAraç çubuğu (bir sipariş seçilir): durum butonları Siparişi Onayla, E-posta ile Gönder (sipariş fiyatlarıyla tedarikçinin kontak e-postasına kuyruğa alınır), İptal, Taslak olarak ayarla (iptal edilmiş sipariş); durum butonları onay ister. Yalnız teklifsiz yazılmış taslak sipariş silinebilir; iptal edilmiş sipariş düzenlenemez." }, { "Id": "20bc4aa0-2cd4-5f36-90fc-839ccc16bedc", @@ -94938,48 +94784,6 @@ "Key": "App.Listform.ListformField.PurchaseRfqId", "Value": "Teklif Talebi" }, - { - "Id": "e90418f1-9dce-587c-80a1-aed32440d057", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfqImportItem", - "Value": "RFQ Request Lines" - }, - { - "Id": "6b0e4bad-152a-5cb2-81e4-2b2cbbe1e020", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfqImportItem", - "Value": "Teklif Talep Kalemleri" - }, - { - "Id": "9b1be119-7cde-5e9a-aa18-dc16284a1b58", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfqImportItem.Title", - "Value": "RFQ Request Lines" - }, - { - "Id": "a830862e-42cd-5a87-a57d-bfe8649de485", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfqImportItem.Title", - "Value": "Teklif Talep Kalemleri" - }, - { - "Id": "9833ca85-9823-5e08-9943-1b44047ae927", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfqImportItem.Desc", - "Value": "RFQ Request Lines — the lines of approved material requests that can still be quoted, listed for the open request for quotation.\nWhere: Purchasing › Orders › Requests for Quotation › Request Lines tab (no menu of its own); grouped by request.\nFields: request no, requester, product, quantity, unit, requested date, reason.\nUsage: select as many lines as needed with the row checkboxes (several requests at once) and press Transfer Selected; the lines are copied to the RFQ with the agreement or supplier price and the requested date, and disappear from this list. Only an RFQ in RFQ or RFQ Sent status takes lines; a line already on another active RFQ or order is not listed." - }, - { - "Id": "377297ab-417d-5583-89eb-f6c7ee0a0f66", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfqImportItem.Desc", - "Value": "Teklif Talep Kalemleri — onaylı malzeme taleplerinin henüz teklif istenmemiş kalemleri, açık teklif talebi için listelenir.\nNerede: Satınalma › Siparişler › Teklif Talepleri › Talep Kalemleri sekmesi (kendi menüsü yoktur); talebe göre gruplanır.\nAlanlar: talep no, talep eden, ürün, miktar, birim, istenen tarih, neden.\nKullanım: istenen kadar satır, satır başındaki kutuyla seçilir (birden fazla talep birlikte) ve Seçilenleri Aktar'a basılır; kalemler sözleşme ya da tedarikçi fiyatı ve istenen termin ile teklife kopyalanır ve bu listeden düşer. Yalnız Teklif Talebi ya da Gönderildi durumundaki teklife kalem aktarılır; başka bir açık teklifte ya da siparişte olan kalem listelenmez." - }, { "Id": "d03b92da-2b80-58f8-85ff-c6d1f46568ed", "CultureName": "en", @@ -95316,48 +95120,6 @@ "Key": "App.Listform.ListformField.IsSelected", "Value": "Seçili" }, - { - "Id": "877d4291-3abd-5ac8-a4ba-5f24aacf5b36", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseOrderImportItem", - "Value": "Order Request Lines" - }, - { - "Id": "be684e5d-b6e0-5bd2-941e-86c28be49bc1", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseOrderImportItem", - "Value": "Sipariş Talep Kalemleri" - }, - { - "Id": "667c18cc-30a5-591b-b0a0-ed709121e1a2", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseOrderImportItem.Title", - "Value": "Order Request Lines" - }, - { - "Id": "18e378bd-d084-5444-a5e8-059ab2e55c8c", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseOrderImportItem.Title", - "Value": "Sipariş Talep Kalemleri" - }, - { - "Id": "3f458748-e79e-5e58-9197-6a1db3179fba", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseOrderImportItem.Desc", - "Value": "Order Request Lines — the lines of approved material requests that are not on any RFQ or order yet, listed for a draft purchase order written without quotes.\nWhere: Purchasing › Orders › Purchase Orders › Request Lines tab (no menu of its own); grouped by request; only a draft order takes lines.\nFields: request no, requester, product, quantity, unit, requested date, reason.\nUsage: select the lines to order with the row checkboxes (several requests at once) and press Transfer Selected; the lines are copied with the agreement or supplier price and the requested date, and the order's Source shows the request numbers." - }, - { - "Id": "a6c01942-c13c-5ff4-9367-ac1ab75975f5", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseOrderImportItem.Desc", - "Value": "Sipariş Talep Kalemleri — onaylı malzeme taleplerinin henüz hiçbir teklifte ya da siparişte olmayan kalemleri, teklifsiz yazılan taslak sipariş için listelenir.\nNerede: Satınalma › Siparişler › Satınalma Siparişleri › Talep Kalemleri sekmesi (kendi menüsü yoktur); talebe göre gruplanır; yalnız taslak sipariş kalem alır.\nAlanlar: talep no, talep eden, ürün, miktar, birim, istenen tarih, neden.\nKullanım: sipariş edilecek satırlar, satır başındaki kutuyla seçilir (birden fazla talep birlikte) ve Seçilenleri Aktar'a basılır; kalemler sözleşme ya da tedarikçi fiyatı ve istenen termin ile kopyalanır, siparişin Kaynak'ında talep numaraları görünür." - }, { "Id": "c5599c91-6f69-5811-bf9e-659fd95ce8a9", "CultureName": "en", @@ -95386,48 +95148,6 @@ "Key": "App.Prc.PurchaseRfq.Action.Award", "Value": "Siparişe Dönüştür" }, - { - "Id": "853f6fd8-4f09-5643-86ab-002a0e793c9d", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfq.ImportRequests", - "Value": "Import from Requests" - }, - { - "Id": "0653a1b5-2aa0-5ced-8a37-d6105c023edf", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfq.ImportRequests", - "Value": "Talepten Aktar" - }, - { - "Id": "6ac7c8e8-b667-586a-9744-1109f6e185bf", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfq.ImportRequestsInfo", - "Value": "Select the lines to bring in with the row checkboxes (several requests at once) and press Transfer Selected in the table toolbar." - }, - { - "Id": "2bf8cbca-a022-53fa-9c86-61d478c6cba0", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfq.ImportRequestsInfo", - "Value": "Aktarılacak satırları satır başındaki kutuyla seçin (birden fazla talep birlikte) ve tablonun araç çubuğundaki Seçilenleri Aktar'a basın." - }, - { - "Id": "0b16a115-63f2-5785-be3b-2ca8ba2f1176", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseImportItem.TransferSelected", - "Value": "Transfer Selected" - }, - { - "Id": "99368842-f9c5-5c17-b638-235921f6e2bf", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseImportItem.TransferSelected", - "Value": "Seçilenleri Aktar" - }, { "Id": "e6f0c745-a48c-520e-b3cd-d1bce35ba78d", "CultureName": "en", @@ -95568,20 +95288,6 @@ "Key": "App.Prc.PurchaseRfq.PriceComparison", "Value": "Fiyat Karşılaştırması" }, - { - "Id": "fd80636e-9f05-5a48-84a8-09d837f3cbae", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfq.RequestItems", - "Value": "Request Lines" - }, - { - "Id": "85d7d59b-32a9-568c-ac95-49cfe7b50554", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Prc.PurchaseRfq.RequestItems", - "Value": "Talep Kalemleri" - }, { "Id": "88e499b0-3bd3-5cb3-a451-c20fcd75e97c", "CultureName": "en", @@ -95727,14 +95433,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.Receipt.Desc", - "Value": "Receipts — goods entering the warehouse from suppliers.\nWhere: Inventory › Operations › Receipts. Confirming a purchase order opens a draft receipt automatically (Source Document = order no; received quantities are written back to the order lines).\nFields: received from (supplier), branch › warehouse › operation type (receipt types only), destination location (from the operation type), scheduled date, source document.\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as Ready checks stock and fills the done quantity; Mark as Done posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Mark as Done. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves." + "Value": "Receipts — goods entering the warehouse from suppliers.\nWhere: Inventory › Operations › Receipts. Confirming a purchase order opens a draft receipt automatically (Source Document = order no; received quantities are written back to the order lines).\nFields: received from (supplier), branch › warehouse › operation type (receipt types only), destination location (from the operation type), scheduled date, source document.\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as To Do checks stock and fills the done quantity; Validate posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Validate. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves." }, { "Id": "0a2ba7f8-4700-52bf-a81f-6b83dab2894d", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.Receipt.Desc", - "Value": "Alımlar — tedarikçiden depoya giren mallar.\nNerede: Envanter › Operasyonlar › Alımlar. Satınalma siparişi onaylanınca taslak alım kendiliğinden açılır (Kaynak Belge = sipariş no; alınan miktarlar sipariş kalemlerine yazılır).\nAlanlar: alım yapılan (tedarikçi), şube › depo › operasyon türü (yalnız alım türleri), hedef konum (operasyon türünden gelir), planlanan tarih, kaynak belge.\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Hazırla stoğu kontrol eder ve yapılacak miktarı doldurur; Tamamla stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Tamamla'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri." + "Value": "Alımlar — tedarikçiden depoya giren mallar.\nNerede: Envanter › Operasyonlar › Alımlar. Satınalma siparişi onaylanınca taslak alım kendiliğinden açılır (Kaynak Belge = sipariş no; alınan miktarlar sipariş kalemlerine yazılır).\nAlanlar: alım yapılan (tedarikçi), şube › depo › operasyon türü (yalnız alım türleri), hedef konum (operasyon türünden gelir), planlanan tarih, kaynak belge.\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Yapılacak olarak işaretle stoğu kontrol eder ve yapılacak miktarı doldurur; Doğrula stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Doğrula'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri." }, { "Id": "6f2ff0f5-fc3c-59c8-97c4-d9b3b83137d5", @@ -95825,28 +95531,28 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.Transfer.Action.Confirm", - "Value": "Mark as Ready" + "Value": "Mark as To Do" }, { "Id": "c10f4cb6-aa4b-555a-8c65-a03b47f5256e", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.Transfer.Action.Confirm", - "Value": "Hazırla" + "Value": "Yapılacak olarak işaretle" }, { "Id": "afb4560a-2baf-535f-baeb-11788b295c1a", "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.Transfer.Action.Validate", - "Value": "Mark as Done" + "Value": "Validate" }, { "Id": "bb92c46c-90b6-5184-9432-04edae1b0d2d", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.Transfer.Action.Validate", - "Value": "Tamamla" + "Value": "Doğrula" }, { "Id": "1f33136e-b4e6-5f22-bff8-229fcfdc57e4", @@ -96021,14 +95727,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.Delivery.Desc", - "Value": "Deliveries — goods leaving the warehouse to customers.\nWhere: Inventory › Operations › Deliveries.\nFields: delivery address (contact), branch › warehouse › operation type (delivery types only), source location (from the operation type), scheduled date, source document, shipping policy (As soon as possible: the available part becomes Ready; When all products are ready: waits until every line is available).\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as Ready checks stock and fills the done quantity; Mark as Done posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Mark as Done. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves." + "Value": "Deliveries — goods leaving the warehouse to customers.\nWhere: Inventory › Operations › Deliveries.\nFields: delivery address (contact), branch › warehouse › operation type (delivery types only), source location (from the operation type), scheduled date, source document, shipping policy (As soon as possible: the available part becomes Ready; When all products are ready: waits until every line is available).\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as To Do checks stock and fills the done quantity; Validate posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Validate. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves." }, { "Id": "f17cde8d-5768-5e50-874b-6c29579d1703", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.Delivery.Desc", - "Value": "Teslimatlar — depodan müşteriye çıkan mallar.\nNerede: Envanter › Operasyonlar › Teslimatlar.\nAlanlar: teslim adresi (kontak), şube › depo › operasyon türü (yalnız teslimat türleri), kaynak konum (operasyon türünden gelir), planlanan tarih, kaynak belge, ürün teslimat politikası (Mümkün olduğunca kısa sürede: karşılanabilen kısım Hazır olur; Tüm ürünler hazır olduğunda: bütün satırlar karşılanana kadar Bekleyen kalır).\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Hazırla stoğu kontrol eder ve yapılacak miktarı doldurur; Tamamla stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Tamamla'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri." + "Value": "Teslimatlar — depodan müşteriye çıkan mallar.\nNerede: Envanter › Operasyonlar › Teslimatlar.\nAlanlar: teslim adresi (kontak), şube › depo › operasyon türü (yalnız teslimat türleri), kaynak konum (operasyon türünden gelir), planlanan tarih, kaynak belge, ürün teslimat politikası (Mümkün olduğunca kısa sürede: karşılanabilen kısım Hazır olur; Tüm ürünler hazır olduğunda: bütün satırlar karşılanana kadar Bekleyen kalır).\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Yapılacak olarak işaretle stoğu kontrol eder ve yapılacak miktarı doldurur; Doğrula stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Doğrula'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri." }, { "Id": "16082b7c-d201-570b-b8ff-b11b20b2a2c4", @@ -96091,14 +95797,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.InternalTransfer.Desc", - "Value": "Internal Transfers — moves between locations of the same warehouse.\nWhere: Inventory › Operations › Internal Transfers; extra tab Approval & Delivery.\nFields: contact, branch › warehouse › operation type (internal transfer types only), source and destination location (internal locations only, different from each other), scheduled date, source document.\nOrder: enter the lines › Start Workflow › the warehouse responsible of the source location gives Source Warehouse Approval › the document is made ready automatically (Ready/Waiting) › select lots › Mark as Done. A location without a responsible has no approval step (No Approval Needed) and Mark as Ready is pressed by hand. Approval comes before the stock move; Mark as Done writes the receiving user and date.\nImport from Requests (draft transfer) adds the approved material request lines to be fulfilled by transfer; Mark as Done writes the delivered quantity to the request line.\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as Ready checks stock and fills the done quantity; Mark as Done posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Mark as Done. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves." + "Value": "Internal Transfers — moves between locations of the same warehouse.\nWhere: Inventory › Operations › Internal Transfers; extra tab Approval & Delivery.\nFields: contact, branch › warehouse › operation type (internal transfer types only), source and destination location (internal locations only, different from each other), scheduled date, source document.\nOrder: enter the lines › Start Workflow › the warehouse responsible of the source location gives Source Warehouse Approval › the document is made ready automatically (Ready/Waiting) › select lots › Validate. A location without a responsible has no approval step (No Approval Needed) and Mark as To Do is pressed by hand. Approval comes before the stock move; Validate writes the receiving user and date.\nImport from Requests (draft transfer) adds the approved material request lines to be fulfilled by transfer; Validate writes the delivered quantity to the request line.\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as To Do checks stock and fills the done quantity; Validate posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Validate. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves." }, { "Id": "607d1ef7-46dc-5c82-a5e9-c3b08b43ff6d", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.InternalTransfer.Desc", - "Value": "İç Transferler — aynı deponun konumları arasında taşıma.\nNerede: Envanter › Operasyonlar › İç Transferler; ek sekme Onay ve Teslim.\nAlanlar: kontak, şube › depo › operasyon türü (yalnız iç transfer türleri), kaynak ve hedef konum (yalnız iç konumlar, birbirinden farklı), planlanan tarih, kaynak belge.\nSıra: satırlar girilir › İş Akışı Başlat › kaynak konumun depo sorumlusu Kaynak Depo Onayı verir › belge kendiliğinden hazırlanır (Hazır/Bekleyen) › lotlar seçilir › Tamamla. Sorumlusu olmayan konumda onay adımı yoktur (Onay Gerekmez) ve Hazırla elle basılır. Onay stok hareketinden önce gelir; Tamamla teslim alanı ve teslim alma tarihini yazar.\nTalepten Aktar (taslak transferde) transferle karşılanacak onaylı malzeme talebi kalemlerini ekler; Tamamla teslim edilen miktarı talep kalemine yazar.\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Hazırla stoğu kontrol eder ve yapılacak miktarı doldurur; Tamamla stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Tamamla'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri." + "Value": "İç Transferler — aynı deponun konumları arasında taşıma.\nNerede: Envanter › Operasyonlar › İç Transferler; ek sekme Onay ve Teslim.\nAlanlar: kontak, şube › depo › operasyon türü (yalnız iç transfer türleri), kaynak ve hedef konum (yalnız iç konumlar, birbirinden farklı), planlanan tarih, kaynak belge.\nSıra: satırlar girilir › Onayla › kaynak konumun depo sorumlusu Kaynak Depo Onayı verir › belge kendiliğinden hazırlanır (Hazır/Bekleyen) › lotlar seçilir › Doğrula. Sorumlusu olmayan konumda onay adımı yoktur (Onay Gerekmez) ve Yapılacak olarak işaretle elle basılır. Onay stok hareketinden önce gelir; Doğrula teslim alanı ve teslim alma tarihini yazar.\nTalepten Aktar (taslak transferde) transferle karşılanacak onaylı malzeme talebi kalemlerini ekler; Doğrula teslim edilen miktarı talep kalemine yazar.\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Yapılacak olarak işaretle stoğu kontrol eder ve yapılacak miktarı doldurur; Doğrula stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Doğrula'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri." }, { "Id": "7c613a76-67c4-5c0c-a419-2c86a69451da", @@ -96142,34 +95848,6 @@ "Key": "App.Listform.ListformField.SourceApproverUserNames", "Value": "SourceApproverUserNames" }, - { - "Id": "2a5069ee-d239-5038-a6ca-4478865dc461", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Inventory.Transfer.ImportRequests", - "Value": "Import from Requests" - }, - { - "Id": "e494a857-ad73-5eda-a82d-7c2a3a5d753a", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Inventory.Transfer.ImportRequests", - "Value": "Talepten Aktar" - }, - { - "Id": "0d4b7e72-787a-5779-9b0e-68b0f096a85e", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Inventory.Transfer.ImportRequestsInfo", - "Value": "Select the approved material request lines to be fulfilled by transfer and click Transfer Selected. Only requests of the document branch are listed." - }, - { - "Id": "16ca9a3f-231d-5242-9e79-a4574022bb87", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Inventory.Transfer.ImportRequestsInfo", - "Value": "Transferle karşılanacak onaylı malzeme talebi kalemlerini seçip Seçilenleri Aktar butonuna basın. Yalnız belgenin şubesindeki talepler listelenir." - }, { "Id": "e359487a-2cc2-55e0-b076-eb0e2931e383", "CultureName": "en", @@ -96217,14 +95895,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.TransferLine.Desc", - "Value": "Transfer Lines — product lines of receipts, deliveries and internal transfers.\nWhere: Operations tab of Inventory › Operations › Receipts, Deliveries and Internal Transfers.\nFields: product (unit comes from the product), description, demand, done quantity (filled by Mark as Ready, editable before Mark as Done), unit.\nRow buttons — shown only on lines of lot/serial tracked products: Details opens the lot/serial distribution (incoming lines type new numbers, outgoing lines select from the stock of the source location); Generate Lot/Serial (incoming lines of lot/serial tracked products, from the Inventory.LotNumber / Inventory.SerialNumber sequences) and Auto Assign (outgoing lines, first-in first-out from the source location). On lot/serial tracked lines the done quantity follows the total of the entered lots, and the Lots column lists them. Lines of done or cancelled documents cannot be changed." + "Value": "Transfer Lines — product lines of receipts, deliveries and internal transfers.\nWhere: Operations tab of Inventory › Operations › Receipts, Deliveries and Internal Transfers.\nFields: product (unit comes from the product), description, demand, done quantity (filled by Mark as To Do, editable before Validate), unit.\nRow buttons — shown only on lines of lot/serial tracked products: Details opens the lot/serial distribution (incoming lines type new numbers, outgoing lines select from the stock of the source location); Generate Lot/Serial (incoming lines of lot/serial tracked products, from the Inventory.LotNumber / Inventory.SerialNumber sequences) and Auto Assign (outgoing lines, first-in first-out from the source location). On lot/serial tracked lines the done quantity follows the total of the entered lots, and the Lots column lists them. Lines of done or cancelled documents cannot be changed." }, { "Id": "5dd858a1-e562-5fd9-adb7-e8406c90cf5d", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.TransferLine.Desc", - "Value": "Transfer Satırları — alım, teslimat ve iç transferlerin ürün satırları.\nNerede: Envanter › Operasyonlar › Alımlar, Teslimatlar ve İç Transferler ekranlarının Operasyonlar sekmesi.\nAlanlar: ürün (birim üründen gelir), açıklama, talep, yapılan miktar (Hazırla doldurur, Tamamla'dan önce değiştirilebilir), birim.\nSatır butonları — yalnız lot/seri takipli ürünün satırında görünür: Detaylar lot/seri dağılımını açar (giren satırda numara yazılır, çıkan satırda kaynak konumun stoğundan seçilir); Lot/Seri Oluştur (lot/seri takipli ürünün giriş satırı; Inventory.LotNumber / Inventory.SerialNumber numaratöründen) ve Otomatik Ata (çıkış satırı; kaynak konumdan ilk giren ilk çıkar). Lot/seri takipli satırda yapılan miktar girilen lotların toplamını izler; Lotlar kolonu seçilen lotları listeler. Tamamlanmış ya da iptal edilmiş belgenin satırı değiştirilemez." + "Value": "Transfer Satırları — alım, teslimat ve iç transferlerin ürün satırları.\nNerede: Envanter › Operasyonlar › Alımlar, Teslimatlar ve İç Transferler ekranlarının Operasyonlar sekmesi.\nAlanlar: ürün (birim üründen gelir), açıklama, talep, yapılan miktar (Yapılacak olarak işaretle doldurur, Doğrula'dan önce değiştirilebilir), birim.\nSatır butonları — yalnız lot/seri takipli ürünün satırında görünür: Detaylar lot/seri dağılımını açar (giren satırda numara yazılır, çıkan satırda kaynak konumun stoğundan seçilir); Lot/Seri Oluştur (lot/seri takipli ürünün giriş satırı; Inventory.LotNumber / Inventory.SerialNumber numaratöründen) ve Otomatik Ata (çıkış satırı; kaynak konumdan ilk giren ilk çıkar). Lot/seri takipli satırda yapılan miktar girilen lotların toplamını izler; Lotlar kolonu seçilen lotları listeler. Tamamlanmış ya da iptal edilmiş belgenin satırı değiştirilemez." }, { "Id": "ae8cdf0d-5895-5570-8d32-7d15e9f1dbeb", @@ -96310,20 +95988,6 @@ "Key": "App.Inventory.TransferLine.Details", "Value": "Detaylar" }, - { - "Id": "320f8877-e3c0-5b8f-9819-a4f3d144064e", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Inventory.TransferLineLot.Info", - "Value": "Type the lot/serial numbers of the incoming goods or use Generate Lot/Serial on the line. The total must equal the done quantity." - }, - { - "Id": "954f4768-44da-54d6-b58c-e5d63add860f", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Inventory.TransferLineLot.Info", - "Value": "Giren malın lot/seri numaraları yazılır ya da satırda Lot/Seri Oluştur kullanılır. Toplam, yapılan miktara eşit olmalıdır." - }, { "Id": "3bb5cc86-93e6-53d9-8f28-810d75249f8e", "CultureName": "en", @@ -96357,14 +96021,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.TransferLineLot.Desc", - "Value": "Lot/Serial Numbers — lot or serial numbers of an incoming line (receipt, return of a delivery), opened with the Details button of the line.\nFields: lot/serial number (a new number is typed; or use Generate Lot/Serial on the line), quantity in the line unit.\nThe total must equal the done quantity of the line before Mark as Done; a serial-tracked product needs one row of 1 per serial. Outgoing lines open Lots from Stock instead. Lots of done or cancelled documents cannot be changed." + "Value": "Lot/Serial Numbers — lot or serial numbers of an incoming line (receipt, return of a delivery), opened with the Details button of the line.\nFields: lot/serial number (a new number is typed; or use Generate Lot/Serial on the line), quantity in the line unit.\nThe total must equal the done quantity of the line before Validate; a serial-tracked product needs one row of 1 per serial. Outgoing lines open Lots from Stock instead. Lots of done or cancelled documents cannot be changed." }, { "Id": "a68fdfe0-64ae-5c25-87f4-ab183d624b79", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.TransferLineLot.Desc", - "Value": "Lot/Seri Numaraları — stoğa giren satırın (alım, teslimat iadesi) lot ya da seri numaraları; satırdaki Detaylar butonuyla açılır.\nAlanlar: lot/seri no (yeni numara yazılır ya da satırda Lot/Seri Oluştur kullanılır), miktar (satırın biriminde).\nTamamla'dan önce toplam satırın yapılan miktarına eşit olmalıdır; seri takipli üründe her seri 1 adetlik ayrı satırdır. Stoktan çıkan satır bunun yerine Stoktan Lot Seçimi'ni açar. Tamamlanmış ya da iptal edilmiş belgenin lotları değiştirilemez." + "Value": "Lot/Seri Numaraları — stoğa giren satırın (alım, teslimat iadesi) lot ya da seri numaraları; satırdaki Detaylar butonuyla açılır.\nAlanlar: lot/seri no (yeni numara yazılır ya da satırda Lot/Seri Oluştur kullanılır), miktar (satırın biriminde).\nDoğrula'dan önce toplam satırın yapılan miktarına eşit olmalıdır; seri takipli üründe her seri 1 adetlik ayrı satırdır. Stoktan çıkan satır bunun yerine Stoktan Lot Seçimi'ni açar. Tamamlanmış ya da iptal edilmiş belgenin lotları değiştirilemez." }, { "Id": "99136260-5535-5a4c-9025-13e5bf968e84", @@ -96399,28 +96063,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.TransferLineLotStock.Desc", - "Value": "Lots from Stock — every lot/serial in stock at the source location of an outgoing line (delivery, internal transfer, return of a receipt), opened with the Details button of the line.\nColumns: select, lot/serial number, in date, on hand (in the line unit), selected quantity, unit.\nTicking Select fills Selected Quantity with the quantity on hand; it can be lowered but not raised above the stock of the lot; unticking removes the lot. Changes are kept with Save Changes. Auto Assign on the line fills first-in first-out. The total must equal the done quantity before Mark as Done. Lots of done or cancelled documents cannot be changed." + "Value": "Lots from Stock — every lot/serial in stock at the source location of an outgoing line (delivery, internal transfer, return of a receipt), opened with the Details button of the line.\nColumns: select, lot/serial number, in date, on hand (in the line unit), selected quantity, unit.\nTicking Select fills Selected Quantity with the quantity on hand; it can be lowered but not raised above the stock of the lot; unticking removes the lot. Changes are kept with Save Changes. Auto Assign on the line fills first-in first-out. The total must equal the done quantity before Validate. Lots of done or cancelled documents cannot be changed." }, { "Id": "e0918550-aa62-5175-ab14-622078c01967", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.TransferLineLotStock.Desc", - "Value": "Stoktan Lot Seçimi — stoktan çıkan satırın (teslimat, iç transfer, alım iadesi) kaynak konumundaki bütün lot/seriler; satırdaki Detaylar butonuyla açılır.\nKolonlar: seç, lot/seri no, giriş tarihi, eldeki miktar (satırın biriminde), seçilen miktar, birim.\nSeç işaretlenince Seçilen Miktar eldeki miktarla dolar; azaltılabilir, lotun stoğunun üstüne çıkamaz; işaret kaldırılınca lot satırdan çıkar. Değişiklikler Değişiklikleri Kaydet ile yazılır. Satırdaki Otomatik Ata ilk giren ilk çıkar kuralıyla doldurur. Tamamla'dan önce toplam yapılan miktara eşit olmalıdır. Tamamlanmış ya da iptal edilmiş belgenin lotları değiştirilemez." - }, - { - "Id": "269239d7-b9fb-531a-99a4-440a7d2ebc39", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Inventory.TransferLineLotStock.Info", - "Value": "Tick the lots to deliver: Selected Quantity takes the quantity on hand and can be lowered. Save with Save Changes; the total must equal the done quantity." - }, - { - "Id": "58bd127c-2d79-510a-b85b-b5c3b3632e85", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Inventory.TransferLineLotStock.Info", - "Value": "Çıkacak lotları işaretleyin: Seçilen Miktar eldeki miktarla dolar, azaltılabilir. Değişiklikleri Kaydet ile yazın; toplam yapılan miktara eşit olmalıdır." + "Value": "Stoktan Lot Seçimi — stoktan çıkan satırın (teslimat, iç transfer, alım iadesi) kaynak konumundaki bütün lot/seriler; satırdaki Detaylar butonuyla açılır.\nKolonlar: seç, lot/seri no, giriş tarihi, eldeki miktar (satırın biriminde), seçilen miktar, birim.\nSeç işaretlenince Seçilen Miktar eldeki miktarla dolar; azaltılabilir, lotun stoğunun üstüne çıkamaz; işaret kaldırılınca lot satırdan çıkar. Değişiklikler Değişiklikleri Kaydet ile yazılır. Satırdaki Otomatik Ata ilk giren ilk çıkar kuralıyla doldurur. Doğrula'dan önce toplam yapılan miktara eşit olmalıdır. Tamamlanmış ya da iptal edilmiş belgenin lotları değiştirilemez." }, { "Id": "5d558c5a-10c4-5a6a-866e-33ad443b0dbb", @@ -96665,14 +96315,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.TransferApproval.Desc", - "Value": "Approval & Delivery — source warehouse approval and receipt of an internal transfer (Approval & Delivery tab of Internal Transfers; read only).\nFields: source warehouse approval (No Approval Needed when the source location has no responsible), approval user / date / description (written by the workflow), received by and receipt date (written by Mark as Done)." + "Value": "Approval & Delivery — source warehouse approval and receipt of an internal transfer (Approval & Delivery tab of Internal Transfers; read only).\nFields: source warehouse approval (No Approval Needed when the source location has no responsible), approval user / date / description (written by the workflow), received by and receipt date (written by Validate)." }, { "Id": "6e98e0c5-d9d7-5c2f-9137-f0c9c84efc43", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.TransferApproval.Desc", - "Value": "Onay ve Teslim — iç transferin kaynak depo onayı ve teslimi (İç Transferler'in Onay ve Teslim sekmesi; salt okunur).\nAlanlar: kaynak depo onayı (kaynak konumun sorumlusu yoksa Onay Gerekmez), onaylayan / onay tarihi / açıklaması (iş akışı yazar), teslim alan ve teslim alma tarihi (Tamamla yazar)." + "Value": "Onay ve Teslim — iç transferin kaynak depo onayı ve teslimi (İç Transferler'in Onay ve Teslim sekmesi; salt okunur).\nAlanlar: kaynak depo onayı (kaynak konumun sorumlusu yoksa Onay Gerekmez), onaylayan / onay tarihi / açıklaması (iş akışı yazar), teslim alan ve teslim alma tarihi (Doğrula yazar)." }, { "Id": "be937f76-123b-5b7e-9f33-805aac3c6d32", @@ -96688,48 +96338,6 @@ "Key": "App.Listform.ListformField.ReceivedByUserId", "Value": "Teslim Alan" }, - { - "Id": "b3cf45d1-fde2-501a-9915-a6ed0599fc16", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Inventory.TransferImportItem", - "Value": "Transfer Request Lines" - }, - { - "Id": "8cef4a4a-d483-5eae-8c8f-c3ba7522383d", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Inventory.TransferImportItem", - "Value": "Transfer Talep Kalemleri" - }, - { - "Id": "55d3ce88-7535-5891-9c63-46b321e5df86", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Inventory.TransferImportItem.Title", - "Value": "Transfer Request Lines" - }, - { - "Id": "75e02881-9584-5a68-8575-77a1b403579f", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Inventory.TransferImportItem.Title", - "Value": "Transfer Talep Kalemleri" - }, - { - "Id": "a9dfe48b-901b-561f-a7ca-d99dab7502a2", - "CultureName": "en", - "ResourceName": "Platform", - "Key": "App.Inventory.TransferImportItem.Desc", - "Value": "Transfer Request Lines — approved material request lines to be fulfilled by transfer, opened with Import from Requests of a draft internal transfer.\nOnly waiting lines of requests in the document branch that are not in another open transfer are listed; quantity is the remaining (requested − delivered) quantity.\nSelect lines and click Transfer Selected; the destination location of the transfer is taken from the request when empty." - }, - { - "Id": "2d1718bc-a21f-5d73-a157-eb2df3efb346", - "CultureName": "tr", - "ResourceName": "Platform", - "Key": "App.Inventory.TransferImportItem.Desc", - "Value": "Transfer Talep Kalemleri — transferle karşılanacak onaylı malzeme talebi kalemleri; taslak iç transferin Talepten Aktar butonuyla açılır.\nYalnız belgenin şubesindeki, başka açık transferde olmayan bekleyen kalemler listelenir; miktar kalan (talep − teslim) miktardır.\nSatırlar seçilip Seçilenleri Aktar'a basılır; transferin hedef konumu boşsa talebin konumu yazılır." - }, { "Id": "3205a926-a097-5b78-9f92-f657da8faa8f", "CultureName": "en", @@ -96889,14 +96497,14 @@ "CultureName": "en", "ResourceName": "Platform", "Key": "App.Inventory.Stock.Desc", - "Value": "Stock — on-hand quantity by branch › warehouse › location › product › lot, in the product unit (read only).\nWhere: Inventory › Stock. Only Mark as Done on a transfer changes it: incoming documents add to the destination location, outgoing ones deduct from the source location; external locations (vendors, customers) hold no stock.\nProducts without inventory tracking are not listed; quantity-tracked products have an empty lot. Use the Pivot view for warehouse × product totals. Related: Inventory › Product Moves." + "Value": "Stock — on-hand quantity by branch › warehouse › location › product › lot, in the product unit (read only).\nWhere: Inventory › Stock. Only Validate on a transfer changes it: incoming documents add to the destination location, outgoing ones deduct from the source location; external locations (vendors, customers) hold no stock.\nProducts without inventory tracking are not listed; quantity-tracked products have an empty lot. Use the Pivot view for warehouse × product totals. Related: Inventory › Product Moves." }, { "Id": "19eb7252-6715-5994-b311-9bf9be70ac2a", "CultureName": "tr", "ResourceName": "Platform", "Key": "App.Inventory.Stock.Desc", - "Value": "Stok — şube › depo › konum › ürün › lot bazında eldeki miktar, ürünün biriminde (salt okunur).\nNerede: Envanter › Stok. Yalnız transferin Tamamla işlemi değiştirir: giriş belgesi hedef konuma ekler, çıkış belgesi kaynak konumdan düşer; dış konumlar (tedarikçi, müşteri) stok tutmaz.\nEnvanter takibi kapalı ürün listelenmez; miktara göre takipli üründe lot boştur. Depo × ürün toplamı için Pivot görünümü kullanılır. İlişkili: Envanter › Ürün Hareketleri." + "Value": "Stok — şube › depo › konum › ürün › lot bazında eldeki miktar, ürünün biriminde (salt okunur).\nNerede: Envanter › Stok. Yalnız transferin Doğrula işlemi değiştirir: giriş belgesi hedef konuma ekler, çıkış belgesi kaynak konumdan düşer; dış konumlar (tedarikçi, müşteri) stok tutmaz.\nEnvanter takibi kapalı ürün listelenmez; miktara göre takipli üründe lot boştur. Depo × ürün toplamı için Pivot görünümü kullanılır. İlişkili: Envanter › Ürün Hareketleri." }, { "Id": "0d8c1ecf-ba1f-56cb-9530-bbbb92d0903e", @@ -97107,6 +96715,944 @@ "ResourceName": "Platform", "Key": "App.Listform.ListformField.ReceivedQuantity", "Value": "Alınan" + }, + { + "Id": "d87e1fe5-f9c5-58a3-a2b1-8f210a4f437e", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanStock", + "Value": "Warehouse Stocks" + }, + { + "Id": "2198e34c-2195-55cf-85a3-4dff67843259", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanStock", + "Value": "Depo Stokları" + }, + { + "Id": "4586a604-af18-58fd-bc1b-58d01f061462", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanStock.Title", + "Value": "Warehouse Stocks" + }, + { + "Id": "0bed0554-2c74-515f-98e6-b86cb2fa9903", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanStock.Title", + "Value": "Depo Stokları" + }, + { + "Id": "01a3f966-31ee-5492-85be-b4bd1be94dda", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanStock.Desc", + "Value": "Warehouse Stocks — the on-hand stock of the selected request line's product in every location, by lot.\nWhere: Purchasing › Requests › Planning › Warehouse Stocks tab (no menu of its own); filtered by the product of the row selected in Planning.\nFields: branch, warehouse, location, lot/serial number, quantity (total in the footer), unit, in date, last move.\nUsage: read-only; it shows where the product can be moved from before choosing Internal Transfer and a source location in Plan. Stock changes only through inventory operations (Inventory › Receipts, Deliveries, Internal Transfers)." + }, + { + "Id": "9cb52465-525b-506a-a818-6de625d05953", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanStock.Desc", + "Value": "Depo Stokları — Planlama'da seçili talep kaleminin ürününün bütün konumlardaki eldeki stoğu, lot bazında.\nNerede: Satınalma › Talepler › Planlama › Depo Stokları sekmesi (kendi menüsü yoktur); Planlama'da seçilen satırın ürününe süzülür.\nAlanlar: şube, depo, konum, lot/seri no, miktar (alt toplamı ile), birim, giriş tarihi, son hareket.\nKullanım: salt okunurdur; Planla'da İç Transfer kararı ve kaynak konum seçilmeden önce ürünün nereden taşınabileceğini gösterir. Stok yalnız envanter işlemleriyle değişir (Envanter › Alımlar, Teslimatlar, İç Transferler)." + }, + { + "Id": "b2294c15-8964-5559-a6a9-0ed45a42f4ba", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSupplier", + "Value": "Suppliers" + }, + { + "Id": "249e62b9-3c99-5ad2-a837-236e07fb0528", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSupplier", + "Value": "Tedarikçiler" + }, + { + "Id": "e90e5586-98f0-5b88-98e8-24924c7b663f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSupplier.Title", + "Value": "Product Suppliers" + }, + { + "Id": "09cc1220-c685-5bb5-bc17-beb663246c32", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSupplier.Title", + "Value": "Ürün Tedarikçileri" + }, + { + "Id": "21b3d997-90b7-5004-8a64-b155d8952eb3", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSupplier.Desc", + "Value": "Suppliers — the price list of the selected request line's product: which suppliers sell it, at what price and lead time.\nWhere: Purchasing › Requests › Planning › Suppliers tab (no menu of its own); filtered by the product of the row selected in Planning. The list is maintained in Inventory › Products › Purchasing tab.\nFields: supplier, min. quantity, unit, unit price, currency, lead time (days), last purchase date.\nUsage: read-only; it helps pick the Supplier in Plan. The supplier's price here is copied to the RFQ line opened by the Purchasing decision. Completing a receipt from a purchase order refreshes the price and the last purchase date." + }, + { + "Id": "3fa1cfb4-c40c-5bd7-aaa5-12fa48ea4527", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSupplier.Desc", + "Value": "Tedarikçiler — Planlama'da seçili talep kaleminin ürününün fiyat listesi: hangi tedarikçi, hangi fiyat ve teslim süresiyle satıyor.\nNerede: Satınalma › Talepler › Planlama › Tedarikçiler sekmesi (kendi menüsü yoktur); Planlama'da seçilen satırın ürününe süzülür. Liste Envanter › Ürünler › Satınalma sekmesinde tutulur.\nAlanlar: tedarikçi, min. miktar, birim, birim fiyat, para birimi, teslim süresi (gün), son alım tarihi.\nKullanım: salt okunurdur; Planla'da Tedarikçi seçimine yardım eder. Satınalma kararıyla açılan teklif kalemine tedarikçinin buradaki fiyatı yazılır. Siparişli alım tamamlanınca fiyat ve son alım tarihi kendiliğinden yenilenir." + }, + { + "Id": "7484b0ec-6b1e-5fc2-8ca8-81c1b8c98fbc", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.MinQuantity", + "Value": "Min. Quantity" + }, + { + "Id": "b1e5dfcf-3de7-5d78-91b0-0d30e0f4cbd3", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.MinQuantity", + "Value": "Min. Miktar" + }, + { + "Id": "28b87f3b-2211-51fc-b0ae-28c693056e51", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLastPurchase", + "Value": "Last Purchases" + }, + { + "Id": "57bf51d8-0aa5-53d5-b610-6284b96787bc", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLastPurchase", + "Value": "Son Alımlar" + }, + { + "Id": "d87cd012-36fc-5647-a88c-b01a339928d5", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLastPurchase.Title", + "Value": "Last Purchases" + }, + { + "Id": "2b7d7c52-8b1d-5b2e-88bc-3a62b6c07aeb", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLastPurchase.Title", + "Value": "Son Alımlar" + }, + { + "Id": "ec735b5d-80b0-5a23-8437-abeaa416e3ca", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLastPurchase.Desc", + "Value": "Last Purchases — the completed receipts of the selected request line's product (Inventory › Receipts), newest first.\nWhere: Purchasing › Requests › Planning › Last Purchases tab (no menu of its own); filtered by the product of the row selected in Planning. Only receipts put into stock with Validate are listed; receipts without an order are included, returns are not.\nFields: receipt date, slip no, supplier, quantity, unit, unit price, currency, amount (tax excluded), order no, warehouse, request no. Price, currency and order no are filled only for receipts opened from a purchase order.\nUsage: read-only; it shows from whom, when and at what price the product was last bought before deciding Purchasing and the supplier in Plan." + }, + { + "Id": "61a1093e-ce0b-5039-84b9-22f7d00e4668", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLastPurchase.Desc", + "Value": "Son Alımlar — Planlama'da seçili talep kaleminin ürününün tamamlanan alımları (Envanter › Alımlar), en yenisi üstte.\nNerede: Satınalma › Talepler › Planlama › Son Alımlar sekmesi (kendi menüsü yoktur); Planlama'da seçilen satırın ürününe süzülür. Yalnız Doğrula ile stoğa girmiş alımlar gelir; siparişsiz alım da listelenir, iadeler listelenmez.\nAlanlar: alım tarihi, fiş no, tedarikçi, miktar, birim, birim fiyat, para birimi, tutar (KDV hariç), sipariş no, depo, talep no. Fiyat, para birimi ve sipariş no yalnız siparişten açılan alımda dolar.\nKullanım: salt okunurdur; Planla'da Satınalma kararı ve tedarikçi seçilmeden önce ürünün en son kimden, ne zaman ve hangi fiyata alındığını gösterir." + }, + { + "Id": "e058b468-e692-5c86-a760-fb2caf862582", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PurchaseOrderNo", + "Value": "Order No" + }, + { + "Id": "383e3bb0-1911-561a-bd42-339713a27b49", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PurchaseOrderNo", + "Value": "Sipariş No" + }, + { + "Id": "180b84cd-e3a3-5121-8fe1-97ef047e4e60", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan", + "Value": "Pending Planning" + }, + { + "Id": "b82aeb3c-a21b-55ae-a403-6faea2272a21", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan", + "Value": "Planlama Bekleyenler" + }, + { + "Id": "ac655e2e-db33-5f08-996b-1b65212a70cd", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Title", + "Value": "Pending Planning" + }, + { + "Id": "7f198f67-dda6-5edc-a6f9-b3c5fba09cb1", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Title", + "Value": "Planlama Bekleyenler" + }, + { + "Id": "d5ff583d-60bc-5c2e-80d2-1f277991d644", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Desc", + "Value": "Planning — the purchasing team decides how each approved request line is fulfilled: bought (RFQ) or moved from stock (internal transfer).\nWhere: Purchasing › Requests › Planning, right below Awaiting Purchasing Approval. Waiting lines of approved requests with a quantity left to plan are listed; a line stays here until nothing is left.\nFields: request no, priority, department, branch, warehouse and destination location, product and category, requested quantity and unit, required date and due state (overdue / within 7 days / later), purchase share, transfer share, quantity to plan, draft plan (distributed but not confirmed), stock in all internal locations, request reason, requester, request date.\nDetail: selecting a row opens the product's Warehouse Stocks, Suppliers and Last Purchases tabs below the list.\nPlan (row button): opens the plan dialog (on the Internal Transfer tab when there is stock, otherwise Purchasing) — Internal Transfer (locations with stock: on hand, reserved, free) and Purchasing (suppliers: price, lead time, last purchase) tabs; Plan Quantity typed on any number of rows makes a draft Fulfilment Plan, so one line can be met by several methods. Confirm turns the draft into documents in one go: the line is added to the source location's draft internal transfer to the request's location (or a new one) and to the supplier's draft RFQ for the request's branch and warehouse (or a new one); the user who confirms becomes the purchasing responsible (RFQ buyer, transfer responsible); RFQ → order → receipt continues from there. A line fully covered by transfers with no purchase share closes. If an RFQ or transfer is cancelled or its row deleted, the quantity returns here.\nCards: lines to plan, overdue, within 7 days, draft planned.\nRelated: Awaiting Purchasing Approval, Plan Tracking, RFQs, Inventory › Internal Transfers." + }, + { + "Id": "5bbed5ad-f5dd-5cac-8c6c-1480f1cfacba", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Desc", + "Value": "Planlama — satınalma ekibi onaylanmış her talep kaleminin nasıl karşılanacağına karar verir: satın alınır (teklif talebi) ya da stoktan taşınır (iç transfer).\nNerede: Satınalma › Talepler › Planlama, Satınalma Onayı Bekleyenler'in hemen altında. Onaylanmış taleplerin Bekliyor durumundaki ve planlanacak miktarı kalan kalemleri listelenir; kalem, kalanı bitene kadar burada kalır.\nAlanlar: talep no, öncelik, departman, şube, depo ve hedef konum, ürün ve kategori, talep miktarı ve birim, termin tarihi ve termin durumu (geciken / 7 gün içinde / daha sonra), satınalma payı, transfer payı, planlanacak miktar, taslak plan (dağıtılmış ama onaylanmamış), bütün iç konumlardaki stok, talep nedeni, talep eden, talep tarihi.\nDetay: satır seçilince listenin altında ürünün Depo Stokları, Tedarikçiler ve Son Alımlar sekmeleri açılır.\nPlanla (satır butonu): plan diyaloğunu açar (stok varsa İç Transfer, yoksa Satınalma sekmesiyle) — İç Transfer (stoğu olan konumlar: eldeki, ayrılan, serbest) ve Satınalma (tedarikçiler: fiyat, teslim süresi, son alım) sekmeleri; istenen sayıda satıra yazılan Plan Miktarı taslak Karşılama Planı'nı oluşturur, böylece bir kalem birden çok yöntemle karşılanır. Onayla taslağı tek seferde belgeye çevirir: kalem kaynak konumdan talebin konumuna giden taslak iç transfere (yoksa yenisine) ve tedarikçinin talebin şubesi ve deposu için taslak teklif talebine (yoksa yenisine) eklenir; onaylayan kullanıcı satınalma sorumlusu olur (teklif talebinin alıcısı, transferin sorumlusu); teklif → sipariş → alım oradan sürer. Kalanın tamamı transferle karşılanan, satınalma payı olmayan kalem kapanır. Teklif ya da transfer iptal edilir veya satırı silinirse miktar buraya geri döner.\nKartlar: planlanacak kalem, geciken, 7 gün içinde, taslak planlı.\nİlişkili: Satınalma Onayı Bekleyenler, Plan Takibi, Teklif Talepleri, Envanter › İç Transferler." + }, + { + "Id": "e2bd5f2a-33bb-5e0f-9199-33174c926e7f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.StaticLookup.Overdue", + "Value": "Overdue" + }, + { + "Id": "3a4861e2-dad5-5085-87b7-302cfca59a76", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.StaticLookup.Overdue", + "Value": "Geciken" + }, + { + "Id": "86482852-b7f0-5514-82e6-12df37759372", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.StaticLookup.Within7Days", + "Value": "Within 7 days" + }, + { + "Id": "d6bb8680-363c-548b-934c-1032a71e8f67", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.StaticLookup.Within7Days", + "Value": "7 gün içinde" + }, + { + "Id": "25cf9fc8-e3d5-56b8-9954-bc9fc8674f69", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.StaticLookup.Later", + "Value": "Later" + }, + { + "Id": "45c0080f-82f0-5eb2-96e1-66bdadd0eea4", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.StaticLookup.Later", + "Value": "Daha sonra" + }, + { + "Id": "1604d6f8-76ae-57f8-8a10-871831303b0e", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.DueState", + "Value": "Due Status" + }, + { + "Id": "6093c8a2-2564-5686-a484-8b72faa84349", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.DueState", + "Value": "Termin Durumu" + }, + { + "Id": "8320160d-54a1-5526-97d2-951f6dadc88f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PurchaseQuantity", + "Value": "Purchase Share" + }, + { + "Id": "76e0f8cc-e314-58e4-aad9-cf252a60f828", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PurchaseQuantity", + "Value": "Satınalma Payı" + }, + { + "Id": "74d0ccd3-99a0-5e04-b3d7-8c31656b632a", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.TransferQuantity", + "Value": "Transfer Share" + }, + { + "Id": "5571a180-045f-50e7-85a4-1ee372338674", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.TransferQuantity", + "Value": "Transfer Payı" + }, + { + "Id": "a114794e-c402-51d5-891c-eebe1918a73a", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.RemainingQuantity", + "Value": "To Plan" + }, + { + "Id": "27386369-8419-568a-9d30-22207d168329", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.RemainingQuantity", + "Value": "Planlanacak" + }, + { + "Id": "a12b3854-c513-562b-ad9d-e1a1480e203d", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.StockQuantity", + "Value": "Stock" + }, + { + "Id": "288a305e-a1ff-534a-a10f-8bbee97cffda", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.StockQuantity", + "Value": "Stok" + }, + { + "Id": "1414ada0-7f18-552a-ab48-3a3d0f60dc5e", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PlanMethod", + "Value": "Decision" + }, + { + "Id": "8f0568fe-a6d6-5ef1-89f2-e4054023d69f", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PlanMethod", + "Value": "Karar" + }, + { + "Id": "27a8b563-4b37-53a0-976d-8bdd2b7e0710", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PlanQuantity", + "Value": "Plan Quantity" + }, + { + "Id": "e5bc7505-647b-51bc-9a3d-46b05eb2c0f0", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PlanQuantity", + "Value": "Plan Miktarı" + }, + { + "Id": "103be4a8-e7ae-5f68-812e-cd323246341c", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack", + "Value": "Planned Requests" + }, + { + "Id": "bc1821ea-82f8-54a2-b4e0-f2d7b936014b", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack", + "Value": "Planlanan Talepler" + }, + { + "Id": "7746a1f9-794a-59b4-9fe8-f6da98350d4c", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.Title", + "Value": "Planned Requests" + }, + { + "Id": "279cf598-282f-5ac8-927b-3bf5da1564e5", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.Title", + "Value": "Planlanan Talepler" + }, + { + "Id": "b6d24476-392a-5552-bda4-917a82e5b6d9", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.Desc", + "Value": "Plan Tracking — every decision made in Planning with the document it produced and how far it has progressed; each row is one decision.\nWhere: Purchasing › Requests › Plan Tracking. Purchasing rows are the request lines on RFQs (the root RFQ of a tender; copies on alternative suppliers are not repeated), transfer rows are internal transfer lines; returns are not listed.\nFields: plan date and purchasing responsible (the user who planned), request no, department, product, decision (Purchasing / Internal Transfer / From Stock), document no and status (RFQ: Draft / Sent / Converted / Cancelled; transfer: Draft / Waiting / Ready / Done / Cancelled), supplier (the winning supplier once ordered) or source location, destination location, order no and status, planned quantity, done quantity (received on the order or moved by the completed transfer), unit, required date, warehouse, branch.\nUsage: the list is read-only. Row buttons open the RFQ, the purchase order or the internal transfer on its detail page; Undo on a From Stock row reverses the fulfilment from stock: the quantity is taken off the line's delivered quantity, the line returns to Waiting and can be planned again in Planning. Purchasing and transfer decisions are undone on their document: cancelling the RFQ or the internal transfer, or deleting its line, returns the line to Planning.\nCards: total decisions, purchasing, internal transfer, completed.\nRelated: Planning, Requests for Quotation, Purchase Orders, Inventory › Internal Transfers." + }, + { + "Id": "eb2c2035-1e3a-554b-810d-6486c72d0398", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.Desc", + "Value": "Plan Takibi — Planlama'da verilen her karar, ürettiği belge ve belgenin geldiği aşamayla; her satır bir karardır.\nNerede: Satınalma › Talepler › Plan Takibi. Satınalma satırları teklif taleplerindeki talep kalemleridir (ihalenin kök teklif talebi; alternatif tedarikçilere kopyalanan satırlar tekrar listelenmez), transfer satırları iç transfer satırlarıdır, Stoktan satırları talebin teslim konumundaki stoktan belgesiz karşılanan miktardır; iade belgeleri listelenmez.\nAlanlar: plan tarihi ve satınalma sorumlusu (planlayan kullanıcı), talep no, departman, ürün, karar (Satınalma / İç Transfer / Stoktan), belge no ve durumu (teklif: Taslak / Gönderildi / Siparişe Dönüştü / İptal; transfer: Taslak / Bekleyen / Hazır / Tamamlandı / İptal), tedarikçi (siparişe dönüştüyse kazanan tedarikçi) ya da kaynak konum, hedef konum, sipariş no ve durumu, planlanan miktar, gerçekleşen (siparişte alınan ya da tamamlanan transferde taşınan), birim, termin tarihi, depo, şube.\nKullanım: liste salt okunurdur. Satırdaki butonlar teklif talebini, satınalma siparişini ya da iç transferi detay sayfasında açar; Stoktan satırındaki Geri Al stoktan karşılamayı geri alır: miktar kalemin teslim edilen miktarından düşer, kalem Bekliyor'a döner ve Planlama'da yeniden planlanır. Satınalma ve transfer kararı belgesinden geri alınır: teklif talebi ya da iç transfer iptal edilince ya da satırı silinince kalem Planlama'ya döner.\nKartlar: toplam karar, satınalma, iç transfer, tamamlanan.\nİlişkili: Planlama, Teklif Talepleri, Satınalma Siparişleri, Envanter › İç Transferler." + }, + { + "Id": "43e6afa9-b6ec-5e70-9afd-3f2d6b8b2db2", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.OpenRfq", + "Value": "RFQ" + }, + { + "Id": "4aace0df-5f52-5d7d-a1a5-c49814b782d0", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.OpenRfq", + "Value": "Teklif" + }, + { + "Id": "c45c9aca-087f-5d3a-9f60-0a41645d9457", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.OpenOrder", + "Value": "Order" + }, + { + "Id": "6022651f-f74b-5b7c-9647-486b9975c859", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.OpenOrder", + "Value": "Sipariş" + }, + { + "Id": "6661303e-66cc-5872-b84d-6b57f4a23547", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.OpenTransfer", + "Value": "Transfer" + }, + { + "Id": "f8d4af36-de1f-56a9-89d0-69571a459124", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.OpenTransfer", + "Value": "Transfer" + }, + { + "Id": "775065b8-5546-5bcc-92d2-9cb771535f8e", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.DocumentId", + "Value": "Document" + }, + { + "Id": "52918b16-511c-5091-b7d3-11e23f9d8738", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.DocumentId", + "Value": "Belge" + }, + { + "Id": "9fb49c82-7478-5095-9f02-eaeacc609e40", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PlanDate", + "Value": "Plan Date" + }, + { + "Id": "35aeafc6-3418-59f2-8093-57e5acfa5233", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.PlanDate", + "Value": "Plan Tarihi" + }, + { + "Id": "c7de9040-d5b9-5927-9dfe-88c7d5779142", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.OrderStatus", + "Value": "Order Status" + }, + { + "Id": "26b1b6d8-1f75-56c0-a8e7-7e0e97bc567c", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.OrderStatus", + "Value": "Sipariş Durumu" + }, + { + "Id": "c2876034-bfbe-5e4f-a4f3-6db5ee63a01b", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.DoneQuantity", + "Value": "Done" + }, + { + "Id": "7efa495c-6d85-5749-b56c-7653d98c7cae", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.DoneQuantity", + "Value": "Gerçekleşen" + }, + { + "Id": "8b9c0f0b-9e75-57e5-9f17-7c98a622e79f", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LastPurchaseDate", + "Value": "Last Purchase Date" + }, + { + "Id": "cf9a4bc5-cc83-593f-9392-3495fbf9af5c", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.LastPurchaseDate", + "Value": "Son Alım Tarihi" + }, + { + "Id": "5605fb27-a057-5b7c-aab4-6a20679f9a87", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.ReceiptDate", + "Value": "Receipt Date" + }, + { + "Id": "53f3cd4c-573c-5c49-a1a0-42286de72aee", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.ReceiptDate", + "Value": "Alım Tarihi" + }, + { + "Id": "6355e482-22c3-5621-b625-59b1d4f4fe57", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.FreeQuantity", + "Value": "Free Quantity" + }, + { + "Id": "b85de32c-7ec8-5787-b755-e0821822cb4c", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.FreeQuantity", + "Value": "Serbest Miktar" + }, + { + "Id": "b1dc2127-99c3-51a5-a9f6-3c782c33c4ac", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.RfqQuantity", + "Value": "Quantity in RFQ" + }, + { + "Id": "70fe7446-75e0-59e9-9bd6-b7b4a6ef2e88", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.RfqQuantity", + "Value": "Teklifteki Miktar" + }, + { + "Id": "ede9b999-f42e-568c-a767-ff0116d0b6e3", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.DraftQuantity", + "Value": "Draft Plan" + }, + { + "Id": "1b185be4-008a-5777-8bdd-9a50ec08e06b", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.DraftQuantity", + "Value": "Taslak Plan" + }, + { + "Id": "6a146792-56b4-5c57-80fa-3445a2c65832", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSource", + "Value": "Internal Transfer" + }, + { + "Id": "d222dfb8-add8-57d5-86a3-1c166435a2c6", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSource", + "Value": "İç Transfer" + }, + { + "Id": "85f9b24e-8bb8-5240-9470-eadf43635678", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSource.Title", + "Value": "Internal Transfer" + }, + { + "Id": "8c79962f-7e2b-516a-80f0-1a99e3f2f9be", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSource.Title", + "Value": "İç Transfer" + }, + { + "Id": "91427d51-1e90-5a85-8757-c683078c0680", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSource.Desc", + "Value": "Internal Transfer — the Internal Transfer tab of the Plan dialog: internal locations holding stock of the line's product.\nWhere: Purchasing › Material Requests › Planning › Plan button (no menu of its own); filtered by the line being planned. The request's own delivery location is listed too and ticked as Delivery Location.\nFields: branch, warehouse, location, delivery location, on hand, reserved (requested from that location by open internal transfers), free (on hand − reserved), max (upper limit for the row), plan quantity, unit — all in the line's unit.\nUsage: type into the highlighted Plan Quantity cell (saved when leaving the cell), press Plan All (takes Max) or select rows and press Plan Selected (each row takes its Max in turn) on one or more locations; the quantities go to the Fulfilment Plan as a draft (0 removes the row). A row cannot exceed its free stock, the draft total cannot exceed the remaining quantity. Confirm in the dialog creates the internal transfers; a quantity on the delivery location opens no transfer — it is fulfilled from stock and closes the line when nothing is left to plan and nothing is being purchased." + }, + { + "Id": "c5a496f4-2dfb-5067-ab90-1771eab3cf02", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanSource.Desc", + "Value": "İç Transfer — Planla diyaloğunun İç Transfer sekmesi: talep kaleminin ürününün stoğu olan iç konumlar.\nNerede: Satınalma › Talepler › Planlama › Planla butonu (kendi menüsü yoktur); planlanan kaleme süzülür. Talebin kendi teslim konumu da listelenir, Teslim Konumu işaretiyle.\nAlanlar: şube, depo, konum, teslim konumu, eldeki, ayrılan (açık iç transferlerde o konumdan istenen), serbest (eldeki − ayrılan), en fazla (satıra yazılabilecek üst sınır), plan miktarı, birim — hepsi kalemin biriminde.\nKullanım: bir ya da birkaç konumun vurgulu Plan Miktarı hücresine miktar yazılır (hücreden çıkınca kaydedilir), satırdaki Tümünü Planla ile En Fazla değeri atanır ya da satırlar seçilip Seçilenleri Planla ile her birine sırayla En Fazla yazılır; miktarlar taslak olarak Karşılama Planı'na geçer (0 satırı çıkarır). Satır serbest stoğu, taslak toplamı planlanacak kalanı aşamaz. Diyalogdaki Onayla iç transferleri oluşturur; teslim konumuna yazılan miktar transfer açmaz, stoktan karşılanır ve planlanacak kalanı kalmayan, satınalma payı olmayan kalemi kapatır." + }, + { + "Id": "5cbff28f-1336-5777-8a29-7593c54123cc", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanVendor", + "Value": "Purchasing" + }, + { + "Id": "e72bf464-fb06-5ea8-96d9-0ca71c12e941", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanVendor", + "Value": "Satınalma" + }, + { + "Id": "53480b64-8d76-5eaa-9977-8d1781fcfa03", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanVendor.Title", + "Value": "Purchasing" + }, + { + "Id": "7f48573c-d3c5-541e-86b3-1ff028da965d", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanVendor.Title", + "Value": "Satınalma" + }, + { + "Id": "08d0da7b-574b-5a86-bfc5-51aeebe6ad7a", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanVendor.Desc", + "Value": "Purchasing — the Purchasing tab of the Plan dialog: every active contact; suppliers on the product's price list come first with their price, the others follow without a price.\nWhere: Purchasing › Material Requests › Planning › Plan button (no menu of its own); filtered by the line being planned. Price lists are kept in Inventory › Products › Purchase tab.\nFields: supplier, unit price and currency (the row with the lowest minimum quantity — the price written to the RFQ line), min. quantity, unit, lead time, last purchase date, max (upper limit for the row), plan quantity and the supplier's draft RFQ carrying this line (RFQ no, quantity on the RFQ).\nUsage: type into the highlighted Plan Quantity cell (saved when leaving the cell), press Plan All (takes Max) or select rows and press Plan Selected (each row takes its Max in turn) on one or more suppliers; the quantities go to the Fulfilment Plan as a draft (0 removes the row). Confirm in the dialog adds the line to the supplier's open draft RFQ for the request's branch and warehouse or opens a new one (price 0 when the supplier has no price list row); the RFQ button opens the RFQ in a new tab." + }, + { + "Id": "18beac98-4daf-5b1e-acdf-3dfe4b3eb898", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanVendor.Desc", + "Value": "Satınalma — Planla diyaloğunun Satınalma sekmesi: bütün aktif kontaklar; ürünün fiyat listesindeki tedarikçiler fiyatıyla önce, diğerleri fiyatsız sonra gelir.\nNerede: Satınalma › Talepler › Planlama › Planla butonu (kendi menüsü yoktur); planlanan kaleme süzülür. Fiyat listesi Envanter › Ürünler › Satınalma sekmesinde tutulur.\nAlanlar: tedarikçi, birim fiyat ve para birimi (en düşük minimum miktarlı satır — teklif kalemine yazılan fiyat), min. miktar, birim, teslim süresi, son alım tarihi, en fazla (satıra yazılabilecek üst sınır), plan miktarı ve tedarikçinin bu kalemi taşıyan taslak teklif talebi (teklif talep no, teklifteki miktar).\nKullanım: bir ya da birkaç tedarikçinin vurgulu Plan Miktarı hücresine miktar yazılır (hücreden çıkınca kaydedilir), satırdaki Tümünü Planla ile En Fazla değeri atanır ya da satırlar seçilip Seçilenleri Planla ile her birine sırayla En Fazla yazılır; miktarlar taslak olarak Karşılama Planı'na geçer (0 satırı çıkarır). Diyalogdaki Onayla kalemi tedarikçinin talebin şubesi ve deposu için açık taslak teklif talebine ekler ya da yenisini açar (fiyat listesinde satırı olmayan tedarikçide fiyat 0); Teklif butonu teklif talebini yeni sekmede açar." + }, + { + "Id": "ba3be0f6-569b-5643-8d03-cdc0be397acc", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLine", + "Value": "Fulfilment Plan" + }, + { + "Id": "85d2debc-0878-5fdb-bbef-8144e14560f5", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLine", + "Value": "Karşılama Planı" + }, + { + "Id": "1d957cfe-91bc-5c82-af58-425dd4efb138", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLine.Title", + "Value": "Fulfilment Plan" + }, + { + "Id": "dacb3a48-4686-598b-8191-6316b5df81c6", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLine.Title", + "Value": "Karşılama Planı" + }, + { + "Id": "9886c7f9-1c75-5e28-a1bf-2f49001f62cd", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLine.Desc", + "Value": "Fulfilment Plan — the draft distribution of the line in the Plan dialog, waiting for Confirm.\nWhere: Purchasing › Requests › Planning › Plan button, below the Internal Transfer and Purchasing tabs (no menu of its own); filtered by the line being planned.\nFields: decision (internal transfer / from stock / purchasing), supplier or source location, quantity and unit, unit price and currency for purchasing (the price the RFQ line will get).\nUsage: rows are written from the Plan Quantity of the two tabs; a row can be deleted here (applied at once); Reset Draft in the dialog clears the whole draft. Confirm turns every row into a document in one go (internal transfers first, then fulfilment from stock, then RFQs) and empties the plan; if a row is rejected (stock, remaining quantity, operation type) no document is created and the draft stays. The draft total is shown in Planning as Draft Plan." + }, + { + "Id": "e970b541-a224-5fe5-aa3a-5fdfca725385", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanLine.Desc", + "Value": "Karşılama Planı — kalemin Planla diyaloğundaki, onay bekleyen taslak dağıtımı.\nNerede: Satınalma › Talepler › Planlama › Planla butonu, İç Transfer ve Satınalma sekmelerinin altında (kendi menüsü yoktur); planlanan kaleme süzülür.\nAlanlar: karar (iç transfer / stoktan / satınalma), tedarikçi ya da kaynak konum, miktar ve birim, satınalmada birim fiyat ve para birimi (teklif kalemine yazılacak fiyat).\nKullanım: satırlar iki sekmenin Plan Miktarı'ndan yazılır; burada satır silinebilir (silme hemen uygulanır), diyalogdaki Taslağı Sıfırla bütün taslağı siler. Onayla bütün satırları tek seferde belgeye çevirir (önce iç transferler, sonra stoktan karşılama, en son teklif talepleri) ve planı boşaltır; bir satır reddedilirse (stok, kalan, operasyon türü) hiçbir belge açılmaz, taslak yerinde kalır. Taslak toplamı Planlama'da Taslak Plan kolonunda görünür." + }, + { + "Id": "4545d7aa-f424-5115-9ae2-59b8f40b6e6c", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Plan", + "Value": "Plan" + }, + { + "Id": "5ad927f5-60d5-5bb4-b793-43c12e430083", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Plan", + "Value": "Planla" + }, + { + "Id": "97b9a931-58fb-51ce-92a9-1c44ccbe8d32", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Info", + "Value": "1) Suggest builds the plan for you: stock first (the delivery location, then the location with the most free stock), the rest as purchasing from the best supplier (lowest price, else the latest purchase); Suggest & Confirm also confirms it at once. Nothing is planned until you press a button. 2) To change it, type into the highlighted Plan Quantity cell (saved when you leave the cell), press Plan All on a row, or select rows and press Plan Selected; each row takes the most it allows (Max). Stock on the request's own delivery location is fulfilled from stock without a transfer. 3) Check the Fulfilment Plan below (a row can be deleted there) and press Confirm: internal transfers and RFQs are created." + }, + { + "Id": "e1f4b24a-b3ce-54d3-a43c-04bc28916b9a", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Info", + "Value": "1) Öner planı sizin için kurar: önce stok (talebin teslim konumu, sonra serbest stoğu en çok olan konum), kalan kısım en uygun tedarikçiden (en düşük fiyat, fiyat yoksa en son alım) satınalma; Öner ve Onayla bunu hemen onaylar. Siz bir butona basmadan hiçbir şey planlanmaz. 2) Değiştirmek için vurgulu Plan Miktarı hücresine yazın (hücreden çıkınca kaydedilir), satırdaki Tümünü Planla'ya basın ya da satırları seçip Seçilenleri Planla'ya basın; her satır alabileceği en fazla miktarı (En Fazla) alır. Talebin kendi teslim konumundaki stok transfer açmadan stoktan karşılanır. 3) Alttaki Karşılama Planı'nı kontrol edin (satır oradan silinebilir) ve Onayla'ya basın: iç transferler ve teklif talepleri oluşur." + }, + { + "Id": "3919694f-1c14-54da-9de9-825d4502c4eb", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Confirmed", + "Value": "Plan confirmed; the internal transfers and RFQs were created." + }, + { + "Id": "de6cec97-bd47-5e7e-a676-2870a4af8a04", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Confirmed", + "Value": "Plan onaylandı; iç transferler ve teklif talepleri oluşturuldu." + }, + { + "Id": "04f377c6-b53d-5cc9-bd1d-e20808d7a2d3", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Widget.Draft", + "Value": "Draft Planned" + }, + { + "Id": "833e90a7-023b-5f79-b052-baa0d1d351af", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Widget.Draft", + "Value": "Taslak Planlı" + }, + { + "Id": "819aa442-ea05-58af-af98-ba622cc4f7fe", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IsDestination", + "Value": "Delivery Location" + }, + { + "Id": "776fe35a-f443-5cc3-a24b-98c0495c28fe", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.IsDestination", + "Value": "Teslim Konumu" + }, + { + "Id": "55d80014-3ff5-59b7-b719-151bd2d8479c", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.StaticLookup.FromStock", + "Value": "From Stock" + }, + { + "Id": "5870fbcf-9a36-5c66-a2f0-e2d4327ebc12", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.StaticLookup.FromStock", + "Value": "Stoktan" + }, + { + "Id": "50f77387-5310-5ed3-89d8-7904ce51290a", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.MaxQuantity", + "Value": "Max" + }, + { + "Id": "d74934fa-b7e3-5ec4-9848-461a34aa1c03", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Listform.ListformField.MaxQuantity", + "Value": "En Fazla" + }, + { + "Id": "dcc67341-0018-58bc-896a-bccf4a812ba1", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.PlanQuantityMax", + "Value": "Plan Quantity cannot exceed Max (remaining quantity less the other draft rows; on Internal Transfer also free stock)." + }, + { + "Id": "3a874f73-aca1-5404-9fda-c90720911f06", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.PlanQuantityMax", + "Value": "Plan Miktarı En Fazla değerini aşamaz (planlanacak kalandan diğer taslak satırlar düşülür; İç Transfer'de serbest stok da sınırdır)." + }, + { + "Id": "9fd399f3-6f92-51d6-b193-2973480ce3e0", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.TakeMax", + "Value": "Plan All" + }, + { + "Id": "1dc9ad68-b979-536b-8169-e58d839dc665", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.TakeMax", + "Value": "Tümünü Planla" + }, + { + "Id": "bc3ea62c-0946-54e0-9195-aad7ed08ab46", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Suggest", + "Value": "Suggest" + }, + { + "Id": "01dbae08-455e-59e0-877b-8e0ffb67fd03", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.Suggest", + "Value": "Öner" + }, + { + "Id": "3b256d26-c8dd-54ee-8c83-ff492b5ddf9a", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.PlanSelected", + "Value": "Plan Selected" + }, + { + "Id": "45d71a81-16f6-502c-84e3-ad7dbe49e0f4", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.PlanSelected", + "Value": "Seçilenleri Planla" + }, + { + "Id": "a69e9ae5-a374-599c-8e68-0e2199343558", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.SuggestConfirm", + "Value": "Suggest & Confirm" + }, + { + "Id": "e872c054-d2e2-5230-9f42-ff6a831916d8", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.SuggestConfirm", + "Value": "Öner ve Onayla" + }, + { + "Id": "8e548f50-f679-5bd8-94fd-08a15ba723e8", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.ResetDraft", + "Value": "Reset Draft" + }, + { + "Id": "8ac49e17-138b-5f4a-b338-48d39352bbcd", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlan.ResetDraft", + "Value": "Taslağı Sıfırla" + }, + { + "Id": "8a88703a-5c0e-5fb8-897b-82c90c8c7187", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.UndoStock", + "Value": "Undo" + }, + { + "Id": "5f8de940-b6cd-5435-a2f9-a562aaf345a4", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.UndoStock", + "Value": "Geri Al" + }, + { + "Id": "a580aef2-8fa8-57a8-b00b-2eb05eb3d1d2", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.UndoStockConfirm", + "Value": "Undo this fulfilment from stock? The quantity returns to the line and it can be planned again in Planning." + }, + { + "Id": "b271da70-3bc4-57c1-95d1-f1101e7b836f", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "App.Prc.MaterialRequestPlanTrack.UndoStockConfirm", + "Value": "Bu stoktan karşılama geri alınsın mı? Miktar kaleme geri döner ve Planlama ekranında yeniden planlanabilir." + }, + { + "Id": "cbb23672-79f1-5c44-9402-07540e538f13", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.DefaultWarehouse", + "Value": "Default Warehouse" + }, + { + "Id": "2af67426-6763-5e6b-9893-abb6f03e6d3e", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.DefaultWarehouse", + "Value": "Varsayılan Depo" + }, + { + "Id": "6cd56baf-53bc-5ab4-a9bb-29073501697c", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.DefaultLocation", + "Value": "Default Location" + }, + { + "Id": "1bff7855-6c77-5558-b5a8-691fb613b51c", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.DefaultLocation", + "Value": "Varsayılan Konum" + }, + { + "Id": "bbbae114-e09a-5ea6-b42c-16c13faf3611", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.BranchDefaultWarehouseRequired", + "Value": "Select a default warehouse of branch {0}." + }, + { + "Id": "c90fef2a-f027-50c8-acf5-e90dd9217dd3", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.BranchDefaultWarehouseRequired", + "Value": "{0} şubesi için şubeye ait bir varsayılan depo seçin." + }, + { + "Id": "ef325293-ae97-5dd5-a515-404941bf9bfe", + "CultureName": "en", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.BranchDefaultLocationRequired", + "Value": "Select a default location of the chosen warehouse for branch {0}." + }, + { + "Id": "ff65eaa3-0925-53e5-be43-d54893e2b908", + "CultureName": "tr", + "ResourceName": "Platform", + "Key": "Abp.Identity.User.BranchDefaultLocationRequired", + "Value": "{0} şubesi için seçilen depoya ait bir varsayılan konum seçin." } ] } diff --git a/configs/seeds/data/App.Menus.Menu.json b/configs/seeds/data/App.Menus.Menu.json index 1577ff9a..303c21d8 100644 --- a/configs/seeds/data/App.Menus.Menu.json +++ b/configs/seeds/data/App.Menus.Menu.json @@ -2914,11 +2914,41 @@ "ElementId": null, "ModuleId": "Prc" }, + { + "Id": "e52aac2e-1bdb-5493-8bf8-9174fe4984a1", + "Code": "App.Prc.MaterialRequestPlan", + "DisplayName": "App.Prc.MaterialRequestPlan", + "Order": 4, + "Url": "/admin/list/App.Prc.MaterialRequestPlan", + "Icon": "FcPlanner", + "ParentCode": "App.Prc.MaterialRequests", + "RequiredPermissionName": "App.Prc.MaterialRequestPlan", + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Prc" + }, + { + "Id": "78a00bdb-1403-55a7-8971-b1d198c58889", + "Code": "App.Prc.MaterialRequestPlanTrack", + "DisplayName": "App.Prc.MaterialRequestPlanTrack", + "Order": 5, + "Url": "/admin/list/App.Prc.MaterialRequestPlanTrack", + "Icon": "FcInspection", + "ParentCode": "App.Prc.MaterialRequests", + "RequiredPermissionName": "App.Prc.MaterialRequestPlanTrack", + "CssClass": null, + "Target": null, + "IsDisabled": false, + "ElementId": null, + "ModuleId": "Prc" + }, { "Id": "99ab4ed0-b594-4492-817e-a091fb7c3080", "Code": "App.Prc.MaterialRequest", "DisplayName": "App.Prc.MaterialRequest", - "Order": 4, + "Order": 6, "Url": "/admin/list/App.Prc.MaterialRequest", "Icon": "FcDocument", "ParentCode": "App.Prc.MaterialRequests", diff --git a/configs/seeds/docs/modules/App.Inventory.md b/configs/seeds/docs/modules/App.Inventory.md index 5f927d9d..b12da112 100644 --- a/configs/seeds/docs/modules/App.Inventory.md +++ b/configs/seeds/docs/modules/App.Inventory.md @@ -58,7 +58,7 @@ Tüm tablolar kiracı + tam audit + soft delete, anahtar `Id uniqueidentifier`. | `Inv_T_Attribute` / `Inv_T_AttributeValue` | Nitelik (görünüm türü, varyant oluşturma) ve değerleri (serbest metin, ekstra fiyat, renk, sıra) | | `Inv_T_Product` | Ürün kartı ve Genel Bilgi/Stok/Muhasebe sekmelerinin alanları | | `Inv_T_ProductAttributeLine` | Ürün × nitelik, `ValueIds` (`|` ayrımlı değer Id) | -| `Inv_T_ProductSupplier` | Tedarikçi, min. miktar, birim, fiyat, kur, teslim süresi, varyant | +| `Inv_T_ProductSupplier` | Tedarikçi, min. miktar, birim, fiyat, kur, teslim süresi, varyant, son alım tarihi (siparişli alımın Doğrula'sı yazar) | | `Inv_T_Bom` / `Inv_T_BomComponent` / `Inv_T_BomOperation` | Reçete başlığı (ürün, varyant, miktar, birim, planlama), bileşenler (operasyona bağlanabilir), operasyonlar (iş merkezi `Prd_T_WorkCenter`, operasyon `Prd_T_Operation`, süre) | | `Inv_T_Warehouse` | Şube, kod (kiracı içinde tekil, 16), ad, aktif | | `Inv_T_Location` | Şube, depo, üst konum, kod (32), ad, konum türü (`Internal`/`External`), departman (`Hr_T_Department`), depo sorumlusu, aktif | @@ -127,14 +127,14 @@ Depoya giren, depodan çıkan ve depo içinde taşınan malların belgeleri: Al Onaylanan analiz (talep "Envanter giriş ve çıkışları"): - Bütün operasyon türleri tek veri kaynağındadır: başlık `Inv_T_Transfer`, satır `Inv_T_TransferLine`, lot dağılımı `Inv_T_TransferLineLot`; tür `OperationKind` kolonuyla ayrılır. Her tür kendi ekranında (aynı tablo, `DefaultFilter` ile) yönetilir. -- Stok bakiyesi ayrı tablodadır (`Inv_T_Stock`, kullanıcı kararı): yalnız Tamamla yordamı yazar. -- Stok yetmezse belge Bekleyen kalır, Tamamla yapılamaz (negatif stok yok). Rezervasyon yoktur; Tamamla stoğu yeniden kontrol eder. +- Stok bakiyesi ayrı tablodadır (`Inv_T_Stock`, kullanıcı kararı): yalnız Doğrula yordamı yazar. +- Stok yetmezse belge Bekleyen kalır, Doğrula yapılamaz (negatif stok yok). Rezervasyon yoktur; Doğrula stoğu yeniden kontrol eder. - Kısmi işlemde kalan, aynı türde yeni belgeye (backorder) geçer. - Ek kapsam: İade, iç transferde kaynak depo onayı ve teslim, malzeme talebinden iç transfer, transfer fişi yazdırma. - Belge numarası operasyon türünün numaratöründen gelir: `Inv_T_OperationType.SequencePrefix` kaldırıldı, yerine `SequenceName` (Diziler) geldi; demo operasyon türleri için `Inventory.IKT.*` numaratörleri eklendi. - Lot/seri bu turdadır: hareket satırında Detaylar butonu lot dağılımını açar; çıkışta lot stoktan gelir, girişte yazılır; Lot/Seri Oluştur ve Otomatik Ata yardımcı butonlardır. - Giriş ve çıkışın lot ekranı ayrıdır (kullanıcı kararı): stoğa giren satır (alım, teslimat iadesi) **Lot/Seri Numaraları**'nı açar, numara serbest yazılır; stoktan çıkan satır (teslimat, iç transfer, alım iadesi) **Stoktan Lot Seçimi**'ni açar: kaynak konumdaki bütün lotlar eldeki miktarıyla listelenir, Seç işaretlenince Seçilen Miktar eldeki miktarla dolar (EditorScript), azaltılabilir ama eldeki miktarı aşamaz; Değişiklikleri Kaydet ile yazılır (kullanıcı kararı: 100 lotu tek tek yazmak yerine işaretleyerek seçmek). Ayrım belgenin kaynak konumundan gelir (iç konum = stoktan) ve satırın `LotFromStock` kolonunda durur; Lot/Seri Oluştur yalnız giren, Otomatik Ata yalnız çıkan satırda görünür. -- Lot/seri takipli satırda lot girilmişse yapılan miktar lot toplamıdır (kullanıcı kararı: lot seçmek o kadar teslim etmektir); Recalc miktarı lotlardan yazar ve seçilen lotları satırın Lotlar kolonunda (Açıklama'nın sağı) listeler. Tamamlanmış/iptal belgenin miktarına dokunulmaz. Tamamla'nın eşitlik hatası iki miktarı da yazar. +- Lot/seri takipli satırda lot girilmişse yapılan miktar lot toplamıdır (kullanıcı kararı: lot seçmek o kadar teslim etmektir); Recalc miktarı lotlardan yazar ve seçilen lotları satırın Lotlar kolonunda (Açıklama'nın sağı) listeler. Tamamlanmış/iptal belgenin miktarına dokunulmaz. Doğrula'nın eşitlik hatası iki miktarı da yazar. - Ek Bilgi: nakliye bilgileri, sorumlu, proje; ayrı Not sekmesi. Ürün Teslimat Politikası yalnız Teslimatlar'dadır. - Ürünün Envanter Takibi ve Takip Yöntemi belirleyicidir: takip kapalı ürün stoğa hiç işlenmez ve stok kontrolüne girmez; `Lot`/`Serial` üründe lot dağılımı zorunludur; `Quantity` üründe lot boş tutulur. @@ -143,11 +143,12 @@ Onaylanan analiz (talep "Envanter giriş ve çıkışları"): - Stok konum türüne göre işlenir: kaynak konum `Internal` ise stoktan düşer, hedef konum `Internal` ise stoğa eklenir. Tedarikçiler/Müşteriler gibi dış (`External`) konumlar stok tutmaz; alım türünün kaynağı ve teslimat türünün hedefi dış konumdur. Demo veride IKT deposuna "Tedarikçiler" ve "Müşteriler" dış konumları eklendi. - Formda gösterilmeyen konum (alımın kaynağı, teslimatın hedefi) kayıtta her zaman operasyon türünden yazılır (iade belgesi hariç). - İç transfer onaycısı kaynak konumun depo sorumlusudur (`Inv_T_Location.ResponsibleUserName`, kullanıcı adı — iş akışı onaycıyı adla eşlediği için Guid tutulmaz (kullanıcı kararı); kayıt sonrası `SourceApproverUserNames`'e kullanıcı adı yazılır). Sorumlu yoksa `ApprovalStatus` "Onay Gerekmez" olur ve akış beklenmez. Ekranda belge durumu (`Status`) ile onay durumu (`ApprovalStatus`) birlikte bulunur: tablo bütün türler için ortak olduğundan durum akış düğümü değil belge yaşam döngüsüdür (standing default 24'ten bilinçli sapma). -- Teslim Alan / Teslim Alma Tarihi iç transferin Tamamla işleminde yazılır (Tamamla'ya basan kullanıcı). +- Teslim Alan / Teslim Alma Tarihi iç transferin Doğrula işleminde yazılır (Doğrula'ya basan kullanıcı). - Birim çevrimi `Inv_F_UomConvert` ile (Adm_T_Uom Type + Ratio, aynı kategori); stok ürünün biriminde, lot miktarı satırın biriminde tutulur. - Transfer Fişi rapor şablonu (Raporlar kategorisi) satırları belgenin `LineSummary` kolonundan basar: DynamicReport yalnız kaydın alanlarını yer tutucu olarak doldurduğu için satır özeti başlıkta tutulur (`Inv_P_TransferRecalc`). - Durum butonları satınalmadaki kalıpla çalışır: işlem gizli `PendingAction` alanına yazılır, kayıt sonrası yordam çalıştırır. Başlık kancaları `@PendingAction` kullanmaz; iş akışı güncellemesi yalnız akış alanlarını gönderir. -- Talepten Aktar ve Detaylar satınalmanın `PurchaseDocGrid` diyaloğunu kullanır (ekran `BaseId` ile süzülür; yeni lot satırına `BaseId` filtreden yazılır, `InsertCommand` tabloya yazar). +- Malzeme talebi kalemleri iç transfere yalnız Satınalma › Talepler › Planlama'daki İç Transfer kararıyla gelir (`Prc_P_MaterialRequestPlan`, [App.Prc.md](App.Prc.md)): aynı kaynak → hedef konum için onaya girmemiş taslak transfer varsa satır ona eklenir, yoksa kaynak deponun iç transfer türüyle yeni taslak açılır. İç Transferler'deki Talepten Aktar butonu ve Transfer Talep Kalemleri ekranı 2026-10-13'te kaldırıldı. +- Detaylar satınalmanın `PurchaseDocGrid` diyaloğunu kullanır (ekran `BaseId` ile süzülür; yeni lot satırına `BaseId` filtreden yazılır, `InsertCommand` tabloya yazar). - Hata kodları 50301–50321. ### 3. Menü ve ekranlar @@ -156,9 +157,9 @@ Onaylanan analiz (talep "Envanter giriş ve çıkışları"): Sekmeler (menüsüz alt formlar, üç belge ekranında ortak): Operasyonlar (`App.Inventory.TransferLine`), Ek Bilgi (`App.Inventory.TransferOther`, aynı satır), Not (`App.Inventory.TransferNote`, aynı satır); yalnız İç Transferler'de Onay ve Teslim (`App.Inventory.TransferApproval`, aynı satır, salt okunur). -Diyaloglar: Lot/Seri Numaraları (`App.Inventory.TransferLineLot`, giren satırın Detaylar'ı), Stoktan Lot Seçimi (`App.Inventory.TransferLineLotStock`, çıkan satırın Detaylar'ı), Transfer Talep Kalemleri (`App.Inventory.TransferImportItem`, İç Transferler › Talepten Aktar). +Diyaloglar: Lot/Seri Numaraları (`App.Inventory.TransferLineLot`, giren satırın Detaylar'ı), Stoktan Lot Seçimi (`App.Inventory.TransferLineLotStock`, çıkan satırın Detaylar'ı). -Durum butonları satırdadır ve belgenin durumuna göre görünür (araç çubuğu butonu kayda göre gizlenemez): Hazırla (Taslak; iç transferde onay tamamlanmışsa — ve Bekleyen), Tamamla (Hazır), İptal Et (Taslak, Bekleyen, Hazır), İade Et (Tamamlandı), Yazdır (her durumda); İç Transferler'de ayrıca Talepten Aktar (Taslak) ve iş akışı butonları. Buton adları durum adlarıyla eşleşir: Hazırla › Hazır, Tamamla › Tamamlandı, İptal Et › İptal. Satır butonları (yalnız ürünün takip yöntemi Lot ya da Seri olan satırda görünür): Lot/Seri Oluştur, Otomatik Ata, Detaylar; görünürlük satırın `TrackingMethod` kolonundan okunur. Hareketler'de (`App.Inventory.Transfer`) satırda Detay (salt okunur başlık + Operasyonlar sekmesi), Not ve belgeyi kendi ekranında açan Aç vardır; Ürün Hareketleri'nde de Aç hareketin belgesini açar (`/admin/form/App.Inventory.{Receipt|Delivery|InternalTransfer}/@TransferId`). +Durum butonları satırdadır ve belgenin durumuna göre görünür (araç çubuğu butonu kayda göre gizlenemez): Yapılacak olarak işaretle (Taslak; iç transferde onay tamamlanmışsa — ve Bekleyen), Doğrula (Hazır), İptal Et (Taslak, Bekleyen, Hazır), İade Et (Tamamlandı), Yazdır (her durumda); İç Transferler'de ayrıca iş akışı butonları. Buton adları durum adlarıyla eşleşir: Yapılacak olarak işaretle › Hazır, Doğrula › Tamamlandı, İptal Et › İptal. Satır butonları (yalnız ürünün takip yöntemi Lot ya da Seri olan satırda görünür): Lot/Seri Oluştur, Otomatik Ata, Detaylar; görünürlük satırın `TrackingMethod` kolonundan okunur. Hareketler'de (`App.Inventory.Transfer`) satırda Detay (salt okunur başlık + Operasyonlar sekmesi), Not ve belgeyi kendi ekranında açan Aç vardır; Ürün Hareketleri'nde de Aç hareketin belgesini açar (`/admin/form/App.Inventory.{Receipt|Delivery|InternalTransfer}/@TransferId`). ### 4. Veri modeli @@ -172,15 +173,14 @@ Tüm tablolar kiracı + tam audit + soft delete, anahtar `Id uniqueidentifier`. | `Inv_T_Stock` | BranchId, WarehouseId, LocationId, ProductId, LotNo (takipsiz üründe boş), Quantity (ürün biriminde), UomId, InDate (FIFO), LastMoveDate; tekil (TenantId, LocationId, ProductId, LotNo) | | `Inv_V_TransferLineLot` | Lot/Seri Numaraları diyaloğunun kaynağı (`BaseId` = satır) | | `Inv_V_TransferLineLotStock` | Stoktan Lot Seçimi'nin kaynağı: satırın kaynak konumundaki lotlar (eldeki miktar satırın biriminde) + atanmış miktar; `Id` = satır:stok kaydı, kaydı `Inv_P_TransferLineLotStockSave` yapar | -| `Prc_V_MaterialRequestTransferItem` | Taslak iç transfer × aynı şubedeki transferle karşılanacak bekleyen talep kalemi (`Id` = belge\|kalem; Prc öneki migrate sırası içindir) | | `Inv_F_UomConvert` | Birim çevrimi | -| Yordamlar | `Inv_P_Transfer{AfterSave,SetStatus,CheckAvailability,Validate,Copy,Number,Recalc,FromPurchaseOrder,ImportItem,LineAfterSave,LineLotGenerate,LineLotAssign}` | +| Yordamlar | `Inv_P_Transfer{AfterSave,SetStatus,CheckAvailability,Validate,Copy,Number,Recalc,FromPurchaseOrder,SupplierPrice,LineAfterSave,LineLotGenerate,LineLotAssign}` | ### 5. İş kuralları ve hesaplar -- **Hazırla** (taslak, satırlı, konumları dolu; iç transferde onaylı ya da Onay Gerekmez): dış konumdan girişte yapılan miktar talep kadar dolar ve belge Hazır olur. İç konumdan çıkışta satırlar ürün bazında sırayla stoktan karşılanır; tümü karşılanırsa Hazır, değilse Bekleyen. Teslimatta "Mümkün olduğunca kısa sürede" kısmi karşılamada da Hazır yapar, "Tüm ürünler hazır olduğunda" bütün satırları bekler. -- **Hazırla** (Bekleyen): aynı hesabı yeniden yapar; stok girdiyse belge Hazır olur. -- **Tamamla** (yalnız Hazır): yapılan miktarı olan satır şarttır; lot/seri takipli üründe lot toplamı yapılan miktara eşit, seride her seri 1 adet ve tekil olmalıdır; iç kaynakta stok (ürün × lot) yetmezse durur. Stok güncellenir, belge Tamamlandı olur, Geçerlilik Tarihi yazılır. Sipariş kaleminin `ReceivedQuantity`'si ve talep kaleminin `DeliveredQuantity`'si artar (iadede azalır); talep kalemi tam karşılanınca `Done` olur. Talepten az yapılan satırların kalanı backorder belgesine geçer ve stok kontrolüyle Hazır/Bekleyen açılır. +- **Yapılacak olarak işaretle** (taslak, satırlı, konumları dolu; iç transferde onaylı ya da Onay Gerekmez): dış konumdan girişte yapılan miktar talep kadar dolar ve belge Hazır olur. İç konumdan çıkışta satırlar ürün bazında sırayla stoktan karşılanır; tümü karşılanırsa Hazır, değilse Bekleyen. Teslimatta "Mümkün olduğunca kısa sürede" kısmi karşılamada da Hazır yapar, "Tüm ürünler hazır olduğunda" bütün satırları bekler. +- **Yapılacak olarak işaretle** (Bekleyen): aynı hesabı yeniden yapar; stok girdiyse belge Hazır olur. +- **Doğrula** (yalnız Hazır): yapılan miktarı olan satır şarttır; lot/seri takipli üründe lot toplamı yapılan miktara eşit, seride her seri 1 adet ve tekil olmalıdır; iç kaynakta stok (ürün × lot) yetmezse durur. Stok güncellenir, belge Tamamlandı olur, Geçerlilik Tarihi yazılır. Sipariş kaleminin `ReceivedQuantity`'si ve talep kaleminin `DeliveredQuantity`'si artar (iadede azalır); talep kalemi tam karşılanınca `Done` olur. Siparişten açılan alımda ürünün tedarikçi fiyat listesi siparişin birim fiyatı ve son alım tarihiyle yenilenir (`Inv_P_TransferSupplierPrice`; kural [App.Prc.md](App.Prc.md) Talepler bölümünde). Recalc ve İptal Et talep kaleminin satır durumunu plana eşler (`Prc_P_MaterialRequestItemSync`): transferle tamamen planlanmış kalem kapanır, transfer iptal edilir ya da satırı silinirse yeniden açılır ve miktar Planlama'ya döner. Talepten az yapılan satırların kalanı backorder belgesine geçer ve stok kontrolüyle Hazır/Bekleyen açılır. - **İade Et** (Tamamlandı): kaynak/hedef yer değiştirmiş, yapılan miktarlar ve lotlarıyla taslak belge; iadeden backorder açılmaz. - **İptal Et**: Tamamlandı ya da İptal dışındaki belgede. İptal edilmiş belge düzenlenemez; tamamlanmış ya da iptal edilmiş belgenin satırı ve lotu değiştirilemez. Yalnız elle açılmış taslak (siparişten, backorder ya da iadeden gelmeyen) silinebilir. - **Lot/Seri Oluştur**: yalnız giriş satırında; lot takipte kalan miktar için `Inventory.LotNumber`'tan tek lot, seri takipte kalan her birim için `Inventory.SerialNumber`'dan seri (miktar tam sayı olmalı). **Otomatik Ata**: yalnız çıkış satırında; mevcut lotları siler, kaynak konumdaki lotları ilk giren ilk çıkar sırasıyla atar. @@ -190,35 +190,35 @@ Tüm tablolar kiracı + tam audit + soft delete, anahtar `Id uniqueidentifier`. ### 6. Yetki ve görünürlük -İzin grubu `App.Inventory`. Ekran yetkileri `App.Inventory.Operations` altında (Alımlar, Teslimatlar, İç Transferler); üç belge ekranının ortak sekmeleri (Transfer Satırları, Ek Bilgi, Not) da `App.Inventory.Operations` altındadır; Lot/Seri Numaraları Transfer Satırları'nın, Onay ve Teslim ile Transfer Talep Kalemleri İç Transferler'in altındadır. Durum butonları ekranın `.Update`, satır butonları Transfer Satırları'nın `.Update`, Detaylar Lot/Seri Numaraları'nın okuma, Talepten Aktar Transfer Talep Kalemleri'nin `.Update` yetkisini ister. Belge ekranını kullanan role sekme ve diyalog yetkileri de verilmelidir. Yetkiler hiçbir role otomatik atanmaz. Kiracı kapsamlı; şube kolonla tutulur. +İzin grubu `App.Inventory`. Ekran yetkileri `App.Inventory.Operations` altında (Alımlar, Teslimatlar, İç Transferler); üç belge ekranının ortak sekmeleri (Transfer Satırları, Ek Bilgi, Not) da `App.Inventory.Operations` altındadır; Lot/Seri Numaraları Transfer Satırları'nın, Onay ve Teslim İç Transferler'in altındadır. Durum butonları ekranın `.Update`, satır butonları Transfer Satırları'nın `.Update`, Detaylar Lot/Seri Numaraları'nın okuma yetkisini ister. Belge ekranını kullanan role sekme ve diyalog yetkileri de verilmelidir. Yetkiler hiçbir role otomatik atanmaz. Kiracı kapsamlı; şube kolonla tutulur. ### 7. Entegrasyonlar -Satınalma Siparişleri (onayda taslak alım, alınan miktar), Malzeme Talepleri (Karşılama = Transfer kalemleri, teslim edilen miktar), Envanter › Tanımlamalar (Depolar, Konumlar, Operasyon Türleri, Ürünler), Kontaklar, Proje, Kullanıcılar, Yönetim › Tanımlamalar › Diziler (operasyon türü numaratörleri, `Inventory.LotNumber`, `Inventory.SerialNumber`), Raporlar (`Transfer Fişi`). +Satınalma Siparişleri (onayda taslak alım, alınan miktar), Malzeme Talepleri (Planlama › İç Transfer kararı, teslim edilen miktar, kalem kapanışı), Envanter › Tanımlamalar (Depolar, Konumlar, Operasyon Türleri, Ürünler), Kontaklar, Proje, Kullanıcılar, Yönetim › Tanımlamalar › Diziler (operasyon türü numaratörleri, `Inventory.LotNumber`, `Inventory.SerialNumber`), Raporlar (`Transfer Fişi`). ### 8. Akış örneği 1. Satınalma'da P00012 (10 Adet sensör, lot takipli) onaylanır; Alımlar'da IKT/IN/00001 taslak açılır (Tedarikçiler › Ana Depo). -2. Hazırla: belge Hazır, yapılan 10. Satırda Lot/Seri Oluştur LOT000001 (10) üretir; Tamamla Ana Depo'ya 10 Adet LOT000001 ekler, P00012 kalemine Alınan 10 yazılır. -3. Teslimatlar'da 4 Adet sensör için belge açılır; Hazırla Hazır yapar, Otomatik Ata LOT000001 (4) atar, Tamamla stoğu 6'ya düşürür. -4. İç Transferler'de Ana Depo'dan (sorumlusu var) başka bir iç konuma 2 Adet; İş Akışı Başlat, sorumlu onaylar (belge kendiliğinden hazırlanır), lotlar seçilir, Tamamla; Onay ve Teslim sekmesinde onaylayan ve teslim alan görünür. +2. Yapılacak olarak işaretle: belge Hazır, yapılan 10. Satırda Lot/Seri Oluştur LOT000001 (10) üretir; Doğrula Ana Depo'ya 10 Adet LOT000001 ekler, P00012 kalemine Alınan 10 yazılır. +3. Teslimatlar'da 4 Adet sensör için belge açılır; Yapılacak olarak işaretle Hazır yapar, Otomatik Ata LOT000001 (4) atar, Doğrula stoğu 6'ya düşürür. +4. İç Transferler'de Ana Depo'dan (sorumlusu var) başka bir iç konuma 2 Adet; Onayla, sorumlu onaylar (belge kendiliğinden hazırlanır), lotlar seçilir, Doğrula; Onay ve Teslim sekmesinde onaylayan ve teslim alan görünür. ### 9. Sık sorulanlar -- **Belge Bekleyen'de kaldı?** Kaynak konumda yeterli stok yok; stok girdikten sonra Hazırla'ya basın. Teslimatta politika "Mümkün olduğunca kısa sürede" ise eldeki kısım gönderilir. -- **Tamamla "lot/seri miktarı eşit değil" diyor?** Ürün lot/seri takiplidir; satırdaki Detaylar'dan lot girin ya da Lot/Seri Oluştur (giriş) / Otomatik Ata (çıkış) kullanın. +- **Belge Bekleyen'de kaldı?** Kaynak konumda yeterli stok yok; stok girdikten sonra Yapılacak olarak işaretle'ye basın. Teslimatta politika "Mümkün olduğunca kısa sürede" ise eldeki kısım gönderilir. +- **Doğrula "lot/seri miktarı eşit değil" diyor?** Ürün lot/seri takiplidir; satırdaki Detaylar'dan lot girin ya da Lot/Seri Oluştur (giriş) / Otomatik Ata (çıkış) kullanın. - **Ürün stokta görünmüyor?** Ürünün Envanter Takibi kapalıysa hareket stoğa işlenmez. - **"Numaratör bulunamadı"?** Operasyon türünün numaratörü Diziler'de bu kiracı için tanımlı ve aktif olmalıdır. -- **İç transfer hazırlanamıyor?** Kaynak konumun sorumlusu varsa önce İş Akışı Başlat ile onay alınmalıdır; onay verilince belge kendiliğinden hazırlanır. -- **İç transferde sıra nedir?** Satırlar › İş Akışı Başlat › Kaynak Depo Onayı › (otomatik Hazırla) › lot seçimi › Tamamla. Onay stok hareketinden önce gelir, çünkü malın kaynak depodan çıkmasına verilen izindir (kullanıcı kararı: onay sonrası Hazırla otomatik). Otomatik Hazırla şartları sağlanmazsa (satır yok, konum kuralı) belge Taslak kalır ve Hazırla elle basılır. +- **İç transfer hazırlanamıyor?** Kaynak konumun sorumlusu varsa önce Onayla ile onay alınmalıdır; onay verilince belge kendiliğinden hazırlanır. +- **İç transferde sıra nedir?** Satırlar › Onayla › Kaynak Depo Onayı › (otomatik Yapılacak olarak işaretle) › lot seçimi › Doğrula. Onay stok hareketinden önce gelir, çünkü malın kaynak depodan çıkmasına verilen izindir (kullanıcı kararı: onay sonrası Yapılacak olarak işaretle otomatik). Otomatik Yapılacak olarak işaretle şartları sağlanmazsa (satır yok, konum kuralı) belge Taslak kalır ve Yapılacak olarak işaretle elle basılır. - **İç transfer onay istemiyor, "Onay Gerekmez" yazıyor?** Onaycı kaynak konumun Sorumlu'sudur (kullanıcı adı); Konumlar'da sorumlu girilmemişse belge onay beklemez. Seed'deki konumların sorumlusu `system@sozsoft.com`'dur. Onay akışı için konuma sorumlu atanır (yeni ve taslak belgelerde geçerli olur). -- **İç transferde dış konum ya da aynı konum seçilemiyor?** İç transfer depo içinde taşımadır: Kaynak ve Hedef Konum listeleri yalnız iç konumları gösterir, hedef kaynaktan farklı olmalıdır (formda kural, Hazırla/Tamamla'da 50325 ve 50326). İade belgesi bu kuraldan muaftır; yanlışlıkla dış konuma yapılmış eski transfer İade Et ile geri alınır. +- **İç transferde dış konum ya da aynı konum seçilemiyor?** İç transfer depo içinde taşımadır: Kaynak ve Hedef Konum listeleri yalnız iç konumları gösterir, hedef kaynaktan farklı olmalıdır (formda kural, Yapılacak olarak işaretle/Doğrula'da 50325 ve 50326). İade belgesi bu kuraldan muaftır; yanlışlıkla dış konuma yapılmış eski transfer İade Et ile geri alınır. - **Siparişten alım açılmadı?** Siparişte envanter takipli ürün kalemi olmalı; siparişin iptal olmayan bir alımı zaten varsa yenisi açılmaz. ### 10. Dosyalar ve geri alma -- **SQL (sql + postgres):** `Inv_T_{Transfer,TransferLine,TransferLineLot,Stock}`, `Inv_V_{StockMove,TransferLineLot,TransferLineLotStock}`, `Prc_V_MaterialRequestTransferItem`, `Inv_F_UomConvert`, `Inv_P_Transfer*`; değişen: `Inv_T_OperationType` (SequenceName), `Prc_T_PurchaseOrderLine` (ReceivedQuantity), `Prc_P_PurchaseOrderSetStatus`, `Prc_P_PurchaseRfqAward`. -- **Wizard'lar:** `Inventory_{Receipt,Delivery,InternalTransfer,Transfer,TransferLine,TransferLineLot,TransferLineLotStock,TransferOther,TransferNote,TransferApproval,TransferImportItem}.json`; değişen `Inventory_OperationType.json`, `Prc_PurchaseOrderLine.json`. +- **SQL (sql + postgres):** `Inv_T_{Transfer,TransferLine,TransferLineLot,Stock}`, `Inv_V_{StockMove,TransferLineLot,TransferLineLotStock}`, `Inv_F_UomConvert`, `Inv_P_Transfer*`; değişen: `Inv_T_OperationType` (SequenceName), `Prc_T_PurchaseOrderLine` (ReceivedQuantity), `Prc_P_PurchaseOrderSetStatus`, `Prc_P_PurchaseRfqAward`. +- **Wizard'lar:** `Inventory_{Receipt,Delivery,InternalTransfer,Transfer,TransferLine,TransferLineLot,TransferLineLotStock,TransferOther,TransferNote,TransferApproval}.json`; değişen `Inventory_OperationType.json`, `Prc_PurchaseOrderLine.json`. - **Seed verisi:** numaratörler `data/App.Definitions.Sequence.json` (`Inventory.IKT.*`, `Inventory.LotNumber`, `Inventory.SerialNumber`), dış konumlar `data/App.Inventory.Location.json`, operasyon türü bağları `data/App.Inventory.OperationType.json`, şablon `data/App.Reports.ReportTemplates.json` (Transfer Fişi). - **Geri alma:** Wizard Manager'da önce belge ekranları, sonra sekmeler ve diyaloglar silinir; tablolar ancak açık onayla düşürülür (sıra: TransferLineLot → TransferLine → Transfer, Stock). @@ -231,7 +231,7 @@ Stok bakiyesi ve bütün hareketlerin salt okunur listeleri: Stok (şube › dep ### 2. Analiz ve kararlar -- Stok `Inv_T_Stock` tablosundan okunur; tabloya yalnız Tamamla yazar (Operasyonlar §2). +- Stok `Inv_T_Stock` tablosundan okunur; tabloya yalnız Doğrula yazar (Operasyonlar §2). - Hareketler `Inv_V_StockMove` görünümüdür: satır başına bir kayıt, lot dağılımı varsa lot başına bir kayıt; bütün durumlar listelenir, stoğu yalnız Tamamlandı satırları değiştirir. - Görünümler Grid, Card, Pivot, Chart; depo × ürün toplamı Pivot ile alınır. @@ -371,7 +371,7 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | Wizard | `wizard/Inventory_ProductVariant.json` | | Yol | Liste (Wizard) | | Menü | `App.Inventory.Definitions` › `App.Inventory.ProductVariant` (sıra 4) | -| Yetki | `App.Inventory.ProductVariant` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Inventory.ProductVariant` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Ürün Varyantları — üründe seçilen nitelik değerlerinin her kombinasyonu (ör. kırmızı · çelik · 40x40), salt okunur. | | Geliştirme talebi | Inventory -> Tanımlamalar | | Kaynak | `SELECT CAST(p.Id AS nvarchar(36)) + ':' + CONCAT_WS('\|', l1.VId, l2.VId, l3.VId, l4.VId, l5.VId) AS [Key], p.Id AS ProductId, p.Name AS ProductName, CONCAT_WS('\|', l1.VId, l2.VId, l3.VId, l4.VId, l5.VId) AS VariantKey, CONCAT_WS(', ', l1.VName, l2.VName, l3.VName, l4.VName, l5.VName) AS VariantName, p.InternalReference, CAST(p.SalesPrice + ISNULL(l1.XP, 0) + ISNULL(l2.XP, 0) + ISNULL(l3.XP, 0) + ISNULL(l4.XP, 0) + ISNULL(l5.XP, 0) AS decimal(18,4)) AS SalesPrice, p.Cost, p.UomId, p.CategoryId, p.IsActive, p.TenantId, p.IsDeleted FROM Inv_T_Product p LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l1 ON l1.ProductId = p.Id AND l1.Rk = 1 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l2 ON l2.ProductId = p.Id AND l2.Rk = 2 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l3 ON l3.ProductId = p.Id AND l3.Rk = 3 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l4 ON l4.ProductId = p.Id AND l4.Rk = 4 LEFT JOIN (SELECT x.ProductId, x.Rk, CAST(s.value AS nvarchar(36)) AS VId, av.Name AS VName, av.ExtraPrice AS XP FROM (SELECT pl.ProductId, pl.ValueIds, DENSE_RANK() OVER (PARTITION BY pl.ProductId ORDER BY a.Name, a.Id) AS Rk FROM Inv_T_ProductAttributeLine pl INNER JOIN Inv_T_Attribute a ON a.Id = pl.AttributeId AND a.IsDeleted = 'false' AND a.VariantCreation <> 'Never' WHERE pl.IsDeleted = 'false') x CROSS APPLY STRING_SPLIT(x.ValueIds, '\|') s INNER JOIN Inv_T_AttributeValue av ON CAST(av.Id AS nvarchar(36)) = s.value AND av.IsDeleted = 'false') l5 ON l5.ProductId = p.Id AND l5.Rk = 5` · filtre `"IsDeleted" = 'false'` | @@ -426,7 +426,7 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | Wizard | `wizard/Inventory_BomOverview.json` | | Yol | Liste (Wizard) | | Menü | `App.Inventory.Definitions` › `App.Inventory.BomOverview` (sıra 6) | -| Yetki | `App.Inventory.BomOverview` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Inventory.BomOverview` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Reçeteye Genel Bakış — her aktif reçetenin çok seviyeli patlatılmış hali, ağaç olarak (salt okunur). | | Geliştirme talebi | Inventory -> Tanımlamalar | | Kaynak | `SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)) AS NodeKey, CAST(NULL AS nvarchar(400)) AS ParentKey, b0.Id AS BomId, 0 AS NodeLevel, CAST('Product' AS nvarchar(20)) AS NodeType, CAST(p0.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(b0.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)) AS Name, CAST(b0.Quantity AS decimal(18,4)) AS Quantity, CAST(u0.Name AS nvarchar(64)) AS UomName, CAST(NULL AS decimal(18,4)) AS Cost, b0.TenantId, b0.IsDeleted, CAST(NULL AS nvarchar(400)) AS ParentName FROM Inv_T_Bom b0 INNER JOIN Inv_T_Product p0 ON p0.Id = b0.ProductId LEFT JOIN Adm_T_Uom u0 ON u0.Id = b0.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 1, 'Component', CAST(p1.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c1.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity AS decimal(18,4)), u1.Name, CAST(c1.Quantity * p1.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(bp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_Bom bp INNER JOIN Inv_T_Product pp ON pp.Id = bp.ProductId WHERE bp.Id = b0.Id) AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' INNER JOIN Inv_T_Product p1 ON p1.Id = c1.ProductId LEFT JOIN Adm_T_Uom u1 ON u1.Id = c1.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 2, 'Component', CAST(p2.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c2.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity AS decimal(18,4)), u2.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * p2.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c1.Id) AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' INNER JOIN Inv_T_Product p2 ON p2.Id = c2.ProductId LEFT JOIN Adm_T_Uom u2 ON u2.Id = c2.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 3, 'Component', CAST(p3.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c3.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity AS decimal(18,4)), u3.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * p3.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c2.Id) AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' INNER JOIN Inv_T_Product p3 ON p3.Id = c3.ProductId LEFT JOIN Adm_T_Uom u3 ON u3.Id = c3.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/C' + CAST(c4.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 4, 'Component', CAST(p4.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(c4.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') AS nvarchar(400)), CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * c4.Quantity / b3.Quantity AS decimal(18,4)), u4.Name, CAST(c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity * c4.Quantity / b3.Quantity * p4.Cost AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c3.Id) AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomComponent c4 ON c4.BomId = b3.Id AND c4.IsDeleted = 'false' INNER JOIN Inv_T_Product p4 ON p4.Id = c4.ProductId LEFT JOIN Adm_T_Uom u4 ON u4.Id = c4.UomId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 1, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(bp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_Bom bp INNER JOIN Inv_T_Product pp ON pp.Id = bp.ProductId WHERE bp.Id = b0.Id) AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomOperation o ON o.BomId = b0.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 2, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin AS decimal(18,4)), 'Dakika', CAST(o.DurationMin / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST('Operasyonlar' AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomOperation o ON o.BomId = b0.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 2, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity / b1.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity / b1.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c1.Id) AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomOperation o ON o.BomId = b1.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 3, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity / b1.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity / b1.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST('Operasyonlar' AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomOperation o ON o.BomId = b1.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 3, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c2.Id) AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomOperation o ON o.BomId = b2.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id, c2.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 4, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity / b2.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST('Operasyonlar' AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomOperation o ON o.BomId = b2.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) AS nvarchar(400)), b0.Id, 4, 'OperationGroup', 'Operasyonlar', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity) AS decimal(18,4)), 'Dakika', CAST(SUM(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity / 60 * w.CostPerHour) AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST((SELECT pp.Name + ISNULL(' (' + (SELECT STRING_AGG(avn.Name, ', ') FROM STRING_SPLIT(cp.VariantKey, '\|') sn INNER JOIN Inv_T_AttributeValue avn ON CAST(avn.Id AS nvarchar(36)) = sn.value) + ')', '') FROM Inv_T_BomComponent cp INNER JOIN Inv_T_Product pp ON pp.Id = cp.ProductId WHERE cp.Id = c3.Id) AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomOperation o ON o.BomId = b3.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1 GROUP BY b0.Id, b0.TenantId, b0.IsDeleted, c1.Id, c2.Id, c3.Id UNION ALL SELECT CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS/O' + CAST(o.Id AS nvarchar(36)) AS nvarchar(400)), CAST('B' + CAST(b0.Id AS nvarchar(36)) + '/C' + CAST(c1.Id AS nvarchar(36)) + '/C' + CAST(c2.Id AS nvarchar(36)) + '/C' + CAST(c3.Id AS nvarchar(36)) + '/OPS' AS nvarchar(400)), b0.Id, 5, 'Operation', op.Name + ' - ' + w.Name, CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity AS decimal(18,4)), 'Dakika', CAST(o.DurationMin * c1.Quantity * c2.Quantity / b1.Quantity * c3.Quantity / b2.Quantity / b3.Quantity / 60 * w.CostPerHour AS decimal(18,4)), b0.TenantId, b0.IsDeleted, CAST('Operasyonlar' AS nvarchar(400)) FROM Inv_T_Bom b0 INNER JOIN Inv_T_BomComponent c1 ON c1.BomId = b0.Id AND c1.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c1.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c1.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c1.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b1 INNER JOIN Inv_T_BomComponent c2 ON c2.BomId = b1.Id AND c2.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c2.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c2.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c2.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b2 INNER JOIN Inv_T_BomComponent c3 ON c3.BomId = b2.Id AND c3.IsDeleted = 'false' CROSS APPLY (SELECT TOP 1 bb.Id, bb.Quantity FROM Inv_T_Bom bb WHERE bb.ProductId = c3.ProductId AND bb.IsDeleted = 'false' AND bb.IsActive = 1 AND bb.Quantity > 0 AND (bb.VariantKey IS NULL OR bb.VariantKey = '' OR bb.VariantKey = c3.VariantKey) ORDER BY CASE WHEN bb.VariantKey = c3.VariantKey THEN 0 ELSE 1 END, bb.CreationTime) b3 INNER JOIN Inv_T_BomOperation o ON o.BomId = b3.Id AND o.IsDeleted = 'false' INNER JOIN Prd_T_Operation op ON op.Id = o.OperationId INNER JOIN Prd_T_WorkCenter w ON w.Id = o.WorkCenterId WHERE b0.IsDeleted = 'false' AND b0.IsActive = 1` · filtre `"IsDeleted" = 'false'` | @@ -700,6 +700,7 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | `Price` | Birim Fiyat | dxNumberBox | ✓ | ✓ | | | `CurrencyId` | Kur | dxSelectBox | | ✓ | sorgu: Sas_H_Currency | | `LeadTimeDays` | Teslim Süresi (gün) | dxNumberBox | | ✓ | | +| `LastPurchaseDate` | Son Alım Tarihi | dxDateBox | | | | #### Stok — `App.Inventory.ProductStock` @@ -772,10 +773,9 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | +| `PartnerId` | Tedarikçi Adı | dxSelectBox | | ✓ | sorgu: Adm_T_Contact | | `TransferNo` | Fiş No | dxTextBox | | ✓ | | | `Status` | Durum | dxSelectBox | | ✓ | liste: Draft, Waiting, Ready, Done, Cancelled | -| `SourceDocument` | Kaynak Belge | dxTextBox | | ✓ | | -| `PartnerId` | Tedarikçi Adı | dxSelectBox | | ✓ | sorgu: Adm_T_Contact | | `ScheduledDate` | Planlanan Tarih | dxDateBox | ✓ | ✓ | | | `EffectiveDate` | Geçerlilik Tarihi | dxDateBox | | ✓ | | | `BranchId` | Şube | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch | @@ -786,6 +786,7 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | `OperationKind` | OperationKind | dxSelectBox | | | liste: Receipt, Delivery, InternalTransfer, Manufacturing, Repair | | `PendingAction` | PendingAction | dxTextBox | | | | | `LineSummary` | LineSummary | dxTextBox | | | | +| `SourceDocument` | Kaynak Belge | dxTextBox | | ✓ | | #### Teslimatlar — `App.Inventory.Delivery` @@ -832,7 +833,7 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | Yol | Liste (Wizard) | | Menü | `App.Inventory.Operations` › `App.Inventory.InternalTransfer` (sıra 3) | | Yetki | `App.Inventory.InternalTransfer` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | İç Transferler — aynı deponun konumları arasında taşıma. | +| Açıklama | İç Transferler — iç konumlar arasında taşıma (aynı depo ya da depolar arası). | | Kaynak | `Inv_T_Transfer` · filtre `"IsDeleted" = 'false' AND "OperationKind" = 'InternalTransfer'` | | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | @@ -841,7 +842,7 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | Widget'lar | `App.Widget.Draft`, `App.Inventory.Widget.Waiting`, `App.Inventory.Widget.Ready`, `App.Inventory.Widget.Late` | | Komutlar | InsertAfter: `Inv_P_TransferAfterSave` · UpdateBefore: SQL · UpdateAfter: `Inv_P_TransferAfterSave` · DeleteBefore: SQL | | Form varsayılanları | Status=Draft, OperationKind=InternalTransfer, ScheduledDate=@NOW, BranchId= | -| Butonlar | `App.Inventory.Transfer.ImportRequests`, `App.Inventory.Transfer.Action.Confirm`, `App.Inventory.Transfer.Action.Validate`, `App.Inventory.Transfer.Action.Cancel`, `App.Inventory.Transfer.Action.Return`, `App.Inventory.Transfer.Action.Print` | +| Butonlar | `App.Inventory.Transfer.Action.Confirm`, `App.Inventory.Transfer.Action.Validate`, `App.Inventory.Transfer.Action.Cancel`, `App.Inventory.Transfer.Action.Return`, `App.Inventory.Transfer.Action.Print` | | Onay akışı | Start 'Onaya Gönderildi' → Approval 'Kaynak Depo Onayı' → End 'Onaylandı' → End 'Reddedildi' | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | @@ -873,7 +874,7 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | Wizard | `wizard/Inventory_TransferLineLot.json` | | Yol | Liste (Wizard) | | Menü | Menüsüz (alt form) | -| Yetki | `App.Inventory.TransferLineLot` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Inventory.TransferLineLot` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Lot/Seri Numaraları — stoğa giren satırın (alım, teslimat iadesi) lot ya da seri numaraları; satırdaki Detaylar butonuyla açılır. | | Kaynak | `Inv_V_TransferLineLot` | | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | @@ -895,7 +896,7 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | Wizard | `wizard/Inventory_TransferLineLotStock.json` | | Yol | Liste (Wizard) | | Menü | Menüsüz (alt form) | -| Yetki | `App.Inventory.TransferLineLotStock` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Inventory.TransferLineLotStock` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Stoktan Lot Seçimi — stoktan çıkan satırın (teslimat, iç transfer, alım iadesi) kaynak konumundaki bütün lot/seriler; satırdaki Detaylar butonuyla açılır. | | Kaynak | `Inv_V_TransferLineLotStock` | | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | @@ -1011,33 +1012,6 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | `ApprovalDate` | Onay Tarihi | dxDateBox | | ✓ | | | `ApprovalDescription` | Onay Açıklaması | dxTextBox | | ✓ | | -#### Transfer Talep Kalemleri — `App.Inventory.TransferImportItem` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/Inventory_TransferImportItem.json` | -| Yol | Liste (Wizard) | -| Menü | Menüsüz (alt form) | -| Yetki | `App.Inventory.TransferImportItem` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Transfer Talep Kalemleri — transferle karşılanacak onaylı malzeme talebi kalemleri; taslak iç transferin Talepten Aktar butonuyla açılır. | -| Kaynak | `Prc_V_MaterialRequestTransferItem` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · batch | -| Kapsam | Kiracı | -| Butonlar | `App.Prc.PurchaseImportItem.TransferSelected` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `BaseId` | BaseId | dxTextBox | | | | -| `RequestNo` | Talep No | dxTextBox | | | | -| `RequesterUserId` | Talep Eden | dxSelectBox | | | sorgu: AbpUsers | -| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | -| `Quantity` | Miktar | dxNumberBox | | | | -| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | -| `LocationId` | Konum | dxSelectBox | | | sorgu: Inv_T_Location | -| `DueDate` | İstenen Tarih | dxDateBox | | | | -| `RequestReason` | Neden | dxTextBox | | | | - ### Stok, Hareketler ve Ürün Hareketleri (`App.Inventory.Stock`, `App.Inventory.Transfer`, `App.Inventory.StockMove`) #### Stok — `App.Inventory.Stock` @@ -1106,7 +1080,7 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | Wizard | `wizard/Inventory_StockMove.json` | | Yol | Liste (Wizard) | | Menü | `App.Inventory` › `App.Inventory.StockMove` (sıra 5) | -| Yetki | `App.Inventory.StockMove` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Inventory.StockMove` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Ürün Hareketleri — alım, teslimat ve iç transferlerin bütün ürün satırları ortak kolonlarla; satırın lot dağılımı varsa lot başına bir satır (salt okunur). | | Kaynak | `Inv_V_StockMove` | | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | @@ -1117,6 +1091,7 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | +| `PartnerId` | Kontak | dxSelectBox | | | sorgu: Adm_T_Contact | | `TransferId` | TransferId | dxTextBox | | | | | `MoveDate` | Tarih | dxDateBox | | | | | `TransferNo` | Fiş No | dxTextBox | | | | @@ -1124,15 +1099,14 @@ Wizard'lar `Inventory_Stock.json`, `Inventory_StockMove.json`; nesneler `Inv_T_S | `OperationTypeId` | Operasyon Türü | dxSelectBox | | | sorgu: Inv_T_OperationType | | `Status` | Durum | dxSelectBox | | | liste: Draft, Waiting, Ready, Done, Cancelled | | `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | -| `LotNo` | Lot/Seri No | dxTextBox | | | | | `DemandQuantity` | Talep | dxNumberBox | | | | +| `LotNo` | Lot/Seri No | dxTextBox | | | | | `Quantity` | Miktar | dxNumberBox | | | | | `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | | `BranchId` | Şube | dxSelectBox | | | sorgu: Sas_T_Branch | | `WarehouseId` | Depo | dxSelectBox | | | sorgu: Inv_T_Warehouse | | `SourceLocationId` | Kaynak Konum | dxSelectBox | | | sorgu: Inv_T_Location | | `DestinationLocationId` | Hedef Konum | dxSelectBox | | | sorgu: Inv_T_Location | -| `PartnerId` | Kontak | dxSelectBox | | | sorgu: Adm_T_Contact | | `SourceDocument` | Kaynak Belge | dxTextBox | | | | diff --git a/configs/seeds/docs/modules/App.Prc.md b/configs/seeds/docs/modules/App.Prc.md index 1c1edfc5..977ee04e 100644 --- a/configs/seeds/docs/modules/App.Prc.md +++ b/configs/seeds/docs/modules/App.Prc.md @@ -71,7 +71,7 @@ Yok. Tanımlar Yönetim › Tanımlamalar › Kontaklar'ın Satış ve Satınalm ### 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 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 ve satınalmanın her kalemin nasıl karşılanacağına karar vermesi. 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 talebin kalemleri **Planlama**'ya düşer: satınalmacı son alımlara, depo stoklarına ve tedarikçi fiyatlarına bakarak her kalemi (gerekirse miktarla bölerek) satın almaya (taslak teklif talebi) ya da stoktan iç transfere (taslak iç transfer) ayırır; verilen kararlar **Plan Takibi**'nde izlenir. Teklif toplama, sipariş ve mal kabul Siparişler dalında ve Envanter'dedir; transferin hazırlanıp tamamlanması Envanter › İç Transferler'dedir. ### 2. Analiz ve kararlar @@ -79,14 +79,26 @@ Departmanların iç ve dış ihtiyaç duydukları malzemeleri satınalmaya iletm - 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'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. +- **Karşılama kararı satınalmanındır** (2026-10-13). Satınalma onayı belge açmaz; onaylanan kalem Planlama'ya düşer. Talep eden karşılama şekli ve satınalma sorumlusu seçmez (2026-10-13 kararı; talep satırındaki Önerilen Karşılama ve Satınalma Sorumlusu kaldırıldı): ikisi Planlama'da belirlenir — planlamayı onaylayan kullanıcı satınalma sorumlusudur (teklif talebinin alıcısı, iç transferin sorumlusu, Plan Takibi'nde Satınalma Sorumlusu). Planla diyaloğu ürünün stoğu varsa İç Transfer, yoksa Satınalma sekmesiyle açılır. Teklif talebi, sipariş ve iç transferdeki "Talepten Aktar" / "Talep Kalemleri" sekmeleri kaldırıldı: talep kalemi bu belgelere yalnız Planlama'dan girer (tek kapı; aynı kalemin iki yoldan iki kez karşılanması önlenir). +- Planlama Wizard List'tir (görseldeki çalışma masası düzeni Custom Component ile değil, platformun grid'i ile): satır seçilince ürünün Depo Stokları, Tedarikçiler ve Son Alımlar sekmeleri listenin altında açılır (`SubFormsListFormType: List`, ilişki `ProductId → ProductId`). Satırda Düzenle yoktur; **Planla** butonu Core diyaloğunu (`MaterialRequestPlan`, `ui/src/views/purchasing/MaterialRequestPlanDialog.tsx`) açar (kullanıcı kararı 2026-10-13: bir kalem birden çok yöntemle karşılanabilmeli, dağıtım ekranda görünmeli, onayla belgeler kendiliğinden oluşmalı). Diyalogda İç Transfer (stoğu olan konumlar) ve Satınalma (tedarikçiler) sekmeleri teslimatlardaki Stoktan Lot Seçimi gibi batch düzenlenen ListForm ızgaralarıdır: Plan Miktarı yazılan her satır taslak plana (`Prc_T_MaterialRequestPlanLine`) yazılır, taslak alttaki Karşılama Planı ızgarasında görünür; Onayla Planlama ekranının `UpdateCommand`'ını (`Prc_P_MaterialRequestPlanConfirm`) çalıştırır ve taslağı belgelere çevirir. Ekran kodları butonun `OnClick` yapılandırmasındadır, bileşene yazılmaz. +- Kalem miktarla bölünebilir (ör. 4 transfer + 6 satınalma); kalan bitene kadar listede kalır. Onaylanmış karar ayrı bir tabloda tutulmaz: paylar belgelerin kendisinden hesaplanır (`Prc_V_MaterialRequestItemPlan`) — teklif ya da transfer iptal edilir, kalemi silinir ya da miktarı değişirse kalan kendiliğinden güncellenir. +- Satınalma kararı tedarikçiye taslak teklif talebi üretir (doğrudan sipariş değil): teklif toplama, ihale ve kıyas mevcut akışla sürer; sipariş onaylanınca taslak alım açılır. +- İç transferin kaynak konumunu planlamacı seçer (stoğu olan iç konumlar önce, miktarıyla listelenir); serbest stok (eldeki − açık transferlerde o konumdan istenen) planlanan miktarı karşılamalıdır. Kalanın tamamı transferle planlanan ve satınalma payı olmayan kalem **kapanır** (Satır Durumu = Tamamlandı); transfer iptal edilir ya da satırı silinirse yeniden Bekliyor olur. +- **Stoktan karşılama** (kullanıcı kararı 2026-10-13): stok talebin kendi teslim konumundaysa İç Transfer sekmesinde o konum da "Teslim Konumu" işaretiyle listelenir; oraya yazılan Plan Miktarı transfer açmaz, karar Stoktan'dır (`PlanMethod = Stock`). Onayda miktar kalemin `FromStockQuantity` ve `DeliveredQuantity` değerine eklenir, kalandan düşer; satınalma payı olmayan ve kalanı biten kalem kapanır. Stok hareketi oluşmaz: malzemenin depodan çıkışı Envanter'de ayrıca kaydedilir, teslim konumunun serbest stoğu stoktan karşılananı ayırmaz. +- Satınalma sekmesi kiracının bütün aktif kontaklarını listeler (kullanıcı kararı 2026-10-13): ürünün fiyat listesindekiler fiyatıyla önce, diğerleri fiyatsız sonra; fiyatsız tedarikçinin teklif kalemi 0 fiyatla açılır. +- İki sekmede de satırın En Fazla kolonu (`MaxQuantity`) yazılabilecek üst sınırı gösterir: planlanacak kalandan kalemin diğer taslak satırları düşülür, İç Transfer'de serbest stok da sınırdır. Plan Miktarı bunu aşarsa ızgara kaydetmez (`compare` kuralı); aynı anda birden çok satır düzenlenirse toplam yine kayıt yordamında denetlenir. +- **Hız yardımları** (kullanıcı kararı 2026-10-13: her satırla tek tek uğraşılmamalı): + - **Öner** (diyalogun üstünde; yalnız basınca — diyalog açılışta hiçbir şey planlamaz, plan kullanıcının butonlarıyla kurulur): `Prc_P_MaterialRequestPlanSuggest` taslağı sıfırlayıp kurar — önce stok (teslim konumu, sonra serbest stoğu en çok olan konum), kalan kısım en uygun tedarikçiden satınalma. Tedarikçi `Prc_V_MaterialRequestPlanVendor.SuggestRank` sırasıyla seçilir (fiyatlılar ucuzdan pahalıya, sonra son alım tarihi, sonra ad; para birimi farkı gözetilmez) ve yalnız fiyat listesinde ya da alım geçmişinde bulunan tedarikçi önerilir; yoksa kalan planlanmadan kalır. Diyalog yordamı Karşılama Planı ekranının ekleme komutuyla çağırır (`BaseId` = kalem; Karşılama Planı + Create yetkisi). + - **Taslağı Sıfırla** (diyalogun üstünde): kalemin bütün taslak satırlarını Karşılama Planı'nın silme komutuyla siler (Karşılama Planı + Delete yetkisi); Karşılama Planı'ndaki Sil de hemen uygulanır (hücre düzenleme). Onaydan önce plan istenildiği kadar geri alınıp yeniden kurulur. Onaydan sonra: iç transfer ya da teklif talebi kendi ekranında iptal edilince ya da satırı silinince kalem Planlama'ya döner; Stoktan karşılama Plan Takibi'ndeki **Geri Al** ile geri alınır (`Prc_P_MaterialRequestStockUndo`: stoktan karşılanan miktar teslim edilenden düşülür ve sıfırlanır, kapanmış kalem Bekliyor'a döner; Plan Takibi + Update yetkisi). + - **Öner ve Onayla** (diyalogun üstünde, Öner'in yanında): öneriyi kurar ve taslak oluştuysa hemen Onayla'yı çalıştırır; önerilecek kaynak yoksa onay denenmez. + - **Tümünü Planla** (İç Transfer / Satınalma satır butonu): satıra En Fazla değerini yazar. **Seçilenleri Planla** (aynı ızgaraların araç çubuğu, çoklu seçim): seçilen satırları sırayla en fazla miktarla planlar: Plan Miktarı eksi (-1) gönderilir, `Prc_P_MaterialRequestPlanLineSave` bunu kalanın diğer taslak satırlardan arta kalanı (iç transferde konumun serbest stoğuyla sınırlı) olarak yazar; alınacak bir şey kalmayan satır değişmez. Planlama listesinin kendisinde seçim tektir (kullanıcı kararı). Plan Miktarı hücresi vurguludur ve hücre düzenlemede değer hücreden çıkınca kaydedilir (Değişiklikleri Kaydet yoktur). +- Plan Takibi ayrı menü ekranıdır (görseldeki "Takip" sekmesi): her satır bir karar, belge ve sipariş bağlantılı. - İş 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. -- Talebin durumu iş akışından gelir: `ApprovalStatus` boş (taslak) › Departman Onayı › Satınalma Onayı › Onaylandı ya da Reddedildi. Onaylanan talep satınalmada aynı alanda ilerler: kalemi taslak teklif talebindeyse Teklif Talebi, gönderilmiş (ya da siparişe dönüşmüş) teklif talebindeyse Teklif Talebi Gönderildi, iptal olmayan bir siparişteyse Satınalma Siparişi; kalemler belgelerden çıkarılır ya da belgeler iptal edilirse Onaylandı'ya döner. Kalemler farklı aşamadaysa en ileri aşama yazılır (`Prc_P_MaterialRequestSyncStatus`). 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). +- 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 2026-10-13'te ölü artefakt olarak silindi. +- Talep satırı formu: Ürün; Miktar – Birim; Termin Tarihi – Satır Durumu; Talep Nedeni (en sonda). Termin başlığı talep ekranlarında ayrı anahtardır (`App.Listform.ListformField.RequiredDate`), ortak "Bitiş Tarihi" anahtarı başka modüllerde kullanıldığı için değiştirilmedi. +- Talebin durumu iş akışından gelir: `ApprovalStatus` boş (taslak) › Departman Onayı › Satınalma Onayı › Onaylandı ya da Reddedildi. Onaylanan talep satınalmada aynı alanda ilerler: kalemi taslak teklif talebindeyse Teklif Talebi, gönderilmiş (ya da siparişe dönüşmüş) teklif talebindeyse Teklif Talebi Gönderildi, iptal olmayan bir siparişteyse Satınalma Siparişi; kalemler belgelerden çıkarılır ya da belgeler iptal edilirse Onaylandı'ya döner. Kalemler farklı aşamadaysa en ileri aşama yazılır (`Prc_P_MaterialRequestSyncStatus`). Transfer kararı bu alanı değiştirmez. Ayrı `Status` kolonu yoktur; karşılama satır durumundan (Bekliyor / Tamamlandı / İptal) izlenir. ### 3. Menü ve ekranlar @@ -97,58 +109,88 @@ Satınalma (`App.Prc`) › Talepler (`App.Prc.MaterialRequests`): | 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 | +| Planlama | `App.Prc.MaterialRequestPlan` | onaylı talebin Bekliyor ve planlanacak miktarı kalan kalemleri; satırda Planla (diyalog), Düzenle yok; alt sekmeler Depo Stokları, Tedarikçiler, Son Alımlar | +| Plan Takibi | `App.Prc.MaterialRequestPlanTrack` | verilen kararlar (teklif kalemi / iç transfer satırı); salt okunur; satırda Teklif, Sipariş, Transfer butonları, Stoktan satırında Geri Al | | 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; 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). +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). Planlama'nın sekmeleri menüsüz alt formlardır: Depo Stokları (`App.Prc.MaterialRequestPlanStock`, `Inv_T_Stock`), Tedarikçiler (`App.Prc.MaterialRequestPlanSupplier`, `Inv_T_ProductSupplier`), Son Alımlar (`App.Prc.MaterialRequestPlanLastPurchase`, `Prc_V_PurchaseReceiptLine`: Envanter'de tamamlanan alımların satırları, siparişsiz alım dahil, iade hariç; fiyat ve sipariş no yalnız siparişli alımda dolar). Planla diyaloğunun üç ekranı da menüsüzdür: İç Transfer (`App.Prc.MaterialRequestPlanSource`, `Prc_V_MaterialRequestPlanSource`), Satınalma (`App.Prc.MaterialRequestPlanVendor`, `Prc_V_MaterialRequestPlanVendor`), Karşılama Planı (`App.Prc.MaterialRequestPlanLine`, `Prc_V_MaterialRequestPlanLine`). 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, BranchId (`Sas_T_Branch`), 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_MaterialRequestItem`: MaterialRequestId (FK, cascade), ProductId, Quantity, UomId (nvarchar, `Adm_T_Uom`), DueDate (termin), RequestReason, DeliveredQuantity, FromStockQuantity (stoktan karşılanan), LineStatus (Waiting / Done / Cancelled). - `Prc_T_RejectReason`: Name, SortOrder, IsActive. - 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ürler `Prc_P_MaterialRequestAfterSave(@Id)`, `Prc_P_MaterialRequestSyncStatus(@DocId)` (teklif/sipariş Recalc'i, durum işlemi ve belge silme sonrasında; `@DocId` boşsa onaylanmış bütün talepler). +- Görünüm `Prc_V_MaterialRequestItemPlan`: kalem başına PurchaseQuantity (satınalma payı), TransferQuantity (transfer payı), RemainingQuantity (planlanacak), kalemin biriminde. +- Görünüm `Prc_V_MaterialRequestPlan`: Planlama'nın kaynağı; kalem + talep başlığı + paylar + StockQuantity (bütün iç konumlar) + DueState (Late / Week / Later) + DraftQuantity (onay bekleyen taslak plan toplamı). +- Tablo `Prc_T_MaterialRequestPlanLine` (tenant + audit): MaterialRequestItemId (FK cascade), PlanMethod, SupplierId ya da SourceLocationId, Quantity — kalemin onaylanmamış dağıtımı; onay satırları siler. +- Görünümler `Prc_V_MaterialRequestPlanSource` (kalem × stoğu olan iç konum, teslim konumu dahil — IsDestination; OnHand, ReservedQuantity = açık transferlerde o konumdan istenen, FreeQuantity, taslak PlanQuantity; `Id` = kalem:konum — iç transfer kararının stok kuralı da budur), `Prc_V_MaterialRequestPlanVendor` (kalem × kiracının aktif kontağı; fiyat listesindeyse fiyat satırı, SortKey = fiyatlılar önce + ad, son alım tarihi, taslak PlanQuantity, tedarikçinin bu kalemi taşıyan taslak teklifi RfqId/RfqNo/RfqQuantity; `Id` = kalem:tedarikçi), `Prc_V_MaterialRequestPlanLine` (taslak satırı + kalemin birimi + satınalmada fiyat); üçü de `BaseId` = kalem. +- Görünüm `Prc_V_PurchaseReceiptLine`: Son Alımlar'ın kaynağı; tamamlanan alımın (iade hariç) yapılan satırı × sipariş kalemi; sipariş birim fiyatı alım satırının birimine çevrilir, `UntaxedAmount` = miktar × fiyat. +- Görünüm `Prc_V_MaterialRequestPlanTrack`: Plan Takibi'nin kaynağı; ihalenin kök teklif talebindeki talep kalemleri ∪ iç transfer satırları (iade hariç); `DocumentId`/`DocumentNo`/`DocumentStatus`, sipariş (`PurchaseOrderId`, `PurchaseOrderNo`, `OrderStatus`), `DoneQuantity`. +- Yordamlar `Prc_P_MaterialRequestAfterSave(@Id)`, `Prc_P_MaterialRequestSyncStatus(@DocId)` (teklif/sipariş Recalc'i, durum işlemi ve belge silme sonrasında; `@DocId` boşsa onaylanmış bütün talepler), `Prc_P_MaterialRequestPlanLineSave(@Id, @PlanMethod, @PlanQuantity, @TenantId, @LastModifierId)` (diyalog ızgaralarının batch kaydı; `@Id` = kalem:hedef), `Prc_P_MaterialRequestPlanConfirm(@Id, @TenantId, @LastModifierId)` (Onayla), `Prc_P_MaterialRequestPlanSuggest(@Id, @TenantId, @LastModifierId)` (Öner), `Prc_P_MaterialRequestStockUndo(@Id, @TenantId, @LastModifierId)` (Plan Takibi'nin Geri Al'ı; stoktan karşılama yoksa ya da kalem kapatılmışsa 50202), `Prc_P_MaterialRequestPlan(@Id, @PlanMethod, @PlanQuantity, @PlanSupplierId, @PlanSourceLocationId, @TenantId, @LastModifierId)` (onayın her taslak satırı için çağırdığı karar), `Prc_P_MaterialRequestItemSync(@TransferId)` (transferin kalemlerinin satır durumu; `Inv_P_TransferRecalc` ve transfer iptali çağırır). ### 5. İş kuralları ve hesaplar - `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. +- Talep ve satırları yalnız Taslak'ta (`ApprovalStatus` boş) değiştirilir (2026-10-13 kararı): onaya gönderilmiş talebe satır eklenemez, satırı değiştirilemez ve silinemez (alt form Insert/Update/Delete Before komutu; 50001/50005/50002); başlığın iş alanları (öncelik, talep eden, şube, departman, depo, konum, talep tarihi, açıklama) `Prc_TR_MaterialRequestLock` tetikleyicisiyle kilitlidir (50004) — kural ekran komutunda değil tetikleyicidedir, çünkü onay akışı da başlığı aynı güncelleme yolundan yazar; onay alanları, onaycı listeleri ve silme bayrağı serbesttir. Değişiklik için talep Taslak adımına alınır, düzenlenir ve yeniden onaya gönderilir. Planlama/teslim yordamlarının yazdığı kalem alanları (teslim edilen, stoktan karşılanan, satır durumu) kilide girmez. 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. - Şube ayrı alandır ve iki zinciri süzer: Şube › Departman, Şube › Depo › Konum; şube değişince departman, depo ve konum, depo değişince konum temizlenir. Talep eden değişince şubesi ve departmanı kullanıcının departmanından gelir; yeni kayıtta şube ve departman oturumdaki kullanıcınınkidir. Açıklama HTML editörüdür, formda tam satırdı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). +- Tüm Talepler'de düzenleme `UpdateCommand` ile yalnız `Prc_T_MaterialRequestItem`'ın `LineStatus` kolonunu 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. +- **Paylar** (`Prc_V_MaterialRequestItemPlan`, kalemin birimine `Inv_F_UomConvert` ile çevrilir): satınalma payı = teklif aşamasındaki (Taslak/Gönderildi) teklif talebindeki ya da iptal olmayan siparişe geçmiş teklif kalemindeki miktar; ihale kalemi bütün tedarikçilere kopyalandığı için ihale × ihale kalemi başına bir kez (en büyüğü) sayılır. Transfer payı = iptal olmayan iç transfer satırı; tamamlanan belgede yapılan, açık belgede istenen miktar (eksik tamamlamanın kalanı backorder'da istenir); iade belgesi sayılmaz. Planlanacak = talep − satınalma payı − transfer payı. +- **Taslak** (`Prc_P_MaterialRequestPlanLineSave`, kalem kilitlenerek — batch kaydı satırları eşzamanlı gönderir): talep onaylı (ya da satınalmada ilerleyen) ve kalem Bekliyor olmalı; miktar 0 ya da boşsa satır taslaktan çıkar. Taslak toplamı planlanacak kalanı (hata 50200), iç transfer / stoktan satırı konumun serbest stoğunu aşamaz; teslim konumuna yazılan satır Stock kararıdır; satınalmada tedarikçi aktif kontak olmalıdır. Taslak satırı Karşılama Planı'ndan da silinebilir. +- **Onayla** (`Prc_P_MaterialRequestPlanConfirm`, tek transaction): taslak boşsa reddedilir (50201); satırlar iç transfer, stoktan, satınalma sırasıyla `Prc_P_MaterialRequestPlan`'a gider, ardından taslak silinir. Bir satır reddedilirse hiçbir belge açılmaz, taslak yerinde kalır. +- **Karar** (`Prc_P_MaterialRequestPlan`, kalem kilitlenerek): talep onaylı ve kalem Bekliyor olmalı; plan miktarı > 0 ve ≤ planlanacak. + - Satınalma: tedarikçi zorunlu. Tedarikçinin talebin şubesi ve deposu için taslak teklif talebi varsa (en yenisi) kalem ona eklenir — kalem zaten oradaysa miktarı artar; yoksa yeni taslak teklif talebi açılır: numara `Prc.PurchaseRfq`, alım operasyon türü talebin deposunun ilk aktif alım türü, para birimi ve ödeme/teslimat koşulları kontak kartından, alıcı (satınalma sorumlusu) planlayan. Birim fiyat tedarikçinin fiyat listesinden (en düşük minimum miktar; listede yoksa 0), KDV ürünün alış oranı, teslim tarihi kalemin termini. Teklifin yeniden hesabı talebin durumunu Teklif Talebi yapar. + - İç Transfer: kaynak konum zorunlu; konum ve serbest stok `Prc_V_MaterialRequestPlanSource`'tan okunur (iç konum, teslim konumundan farklı, ürünün stoğu var; serbest stok yetmeli). + - Stoktan: belge açılmaz; teslim konumunun serbest stoğu yetmeli (50198). Miktar kalemin FromStockQuantity ve DeliveredQuantity değerine eklenir; satınalma payı olmayan, kalanı biten kalem Tamamlandı olur. Plan Takibi'nde belgesiz Stoktan satırı olarak görünür; satırdaki Geri Al kararı geri alır. Aynı kaynak → hedef için onaya girmemiş (Onay durumu boş ya da Onay Gerekmez) taslak iç transfer varsa satır ona eklenir ve kaynak belgeye talep no yazılır; yoksa kaynak deponun ilk aktif iç transfer türüyle yeni taslak açılır (sorumlu planlayan, kaynak belge talep no). Satırın istenen miktarı plan miktarıdır; belge `Inv_P_TransferAfterSave` ile numaralanır ve kaynak depo onaycısı yazılır — onay akışı İç Transferler'de başlatılır. +- **Kalem kapanışı** (`Prc_P_MaterialRequestItemSync`, transferin her yeniden hesabında ve iptalinde): satınalma payı olmayan, planlanacağı kalmayan Bekliyor kalem Tamamlandı olur; Tamamlandı kalem planlanacak miktar yeniden doğarsa (transfer iptal, satır silme) ve teslim edilen miktar talebe ulaşmamışsa Bekliyor'a döner. Transferin Doğrula'sı teslim edilen miktarı kaleme yazar (Envanter). +- **Tedarikçi fiyatı** (`Inv_P_TransferSupplierPrice`, alımın Doğrula'sında): siparişten açılan alım tamamlanınca ürünün tedarikçi fiyat listesi (`Inv_T_ProductSupplier`) siparişin birim fiyatıyla yenilenir (kullanıcı kararı 2026-10-13). Tedarikçi × ürün × birim × para birimi başına tek satır tutulur: alınan miktara uyan kademe (min. miktar ≤ alınan miktar olan en büyüğü) fiyat ve Son Alım Tarihi ile güncellenir, uyan satır yoksa yeni satır açılır (min. miktar 1 — 1'in altındaki alımda alınan miktar —, temin süresi siparişin onayından alıma geçen gün). Fiyatı sipariş verir: siparişsiz alım, iade ve fiyatı 0 olan kalem yazmaz. Planlama'nın varsayılan tedarikçisi ve teklif kalemi fiyatı bu listeden okunduğu için sonraki karar son alım fiyatıyla açılır. +- Planlama kartları: planlanacak kalem, geciken (termin geçmiş), 7 gün içinde, taslak planlı (onay bekleyen taslağı olan kalem). Plan Takibi kartları: toplam karar, satınalma, iç transfer, tamamlanan (gerçekleşen ≥ planlanan). ### 6. Yetki ve görünürlük -Yetki ağacı: `App.Prc` › `App.Prc.MaterialRequests` › her liste (+ Create/Update/Delete/Export/Import/Note); alt form `App.Prc.MaterialRequestLine` listenin altında. Talep edenlere Taleplerim (+Create, +Update), onaycılara ilgili onay listesi (+Update), satınalma ekibine Tüm Talepler verilir; satır alt formunun yetkisi de role verilmelidir. Onay listeleri yalnız kullanıcının onayına düşen kayıtları gösterir. Kiracı kapsamlı, şube filtresi yok. +Yetki ağacı: `App.Prc` › `App.Prc.MaterialRequests` › her liste (+ Create/Update/Delete/Export/Import; Note yalnızca tablo kaynaklı listede — view kaynaklı Taleplerim, Planlama, Plan Takibi ve diyalog ekranlarında Not yoktur); alt form `App.Prc.MaterialRequestLine` listenin altında, Planlama'nın sekmeleri ve diyalog ekranları (`App.Prc.MaterialRequestPlan{Stock,Supplier,LastPurchase,Source,Vendor,Line}`) `App.Prc.MaterialRequestPlan` altında. Talep edenlere Taleplerim (+Create, +Update), onaycılara ilgili onay listesi (+Update), satınalma ekibine Planlama (+Update — Planla butonu ve Onayla), sekmeleri, diyalog ekranları (İç Transfer ve Satınalma +Update — taslak yazma, Karşılama Planı +Delete — taslak silme), Plan Takibi ve Tüm Talepler verilir; diyalogdaki Teklif butonu Teklif Talepleri okuma yetkisini ister; Plan Takibi'nin butonları hedef ekranın okuma yetkisini ister (Teklif Talepleri, Satınalma Siparişleri, İç Transferler). Onay listeleri yalnız kullanıcının onayına düşen kayıtları gösterir. Yetkiler hiçbir role otomatik atanmaz. Kiracı kapsamlı; Taleplerim şube yetkilidir (`IsBranch`, 2026-10-14 kararı): kullanıcı yalnız atandığı şubelerin taleplerini görür ve formda yalnız onları seçer; şube seçilince kullanıcının o şubedeki varsayılan deposu ve konumu (Kullanıcılar › Yetkiler › Şube Yönetimi, `Sas_T_BranchUsers.DefaultWarehouseId/DefaultLocationId`) gelir, yeni talep departmanın şubesiyle (kullanıcı o şubeye atanmışsa) ve onun varsayılan depo/konumuyla açılır. Diğer talep listelerinde şube filtresi yok. ### 7. Entegrasyonlar -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. +Yönetim › Tanımlamalar › Onaycılar (onay yeri Satınalma); Yönetim › Roller (Satınalma Onayı Bekleyenler yetkisi); Envanter › Tanımlamalar › Ürünler (tedarikçi fiyat listesi), Depolar, Konumlar, Operasyon Türleri (deponun alım ve iç transfer türü); Envanter › Stok (Depo Stokları); Envanter › Operasyonlar › İç Transferler (transfer kararı, teslim edilen miktar, kalem kapanışı); Envanter › Operasyonlar › Alımlar (Son Alımlar; tamamlanan siparişli alım tedarikçi fiyatını yazar); Satınalma › Siparişler (satınalma kararı → teklif talebi); İK departmanları; Yönetim › Tanımlamalar › Diziler (`MaterialRequest`, `Prc.PurchaseRfq`). Akış e-posta bildirimi platformun iş akışı altyapısındadır. ### 8. Akış örneği -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. +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, Planlama ve diyalog ekranlarının güncelleme yetkisi vardır. +2. BT'den Ali Taleplerim'de yeni talep açar (MT-2026-00001), depo/konum (WH/Stock) 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. +4. Mehmet onaylar; talep Onaylandı olur, Ali'ye bilgi gider; kalem Planlama'da 10 planlanacak olarak görünür. +5. Mehmet satırı seçer: Depo Stokları'nda Depo-2/Raf A'da 4 adet, Son Alımlar'da 3K Kutu'dan 200 ₺'lik son alım, Tedarikçiler'de 3K Kutu ve 5 Mutlu Gıda fiyatları görünür. +6. Planla: diyalog İç Transfer sekmesiyle açılır (öneri Transfer); Depo-2/Raf A satırına 4 yazar, Kaydet. Satınalma sekmesinde 3K Kutu'ya 6 yazar, Kaydet. Karşılama Planı'nda iki satır görünür, listede Taslak Plan 10 olur. +7. Onayla: Raf A → talebin konumuna taslak iç transfer açılır, 3K Kutu'nun taslak teklif talebine (yoksa yeni RFQ) 6 adet eklenir; kalem listeden çıkar, talep Teklif Talebi olur. Satınalma sekmesindeki Teklif butonu teklif talebini yeni sekmede açar. +8. Plan Takibi'nde iki karar görünür; transfer Envanter'de onaylanıp tamamlanınca gerçekleşen 4 olur, teklif ihale/sipariş/alım akışıyla ilerler. ### 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 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. +- **Son Alımlar boş?** Sekme yalnız Doğrula ile stoğa girmiş alımları gösterir; taslak/hazır alım ve onaylanmış ama teslim alınmamış sipariş listelenmez. Siparişsiz alım listelenir ama fiyatı boştur. +- **Tedarikçi fiyatı alımdan sonra değişmedi?** Fiyatı yalnız siparişten açılan alım yazar; elle açılan alımın fiyatı yoktur. +- **Onaylanan kalem Planlama'da yok?** Kalem Bekliyor olmalı ve planlanacak miktarı kalmalı; tamamı teklife/transfere ayrılmış ya da Tüm Talepler'de Tamamlandı/İptal yapılmış kalem listelenmez. +- **"Alım operasyon türü tanımlı değil" / "iç transfer operasyon türü tanımlı değil"?** Envanter › Tanımlamalar › Operasyon Türleri'nde talebin deposu için aktif Alım, kaynak konumun deposu için aktif İç Transfer türü tanımlanmalıdır. +- **"Yeterli serbest stok yok"?** Kaynak konumdaki eldeki miktardan açık (Taslak/Bekleyen/Hazır) transferlerde o konumdan istenen miktar düşülür; başka konum seçin ya da miktarı azaltın. +- **Onaylamadan diyaloğu kapattım?** Taslak plan kalır; Planlama'da Taslak Plan kolonunda görünür, Planla ile açıp onaylayabilir ya da Karşılama Planı'ndan silebilirsiniz. +- **Onayla reddedildi?** Mesaj sebebi söyler (serbest stok taslak yazıldıktan sonra azalmış, kalan değişmiş ya da deponun operasyon türü yok); hiçbir belge açılmamıştır, taslağı düzeltip yeniden onaylayın. +- **Planladığım miktarı geri almak?** Teklif talebindeki kalemi silin ya da teklifi iptal edin; transferde satırı silin ya da transferi iptal edin — miktar Planlama'ya döner, transferle kapanan kalem yeniden açılır. - **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`. +- Tablolar: `sql/object/Prc_T_MaterialRequest.sql`, `Prc_T_MaterialRequestItem.sql`, `Prc_T_RejectReason.sql` (+ postgres eşleri); `Prc_T_MaterialRequestPlanLine.sql`. +- Görünümler: `Prc_V_MaterialRequestLine`, `Prc_V_MaterialRequestItemPlan`, `Prc_V_MaterialRequestPlan`, `Prc_V_MaterialRequestPlanTrack`, `Prc_V_PurchaseReceiptLine` (sql + postgres object); Envanter'de `Inv_P_TransferSupplierPrice` (Doğrula'dan). +- Tablo: `Prc_T_MaterialRequestPlanLine`; görünümler `Prc_V_MaterialRequestPlan{Source,Vendor,Line}` (sql + postgres). +- Yordamlar: `Prc_P_MaterialRequestAfterSave`, `Prc_P_MaterialRequestSyncStatus`, `Prc_P_MaterialRequestPlan`, `Prc_P_MaterialRequestPlanLineSave`, `Prc_P_MaterialRequestPlanConfirm`, `Prc_P_MaterialRequestItemSync` (sql + postgres); değişen `Inv_P_TransferRecalc`, `Inv_P_TransferSetStatus` (kalem eşlemesi çağrısı). +- Wizard'lar: `Prc_MaterialRequestLine.json`, `Prc_MyMaterialRequest.json`, `Prc_MaterialRequestDeptApproval.json`, `Prc_MaterialRequestPurchaseApproval.json`, `Prc_MaterialRequestPlan.json`, `Prc_MaterialRequestPlan{Stock,Supplier,LastPurchase}.json`, `Prc_MaterialRequestPlanTrack.json`, `Prc_MaterialRequest.json`, `Prc_RejectReason.json`; güncellenen `Adm_Approver.json`. +- Kaldırılan (2026-10-13): `Prc_PurchaseRfqImportItem.json`, `Prc_PurchaseOrderImportItem.json`, `Inventory_TransferImportItem.json` ve `Prc_V_MaterialRequestAvailableItem`, `Prc_V_PurchaseImportItem`, `Prc_P_PurchaseImportItem`, `Prc_V_MaterialRequestTransferItem`, `Inv_P_TransferImportItem`; ekranlar üst wizard'ların `Pending.ListFormCodes` kaydıyla migrate'te silinir. - Numaratör: `App.Definitions.Sequence` › `MaterialRequest`. - Geri alma: Wizard Manager'da talep bazlı silme (alt form en son değil, önce listeler); tablolar yalnız açık onayla düşürülür. @@ -200,17 +242,17 @@ _Henüz yazılmadı._ ### 1. Amaç ve kapsam -Satınalma ekibinin onaylanmış malzeme taleplerinden tedarikçilere teklif talebi (RFQ) açması, aynı ihtiyacı birden fazla tedarikçiye sorarak ihale gibi fiyat toplaması, gelen fiyat ve terminleri kıyaslayıp en uygun teklifi kalem bazında satınalma siparişine dönüştürmesi; gerekirse teklif toplamadan doğrudan sipariş yazması ve tedarikçiyle çerçeve sözleşme yönetmesi. Kullanıcılar satınalma personeli ve alıcılardır. Mal kabul Envanter › Operasyonlar › Alımlar'dadır ([App.Inventory.md](App.Inventory.md)); onaylanan sipariş orada taslak alım açar ve alınan miktar sipariş kalemine geri yazılır. Tedarikçinin linkten kendi fiyatını girdiği portal, tedarikçi faturası (faturalanan, Fatura Yükle) ve analitik dağılım kapsam dışıdır. +Satınalma ekibinin Planlama'da satınalmaya ayırdığı talep kalemleri için tedarikçilere teklif talebi (RFQ) açması, aynı ihtiyacı birden fazla tedarikçiye sorarak ihale gibi fiyat toplaması, gelen fiyat ve terminleri kıyaslayıp en uygun teklifi kalem bazında satınalma siparişine dönüştürmesi; gerekirse teklif toplamadan doğrudan sipariş yazması ve tedarikçiyle çerçeve sözleşme yönetmesi. Kullanıcılar satınalma personeli ve alıcılardır. Mal kabul Envanter › Operasyonlar › Alımlar'dadır ([App.Inventory.md](App.Inventory.md)); onaylanan sipariş orada taslak alım açar ve alınan miktar sipariş kalemine geri yazılır. Tedarikçinin linkten kendi fiyatını girdiği portal, tedarikçi faturası (faturalanan, Fatura Yükle) ve analitik dağılım kapsam dışıdır. ### 2. Analiz ve kararlar - Teklif talebi ve satınalma siparişi **ayrı belgelerdir** (`Prc_T_PurchaseRfq`, `Prc_T_PurchaseOrder`), ayrı numaratörle: `Prc.PurchaseRfq` (RFQ00001) ve `Prc.PurchaseOrder` (P00001). Sözleşme `Prc.PurchaseAgreement` (BO00001). - **Tedarikçi başına bir teklif belgesi.** Aynı ihtiyaç için açılan belgeler bir ihaledir: `TenderGroupId` ihalenin kök (ilk) belgesinin Id'sidir. Alternatif tedarikçiler **Alternatif Oluştur** modalında (`App.Prc.PurchaseRfqAlternativeSupplier`: ihalede belgesi olmayan aktif kontaklar) ListForm'un çoklu seçimiyle seçilir, **Seçilenler İçin Oluştur** butonu seçili her kontak için o anki kalemleriyle birlikte kopya belge açılır (fiyat tedarikçinin fiyat listesinden, para birimi ve koşullar kontak kartından). Bir tedarikçi ihalede bir kez bulunur. -- Bir teklif birden fazla malzeme talebinden oluşabilir: belgenin **Talep Kalemleri** sekmesi aktarılabilir bütün talep kalemlerini talebe göre gruplu listeler; satırlar ListForm'un çoklu seçimiyle (`Selection.Mode = multiple`, satır başı kutusu) seçilir ve sekmenin araç çubuğundaki **Seçilenleri Aktar** butonu (Commands, `OnClick`) seçili her satır için `list-form-data/update` çağırır; ekranın `UpdateCommand`'ı (`Prc_P_PurchaseImportItem @Id`) kalemi kopyalar. Ekran bir modalda açıksa (Talepten Aktar, Alternatif Oluştur) buton işi bitince modalı kapatır ve ana liste yenilenir; sekmede açıksa yalnız listeyi yeniler. Hata olursa modal açık kalır. Ayrı bir işaret kolonu yoktur. Aynı sekme teklifsiz yazılan taslak siparişte de vardır. Talep ilişkisi kalem düzeyindedir (`MaterialRequestItemId`). -- Popup (Yeni/Düzenle) formu yalnız belgenin kendi alanlarını taşır; talep aktarımı, alternatif, fiyat girişi ve durum işlemleri liste araç çubuğundaki butonlardadır (sekmelerden de yapılabilir). Vergi hariç / KDV / toplam kalemlerden hesaplandığı için formda değil listede görünür. +- Talep kalemleri teklif talebine yalnız **Satınalma › Talepler › Planlama**'dan gelir (Satınalma kararı; bkz. Talepler): kalem tedarikçinin aynı şube ve depodaki taslak teklif talebine eklenir, yoksa yeni taslak açılır. Bir teklif birden fazla malzeme talebinden oluşabilir. Teklif ve siparişteki eski Talep Kalemleri sekmesi ve Talepten Aktar butonu 2026-10-13'te kaldırıldı (karşılama kararı satınalmanındır, kalem iki yoldan iki kez karşılanmasın). Talep ilişkisi kalem düzeyindedir (`MaterialRequestItemId`); teklif kalemi silinir ya da teklif iptal edilirse miktar Planlama'ya döner. +- Popup (Yeni/Düzenle) formu yalnız belgenin kendi alanlarını taşır; alternatif, fiyat girişi ve durum işlemleri liste araç çubuğundaki butonlardadır (sekmelerden de yapılabilir). Vergi hariç / KDV / toplam kalemlerden hesaplandığı için formda değil listede görünür. - Hızlı fiyat girişi: **Fiyat Karşılaştırması** sekmesi toplu düzenleme modundadır; ihalenin bütün tedarikçilerinin birim fiyat, teslim tarihi ve Seçili değerleri tek tabloda satır içinde yazılıp birlikte kaydedilir. Aynı ekran liste araç çubuğundaki ayrı **Fiyat Girişi** butonuyla modalda da açılır. Satır kaydı `Prc_P_PurchaseRfqComparisonSave`'dir: batch kaydı satırları eşzamanlı istekle gönderdiği için yordam önce ihalenin kök teklifini kilitler (`UPDLOCK`/`FOR UPDATE`, `TenderGroupId`), sonra satırı günceller ve teklifi yeniden hesaplar; grid ihaledeki bütün tedarikçi tekliflerinin satırlarını taşıdığı için kilit ihale düzeyindedir ve satırlar sırayla işlenir. `IX_Prc_T_PurchaseRfqLine_PurchaseRfqId` yeniden hesabın tablo taraması yapıp başka tekliflerin satırlarını kilitlemesini önler. - Fiyat Girişi'nde birim fiyatı 0'dan büyük kaydedilen teklif, yanıtı `Waiting` ise kendiliğinden `Quoted` olur; boşsa Teklif Tarihi kayıt anı, Teklif Geçerliliği sipariş son tarihi (`OrderDeadline`) yazılır (`Prc_P_PurchaseRfqComparisonSave`). Elle girilmiş tarih ve `NotQuoted` yanıtı değişmez. -- Araç çubuğu butonları ListForm'un Commands (özel buton) kaydıyla, `OnClick` modunda yazılır; çekirdek değişmez. Talepten Aktar, Alternatif Oluştur ve Fiyat Girişi seçili satırla aynı `PurchaseDocGrid` diyaloğunu (`ui/src/views/purchasing/PurchaseDocGridDialog.tsx`) açar; buton `listFormCode`, başlık (`title`) ve açıklama (`info`) dil anahtarını verir. Diyalog belgeye (`BaseId`) süzülmüş tek ekranı (`App.Prc.*ImportItem`, `App.Prc.PurchaseRfqAlternativeSupplier`, `App.Prc.PurchaseRfqComparison`) platformun Grid bileşeniyle gösterir; ayrı bir uç yoktur. +- Araç çubuğu butonları ListForm'un Commands (özel buton) kaydıyla, `OnClick` modunda yazılır; çekirdek değişmez. Alternatif Oluştur ve Fiyat Girişi seçili satırla aynı `PurchaseDocGrid` diyaloğunu (`ui/src/views/purchasing/PurchaseDocGridDialog.tsx`) açar; buton `listFormCode`, başlık (`title`) ve açıklama (`info`) dil anahtarını verir. Diyalog belgeye (`BaseId`) süzülmüş tek ekranı (`App.Prc.PurchaseRfqAlternativeSupplier`, `App.Prc.PurchaseRfqComparison`) platformun Grid bileşeniyle gösterir; ayrı bir uç yoktur. - Teklif durumları: Taslak (Teklif Talebi) › Teklif Talebi Gönderildi (tedarikçiye e-posta kuyruğa alındı) › Satınalma Siparişi (dönüştürüldü) / İptal Edildi. Sipariş durumları: Taslak › Onaylandı / İptal; tekliften dönüşen sipariş onaylı açılır. - **Kıyas (Fiyat Karşılaştırması):** fiyat `Sas_H_Currency.Rate` ile TL'ye çevrilir (kur = 1 birimin TL karşılığı). Puan = Fiyat ağırlığı × (en düşük TL fiyat / TL fiyat) + Termin ağırlığı × (en kısa termin günü / termin günü); termin günü = teslim tarihi − ihalenin açılış günü (en az 1). Ağırlıklar ihale genelinde tektir, varsayılan %70 fiyat / %30 termin, toplamı 100 olmalıdır. En yüksek puan **Önerilen**'dir. Fiyatı 0, terminsiz, "Teklif Verilmedi" ya da iptal edilmiş belgenin satırı puanlanmaz. Kalemin teslim tarihi boşsa belgenin Beklenen Geliş'i kullanılır. - **Siparişe Dönüştür kalem bazındadır** (ihale genelinde, ihaledeki herhangi bir belgeden): kalemin **Seçili** satırı varsa o, yoksa Önerilen satır kazanır. Kazanan her teklif belgesi için ayrı satınalma siparişi açılır ve sipariş teklifin şubesini, operasyon türünü ve deposunu taşır; en az bir kalem kazanan teklif Satınalma Siparişi, hiç kazanamayan teklif İptal Edildi olur. @@ -228,27 +270,27 @@ Satınalma (`App.Prc`) › Siparişler (`App.Prc.Orders`): | Ekran | Kod | Not | | --- | --- | --- | -| Teklif Talepleri | `App.Prc.PurchaseRfq` | tüm durumlar; sekmeler Ürünler, Talep Kalemleri, Tedarikçi Teklifi, Diğer Bilgiler, Teklifler (Ekle = alternatif), Fiyat Karşılaştırması (toplu düzenleme) | -| Satınalma Siparişleri | `App.Prc.PurchaseOrder` | tüm durumlar; ekle/sil (yalnız teklifsiz taslak); sekmeler Ürünler, Talep Kalemleri, Diğer Bilgiler, Teklifler | +| Teklif Talepleri | `App.Prc.PurchaseRfq` | tüm durumlar; sekmeler Ürünler, Tedarikçi Teklifi, Diğer Bilgiler, Teklifler (Ekle = alternatif), Fiyat Karşılaştırması (toplu düzenleme) | +| Satınalma Siparişleri | `App.Prc.PurchaseOrder` | tüm durumlar; ekle/sil (yalnız teklifsiz taslak); sekmeler Ürünler, Diğer Bilgiler, Teklifler | | Sipariş Ürünleri | `App.Prc.PurchaseOrderProduct` | sipariş × kalem, her satır bir kalem; tüm durumlar, kalemsiz sipariş yok; salt okunur; satırdaki Siparişi Aç siparişin detay sayfasını açar (`/admin/form/App.Prc.PurchaseOrder/@PurchaseOrderId`) | -Menüsüz alt formlar: teklif tarafında `App.Prc.PurchaseRfqLine`, `App.Prc.PurchaseRfqImportItem`, `App.Prc.PurchaseRfqQuote`, `App.Prc.PurchaseRfqOther`, `App.Prc.PurchaseRfqAlternative`, `App.Prc.PurchaseRfqAlternativeSupplier` (yalnız Alternatif Oluştur modalında), `App.Prc.PurchaseRfqComparison`; sipariş tarafında `App.Prc.PurchaseOrderLine`, `App.Prc.PurchaseOrderImportItem`, `App.Prc.PurchaseOrderOther`, `App.Prc.PurchaseOrderAlternative`; sözleşmede `App.Prc.PurchaseAgreementLine`. +Menüsüz alt formlar: teklif tarafında `App.Prc.PurchaseRfqLine`, `App.Prc.PurchaseRfqQuote`, `App.Prc.PurchaseRfqOther`, `App.Prc.PurchaseRfqAlternative`, `App.Prc.PurchaseRfqAlternativeSupplier` (yalnız Alternatif Oluştur modalında), `App.Prc.PurchaseRfqComparison`; sipariş tarafında `App.Prc.PurchaseOrderLine`, `App.Prc.PurchaseOrderOther`, `App.Prc.PurchaseOrderAlternative`; sözleşmede `App.Prc.PurchaseAgreementLine`. ### 4. Veri modeli Tüm tablolar kiracı + tam audit + soft delete. - `Prc_T_PurchaseRfq`: RfqNo, TenderGroupId, SupplierId, SupplierReference, AgreementId, BranchId, OperationTypeId, WarehouseId (üçü de zorunlu; Şube › Depo › Operasyon Türü zinciriyle süzülür; alternatife ve siparişe kopyalanır), CurrencyId, OrderDeadline, ExpectedArrival, SupplierResponse (Waiting/Quoted/NotQuoted), QuoteDate, QuoteValidUntil, BuyerUserId, SourceDocument, ProjectId, IncotermId, IncotermLocation, PaymentTermId, Terms, PriceWeight (70), DeliveryWeight (30), UntaxedAmount, TaxAmount, TotalAmount, Status (Draft/Sent/Purchase/Cancelled), PendingAction, LastSentDate. -- `Prc_T_PurchaseRfqLine`: PurchaseRfqId (FK cascade), TenderLineId (alternatiflerde aynı kalemi eşler), ProductId, Description, Quantity, UomId, UnitPrice, TaxRate, Amount, DeliveryDate (tedarikçinin termini; aktarımda talebin istenen termini), MaterialRequestItemId, IsSelected. +- `Prc_T_PurchaseRfqLine`: PurchaseRfqId (FK cascade), TenderLineId (alternatiflerde aynı kalemi eşler), ProductId, Description, Quantity, UomId, UnitPrice, TaxRate, Amount, DeliveryDate (tedarikçinin termini; Planlama'dan gelen kalemde talebin istenen termini), MaterialRequestItemId, IsSelected. - `Prc_T_PurchaseOrder`: OrderNo, PurchaseRfqId (kaynak teklif), SupplierId, SupplierReference, AgreementId, BranchId, OperationTypeId (Inv_T_OperationType), WarehouseId (teslim alınacak depo, Inv_T_Warehouse; üçü de zorunlu; Şube › Depo › Operasyon Türü zinciriyle süzülür), CurrencyId, ExpectedArrival, ConfirmDate, ArrivalDate, BuyerUserId, SourceDocument, ProjectId, IncotermId, IncotermLocation, PaymentTermId, Terms, tutarlar, Status (Draft/Purchase/Cancelled), PendingAction, LastSentDate. - `Prc_T_PurchaseOrderLine`: PurchaseOrderId (FK cascade), ProductId, Description, Quantity, UomId, UnitPrice, TaxRate, Amount, DeliveryDate, MaterialRequestItemId, PurchaseRfqLineId, ReceivedQuantity (alınan; alımın Doğrula'sı yazar, alım iadesi düşer). -- Görünümler: `Prc_V_MaterialRequestAvailableItem` (aktarılabilir talep kalemleri), `Prc_V_PurchaseImportItem` (Talep Kalemleri sekmesi: kalem alabilen açık belge × aynı şubedeki aktarılabilir kalem, `Id` = belge|kalem), `Prc_V_PurchaseRfqComparison` (kıyas ve puan), `Prc_V_PurchaseRfqAlternative` (ihalenin belgeleri; teklif ve sipariş için `BaseId`), `Prc_V_PurchaseRfqAlternativeSupplier` (açık teklif × ihalede belgesi olmayan aktif kontak, `Id` = teklif|kontak), `Prc_V_PurchaseAgreementLine` (sözleşmenin sipariş edilen miktarı), `Prc_V_PurchaseOrderLine` (Sipariş Ürünleri: silinmemiş sipariş × silinmemiş kalem, `Id` kalemin Id'si; vergi hariç ve KDV kalemin KDV dahil tutarından ayrıştırılır, Talep No kalemin malzeme talebinden). -- Yordamlar: `Prc_P_PurchaseRfq{AfterSave,Recalc,ComparisonSave,CreateAlternative,FromAgreement,Send,SetStatus,Award}`, `Prc_P_PurchaseOrder{AfterSave,Recalc,Send,SetStatus}`, `Prc_P_PurchaseImportItem` (teklif ve sipariş için ortak, kalem bazlı aktarım), `Adm_P_SequenceNext`. +- Görünümler: `Prc_V_PurchaseRfqComparison` (kıyas ve puan), `Prc_V_PurchaseRfqAlternative` (ihalenin belgeleri; teklif ve sipariş için `BaseId`), `Prc_V_PurchaseRfqAlternativeSupplier` (açık teklif × ihalede belgesi olmayan aktif kontak, `Id` = teklif|kontak), `Prc_V_PurchaseAgreementLine` (sözleşmenin sipariş edilen miktarı), `Prc_V_PurchaseOrderLine` (Sipariş Ürünleri: silinmemiş sipariş × silinmemiş kalem, `Id` kalemin Id'si; vergi hariç ve KDV kalemin KDV dahil tutarından ayrıştırılır, Talep No kalemin malzeme talebinden). +- Yordamlar: `Prc_P_PurchaseRfq{AfterSave,Recalc,ComparisonSave,CreateAlternative,FromAgreement,Send,SetStatus,Award}`, `Prc_P_PurchaseOrder{AfterSave,Recalc,Send,SetStatus}`, `Adm_P_SequenceNext`; talep kalemini teklife ekleyen `Prc_P_MaterialRequestPlan` (Talepler). ### 5. İş kuralları ve hesaplar - Teklif kaydı ve Tedarikçi Teklifi / Diğer Bilgiler sekmesindeki kayıt sonrası `Prc_P_PurchaseRfqAfterSave`: ağırlık toplamı 100 kontrolü; boş ödeme/teslimat koşulu ve Incoterm konumu tedarikçinin Satınalma sekmesinden (alıcı yalnız ilk kayıtta); yanıt Bekleniyor dışına alınınca boş teklif tarihi; ağırlıkların ihalenin diğer belgelerine yazılması; sözleşme kalemleri (yalnız kalemsiz belgede); tutarlar; buton işlemi (`PendingAction`). -- Aktarım (`Prc_P_PurchaseImportItem`, seçilen her satır için): belge teklif aşamasında (teklif) ya da taslak (sipariş); talep Onaylandı; kalem Karşılama = Satınalma, Durum = Bekliyor; iptal olmayan bir teklifte ya da siparişte yer almıyor. Fiyat: sözleşme kalemi › tedarikçi fiyatı (`Inv_T_ProductSupplier`) › 0. Kalem bu arada başka belgeye geçmişse hata. +- Planlama'dan gelen kalem (`Prc_P_MaterialRequestPlan`): fiyat tedarikçinin fiyat listesinden (`Inv_T_ProductSupplier`, en düşük minimum miktar) › 0, KDV ürünün alış oranı, teslim tarihi talebin termini; aynı kalem aynı taslakta varsa miktarı artar. - Alternatif (`Prc_P_PurchaseRfqCreateAlternative @Key, @UserId`, `@Key` = teklif|kontak, seçilen her satır için): belge teklif aşamasında olmalı; tedarikçinin ihalede iptal olmayan belgesi varsa hata. - Kalem Tutarı KDV dahildir: Tutar = yuvarla(yuvarla(Miktar × Birim Fiyat) × (1 + Oran/100)); Vergi Hariç = Σ yuvarla(Miktar × Birim Fiyat); KDV = Σ(Tutar − kalemin vergi hariç tutarı); Toplam = Vergi Hariç + KDV = Σ Tutar. Formdaki script ve `Prc_P_Purchase{Rfq,Order}Recalc` aynı formülü kullanır; kalem her eklenip/değişip/silindiğinde yeniden hesaplanır. - Teklif işlemleri: E-posta ile Gönder (taslak ya da gönderilmiş; kalem ve tedarikçi e-postası şart; Taslak → Gönderildi) · İhaleyi Gönder (ihalenin bütün taslak belgeleri) · Siparişe Dönüştür (taslak ya da gönderilmiş; ihale daha önce dönüştürülmemiş olmalı) · İptal (siparişe dönüşmüş teklif iptal edilemez) · Taslak olarak ayarla (yalnız iptalden; ihale siparişe dönüşmüşse olmaz). @@ -260,16 +302,16 @@ Tüm tablolar kiracı + tam audit + soft delete. ### 6. Yetki ve görünürlük -Yetki ağacı: `App.Prc` › `App.Prc.Orders` › teklif ve sipariş listeleri, `App.Prc` › `App.Prc.PurchaseAgreement` (+ Create/Update/Delete/Export/Import/Note). Her alt formun yetkisi kendi listesinin altındadır: teklif sekmeleri `App.Prc.PurchaseRfq`, sipariş sekmeleri `App.Prc.PurchaseOrder` altında; sekmeler ekranlar arasında paylaşılmaz. Teklif kullanıcısına Fiyat Karşılaştırması'nın Update yetkisi de verilmelidir (fiyat ve seçim buradan girilir). Yetkiler hiçbir role otomatik atanmaz. Kiracı kapsamlı, şube filtresi yok. +Yetki ağacı: `App.Prc` › `App.Prc.Orders` › teklif ve sipariş listeleri, `App.Prc` › `App.Prc.PurchaseAgreement` (+ Create/Update/Delete/Export/Import/Note). Her alt formun yetkisi kendi listesinin altındadır: teklif sekmeleri `App.Prc.PurchaseRfq`, sipariş sekmeleri `App.Prc.PurchaseOrder` altında; sekmeler ekranlar arasında paylaşılmaz. Teklif kullanıcısına Fiyat Karşılaştırması'nın Update yetkisi de verilmelidir (fiyat ve seçim buradan girilir). Yetkiler hiçbir role otomatik atanmaz. Kiracı kapsamlı; Teklif Talepleri ve Satınalma Siparişleri şube yetkilidir (`IsBranch`, 2026-10-14 kararı): kullanıcı yalnız atandığı şubelerin belgelerini görür, formda yalnız onları seçer ve şube seçilince kullanıcının o şubedeki varsayılan deposu gelir (yeni belge departmanın şubesi ve deposuyla açılır). Bir kullanıcı hiçbir şubeye atanmamışsa bu iki listede satır görmez. ### 7. Entegrasyonlar -Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmesi varsayılanları); Envanter (Ürünler, tedarikçi fiyatları, Operasyon Türleri; Operasyonlar › Alımlar — sipariş onayında taslak alım, alınan miktar); Satınalma › Tanımlamalar (Ödeme Koşulları, Teslimat Koşulları); Proje modülü; Talepler (aktarım); Para Birimleri (kur); Bildirimler: tipler `TeklifTalebiGonderildi`, `SatinalmaSiparisiGonderildi`, her birinin Custom/Mail kuralı (kural kapatılırsa e-posta kuyruğa girmez; NotificationWorker gönderir); Diziler (`Prc.PurchaseRfq`, `Prc.PurchaseOrder`, `Prc.PurchaseAgreement`). +Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmesi varsayılanları); Envanter (Ürünler, tedarikçi fiyatları, Operasyon Türleri; Operasyonlar › Alımlar — sipariş onayında taslak alım, alınan miktar); Satınalma › Tanımlamalar (Ödeme Koşulları, Teslimat Koşulları); Proje modülü; Talepler (Planlama › Satınalma kararı); Para Birimleri (kur); Bildirimler: tipler `TeklifTalebiGonderildi`, `SatinalmaSiparisiGonderildi`, her birinin Custom/Mail kuralı (kural kapatılırsa e-posta kuyruğa girmez; NotificationWorker gönderir); Diziler (`Prc.PurchaseRfq`, `Prc.PurchaseOrder`, `Prc.PurchaseAgreement`). ### 8. Akış örneği 1. Ali'nin MT-2026-00015 ve Ayşe'nin MT-2026-00016 talepleri onaylanır. -2. Satınalma Teklif Talepleri'nde yeni kayıt açar (tedarikçi "3K Kutu"), kaydeder; detayda Talep Kalemleri sekmesinde iki talebin kalemlerini işaretleyip Kaydet der. Teklifler sekmesinde Ekle ile "5 Mutlu Gıda" ve "Kartela"yı ekler. RFQ00001 (3K) kalemleriyle, RFQ00002 ve RFQ00003 kopya olarak aynı ihalede açılır; Kaynak = MT-2026-00015, MT-2026-00016. +2. Satınalma Planlama'da iki talebin kalemlerini Satınalma kararıyla tedarikçi "3K Kutu"ya ayırır; ilk karar 3K Kutu için taslak teklif talebi açar, ikincisi aynı taslağa eklenir. Teklif Talepleri'nde belgenin Teklifler sekmesinde Ekle ile "5 Mutlu Gıda" ve "Kartela"yı ekler. RFQ00001 (3K) kalemleriyle, RFQ00002 ve RFQ00003 kopya olarak aynı ihalede açılır; Kaynak = MT-2026-00015, MT-2026-00016. 3. Araç çubuğunda İhaleyi Gönder: üç tedarikçiye fiyatsız teklif e-postası kuyruğa alınır, belgeler Gönderildi olur. 4. Tedarikçilerin dönüşleri Fiyat Karşılaştırması sekmesinde tek tabloda birim fiyat ve teslim tarihi olarak yazılıp bir kez kaydedilir; her ürün için en yüksek puanlı satır Önerilen işaretlenir. Kullanıcı bir üründe daha pahalı ama güvendiği tedarikçiyi Seçili yapar. 5. Siparişe Dönüştür butonu: kazanan iki tedarikçiye P00007 ve P00008 açılır (Kaynak RFQ00001 / RFQ00003), RFQ00002 İptal Edildi olur. @@ -277,9 +319,9 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes ### 9. Sık sorulanlar -- **Butonlar nerede?** Listede bir belge seçilir; işlemler araç çubuğundadır (detay sayfasının araç çubuğunda da görünür). Buton yetkisi: durum işlemleri ekranın Update, Talepten Aktar ilgili Talep Kalemleri ekranının Update, Alternatif Oluştur Teklifler ekranının Create yetkisi. -- **Talep Kalemleri sekmesi boş?** Talep onaylanmış olmalı ve aktarılabilir (Satınalma, Bekliyor, başka açık teklifte ya da siparişte olmayan) kalemi bulunmalı; belge Teklif Talebi / Gönderildi (sipariş için Taslak) durumunda olmalı; belge yalnız kendi şubesindeki taleplerin kalemlerini görür. -- **Talepten Aktar / Alternatif Oluştur / Fiyat Girişi modalı nasıl kullanılır?** Talepten Aktar'da aktarılacak satırlar satır başındaki kutuyla seçilir (başlıktaki kutu sayfadakilerin tümünü seçer) ve araç çubuğundaki Seçilenleri Aktar'a basılır. Alternatif Oluştur'da ihaleye eklenecek tedarikçiler satır başındaki kutuyla seçilip Seçilenler İçin Oluştur'a basılır (iki modal da iş bitince kendiliğinden kapanır). Fiyat Girişi ayrı butondur: bütün tedarikçilerin fiyat ve terminleri yazılıp tablonun Kaydet'ine basılır, modal Kapat ile kapanır. +- **Butonlar nerede?** Listede bir belge seçilir; işlemler araç çubuğundadır (detay sayfasının araç çubuğunda da görünür). Buton yetkisi: durum işlemleri ekranın Update, Alternatif Oluştur Teklifler ekranının Create yetkisi. +- **Talep kalemini teklife nasıl eklerim?** Satınalma › Talepler › Planlama'da satırdaki Planla ile Satınalma sekmesinde tedarikçiye miktar yazıp Onayla'ya basın; kalem tedarikçinin taslak teklif talebine eklenir. +- **Alternatif Oluştur / Fiyat Girişi modalı nasıl kullanılır?** Alternatif Oluştur'da ihaleye eklenecek tedarikçiler satır başındaki kutuyla seçilip Seçilenler İçin Oluştur'a basılır (modal iş bitince kendiliğinden kapanır). Fiyat Girişi ayrı butondur: bütün tedarikçilerin fiyat ve terminleri yazılıp tablonun Kaydet'ine basılır, modal Kapat ile kapanır. - **Alternatif ekledim, kalemleri eksik?** Alternatif, açıldığı andaki kalemleri kopyalar; sonradan eklenen kalem yalnız eklendiği belgededir. - **Önerilen neden boş?** Satırın fiyatı ve teslim tarihi (ya da belgenin Beklenen Geliş'i) girilmiş olmalı; Teklif Verilmedi yanıtlı ya da iptal edilmiş belge kıyasa girmez. - **E-posta gitmedi?** Tedarikçinin kontak e-postasını, Bildirim Kuralları'nda ilgili tipin Mail kuralını ve Bildirimler ekranındaki satırı (IsSent) kontrol edin; NotificationWorker aktif olmalı. @@ -288,8 +330,8 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes ### 10. Dosyalar ve geri alma - Tablolar: `sql/object/Prc_T_PurchaseRfq.sql`, `Prc_T_PurchaseRfqLine.sql`, `Prc_T_PurchaseOrder.sql`, `Prc_T_PurchaseOrderLine.sql`, `Prc_T_PurchaseAgreement.sql`, `Prc_T_PurchaseAgreementLine.sql` (+ postgres). -- Görünüm/yordam: `Prc_V_MaterialRequestAvailableItem`, `Prc_V_PurchaseImportItem`, `Prc_V_PurchaseRfqComparison`, `Prc_V_PurchaseRfqAlternative`, `Prc_V_PurchaseRfqAlternativeSupplier`, `Prc_V_PurchaseAgreementLine`, `Prc_V_PurchaseOrderLine`, `Prc_P_PurchaseRfq*`, `Prc_P_PurchaseOrder*`, `Prc_P_PurchaseImportItem`, `Adm_P_SequenceNext` (sql + postgres object). -- Wizard'lar: `Prc_PurchaseRfq{,Line,ImportItem,Quote,Other,Alternative,Comparison}.json`, `Prc_PurchaseOrder{,Line,ImportItem,Other,Alternative,Product}.json`, `Prc_PurchaseAgreement{,Line}.json`. +- Görünüm/yordam: `Prc_V_PurchaseRfqComparison`, `Prc_V_PurchaseRfqAlternative`, `Prc_V_PurchaseRfqAlternativeSupplier`, `Prc_V_PurchaseAgreementLine`, `Prc_V_PurchaseOrderLine`, `Prc_P_PurchaseRfq*`, `Prc_P_PurchaseOrder*`, `Adm_P_SequenceNext` (sql + postgres object). +- Wizard'lar: `Prc_PurchaseRfq{,Line,Quote,Other,Alternative,AlternativeSupplier,Comparison}.json`, `Prc_PurchaseOrder{,Line,Other,Alternative,Product}.json`, `Prc_PurchaseAgreement{,Line}.json`. - Arayüz: `ui/src/views/purchasing/PurchaseDocGridDialog.tsx` (kayıt: `DialogShowComponent`, ad `PurchaseDocGrid`). - Veri: Diziler `Prc.PurchaseRfq`, `Prc.PurchaseOrder`, `Prc.PurchaseAgreement`; Bildirim Türleri ve Kuralları `TeklifTalebiGonderildi`, `SatinalmaSiparisiGonderildi`. - Geri alma: önce ana ekranlar (`Prc_PurchaseRfq`, `Prc_PurchaseOrder`, `Prc_PurchaseAgreement`), sonra alt formlar `delete_wizard` ile silinir; tablolar yalnız açık onayla düşürülür. @@ -436,7 +478,7 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | 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=Prc.MaterialRequest, RequesterUserId=@USERID, BranchId=, DepartmentId=, RequestDate=@NOW, Priority=0 | +| Form varsayılanları | RequestNo=Prc.MaterialRequest, RequesterUserId=@USERID, DepartmentId=, RequestDate=@NOW, Priority=0, Priority=5, BranchId=, WarehouseId=, LocationId= | | 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 | @@ -444,7 +486,7 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | `RequestNo` | Talep No | dxTextBox | | ✓ | | | `Priority` | Öncelik (0-3) | dxRating | ✓ | ✓ | | | `RequesterUserId` | Talep Eden | dxSelectBox | ✓ | ✓ | sorgu: AbpUsers · script | -| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch | +| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch · script | | `DepartmentId` | Departman | dxSelectBox | ✓ | ✓ | sorgu: Hr_T_Department (← BranchId) | | `WarehouseId` | Depo | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Warehouse (← BranchId) | | `LocationId` | Konum | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Location (← WarehouseId) | @@ -533,14 +575,95 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | `ApprovalDate` | Onay Tarihi | dxDateBox | | | | | `ApprovalDescription` | Onay Açıklaması | dxTextBox | | | | +#### Planlama — `App.Prc.MaterialRequestPlan` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Prc_MaterialRequestPlan.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Prc.MaterialRequests` › `App.Prc.MaterialRequestPlan` (sıra 4) | +| Yetki | `App.Prc.MaterialRequestPlan` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | +| Açıklama | Planlama — satınalma ekibi onaylanmış her talep kaleminin nasıl karşılanacağına karar verir: satın alınır (teklif talebi) ya da stoktan taşınır (iç transfer). | +| Kaynak | `Prc_V_MaterialRequestPlan` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | +| Kapsam | Kiracı | +| Alt formlar | `App.Prc.MaterialRequestPlanStock` (ProductId → ProductId), `App.Prc.MaterialRequestPlanSupplier` (ProductId → ProductId), `App.Prc.MaterialRequestPlanLastPurchase` (ProductId → ProductId) | +| Widget'lar | `App.Widget.Total`, `App.StaticLookup.Overdue`, `App.StaticLookup.Within7Days`, `App.Prc.MaterialRequestPlan.Widget.Draft` | +| Butonlar | `App.Prc.MaterialRequestPlan.Plan` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `MaterialRequestId` | Malzeme Talebi | dxTextBox | | | | +| `RequestNo` | Talep No | dxTextBox | | | | +| `Priority` | Öncelik | dxRating | | | | +| `DepartmentId` | Departman | dxSelectBox | | | sorgu: Hr_T_Department | +| `BranchId` | Şube Adı | dxSelectBox | | | sorgu: Sas_T_Branch | +| `WarehouseId` | Depo | dxSelectBox | | | sorgu: Inv_T_Warehouse | +| `LocationId` | Hedef Konum | dxSelectBox | | | sorgu: Inv_T_Location | +| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | +| `CategoryId` | Kategori | dxSelectBox | | | sorgu: Inv_T_ProductCategory | +| `Quantity` | Miktar | dxNumberBox | | | | +| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | +| `DueDate` | Termin Tarihi | dxDateBox | | | | +| `DueState` | Termin Durumu | dxSelectBox | | | liste: Late, Week, Later | +| `PurchaseQuantity` | Satınalma Payı | dxNumberBox | | | | +| `TransferQuantity` | Transfer Payı | dxNumberBox | | | | +| `RemainingQuantity` | Planlanacak | dxNumberBox | | | | +| `StockQuantity` | Stok | dxNumberBox | | | | +| `DraftQuantity` | Taslak Plan | dxNumberBox | | | | +| `RequestReason` | Talep Nedeni | dxTextArea | | | | +| `RequesterUserId` | Talep Eden | dxSelectBox | | | sorgu: AbpUsers | +| `RequestDate` | İstek Tarihi | dxDateBox | | | | + +#### Plan Takibi — `App.Prc.MaterialRequestPlanTrack` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Prc_MaterialRequestPlanTrack.json` | +| Yol | Liste (Wizard) | +| Menü | `App.Prc.MaterialRequests` › `App.Prc.MaterialRequestPlanTrack` (sıra 5) | +| Yetki | `App.Prc.MaterialRequestPlanTrack` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | +| Açıklama | Plan Takibi — Planlama'da verilen her karar, ürettiği belge ve belgenin geldiği aşamayla; her satır bir karardır. | +| Kaynak | `Prc_V_MaterialRequestPlanTrack` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | +| Kapsam | Kiracı | +| Widget'lar | `App.Widget.Total`, `App.StaticLookup.Purchase`, `App.StaticLookup.InternalTransfer`, `App.StaticLookup.Done` | +| Butonlar | `App.Prc.MaterialRequestPlanTrack.OpenRfq`, `App.Prc.MaterialRequestPlanTrack.OpenOrder`, `App.Prc.MaterialRequestPlanTrack.OpenTransfer`, `App.Prc.MaterialRequestPlanTrack.UndoStock` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `DocumentId` | Belge | dxTextBox | | | | +| `PurchaseOrderId` | Satınalma Siparişi | dxTextBox | | | | +| `PlanDate` | Plan Tarihi | dxDateBox | | | | +| `RequestNo` | Talep No | dxTextBox | | | | +| `DepartmentId` | Departman | dxSelectBox | | | sorgu: Hr_T_Department | +| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | +| `PlanMethod` | Karar | dxSelectBox | | | liste: Purchase, Transfer, Stock | +| `DocumentNo` | Belge No | dxTextBox | | | | +| `DocumentStatus` | Durum | dxSelectBox | | | liste: Draft, Sent, Purchase, Waiting, Ready, Done, Cancelled | +| `SupplierId` | Tedarikçi | dxSelectBox | | | sorgu: Adm_T_Contact | +| `SourceLocationId` | Kaynak Konum | dxSelectBox | | | sorgu: Inv_T_Location | +| `LocationId` | Hedef Konum | dxSelectBox | | | sorgu: Inv_T_Location | +| `PurchaseOrderNo` | Sipariş No | dxTextBox | | | | +| `OrderStatus` | Sipariş Durumu | dxSelectBox | | | liste: Draft, Purchase, Cancelled | +| `Quantity` | Miktar | dxNumberBox | | | | +| `DoneQuantity` | Gerçekleşen | dxNumberBox | | | | +| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | +| `DueDate` | Termin Tarihi | dxDateBox | | | | +| `WarehouseId` | Depo | dxSelectBox | | | sorgu: Inv_T_Warehouse | +| `BranchId` | Şube Adı | dxSelectBox | | | sorgu: Sas_T_Branch | +| `PlannerUserId` | Satınalma Sorumlusu | dxSelectBox | | | sorgu: AbpUsers | + #### Tüm Talepler — `App.Prc.MaterialRequest` | Özellik | Değer | | --- | --- | | Wizard | `wizard/Prc_MaterialRequest.json` | | Yol | Liste (Wizard) | -| Menü | `App.Prc.MaterialRequests` › `App.Prc.MaterialRequest` (sıra 5) | -| Yetki | `App.Prc.MaterialRequest` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Menü | `App.Prc.MaterialRequests` › `App.Prc.MaterialRequest` (sıra 6) | +| Yetki | `App.Prc.MaterialRequest` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | 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 -> Talepler | | Kaynak | `Prc_V_MaterialRequestLine` · filtre `"IsDeleted" = 'false'` | @@ -552,13 +675,13 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | | `RequestNo` | Talep No | dxTextBox | | | | -| `Priority` | Öncelik (0-3) | dxRating | ✓ | | | +| `Priority` | Öncelik | dxRating | ✓ | | | | `RequesterUserId` | Talep Eden | dxSelectBox | ✓ | | sorgu: AbpUsers | | `BranchId` | Şube Adı | dxSelectBox | ✓ | | sorgu: Sas_T_Branch | | `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 | ✓ | | | +| `RequestDate` | İstek Tarihi | dxDateBox | ✓ | | | | `Description` | Genel Açıklama | dxHtmlEditor | | | | | `ApprovalStatus` | Onay Durumu | dxTextBox | | | | | `ApprovalUserName` | Onaylayan Kullanıcı Adı | dxTextBox | | | | @@ -568,11 +691,9 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | `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` @@ -589,8 +710,8 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | -| Komutlar | InsertBefore: SQL · DeleteBefore: SQL | -| Form varsayılanları | FulfillmentMethod=Purchase, DeliveredQuantity=0, LineStatus=Waiting, Quantity=1, PurchaseResponsibleUserId=@USERID | +| Komutlar | InsertBefore: SQL · UpdateBefore: SQL · DeleteBefore: SQL | +| Form varsayılanları | DeliveredQuantity=0, LineStatus=Waiting, Quantity=1 | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | @@ -598,13 +719,176 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | `ProductId` | Ürün | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Product · script | | `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 | +#### Son Alımlar — `App.Prc.MaterialRequestPlanLastPurchase` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Prc_MaterialRequestPlanLastPurchase.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Prc.MaterialRequestPlanLastPurchase` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | +| Açıklama | Son Alımlar — Planlama'da seçili talep kaleminin ürününün tamamlanan alımları (Envanter › Alımlar), en yenisi üstte. | +| Kaynak | `Prc_V_PurchaseReceiptLine` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | +| Kapsam | Kiracı | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | +| `EffectiveDate` | Alım Tarihi | dxDateBox | | | | +| `TransferNo` | Fiş No | dxTextBox | | | | +| `PartnerId` | Tedarikçi | dxSelectBox | | | sorgu: Adm_T_Contact | +| `Quantity` | Miktar | dxNumberBox | | | | +| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | +| `UnitPrice` | Birim Fiyat | dxNumberBox | | | | +| `CurrencyId` | Para Birimi | dxSelectBox | | | sorgu: Sas_H_Currency | +| `UntaxedAmount` | Vergi Hariç Tutar | dxNumberBox | | | | +| `OrderNo` | Sipariş No | dxTextBox | | | | +| `WarehouseId` | Depo | dxSelectBox | | | sorgu: Inv_T_Warehouse | +| `RequestNo` | Talep No | dxTextBox | | | | + +#### Karşılama Planı — `App.Prc.MaterialRequestPlanLine` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Prc_MaterialRequestPlanLine.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Prc.MaterialRequestPlanLine` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | +| Açıklama | Karşılama Planı — kalemin Planla diyaloğundaki, onay bekleyen taslak dağıtımı. | +| Kaynak | `Prc_V_MaterialRequestPlanLine` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✗ · sil ✓ · cell | +| Kapsam | Kiracı | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `BaseId` | Ana Belge | dxTextBox | | | | +| `PlanMethod` | Karar | dxSelectBox | | | liste: Purchase, Transfer, Stock | +| `SupplierId` | Tedarikçi | dxSelectBox | | | sorgu: Adm_T_Contact | +| `SourceLocationId` | Kaynak Konum | dxSelectBox | | | sorgu: Inv_T_Location | +| `Quantity` | Miktar | dxNumberBox | | | | +| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | +| `Price` | Birim Fiyat | dxNumberBox | | | | +| `CurrencyId` | Para Birimi | dxSelectBox | | | sorgu: Sas_H_Currency | + +#### İç Transfer — `App.Prc.MaterialRequestPlanSource` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Prc_MaterialRequestPlanSource.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Prc.MaterialRequestPlanSource` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | +| Açıklama | İç Transfer — Planla diyaloğunun İç Transfer sekmesi: talep kaleminin ürününün stoğu olan iç konumlar. | +| Kaynak | `Prc_V_MaterialRequestPlanSource` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · cell | +| Kapsam | Kiracı | +| Butonlar | `App.Prc.MaterialRequestPlan.TakeMax`, `App.Prc.MaterialRequestPlan.PlanSelected` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `BaseId` | Ana Belge | dxTextBox | | | | +| `BranchId` | Şube Adı | dxSelectBox | | | sorgu: Sas_T_Branch | +| `WarehouseId` | Depo | dxSelectBox | | | sorgu: Inv_T_Warehouse | +| `LocationId` | Konum | dxSelectBox | | | sorgu: Inv_T_Location | +| `UomId` | Birim | dxTextBox | | | | +| `PlanQuantity` | Plan Miktarı | dxNumberBox | | | | +| `OnHand` | Eldeki Miktar | dxNumberBox | | | | +| `ReservedQuantity` | Rezerve Miktar | dxNumberBox | | | | +| `FreeQuantity` | Serbest Miktar | dxNumberBox | | | | +| `IsDestination` | Teslim Konumu | dxCheckBox | | | | + +#### Depo Stokları — `App.Prc.MaterialRequestPlanStock` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Prc_MaterialRequestPlanStock.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Prc.MaterialRequestPlanStock` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Depo Stokları — Planlama'da seçili talep kaleminin ürününün bütün konumlardaki eldeki stoğu, lot bazında. | +| Kaynak | `Inv_T_Stock` · filtre `"IsDeleted" = 'false' AND "Quantity" <> 0` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | +| Kapsam | Kiracı | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | +| `BranchId` | Şube Adı | dxSelectBox | | | sorgu: Sas_T_Branch | +| `WarehouseId` | Depo | dxSelectBox | | | sorgu: Inv_T_Warehouse | +| `LocationId` | Konum | dxSelectBox | | | sorgu: Inv_T_Location | +| `LotNo` | Lot/Seri No | dxTextBox | | | | +| `Quantity` | Miktar | dxNumberBox | | | | +| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | +| `InDate` | Giriş Tarihi | dxDateBox | | | | +| `LastMoveDate` | Son Hareket | dxDateBox | | | | + +#### Tedarikçiler — `App.Prc.MaterialRequestPlanSupplier` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Prc_MaterialRequestPlanSupplier.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Prc.MaterialRequestPlanSupplier` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Açıklama | Tedarikçiler — Planlama'da seçili talep kaleminin ürününün fiyat listesi: hangi tedarikçi, hangi fiyat ve teslim süresiyle satıyor. | +| Kaynak | `Inv_T_ProductSupplier` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · popup | +| Kapsam | Kiracı | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `ProductId` | Ürün | dxTextBox | | | | +| `ContactId` | Tedarikçi | dxSelectBox | | | sorgu: Adm_T_Contact | +| `MinQuantity` | Min. Miktar | dxNumberBox | | | | +| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | +| `Price` | Birim Fiyat | dxNumberBox | | | | +| `CurrencyId` | Para Birimi | dxSelectBox | | | sorgu: Sas_H_Currency | +| `LeadTimeDays` | Teslim Süresi (gün) | dxNumberBox | | | | +| `LastPurchaseDate` | Son Alım Tarihi | dxDateBox | | | | + +#### Satınalma — `App.Prc.MaterialRequestPlanVendor` + +| Özellik | Değer | +| --- | --- | +| Wizard | `wizard/Prc_MaterialRequestPlanVendor.json` | +| Yol | Liste (Wizard) | +| Menü | Menüsüz (alt form) | +| Yetki | `App.Prc.MaterialRequestPlanVendor` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | +| Açıklama | Satınalma — Planla diyaloğunun Satınalma sekmesi: bütün aktif kontaklar; ürünün fiyat listesindeki tedarikçiler fiyatıyla önce, diğerleri fiyatsız sonra gelir. | +| Kaynak | `Prc_V_MaterialRequestPlanVendor` · filtre `"IsDeleted" = 'false'` | +| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | +| Düzenleme | ekle ✗ · düzenle ✓ · sil ✗ · cell | +| Kapsam | Kiracı | +| Butonlar | `App.Prc.MaterialRequestPlan.TakeMax`, `App.Prc.MaterialRequestPlanTrack.OpenRfq`, `App.Prc.MaterialRequestPlan.PlanSelected` | + +| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | +| --- | --- | --- | --- | --- | --- | +| `BaseId` | Ana Belge | dxTextBox | | | | +| `RfqId` | Teklif Talebi | dxTextBox | | | | +| `SuggestRank` | SuggestRank | dxNumberBox | | | | +| `ContactId` | Tedarikçi | dxSelectBox | | | sorgu: Adm_T_Contact | +| `PlanQuantity` | Plan Miktarı | dxNumberBox | | | | +| `Price` | Birim Fiyat | dxNumberBox | | | | +| `CurrencyId` | Para Birimi | dxSelectBox | | | sorgu: Sas_H_Currency | +| `MinQuantity` | Min. Miktar | dxNumberBox | | | | +| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | +| `LeadTimeDays` | Teslim Süresi (gün) | dxNumberBox | | | | +| `LastPurchaseDate` | Son Alım Tarihi | dxDateBox | | | | +| `MaxQuantity` | En Fazla | dxNumberBox | | | | +| `RfqNo` | Teklif Talep No | dxTextBox | | | | +| `RfqQuantity` | Teklifteki Miktar | dxNumberBox | | | | + ### Sözleşmeler (`App.Prc.PurchaseAgreement`) #### Sözleşmeler — `App.Prc.PurchaseAgreement` @@ -682,16 +966,16 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | -| Alt formlar | `App.Prc.PurchaseRfqLine` (Id → PurchaseRfqId), `App.Prc.PurchaseRfqImportItem` (Id → BaseId), `App.Prc.PurchaseRfqQuote` (Id → Id), `App.Prc.PurchaseRfqOther` (Id → Id), `App.Prc.PurchaseRfqAlternative` (Id → BaseId), `App.Prc.PurchaseRfqComparison` (Id → BaseId) | +| Alt formlar | `App.Prc.PurchaseRfqLine` (Id → PurchaseRfqId), `App.Prc.PurchaseRfqQuote` (Id → Id), `App.Prc.PurchaseRfqOther` (Id → Id), `App.Prc.PurchaseRfqAlternative` (Id → BaseId), `App.Prc.PurchaseRfqComparison` (Id → BaseId) | | Widget'lar | `App.Widget.Draft`, `App.Widget.Sent`, `App.Widget.Expired`, `App.Widget.Completed` | | Komutlar | InsertAfter: `Prc_P_PurchaseRfqAfterSave` · UpdateBefore: SQL · UpdateAfter: `Prc_P_PurchaseRfqAfterSave` · DeleteBefore: SQL | -| Form varsayılanları | RfqNo=Prc.PurchaseRfq, BuyerUserId=@USERID, CurrencyId=TRY, Status=Draft, BranchId= | -| Butonlar | `App.Prc.PurchaseRfq.ImportRequests`, `App.Prc.PurchaseRfq.CreateAlternative`, `App.Prc.PurchaseRfq.PriceEntry`, `App.Prc.PurchaseOrder.Action.Send`, `App.Prc.PurchaseRfq.Action.SendTender`, `App.Prc.PurchaseRfq.Action.Award`, `App.Prc.PurchaseOrder.Action.Cancel`, `App.Prc.PurchaseOrder.Action.Draft` | +| Form varsayılanları | RfqNo=Prc.PurchaseRfq, BuyerUserId=@USERID, CurrencyId=TRY, Status=Draft, BranchId=, WarehouseId= | +| Butonlar | `App.Prc.PurchaseRfq.CreateAlternative`, `App.Prc.PurchaseRfq.PriceEntry`, `App.Prc.PurchaseOrder.Action.Send`, `App.Prc.PurchaseRfq.Action.SendTender`, `App.Prc.PurchaseRfq.Action.Award`, `App.Prc.PurchaseOrder.Action.Cancel`, `App.Prc.PurchaseOrder.Action.Draft` | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | | `SupplierId` | Tedarikçi | dxSelectBox | ✓ | ✓ | sorgu: Adm_T_Contact · script | -| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch | +| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch · script | | `WarehouseId` | Depo | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Warehouse (← BranchId) | | `OperationTypeId` | Operasyon Türü | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_OperationType (← WarehouseId) | | `RfqNo` | Teklif Talep No | dxTextBox | ✓ | ✓ | | @@ -726,18 +1010,18 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | | Düzenleme | ekle ✓ · düzenle ✓ · sil ✓ · popup | | Kapsam | Kiracı | -| Alt formlar | `App.Prc.PurchaseOrderLine` (Id → PurchaseOrderId), `App.Prc.PurchaseOrderImportItem` (Id → BaseId), `App.Prc.PurchaseOrderOther` (Id → Id), `App.Prc.PurchaseOrderAlternative` (Id → BaseId) | +| Alt formlar | `App.Prc.PurchaseOrderLine` (Id → PurchaseOrderId), `App.Prc.PurchaseOrderOther` (Id → Id), `App.Prc.PurchaseOrderAlternative` (Id → BaseId) | | Widget'lar | `App.Widget.Draft`, `App.Prc.PurchaseOrder.Widget.AwaitingArrival`, `App.Prc.PurchaseOrder.Widget.LateReceipt`, `App.Widget.TotalRevenue` | | Komutlar | InsertAfter: `Prc_P_PurchaseOrderAfterSave` · UpdateBefore: SQL · UpdateAfter: `Prc_P_PurchaseOrderAfterSave` · DeleteBefore: SQL · DeleteAfter: `Prc_P_MaterialRequestSyncStatus` | -| Form varsayılanları | OrderNo=Prc.PurchaseOrder, BuyerUserId=@USERID, CurrencyId=TRY, Status=Draft, BranchId= | -| Butonlar | `App.Prc.PurchaseRfq.ImportRequests`, `App.Prc.PurchaseOrder.Action.Confirm`, `App.Prc.PurchaseOrder.Action.Send`, `App.Prc.PurchaseOrder.Action.Cancel`, `App.Prc.PurchaseOrder.Action.Draft` | +| Form varsayılanları | OrderNo=Prc.PurchaseOrder, BuyerUserId=@USERID, CurrencyId=TRY, Status=Draft, BranchId=, WarehouseId= | +| Butonlar | `App.Prc.PurchaseOrder.Action.Confirm`, `App.Prc.PurchaseOrder.Action.Send`, `App.Prc.PurchaseOrder.Action.Cancel`, `App.Prc.PurchaseOrder.Action.Draft` | | Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | | --- | --- | --- | --- | --- | --- | | `SupplierId` | Tedarikçi | dxSelectBox | ✓ | ✓ | sorgu: Adm_T_Contact · script | | `OrderNo` | Referans | dxTextBox | ✓ | ✓ | | | `AgreementId` | Sözleşme | dxSelectBox | | ✓ | sorgu: Prc_T_PurchaseAgreement (← SupplierId,BranchId) | -| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch | +| `BranchId` | Şube Adı | dxSelectBox | ✓ | ✓ | sorgu: Sas_T_Branch · script | | `WarehouseId` | Depo | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_Warehouse (← BranchId) | | `OperationTypeId` | Operasyon Türü | dxSelectBox | ✓ | ✓ | sorgu: Inv_T_OperationType (← WarehouseId) | | `Status` | Durum | dxSelectBox | ✓ | ✓ | liste: Draft, Purchase, Cancelled | @@ -762,7 +1046,7 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | Wizard | `wizard/Prc_PurchaseOrderProduct.json` | | Yol | Liste (Wizard) | | Menü | `App.Prc.Orders` › `App.Prc.PurchaseOrderProduct` (sıra 3) | -| Yetki | `App.Prc.PurchaseOrderProduct` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Prc.PurchaseOrderProduct` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Sipariş Ürünleri — satınalma siparişlerinin kalemleri, siparişin başlık bilgileriyle yan yana; her satır bir sipariş kalemidir. | | Kaynak | `Prc_V_PurchaseOrderLine` · filtre `"IsDeleted" = 'false'` | | Görünümler | Grid, Card, Pivot, Chart (açılış grid) | @@ -828,33 +1112,6 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | `DeliveryDate` | Teslim Tarihi | dxDateBox | | ✓ | | | `MaterialRequestItemId` | Talep | dxSelectBox | | ✓ | sorgu: Prc_T_MaterialRequestItem | -#### Teklif Talep Kalemleri — `App.Prc.PurchaseRfqImportItem` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/Prc_PurchaseRfqImportItem.json` | -| Yol | Liste (Wizard) | -| Menü | Menüsüz (alt form) | -| Yetki | `App.Prc.PurchaseRfqImportItem` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Teklif Talep Kalemleri — onaylı malzeme taleplerinin henüz teklif istenmemiş kalemleri, açık teklif talebi için listelenir. | -| Geliştirme talebi | Satınalma -> Siparişler | -| Kaynak | `Prc_V_PurchaseImportItem` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · batch | -| Kapsam | Kiracı | -| Butonlar | `App.Prc.PurchaseImportItem.TransferSelected` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `BaseId` | Ana Belge | dxTextBox | | | | -| `RequestNo` | Talep No | dxTextBox | | | | -| `RequesterUserId` | Talep Eden | dxSelectBox | | | sorgu: AbpUsers | -| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | -| `Quantity` | Miktar | dxNumberBox | | | | -| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | -| `DueDate` | Bitiş Tarihi | dxDateBox | | | | -| `RequestReason` | Talep Nedeni | dxTextBox | | | | - #### Tedarikçi Teklifi — `App.Prc.PurchaseRfqQuote` | Özellik | Değer | @@ -911,7 +1168,7 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | Wizard | `wizard/Prc_PurchaseRfqAlternative.json` | | Yol | Liste (Wizard) | | Menü | Menüsüz (alt form) | -| Yetki | `App.Prc.PurchaseRfqAlternative` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Prc.PurchaseRfqAlternative` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | İhale Teklifleri — aynı ihalenin diğer teklif talepleri. | | Geliştirme talebi | Satınalma -> Siparişler | | Kaynak | `Prc_V_PurchaseRfqAlternative` · filtre `"IsDeleted" = 'false'` | @@ -939,7 +1196,7 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | Wizard | `wizard/Prc_PurchaseRfqComparison.json` | | Yol | Liste (Wizard) | | Menü | Menüsüz (alt form) | -| Yetki | `App.Prc.PurchaseRfqComparison` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Prc.PurchaseRfqComparison` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Fiyat Karşılaştırması — ihalenin her kalemi tedarikçi bazında yan yana, fiyat ve termine göre puanlanmış. | | Geliştirme talebi | Satınalma -> Siparişler | | Kaynak | `Prc_V_PurchaseRfqComparison` · filtre `"IsDeleted" = 'false'` | @@ -996,33 +1253,6 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | `DeliveryDate` | Teslim Tarihi | dxDateBox | | ✓ | | | `MaterialRequestItemId` | Talep | dxSelectBox | | ✓ | sorgu: Prc_T_MaterialRequestItem | -#### Sipariş Talep Kalemleri — `App.Prc.PurchaseOrderImportItem` - -| Özellik | Değer | -| --- | --- | -| Wizard | `wizard/Prc_PurchaseOrderImportItem.json` | -| Yol | Liste (Wizard) | -| Menü | Menüsüz (alt form) | -| Yetki | `App.Prc.PurchaseOrderImportItem` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | -| Açıklama | Sipariş Talep Kalemleri — onaylı malzeme taleplerinin henüz hiçbir teklifte ya da siparişte olmayan kalemleri, teklifsiz yazılan taslak sipariş için listelenir. | -| Geliştirme talebi | Satınalma -> Siparişler | -| Kaynak | `Prc_V_PurchaseImportItem` | -| Görünümler | Grid, Card, Pivot, Chart (açılış grid) | -| Düzenleme | ekle ✗ · düzenle ✗ · sil ✗ · batch | -| Kapsam | Kiracı | -| Butonlar | `App.Prc.PurchaseImportItem.TransferSelected` | - -| Alan | Başlık | Editör | Zorunlu | Formda | Kaynak | -| --- | --- | --- | --- | --- | --- | -| `BaseId` | Ana Belge | dxTextBox | | | | -| `RequestNo` | Talep No | dxTextBox | | | | -| `RequesterUserId` | Talep Eden | dxSelectBox | | | sorgu: AbpUsers | -| `ProductId` | Ürün | dxSelectBox | | | sorgu: Inv_T_Product | -| `Quantity` | Miktar | dxNumberBox | | | | -| `UomId` | Birim | dxSelectBox | | | sorgu: Adm_T_Uom | -| `DueDate` | Bitiş Tarihi | dxDateBox | | | | -| `RequestReason` | Talep Nedeni | dxTextBox | | | | - #### Diğer Bilgiler — `App.Prc.PurchaseOrderOther` | Özellik | Değer | @@ -1054,7 +1284,7 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | Wizard | `wizard/Prc_PurchaseOrderAlternative.json` | | Yol | Liste (Wizard) | | Menü | Menüsüz (alt form) | -| Yetki | `App.Prc.PurchaseOrderAlternative` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Prc.PurchaseOrderAlternative` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Kaynak Teklifler — satınalma siparişinin dönüştürüldüğü ihalenin teklif talepleri. | | Geliştirme talebi | Satınalma -> Siparişler | | Kaynak | `Prc_V_PurchaseRfqAlternative` · filtre `"IsDeleted" = 'false'` | @@ -1082,7 +1312,7 @@ Yönetim › Tanımlamalar › Kontaklar (tedarikçi, e-posta, Satınalma sekmes | Wizard | `wizard/Prc_PurchaseRfqAlternativeSupplier.json` | | Yol | Liste (Wizard) | | Menü | Menüsüz (alt form) | -| Yetki | `App.Prc.PurchaseRfqAlternativeSupplier` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Prc.PurchaseRfqAlternativeSupplier` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Alternatif Tedarikçiler — ihalede henüz teklif talebi olmayan aktif kontaklar, açık teklif talebine alternatif eklemek için listelenir. | | Geliştirme talebi | Satınalma -> Siparişler | | Kaynak | `Prc_V_PurchaseRfqAlternativeSupplier` | diff --git a/configs/seeds/docs/modules/App.Prj.md b/configs/seeds/docs/modules/App.Prj.md index cf859047..d7db8dd6 100644 --- a/configs/seeds/docs/modules/App.Prj.md +++ b/configs/seeds/docs/modules/App.Prj.md @@ -975,7 +975,7 @@ Talep, raporun yalnızca ay bazında gösterilmesini istiyor. Çeyrek bazlı top | Wizard | `wizard/Prj_ProjectCostSummary.json` | | Yol | Liste (Wizard) | | Menü | Menüsüz (alt form) | -| Yetki | `App.Prj.ProjectCostSummary` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Prj.ProjectCostSummary` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Adam / Ay Oranları ve Detaylı Maliyet Raporu — projenin salt okunur özeti: Planlanan ve Gerçek için birer satır. | | Geliştirme talebi | Proje Modülü | | Kaynak | `Prj_V_ProjectCostSummary` | @@ -1006,7 +1006,7 @@ Talep, raporun yalnızca ay bazında gösterilmesini istiyor. Çeyrek bazlı top | Wizard | `wizard/Prj_ManMonth.json` | | Yol | Liste (Wizard) | | Menü | `App.Prj` › `App.Prj.ManMonth` (sıra 5) | -| Yetki | `App.Prj.ManMonth` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Prj.ManMonth` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Adam/Ay Oranları — proje bazında personelin ilgili aylarda iş paketlerinde geçirdiği yüzdesel çalışma oranları; ay ölçeğinde Gantt olarak gösterilir. | | Geliştirme talebi | Proje Modülü | | Kaynak | `Prj_V_ManMonthGantt` | @@ -1035,7 +1035,7 @@ Talep, raporun yalnızca ay bazında gösterilmesini istiyor. Çeyrek bazlı top | Wizard | `wizard/Prj_ResourceList.json` | | Yol | Liste (Wizard) | | Menü | `App.Prj` › `App.Prj.ResourceList` (sıra 6) | -| Yetki | `App.Prj.ResourceList` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Prj.ResourceList` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Kaynak Listesi — tüm projelerin planlanan ve gerçekleşen kaynaklarının tek yerde salt okunur listesi. | | Geliştirme talebi | Proje Modülü | | Kaynak | `Prj_V_ResourceList` | @@ -1072,7 +1072,7 @@ Talep, raporun yalnızca ay bazında gösterilmesini istiyor. Çeyrek bazlı top | Wizard | `wizard/Prj_PersonnelManMonth.json` | | Yol | Liste (Wizard) | | Menü | `App.Prj` › `App.Prj.PersonnelManMonth` (sıra 7) | -| Yetki | `App.Prj.PersonnelManMonth` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Prj.PersonnelManMonth` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Personel Adam/Ay Oranları — tüm projelerde personelin aylık iş paketi oranlarının ve bunlardan çıkan gerçek maliyetin salt okunur listesi. | | Geliştirme talebi | Proje Modülü | | Kaynak | `Prj_V_PersonnelManMonth` | @@ -1103,7 +1103,7 @@ Talep, raporun yalnızca ay bazında gösterilmesini istiyor. Çeyrek bazlı top | Wizard | `wizard/Prj_BudgetReport.json` | | Yol | Liste (Wizard) | | Menü | `App.Prj` › `App.Prj.BudgetReport` (sıra 8) | -| Yetki | `App.Prj.BudgetReport` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import`, `.Note` | +| Yetki | `App.Prj.BudgetReport` + `.Create`, `.Update`, `.Delete`, `.Export`, `.Import` | | Açıklama | Proje Bütçe Raporu — projelerin planlanan ve gerçekleşen maliyetlerinin aylık takibi; ay ölçeğinde Gantt olarak gösterilir (salt okunur). | | Geliştirme talebi | Proje Modülü | | Kaynak | `Prj_V_BudgetMonthly` | diff --git a/configs/seeds/postgres/object/Inv_P_TransferImportItem.sql b/configs/seeds/postgres/object/Inv_P_TransferImportItem.sql deleted file mode 100644 index 7090b2fb..00000000 --- a/configs/seeds/postgres/object/Inv_P_TransferImportItem.sql +++ /dev/null @@ -1,21 +0,0 @@ --- Talepten Aktar: seçilen malzeme talebi kalemini (p_key = belge|kalem) taslak iç transfere satır olarak ekler; kalanı (talep − teslim) aktarılır. --- Belgenin hedef konumu boşsa talebin konumu yazılır. -CREATE OR REPLACE PROCEDURE public."Inv_P_TransferImportItem"(p_key varchar) -LANGUAGE plpgsql AS $$ -DECLARE v_doc uuid; v_tenant uuid; v_item uuid; v_product uuid; v_description varchar(256); v_quantity numeric(18, 4); v_uom varchar(64); v_location uuid; -BEGIN - SELECT "BaseId", "TenantId", "MaterialRequestItemId", "ProductId", "RequestReason", "Quantity", "UomId", "LocationId" - INTO v_doc, v_tenant, v_item, v_product, v_description, v_quantity, v_uom, v_location - FROM "Prc_V_MaterialRequestTransferItem" - WHERE "Id" = p_key; - IF v_doc IS NULL THEN - RAISE EXCEPTION 'Talep kalemi artık aktarılamaz: belge taslak değil, kalem başka bir transfere aktarılmış ya da talep değişmiş.' USING ERRCODE = 'P0001', DETAIL = '50319'; - END IF; - - INSERT INTO "Inv_T_TransferLine" ("Id", "TenantId", "TransferId", "ProductId", "Description", "DemandQuantity", "Quantity", "UomId", "MaterialRequestItemId", "CreationTime", "IsDeleted") - VALUES (gen_random_uuid(), v_tenant, v_doc, v_product, v_description, v_quantity, 0, v_uom, v_item, NOW() AT TIME ZONE 'UTC', false); - - UPDATE "Inv_T_Transfer" SET "DestinationLocationId" = COALESCE("DestinationLocationId", v_location) WHERE "Id" = v_doc; - CALL public."Inv_P_TransferRecalc"(v_doc); -END; -$$; diff --git a/configs/seeds/postgres/object/Inv_P_TransferRecalc.sql b/configs/seeds/postgres/object/Inv_P_TransferRecalc.sql index 6aa5fa01..dda57683 100644 --- a/configs/seeds/postgres/object/Inv_P_TransferRecalc.sql +++ b/configs/seeds/postgres/object/Inv_P_TransferRecalc.sql @@ -39,5 +39,8 @@ BEGIN INNER JOIN "Inv_T_Product" p ON p."Id" = l."ProductId" WHERE l."TransferId" = p_id AND l."IsDeleted" = false) WHERE t."Id" = p_id; + + -- Satır eklenince, silinince ya da belge tamamlanınca talep kaleminin planlanmış payı değişir. + CALL public."Prc_P_MaterialRequestItemSync"(p_id); END; $$; diff --git a/configs/seeds/postgres/object/Inv_P_TransferSetStatus.sql b/configs/seeds/postgres/object/Inv_P_TransferSetStatus.sql index c845f3d2..f0c48161 100644 --- a/configs/seeds/postgres/object/Inv_P_TransferSetStatus.sql +++ b/configs/seeds/postgres/object/Inv_P_TransferSetStatus.sql @@ -49,6 +49,8 @@ BEGIN RAISE EXCEPTION 'Tamamlanmış ya da iptal edilmiş belge iptal edilemez.' USING ERRCODE = 'P0001', DETAIL = '50307'; END IF; UPDATE "Inv_T_Transfer" SET "Status" = 'Cancelled' WHERE "Id" = p_id; + -- İptal edilen transferin payı talep kalemine geri döner. + CALL public."Prc_P_MaterialRequestItemSync"(p_id); ELSIF p_action = 'Return' THEN IF v_status <> 'Done' THEN RAISE EXCEPTION 'Yalnız tamamlanmış belge iade edilebilir.' USING ERRCODE = 'P0001', DETAIL = '50308'; diff --git a/configs/seeds/postgres/object/Inv_P_TransferSupplierPrice.sql b/configs/seeds/postgres/object/Inv_P_TransferSupplierPrice.sql new file mode 100644 index 00000000..19cd129e --- /dev/null +++ b/configs/seeds/postgres/object/Inv_P_TransferSupplierPrice.sql @@ -0,0 +1,50 @@ +-- Tamamlanan siparişli alım ürünün tedarikçi fiyat listesini (Inv_T_ProductSupplier) günceller: tedarikçi × ürün × birim × +-- para birimi başına tek satır tutulur. Alınan miktara uyan kademe (MinQuantity ≤ miktar olan en büyüğü) siparişin +-- birim fiyatı ve son alım tarihiyle güncellenir; uyan satır yoksa yeni satır açılır (temin süresi = onaydan alıma gün). +-- Fiyatı sipariş verir: siparişsiz alım, iade ve fiyatı 0 olan kalem yazmaz. +CREATE OR REPLACE PROCEDURE public."Inv_P_TransferSupplierPrice"(p_id uuid, p_user_id uuid DEFAULT NULL) +LANGUAGE plpgsql AS $$ +DECLARE v_now timestamp := NOW() AT TIME ZONE 'UTC'; +BEGIN + WITH buy AS ( + SELECT b."TenantId", b."ProductId", b."SupplierId" AS "ContactId", b."UomId", b."CurrencyId", SUM(b."Quantity") AS "Quantity", + ROUND(SUM(b."Quantity" * b."UnitPrice") / SUM(b."Quantity"), 4) AS "Price", MAX(b."LeadTimeDays") AS "LeadTimeDays" + FROM (SELECT t."TenantId", ol."ProductId", o."SupplierId", ol."UomId", o."CurrencyId", ol."UnitPrice", + public."Inv_F_UomConvert"(l."Quantity", l."UomId", ol."UomId") AS "Quantity", + CASE WHEN o."ConfirmDate" IS NULL OR o."ConfirmDate" > v_now THEN 0 + ELSE v_now::date - o."ConfirmDate"::date END AS "LeadTimeDays" + FROM "Inv_T_Transfer" t + INNER JOIN "Inv_T_TransferLine" l ON l."TransferId" = t."Id" AND l."IsDeleted" = false AND l."Quantity" > 0 + INNER JOIN "Prc_T_PurchaseOrderLine" ol ON ol."Id" = l."PurchaseOrderLineId" AND ol."UnitPrice" > 0 + INNER JOIN "Prc_T_PurchaseOrder" o ON o."Id" = ol."PurchaseOrderId" + WHERE t."Id" = p_id AND t."OperationKind" = 'Receipt' AND t."ReturnOfId" IS NULL) b + GROUP BY b."TenantId", b."ProductId", b."SupplierId", b."UomId", b."CurrencyId" + HAVING SUM(b."Quantity") > 0 + ), target AS ( + SELECT buy.*, + (SELECT ps."Id" + FROM "Inv_T_ProductSupplier" ps + INNER JOIN "Inv_T_Product" p ON p."Id" = ps."ProductId" + WHERE ps."ProductId" = buy."ProductId" AND ps."ContactId" = buy."ContactId" AND ps."IsDeleted" = false AND ps."VariantKey" IS NULL + AND COALESCE(ps."UomId", p."UomId") = buy."UomId" AND COALESCE(ps."CurrencyId", buy."CurrencyId") = buy."CurrencyId" + AND ps."MinQuantity" <= buy."Quantity" + AND ps."TenantId" IS NOT DISTINCT FROM buy."TenantId" + ORDER BY ps."MinQuantity" DESC + LIMIT 1) AS "TargetId" + FROM buy + ), updated AS ( + UPDATE "Inv_T_ProductSupplier" ps + SET "Price" = x."Price", "UomId" = x."UomId", "CurrencyId" = x."CurrencyId", "LastPurchaseDate" = v_now, + "LastModificationTime" = v_now, "LastModifierId" = p_user_id + FROM target x + WHERE x."TargetId" = ps."Id" + ) + -- Miktarı 1'in altındaki alımda 1'lik kademe uymaz; yeni kademe alınan miktardan başlar. + INSERT INTO "Inv_T_ProductSupplier" ("Id", "TenantId", "ProductId", "ContactId", "MinQuantity", "UomId", "Price", "CurrencyId", + "LeadTimeDays", "LastPurchaseDate", "CreationTime", "CreatorId", "IsDeleted") + SELECT gen_random_uuid(), x."TenantId", x."ProductId", x."ContactId", CASE WHEN x."Quantity" < 1 THEN x."Quantity" ELSE 1 END, + x."UomId", x."Price", x."CurrencyId", x."LeadTimeDays", v_now, v_now, p_user_id, false + FROM target x + WHERE x."TargetId" IS NULL; +END; +$$; diff --git a/configs/seeds/postgres/object/Inv_P_TransferValidate.sql b/configs/seeds/postgres/object/Inv_P_TransferValidate.sql index ffbb7f02..8d2aa56b 100644 --- a/configs/seeds/postgres/object/Inv_P_TransferValidate.sql +++ b/configs/seeds/postgres/object/Inv_P_TransferValidate.sql @@ -1,6 +1,7 @@ -- Tamamla: yapılan miktarlar stoğa işlenir (Inv_T_Stock, ürün biriminde, lot kırılımlı). İç konumdan çıkışta stok yetmezse -- işlem durur; dış konumlar stok tutmaz. Envanter takibi kapalı ürün stoğa girmez. Lot/seri takipli üründe lot toplamı --- yapılan miktara eşit olmalıdır. Sipariş kalemlerinin alınan, talep kalemlerinin teslim edilen miktarı güncellenir (iadede düşülür). +-- yapılan miktara eşit olmalıdır. Sipariş kalemlerinin alınan, talep kalemlerinin teslim edilen miktarı güncellenir (iadede düşülür); +-- siparişli alım ürün–tedarikçi fiyatını yazar (Inv_P_TransferSupplierPrice). -- Talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. CREATE OR REPLACE PROCEDURE public."Inv_P_TransferValidate"(p_id uuid, p_user_id uuid DEFAULT NULL) LANGUAGE plpgsql AS $$ @@ -116,6 +117,8 @@ BEGIN GROUP BY l."PurchaseOrderLineId") x WHERE x."PurchaseOrderLineId" = ol."Id"; + CALL public."Inv_P_TransferSupplierPrice"(p_id, p_user_id); + UPDATE "Prc_T_MaterialRequestItem" i SET "DeliveredQuantity" = i."DeliveredQuantity" + v_sign * x."Quantity", "LineStatus" = CASE WHEN i."DeliveredQuantity" + v_sign * x."Quantity" >= i."Quantity" THEN 'Done' WHEN i."LineStatus" = 'Done' THEN 'Waiting' ELSE i."LineStatus" END diff --git a/configs/seeds/postgres/object/Inv_T_ProductSupplier.sql b/configs/seeds/postgres/object/Inv_T_ProductSupplier.sql index 78c4ab77..0c6d6d5b 100644 --- a/configs/seeds/postgres/object/Inv_T_ProductSupplier.sql +++ b/configs/seeds/postgres/object/Inv_T_ProductSupplier.sql @@ -9,6 +9,7 @@ CREATE TABLE IF NOT EXISTS public."Inv_T_ProductSupplier" "Price" numeric(18, 4) NOT NULL DEFAULT 0, "CurrencyId" varchar(64) NULL, "LeadTimeDays" integer NOT NULL DEFAULT 0, + "LastPurchaseDate" timestamp NULL, "VariantKey" varchar(450) NULL, "CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'), "CreatorId" uuid NULL, diff --git a/configs/seeds/postgres/object/Prc_P_MaterialRequestItemSync.sql b/configs/seeds/postgres/object/Prc_P_MaterialRequestItemSync.sql new file mode 100644 index 00000000..a19e2e99 --- /dev/null +++ b/configs/seeds/postgres/object/Prc_P_MaterialRequestItemSync.sql @@ -0,0 +1,16 @@ +-- Transfer belgesinin talep kalemlerinin satır durumunu planla eşler (yeniden hesap ve iptal sonrası): kalanın tamamı iç transferle +-- planlanmış, satınalma payı olmayan bekleyen kalem kapanır (Tamamlandı); transfer iptal edilir, satırı silinir ya da eksik tamamlanıp kalanı +-- yeniden açılırsa kapalı kalem Bekliyor'a döner ve Planlama'da görünür. Silinmiş satırların kalemleri de kapsamdadır. +CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestItemSync"(p_transfer_id uuid) +LANGUAGE plpgsql AS $$ +BEGIN + UPDATE "Prc_T_MaterialRequestItem" i + SET "LineStatus" = CASE WHEN i."LineStatus" = 'Waiting' THEN 'Done' ELSE 'Waiting' END + FROM public."Prc_V_MaterialRequestItemPlan" p + WHERE p."Id" = i."Id" + AND i."Id" IN (SELECT "MaterialRequestItemId" FROM "Inv_T_TransferLine" WHERE "TransferId" = p_transfer_id AND "MaterialRequestItemId" IS NOT NULL) + AND p."PurchaseQuantity" = 0 + AND ((i."LineStatus" = 'Waiting' AND p."RemainingQuantity" <= 0) + OR (i."LineStatus" = 'Done' AND p."RemainingQuantity" > 0 AND i."DeliveredQuantity" < i."Quantity")); +END; +$$; diff --git a/configs/seeds/postgres/object/Prc_P_MaterialRequestPlan.sql b/configs/seeds/postgres/object/Prc_P_MaterialRequestPlan.sql new file mode 100644 index 00000000..3a089ae2 --- /dev/null +++ b/configs/seeds/postgres/object/Prc_P_MaterialRequestPlan.sql @@ -0,0 +1,180 @@ +-- Planlama kararı: talep kaleminin planlanacak kalanından p_plan_quantity kadarını satınalmaya ya da iç transfere ayırır; kalanın geri kalanı +-- listede kalır. Planla diyaloğunun onayı (Prc_P_MaterialRequestPlanConfirm) her taslak plan satırı için çağırır. +-- Purchase: tedarikçinin talebin şubesi ve deposu için taslak teklif talebi varsa kalem ona eklenir (kalem zaten oradaysa miktarı artar), yoksa +-- talebin deposunun alım operasyon türüyle yeni taslak teklif talebi açılır (para birimi ve koşullar kontak kartından; alıcı — satınalma sorumlusu — +-- planlayan). Fiyat tedarikçinin fiyat listesinden gelir; teklif → sipariş → alım akışı oradan sürer. +-- Transfer: kaynak konumun serbest stoğu (Prc_V_MaterialRequestPlanSource) yetmelidir; aynı kaynak → talebin konumu için onaya +-- girmemiş taslak iç transfer varsa satır ona, yoksa kaynak deponun iç transfer operasyon türüyle yeni taslak açılır. Kalanın tamamı transferle +-- planlanan, satınalma payı olmayan kalem transfer belgesinin yeniden hesabında kapanır (Prc_P_MaterialRequestItemSync). +-- Stock: stok talebin teslim konumundadır; belge açılmaz, serbest stok yetmelidir. Miktar kalemin stoktan karşılanan ve teslim edilen +-- miktarına eklenir; satınalma payı olmayan ve kalanı biten kalem kapanır. +CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestPlan"( + p_id uuid, + p_plan_method varchar, + p_plan_quantity numeric(18, 4), + p_plan_supplier_id uuid, + p_plan_source_location_id uuid, + p_tenant_id uuid, + p_last_modifier_id uuid +) +LANGUAGE plpgsql AS $$ +DECLARE v_product uuid; v_uom varchar(64); v_due timestamp; v_reason varchar(256); v_branch uuid; v_warehouse uuid; v_location uuid; + v_request_no varchar(32); v_remaining numeric(18, 4); v_doc uuid; v_line uuid; v_op_type uuid; v_src_warehouse uuid; + v_free numeric(18, 4); v_no varchar(128); +BEGIN + -- Kalem kilitlenir: aynı kalemin eşzamanlı iki planı kalanı iki kez dağıtamaz. + SELECT i."ProductId", i."UomId", i."DueDate", i."RequestReason", r."BranchId", r."WarehouseId", r."LocationId", r."RequestNo" + INTO v_product, v_uom, v_due, v_reason, v_branch, v_warehouse, v_location, v_request_no + FROM "Prc_T_MaterialRequestItem" i + INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId" + WHERE i."Id" = p_id AND i."IsDeleted" = false AND i."LineStatus" = 'Waiting' AND r."IsDeleted" = false + AND i."TenantId" IS NOT DISTINCT FROM p_tenant_id + AND r."ApprovalStatus" IN ('Onaylandı', 'Teklif Talebi', 'Teklif Talebi Gönderildi', 'Satınalma Siparişi') + FOR UPDATE OF i; + IF v_product IS NULL THEN + RAISE EXCEPTION 'Kalem planlanamaz: talep onaylı değil ya da kalem kapalı.' USING ERRCODE = 'P0001', DETAIL = '50191'; + END IF; + + SELECT "RemainingQuantity" INTO v_remaining FROM public."Prc_V_MaterialRequestItemPlan" WHERE "Id" = p_id; + IF COALESCE(p_plan_quantity, 0) <= 0 THEN + RAISE EXCEPTION 'Plan miktarı sıfırdan büyük olmalıdır.' USING ERRCODE = 'P0001', DETAIL = '50192'; + END IF; + IF p_plan_quantity > v_remaining THEN + RAISE EXCEPTION 'Plan miktarı planlanacak kalanı aşamaz (kalan: % %).', trim_scale(v_remaining), v_uom USING ERRCODE = 'P0001', DETAIL = '50193'; + END IF; + + IF p_plan_method = 'Purchase' THEN + IF p_plan_supplier_id IS NULL THEN + RAISE EXCEPTION 'Satınalma kararında tedarikçi seçilmelidir.' USING ERRCODE = 'P0001', DETAIL = '50194'; + END IF; + + SELECT "Id" INTO v_doc + FROM "Prc_T_PurchaseRfq" + WHERE "IsDeleted" = false AND "Status" = 'Draft' AND "SupplierId" = p_plan_supplier_id AND "BranchId" = v_branch AND "WarehouseId" = v_warehouse + AND "TenantId" IS NOT DISTINCT FROM p_tenant_id + ORDER BY "CreationTime" DESC + LIMIT 1; + + IF v_doc IS NULL THEN + SELECT "Id" INTO v_op_type + FROM "Inv_T_OperationType" + WHERE "IsDeleted" = false AND "IsActive" = true AND "OperationKind" = 'Receipt' AND "WarehouseId" = v_warehouse + ORDER BY "Name" + LIMIT 1; + IF v_op_type IS NULL THEN + RAISE EXCEPTION 'Talebin deposu için aktif bir alım operasyon türü tanımlı değil.' USING ERRCODE = 'P0001', DETAIL = '50195'; + END IF; + + v_doc := gen_random_uuid(); + CALL public."Adm_P_SequenceNext"('Prc.PurchaseRfq', p_tenant_id, v_no); + INSERT INTO "Prc_T_PurchaseRfq" ("Id", "TenantId", "RfqNo", "TenderGroupId", "SupplierId", "BranchId", "OperationTypeId", "WarehouseId", "CurrencyId", + "BuyerUserId", "IncotermId", "IncotermLocation", "PaymentTermId", "CreationTime", "CreatorId", "IsDeleted") + SELECT v_doc, p_tenant_id, left(v_no, 32), v_doc, c."Id", v_branch, v_op_type, v_warehouse, COALESCE(c."SupplierCurrency", 'TRY'), + p_last_modifier_id, c."PurchaseIncotermId", c."PurchaseIncotermLocation", c."PurchasePaymentTermId", + NOW() AT TIME ZONE 'UTC', p_last_modifier_id, false + FROM "Adm_T_Contact" c + WHERE c."Id" = p_plan_supplier_id AND c."IsDeleted" = false; + IF NOT FOUND THEN + RAISE EXCEPTION 'Satınalma kararında tedarikçi seçilmelidir.' USING ERRCODE = 'P0001', DETAIL = '50194'; + END IF; + END IF; + + SELECT "Id" INTO v_line FROM "Prc_T_PurchaseRfqLine" WHERE "PurchaseRfqId" = v_doc AND "MaterialRequestItemId" = p_id AND "IsDeleted" = false LIMIT 1; + IF v_line IS NOT NULL THEN + UPDATE "Prc_T_PurchaseRfqLine" + SET "Quantity" = "Quantity" + public."Inv_F_UomConvert"(p_plan_quantity, v_uom, "UomId"), + "LastModificationTime" = NOW() AT TIME ZONE 'UTC', "LastModifierId" = p_last_modifier_id + WHERE "Id" = v_line; + ELSE + INSERT INTO "Prc_T_PurchaseRfqLine" ("Id", "TenantId", "PurchaseRfqId", "ProductId", "Description", "Quantity", "UomId", "UnitPrice", "TaxRate", "Amount", + "DeliveryDate", "MaterialRequestItemId", "CreationTime", "CreatorId", "IsDeleted") + SELECT gen_random_uuid(), p_tenant_id, v_doc, v_product, v_reason, p_plan_quantity, v_uom, + COALESCE((SELECT ps."Price" FROM "Inv_T_ProductSupplier" ps + WHERE ps."ProductId" = v_product AND ps."ContactId" = p_plan_supplier_id AND ps."IsDeleted" = false + ORDER BY ps."MinQuantity" LIMIT 1), 0), + COALESCE(p."PurchaseTaxRate", 0), 0, v_due, p_id, NOW() AT TIME ZONE 'UTC', p_last_modifier_id, false + FROM "Inv_T_Product" p + WHERE p."Id" = v_product; + END IF; + + CALL public."Prc_P_PurchaseRfqRecalc"(v_doc); + ELSIF p_plan_method = 'Transfer' THEN + IF p_plan_source_location_id IS NULL THEN + RAISE EXCEPTION 'İç transfer kararında kaynak konum seçilmelidir.' USING ERRCODE = 'P0001', DETAIL = '50196'; + END IF; + -- Konum ve serbest stok kuralı diyaloğun İç Transfer ızgarasıyla aynıdır. + SELECT "WarehouseId", "FreeQuantity" INTO v_src_warehouse, v_free + FROM public."Prc_V_MaterialRequestPlanSource" + WHERE "BaseId" = p_id AND "LocationId" = p_plan_source_location_id; + IF v_src_warehouse IS NULL OR p_plan_source_location_id = v_location THEN + RAISE EXCEPTION 'Kaynak konum, talebin teslim konumundan farklı ve ürünün stoğu olan bir iç konum olmalıdır.' USING ERRCODE = 'P0001', DETAIL = '50197'; + END IF; + IF p_plan_quantity > v_free THEN + RAISE EXCEPTION 'Kaynak konumda yeterli serbest stok yok (serbest: % %).', trim_scale(GREATEST(v_free, 0)), v_uom USING ERRCODE = 'P0001', DETAIL = '50198'; + END IF; + + SELECT "Id" INTO v_doc + FROM "Inv_T_Transfer" + WHERE "IsDeleted" = false AND "OperationKind" = 'InternalTransfer' AND "Status" = 'Draft' AND "ReturnOfId" IS NULL AND "BackorderOfId" IS NULL + AND "SourceLocationId" = p_plan_source_location_id AND "DestinationLocationId" = v_location + AND COALESCE("ApprovalStatus", 'Onay Gerekmez') = 'Onay Gerekmez' + AND "TenantId" IS NOT DISTINCT FROM p_tenant_id + ORDER BY "CreationTime" DESC + LIMIT 1; + + IF v_doc IS NULL THEN + SELECT "Id" INTO v_op_type + FROM "Inv_T_OperationType" + WHERE "IsDeleted" = false AND "IsActive" = true AND "OperationKind" = 'InternalTransfer' AND "WarehouseId" = v_src_warehouse + ORDER BY "Name" + LIMIT 1; + IF v_op_type IS NULL THEN + RAISE EXCEPTION 'Kaynak depo için aktif bir iç transfer operasyon türü tanımlı değil.' USING ERRCODE = 'P0001', DETAIL = '50199'; + END IF; + + v_doc := gen_random_uuid(); + INSERT INTO "Inv_T_Transfer" ("Id", "TenantId", "BranchId", "WarehouseId", "OperationTypeId", "OperationKind", "SourceLocationId", "DestinationLocationId", + "SourceDocument", "ResponsibleUserId", "Status", "CreationTime", "CreatorId", "IsDeleted") + SELECT v_doc, p_tenant_id, ot."BranchId", ot."WarehouseId", ot."Id", 'InternalTransfer', p_plan_source_location_id, v_location, + v_request_no, p_last_modifier_id, 'Draft', NOW() AT TIME ZONE 'UTC', p_last_modifier_id, false + FROM "Inv_T_OperationType" ot + WHERE ot."Id" = v_op_type; + ELSE + UPDATE "Inv_T_Transfer" + SET "SourceDocument" = left(COALESCE("SourceDocument", '') || CASE WHEN COALESCE("SourceDocument", '') = '' THEN '' ELSE ', ' END || v_request_no, 128) + WHERE "Id" = v_doc AND strpos(COALESCE("SourceDocument", ''), v_request_no) = 0; + END IF; + + SELECT "Id" INTO v_line FROM "Inv_T_TransferLine" WHERE "TransferId" = v_doc AND "MaterialRequestItemId" = p_id AND "IsDeleted" = false LIMIT 1; + IF v_line IS NOT NULL THEN + UPDATE "Inv_T_TransferLine" + SET "DemandQuantity" = "DemandQuantity" + public."Inv_F_UomConvert"(p_plan_quantity, v_uom, "UomId"), + "LastModificationTime" = NOW() AT TIME ZONE 'UTC', "LastModifierId" = p_last_modifier_id + WHERE "Id" = v_line; + ELSE + INSERT INTO "Inv_T_TransferLine" ("Id", "TenantId", "TransferId", "ProductId", "Description", "DemandQuantity", "Quantity", "UomId", "MaterialRequestItemId", + "CreationTime", "CreatorId", "IsDeleted") + VALUES (gen_random_uuid(), p_tenant_id, v_doc, v_product, v_reason, p_plan_quantity, 0, v_uom, p_id, NOW() AT TIME ZONE 'UTC', p_last_modifier_id, false); + END IF; + + -- Numara, kaynak depo onaycısı ve yeniden hesap (kalemin kapanması dahil) belge kaydı sonrasıyla aynıdır. + CALL public."Inv_P_TransferAfterSave"(v_doc, p_last_modifier_id); + ELSIF p_plan_method = 'Stock' THEN + SELECT "FreeQuantity" INTO v_free FROM public."Prc_V_MaterialRequestPlanSource" WHERE "BaseId" = p_id AND "LocationId" = v_location; + IF p_plan_quantity > COALESCE(v_free, 0) THEN + RAISE EXCEPTION 'Teslim konumunda yeterli serbest stok yok (serbest: % %).', trim_scale(GREATEST(COALESCE(v_free, 0), 0)), v_uom + USING ERRCODE = 'P0001', DETAIL = '50198'; + END IF; + + UPDATE "Prc_T_MaterialRequestItem" + SET "FromStockQuantity" = "FromStockQuantity" + p_plan_quantity, "DeliveredQuantity" = "DeliveredQuantity" + p_plan_quantity, + "LastModificationTime" = NOW() AT TIME ZONE 'UTC', "LastModifierId" = p_last_modifier_id + WHERE "Id" = p_id; + UPDATE "Prc_T_MaterialRequestItem" i SET "LineStatus" = 'Done' + FROM public."Prc_V_MaterialRequestItemPlan" p + WHERE p."Id" = i."Id" AND i."Id" = p_id AND p."PurchaseQuantity" = 0 AND p."RemainingQuantity" <= 0; + ELSE + RAISE EXCEPTION 'Karar Satınalma, İç Transfer ya da Stoktan olmalıdır.' USING ERRCODE = 'P0001', DETAIL = '50192'; + END IF; +END; +$$; diff --git a/configs/seeds/postgres/object/Prc_P_MaterialRequestPlanConfirm.sql b/configs/seeds/postgres/object/Prc_P_MaterialRequestPlanConfirm.sql new file mode 100644 index 00000000..f247a2c5 --- /dev/null +++ b/configs/seeds/postgres/object/Prc_P_MaterialRequestPlanConfirm.sql @@ -0,0 +1,30 @@ +-- Planla diyaloğunun Onayla'sı (App.Prc.MaterialRequestPlan › UpdateCommand): talep kaleminin taslak planındaki her satırı +-- Prc_P_MaterialRequestPlan ile belgeye çevirir (iç transferler, stoktan karşılama, sonra teklif talepleri — stok payı kalemi transferlerden +-- sonra kapatabilsin) ve taslağı siler. Tek transaction'dır: +-- bir satır reddedilirse (stok, kalan, operasyon türü) hiçbir belge açılmaz ve taslak yerinde kalır. +CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestPlanConfirm"( + p_id uuid, + p_tenant_id uuid, + p_last_modifier_id uuid +) +LANGUAGE plpgsql AS $$ +DECLARE r record; +BEGIN + PERFORM 1 FROM "Prc_T_MaterialRequestPlanLine" WHERE "MaterialRequestItemId" = p_id AND "IsDeleted" = false FOR UPDATE; + IF NOT FOUND THEN + RAISE EXCEPTION 'Onaylanacak taslak plan yok: önce Öner butonunu kullanın ya da İç Transfer veya Satınalma sekmesinde Plan Miktarı girin.' + USING ERRCODE = 'P0001', DETAIL = '50201'; + END IF; + + FOR r IN SELECT "PlanMethod", "Quantity", "SupplierId", "SourceLocationId" + FROM "Prc_T_MaterialRequestPlanLine" + WHERE "MaterialRequestItemId" = p_id AND "IsDeleted" = false + ORDER BY CASE "PlanMethod" WHEN 'Transfer' THEN 0 WHEN 'Stock' THEN 1 ELSE 2 END, "CreationTime" + LOOP + CALL public."Prc_P_MaterialRequestPlan"(p_id, r."PlanMethod", r."Quantity", r."SupplierId", r."SourceLocationId", p_tenant_id, + p_last_modifier_id); + END LOOP; + + DELETE FROM "Prc_T_MaterialRequestPlanLine" WHERE "MaterialRequestItemId" = p_id; +END; +$$; diff --git a/configs/seeds/postgres/object/Prc_P_MaterialRequestPlanLineSave.sql b/configs/seeds/postgres/object/Prc_P_MaterialRequestPlanLineSave.sql new file mode 100644 index 00000000..dd9a6080 --- /dev/null +++ b/configs/seeds/postgres/object/Prc_P_MaterialRequestPlanLineSave.sql @@ -0,0 +1,94 @@ +-- Planla diyaloğunun İç Transfer (App.Prc.MaterialRequestPlanSource) ve Satınalma (App.Prc.MaterialRequestPlanVendor) ızgaralarının satır kaydı: +-- girilen Plan Miktarı kalemin taslak planına (Prc_T_MaterialRequestPlanLine) yazılır, 0 ya da boş satırı plandan çıkarır. p_id ızgara +-- satırının anahtarıdır: kalem + ':' + hedef (Transfer'de kaynak konum, Purchase'da tedarikçi). Kaynak talebin teslim konumuysa karar +-- Stock'tur (transfer açılmaz, stoktan karşılanır). Belge açılmaz; onay +-- Prc_P_MaterialRequestPlanConfirm'dedir. Taslak toplamı planlanacak kalanı, konumun satırı serbest stoğu aşamaz. Batch kaydı satırları +-- eşzamanlı gönderdiği için kalem kilitlenir. Eksi miktar "alabileceği en fazla"dır (Seçilenleri Planla): kalanın diğer taslak satırlardan +-- arta kalanı, konumda serbest stokla sınırlı; alınacak bir şey yoksa satır değişmez. +CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestPlanLineSave"( + p_id varchar, + p_plan_method varchar, + p_plan_quantity numeric(18, 4), + p_tenant_id uuid, + p_last_modifier_id uuid +) +LANGUAGE plpgsql AS $$ +DECLARE v_item uuid := left(p_id, 36)::uuid; + v_target uuid := substring(p_id from 38 for 36)::uuid; + v_qty numeric(18, 4) := COALESCE(p_plan_quantity, 0); + v_method varchar(16) := p_plan_method; v_location uuid; + v_uom varchar(64); v_remaining numeric(18, 4); v_other numeric(18, 4); v_free numeric(18, 4); v_line uuid; +BEGIN + SELECT i."UomId", r."LocationId" INTO v_uom, v_location + FROM "Prc_T_MaterialRequestItem" i + INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId" + WHERE i."Id" = v_item AND i."IsDeleted" = false AND i."LineStatus" = 'Waiting' AND r."IsDeleted" = false + AND i."TenantId" IS NOT DISTINCT FROM p_tenant_id + AND r."ApprovalStatus" IN ('Onaylandı', 'Teklif Talebi', 'Teklif Talebi Gönderildi', 'Satınalma Siparişi') + FOR UPDATE OF i; + IF v_uom IS NULL THEN + RAISE EXCEPTION 'Kalem planlanamaz: talep onaylı değil ya da kalem kapalı.' USING ERRCODE = 'P0001', DETAIL = '50191'; + END IF; + IF v_method = 'Transfer' AND v_target = v_location THEN + v_method := 'Stock'; + END IF; + + SELECT "Id" INTO v_line + FROM "Prc_T_MaterialRequestPlanLine" + WHERE "MaterialRequestItemId" = v_item AND "PlanMethod" = v_method AND "IsDeleted" = false + AND v_target = CASE WHEN v_method = 'Purchase' THEN "SupplierId" ELSE "SourceLocationId" END; + + IF v_qty = 0 THEN + DELETE FROM "Prc_T_MaterialRequestPlanLine" WHERE "Id" = v_line; + RETURN; + END IF; + + SELECT "RemainingQuantity" INTO v_remaining FROM public."Prc_V_MaterialRequestItemPlan" WHERE "Id" = v_item; + SELECT COALESCE(SUM("Quantity"), 0) INTO v_other + FROM "Prc_T_MaterialRequestPlanLine" + WHERE "MaterialRequestItemId" = v_item AND "IsDeleted" = false AND "Id" IS DISTINCT FROM v_line; + IF v_qty < 0 THEN + v_qty := v_remaining - v_other; + IF v_method IN ('Transfer', 'Stock') THEN + SELECT "FreeQuantity" INTO v_free FROM public."Prc_V_MaterialRequestPlanSource" WHERE "BaseId" = v_item AND "LocationId" = v_target; + IF v_free < v_qty THEN + v_qty := v_free; + END IF; + END IF; + IF COALESCE(v_qty, 0) <= 0 THEN + RETURN; + END IF; + END IF; + IF v_other + v_qty > v_remaining THEN + RAISE EXCEPTION 'Taslak plan toplamı planlanacak kalanı aşamaz (kalan: % %).', trim_scale(v_remaining - v_other), v_uom + USING ERRCODE = 'P0001', DETAIL = '50200'; + END IF; + + IF v_method IN ('Transfer', 'Stock') THEN + SELECT "FreeQuantity" INTO v_free FROM public."Prc_V_MaterialRequestPlanSource" WHERE "BaseId" = v_item AND "LocationId" = v_target; + IF v_free IS NULL THEN + RAISE EXCEPTION 'Kaynak konum ürünün stoğu olan bir iç konum olmalıdır.' USING ERRCODE = 'P0001', DETAIL = '50197'; + END IF; + IF v_qty > v_free THEN + RAISE EXCEPTION 'Kaynak konumda yeterli serbest stok yok (serbest: % %).', trim_scale(GREATEST(v_free, 0)), v_uom USING ERRCODE = 'P0001', DETAIL = '50198'; + END IF; + ELSIF v_method = 'Purchase' THEN + IF NOT EXISTS (SELECT 1 FROM public."Prc_V_MaterialRequestPlanVendor" WHERE "BaseId" = v_item AND "ContactId" = v_target) THEN + RAISE EXCEPTION 'Satınalma kararında aktif bir tedarikçi seçilmelidir.' USING ERRCODE = 'P0001', DETAIL = '50194'; + END IF; + ELSE + RAISE EXCEPTION 'Karar Satınalma ya da İç Transfer olmalıdır.' USING ERRCODE = 'P0001', DETAIL = '50192'; + END IF; + + IF v_line IS NOT NULL THEN + UPDATE "Prc_T_MaterialRequestPlanLine" + SET "Quantity" = v_qty, "LastModificationTime" = NOW() AT TIME ZONE 'UTC', "LastModifierId" = p_last_modifier_id + WHERE "Id" = v_line; + ELSE + INSERT INTO "Prc_T_MaterialRequestPlanLine" ("Id", "TenantId", "MaterialRequestItemId", "PlanMethod", "SupplierId", "SourceLocationId", + "Quantity", "CreationTime", "CreatorId", "IsDeleted") + VALUES (gen_random_uuid(), p_tenant_id, v_item, v_method, CASE WHEN v_method = 'Purchase' THEN v_target END, + CASE WHEN v_method <> 'Purchase' THEN v_target END, v_qty, NOW() AT TIME ZONE 'UTC', p_last_modifier_id, false); + END IF; +END; +$$; diff --git a/configs/seeds/postgres/object/Prc_P_MaterialRequestPlanSuggest.sql b/configs/seeds/postgres/object/Prc_P_MaterialRequestPlanSuggest.sql new file mode 100644 index 00000000..410fc2b4 --- /dev/null +++ b/configs/seeds/postgres/object/Prc_P_MaterialRequestPlanSuggest.sql @@ -0,0 +1,40 @@ +-- Planla diyaloğunun Öner'i (App.Prc.MaterialRequestPlanLine › InsertCommand): +-- kalemin taslak planını sıfırlayıp planlanacak kalanı dağıtır. Önce stok: teslim konumu (stoktan karşılama), sonra serbest stoğu en çok +-- olan konum (Prc_V_MaterialRequestPlanSource); kalan kısım satınalma: Prc_V_MaterialRequestPlanVendor'ın SuggestRank'ı ilk olan, +-- fiyat listesinde ya da alım geçmişinde bulunan tedarikçi (hiç bilinmeyen kontak seçilmez, kalan planlanmadan kalır). Satırlar +-- Prc_P_MaterialRequestPlanLineSave ile yazılır; kalem, stok ve kalan kuralları oradadır. +CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestPlanSuggest"( + p_id uuid, + p_tenant_id uuid, + p_last_modifier_id uuid +) +LANGUAGE plpgsql AS $$ +DECLARE v_left numeric(18, 4); v_qty numeric(18, 4); v_key varchar(80); s record; +BEGIN + DELETE FROM "Prc_T_MaterialRequestPlanLine" WHERE "MaterialRequestItemId" = p_id AND "TenantId" IS NOT DISTINCT FROM p_tenant_id; + SELECT COALESCE("RemainingQuantity", 0) INTO v_left FROM public."Prc_V_MaterialRequestItemPlan" WHERE "Id" = p_id; + v_left := COALESCE(v_left, 0); + + FOR s IN SELECT "Id", "FreeQuantity" + FROM public."Prc_V_MaterialRequestPlanSource" + WHERE "BaseId" = p_id AND "FreeQuantity" > 0 + ORDER BY "IsDestination" DESC, "FreeQuantity" DESC + LOOP + EXIT WHEN v_left <= 0; + v_qty := LEAST(s."FreeQuantity", v_left); + CALL public."Prc_P_MaterialRequestPlanLineSave"(s."Id", 'Transfer', v_qty, p_tenant_id, p_last_modifier_id); + v_left := v_left - v_qty; + END LOOP; + + IF v_left > 0 THEN + SELECT "Id" INTO v_key + FROM public."Prc_V_MaterialRequestPlanVendor" + WHERE "BaseId" = p_id AND ("Price" IS NOT NULL OR "LastPurchaseDate" IS NOT NULL) + ORDER BY "SuggestRank" + LIMIT 1; + IF v_key IS NOT NULL THEN + CALL public."Prc_P_MaterialRequestPlanLineSave"(v_key, 'Purchase', v_left, p_tenant_id, p_last_modifier_id); + END IF; + END IF; +END; +$$; diff --git a/configs/seeds/postgres/object/Prc_P_MaterialRequestStockUndo.sql b/configs/seeds/postgres/object/Prc_P_MaterialRequestStockUndo.sql new file mode 100644 index 00000000..fdc35a9d --- /dev/null +++ b/configs/seeds/postgres/object/Prc_P_MaterialRequestStockUndo.sql @@ -0,0 +1,24 @@ +-- Plan Takibi'nin Geri Al'ı (App.Prc.MaterialRequestPlanTrack › UpdateCommand): stoktan karşılamayı geri alır. Stoktan karşılama belge +-- açmadığı için geri dönüşü kalemin kendisidir: stoktan karşılanan miktar teslim edilenden düşülür ve sıfırlanır, kalanı yeniden açılan +-- kapalı kalem Bekliyor'a döner ve Planlama'da yeniden planlanır (Prc_P_MaterialRequestItemSync ile aynı kural). +CREATE OR REPLACE PROCEDURE public."Prc_P_MaterialRequestStockUndo"( + p_id uuid, + p_tenant_id uuid, + p_last_modifier_id uuid +) +LANGUAGE plpgsql AS $$ +BEGIN + UPDATE "Prc_T_MaterialRequestItem" + SET "DeliveredQuantity" = GREATEST("DeliveredQuantity" - "FromStockQuantity", 0), + "FromStockQuantity" = 0, "LastModificationTime" = NOW() AT TIME ZONE 'UTC', "LastModifierId" = p_last_modifier_id + WHERE "Id" = p_id AND "IsDeleted" = false AND "FromStockQuantity" > 0 AND "LineStatus" IN ('Waiting', 'Done') + AND "TenantId" IS NOT DISTINCT FROM p_tenant_id; + IF NOT FOUND THEN + RAISE EXCEPTION 'Geri alınacak stoktan karşılama yok ya da kalem kapatılmış.' USING ERRCODE = 'P0001', DETAIL = '50202'; + END IF; + + UPDATE "Prc_T_MaterialRequestItem" i SET "LineStatus" = 'Waiting' + FROM public."Prc_V_MaterialRequestItemPlan" p + WHERE p."Id" = i."Id" AND i."Id" = p_id AND i."LineStatus" = 'Done' AND p."RemainingQuantity" > 0 AND i."DeliveredQuantity" < i."Quantity"; +END; +$$; diff --git a/configs/seeds/postgres/object/Prc_P_PurchaseImportItem.sql b/configs/seeds/postgres/object/Prc_P_PurchaseImportItem.sql deleted file mode 100644 index ce367342..00000000 --- a/configs/seeds/postgres/object/Prc_P_PurchaseImportItem.sql +++ /dev/null @@ -1,51 +0,0 @@ --- Talep Kalemleri sekmesinde seçilen kalemi (p_key = belge|kalem) teklif talebine ya da taslak siparişe kopyalar. --- Kalem yalnız belgenin şubesindeki talepten gelir. Fiyat: sözleşme kalemi › tedarikçi fiyatı › 0; termin talebin istenen tarihidir. -CREATE OR REPLACE PROCEDURE public."Prc_P_PurchaseImportItem"(p_key varchar) -LANGUAGE plpgsql AS $$ -DECLARE v_doc uuid; v_item uuid; v_is_order boolean := false; v_tenant uuid; v_branch uuid; v_supplier uuid; v_agr uuid; v_status varchar(16); - v_product uuid; v_description varchar(512); v_quantity numeric(18, 4); v_uom varchar(50); v_price numeric(18, 4); - v_tax numeric(18, 4); v_due timestamp; -BEGIN - IF p_key !~* '^[0-9a-f-]{36}\|[0-9a-f-]{36}$' THEN - RAISE EXCEPTION 'Talep kalemi yalnız teklif aşamasındaki teklif talebine ya da taslak siparişe aktarılabilir.' USING ERRCODE = 'P0001', DETAIL = '50161'; - END IF; - v_doc := left(p_key, 36)::uuid; - v_item := right(p_key, 36)::uuid; - - SELECT "TenantId", "BranchId", "SupplierId", "AgreementId", "Status" INTO v_tenant, v_branch, v_supplier, v_agr, v_status - FROM "Prc_T_PurchaseRfq" WHERE "Id" = v_doc AND "IsDeleted" = false AND "Status" IN ('Draft', 'Sent'); - IF v_status IS NULL THEN - SELECT "TenantId", "BranchId", "SupplierId", "AgreementId", "Status", true INTO v_tenant, v_branch, v_supplier, v_agr, v_status, v_is_order - FROM "Prc_T_PurchaseOrder" WHERE "Id" = v_doc AND "IsDeleted" = false AND "Status" = 'Draft'; - END IF; - IF v_status IS NULL THEN - RAISE EXCEPTION 'Talep kalemi yalnız teklif aşamasındaki teklif talebine ya da taslak siparişe aktarılabilir.' USING ERRCODE = 'P0001', DETAIL = '50161'; - END IF; - - SELECT a."ProductId", a."RequestReason", a."Quantity", a."UomId", a."DueDate", COALESCE(p."PurchaseTaxRate", 0), - COALESCE((SELECT al."UnitPrice" FROM "Prc_T_PurchaseAgreementLine" al - WHERE al."AgreementId" = v_agr AND al."ProductId" = a."ProductId" AND al."IsDeleted" = false LIMIT 1), - (SELECT ps."Price" FROM "Inv_T_ProductSupplier" ps - WHERE ps."ProductId" = a."ProductId" AND ps."ContactId" = v_supplier AND ps."IsDeleted" = false - ORDER BY ps."MinQuantity" LIMIT 1), 0) - INTO v_product, v_description, v_quantity, v_uom, v_due, v_tax, v_price - FROM "Prc_V_MaterialRequestAvailableItem" a - LEFT JOIN "Inv_T_Product" p ON p."Id" = a."ProductId" - WHERE a."Id" = v_item AND a."BranchId" = v_branch AND a."TenantId" IS NOT DISTINCT FROM v_tenant; - IF v_product IS NULL THEN - RAISE EXCEPTION 'Talep kalemi artık aktarılamaz: başka bir teklife ya da siparişe aktarılmış veya talep değişmiş.' USING ERRCODE = 'P0001', DETAIL = '50162'; - END IF; - - IF v_is_order THEN - INSERT INTO "Prc_T_PurchaseOrderLine" ("Id", "TenantId", "PurchaseOrderId", "ProductId", "Description", "Quantity", "UomId", - "UnitPrice", "TaxRate", "Amount", "DeliveryDate", "MaterialRequestItemId", "CreationTime", "IsDeleted") - VALUES (gen_random_uuid(), v_tenant, v_doc, v_product, v_description, v_quantity, v_uom, v_price, v_tax, 0, v_due, v_item, NOW() AT TIME ZONE 'UTC', false); - CALL public."Prc_P_PurchaseOrderRecalc"(v_doc); - ELSE - INSERT INTO "Prc_T_PurchaseRfqLine" ("Id", "TenantId", "PurchaseRfqId", "ProductId", "Description", "Quantity", "UomId", - "UnitPrice", "TaxRate", "Amount", "DeliveryDate", "MaterialRequestItemId", "CreationTime", "IsDeleted") - VALUES (gen_random_uuid(), v_tenant, v_doc, v_product, v_description, v_quantity, v_uom, v_price, v_tax, 0, v_due, v_item, NOW() AT TIME ZONE 'UTC', false); - CALL public."Prc_P_PurchaseRfqRecalc"(v_doc); - END IF; -END; -$$; diff --git a/configs/seeds/postgres/object/Prc_TR_MaterialRequestLock.sql b/configs/seeds/postgres/object/Prc_TR_MaterialRequestLock.sql new file mode 100644 index 00000000..14c4406a --- /dev/null +++ b/configs/seeds/postgres/object/Prc_TR_MaterialRequestLock.sql @@ -0,0 +1,21 @@ +-- Onaya gönderilmiş talebin başlığı değiştirilemez (Taleplerim ve talebi gösteren diğer ekranlar): değişiklik için talep Taslak adımına alınır, +-- düzenlenir ve yeniden onaya gönderilir. Kural ekranın UpdateBeforeCommand'ında değil burada, çünkü onay akışı da başlığı aynı güncelleme +-- yolundan yazar; yalnız iş alanları karşılaştırılır, onay alanları (durum, onaycı, tarih, açıklama, onaycı listeleri) ve silme serbesttir. +-- Satırların kuralı App.Prc.MaterialRequestLine'ın Insert/Update/DeleteBeforeCommand'ındadır. +CREATE OR REPLACE FUNCTION public."Prc_TR_MaterialRequestLock"() RETURNS trigger +LANGUAGE plpgsql AS $$ +BEGIN + IF COALESCE(OLD."ApprovalStatus", '') <> '' AND NOT NEW."IsDeleted" + AND (NEW."Priority", NEW."RequesterUserId", NEW."BranchId", NEW."DepartmentId", NEW."WarehouseId", NEW."LocationId", NEW."RequestDate", NEW."Description") + IS DISTINCT FROM + (OLD."Priority", OLD."RequesterUserId", OLD."BranchId", OLD."DepartmentId", OLD."WarehouseId", OLD."LocationId", OLD."RequestDate", OLD."Description") THEN + RAISE EXCEPTION 'Onaya gönderilmiş talep değiştirilemez: önce talebi Taslak adımına alın, düzenleyip yeniden onaya gönderin.' + USING ERRCODE = 'P0001', DETAIL = '50004'; + END IF; + RETURN NEW; +END; +$$; + +DROP TRIGGER IF EXISTS "Prc_TR_MaterialRequestLock" ON public."Prc_T_MaterialRequest"; +CREATE TRIGGER "Prc_TR_MaterialRequestLock" BEFORE UPDATE ON public."Prc_T_MaterialRequest" + FOR EACH ROW EXECUTE FUNCTION public."Prc_TR_MaterialRequestLock"(); diff --git a/configs/seeds/postgres/object/Prc_T_MaterialRequestItem.sql b/configs/seeds/postgres/object/Prc_T_MaterialRequestItem.sql index 48ef4273..ab43cdfc 100644 --- a/configs/seeds/postgres/object/Prc_T_MaterialRequestItem.sql +++ b/configs/seeds/postgres/object/Prc_T_MaterialRequestItem.sql @@ -6,11 +6,10 @@ CREATE TABLE IF NOT EXISTS public."Prc_T_MaterialRequestItem" "ProductId" uuid NOT NULL, "Quantity" numeric(18, 4) NOT NULL, "UomId" varchar(64) NOT NULL, - "FulfillmentMethod" varchar(16) NOT NULL DEFAULT 'Purchase', "DueDate" date NOT NULL, "RequestReason" varchar(256) NOT NULL, "DeliveredQuantity" numeric(18, 4) NOT NULL DEFAULT 0, - "PurchaseResponsibleUserId" uuid NULL, + "FromStockQuantity" numeric(18, 4) NOT NULL DEFAULT 0, "LineStatus" varchar(16) NOT NULL DEFAULT 'Waiting', "CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'), "CreatorId" uuid NULL, diff --git a/configs/seeds/postgres/object/Prc_T_MaterialRequestLine.sql b/configs/seeds/postgres/object/Prc_T_MaterialRequestLine.sql deleted file mode 100644 index af4547ed..00000000 --- a/configs/seeds/postgres/object/Prc_T_MaterialRequestLine.sql +++ /dev/null @@ -1,33 +0,0 @@ -CREATE TABLE IF NOT EXISTS public."Prc_T_MaterialRequestLine" -( - "Id" uuid NOT NULL DEFAULT gen_random_uuid(), - "TenantId" uuid NULL, - "MaterialRequestId" uuid NOT NULL, - "ProductId" uuid NOT NULL, - "Quantity" numeric(18, 4) NOT NULL, - "UomId" uuid NOT NULL, - "FulfillmentMethod" varchar(16) NOT NULL DEFAULT 'Purchase', - "DueDate" date NOT NULL, - "RequestReason" varchar(256) NOT NULL, - "DeliveredQuantity" numeric(18, 4) NOT NULL DEFAULT 0, - "PurchaseResponsibleUserId" uuid NULL, - "LineStatus" varchar(16) NOT NULL DEFAULT 'Waiting', - "CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'), - "CreatorId" uuid NULL, - "LastModificationTime" timestamp NULL, - "LastModifierId" uuid NULL, - "IsDeleted" boolean NOT NULL DEFAULT FALSE, - "DeletionTime" timestamp NULL, - "DeleterId" uuid NULL, - CONSTRAINT "PK_Prc_T_MaterialRequestLine" PRIMARY KEY ("Id") -); - -CREATE INDEX IF NOT EXISTS "IX_Prc_T_MaterialRequestLine_MaterialRequestId" ON public."Prc_T_MaterialRequestLine" ("MaterialRequestId"); - -DO $$ -BEGIN - IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'FK_Prc_T_MaterialRequestLine_MaterialRequestId') THEN - ALTER TABLE public."Prc_T_MaterialRequestLine" ADD CONSTRAINT "FK_Prc_T_MaterialRequestLine_MaterialRequestId" FOREIGN KEY ("MaterialRequestId") REFERENCES public."Prc_T_MaterialRequest" ("Id") ON DELETE CASCADE ON UPDATE NO ACTION; - END IF; -END -$$; diff --git a/configs/seeds/postgres/object/Prc_T_MaterialRequestPlanLine.sql b/configs/seeds/postgres/object/Prc_T_MaterialRequestPlanLine.sql new file mode 100644 index 00000000..74581a12 --- /dev/null +++ b/configs/seeds/postgres/object/Prc_T_MaterialRequestPlanLine.sql @@ -0,0 +1,30 @@ +-- Planla diyaloğunun taslak karşılama planı: talep kaleminin onaylanmamış dağıtımı (iç transfer: kaynak konum, satınalma: tedarikçi) ve +-- miktarı. Onay (Prc_P_MaterialRequestPlanConfirm) satırları teklif talebine ya da iç transfere çevirir ve siler. +CREATE TABLE IF NOT EXISTS public."Prc_T_MaterialRequestPlanLine" +( + "Id" uuid NOT NULL DEFAULT gen_random_uuid(), + "TenantId" uuid NULL, + "MaterialRequestItemId" uuid NOT NULL, + "PlanMethod" varchar(16) NOT NULL, + "SupplierId" uuid NULL, + "SourceLocationId" uuid NULL, + "Quantity" numeric(18, 4) NOT NULL DEFAULT 0, + "CreationTime" timestamp NOT NULL DEFAULT (NOW() AT TIME ZONE 'UTC'), + "CreatorId" uuid NULL, + "LastModificationTime" timestamp NULL, + "LastModifierId" uuid NULL, + "IsDeleted" boolean NOT NULL DEFAULT FALSE, + "DeletionTime" timestamp NULL, + "DeleterId" uuid NULL, + CONSTRAINT "PK_Prc_T_MaterialRequestPlanLine" PRIMARY KEY ("Id") +); + +CREATE INDEX IF NOT EXISTS "IX_Prc_T_MaterialRequestPlanLine_MaterialRequestItemId" ON public."Prc_T_MaterialRequestPlanLine" ("MaterialRequestItemId"); + +DO $$ +BEGIN + IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'FK_Prc_T_MaterialRequestPlanLine_MaterialRequestItemId') THEN + ALTER TABLE public."Prc_T_MaterialRequestPlanLine" ADD CONSTRAINT "FK_Prc_T_MaterialRequestPlanLine_MaterialRequestItemId" FOREIGN KEY ("MaterialRequestItemId") REFERENCES public."Prc_T_MaterialRequestItem" ("Id") ON DELETE CASCADE ON UPDATE NO ACTION; + END IF; +END +$$; diff --git a/configs/seeds/postgres/object/Prc_V_MaterialRequestAvailableItem.sql b/configs/seeds/postgres/object/Prc_V_MaterialRequestAvailableItem.sql deleted file mode 100644 index 1dd6e554..00000000 --- a/configs/seeds/postgres/object/Prc_V_MaterialRequestAvailableItem.sql +++ /dev/null @@ -1,18 +0,0 @@ --- Teklife ya da siparişe aktarılabilecek talep kalemleri: onaylı talebin satınalma ile karşılanacak, --- bekleyen ve iptal olmayan bir teklif/siparişte yer almayan kalemi. Aktarım ve talep seçimi buradan okur. -CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestAvailableItem" AS -SELECT i."Id", i."TenantId", i."MaterialRequestId", r."RequestNo", r."RequesterUserId", i."ProductId", i."Quantity", i."UomId", - i."RequestReason", i."DueDate", r."BranchId" - FROM "Prc_T_MaterialRequestItem" i - INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId" - WHERE i."IsDeleted" = false AND r."IsDeleted" = false - AND r."ApprovalStatus" IN ('Onaylandı', 'Teklif Talebi', 'Teklif Talebi Gönderildi', 'Satınalma Siparişi') - AND i."FulfillmentMethod" = 'Purchase' AND i."LineStatus" = 'Waiting' - AND NOT EXISTS (SELECT 1 FROM "Prc_T_PurchaseRfqLine" rl - INNER JOIN "Prc_T_PurchaseRfq" q ON q."Id" = rl."PurchaseRfqId" - WHERE rl."MaterialRequestItemId" = i."Id" AND rl."IsDeleted" = false - AND q."IsDeleted" = false AND q."Status" <> 'Cancelled') - AND NOT EXISTS (SELECT 1 FROM "Prc_T_PurchaseOrderLine" ol - INNER JOIN "Prc_T_PurchaseOrder" o ON o."Id" = ol."PurchaseOrderId" - WHERE ol."MaterialRequestItemId" = i."Id" AND ol."IsDeleted" = false - AND o."IsDeleted" = false AND o."Status" <> 'Cancelled'); diff --git a/configs/seeds/postgres/object/Prc_V_MaterialRequestItemPlan.sql b/configs/seeds/postgres/object/Prc_V_MaterialRequestItemPlan.sql new file mode 100644 index 00000000..dc6f38dd --- /dev/null +++ b/configs/seeds/postgres/object/Prc_V_MaterialRequestItemPlan.sql @@ -0,0 +1,31 @@ +-- Talep kaleminin planlanmış payları ve planlanacak kalanı (Planlama, Plan Takibi, kalem durumu). Miktarlar kalemin birimine çevrilir. +-- Satınalma payı: teklif aşamasındaki teklif talebinde ya da iptal olmayan siparişe geçmiş teklif kaleminde duran miktar; ihale aynı kalemi +-- bütün tedarikçilere kopyaladığı için ihale × ihale kalemi başına bir kez (en büyüğü) sayılır. +-- Transfer payı: iptal olmayan iç transfer satırı — tamamlanmış belgede yapılan, açık belgede istenen miktar (eksik tamamlanan belgenin kalanı +-- backorder belgesinde istenir); iade belgesi sayılmaz. +-- Stok payı: stok talebin teslim konumundayken onaylanan, belgesiz karşılanan miktar (FromStockQuantity). +CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestItemPlan" AS +SELECT i."Id", i."TenantId", COALESCE(pq."Quantity", 0) AS "PurchaseQuantity", COALESCE(tq."Quantity", 0) AS "TransferQuantity", + i."Quantity" - COALESCE(pq."Quantity", 0) - COALESCE(tq."Quantity", 0) - i."FromStockQuantity" AS "RemainingQuantity", + i."FromStockQuantity" + FROM "Prc_T_MaterialRequestItem" i + LEFT JOIN LATERAL ( + SELECT SUM(g."Quantity") AS "Quantity" + FROM (SELECT MAX(public."Inv_F_UomConvert"(rl."Quantity", rl."UomId", i."UomId")) AS "Quantity" + FROM "Prc_T_PurchaseRfqLine" rl + INNER JOIN "Prc_T_PurchaseRfq" q ON q."Id" = rl."PurchaseRfqId" + WHERE rl."MaterialRequestItemId" = i."Id" AND rl."IsDeleted" = false AND q."IsDeleted" = false + AND (q."Status" IN ('Draft', 'Sent') + OR (q."Status" = 'Purchase' + AND EXISTS (SELECT 1 FROM "Prc_T_PurchaseOrderLine" ol + INNER JOIN "Prc_T_PurchaseOrder" o ON o."Id" = ol."PurchaseOrderId" + WHERE ol."PurchaseRfqLineId" = rl."Id" AND ol."IsDeleted" = false + AND o."IsDeleted" = false AND o."Status" <> 'Cancelled'))) + GROUP BY COALESCE(q."TenderGroupId", q."Id"), COALESCE(rl."TenderLineId", rl."Id")) g) pq ON true + LEFT JOIN LATERAL ( + SELECT SUM(public."Inv_F_UomConvert"(CASE WHEN t."Status" = 'Done' THEN tl."Quantity" ELSE tl."DemandQuantity" END, tl."UomId", i."UomId")) AS "Quantity" + FROM "Inv_T_TransferLine" tl + INNER JOIN "Inv_T_Transfer" t ON t."Id" = tl."TransferId" + WHERE tl."MaterialRequestItemId" = i."Id" AND tl."IsDeleted" = false AND t."IsDeleted" = false + AND t."OperationKind" = 'InternalTransfer' AND t."Status" <> 'Cancelled' AND t."ReturnOfId" IS NULL) tq ON true + WHERE i."IsDeleted" = false; diff --git a/configs/seeds/postgres/object/Prc_V_MaterialRequestLine.sql b/configs/seeds/postgres/object/Prc_V_MaterialRequestLine.sql index 481fbddc..e17b674d 100644 --- a/configs/seeds/postgres/object/Prc_V_MaterialRequestLine.sql +++ b/configs/seeds/postgres/object/Prc_V_MaterialRequestLine.sql @@ -5,7 +5,7 @@ AS 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", r."BranchId" + i."ProductId", i."Quantity", i."UomId", i."DueDate", i."RequestReason", i."DeliveredQuantity", + i."LineStatus", r."BranchId" 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/postgres/object/Prc_V_MaterialRequestPlan.sql b/configs/seeds/postgres/object/Prc_V_MaterialRequestPlan.sql new file mode 100644 index 00000000..21f34402 --- /dev/null +++ b/configs/seeds/postgres/object/Prc_V_MaterialRequestPlan.sql @@ -0,0 +1,23 @@ +-- Planlama (App.Prc.MaterialRequestPlan): onaylanmış (satınalmada ilerleyen dahil) talebin bekleyen ve planlanacak miktarı kalan kalemleri. +-- Stok bütün iç konumların toplamıdır (kalemin biriminde); DueState termin süzgecidir (Late / Week = 7 gün içinde / Later). Taslak Plan, +-- Planla diyaloğunda girilip henüz onaylanmamış dağıtımın toplamıdır (Prc_T_MaterialRequestPlanLine). +CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestPlan" AS +SELECT i."Id", i."TenantId", i."MaterialRequestId", r."RequestNo", r."Priority", r."RequesterUserId", r."BranchId", r."DepartmentId", r."WarehouseId", r."LocationId", + r."RequestDate", i."ProductId", p."CategoryId", i."Quantity", i."UomId", i."DueDate", + CAST(CASE WHEN i."DueDate" < CURRENT_DATE THEN 'Late' + WHEN i."DueDate" <= CURRENT_DATE + 7 THEN 'Week' ELSE 'Later' END AS varchar(8)) AS "DueState", + i."RequestReason", + pl."PurchaseQuantity", pl."TransferQuantity", pl."RemainingQuantity", COALESCE(st."Quantity", 0) AS "StockQuantity", + (SELECT SUM(x."Quantity") FROM "Prc_T_MaterialRequestPlanLine" x WHERE x."MaterialRequestItemId" = i."Id" AND x."IsDeleted" = false) AS "DraftQuantity", + i."IsDeleted" + FROM "Prc_T_MaterialRequestItem" i + INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId" + INNER JOIN public."Prc_V_MaterialRequestItemPlan" pl ON pl."Id" = i."Id" + LEFT JOIN "Inv_T_Product" p ON p."Id" = i."ProductId" + LEFT JOIN LATERAL ( + SELECT SUM(public."Inv_F_UomConvert"(s."Quantity", s."UomId", i."UomId")) AS "Quantity" + FROM "Inv_T_Stock" s + INNER JOIN "Inv_T_Location" l ON l."Id" = s."LocationId" AND l."LocationType" = 'Internal' + WHERE s."ProductId" = i."ProductId" AND s."IsDeleted" = false) st ON true + WHERE i."IsDeleted" = false AND r."IsDeleted" = false AND i."LineStatus" = 'Waiting' AND pl."RemainingQuantity" > 0 + AND r."ApprovalStatus" IN ('Onaylandı', 'Teklif Talebi', 'Teklif Talebi Gönderildi', 'Satınalma Siparişi'); diff --git a/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanLine.sql b/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanLine.sql new file mode 100644 index 00000000..a0199ed9 --- /dev/null +++ b/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanLine.sql @@ -0,0 +1,13 @@ +-- Planla diyaloğunun Karşılama Planı ızgarası (App.Prc.MaterialRequestPlanLine): talep kaleminin onay bekleyen taslak planı. Miktar kalemin +-- biriminde; satınalmada birim fiyat teklif kalemine yazılacak fiyattır (tedarikçinin en düşük minimum miktarlı satırı). BaseId kalemdir. +CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestPlanLine" AS +SELECT pl."Id", pl."TenantId", pl."MaterialRequestItemId" AS "BaseId", pl."PlanMethod", pl."SupplierId", pl."SourceLocationId", pl."Quantity", + i."UomId", ps."Price", ps."CurrencyId", pl."CreationTime", pl."CreatorId", pl."IsDeleted" + FROM "Prc_T_MaterialRequestPlanLine" pl + INNER JOIN "Prc_T_MaterialRequestItem" i ON i."Id" = pl."MaterialRequestItemId" + LEFT JOIN LATERAL (SELECT x."Price", x."CurrencyId" + FROM "Inv_T_ProductSupplier" x + WHERE pl."PlanMethod" = 'Purchase' AND x."ProductId" = i."ProductId" AND x."ContactId" = pl."SupplierId" + AND x."IsDeleted" = false + ORDER BY x."MinQuantity" + LIMIT 1) ps ON TRUE; diff --git a/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanSource.sql b/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanSource.sql new file mode 100644 index 00000000..87e362bf --- /dev/null +++ b/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanSource.sql @@ -0,0 +1,34 @@ +-- Planla diyaloğunun İç Transfer ızgarası (App.Prc.MaterialRequestPlanSource) ve iç transfer / stoktan karşılama kararlarının stok kuralı: +-- talep kaleminin ürününün stoğu olan iç konumlar. Talebin teslim konumu da listelenir (IsDestination): oraya yazılan plan transfer açmaz, +-- stoktan karşılanır (PlanMethod = Stock). Miktarlar kalemin biriminde; ayrılan = açık (Taslak/Bekleyen/Hazır) transferlerde o +-- konumdan istenen, serbest = eldeki − ayrılan. Plan Miktarı kalemin bu konum için taslak planıdır. BaseId diyaloğun süzdüğü kalem, Id +-- kalem + ':' + konumdur (Prc_P_MaterialRequestPlanLineSave ayırır); taslak kaydı ve onay serbest stoğu buradan okur. +-- MaxQuantity satıra yazılabilecek en fazla plan miktarıdır: serbest stok ile planlanacak kalandan kalemin diğer taslak satırları +-- düşüldükten sonra kalanın küçüğü (ızgaranın doğrulaması; kayıt yordamı aynı kuralı yeniden denetler). +CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestPlanSource" AS +SELECT CAST(i."Id" AS varchar(36)) || ':' || CAST(st."LocationId" AS varchar(36)) AS "Id", i."TenantId", i."Id" AS "BaseId", + l."BranchId", l."WarehouseId", st."LocationId", st."OnHand", COALESCE(rs."Quantity", 0) AS "ReservedQuantity", + st."OnHand" - COALESCE(rs."Quantity", 0) AS "FreeQuantity", i."UomId", pl."Quantity" AS "PlanQuantity", i."IsDeleted", + st."LocationId" = r."LocationId" AS "IsDestination", + GREATEST(0, LEAST(st."OnHand" - COALESCE(rs."Quantity", 0), ip."RemainingQuantity" - COALESCE(od."Quantity", 0))) AS "MaxQuantity" + FROM "Prc_T_MaterialRequestItem" i + INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId" + CROSS JOIN LATERAL (SELECT s."LocationId", SUM(public."Inv_F_UomConvert"(s."Quantity", s."UomId", i."UomId")) AS "OnHand" + FROM "Inv_T_Stock" s + WHERE s."ProductId" = i."ProductId" AND s."IsDeleted" = false + GROUP BY s."LocationId" + HAVING SUM(s."Quantity") > 0) st + INNER JOIN "Inv_T_Location" l ON l."Id" = st."LocationId" AND l."LocationType" = 'Internal' AND l."IsDeleted" = false + LEFT JOIN LATERAL (SELECT SUM(public."Inv_F_UomConvert"(tl."DemandQuantity", tl."UomId", i."UomId")) AS "Quantity" + FROM "Inv_T_TransferLine" tl + INNER JOIN "Inv_T_Transfer" t ON t."Id" = tl."TransferId" + WHERE t."SourceLocationId" = st."LocationId" AND tl."ProductId" = i."ProductId" AND tl."IsDeleted" = false + AND t."IsDeleted" = false AND t."Status" IN ('Draft', 'Waiting', 'Ready')) rs ON TRUE + LEFT JOIN "Prc_T_MaterialRequestPlanLine" pl + ON pl."MaterialRequestItemId" = i."Id" AND pl."PlanMethod" IN ('Transfer', 'Stock') AND pl."SourceLocationId" = st."LocationId" AND pl."IsDeleted" = false + INNER JOIN public."Prc_V_MaterialRequestItemPlan" ip ON ip."Id" = i."Id" + LEFT JOIN LATERAL (SELECT SUM(x."Quantity") AS "Quantity" + FROM "Prc_T_MaterialRequestPlanLine" x + WHERE x."MaterialRequestItemId" = i."Id" AND x."IsDeleted" = false + AND (x."SourceLocationId" IS NULL OR x."SourceLocationId" <> st."LocationId")) od ON TRUE + WHERE i."IsDeleted" = false; diff --git a/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanTrack.sql b/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanTrack.sql new file mode 100644 index 00000000..253ad75c --- /dev/null +++ b/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanTrack.sql @@ -0,0 +1,43 @@ +-- Plan Takibi (App.Prc.MaterialRequestPlanTrack): talep kalemleri için verilen her karar — satınalmada ihalenin kök teklif talebindeki kalem +-- (alternatif tedarikçilere kopyalanan satırlar tekrar listelenmez; siparişe dönüştüyse ihale kaleminin siparişi ve tedarikçisi), iç +-- transferde transfer satırı, stoktan karşılamada kalemin kendisi (belgesiz; konum talebin teslim konumu). Gerçekleşen: siparişte alınan, +-- transferde tamamlanmış belgede yapılan, stokta karşılanan miktar. +CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestPlanTrack" AS +SELECT rl."Id", rl."TenantId", i."Id" AS "MaterialRequestItemId", i."MaterialRequestId", r."RequestNo", r."BranchId", r."DepartmentId", r."WarehouseId", + r."LocationId", i."ProductId", i."DueDate", CAST('Purchase' AS varchar(16)) AS "PlanMethod", q."Id" AS "DocumentId", q."RfqNo" AS "DocumentNo", + q."Status" AS "DocumentStatus", COALESCE(o."SupplierId", q."SupplierId") AS "SupplierId", CAST(NULL AS uuid) AS "SourceLocationId", + o."Id" AS "PurchaseOrderId", o."OrderNo" AS "PurchaseOrderNo", o."Status" AS "OrderStatus", rl."Quantity", rl."UomId", + COALESCE(o."ReceivedQuantity", 0) AS "DoneQuantity", rl."CreationTime" AS "PlanDate", rl."CreatorId" AS "PlannerUserId", rl."IsDeleted" + FROM "Prc_T_PurchaseRfqLine" rl + INNER JOIN "Prc_T_PurchaseRfq" q ON q."Id" = rl."PurchaseRfqId" AND q."IsDeleted" = false AND q."Id" = COALESCE(q."TenderGroupId", q."Id") + INNER JOIN "Prc_T_MaterialRequestItem" i ON i."Id" = rl."MaterialRequestItemId" + INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId" + LEFT JOIN LATERAL ( + SELECT po."Id", po."OrderNo", po."Status", po."SupplierId", ol."ReceivedQuantity" + FROM "Prc_T_PurchaseRfqLine" al + INNER JOIN "Prc_T_PurchaseOrderLine" ol ON ol."PurchaseRfqLineId" = al."Id" AND ol."IsDeleted" = false + INNER JOIN "Prc_T_PurchaseOrder" po ON po."Id" = ol."PurchaseOrderId" AND po."IsDeleted" = false + WHERE al."TenderLineId" = COALESCE(rl."TenderLineId", rl."Id") AND al."IsDeleted" = false + ORDER BY CASE WHEN po."Status" = 'Cancelled' THEN 1 ELSE 0 END, po."CreationTime" DESC + LIMIT 1) o ON true + WHERE rl."IsDeleted" = false +UNION ALL +SELECT tl."Id", tl."TenantId", i."Id", i."MaterialRequestId", r."RequestNo", r."BranchId", r."DepartmentId", r."WarehouseId", + r."LocationId", i."ProductId", i."DueDate", CAST('Transfer' AS varchar(16)), t."Id", t."TransferNo", + t."Status", NULL, t."SourceLocationId", + NULL, NULL, NULL, tl."DemandQuantity", tl."UomId", + CASE WHEN t."Status" = 'Done' THEN tl."Quantity" ELSE 0 END, tl."CreationTime", tl."CreatorId", tl."IsDeleted" + FROM "Inv_T_TransferLine" tl + INNER JOIN "Inv_T_Transfer" t ON t."Id" = tl."TransferId" AND t."IsDeleted" = false AND t."OperationKind" = 'InternalTransfer' AND t."ReturnOfId" IS NULL + INNER JOIN "Prc_T_MaterialRequestItem" i ON i."Id" = tl."MaterialRequestItemId" + INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId" + WHERE tl."IsDeleted" = false +UNION ALL +SELECT i."Id", i."TenantId", i."Id", i."MaterialRequestId", r."RequestNo", r."BranchId", r."DepartmentId", r."WarehouseId", + r."LocationId", i."ProductId", i."DueDate", CAST('Stock' AS varchar(16)), NULL, NULL, + NULL, NULL, r."LocationId", + NULL, NULL, NULL, i."FromStockQuantity", i."UomId", + i."FromStockQuantity", i."LastModificationTime", i."LastModifierId", i."IsDeleted" + FROM "Prc_T_MaterialRequestItem" i + INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId" + WHERE i."FromStockQuantity" > 0; diff --git a/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanVendor.sql b/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanVendor.sql new file mode 100644 index 00000000..32881e9d --- /dev/null +++ b/configs/seeds/postgres/object/Prc_V_MaterialRequestPlanVendor.sql @@ -0,0 +1,36 @@ +-- Planla diyaloğunun Satınalma ızgarası (App.Prc.MaterialRequestPlanVendor): kiracının bütün aktif kontakları; ürünün fiyat listesindekiler +-- fiyatıyla, diğerleri fiyatsız gelir. SuggestRank ızgaranın sırası ve Öner'in seçtiği tedarikçidir: fiyatlılar ucuzdan pahalıya, sonra son alım +-- tarihi yeniden eskiye, sonra ad (para birimi farkı gözetilmez). Fiyat satırı teklif kalemine yazılanla aynıdır (en düşük minimum +-- miktarlı satır, Prc_P_MaterialRequestPlan); son alım tarihini siparişli alım yazar. +-- Plan Miktarı kalemin bu tedarikçi için taslak planıdır; Rfq* tedarikçinin talebin şubesi ve deposu için bu kalemi taşıyan taslak teklif +-- talebidir (satırdaki Teklifi Aç). BaseId diyaloğun süzdüğü kalem, Id kalem + ':' + tedarikçidir (Prc_P_MaterialRequestPlanLineSave ayırır). +-- MaxQuantity satıra yazılabilecek en fazla plan miktarıdır: planlanacak kalandan kalemin diğer taslak satırları düşülür. +CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestPlanVendor" AS +SELECT CAST(i."Id" AS varchar(36)) || ':' || CAST(c."Id" AS varchar(36)) AS "Id", i."TenantId", i."Id" AS "BaseId", c."Id" AS "ContactId", + ps."MinQuantity", ps."UomId", ps."Price", ps."CurrencyId", ps."LeadTimeDays", ps."LastPurchaseDate", pl."Quantity" AS "PlanQuantity", + d."Id" AS "RfqId", d."RfqNo", d."Quantity" AS "RfqQuantity", i."IsDeleted", + ROW_NUMBER() OVER (PARTITION BY i."Id" ORDER BY ps."Price" ASC NULLS LAST, ps."LastPurchaseDate" DESC NULLS LAST, c."Name") AS "SuggestRank", + GREATEST(0, ip."RemainingQuantity" - COALESCE(od."Quantity", 0)) AS "MaxQuantity" + FROM "Prc_T_MaterialRequestItem" i + INNER JOIN "Prc_T_MaterialRequest" r ON r."Id" = i."MaterialRequestId" + INNER JOIN "Adm_T_Contact" c ON c."IsDeleted" = false AND c."IsActive" = true AND c."TenantId" IS NOT DISTINCT FROM i."TenantId" + LEFT JOIN LATERAL (SELECT x."MinQuantity", x."UomId", x."Price", x."CurrencyId", x."LeadTimeDays", x."LastPurchaseDate" + FROM "Inv_T_ProductSupplier" x + WHERE x."ProductId" = i."ProductId" AND x."ContactId" = c."Id" AND x."IsDeleted" = false + ORDER BY x."MinQuantity" + LIMIT 1) ps ON TRUE + LEFT JOIN "Prc_T_MaterialRequestPlanLine" pl + ON pl."MaterialRequestItemId" = i."Id" AND pl."PlanMethod" = 'Purchase' AND pl."SupplierId" = c."Id" AND pl."IsDeleted" = false + LEFT JOIN LATERAL (SELECT q."Id", q."RfqNo", ql."Quantity" + FROM "Prc_T_PurchaseRfq" q + INNER JOIN "Prc_T_PurchaseRfqLine" ql ON ql."PurchaseRfqId" = q."Id" AND ql."MaterialRequestItemId" = i."Id" AND ql."IsDeleted" = false + WHERE q."IsDeleted" = false AND q."Status" = 'Draft' AND q."SupplierId" = c."Id" AND q."BranchId" = r."BranchId" + AND q."WarehouseId" = r."WarehouseId" + ORDER BY q."CreationTime" DESC + LIMIT 1) d ON TRUE + INNER JOIN public."Prc_V_MaterialRequestItemPlan" ip ON ip."Id" = i."Id" + LEFT JOIN LATERAL (SELECT SUM(x."Quantity") AS "Quantity" + FROM "Prc_T_MaterialRequestPlanLine" x + WHERE x."MaterialRequestItemId" = i."Id" AND x."IsDeleted" = false + AND (x."SupplierId" IS NULL OR x."SupplierId" <> c."Id")) od ON TRUE + WHERE i."IsDeleted" = false; diff --git a/configs/seeds/postgres/object/Prc_V_MaterialRequestTransferItem.sql b/configs/seeds/postgres/object/Prc_V_MaterialRequestTransferItem.sql deleted file mode 100644 index 9c907665..00000000 --- a/configs/seeds/postgres/object/Prc_V_MaterialRequestTransferItem.sql +++ /dev/null @@ -1,17 +0,0 @@ --- İç transfere aktarılabilecek talep kalemleri: onaylı talebin transferle karşılanacak, bekleyen ve açık bir transferde yer almayan --- kalemi, aynı şubedeki taslak iç transfer belgesiyle eşlenir. Id = belge|kalem; Talepten Aktar seçilen satırları Inv_P_TransferImportItem ile ekler. -CREATE OR REPLACE VIEW public."Prc_V_MaterialRequestTransferItem" AS -SELECT d."Id"::text || '|' || i."Id"::text AS "Id", d."Id" AS "BaseId", i."TenantId", i."Id" AS "MaterialRequestItemId", - i."MaterialRequestId", r."RequestNo", r."RequesterUserId", i."ProductId", i."Quantity" - i."DeliveredQuantity" AS "Quantity", i."UomId", - i."RequestReason", i."DueDate", r."WarehouseId", r."LocationId" - FROM "Inv_T_Transfer" d - INNER JOIN "Prc_T_MaterialRequest" r ON r."BranchId" = d."BranchId" AND r."TenantId" IS NOT DISTINCT FROM d."TenantId" - INNER JOIN "Prc_T_MaterialRequestItem" i ON i."MaterialRequestId" = r."Id" - WHERE d."IsDeleted" = false AND d."OperationKind" = 'InternalTransfer' AND d."Status" = 'Draft' - AND r."IsDeleted" = false AND i."IsDeleted" = false - AND r."ApprovalStatus" IN ('Onaylandı', 'Teklif Talebi', 'Teklif Talebi Gönderildi', 'Satınalma Siparişi') - AND i."FulfillmentMethod" = 'Transfer' AND i."LineStatus" = 'Waiting' AND i."Quantity" > i."DeliveredQuantity" - AND NOT EXISTS (SELECT 1 FROM "Inv_T_TransferLine" tl - INNER JOIN "Inv_T_Transfer" t ON t."Id" = tl."TransferId" - WHERE tl."MaterialRequestItemId" = i."Id" AND tl."IsDeleted" = false - AND t."IsDeleted" = false AND t."Status" NOT IN ('Done', 'Cancelled')); diff --git a/configs/seeds/postgres/object/Prc_V_PurchaseImportItem.sql b/configs/seeds/postgres/object/Prc_V_PurchaseImportItem.sql deleted file mode 100644 index fa9ef1d8..00000000 --- a/configs/seeds/postgres/object/Prc_V_PurchaseImportItem.sql +++ /dev/null @@ -1,9 +0,0 @@ --- Talep Kalemleri sekmesi: aktarılabilir her talep kalemi, kalem alabilecek açık belgeyle (teklif aşamasındaki --- teklif talebi ya da taslak sipariş) eşlenir; belge yalnız kendi şubesinin talebini alır. Id = belge|kalem; seçilen satırları Seçilenleri Aktar ile Prc_P_PurchaseImportItem kopyalar. -CREATE OR REPLACE VIEW public."Prc_V_PurchaseImportItem" AS -SELECT d."Id"::text || '|' || a."Id"::text AS "Id", d."Id" AS "BaseId", a."TenantId", a."MaterialRequestId", - a."RequestNo", a."RequesterUserId", a."ProductId", a."Quantity", a."UomId", a."RequestReason", a."DueDate" - FROM (SELECT "Id", "TenantId", "BranchId" FROM "Prc_T_PurchaseRfq" WHERE "IsDeleted" = false AND "Status" IN ('Draft', 'Sent') - UNION ALL - SELECT "Id", "TenantId", "BranchId" FROM "Prc_T_PurchaseOrder" WHERE "IsDeleted" = false AND "Status" = 'Draft') d - INNER JOIN "Prc_V_MaterialRequestAvailableItem" a ON a."BranchId" = d."BranchId" AND a."TenantId" IS NOT DISTINCT FROM d."TenantId"; diff --git a/configs/seeds/postgres/object/Prc_V_PurchaseReceiptLine.sql b/configs/seeds/postgres/object/Prc_V_PurchaseReceiptLine.sql new file mode 100644 index 00000000..28048609 --- /dev/null +++ b/configs/seeds/postgres/object/Prc_V_PurchaseReceiptLine.sql @@ -0,0 +1,18 @@ +CREATE OR REPLACE VIEW public."Prc_V_PurchaseReceiptLine" +AS +-- Planlama › Son Alımlar'ın kaynağı: tamamlanan alımların (iade hariç) yapılan satırları; siparişsiz alım da gelir. +-- Fiyat ve para birimi yalnız siparişli satırda dolar: sipariş birim fiyatı alım satırının birimine çevrilir. +-- Prc öneki migrate sırası içindir (Prc_T_* tablolarından sonra kurulur). +SELECT l."Id", t."TenantId", t."IsDeleted", l."ProductId", t."Id" AS "TransferId", t."TransferNo", t."EffectiveDate", t."PartnerId", + t."BranchId", t."WarehouseId", t."DestinationLocationId", l."Quantity", l."UomId", + CAST(ROUND(ol."UnitPrice" * f."Factor", 4) AS numeric(18, 4)) AS "UnitPrice", o."CurrencyId", + CAST(ROUND(l."Quantity" * ol."UnitPrice" * f."Factor", 2) AS numeric(18, 2)) AS "UntaxedAmount", + o."Id" AS "PurchaseOrderId", o."OrderNo", m."RequestNo" +FROM "Inv_T_TransferLine" l +INNER JOIN "Inv_T_Transfer" t ON t."Id" = l."TransferId" +LEFT JOIN "Prc_T_PurchaseOrderLine" ol ON ol."Id" = l."PurchaseOrderLineId" +LEFT JOIN "Prc_T_PurchaseOrder" o ON o."Id" = ol."PurchaseOrderId" +LEFT JOIN LATERAL (SELECT public."Inv_F_UomConvert"(1, l."UomId", ol."UomId") AS "Factor" WHERE ol."Id" IS NOT NULL) f ON TRUE +LEFT JOIN "Prc_T_MaterialRequestItem" i ON i."Id" = COALESCE(l."MaterialRequestItemId", ol."MaterialRequestItemId") +LEFT JOIN "Prc_T_MaterialRequest" m ON m."Id" = i."MaterialRequestId" +WHERE l."IsDeleted" = FALSE AND l."Quantity" > 0 AND t."OperationKind" = 'Receipt' AND t."Status" = 'Done' AND t."ReturnOfId" IS NULL; diff --git a/configs/seeds/sql/object/Inv_P_TransferImportItem.sql b/configs/seeds/sql/object/Inv_P_TransferImportItem.sql deleted file mode 100644 index 9052632c..00000000 --- a/configs/seeds/sql/object/Inv_P_TransferImportItem.sql +++ /dev/null @@ -1,23 +0,0 @@ --- Talepten Aktar: seçilen malzeme talebi kalemini (@Key = belge|kalem) taslak iç transfere satır olarak ekler; kalanı (talep − teslim) aktarılır. --- Belgenin hedef konumu boşsa talebin konumu yazılır. -CREATE OR ALTER PROCEDURE [dbo].[Inv_P_TransferImportItem] - @Key nvarchar(80) -AS -BEGIN - SET NOCOUNT ON; - DECLARE @Doc uniqueidentifier, @Tenant uniqueidentifier, @Item uniqueidentifier, @ProductId uniqueidentifier, @Description nvarchar(256), - @Quantity decimal(18, 4), @UomId nvarchar(64), @LocationId uniqueidentifier; - - SELECT @Doc = BaseId, @Tenant = TenantId, @Item = MaterialRequestItemId, @ProductId = ProductId, @Description = RequestReason, - @Quantity = Quantity, @UomId = UomId, @LocationId = LocationId - FROM Prc_V_MaterialRequestTransferItem - WHERE Id = @Key; - IF @Doc IS NULL - THROW 50319, N'Talep kalemi artık aktarılamaz: belge taslak değil, kalem başka bir transfere aktarılmış ya da talep değişmiş.', 1; - - INSERT INTO Inv_T_TransferLine (Id, TenantId, TransferId, ProductId, Description, DemandQuantity, Quantity, UomId, MaterialRequestItemId, CreationTime, IsDeleted) - VALUES (NEWID(), @Tenant, @Doc, @ProductId, @Description, @Quantity, 0, @UomId, @Item, GETUTCDATE(), 0); - - UPDATE Inv_T_Transfer SET DestinationLocationId = COALESCE(DestinationLocationId, @LocationId) WHERE Id = @Doc; - EXEC Inv_P_TransferRecalc @Doc; -END diff --git a/configs/seeds/sql/object/Inv_P_TransferRecalc.sql b/configs/seeds/sql/object/Inv_P_TransferRecalc.sql index 6a0013a0..a04c58a7 100644 --- a/configs/seeds/sql/object/Inv_P_TransferRecalc.sql +++ b/configs/seeds/sql/object/Inv_P_TransferRecalc.sql @@ -46,4 +46,7 @@ BEGIN WHERE l.TransferId = @Id AND l.IsDeleted = 0) x) FROM Inv_T_Transfer t WHERE t.Id = @Id; + + -- Satır eklenince, silinince ya da belge tamamlanınca talep kaleminin planlanmış payı değişir. + EXEC Prc_P_MaterialRequestItemSync @Id; END diff --git a/configs/seeds/sql/object/Inv_P_TransferSetStatus.sql b/configs/seeds/sql/object/Inv_P_TransferSetStatus.sql index fec50523..ea3e32fb 100644 --- a/configs/seeds/sql/object/Inv_P_TransferSetStatus.sql +++ b/configs/seeds/sql/object/Inv_P_TransferSetStatus.sql @@ -46,6 +46,8 @@ BEGIN BEGIN IF @Status IN ('Done', 'Cancelled') THROW 50307, N'Tamamlanmış ya da iptal edilmiş belge iptal edilemez.', 1; UPDATE Inv_T_Transfer SET Status = 'Cancelled' WHERE Id = @Id; + -- İptal edilen transferin payı talep kalemine geri döner. + EXEC Prc_P_MaterialRequestItemSync @Id; END ELSE IF @Action = 'Return' BEGIN diff --git a/configs/seeds/sql/object/Inv_P_TransferSupplierPrice.sql b/configs/seeds/sql/object/Inv_P_TransferSupplierPrice.sql new file mode 100644 index 00000000..aad5255d --- /dev/null +++ b/configs/seeds/sql/object/Inv_P_TransferSupplierPrice.sql @@ -0,0 +1,54 @@ +-- Tamamlanan siparişli alım ürünün tedarikçi fiyat listesini (Inv_T_ProductSupplier) günceller: tedarikçi × ürün × birim × +-- para birimi başına tek satır tutulur. Alınan miktara uyan kademe (MinQuantity ≤ miktar olan en büyüğü) siparişin +-- birim fiyatı ve son alım tarihiyle güncellenir; uyan satır yoksa yeni satır açılır (temin süresi = onaydan alıma gün). +-- Fiyatı sipariş verir: siparişsiz alım, iade ve fiyatı 0 olan kalem yazmaz. +CREATE OR ALTER PROCEDURE [dbo].[Inv_P_TransferSupplierPrice] + @Id uniqueidentifier, + @UserId uniqueidentifier = NULL +AS +BEGIN + SET NOCOUNT ON; + DECLARE @Now datetime = GETUTCDATE(); + DECLARE @Buy TABLE (TenantId uniqueidentifier NULL, ProductId uniqueidentifier NOT NULL, ContactId uniqueidentifier NOT NULL, + UomId nvarchar(64) NOT NULL, CurrencyId nvarchar(64) NOT NULL, Quantity decimal(18, 4) NOT NULL, + Price decimal(18, 4) NOT NULL, LeadTimeDays int NOT NULL, TargetId uniqueidentifier NULL, + PRIMARY KEY (ProductId, ContactId, UomId, CurrencyId)); + + INSERT INTO @Buy (TenantId, ProductId, ContactId, UomId, CurrencyId, Quantity, Price, LeadTimeDays) + SELECT b.TenantId, b.ProductId, b.SupplierId, b.UomId, b.CurrencyId, SUM(b.Quantity), + ROUND(SUM(b.Quantity * b.UnitPrice) / SUM(b.Quantity), 4), MAX(b.LeadTimeDays) + FROM (SELECT t.TenantId, ol.ProductId, o.SupplierId, ol.UomId, o.CurrencyId, ol.UnitPrice, + dbo.Inv_F_UomConvert(l.Quantity, l.UomId, ol.UomId) AS Quantity, + CASE WHEN o.ConfirmDate IS NULL OR o.ConfirmDate > @Now THEN 0 ELSE DATEDIFF(day, o.ConfirmDate, @Now) END AS LeadTimeDays + FROM Inv_T_Transfer t + INNER JOIN Inv_T_TransferLine l ON l.TransferId = t.Id AND l.IsDeleted = 0 AND l.Quantity > 0 + INNER JOIN Prc_T_PurchaseOrderLine ol ON ol.Id = l.PurchaseOrderLineId AND ol.UnitPrice > 0 + INNER JOIN Prc_T_PurchaseOrder o ON o.Id = ol.PurchaseOrderId + WHERE t.Id = @Id AND t.OperationKind = 'Receipt' AND t.ReturnOfId IS NULL) b + GROUP BY b.TenantId, b.ProductId, b.SupplierId, b.UomId, b.CurrencyId + HAVING SUM(b.Quantity) > 0; + + UPDATE b SET TargetId = (SELECT TOP 1 ps.Id + FROM Inv_T_ProductSupplier ps + INNER JOIN Inv_T_Product p ON p.Id = ps.ProductId + WHERE ps.ProductId = b.ProductId AND ps.ContactId = b.ContactId AND ps.IsDeleted = 0 AND ps.VariantKey IS NULL + AND ISNULL(ps.UomId, p.UomId) = b.UomId AND ISNULL(ps.CurrencyId, b.CurrencyId) = b.CurrencyId + AND ps.MinQuantity <= b.Quantity + AND (ps.TenantId = b.TenantId OR (ps.TenantId IS NULL AND b.TenantId IS NULL)) + ORDER BY ps.MinQuantity DESC) + FROM @Buy b; + + UPDATE ps SET Price = b.Price, UomId = b.UomId, CurrencyId = b.CurrencyId, LastPurchaseDate = @Now, + LastModificationTime = @Now, LastModifierId = @UserId + FROM Inv_T_ProductSupplier ps + INNER JOIN @Buy b ON b.TargetId = ps.Id; + + -- Miktarı 1'in altındaki alımda 1'lik kademe uymaz; yeni kademe alınan miktardan başlar. + INSERT INTO Inv_T_ProductSupplier (Id, TenantId, ProductId, ContactId, MinQuantity, UomId, Price, CurrencyId, LeadTimeDays, + LastPurchaseDate, CreationTime, CreatorId, IsDeleted) + SELECT NEWID(), b.TenantId, b.ProductId, b.ContactId, CASE WHEN b.Quantity < 1 THEN b.Quantity ELSE 1 END, b.UomId, b.Price, + b.CurrencyId, b.LeadTimeDays, @Now, @Now, @UserId, 0 + FROM @Buy b + WHERE b.TargetId IS NULL; +END +GO diff --git a/configs/seeds/sql/object/Inv_P_TransferValidate.sql b/configs/seeds/sql/object/Inv_P_TransferValidate.sql index e2497171..5c4f0a7e 100644 --- a/configs/seeds/sql/object/Inv_P_TransferValidate.sql +++ b/configs/seeds/sql/object/Inv_P_TransferValidate.sql @@ -1,6 +1,7 @@ -- Tamamla: yapılan miktarlar stoğa işlenir (Inv_T_Stock, ürün biriminde, lot kırılımlı). İç konumdan çıkışta stok yetmezse -- işlem durur; dış konumlar stok tutmaz. Envanter takibi kapalı ürün stoğa girmez. Lot/seri takipli üründe lot toplamı --- yapılan miktara eşit olmalıdır. Sipariş kalemlerinin alınan, talep kalemlerinin teslim edilen miktarı güncellenir (iadede düşülür). +-- yapılan miktara eşit olmalıdır. Sipariş kalemlerinin alınan, talep kalemlerinin teslim edilen miktarı güncellenir (iadede düşülür); +-- siparişli alım ürün–tedarikçi fiyatını yazar (Inv_P_TransferSupplierPrice). -- Talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. CREATE OR ALTER PROCEDURE [dbo].[Inv_P_TransferValidate] @Id uniqueidentifier, @@ -122,6 +123,8 @@ BEGIN WHERE l.TransferId = @Id AND l.IsDeleted = 0 AND l.Quantity > 0 GROUP BY l.PurchaseOrderLineId) x ON x.PurchaseOrderLineId = ol.Id; + EXEC Inv_P_TransferSupplierPrice @Id, @UserId; + UPDATE i SET DeliveredQuantity = i.DeliveredQuantity + @Sign * x.Quantity, LineStatus = CASE WHEN i.DeliveredQuantity + @Sign * x.Quantity >= i.Quantity THEN 'Done' WHEN i.LineStatus = 'Done' THEN 'Waiting' ELSE i.LineStatus END diff --git a/configs/seeds/sql/object/Inv_T_ProductSupplier.sql b/configs/seeds/sql/object/Inv_T_ProductSupplier.sql index 6929e629..e6f2e2b8 100644 --- a/configs/seeds/sql/object/Inv_T_ProductSupplier.sql +++ b/configs/seeds/sql/object/Inv_T_ProductSupplier.sql @@ -11,6 +11,7 @@ BEGIN [Price] decimal(18, 4) NOT NULL DEFAULT 0, [CurrencyId] nvarchar(64) NULL, [LeadTimeDays] int NOT NULL DEFAULT 0, + [LastPurchaseDate] datetime NULL, [VariantKey] nvarchar(450) NULL, [CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(), [CreatorId] uniqueidentifier NULL, diff --git a/configs/seeds/sql/object/Prc_P_MaterialRequestItemSync.sql b/configs/seeds/sql/object/Prc_P_MaterialRequestItemSync.sql new file mode 100644 index 00000000..c2556af8 --- /dev/null +++ b/configs/seeds/sql/object/Prc_P_MaterialRequestItemSync.sql @@ -0,0 +1,17 @@ +-- Transfer belgesinin talep kalemlerinin satır durumunu planla eşler (yeniden hesap ve iptal sonrası): kalanın tamamı iç transferle +-- planlanmış, satınalma payı olmayan bekleyen kalem kapanır (Tamamlandı); transfer iptal edilir, satırı silinir ya da eksik tamamlanıp kalanı +-- yeniden açılırsa kapalı kalem Bekliyor'a döner ve Planlama'da görünür. Silinmiş satırların kalemleri de kapsamdadır. +CREATE OR ALTER PROCEDURE [dbo].[Prc_P_MaterialRequestItemSync] + @TransferId uniqueidentifier +AS +BEGIN + SET NOCOUNT ON; + + UPDATE i SET LineStatus = CASE WHEN i.LineStatus = 'Waiting' THEN 'Done' ELSE 'Waiting' END + FROM Prc_T_MaterialRequestItem i + INNER JOIN Prc_V_MaterialRequestItemPlan p ON p.Id = i.Id + WHERE i.Id IN (SELECT MaterialRequestItemId FROM Inv_T_TransferLine WHERE TransferId = @TransferId AND MaterialRequestItemId IS NOT NULL) + AND p.PurchaseQuantity = 0 + AND ((i.LineStatus = 'Waiting' AND p.RemainingQuantity <= 0) + OR (i.LineStatus = 'Done' AND p.RemainingQuantity > 0 AND i.DeliveredQuantity < i.Quantity)); +END diff --git a/configs/seeds/sql/object/Prc_P_MaterialRequestPlan.sql b/configs/seeds/sql/object/Prc_P_MaterialRequestPlan.sql new file mode 100644 index 00000000..4f5f0481 --- /dev/null +++ b/configs/seeds/sql/object/Prc_P_MaterialRequestPlan.sql @@ -0,0 +1,182 @@ +-- Planlama kararı: talep kaleminin planlanacak kalanından @PlanQuantity kadarını satınalmaya ya da iç transfere ayırır; kalanın geri kalanı +-- listede kalır. Planla diyaloğunun onayı (Prc_P_MaterialRequestPlanConfirm) her taslak plan satırı için çağırır. +-- Purchase: tedarikçinin talebin şubesi ve deposu için taslak teklif talebi varsa kalem ona eklenir (kalem zaten oradaysa miktarı artar), yoksa +-- talebin deposunun alım operasyon türüyle yeni taslak teklif talebi açılır (para birimi ve koşullar kontak kartından; alıcı — satınalma sorumlusu — +-- planlayan). Fiyat tedarikçinin fiyat listesinden gelir; teklif → sipariş → alım akışı oradan sürer. +-- Transfer: kaynak konumun serbest stoğu (Prc_V_MaterialRequestPlanSource) yetmelidir; aynı kaynak → talebin konumu için onaya +-- girmemiş taslak iç transfer varsa satır ona, yoksa kaynak deponun iç transfer operasyon türüyle yeni taslak açılır. Kalanın tamamı transferle +-- planlanan, satınalma payı olmayan kalem transfer belgesinin yeniden hesabında kapanır (Prc_P_MaterialRequestItemSync). +-- Stock: stok talebin teslim konumundadır; belge açılmaz, serbest stok yetmelidir. Miktar kalemin stoktan karşılanan ve teslim edilen +-- miktarına eklenir; satınalma payı olmayan ve kalanı biten kalem kapanır. +CREATE OR ALTER PROCEDURE [dbo].[Prc_P_MaterialRequestPlan] + @Id uniqueidentifier, + @PlanMethod nvarchar(16), + @PlanQuantity decimal(18, 4), + @PlanSupplierId uniqueidentifier, + @PlanSourceLocationId uniqueidentifier, + @TenantId uniqueidentifier, + @LastModifierId uniqueidentifier +AS +BEGIN + SET NOCOUNT ON; + SET XACT_ABORT ON; + DECLARE @ProductId uniqueidentifier, @UomId nvarchar(64), @DueDate datetime, @Reason nvarchar(256), @Branch uniqueidentifier, + @Warehouse uniqueidentifier, @Location uniqueidentifier, @RequestNo nvarchar(32), @Remaining decimal(18, 4), + @Doc uniqueidentifier, @Line uniqueidentifier, @OpType uniqueidentifier, @SrcWarehouse uniqueidentifier, + @Free decimal(18, 4), @No nvarchar(128), @Msg nvarchar(400); + + BEGIN TRANSACTION; + + -- Kalem kilitlenir: aynı kalemin eşzamanlı iki planı kalanı iki kez dağıtamaz. + SELECT @ProductId = i.ProductId, @UomId = i.UomId, @DueDate = i.DueDate, @Reason = i.RequestReason, @Branch = r.BranchId, + @Warehouse = r.WarehouseId, @Location = r.LocationId, @RequestNo = r.RequestNo + FROM Prc_T_MaterialRequestItem i WITH (UPDLOCK, HOLDLOCK) + INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId + WHERE i.Id = @Id AND i.IsDeleted = 0 AND i.LineStatus = 'Waiting' AND r.IsDeleted = 0 + AND (i.TenantId = @TenantId OR (i.TenantId IS NULL AND @TenantId IS NULL)) + AND r.ApprovalStatus IN (N'Onaylandı', N'Teklif Talebi', N'Teklif Talebi Gönderildi', N'Satınalma Siparişi'); + IF @ProductId IS NULL + THROW 50191, N'Kalem planlanamaz: talep onaylı değil ya da kalem kapalı.', 1; + + SELECT @Remaining = RemainingQuantity FROM Prc_V_MaterialRequestItemPlan WHERE Id = @Id; + IF ISNULL(@PlanQuantity, 0) <= 0 + THROW 50192, N'Plan miktarı sıfırdan büyük olmalıdır.', 1; + IF @PlanQuantity > @Remaining + BEGIN + SET @Msg = CONCAT(N'Plan miktarı planlanacak kalanı aşamaz (kalan: ', FORMAT(@Remaining, '0.####'), N' ', @UomId, N').'); + THROW 50193, @Msg, 1; + END + + IF @PlanMethod = 'Purchase' + BEGIN + IF @PlanSupplierId IS NULL + THROW 50194, N'Satınalma kararında tedarikçi seçilmelidir.', 1; + + SELECT TOP 1 @Doc = Id + FROM Prc_T_PurchaseRfq + WHERE IsDeleted = 0 AND Status = 'Draft' AND SupplierId = @PlanSupplierId AND BranchId = @Branch AND WarehouseId = @Warehouse + AND (TenantId = @TenantId OR (TenantId IS NULL AND @TenantId IS NULL)) + ORDER BY CreationTime DESC; + + IF @Doc IS NULL + BEGIN + SELECT TOP 1 @OpType = Id + FROM Inv_T_OperationType + WHERE IsDeleted = 0 AND IsActive = 1 AND OperationKind = 'Receipt' AND WarehouseId = @Warehouse + ORDER BY Name; + IF @OpType IS NULL + THROW 50195, N'Talebin deposu için aktif bir alım operasyon türü tanımlı değil.', 1; + + SET @Doc = NEWID(); + EXEC Adm_P_SequenceNext N'Prc.PurchaseRfq', @TenantId, @No OUTPUT; + INSERT INTO Prc_T_PurchaseRfq (Id, TenantId, RfqNo, TenderGroupId, SupplierId, BranchId, OperationTypeId, WarehouseId, CurrencyId, + BuyerUserId, IncotermId, IncotermLocation, PaymentTermId, CreationTime, CreatorId, IsDeleted) + SELECT @Doc, @TenantId, LEFT(@No, 32), @Doc, c.Id, @Branch, @OpType, @Warehouse, COALESCE(c.SupplierCurrency, 'TRY'), + @LastModifierId, c.PurchaseIncotermId, c.PurchaseIncotermLocation, c.PurchasePaymentTermId, + GETUTCDATE(), @LastModifierId, 0 + FROM Adm_T_Contact c + WHERE c.Id = @PlanSupplierId AND c.IsDeleted = 0; + IF @@ROWCOUNT = 0 + THROW 50194, N'Satınalma kararında tedarikçi seçilmelidir.', 1; + END + + SELECT @Line = Id FROM Prc_T_PurchaseRfqLine WHERE PurchaseRfqId = @Doc AND MaterialRequestItemId = @Id AND IsDeleted = 0; + IF @Line IS NOT NULL + UPDATE Prc_T_PurchaseRfqLine + SET Quantity = Quantity + dbo.Inv_F_UomConvert(@PlanQuantity, @UomId, UomId), LastModificationTime = GETUTCDATE(), LastModifierId = @LastModifierId + WHERE Id = @Line; + ELSE + INSERT INTO Prc_T_PurchaseRfqLine (Id, TenantId, PurchaseRfqId, ProductId, Description, Quantity, UomId, UnitPrice, TaxRate, Amount, + DeliveryDate, MaterialRequestItemId, CreationTime, CreatorId, IsDeleted) + SELECT NEWID(), @TenantId, @Doc, @ProductId, @Reason, @PlanQuantity, @UomId, + ISNULL((SELECT TOP 1 ps.Price FROM Inv_T_ProductSupplier ps + WHERE ps.ProductId = @ProductId AND ps.ContactId = @PlanSupplierId AND ps.IsDeleted = 0 + ORDER BY ps.MinQuantity), 0), + ISNULL(p.PurchaseTaxRate, 0), 0, @DueDate, @Id, GETUTCDATE(), @LastModifierId, 0 + FROM Inv_T_Product p + WHERE p.Id = @ProductId; + + EXEC Prc_P_PurchaseRfqRecalc @Doc; + END + ELSE IF @PlanMethod = 'Transfer' + BEGIN + IF @PlanSourceLocationId IS NULL + THROW 50196, N'İç transfer kararında kaynak konum seçilmelidir.', 1; + -- Konum ve serbest stok kuralı diyaloğun İç Transfer ızgarasıyla aynıdır. + SELECT @SrcWarehouse = WarehouseId, @Free = FreeQuantity + FROM Prc_V_MaterialRequestPlanSource + WHERE BaseId = @Id AND LocationId = @PlanSourceLocationId; + IF @SrcWarehouse IS NULL OR @PlanSourceLocationId = @Location + THROW 50197, N'Kaynak konum, talebin teslim konumundan farklı ve ürünün stoğu olan bir iç konum olmalıdır.', 1; + IF @PlanQuantity > @Free + BEGIN + SET @Msg = CONCAT(N'Kaynak konumda yeterli serbest stok yok (serbest: ', FORMAT(CASE WHEN @Free > 0 THEN @Free ELSE 0 END, '0.####'), N' ', @UomId, N').'); + THROW 50198, @Msg, 1; + END + + SELECT TOP 1 @Doc = Id + FROM Inv_T_Transfer + WHERE IsDeleted = 0 AND OperationKind = 'InternalTransfer' AND Status = 'Draft' AND ReturnOfId IS NULL AND BackorderOfId IS NULL + AND SourceLocationId = @PlanSourceLocationId AND DestinationLocationId = @Location + AND ISNULL(ApprovalStatus, N'Onay Gerekmez') = N'Onay Gerekmez' + AND (TenantId = @TenantId OR (TenantId IS NULL AND @TenantId IS NULL)) + ORDER BY CreationTime DESC; + + IF @Doc IS NULL + BEGIN + SELECT TOP 1 @OpType = Id + FROM Inv_T_OperationType + WHERE IsDeleted = 0 AND IsActive = 1 AND OperationKind = 'InternalTransfer' AND WarehouseId = @SrcWarehouse + ORDER BY Name; + IF @OpType IS NULL + THROW 50199, N'Kaynak depo için aktif bir iç transfer operasyon türü tanımlı değil.', 1; + + SET @Doc = NEWID(); + INSERT INTO Inv_T_Transfer (Id, TenantId, BranchId, WarehouseId, OperationTypeId, OperationKind, SourceLocationId, DestinationLocationId, + SourceDocument, ResponsibleUserId, Status, CreationTime, CreatorId, IsDeleted) + SELECT @Doc, @TenantId, ot.BranchId, ot.WarehouseId, ot.Id, 'InternalTransfer', @PlanSourceLocationId, @Location, + @RequestNo, @LastModifierId, 'Draft', GETUTCDATE(), @LastModifierId, 0 + FROM Inv_T_OperationType ot + WHERE ot.Id = @OpType; + END + ELSE + UPDATE Inv_T_Transfer + SET SourceDocument = LEFT(CONCAT(SourceDocument, CASE WHEN ISNULL(SourceDocument, '') = '' THEN '' ELSE N', ' END, @RequestNo), 128) + WHERE Id = @Doc AND CHARINDEX(@RequestNo, ISNULL(SourceDocument, '')) = 0; + + SELECT @Line = Id FROM Inv_T_TransferLine WHERE TransferId = @Doc AND MaterialRequestItemId = @Id AND IsDeleted = 0; + IF @Line IS NOT NULL + UPDATE Inv_T_TransferLine + SET DemandQuantity = DemandQuantity + dbo.Inv_F_UomConvert(@PlanQuantity, @UomId, UomId), LastModificationTime = GETUTCDATE(), LastModifierId = @LastModifierId + WHERE Id = @Line; + ELSE + INSERT INTO Inv_T_TransferLine (Id, TenantId, TransferId, ProductId, Description, DemandQuantity, Quantity, UomId, MaterialRequestItemId, + CreationTime, CreatorId, IsDeleted) + VALUES (NEWID(), @TenantId, @Doc, @ProductId, @Reason, @PlanQuantity, 0, @UomId, @Id, GETUTCDATE(), @LastModifierId, 0); + + -- Numara, kaynak depo onaycısı ve yeniden hesap (kalemin kapanması dahil) belge kaydı sonrasıyla aynıdır. + EXEC Inv_P_TransferAfterSave @Doc, @LastModifierId; + END + ELSE IF @PlanMethod = 'Stock' + BEGIN + SELECT @Free = FreeQuantity FROM Prc_V_MaterialRequestPlanSource WHERE BaseId = @Id AND LocationId = @Location; + IF @PlanQuantity > ISNULL(@Free, 0) + BEGIN + SET @Msg = CONCAT(N'Teslim konumunda yeterli serbest stok yok (serbest: ', FORMAT(CASE WHEN @Free > 0 THEN @Free ELSE 0 END, '0.####'), N' ', @UomId, N').'); + THROW 50198, @Msg, 1; + END + + UPDATE Prc_T_MaterialRequestItem + SET FromStockQuantity = FromStockQuantity + @PlanQuantity, DeliveredQuantity = DeliveredQuantity + @PlanQuantity, + LastModificationTime = GETUTCDATE(), LastModifierId = @LastModifierId + WHERE Id = @Id; + UPDATE i SET LineStatus = 'Done' + FROM Prc_T_MaterialRequestItem i + INNER JOIN Prc_V_MaterialRequestItemPlan p ON p.Id = i.Id + WHERE i.Id = @Id AND p.PurchaseQuantity = 0 AND p.RemainingQuantity <= 0; + END + ELSE + THROW 50192, N'Karar Satınalma, İç Transfer ya da Stoktan olmalıdır.', 1; + + COMMIT TRANSACTION; +END diff --git a/configs/seeds/sql/object/Prc_P_MaterialRequestPlanConfirm.sql b/configs/seeds/sql/object/Prc_P_MaterialRequestPlanConfirm.sql new file mode 100644 index 00000000..2e7c65f4 --- /dev/null +++ b/configs/seeds/sql/object/Prc_P_MaterialRequestPlanConfirm.sql @@ -0,0 +1,39 @@ +-- Planla diyaloğunun Onayla'sı (App.Prc.MaterialRequestPlan › UpdateCommand): talep kaleminin taslak planındaki her satırı +-- Prc_P_MaterialRequestPlan ile belgeye çevirir (iç transferler, stoktan karşılama, sonra teklif talepleri — stok payı kalemi transferlerden +-- sonra kapatabilsin) ve taslağı siler. Tek transaction'dır: +-- bir satır reddedilirse (stok, kalan, operasyon türü) hiçbir belge açılmaz ve taslak yerinde kalır. +CREATE OR ALTER PROCEDURE [dbo].[Prc_P_MaterialRequestPlanConfirm] + @Id uniqueidentifier, + @TenantId uniqueidentifier, + @LastModifierId uniqueidentifier +AS +BEGIN + SET NOCOUNT ON; + SET XACT_ABORT ON; + DECLARE @Method nvarchar(16), @Quantity decimal(18, 4), @Supplier uniqueidentifier, @Location uniqueidentifier; + + BEGIN TRANSACTION; + + IF NOT EXISTS (SELECT 1 FROM Prc_T_MaterialRequestPlanLine WITH (UPDLOCK, HOLDLOCK) WHERE MaterialRequestItemId = @Id AND IsDeleted = 0) + THROW 50201, N'Onaylanacak taslak plan yok: önce Öner butonunu kullanın ya da İç Transfer veya Satınalma sekmesinde Plan Miktarı girin.', 1; + + DECLARE plan_lines CURSOR LOCAL FAST_FORWARD FOR + SELECT PlanMethod, Quantity, SupplierId, SourceLocationId + FROM Prc_T_MaterialRequestPlanLine + WHERE MaterialRequestItemId = @Id AND IsDeleted = 0 + ORDER BY CASE PlanMethod WHEN 'Transfer' THEN 0 WHEN 'Stock' THEN 1 ELSE 2 END, CreationTime; + OPEN plan_lines; + FETCH NEXT FROM plan_lines INTO @Method, @Quantity, @Supplier, @Location; + WHILE @@FETCH_STATUS = 0 + BEGIN + EXEC Prc_P_MaterialRequestPlan @Id, @Method, @Quantity, @Supplier, @Location, @TenantId, @LastModifierId; + FETCH NEXT FROM plan_lines INTO @Method, @Quantity, @Supplier, @Location; + END + CLOSE plan_lines; + DEALLOCATE plan_lines; + + DELETE FROM Prc_T_MaterialRequestPlanLine WHERE MaterialRequestItemId = @Id; + + COMMIT TRANSACTION; +END +GO diff --git a/configs/seeds/sql/object/Prc_P_MaterialRequestPlanLineSave.sql b/configs/seeds/sql/object/Prc_P_MaterialRequestPlanLineSave.sql new file mode 100644 index 00000000..4efb2c65 --- /dev/null +++ b/configs/seeds/sql/object/Prc_P_MaterialRequestPlanLineSave.sql @@ -0,0 +1,103 @@ +-- Planla diyaloğunun İç Transfer (App.Prc.MaterialRequestPlanSource) ve Satınalma (App.Prc.MaterialRequestPlanVendor) ızgaralarının satır kaydı: +-- girilen Plan Miktarı kalemin taslak planına (Prc_T_MaterialRequestPlanLine) yazılır, 0 ya da boş satırı plandan çıkarır. @Id ızgara +-- satırının anahtarıdır: kalem + ':' + hedef (Transfer'de kaynak konum, Purchase'da tedarikçi). Kaynak talebin teslim konumuysa karar +-- Stock'tur (transfer açılmaz, stoktan karşılanır). Belge açılmaz; onay +-- Prc_P_MaterialRequestPlanConfirm'dedir. Taslak toplamı planlanacak kalanı, konumun satırı serbest stoğu aşamaz. Batch kaydı satırları +-- eşzamanlı gönderdiği için kalem kilitlenir. Eksi miktar "alabileceği en fazla"dır (Seçilenleri Planla): kalanın diğer taslak satırlardan +-- arta kalanı, konumda serbest stokla sınırlı; alınacak bir şey yoksa satır değişmez. +CREATE OR ALTER PROCEDURE [dbo].[Prc_P_MaterialRequestPlanLineSave] + @Id nvarchar(80), + @PlanMethod nvarchar(16), + @PlanQuantity decimal(18, 4), + @TenantId uniqueidentifier, + @LastModifierId uniqueidentifier +AS +BEGIN + SET NOCOUNT ON; + SET XACT_ABORT ON; + DECLARE @ItemId uniqueidentifier = TRY_CAST(LEFT(@Id, 36) AS uniqueidentifier), + @Target uniqueidentifier = TRY_CAST(SUBSTRING(@Id, 38, 36) AS uniqueidentifier), + @UomId nvarchar(64), @Location uniqueidentifier, @Remaining decimal(18, 4), @Other decimal(18, 4), @Free decimal(18, 4), @Line uniqueidentifier, + @Qty decimal(18, 4) = ISNULL(@PlanQuantity, 0), @Msg nvarchar(400); + + BEGIN TRANSACTION; + + SELECT @UomId = i.UomId, @Location = r.LocationId + FROM Prc_T_MaterialRequestItem i WITH (UPDLOCK, HOLDLOCK) + INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId + WHERE i.Id = @ItemId AND i.IsDeleted = 0 AND i.LineStatus = 'Waiting' AND r.IsDeleted = 0 + AND (i.TenantId = @TenantId OR (i.TenantId IS NULL AND @TenantId IS NULL)) + AND r.ApprovalStatus IN (N'Onaylandı', N'Teklif Talebi', N'Teklif Talebi Gönderildi', N'Satınalma Siparişi'); + IF @UomId IS NULL + THROW 50191, N'Kalem planlanamaz: talep onaylı değil ya da kalem kapalı.', 1; + IF @PlanMethod = 'Transfer' AND @Target = @Location + SET @PlanMethod = 'Stock'; + + SELECT @Line = Id + FROM Prc_T_MaterialRequestPlanLine + WHERE MaterialRequestItemId = @ItemId AND PlanMethod = @PlanMethod AND IsDeleted = 0 + AND @Target = CASE WHEN @PlanMethod = 'Purchase' THEN SupplierId ELSE SourceLocationId END; + + IF @Qty = 0 + BEGIN + DELETE FROM Prc_T_MaterialRequestPlanLine WHERE Id = @Line; + COMMIT TRANSACTION; + RETURN; + END + + SELECT @Remaining = RemainingQuantity FROM Prc_V_MaterialRequestItemPlan WHERE Id = @ItemId; + SELECT @Other = ISNULL(SUM(Quantity), 0) + FROM Prc_T_MaterialRequestPlanLine + WHERE MaterialRequestItemId = @ItemId AND IsDeleted = 0 AND (@Line IS NULL OR Id <> @Line); + IF @Qty < 0 + BEGIN + SET @Qty = @Remaining - @Other; + IF @PlanMethod IN ('Transfer', 'Stock') + BEGIN + SELECT @Free = FreeQuantity FROM Prc_V_MaterialRequestPlanSource WHERE BaseId = @ItemId AND LocationId = @Target; + IF @Free < @Qty SET @Qty = @Free; + END + IF ISNULL(@Qty, 0) <= 0 + BEGIN + COMMIT TRANSACTION; + RETURN; + END + END + IF @Other + @Qty > @Remaining + BEGIN + SET @Msg = CONCAT(N'Taslak plan toplamı planlanacak kalanı aşamaz (kalan: ', FORMAT(@Remaining - @Other, '0.####'), N' ', @UomId, N').'); + THROW 50200, @Msg, 1; + END + + IF @PlanMethod IN ('Transfer', 'Stock') + BEGIN + SELECT @Free = FreeQuantity FROM Prc_V_MaterialRequestPlanSource WHERE BaseId = @ItemId AND LocationId = @Target; + IF @Free IS NULL + THROW 50197, N'Kaynak konum ürünün stoğu olan bir iç konum olmalıdır.', 1; + IF @Qty > @Free + BEGIN + SET @Msg = CONCAT(N'Kaynak konumda yeterli serbest stok yok (serbest: ', FORMAT(CASE WHEN @Free > 0 THEN @Free ELSE 0 END, '0.####'), N' ', @UomId, N').'); + THROW 50198, @Msg, 1; + END + END + ELSE IF @PlanMethod = 'Purchase' + BEGIN + IF NOT EXISTS (SELECT 1 FROM Prc_V_MaterialRequestPlanVendor WHERE BaseId = @ItemId AND ContactId = @Target) + THROW 50194, N'Satınalma kararında aktif bir tedarikçi seçilmelidir.', 1; + END + ELSE + THROW 50192, N'Karar Satınalma ya da İç Transfer olmalıdır.', 1; + + IF @Line IS NOT NULL + UPDATE Prc_T_MaterialRequestPlanLine + SET Quantity = @Qty, LastModificationTime = GETUTCDATE(), LastModifierId = @LastModifierId + WHERE Id = @Line; + ELSE + INSERT INTO Prc_T_MaterialRequestPlanLine (Id, TenantId, MaterialRequestItemId, PlanMethod, SupplierId, SourceLocationId, Quantity, + CreationTime, CreatorId, IsDeleted) + VALUES (NEWID(), @TenantId, @ItemId, @PlanMethod, CASE WHEN @PlanMethod = 'Purchase' THEN @Target END, + CASE WHEN @PlanMethod <> 'Purchase' THEN @Target END, @Qty, GETUTCDATE(), @LastModifierId, 0); + + COMMIT TRANSACTION; +END +GO diff --git a/configs/seeds/sql/object/Prc_P_MaterialRequestPlanSuggest.sql b/configs/seeds/sql/object/Prc_P_MaterialRequestPlanSuggest.sql new file mode 100644 index 00000000..b16e5e92 --- /dev/null +++ b/configs/seeds/sql/object/Prc_P_MaterialRequestPlanSuggest.sql @@ -0,0 +1,52 @@ +-- Planla diyaloğunun Öner'i (App.Prc.MaterialRequestPlanLine › InsertCommand): +-- kalemin taslak planını sıfırlayıp planlanacak kalanı dağıtır. Önce stok: teslim konumu (stoktan karşılama), sonra serbest stoğu en çok +-- olan konum (Prc_V_MaterialRequestPlanSource); kalan kısım satınalma: Prc_V_MaterialRequestPlanVendor'ın SuggestRank'ı ilk olan, +-- fiyat listesinde ya da alım geçmişinde bulunan tedarikçi (hiç bilinmeyen kontak seçilmez, kalan planlanmadan kalır). Satırlar +-- Prc_P_MaterialRequestPlanLineSave ile yazılır; kalem, stok ve kalan kuralları oradadır. +CREATE OR ALTER PROCEDURE [dbo].[Prc_P_MaterialRequestPlanSuggest] + @Id uniqueidentifier, + @TenantId uniqueidentifier, + @LastModifierId uniqueidentifier +AS +BEGIN + SET NOCOUNT ON; + SET XACT_ABORT ON; + DECLARE @Left decimal(18, 4), @Qty decimal(18, 4), @Free decimal(18, 4), @Key nvarchar(80); + + BEGIN TRANSACTION; + + DELETE FROM Prc_T_MaterialRequestPlanLine + WHERE MaterialRequestItemId = @Id AND (TenantId = @TenantId OR (TenantId IS NULL AND @TenantId IS NULL)); + SELECT @Left = ISNULL(RemainingQuantity, 0) FROM Prc_V_MaterialRequestItemPlan WHERE Id = @Id; + + DECLARE sources CURSOR LOCAL FAST_FORWARD FOR + SELECT Id, FreeQuantity + FROM Prc_V_MaterialRequestPlanSource + WHERE BaseId = @Id AND FreeQuantity > 0 + ORDER BY IsDestination DESC, FreeQuantity DESC; + OPEN sources; + FETCH NEXT FROM sources INTO @Key, @Free; + WHILE @@FETCH_STATUS = 0 AND @Left > 0 + BEGIN + SET @Qty = CASE WHEN @Free < @Left THEN @Free ELSE @Left END; + EXEC Prc_P_MaterialRequestPlanLineSave @Key, 'Transfer', @Qty, @TenantId, @LastModifierId; + SET @Left = @Left - @Qty; + FETCH NEXT FROM sources INTO @Key, @Free; + END + CLOSE sources; + DEALLOCATE sources; + + IF @Left > 0 + BEGIN + SET @Key = NULL; + SELECT TOP 1 @Key = Id + FROM Prc_V_MaterialRequestPlanVendor + WHERE BaseId = @Id AND (Price IS NOT NULL OR LastPurchaseDate IS NOT NULL) + ORDER BY SuggestRank; + IF @Key IS NOT NULL + EXEC Prc_P_MaterialRequestPlanLineSave @Key, 'Purchase', @Left, @TenantId, @LastModifierId; + END + + COMMIT TRANSACTION; +END +GO diff --git a/configs/seeds/sql/object/Prc_P_MaterialRequestStockUndo.sql b/configs/seeds/sql/object/Prc_P_MaterialRequestStockUndo.sql new file mode 100644 index 00000000..3d0962cd --- /dev/null +++ b/configs/seeds/sql/object/Prc_P_MaterialRequestStockUndo.sql @@ -0,0 +1,29 @@ +-- Plan Takibi'nin Geri Al'ı (App.Prc.MaterialRequestPlanTrack › UpdateCommand): stoktan karşılamayı geri alır. Stoktan karşılama belge +-- açmadığı için geri dönüşü kalemin kendisidir: stoktan karşılanan miktar teslim edilenden düşülür ve sıfırlanır, kalanı yeniden açılan +-- kapalı kalem Bekliyor'a döner ve Planlama'da yeniden planlanır (Prc_P_MaterialRequestItemSync ile aynı kural). +CREATE OR ALTER PROCEDURE [dbo].[Prc_P_MaterialRequestStockUndo] + @Id uniqueidentifier, + @TenantId uniqueidentifier, + @LastModifierId uniqueidentifier +AS +BEGIN + SET NOCOUNT ON; + SET XACT_ABORT ON; + + BEGIN TRANSACTION; + + UPDATE Prc_T_MaterialRequestItem + SET DeliveredQuantity = CASE WHEN DeliveredQuantity > FromStockQuantity THEN DeliveredQuantity - FromStockQuantity ELSE 0 END, + FromStockQuantity = 0, LastModificationTime = GETUTCDATE(), LastModifierId = @LastModifierId + WHERE Id = @Id AND IsDeleted = 0 AND FromStockQuantity > 0 AND LineStatus IN ('Waiting', 'Done') + AND (TenantId = @TenantId OR (TenantId IS NULL AND @TenantId IS NULL)); + IF @@ROWCOUNT = 0 + THROW 50202, N'Geri alınacak stoktan karşılama yok ya da kalem kapatılmış.', 1; + + UPDATE i SET LineStatus = 'Waiting' + FROM Prc_T_MaterialRequestItem i + INNER JOIN Prc_V_MaterialRequestItemPlan p ON p.Id = i.Id + WHERE i.Id = @Id AND i.LineStatus = 'Done' AND p.RemainingQuantity > 0 AND i.DeliveredQuantity < i.Quantity; + + COMMIT TRANSACTION; +END diff --git a/configs/seeds/sql/object/Prc_P_PurchaseImportItem.sql b/configs/seeds/sql/object/Prc_P_PurchaseImportItem.sql deleted file mode 100644 index 0bfe5ccd..00000000 --- a/configs/seeds/sql/object/Prc_P_PurchaseImportItem.sql +++ /dev/null @@ -1,50 +0,0 @@ --- Talep Kalemleri sekmesinde seçilen kalemi (@Key = belge|kalem) teklif talebine ya da taslak siparişe kopyalar. --- Kalem yalnız belgenin şubesindeki talepten gelir. Fiyat: sözleşme kalemi › tedarikçi fiyatı › 0; termin talebin istenen tarihidir. -CREATE OR ALTER PROCEDURE [dbo].[Prc_P_PurchaseImportItem] - @Key nvarchar(80) -AS -BEGIN - SET NOCOUNT ON; - - DECLARE @DocId uniqueidentifier = TRY_CAST(LEFT(@Key, 36) AS uniqueidentifier), - @ItemId uniqueidentifier = TRY_CAST(RIGHT(@Key, 36) AS uniqueidentifier), - @IsOrder bit = 0, @Tenant uniqueidentifier, @Branch uniqueidentifier, @Supplier uniqueidentifier, @Agr uniqueidentifier, @Status nvarchar(16), - @ProductId uniqueidentifier, @Description nvarchar(512), @Quantity decimal(18, 4), @UomId nvarchar(50), - @UnitPrice decimal(18, 4), @TaxRate decimal(18, 4), @DueDate datetime; - - SELECT @Tenant = TenantId, @Branch = BranchId, @Supplier = SupplierId, @Agr = AgreementId, @Status = Status - FROM Prc_T_PurchaseRfq WHERE Id = @DocId AND IsDeleted = 0 AND Status IN ('Draft', 'Sent'); - IF @Status IS NULL - SELECT @Tenant = TenantId, @Branch = BranchId, @Supplier = SupplierId, @Agr = AgreementId, @Status = Status, @IsOrder = 1 - FROM Prc_T_PurchaseOrder WHERE Id = @DocId AND IsDeleted = 0 AND Status = 'Draft'; - IF @Status IS NULL - THROW 50161, N'Talep kalemi yalnız teklif aşamasındaki teklif talebine ya da taslak siparişe aktarılabilir.', 1; - - SELECT @ProductId = a.ProductId, @Description = a.RequestReason, @Quantity = a.Quantity, @UomId = a.UomId, @DueDate = a.DueDate, - @TaxRate = ISNULL(p.PurchaseTaxRate, 0), - @UnitPrice = COALESCE((SELECT TOP 1 al.UnitPrice FROM Prc_T_PurchaseAgreementLine al - WHERE al.AgreementId = @Agr AND al.ProductId = a.ProductId AND al.IsDeleted = 0), - (SELECT TOP 1 ps.Price FROM Inv_T_ProductSupplier ps - WHERE ps.ProductId = a.ProductId AND ps.ContactId = @Supplier AND ps.IsDeleted = 0 - ORDER BY ps.MinQuantity), 0) - FROM Prc_V_MaterialRequestAvailableItem a - LEFT JOIN Inv_T_Product p ON p.Id = a.ProductId - WHERE a.Id = @ItemId AND a.BranchId = @Branch AND (a.TenantId = @Tenant OR (a.TenantId IS NULL AND @Tenant IS NULL)); - IF @ProductId IS NULL - THROW 50162, N'Talep kalemi artık aktarılamaz: başka bir teklife ya da siparişe aktarılmış veya talep değişmiş.', 1; - - IF @IsOrder = 1 - BEGIN - INSERT INTO Prc_T_PurchaseOrderLine (Id, TenantId, PurchaseOrderId, ProductId, Description, Quantity, UomId, - UnitPrice, TaxRate, Amount, DeliveryDate, MaterialRequestItemId, CreationTime, IsDeleted) - VALUES (NEWID(), @Tenant, @DocId, @ProductId, @Description, @Quantity, @UomId, @UnitPrice, @TaxRate, 0, @DueDate, @ItemId, GETUTCDATE(), 0); - EXEC Prc_P_PurchaseOrderRecalc @DocId; - END - ELSE - BEGIN - INSERT INTO Prc_T_PurchaseRfqLine (Id, TenantId, PurchaseRfqId, ProductId, Description, Quantity, UomId, - UnitPrice, TaxRate, Amount, DeliveryDate, MaterialRequestItemId, CreationTime, IsDeleted) - VALUES (NEWID(), @Tenant, @DocId, @ProductId, @Description, @Quantity, @UomId, @UnitPrice, @TaxRate, 0, @DueDate, @ItemId, GETUTCDATE(), 0); - EXEC Prc_P_PurchaseRfqRecalc @DocId; - END -END diff --git a/configs/seeds/sql/object/Prc_TR_MaterialRequestLock.sql b/configs/seeds/sql/object/Prc_TR_MaterialRequestLock.sql new file mode 100644 index 00000000..db18c96c --- /dev/null +++ b/configs/seeds/sql/object/Prc_TR_MaterialRequestLock.sql @@ -0,0 +1,19 @@ +-- Onaya gönderilmiş talebin başlığı değiştirilemez (Taleplerim ve talebi gösteren diğer ekranlar): değişiklik için talep Taslak adımına alınır, +-- düzenlenir ve yeniden onaya gönderilir. Kural ekranın UpdateBeforeCommand'ında değil burada, çünkü onay akışı da başlığı aynı güncelleme +-- yolundan yazar; yalnız iş alanları karşılaştırılır, onay alanları (durum, onaycı, tarih, açıklama, onaycı listeleri) ve silme serbesttir. +-- Satırların kuralı App.Prc.MaterialRequestLine'ın Insert/Update/DeleteBeforeCommand'ındadır. +CREATE OR ALTER TRIGGER [dbo].[Prc_TR_MaterialRequestLock] ON [dbo].[Prc_T_MaterialRequest] +AFTER UPDATE +AS +BEGIN + SET NOCOUNT ON; + IF EXISTS (SELECT 1 + FROM inserted i + INNER JOIN deleted d ON d.Id = i.Id + WHERE ISNULL(d.ApprovalStatus, N'') <> N'' AND i.IsDeleted = 0 + AND (i.Priority <> d.Priority OR i.RequesterUserId <> d.RequesterUserId OR i.BranchId <> d.BranchId + OR i.DepartmentId <> d.DepartmentId OR i.WarehouseId <> d.WarehouseId OR i.LocationId <> d.LocationId + OR i.RequestDate <> d.RequestDate OR ISNULL(i.Description, N'') <> ISNULL(d.Description, N''))) + THROW 50004, N'Onaya gönderilmiş talep değiştirilemez: önce talebi Taslak adımına alın, düzenleyip yeniden onaya gönderin.', 1; +END +GO diff --git a/configs/seeds/sql/object/Prc_T_MaterialRequestItem.sql b/configs/seeds/sql/object/Prc_T_MaterialRequestItem.sql index 6054381f..396c7b8e 100644 --- a/configs/seeds/sql/object/Prc_T_MaterialRequestItem.sql +++ b/configs/seeds/sql/object/Prc_T_MaterialRequestItem.sql @@ -8,11 +8,10 @@ BEGIN [ProductId] uniqueidentifier NOT NULL, [Quantity] decimal(18, 4) NOT NULL, [UomId] nvarchar(64) NOT NULL, - [FulfillmentMethod] nvarchar(16) NOT NULL DEFAULT 'Purchase', [DueDate] date NOT NULL, [RequestReason] nvarchar(256) NOT NULL, [DeliveredQuantity] decimal(18, 4) NOT NULL DEFAULT 0, - [PurchaseResponsibleUserId] uniqueidentifier NULL, + [FromStockQuantity] decimal(18, 4) NOT NULL DEFAULT 0, [LineStatus] nvarchar(16) NOT NULL DEFAULT 'Waiting', [CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(), [CreatorId] uniqueidentifier NULL, diff --git a/configs/seeds/sql/object/Prc_T_MaterialRequestLine.sql b/configs/seeds/sql/object/Prc_T_MaterialRequestLine.sql deleted file mode 100644 index bbd46772..00000000 --- a/configs/seeds/sql/object/Prc_T_MaterialRequestLine.sql +++ /dev/null @@ -1,42 +0,0 @@ -IF OBJECT_ID(N'[dbo].[Prc_T_MaterialRequestLine]', 'U') IS NULL -BEGIN - CREATE TABLE [dbo].[Prc_T_MaterialRequestLine] - ( - [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), - [TenantId] uniqueidentifier NULL, - [MaterialRequestId] uniqueidentifier NOT NULL, - [ProductId] uniqueidentifier NOT NULL, - [Quantity] decimal(18, 4) NOT NULL, - [UomId] uniqueidentifier NOT NULL, - [FulfillmentMethod] nvarchar(16) NOT NULL DEFAULT 'Purchase', - [DueDate] date NOT NULL, - [RequestReason] nvarchar(256) NOT NULL, - [DeliveredQuantity] decimal(18, 4) NOT NULL DEFAULT 0, - [PurchaseResponsibleUserId] uniqueidentifier NULL, - [LineStatus] nvarchar(16) NOT NULL DEFAULT 'Waiting', - [CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(), - [CreatorId] uniqueidentifier NULL, - [LastModificationTime] datetime2 NULL, - [LastModifierId] uniqueidentifier NULL, - [IsDeleted] bit NOT NULL DEFAULT 0, - [DeletionTime] datetime2 NULL, - [DeleterId] uniqueidentifier NULL, - CONSTRAINT [PK_Prc_T_MaterialRequestLine] PRIMARY KEY NONCLUSTERED - ( - [Id] ASC - )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] - ) ON [PRIMARY] -END -GO - -IF INDEXPROPERTY(OBJECT_ID(N'[dbo].[Prc_T_MaterialRequestLine]'), 'IX_Prc_T_MaterialRequestLine_MaterialRequestId', 'IndexID') IS NULL -BEGIN - CREATE INDEX [IX_Prc_T_MaterialRequestLine_MaterialRequestId] ON [dbo].[Prc_T_MaterialRequestLine] ([MaterialRequestId] ASC); -END -GO - -IF OBJECT_ID(N'[dbo].[FK_Prc_T_MaterialRequestLine_MaterialRequestId]', 'F') IS NULL -BEGIN - ALTER TABLE [dbo].[Prc_T_MaterialRequestLine] ADD CONSTRAINT [FK_Prc_T_MaterialRequestLine_MaterialRequestId] FOREIGN KEY ([MaterialRequestId]) REFERENCES [dbo].[Prc_T_MaterialRequest] ([Id]) ON DELETE CASCADE ON UPDATE NO ACTION; -END -GO \ No newline at end of file diff --git a/configs/seeds/sql/object/Prc_T_MaterialRequestPlanLine.sql b/configs/seeds/sql/object/Prc_T_MaterialRequestPlanLine.sql new file mode 100644 index 00000000..74e7fded --- /dev/null +++ b/configs/seeds/sql/object/Prc_T_MaterialRequestPlanLine.sql @@ -0,0 +1,39 @@ +-- Planla diyaloğunun taslak karşılama planı: talep kaleminin onaylanmamış dağıtımı (iç transfer: kaynak konum, satınalma: tedarikçi) ve +-- miktarı. Onay (Prc_P_MaterialRequestPlanConfirm) satırları teklif talebine ya da iç transfere çevirir ve siler. +IF OBJECT_ID(N'[dbo].[Prc_T_MaterialRequestPlanLine]', 'U') IS NULL +BEGIN + CREATE TABLE [dbo].[Prc_T_MaterialRequestPlanLine] + ( + [Id] uniqueidentifier NOT NULL DEFAULT NEWID(), + [TenantId] uniqueidentifier NULL, + [MaterialRequestItemId] uniqueidentifier NOT NULL, + [PlanMethod] nvarchar(16) NOT NULL, + [SupplierId] uniqueidentifier NULL, + [SourceLocationId] uniqueidentifier NULL, + [Quantity] decimal(18, 4) NOT NULL DEFAULT 0, + [CreationTime] datetime2 NOT NULL DEFAULT GETUTCDATE(), + [CreatorId] uniqueidentifier NULL, + [LastModificationTime] datetime2 NULL, + [LastModifierId] uniqueidentifier NULL, + [IsDeleted] bit NOT NULL DEFAULT 0, + [DeletionTime] datetime2 NULL, + [DeleterId] uniqueidentifier NULL, + CONSTRAINT [PK_Prc_T_MaterialRequestPlanLine] PRIMARY KEY NONCLUSTERED + ( + [Id] ASC + )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] + ) ON [PRIMARY] +END +GO + +IF INDEXPROPERTY(OBJECT_ID(N'[dbo].[Prc_T_MaterialRequestPlanLine]'), 'IX_Prc_T_MaterialRequestPlanLine_MaterialRequestItemId', 'IndexID') IS NULL +BEGIN + CREATE INDEX [IX_Prc_T_MaterialRequestPlanLine_MaterialRequestItemId] ON [dbo].[Prc_T_MaterialRequestPlanLine] ([MaterialRequestItemId] ASC); +END +GO + +IF OBJECT_ID(N'[dbo].[FK_Prc_T_MaterialRequestPlanLine_MaterialRequestItemId]', 'F') IS NULL +BEGIN + ALTER TABLE [dbo].[Prc_T_MaterialRequestPlanLine] ADD CONSTRAINT [FK_Prc_T_MaterialRequestPlanLine_MaterialRequestItemId] FOREIGN KEY ([MaterialRequestItemId]) REFERENCES [dbo].[Prc_T_MaterialRequestItem] ([Id]) ON DELETE CASCADE ON UPDATE NO ACTION; +END +GO diff --git a/configs/seeds/sql/object/Prc_V_MaterialRequestAvailableItem.sql b/configs/seeds/sql/object/Prc_V_MaterialRequestAvailableItem.sql deleted file mode 100644 index e70d065f..00000000 --- a/configs/seeds/sql/object/Prc_V_MaterialRequestAvailableItem.sql +++ /dev/null @@ -1,18 +0,0 @@ --- Teklife ya da siparişe aktarılabilecek talep kalemleri: onaylı talebin satınalma ile karşılanacak, --- bekleyen ve iptal olmayan bir teklif/siparişte yer almayan kalemi. Aktarım ve talep seçimi buradan okur. -CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestAvailableItem] AS -SELECT i.Id, i.TenantId, i.MaterialRequestId, r.RequestNo, r.RequesterUserId, i.ProductId, i.Quantity, i.UomId, - i.RequestReason, i.DueDate, r.BranchId - FROM Prc_T_MaterialRequestItem i - INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId - WHERE i.IsDeleted = 0 AND r.IsDeleted = 0 - AND r.ApprovalStatus IN (N'Onaylandı', N'Teklif Talebi', N'Teklif Talebi Gönderildi', N'Satınalma Siparişi') - AND i.FulfillmentMethod = 'Purchase' AND i.LineStatus = 'Waiting' - AND NOT EXISTS (SELECT 1 FROM Prc_T_PurchaseRfqLine rl - INNER JOIN Prc_T_PurchaseRfq q ON q.Id = rl.PurchaseRfqId - WHERE rl.MaterialRequestItemId = i.Id AND rl.IsDeleted = 0 - AND q.IsDeleted = 0 AND q.Status <> 'Cancelled') - AND NOT EXISTS (SELECT 1 FROM Prc_T_PurchaseOrderLine ol - INNER JOIN Prc_T_PurchaseOrder o ON o.Id = ol.PurchaseOrderId - WHERE ol.MaterialRequestItemId = i.Id AND ol.IsDeleted = 0 - AND o.IsDeleted = 0 AND o.Status <> 'Cancelled') diff --git a/configs/seeds/sql/object/Prc_V_MaterialRequestItemPlan.sql b/configs/seeds/sql/object/Prc_V_MaterialRequestItemPlan.sql new file mode 100644 index 00000000..cc1f2a1d --- /dev/null +++ b/configs/seeds/sql/object/Prc_V_MaterialRequestItemPlan.sql @@ -0,0 +1,32 @@ +-- Talep kaleminin planlanmış payları ve planlanacak kalanı (Planlama, Plan Takibi, kalem durumu). Miktarlar kalemin birimine çevrilir. +-- Satınalma payı: teklif aşamasındaki teklif talebinde ya da iptal olmayan siparişe geçmiş teklif kaleminde duran miktar; ihale aynı kalemi +-- bütün tedarikçilere kopyaladığı için ihale × ihale kalemi başına bir kez (en büyüğü) sayılır. +-- Transfer payı: iptal olmayan iç transfer satırı — tamamlanmış belgede yapılan, açık belgede istenen miktar (eksik tamamlanan belgenin kalanı +-- backorder belgesinde istenir); iade belgesi sayılmaz. +-- Stok payı: stok talebin teslim konumundayken onaylanan, belgesiz karşılanan miktar (FromStockQuantity). +CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestItemPlan] AS +SELECT i.Id, i.TenantId, ISNULL(pq.Quantity, 0) AS PurchaseQuantity, ISNULL(tq.Quantity, 0) AS TransferQuantity, + i.Quantity - ISNULL(pq.Quantity, 0) - ISNULL(tq.Quantity, 0) - i.FromStockQuantity AS RemainingQuantity, + i.FromStockQuantity + FROM Prc_T_MaterialRequestItem i + OUTER APPLY (SELECT SUM(g.Quantity) AS Quantity + FROM (SELECT MAX(c.Quantity) AS Quantity + FROM (SELECT ISNULL(q.TenderGroupId, q.Id) AS TenderGroupId, ISNULL(rl.TenderLineId, rl.Id) AS TenderLineId, + dbo.Inv_F_UomConvert(rl.Quantity, rl.UomId, i.UomId) AS Quantity + FROM Prc_T_PurchaseRfqLine rl + INNER JOIN Prc_T_PurchaseRfq q ON q.Id = rl.PurchaseRfqId + WHERE rl.MaterialRequestItemId = i.Id AND rl.IsDeleted = 0 AND q.IsDeleted = 0 + AND (q.Status IN ('Draft', 'Sent') + OR (q.Status = 'Purchase' + AND EXISTS (SELECT 1 FROM Prc_T_PurchaseOrderLine ol + INNER JOIN Prc_T_PurchaseOrder o ON o.Id = ol.PurchaseOrderId + WHERE ol.PurchaseRfqLineId = rl.Id AND ol.IsDeleted = 0 + AND o.IsDeleted = 0 AND o.Status <> 'Cancelled')))) c + GROUP BY c.TenderGroupId, c.TenderLineId) g) pq + OUTER APPLY (SELECT SUM(c.Quantity) AS Quantity + FROM (SELECT dbo.Inv_F_UomConvert(CASE WHEN t.Status = 'Done' THEN tl.Quantity ELSE tl.DemandQuantity END, tl.UomId, i.UomId) AS Quantity + FROM Inv_T_TransferLine tl + INNER JOIN Inv_T_Transfer t ON t.Id = tl.TransferId + WHERE tl.MaterialRequestItemId = i.Id AND tl.IsDeleted = 0 AND t.IsDeleted = 0 + AND t.OperationKind = 'InternalTransfer' AND t.Status <> 'Cancelled' AND t.ReturnOfId IS NULL) c) tq + WHERE i.IsDeleted = 0 diff --git a/configs/seeds/sql/object/Prc_V_MaterialRequestLine.sql b/configs/seeds/sql/object/Prc_V_MaterialRequestLine.sql index af43ea55..bdc58045 100644 --- a/configs/seeds/sql/object/Prc_V_MaterialRequestLine.sql +++ b/configs/seeds/sql/object/Prc_V_MaterialRequestLine.sql @@ -5,8 +5,8 @@ AS 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, r.BranchId + i.ProductId, i.Quantity, i.UomId, i.DueDate, i.RequestReason, i.DeliveredQuantity, + i.LineStatus, r.BranchId 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/sql/object/Prc_V_MaterialRequestPlan.sql b/configs/seeds/sql/object/Prc_V_MaterialRequestPlan.sql new file mode 100644 index 00000000..e8730bfd --- /dev/null +++ b/configs/seeds/sql/object/Prc_V_MaterialRequestPlan.sql @@ -0,0 +1,23 @@ +-- Planlama (App.Prc.MaterialRequestPlan): onaylanmış (satınalmada ilerleyen dahil) talebin bekleyen ve planlanacak miktarı kalan kalemleri. +-- Stok bütün iç konumların toplamıdır (kalemin biriminde); DueState termin süzgecidir (Late / Week = 7 gün içinde / Later). Taslak Plan, +-- Planla diyaloğunda girilip henüz onaylanmamış dağıtımın toplamıdır (Prc_T_MaterialRequestPlanLine). +CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestPlan] AS +SELECT i.Id, i.TenantId, i.MaterialRequestId, r.RequestNo, r.Priority, r.RequesterUserId, r.BranchId, r.DepartmentId, r.WarehouseId, r.LocationId, + r.RequestDate, i.ProductId, p.CategoryId, i.Quantity, i.UomId, i.DueDate, + CASE WHEN i.DueDate < CAST(GETDATE() AS date) THEN 'Late' + WHEN i.DueDate <= DATEADD(day, 7, CAST(GETDATE() AS date)) THEN 'Week' ELSE 'Later' END AS DueState, + i.RequestReason, + pl.PurchaseQuantity, pl.TransferQuantity, pl.RemainingQuantity, ISNULL(st.Quantity, 0) AS StockQuantity, + (SELECT SUM(x.Quantity) FROM Prc_T_MaterialRequestPlanLine x WHERE x.MaterialRequestItemId = i.Id AND x.IsDeleted = 0) AS DraftQuantity, + i.IsDeleted + FROM Prc_T_MaterialRequestItem i + INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId + INNER JOIN Prc_V_MaterialRequestItemPlan pl ON pl.Id = i.Id + LEFT JOIN Inv_T_Product p ON p.Id = i.ProductId + OUTER APPLY (SELECT SUM(c.Quantity) AS Quantity + FROM (SELECT dbo.Inv_F_UomConvert(s.Quantity, s.UomId, i.UomId) AS Quantity + FROM Inv_T_Stock s + INNER JOIN Inv_T_Location l ON l.Id = s.LocationId AND l.LocationType = 'Internal' + WHERE s.ProductId = i.ProductId AND s.IsDeleted = 0) c) st + WHERE i.IsDeleted = 0 AND r.IsDeleted = 0 AND i.LineStatus = 'Waiting' AND pl.RemainingQuantity > 0 + AND r.ApprovalStatus IN (N'Onaylandı', N'Teklif Talebi', N'Teklif Talebi Gönderildi', N'Satınalma Siparişi') diff --git a/configs/seeds/sql/object/Prc_V_MaterialRequestPlanLine.sql b/configs/seeds/sql/object/Prc_V_MaterialRequestPlanLine.sql new file mode 100644 index 00000000..f3a575a1 --- /dev/null +++ b/configs/seeds/sql/object/Prc_V_MaterialRequestPlanLine.sql @@ -0,0 +1,12 @@ +-- Planla diyaloğunun Karşılama Planı ızgarası (App.Prc.MaterialRequestPlanLine): talep kaleminin onay bekleyen taslak planı. Miktar kalemin +-- biriminde; satınalmada birim fiyat teklif kalemine yazılacak fiyattır (tedarikçinin en düşük minimum miktarlı satırı). BaseId kalemdir. +CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestPlanLine] AS +SELECT pl.Id, pl.TenantId, pl.MaterialRequestItemId AS BaseId, pl.PlanMethod, pl.SupplierId, pl.SourceLocationId, pl.Quantity, i.UomId, + ps.Price, ps.CurrencyId, pl.CreationTime, pl.CreatorId, pl.IsDeleted + FROM Prc_T_MaterialRequestPlanLine pl + INNER JOIN Prc_T_MaterialRequestItem i ON i.Id = pl.MaterialRequestItemId + OUTER APPLY (SELECT TOP 1 x.Price, x.CurrencyId + FROM Inv_T_ProductSupplier x + WHERE pl.PlanMethod = 'Purchase' AND x.ProductId = i.ProductId AND x.ContactId = pl.SupplierId AND x.IsDeleted = 0 + ORDER BY x.MinQuantity) ps; +GO diff --git a/configs/seeds/sql/object/Prc_V_MaterialRequestPlanSource.sql b/configs/seeds/sql/object/Prc_V_MaterialRequestPlanSource.sql new file mode 100644 index 00000000..85552bc9 --- /dev/null +++ b/configs/seeds/sql/object/Prc_V_MaterialRequestPlanSource.sql @@ -0,0 +1,38 @@ +-- Planla diyaloğunun İç Transfer ızgarası (App.Prc.MaterialRequestPlanSource) ve iç transfer / stoktan karşılama kararlarının stok kuralı: +-- talep kaleminin ürününün stoğu olan iç konumlar. Talebin teslim konumu da listelenir (IsDestination): oraya yazılan plan transfer açmaz, +-- stoktan karşılanır (PlanMethod = Stock). Miktarlar kalemin biriminde; ayrılan = açık (Taslak/Bekleyen/Hazır) transferlerde o +-- konumdan istenen, serbest = eldeki − ayrılan. Plan Miktarı kalemin bu konum için taslak planıdır. BaseId diyaloğun süzdüğü kalem, Id +-- kalem + ':' + konumdur (Prc_P_MaterialRequestPlanLineSave ayırır); taslak kaydı ve onay serbest stoğu buradan okur. +-- MaxQuantity satıra yazılabilecek en fazla plan miktarıdır: serbest stok ile planlanacak kalandan kalemin diğer taslak satırları +-- düşüldükten sonra kalanın küçüğü (ızgaranın doğrulaması; kayıt yordamı aynı kuralı yeniden denetler). +CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestPlanSource] AS +SELECT CONCAT(CAST(i.Id AS nvarchar(36)), ':', CAST(st.LocationId AS nvarchar(36))) AS Id, i.TenantId, i.Id AS BaseId, + l.BranchId, l.WarehouseId, st.LocationId, st.OnHand, ISNULL(rs.Quantity, 0) AS ReservedQuantity, + st.OnHand - ISNULL(rs.Quantity, 0) AS FreeQuantity, i.UomId, pl.Quantity AS PlanQuantity, i.IsDeleted, + CAST(CASE WHEN st.LocationId = r.LocationId THEN 1 ELSE 0 END AS bit) AS IsDestination, mx.Quantity AS MaxQuantity + FROM Prc_T_MaterialRequestItem i + INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId + CROSS APPLY (SELECT c.LocationId, SUM(c.Quantity) AS OnHand + FROM (SELECT s.LocationId, s.Quantity AS Raw, dbo.Inv_F_UomConvert(s.Quantity, s.UomId, i.UomId) AS Quantity + FROM Inv_T_Stock s + WHERE s.ProductId = i.ProductId AND s.IsDeleted = 0) c + GROUP BY c.LocationId + HAVING SUM(c.Raw) > 0) st + INNER JOIN Inv_T_Location l ON l.Id = st.LocationId AND l.LocationType = 'Internal' AND l.IsDeleted = 0 + OUTER APPLY (SELECT SUM(c.Quantity) AS Quantity + FROM (SELECT dbo.Inv_F_UomConvert(tl.DemandQuantity, tl.UomId, i.UomId) AS Quantity + FROM Inv_T_TransferLine tl + INNER JOIN Inv_T_Transfer t ON t.Id = tl.TransferId + WHERE t.SourceLocationId = st.LocationId AND tl.ProductId = i.ProductId AND tl.IsDeleted = 0 AND t.IsDeleted = 0 + AND t.Status IN ('Draft', 'Waiting', 'Ready')) c) rs + LEFT JOIN Prc_T_MaterialRequestPlanLine pl + ON pl.MaterialRequestItemId = i.Id AND pl.PlanMethod IN ('Transfer', 'Stock') AND pl.SourceLocationId = st.LocationId AND pl.IsDeleted = 0 + INNER JOIN Prc_V_MaterialRequestItemPlan ip ON ip.Id = i.Id + OUTER APPLY (SELECT SUM(x.Quantity) AS Quantity + FROM Prc_T_MaterialRequestPlanLine x + WHERE x.MaterialRequestItemId = i.Id AND x.IsDeleted = 0 AND (x.SourceLocationId IS NULL OR x.SourceLocationId <> st.LocationId)) od + CROSS APPLY (SELECT CASE WHEN v.Quantity < 0 THEN 0 ELSE v.Quantity END AS Quantity + FROM (SELECT CASE WHEN st.OnHand - ISNULL(rs.Quantity, 0) < ip.RemainingQuantity - ISNULL(od.Quantity, 0) + THEN st.OnHand - ISNULL(rs.Quantity, 0) ELSE ip.RemainingQuantity - ISNULL(od.Quantity, 0) END AS Quantity) v) mx + WHERE i.IsDeleted = 0; +GO diff --git a/configs/seeds/sql/object/Prc_V_MaterialRequestPlanTrack.sql b/configs/seeds/sql/object/Prc_V_MaterialRequestPlanTrack.sql new file mode 100644 index 00000000..99ac339e --- /dev/null +++ b/configs/seeds/sql/object/Prc_V_MaterialRequestPlanTrack.sql @@ -0,0 +1,41 @@ +-- Plan Takibi (App.Prc.MaterialRequestPlanTrack): talep kalemleri için verilen her karar — satınalmada ihalenin kök teklif talebindeki kalem +-- (alternatif tedarikçilere kopyalanan satırlar tekrar listelenmez; siparişe dönüştüyse ihale kaleminin siparişi ve tedarikçisi), iç +-- transferde transfer satırı, stoktan karşılamada kalemin kendisi (belgesiz; konum talebin teslim konumu). Gerçekleşen: siparişte alınan, +-- transferde tamamlanmış belgede yapılan, stokta karşılanan miktar. +CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestPlanTrack] AS +SELECT rl.Id, rl.TenantId, i.Id AS MaterialRequestItemId, i.MaterialRequestId, r.RequestNo, r.BranchId, r.DepartmentId, r.WarehouseId, + r.LocationId, i.ProductId, i.DueDate, CAST('Purchase' AS nvarchar(16)) AS PlanMethod, q.Id AS DocumentId, q.RfqNo AS DocumentNo, + q.Status AS DocumentStatus, COALESCE(o.SupplierId, q.SupplierId) AS SupplierId, CAST(NULL AS uniqueidentifier) AS SourceLocationId, + o.Id AS PurchaseOrderId, o.OrderNo AS PurchaseOrderNo, o.Status AS OrderStatus, rl.Quantity, rl.UomId, + ISNULL(o.ReceivedQuantity, 0) AS DoneQuantity, rl.CreationTime AS PlanDate, rl.CreatorId AS PlannerUserId, rl.IsDeleted + FROM Prc_T_PurchaseRfqLine rl + INNER JOIN Prc_T_PurchaseRfq q ON q.Id = rl.PurchaseRfqId AND q.IsDeleted = 0 AND q.Id = ISNULL(q.TenderGroupId, q.Id) + INNER JOIN Prc_T_MaterialRequestItem i ON i.Id = rl.MaterialRequestItemId + INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId + OUTER APPLY (SELECT TOP 1 po.Id, po.OrderNo, po.Status, po.SupplierId, ol.ReceivedQuantity + FROM Prc_T_PurchaseRfqLine al + INNER JOIN Prc_T_PurchaseOrderLine ol ON ol.PurchaseRfqLineId = al.Id AND ol.IsDeleted = 0 + INNER JOIN Prc_T_PurchaseOrder po ON po.Id = ol.PurchaseOrderId AND po.IsDeleted = 0 + WHERE al.TenderLineId = ISNULL(rl.TenderLineId, rl.Id) AND al.IsDeleted = 0 + ORDER BY CASE WHEN po.Status = 'Cancelled' THEN 1 ELSE 0 END, po.CreationTime DESC) o + WHERE rl.IsDeleted = 0 +UNION ALL +SELECT tl.Id, tl.TenantId, i.Id, i.MaterialRequestId, r.RequestNo, r.BranchId, r.DepartmentId, r.WarehouseId, + r.LocationId, i.ProductId, i.DueDate, CAST('Transfer' AS nvarchar(16)), t.Id, t.TransferNo, + t.Status, NULL, t.SourceLocationId, + NULL, NULL, NULL, tl.DemandQuantity, tl.UomId, + CASE WHEN t.Status = 'Done' THEN tl.Quantity ELSE 0 END, tl.CreationTime, tl.CreatorId, tl.IsDeleted + FROM Inv_T_TransferLine tl + INNER JOIN Inv_T_Transfer t ON t.Id = tl.TransferId AND t.IsDeleted = 0 AND t.OperationKind = 'InternalTransfer' AND t.ReturnOfId IS NULL + INNER JOIN Prc_T_MaterialRequestItem i ON i.Id = tl.MaterialRequestItemId + INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId + WHERE tl.IsDeleted = 0 +UNION ALL +SELECT i.Id, i.TenantId, i.Id, i.MaterialRequestId, r.RequestNo, r.BranchId, r.DepartmentId, r.WarehouseId, + r.LocationId, i.ProductId, i.DueDate, CAST('Stock' AS nvarchar(16)), NULL, NULL, + NULL, NULL, r.LocationId, + NULL, NULL, NULL, i.FromStockQuantity, i.UomId, + i.FromStockQuantity, i.LastModificationTime, i.LastModifierId, i.IsDeleted + FROM Prc_T_MaterialRequestItem i + INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId + WHERE i.FromStockQuantity > 0 diff --git a/configs/seeds/sql/object/Prc_V_MaterialRequestPlanVendor.sql b/configs/seeds/sql/object/Prc_V_MaterialRequestPlanVendor.sql new file mode 100644 index 00000000..d2fef4e4 --- /dev/null +++ b/configs/seeds/sql/object/Prc_V_MaterialRequestPlanVendor.sql @@ -0,0 +1,34 @@ +-- Planla diyaloğunun Satınalma ızgarası (App.Prc.MaterialRequestPlanVendor): kiracının bütün aktif kontakları; ürünün fiyat listesindekiler +-- fiyatıyla, diğerleri fiyatsız gelir. SuggestRank ızgaranın sırası ve Öner'in seçtiği tedarikçidir: fiyatlılar ucuzdan pahalıya, sonra son alım +-- tarihi yeniden eskiye, sonra ad (para birimi farkı gözetilmez). Fiyat satırı teklif kalemine yazılanla aynıdır (en düşük minimum +-- miktarlı satır, Prc_P_MaterialRequestPlan); son alım tarihini siparişli alım yazar. +-- Plan Miktarı kalemin bu tedarikçi için taslak planıdır; Rfq* tedarikçinin talebin şubesi ve deposu için bu kalemi taşıyan taslak teklif +-- talebidir (satırdaki Teklifi Aç). BaseId diyaloğun süzdüğü kalem, Id kalem + ':' + tedarikçidir (Prc_P_MaterialRequestPlanLineSave ayırır). +-- MaxQuantity satıra yazılabilecek en fazla plan miktarıdır: planlanacak kalandan kalemin diğer taslak satırları düşülür. +CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestPlanVendor] AS +SELECT CONCAT(CAST(i.Id AS nvarchar(36)), ':', CAST(c.Id AS nvarchar(36))) AS Id, i.TenantId, i.Id AS BaseId, c.Id AS ContactId, + ps.MinQuantity, ps.UomId, ps.Price, ps.CurrencyId, ps.LeadTimeDays, ps.LastPurchaseDate, pl.Quantity AS PlanQuantity, + d.Id AS RfqId, d.RfqNo, d.Quantity AS RfqQuantity, i.IsDeleted, + ROW_NUMBER() OVER (PARTITION BY i.Id ORDER BY CASE WHEN ps.Price IS NULL THEN 1 ELSE 0 END, ps.Price, ps.LastPurchaseDate DESC, c.Name) AS SuggestRank, + CASE WHEN ip.RemainingQuantity - ISNULL(od.Quantity, 0) < 0 THEN 0 ELSE ip.RemainingQuantity - ISNULL(od.Quantity, 0) END AS MaxQuantity + FROM Prc_T_MaterialRequestItem i + INNER JOIN Prc_T_MaterialRequest r ON r.Id = i.MaterialRequestId + INNER JOIN Adm_T_Contact c ON c.IsDeleted = 0 AND c.IsActive = 1 + AND (c.TenantId = i.TenantId OR (c.TenantId IS NULL AND i.TenantId IS NULL)) + OUTER APPLY (SELECT TOP 1 x.MinQuantity, x.UomId, x.Price, x.CurrencyId, x.LeadTimeDays, x.LastPurchaseDate + FROM Inv_T_ProductSupplier x + WHERE x.ProductId = i.ProductId AND x.ContactId = c.Id AND x.IsDeleted = 0 + ORDER BY x.MinQuantity) ps + LEFT JOIN Prc_T_MaterialRequestPlanLine pl + ON pl.MaterialRequestItemId = i.Id AND pl.PlanMethod = 'Purchase' AND pl.SupplierId = c.Id AND pl.IsDeleted = 0 + OUTER APPLY (SELECT TOP 1 q.Id, q.RfqNo, ql.Quantity + FROM Prc_T_PurchaseRfq q + INNER JOIN Prc_T_PurchaseRfqLine ql ON ql.PurchaseRfqId = q.Id AND ql.MaterialRequestItemId = i.Id AND ql.IsDeleted = 0 + WHERE q.IsDeleted = 0 AND q.Status = 'Draft' AND q.SupplierId = c.Id AND q.BranchId = r.BranchId AND q.WarehouseId = r.WarehouseId + ORDER BY q.CreationTime DESC) d + INNER JOIN Prc_V_MaterialRequestItemPlan ip ON ip.Id = i.Id + OUTER APPLY (SELECT SUM(x.Quantity) AS Quantity + FROM Prc_T_MaterialRequestPlanLine x + WHERE x.MaterialRequestItemId = i.Id AND x.IsDeleted = 0 AND (x.SupplierId IS NULL OR x.SupplierId <> c.Id)) od + WHERE i.IsDeleted = 0; +GO diff --git a/configs/seeds/sql/object/Prc_V_MaterialRequestTransferItem.sql b/configs/seeds/sql/object/Prc_V_MaterialRequestTransferItem.sql deleted file mode 100644 index 30dfd4c6..00000000 --- a/configs/seeds/sql/object/Prc_V_MaterialRequestTransferItem.sql +++ /dev/null @@ -1,17 +0,0 @@ --- İç transfere aktarılabilecek talep kalemleri: onaylı talebin transferle karşılanacak, bekleyen ve açık bir transferde yer almayan --- kalemi, aynı şubedeki taslak iç transfer belgesiyle eşlenir. Id = belge|kalem; Talepten Aktar seçilen satırları Inv_P_TransferImportItem ile ekler. -CREATE OR ALTER VIEW [dbo].[Prc_V_MaterialRequestTransferItem] AS -SELECT CONCAT(CAST(d.Id AS nvarchar(36)), '|', CAST(i.Id AS nvarchar(36))) AS Id, d.Id AS BaseId, i.TenantId, i.Id AS MaterialRequestItemId, - i.MaterialRequestId, r.RequestNo, r.RequesterUserId, i.ProductId, i.Quantity - i.DeliveredQuantity AS Quantity, i.UomId, - i.RequestReason, i.DueDate, r.WarehouseId, r.LocationId - FROM Inv_T_Transfer d - INNER JOIN Prc_T_MaterialRequest r ON r.BranchId = d.BranchId AND (r.TenantId = d.TenantId OR (r.TenantId IS NULL AND d.TenantId IS NULL)) - INNER JOIN Prc_T_MaterialRequestItem i ON i.MaterialRequestId = r.Id - WHERE d.IsDeleted = 0 AND d.OperationKind = 'InternalTransfer' AND d.Status = 'Draft' - AND r.IsDeleted = 0 AND i.IsDeleted = 0 - AND r.ApprovalStatus IN (N'Onaylandı', N'Teklif Talebi', N'Teklif Talebi Gönderildi', N'Satınalma Siparişi') - AND i.FulfillmentMethod = 'Transfer' AND i.LineStatus = 'Waiting' AND i.Quantity > i.DeliveredQuantity - AND NOT EXISTS (SELECT 1 FROM Inv_T_TransferLine tl - INNER JOIN Inv_T_Transfer t ON t.Id = tl.TransferId - WHERE tl.MaterialRequestItemId = i.Id AND tl.IsDeleted = 0 - AND t.IsDeleted = 0 AND t.Status NOT IN ('Done', 'Cancelled')) diff --git a/configs/seeds/sql/object/Prc_V_PurchaseImportItem.sql b/configs/seeds/sql/object/Prc_V_PurchaseImportItem.sql deleted file mode 100644 index cba94c05..00000000 --- a/configs/seeds/sql/object/Prc_V_PurchaseImportItem.sql +++ /dev/null @@ -1,10 +0,0 @@ --- Talep Kalemleri sekmesi: aktarılabilir her talep kalemi, kalem alabilecek açık belgeyle (teklif aşamasındaki --- teklif talebi ya da taslak sipariş) eşlenir; belge yalnız kendi şubesinin talebini alır. Id = belge|kalem; seçilen satırları Seçilenleri Aktar ile Prc_P_PurchaseImportItem kopyalar. -CREATE OR ALTER VIEW [dbo].[Prc_V_PurchaseImportItem] AS -SELECT CONCAT(CAST(d.Id AS nvarchar(36)), '|', CAST(a.Id AS nvarchar(36))) AS Id, d.Id AS BaseId, a.TenantId, a.MaterialRequestId, - a.RequestNo, a.RequesterUserId, a.ProductId, a.Quantity, a.UomId, a.RequestReason, a.DueDate - FROM (SELECT Id, TenantId, BranchId FROM Prc_T_PurchaseRfq WHERE IsDeleted = 0 AND Status IN ('Draft', 'Sent') - UNION ALL - SELECT Id, TenantId, BranchId FROM Prc_T_PurchaseOrder WHERE IsDeleted = 0 AND Status = 'Draft') d - INNER JOIN Prc_V_MaterialRequestAvailableItem a ON a.BranchId = d.BranchId - AND (a.TenantId = d.TenantId OR (a.TenantId IS NULL AND d.TenantId IS NULL)) diff --git a/configs/seeds/sql/object/Prc_V_PurchaseReceiptLine.sql b/configs/seeds/sql/object/Prc_V_PurchaseReceiptLine.sql new file mode 100644 index 00000000..251e5f2a --- /dev/null +++ b/configs/seeds/sql/object/Prc_V_PurchaseReceiptLine.sql @@ -0,0 +1,19 @@ +CREATE OR ALTER VIEW [dbo].[Prc_V_PurchaseReceiptLine] +AS +-- Planlama › Son Alımlar'ın kaynağı: tamamlanan alımların (iade hariç) yapılan satırları; siparişsiz alım da gelir. +-- Fiyat ve para birimi yalnız siparişli satırda dolar: sipariş birim fiyatı alım satırının birimine çevrilir. +-- Prc öneki migrate sırası içindir (Prc_T_* tablolarından sonra kurulur). +SELECT l.Id, t.TenantId, t.IsDeleted, l.ProductId, t.Id AS TransferId, t.TransferNo, t.EffectiveDate, t.PartnerId, + t.BranchId, t.WarehouseId, t.DestinationLocationId, l.Quantity, l.UomId, + CAST(ROUND(ol.UnitPrice * f.Factor, 4) AS decimal(18, 4)) AS UnitPrice, o.CurrencyId, + CAST(ROUND(l.Quantity * ol.UnitPrice * f.Factor, 2) AS decimal(18, 2)) AS UntaxedAmount, + o.Id AS PurchaseOrderId, o.OrderNo, m.RequestNo +FROM Inv_T_TransferLine l +INNER JOIN Inv_T_Transfer t ON t.Id = l.TransferId +LEFT JOIN Prc_T_PurchaseOrderLine ol ON ol.Id = l.PurchaseOrderLineId +LEFT JOIN Prc_T_PurchaseOrder o ON o.Id = ol.PurchaseOrderId +OUTER APPLY (SELECT dbo.Inv_F_UomConvert(1, l.UomId, ol.UomId) AS Factor WHERE ol.Id IS NOT NULL) f +LEFT JOIN Prc_T_MaterialRequestItem i ON i.Id = COALESCE(l.MaterialRequestItemId, ol.MaterialRequestItemId) +LEFT JOIN Prc_T_MaterialRequest m ON m.Id = i.MaterialRequestId +WHERE l.IsDeleted = 0 AND l.Quantity > 0 AND t.OperationKind = 'Receipt' AND t.Status = 'Done' AND t.ReturnOfId IS NULL; +GO diff --git a/configs/seeds/wizard/Adm_Contact.json b/configs/seeds/wizard/Adm_Contact.json index 098bdae8..dd560bc6 100644 --- a/configs/seeds/wizard/Adm_Contact.json +++ b/configs/seeds/wizard/Adm_Contact.json @@ -432,6 +432,7 @@ "AllowAllDeleting": false, "AllowAdding": true, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -604,6 +605,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -1215,6 +1217,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1353,6 +1357,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1491,6 +1497,8 @@ "IgnoreEmptyValue": true, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1629,6 +1637,8 @@ "IgnoreEmptyValue": true, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "^[0-9]{4,15}$", "Max": null, "Min": null, @@ -2901,6 +2911,8 @@ "IgnoreEmptyValue": true, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "^(https?:\\/\\/)?([\\w-]+\\.)+[A-Za-z]{2,}(\\/\\S*)?$", "Max": null, "Min": null, @@ -3291,6 +3303,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -3348,8 +3362,6 @@ "App.Definitions.Contact.Title", "App.Definitions.Contact.Desc", "App.Listform.ListformField.CompanyType", - "App.Listform.ListformField.Latitude", - "App.Listform.ListformField.Longitude", "App.StaticLookup.Company", "App.StaticLookup.Individual" ], diff --git a/configs/seeds/wizard/Hr_DevelopmentPlan.json b/configs/seeds/wizard/Hr_DevelopmentPlan.json index 97d97513..72eed564 100644 --- a/configs/seeds/wizard/Hr_DevelopmentPlan.json +++ b/configs/seeds/wizard/Hr_DevelopmentPlan.json @@ -145,11 +145,6 @@ "En": "Completed", "Tr": "Tamamlanan" }, - { - "Key": "App.Hr.Performance.Widget.InProgress", - "En": "In Progress", - "Tr": "Devam Eden" - }, { "Key": "App.Hr.Performance.Widget.AverageScore", "En": "Average Score", @@ -609,6 +604,7 @@ "AllowAllDeleting": false, "AllowAdding": true, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -696,6 +692,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -1173,6 +1170,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1437,6 +1436,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1575,6 +1576,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -2595,6 +2598,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, diff --git a/configs/seeds/wizard/Hr_EventLog.json b/configs/seeds/wizard/Hr_EventLog.json index 3c2b1d70..a56c4de1 100644 --- a/configs/seeds/wizard/Hr_EventLog.json +++ b/configs/seeds/wizard/Hr_EventLog.json @@ -356,6 +356,7 @@ "AllowAllDeleting": false, "AllowAdding": true, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -436,6 +437,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -913,6 +915,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1177,6 +1181,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1315,6 +1321,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1453,6 +1461,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1591,6 +1601,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1905,7 +1917,6 @@ "App.Listform.ListformField.EventDate", "App.Listform.ListformField.EventTime", "App.Listform.ListformField.ShiftId", - "App.Listform.ListformField.CreatorId", "App.StaticLookup.ShiftSupervisor", "App.StaticLookup.SecurityRoom", "App.StaticLookup.ObservationRoom", diff --git a/configs/seeds/wizard/Hr_My360Feedback.json b/configs/seeds/wizard/Hr_My360Feedback.json index 06c4c484..6c955fe7 100644 --- a/configs/seeds/wizard/Hr_My360Feedback.json +++ b/configs/seeds/wizard/Hr_My360Feedback.json @@ -86,11 +86,6 @@ "En": "Completed", "Tr": "Tamamlanan" }, - { - "Key": "App.Hr.Performance.Widget.InProgress", - "En": "In Progress", - "Tr": "Devam Eden" - }, { "Key": "App.Hr.Performance.Widget.AverageScore", "En": "Average Score", @@ -460,6 +455,7 @@ "AllowAllDeleting": false, "AllowAdding": false, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -554,6 +550,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -1157,6 +1154,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1295,6 +1294,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1433,6 +1434,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, diff --git a/configs/seeds/wizard/Hr_MyPerformanceReview.json b/configs/seeds/wizard/Hr_MyPerformanceReview.json index 9d89d484..f60c8ae8 100644 --- a/configs/seeds/wizard/Hr_MyPerformanceReview.json +++ b/configs/seeds/wizard/Hr_MyPerformanceReview.json @@ -121,11 +121,6 @@ "En": "Completed", "Tr": "Tamamlanan" }, - { - "Key": "App.Hr.Performance.Widget.InProgress", - "En": "In Progress", - "Tr": "Devam Eden" - }, { "Key": "App.Hr.Performance.Widget.AverageScore", "En": "Average Score", @@ -590,6 +585,7 @@ "AllowAllDeleting": false, "AllowAdding": false, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -729,6 +725,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -1206,6 +1203,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1344,6 +1343,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1986,6 +1987,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, diff --git a/configs/seeds/wizard/Hr_PerformanceCalibration.json b/configs/seeds/wizard/Hr_PerformanceCalibration.json index 75636c82..e304eb2c 100644 --- a/configs/seeds/wizard/Hr_PerformanceCalibration.json +++ b/configs/seeds/wizard/Hr_PerformanceCalibration.json @@ -120,11 +120,6 @@ "En": "Completed", "Tr": "Tamamlanan" }, - { - "Key": "App.Hr.Performance.Widget.InProgress", - "En": "In Progress", - "Tr": "Devam Eden" - }, { "Key": "App.Hr.Performance.Widget.AverageScore", "En": "Average Score", @@ -604,6 +599,7 @@ "AllowAllDeleting": false, "AllowAdding": false, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -698,6 +694,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -1175,6 +1172,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1313,6 +1312,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1955,6 +1956,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, diff --git a/configs/seeds/wizard/Hr_PerformancePeriod.json b/configs/seeds/wizard/Hr_PerformancePeriod.json index 3651c232..7743ea90 100644 --- a/configs/seeds/wizard/Hr_PerformancePeriod.json +++ b/configs/seeds/wizard/Hr_PerformancePeriod.json @@ -115,11 +115,6 @@ "En": "Completed", "Tr": "Tamamlanan" }, - { - "Key": "App.Hr.Performance.Widget.InProgress", - "En": "In Progress", - "Tr": "Devam Eden" - }, { "Key": "App.Hr.Performance.Widget.AverageScore", "En": "Average Score", @@ -562,6 +557,7 @@ "AllowAllDeleting": false, "AllowAdding": true, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -663,6 +659,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -1140,6 +1137,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1278,6 +1277,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1416,6 +1417,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1554,6 +1557,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1944,6 +1949,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -2082,6 +2089,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -2532,7 +2541,6 @@ "App.Hr.Performance.Widget.ManagerReview", "App.Hr.Performance.Widget.Calibration", "App.Hr.Performance.Widget.Completed", - "App.Hr.Performance.Widget.InProgress", "App.Hr.Performance.Widget.AverageScore", "App.Hr.Performance.Widget.AverageCalibrated", "App.Hr.Performance.Widget.AwaitingMe", diff --git a/configs/seeds/wizard/Hr_PerformanceReview.json b/configs/seeds/wizard/Hr_PerformanceReview.json index 25334302..5d2fafd2 100644 --- a/configs/seeds/wizard/Hr_PerformanceReview.json +++ b/configs/seeds/wizard/Hr_PerformanceReview.json @@ -120,11 +120,6 @@ "En": "Completed", "Tr": "Tamamlanan" }, - { - "Key": "App.Hr.Performance.Widget.InProgress", - "En": "In Progress", - "Tr": "Devam Eden" - }, { "Key": "App.Hr.Performance.Widget.AverageScore", "En": "Average Score", @@ -624,6 +619,7 @@ "AllowAllDeleting": false, "AllowAdding": true, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -776,6 +772,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -1253,6 +1250,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1391,6 +1390,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -2033,6 +2034,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, diff --git a/configs/seeds/wizard/Hr_TeamPerformanceReview.json b/configs/seeds/wizard/Hr_TeamPerformanceReview.json index 65c14941..7b4bd7a8 100644 --- a/configs/seeds/wizard/Hr_TeamPerformanceReview.json +++ b/configs/seeds/wizard/Hr_TeamPerformanceReview.json @@ -121,11 +121,6 @@ "En": "Completed", "Tr": "Tamamlanan" }, - { - "Key": "App.Hr.Performance.Widget.InProgress", - "En": "In Progress", - "Tr": "Devam Eden" - }, { "Key": "App.Hr.Performance.Widget.AverageScore", "En": "Average Score", @@ -590,6 +585,7 @@ "AllowAllDeleting": false, "AllowAdding": false, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -729,6 +725,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -1206,6 +1203,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1344,6 +1343,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1986,6 +1987,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, diff --git a/configs/seeds/wizard/Hr_VehicleExpense.json b/configs/seeds/wizard/Hr_VehicleExpense.json index 0f8d4aad..3447440f 100644 --- a/configs/seeds/wizard/Hr_VehicleExpense.json +++ b/configs/seeds/wizard/Hr_VehicleExpense.json @@ -33,14 +33,7 @@ "TitleEn": "Vehicle Expense Entries", "TitleTr": "Araç Masraf Girişleri", "DescEn": "Vehicle Expenses — every invoice/receipt for a vehicle: header and lines.\nWhere: Human Resources › Vehicles › Vehicle Expenses. Amounts are entered in the Lines tab.\nFields: vehicle, invoice no, invoice date (default today), vendor (Destinations), document type, file.\nWidgets: total invoices, entered today and total net amount of all lines.\nUse: vehicle × expense item × period cost analysis with Pivot.", - "DescTr": "Masraf Girişleri — araç için gelen her fatura/fiş: başlık bilgileri ve kalemleri.\nNerede: İnsan Kaynakları › Araçlar › Masraf Girişleri. Detayın Kalemler sekmesinde tutarlar girilir.\nAlanlar: araç, fatura no, fatura tarihi (varsayılan bugün), firma (Gidilecek Yerler tanımı), belge türü, dosya.\nWidget'lar: toplam fatura, bugün girilen ve tüm kalemlerin toplam net tutarı.\nKullanım: Pivot ile araç × masraf kalemi × dönem maliyet analizi.", - "Texts": [ - { - "Key": "App.Hr.VehicleExpense.Widget.ThisMonth", - "En": "This Month", - "Tr": "Bu Ay" - } - ] + "DescTr": "Masraf Girişleri — araç için gelen her fatura/fiş: başlık bilgileri ve kalemleri.\nNerede: İnsan Kaynakları › Araçlar › Masraf Girişleri. Detayın Kalemler sekmesinde tutarlar girilir.\nAlanlar: araç, fatura no, fatura tarihi (varsayılan bugün), firma (Gidilecek Yerler tanımı), belge türü, dosya.\nWidget'lar: toplam fatura, bugün girilen ve tüm kalemlerin toplam net tutarı.\nKullanım: Pivot ile araç × masraf kalemi × dönem maliyet analizi." }, "Groups": [ { @@ -358,6 +351,7 @@ "AllowAllDeleting": false, "AllowAdding": true, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -452,6 +446,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -929,6 +924,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1067,6 +1064,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1205,6 +1204,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1765,7 +1766,6 @@ "App.Hr.VehicleExpense", "App.Hr.VehicleExpense.Title", "App.Hr.VehicleExpense.Desc", - "App.Hr.VehicleExpense.Widget.ThisMonth", "App.Listform.ListformField.InvoiceNo" ], "PermissionGroupNames": [], diff --git a/configs/seeds/wizard/Inventory_BomOverview.json b/configs/seeds/wizard/Inventory_BomOverview.json index 0c81adff..d712932a 100644 --- a/configs/seeds/wizard/Inventory_BomOverview.json +++ b/configs/seeds/wizard/Inventory_BomOverview.json @@ -372,7 +372,7 @@ "D": "App.Inventory.BomOverview.Delete", "E": "App.Inventory.BomOverview.Export", "I": "App.Inventory.BomOverview.Import", - "N": "App.Inventory.BomOverview.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -2084,8 +2084,7 @@ "App.Inventory.BomOverview.Update", "App.Inventory.BomOverview.Delete", "App.Inventory.BomOverview.Export", - "App.Inventory.BomOverview.Import", - "App.Inventory.BomOverview.Note" + "App.Inventory.BomOverview.Import" ], "MenuCodes": [ "App.Inventory.BomOverview" diff --git a/configs/seeds/wizard/Inventory_Delivery.json b/configs/seeds/wizard/Inventory_Delivery.json index 45029004..3e876792 100644 --- a/configs/seeds/wizard/Inventory_Delivery.json +++ b/configs/seeds/wizard/Inventory_Delivery.json @@ -32,18 +32,18 @@ "MenuTr": "Teslimatlar", "TitleEn": "Deliveries", "TitleTr": "Teslimatlar", - "DescEn": "Deliveries — goods leaving the warehouse to customers.\nWhere: Inventory › Operations › Deliveries.\nFields: delivery address (contact), branch › warehouse › operation type (delivery types only), source location (from the operation type), scheduled date, source document, shipping policy (As soon as possible: the available part becomes Ready; When all products are ready: waits until every line is available).\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as Ready checks stock and fills the done quantity; Mark as Done posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Mark as Done. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves.", - "DescTr": "Teslimatlar — depodan müşteriye çıkan mallar.\nNerede: Envanter › Operasyonlar › Teslimatlar.\nAlanlar: teslim adresi (kontak), şube › depo › operasyon türü (yalnız teslimat türleri), kaynak konum (operasyon türünden gelir), planlanan tarih, kaynak belge, ürün teslimat politikası (Mümkün olduğunca kısa sürede: karşılanabilen kısım Hazır olur; Tüm ürünler hazır olduğunda: bütün satırlar karşılanana kadar Bekleyen kalır).\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Hazırla stoğu kontrol eder ve yapılacak miktarı doldurur; Tamamla stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Tamamla'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri.", + "DescEn": "Deliveries — goods leaving the warehouse to customers.\nWhere: Inventory › Operations › Deliveries.\nFields: delivery address (contact), branch › warehouse › operation type (delivery types only), source location (from the operation type), scheduled date, source document, shipping policy (As soon as possible: the available part becomes Ready; When all products are ready: waits until every line is available).\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as To Do checks stock and fills the done quantity; Validate posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Validate. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves.", + "DescTr": "Teslimatlar — depodan müşteriye çıkan mallar.\nNerede: Envanter › Operasyonlar › Teslimatlar.\nAlanlar: teslim adresi (kontak), şube › depo › operasyon türü (yalnız teslimat türleri), kaynak konum (operasyon türünden gelir), planlanan tarih, kaynak belge, ürün teslimat politikası (Mümkün olduğunca kısa sürede: karşılanabilen kısım Hazır olur; Tüm ürünler hazır olduğunda: bütün satırlar karşılanana kadar Bekleyen kalır).\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Yapılacak olarak işaretle stoğu kontrol eder ve yapılacak miktarı doldurur; Doğrula stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Doğrula'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri.", "Texts": [ { "Key": "App.Inventory.Transfer.Action.Confirm", - "En": "Mark as Ready", - "Tr": "Hazırla" + "En": "Mark as To Do", + "Tr": "Yapılacak olarak işaretle" }, { "Key": "App.Inventory.Transfer.Action.Validate", - "En": "Mark as Done", - "Tr": "Tamamla" + "En": "Validate", + "Tr": "Doğrula" }, { "Key": "App.Inventory.Transfer.Action.Cancel", diff --git a/configs/seeds/wizard/Inventory_InternalTransfer.json b/configs/seeds/wizard/Inventory_InternalTransfer.json index 4970a75e..fb782d26 100644 --- a/configs/seeds/wizard/Inventory_InternalTransfer.json +++ b/configs/seeds/wizard/Inventory_InternalTransfer.json @@ -32,18 +32,18 @@ "MenuTr": "İç Transferler", "TitleEn": "Internal Transfers", "TitleTr": "İç Transferler", - "DescEn": "Internal Transfers — moves between locations of the same warehouse.\nWhere: Inventory › Operations › Internal Transfers; extra tab Approval & Delivery.\nFields: contact, branch › warehouse › operation type (internal transfer types only), source and destination location (internal locations only, different from each other), scheduled date, source document.\nOrder: enter the lines › Start Workflow › the warehouse responsible of the source location gives Source Warehouse Approval › the document is made ready automatically (Ready/Waiting) › select lots › Mark as Done. A location without a responsible has no approval step (No Approval Needed) and Mark as Ready is pressed by hand. Approval comes before the stock move; Mark as Done writes the receiving user and date.\nImport from Requests (draft transfer) adds the approved material request lines to be fulfilled by transfer; Mark as Done writes the delivered quantity to the request line.\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as Ready checks stock and fills the done quantity; Mark as Done posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Mark as Done. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves.", - "DescTr": "İç Transferler — aynı deponun konumları arasında taşıma.\nNerede: Envanter › Operasyonlar › İç Transferler; ek sekme Onay ve Teslim.\nAlanlar: kontak, şube › depo › operasyon türü (yalnız iç transfer türleri), kaynak ve hedef konum (yalnız iç konumlar, birbirinden farklı), planlanan tarih, kaynak belge.\nSıra: satırlar girilir › İş Akışı Başlat › kaynak konumun depo sorumlusu Kaynak Depo Onayı verir › belge kendiliğinden hazırlanır (Hazır/Bekleyen) › lotlar seçilir › Tamamla. Sorumlusu olmayan konumda onay adımı yoktur (Onay Gerekmez) ve Hazırla elle basılır. Onay stok hareketinden önce gelir; Tamamla teslim alanı ve teslim alma tarihini yazar.\nTalepten Aktar (taslak transferde) transferle karşılanacak onaylı malzeme talebi kalemlerini ekler; Tamamla teslim edilen miktarı talep kalemine yazar.\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Hazırla stoğu kontrol eder ve yapılacak miktarı doldurur; Tamamla stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Tamamla'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri.", + "DescEn": "Internal Transfers — moves between internal locations (within a warehouse or between warehouses).\nWhere: Inventory › Operations › Internal Transfers; extra tab Approval & Delivery.\nFields: contact, branch › warehouse › operation type (internal transfer types only), source and destination location (internal locations only, different from each other), scheduled date, source document.\nOrder: enter the lines › Start Workflow › the warehouse responsible of the source location gives Source Warehouse Approval › the document is made ready automatically (Ready/Waiting) › select lots › Validate. A location without a responsible has no approval step (No Approval Needed) and Mark as To Do is pressed by hand. Approval comes before the stock move; Validate writes the receiving user and date.\nMaterial request lines come to a transfer through the Internal Transfer decision in Purchasing › Requests › Planning: the line is added to the draft transfer for the same source → destination location that has not entered approval, otherwise a new draft is opened with the source warehouse's internal transfer type. Validate writes the delivered quantity to the request line; cancelling the transfer or deleting its line returns the quantity to Planning.\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as To Do checks stock and fills the done quantity; Validate posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Validate. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves.", + "DescTr": "İç Transferler — iç konumlar arasında taşıma (aynı depo ya da depolar arası).\nNerede: Envanter › Operasyonlar › İç Transferler; ek sekme Onay ve Teslim.\nAlanlar: kontak, şube › depo › operasyon türü (yalnız iç transfer türleri), kaynak ve hedef konum (yalnız iç konumlar, birbirinden farklı), planlanan tarih, kaynak belge.\nSıra: satırlar girilir › Onayla › kaynak konumun depo sorumlusu Kaynak Depo Onayı verir › belge kendiliğinden hazırlanır (Hazır/Bekleyen) › lotlar seçilir › Doğrula. Sorumlusu olmayan konumda onay adımı yoktur (Onay Gerekmez) ve Yapılacak olarak işaretle elle basılır. Onay stok hareketinden önce gelir; Doğrula teslim alanı ve teslim alma tarihini yazar.\nMalzeme talebi kalemleri transfere Satınalma › Talepler › Planlama'daki İç Transfer kararıyla gelir: aynı kaynak → hedef konum için onaya girmemiş taslak transfer varsa satır ona eklenir, yoksa kaynak deponun iç transfer türüyle yeni taslak açılır. Doğrula teslim edilen miktarı talep kalemine yazar; transfer iptal edilir ya da satırı silinirse miktar Planlama'ya döner.\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Yapılacak olarak işaretle stoğu kontrol eder ve yapılacak miktarı doldurur; Doğrula stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Doğrula'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri.", "Texts": [ { "Key": "App.Inventory.Transfer.Action.Confirm", - "En": "Mark as Ready", - "Tr": "Hazırla" + "En": "Mark as To Do", + "Tr": "Yapılacak olarak işaretle" }, { "Key": "App.Inventory.Transfer.Action.Validate", - "En": "Mark as Done", - "Tr": "Tamamla" + "En": "Validate", + "Tr": "Doğrula" }, { "Key": "App.Inventory.Transfer.Action.Cancel", @@ -95,16 +95,6 @@ "En": "Late", "Tr": "Geciken" }, - { - "Key": "App.Inventory.Transfer.ImportRequests", - "En": "Import from Requests", - "Tr": "Talepten Aktar" - }, - { - "Key": "App.Inventory.Transfer.ImportRequestsInfo", - "En": "Select the approved material request lines to be fulfilled by transfer and click Transfer Selected. Only requests of the document branch are listed.", - "Tr": "Transferle karşılanacak onaylı malzeme talebi kalemlerini seçip Seçilenleri Aktar butonuna basın. Yalnız belgenin şubesindeki talepler listelenir." - }, { "Key": "App.Inventory.Transfer.Tab.Approval", "En": "Approval & Delivery", @@ -587,20 +577,6 @@ "N": "App.Inventory.InternalTransfer.Note" }, "CommandColumnDto": [ - { - "ButtonPosition": 0, - "AuthName": "App.Inventory.TransferImportItem.Update", - "Text": "App.Inventory.Transfer.ImportRequests", - "Hint": "App.Inventory.Transfer.ImportRequests", - "Icon": "download", - "Url": null, - "UrlTarget": "_blank", - "DialogName": null, - "DialogParameters": null, - "OnClick": "(() => { const r = e.row.data; if (!r) return; dialog.setConfig({ component: 'PurchaseDocGrid', props: { docId: r.Id, listFormCode: 'App.Inventory.TransferImportItem', title: 'App.Inventory.Transfer.ImportRequests', info: 'App.Inventory.Transfer.ImportRequestsInfo' }, onClose: () => e.component.refresh() }); })()", - "IsVisible": true, - "VisibleExpression": "(e) => !!e.row && !e.row.isEditing && ['Draft'].includes(e.row.data.Status)" - }, { "ButtonPosition": 0, "AuthName": "App.Inventory.InternalTransfer.Update", @@ -3735,8 +3711,6 @@ "App.Inventory.Widget.Ready", "App.Inventory.Widget.Waiting", "App.Inventory.Widget.Late", - "App.Inventory.Transfer.ImportRequests", - "App.Inventory.Transfer.ImportRequestsInfo", "App.Inventory.Transfer.Tab.Approval" ], "PermissionGroupNames": [], diff --git a/configs/seeds/wizard/Inventory_ProductSupplier.json b/configs/seeds/wizard/Inventory_ProductSupplier.json index 257f5313..8b562650 100644 --- a/configs/seeds/wizard/Inventory_ProductSupplier.json +++ b/configs/seeds/wizard/Inventory_ProductSupplier.json @@ -33,8 +33,8 @@ "MenuTr": "Satınalma", "TitleEn": "Supplier Prices", "TitleTr": "Tedarikçi Fiyatları", - "DescEn": "Product Supplier Prices — from which supplier the product is bought and at what price.\nWhere: Inventory › Definitions › Products › Purchase tab (no menu of its own).\nFields: supplier (from Contacts), variant (optional, for products with attributes), minimum quantity, unit, unit price, currency, delivery lead time (days).\nThe product link (ProductId) is written automatically from the open product.", - "DescTr": "Ürün Tedarikçi Fiyatları — ürünün hangi tedarikçiden hangi bedele alındığı.\nNerede: Envanter › Tanımlamalar › Ürünler › Satınalma sekmesi (kendi menüsü yoktur).\nAlanlar: tedarikçi (Kontaklar'dan), varyant (isteğe bağlı, nitelikli ürünlerde), minimum miktar, birim, birim fiyat, kur, teslim süresi (gün).\nÜrün bağlantısı (ProductId) açık olan ürün kaydından otomatik yazılır." + "DescEn": "Product Supplier Prices — from which supplier the product is bought and at what price.\nWhere: Inventory › Definitions › Products › Purchase tab (no menu of its own).\nFields: supplier (from Contacts), variant (optional, for products with attributes), minimum quantity, unit, unit price, currency, delivery lead time (days).\nThe product link (ProductId) is written automatically from the open product.\nAutomatic: when a receipt opened from a purchase order is completed (Validate), the supplier's row is updated with the order's unit price and the last purchase date (one row per supplier × unit × currency; the tier matching the received quantity); if there is none, a row is added.", + "DescTr": "Ürün Tedarikçi Fiyatları — ürünün hangi tedarikçiden hangi bedele alındığı.\nNerede: Envanter › Tanımlamalar › Ürünler › Satınalma sekmesi (kendi menüsü yoktur).\nAlanlar: tedarikçi (Kontaklar'dan), varyant (isteğe bağlı, nitelikli ürünlerde), minimum miktar, birim, birim fiyat, kur, teslim süresi (gün).\nÜrün bağlantısı (ProductId) açık olan ürün kaydından otomatik yazılır.\nOtomatik: satınalma siparişinden açılan alım Doğrula ile stoğa girince tedarikçinin satırı siparişin birim fiyatı ve son alım tarihiyle güncellenir (tedarikçi × birim × para birimi başına tek satır; alınan miktara uyan kademe); satır yoksa eklenir." }, "Groups": [ { @@ -92,6 +92,12 @@ "CaptionName": "App.Listform.ListformField.LeadTimeDays", "En": "Lead Time (days)", "Tr": "Teslim Süresi (gün)" + }, + { + "FieldName": "LastPurchaseDate", + "CaptionName": "App.Listform.ListformField.LastPurchaseDate", + "En": "Last Purchase Date", + "Tr": "Son Alım Tarihi" } ] } @@ -372,6 +378,7 @@ "AllowAllDeleting": false, "AllowAdding": true, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -452,6 +459,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -1055,6 +1063,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1319,6 +1329,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1583,6 +1595,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1882,6 +1896,132 @@ "CreationTime": "0001-01-01T00:00:00", "CreatorId": null, "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Inventory.ProductSupplier", + "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": "LastPurchaseDate", + "CaptionName": "App.Listform.ListformField.LastPurchaseDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "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.Inventory.ProductSupplier.Create", + "R": "App.Inventory.ProductSupplier", + "U": "App.Inventory.ProductSupplier.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"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, @@ -1892,7 +2032,8 @@ "App.Inventory.ProductSupplier.Title", "App.Inventory.ProductSupplier.Desc", "App.Listform.ListformField.Supplier", - "App.Listform.ListformField.LeadTimeDays" + "App.Listform.ListformField.LeadTimeDays", + "App.Listform.ListformField.LastPurchaseDate" ], "PermissionGroupNames": [], "PermissionNames": [ diff --git a/configs/seeds/wizard/Inventory_ProductVariant.json b/configs/seeds/wizard/Inventory_ProductVariant.json index 9a13c549..d81fb597 100644 --- a/configs/seeds/wizard/Inventory_ProductVariant.json +++ b/configs/seeds/wizard/Inventory_ProductVariant.json @@ -335,6 +335,7 @@ "AllowAllDeleting": false, "AllowAdding": false, "AllowDuplicate": false, + "OpenDetailAfterInsert": false, "UseIcons": false, "ConfirmDelete": true, "NewRowPosition": "viewportTop", @@ -374,7 +375,7 @@ "D": "App.Inventory.ProductVariant.Delete", "E": "App.Inventory.ProductVariant.Export", "I": "App.Inventory.ProductVariant.Import", - "N": "App.Inventory.ProductVariant.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -415,6 +416,7 @@ "ApprovalDescriptionFieldName": null, "ApprovalIsFilterUserName": false, "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, "Criteria": [] }, "UserId": null, @@ -1946,7 +1948,6 @@ "App.Inventory.ProductVariant.Desc", "App.Listform.ListformField.ProductName", "App.Listform.ListformField.VariantValues", - "App.Listform.ListformField.VariantKey", "App.Listform.ListformField.IsDeleted" ], "PermissionGroupNames": [], @@ -1956,8 +1957,7 @@ "App.Inventory.ProductVariant.Update", "App.Inventory.ProductVariant.Delete", "App.Inventory.ProductVariant.Export", - "App.Inventory.ProductVariant.Import", - "App.Inventory.ProductVariant.Note" + "App.Inventory.ProductVariant.Import" ], "MenuCodes": [ "App.Inventory.ProductVariant" diff --git a/configs/seeds/wizard/Inventory_Receipt.json b/configs/seeds/wizard/Inventory_Receipt.json index 7c4cead8..c00d59fe 100644 --- a/configs/seeds/wizard/Inventory_Receipt.json +++ b/configs/seeds/wizard/Inventory_Receipt.json @@ -32,18 +32,18 @@ "MenuTr": "Alımlar", "TitleEn": "Receipts", "TitleTr": "Alımlar", - "DescEn": "Receipts — goods entering the warehouse from suppliers.\nWhere: Inventory › Operations › Receipts. Confirming a purchase order opens a draft receipt automatically (Source Document = order no; received quantities are written back to the order lines).\nFields: received from (supplier), branch › warehouse › operation type (receipt types only), destination location (from the operation type), scheduled date, source document.\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as Ready checks stock and fills the done quantity; Mark as Done posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Mark as Done. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves.", - "DescTr": "Alımlar — tedarikçiden depoya giren mallar.\nNerede: Envanter › Operasyonlar › Alımlar. Satınalma siparişi onaylanınca taslak alım kendiliğinden açılır (Kaynak Belge = sipariş no; alınan miktarlar sipariş kalemlerine yazılır).\nAlanlar: alım yapılan (tedarikçi), şube › depo › operasyon türü (yalnız alım türleri), hedef konum (operasyon türünden gelir), planlanan tarih, kaynak belge.\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Hazırla stoğu kontrol eder ve yapılacak miktarı doldurur; Tamamla stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Tamamla'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri.", + "DescEn": "Receipts — goods entering the warehouse from suppliers.\nWhere: Inventory › Operations › Receipts. Confirming a purchase order opens a draft receipt automatically (Source Document = order no; received quantities are written back to the order lines).\nFields: received from (supplier), branch › warehouse › operation type (receipt types only), destination location (from the operation type), scheduled date, source document.\nStatuses: Draft › Waiting / Ready › Done; Cancelled. Row buttons appear according to the document status. Mark as To Do checks stock and fills the done quantity; Validate posts stock by branch › warehouse › location › product › lot; the remainder of lines done below demand moves to a new document (backorder). Return opens a reverse draft document from a done one; Print prints the transfer slip.\nTabs: Operations (product lines; Details for lots/serials, Generate Lot/Serial and Auto Assign), Additional Info (shipping, responsible, project), Note.\nProducts with inventory tracking off create no stock move; products tracked by lot or serial need a lot distribution before Validate. The number comes from the operation type's sequence. Related screens: Inventory › Stock, Moves and Product Moves.", + "DescTr": "Alımlar — tedarikçiden depoya giren mallar.\nNerede: Envanter › Operasyonlar › Alımlar. Satınalma siparişi onaylanınca taslak alım kendiliğinden açılır (Kaynak Belge = sipariş no; alınan miktarlar sipariş kalemlerine yazılır).\nAlanlar: alım yapılan (tedarikçi), şube › depo › operasyon türü (yalnız alım türleri), hedef konum (operasyon türünden gelir), planlanan tarih, kaynak belge.\nDurumlar: Taslak › Bekleyen / Hazır › Tamamlandı; İptal. Satırdaki butonlar belgenin durumuna göre görünür. Yapılacak olarak işaretle stoğu kontrol eder ve yapılacak miktarı doldurur; Doğrula stoğu şube › depo › konum › ürün › lot bazında günceller, talepten az yapılan satırların kalanı aynı türde yeni belgeye (backorder) geçer. İade Et, tamamlanmış belgeden ters yönlü taslak belge açar; Yazdır transfer fişini basar.\nSekmeler: Operasyonlar (ürün satırları; Detaylar ile lot/seri, Lot/Seri Oluştur ve Otomatik Ata), Ek Bilgi (nakliye, sorumlu, proje), Not.\nÜrünün Envanter Takibi kapalıysa stok hareketi oluşmaz; Takip Yöntemi Lot ya da Seri ise Doğrula'dan önce lot dağılımı girilmelidir. Numara operasyon türünün numaratöründen verilir. İlişkili ekranlar: Envanter › Stok, Hareketler ve Ürün Hareketleri.", "Texts": [ { "Key": "App.Inventory.Transfer.Action.Confirm", - "En": "Mark as Ready", - "Tr": "Hazırla" + "En": "Mark as To Do", + "Tr": "Yapılacak olarak işaretle" }, { "Key": "App.Inventory.Transfer.Action.Validate", - "En": "Mark as Done", - "Tr": "Tamamla" + "En": "Validate", + "Tr": "Doğrula" }, { "Key": "App.Inventory.Transfer.Action.Cancel", @@ -106,6 +106,12 @@ "En": "Id", "Tr": "Kimlik" }, + { + "FieldName": "PartnerId", + "CaptionName": "App.Inventory.Receipt.PartnerId", + "En": "Supplier Name", + "Tr": "Tedarikçi Adı" + }, { "FieldName": "TransferNo", "CaptionName": "App.Listform.ListformField.TransferNo", @@ -118,18 +124,6 @@ "En": "Status", "Tr": "Durum" }, - { - "FieldName": "SourceDocument", - "CaptionName": "App.Listform.ListformField.SourceDocument", - "En": "Source Document", - "Tr": "Kaynak Belge" - }, - { - "FieldName": "PartnerId", - "CaptionName": "App.Inventory.Receipt.PartnerId", - "En": "Supplier Name", - "Tr": "Tedarikçi Adı" - }, { "FieldName": "ScheduledDate", "CaptionName": "App.Listform.ListformField.ScheduledDate", @@ -189,6 +183,12 @@ "CaptionName": "App.Listform.ListformField.LineSummary", "En": "LineSummary", "Tr": "LineSummary" + }, + { + "FieldName": "SourceDocument", + "CaptionName": "App.Listform.ListformField.SourceDocument", + "En": "Source Document", + "Tr": "Kaynak Belge" } ] } @@ -1079,384 +1079,6 @@ "CreatorId": null, "Id": "00000000-0000-0000-0000-000000000000" }, - { - "EditType": null, - "ListFormCode": "App.Inventory.Receipt", - "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": "TransferNo", - "CaptionName": "App.Listform.ListformField.TransferNo", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": true, - "IsActive": true, - "Width": 0, - "ListOrderNo": 2, - "SourceDbType": 16, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.Receipt.Create", - "R": "App.Inventory.Receipt", - "U": "App.Inventory.Receipt.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": 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.Inventory.Receipt", - "RoleId": null, - "UserId": null, - "ColumnJoinTableDto": { - "JoinType": null, - "TableName": null, - "JoinFieldName": null, - "BaseTableJoinFieldName": null, - "SelectFieldName": null, - "FieldNameAlias": null, - "JoinCondition2": "AND", - "JoinFieldName2": null, - "BaseTableJoinFieldName2_OrValue": null - }, - "FieldName": "Status", - "CaptionName": "App.Listform.ListformField.Status", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": true, - "IsActive": true, - "Width": 0, - "ListOrderNo": 3, - "SourceDbType": 16, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 1, - "ValueExpr": "key", - "DisplayExpr": "name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": "[{\"key\":\"Draft\",\"name\":\"App.StaticLookup.Draft\"},{\"key\":\"Waiting\",\"name\":\"App.StaticLookup.Waiting\"},{\"key\":\"Ready\",\"name\":\"App.StaticLookup.Ready\"},{\"key\":\"Done\",\"name\":\"App.StaticLookup.Done\"},{\"key\":\"Cancelled\",\"name\":\"App.StaticLookup.Cancelled\"}]" - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.Receipt.Create", - "R": "App.Inventory.Receipt", - "U": "App.Inventory.Receipt.Update", - "E": true, - "I": true - }, - "CanRead": false, - "CanCreate": false, - "CanUpdate": false, - "CanExport": false, - "DefaultValue": null, - "DefaultValueType": 0, - "PivotSettingsDto": { - "IsPivot": true, - "Expanded": false, - "SortOrder": "asc", - "Area": "filter", - "Format": null, - "SummaryType": null, - "GroupInterval": "", - "WordWrapEnabled": false - }, - "Alignment": "left", - "Format": null, - "EditOrderNo": 2, - "EditGroupOrderNo": 1, - "EditorType2": "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.Inventory.Receipt", - "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": "SourceDocument", - "CaptionName": "App.Listform.ListformField.SourceDocument", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": true, - "IsActive": true, - "Width": 0, - "ListOrderNo": 4, - "SourceDbType": 16, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.Receipt.Create", - "R": "App.Inventory.Receipt", - "U": "App.Inventory.Receipt.Update", - "E": true, - "I": true - }, - "CanRead": false, - "CanCreate": false, - "CanUpdate": false, - "CanExport": false, - "DefaultValue": null, - "DefaultValueType": 0, - "PivotSettingsDto": { - "IsPivot": true, - "Expanded": false, - "SortOrder": "asc", - "Area": "filter", - "Format": null, - "SummaryType": null, - "GroupInterval": "", - "WordWrapEnabled": false - }, - "Alignment": "left", - "Format": null, - "EditOrderNo": 3, - "EditGroupOrderNo": 1, - "EditorType2": "dxTextBox", - "ColSpan": 1, - "EditorOptions": "{\"showClearButton\":true,\"maxLength\":128}", - "GridBoxOptions": null, - "TagBoxOptions": null, - "ImageUploadOptions": null, - "EditorScript": null, - "LastModificationTime": null, - "LastModifierId": null, - "CreationTime": "0001-01-01T00:00:00", - "CreatorId": null, - "Id": "00000000-0000-0000-0000-000000000000" - }, { "EditType": null, "ListFormCode": "App.Inventory.Receipt", @@ -1480,7 +1102,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 5, + "ListOrderNo": 2, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -1568,7 +1190,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 4, + "EditOrderNo": 1, "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", "ColSpan": 2, @@ -1583,6 +1205,258 @@ "CreatorId": null, "Id": "00000000-0000-0000-0000-000000000000" }, + { + "EditType": null, + "ListFormCode": "App.Inventory.Receipt", + "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": "TransferNo", + "CaptionName": "App.Listform.ListformField.TransferNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Inventory.Receipt.Create", + "R": "App.Inventory.Receipt", + "U": "App.Inventory.Receipt.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 2, + "EditGroupOrderNo": 1, + "EditorType2": "dxTextBox", + "ColSpan": 1, + "EditorOptions": "{\"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.Inventory.Receipt", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Status", + "CaptionName": "App.Listform.ListformField.Status", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 1, + "ValueExpr": "key", + "DisplayExpr": "name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "[{\"key\":\"Draft\",\"name\":\"App.StaticLookup.Draft\"},{\"key\":\"Waiting\",\"name\":\"App.StaticLookup.Waiting\"},{\"key\":\"Ready\",\"name\":\"App.StaticLookup.Ready\"},{\"key\":\"Done\",\"name\":\"App.StaticLookup.Done\"},{\"key\":\"Cancelled\",\"name\":\"App.StaticLookup.Cancelled\"}]" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Inventory.Receipt.Create", + "R": "App.Inventory.Receipt", + "U": "App.Inventory.Receipt.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": 5, + "EditGroupOrderNo": 1, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"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.Inventory.Receipt", @@ -1606,7 +1480,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 6, + "ListOrderNo": 5, "SourceDbType": 6, "CultureName": "en", "DataType": "datetime", @@ -1708,7 +1582,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 5, + "EditOrderNo": 3, "EditGroupOrderNo": 1, "EditorType2": "dxDateBox", "ColSpan": 1, @@ -1746,7 +1620,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 8, + "ListOrderNo": 6, "SourceDbType": 6, "CultureName": "en", "DataType": "datetime", @@ -1834,7 +1708,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 7, + "EditOrderNo": 4, "EditGroupOrderNo": 1, "EditorType2": "dxDateBox", "ColSpan": 1, @@ -1872,7 +1746,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 9, + "ListOrderNo": 7, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -1974,7 +1848,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 8, + "EditOrderNo": 6, "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", "ColSpan": 1, @@ -2012,7 +1886,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 10, + "ListOrderNo": 8, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -2114,7 +1988,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 9, + "EditOrderNo": 7, "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", "ColSpan": 1, @@ -2152,7 +2026,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 11, + "ListOrderNo": 9, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -2254,7 +2128,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 10, + "EditOrderNo": 8, "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", "ColSpan": 1, @@ -2292,7 +2166,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 12, + "ListOrderNo": 10, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -2394,7 +2268,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 11, + "EditOrderNo": 9, "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", "ColSpan": 1, @@ -2432,7 +2306,7 @@ "Visible": false, "IsActive": true, "Width": 0, - "ListOrderNo": 13, + "ListOrderNo": 11, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -2558,7 +2432,7 @@ "Visible": false, "IsActive": true, "Width": 0, - "ListOrderNo": 14, + "ListOrderNo": 12, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -2684,7 +2558,7 @@ "Visible": false, "IsActive": true, "Width": 0, - "ListOrderNo": 15, + "ListOrderNo": 13, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -2810,7 +2684,7 @@ "Visible": false, "IsActive": true, "Width": 0, - "ListOrderNo": 16, + "ListOrderNo": 14, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -2912,6 +2786,132 @@ "CreationTime": "0001-01-01T00:00:00", "CreatorId": null, "Id": "00000000-0000-0000-0000-000000000000" + }, + { + "EditType": null, + "ListFormCode": "App.Inventory.Receipt", + "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": "SourceDocument", + "CaptionName": "App.Listform.ListformField.SourceDocument", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 15, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Inventory.Receipt.Create", + "R": "App.Inventory.Receipt", + "U": "App.Inventory.Receipt.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": "dxTextBox", + "ColSpan": 1, + "EditorOptions": "{\"showClearButton\":true,\"maxLength\":128}", + "GridBoxOptions": null, + "TagBoxOptions": null, + "ImageUploadOptions": null, + "EditorScript": null, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" } ], "IsDeletedField": true, diff --git a/configs/seeds/wizard/Inventory_Stock.json b/configs/seeds/wizard/Inventory_Stock.json index 48a161b9..19c3bcce 100644 --- a/configs/seeds/wizard/Inventory_Stock.json +++ b/configs/seeds/wizard/Inventory_Stock.json @@ -24,8 +24,8 @@ "MenuTr": "Stok", "TitleEn": "Stock", "TitleTr": "Stok", - "DescEn": "Stock — on-hand quantity by branch › warehouse › location › product › lot, in the product unit (read only).\nWhere: Inventory › Stock. Only Mark as Done on a transfer changes it: incoming documents add to the destination location, outgoing ones deduct from the source location; external locations (vendors, customers) hold no stock.\nProducts without inventory tracking are not listed; quantity-tracked products have an empty lot. Use the Pivot view for warehouse × product totals. Related: Inventory › Product Moves.", - "DescTr": "Stok — şube › depo › konum › ürün › lot bazında eldeki miktar, ürünün biriminde (salt okunur).\nNerede: Envanter › Stok. Yalnız transferin Tamamla işlemi değiştirir: giriş belgesi hedef konuma ekler, çıkış belgesi kaynak konumdan düşer; dış konumlar (tedarikçi, müşteri) stok tutmaz.\nEnvanter takibi kapalı ürün listelenmez; miktara göre takipli üründe lot boştur. Depo × ürün toplamı için Pivot görünümü kullanılır. İlişkili: Envanter › Ürün Hareketleri.", + "DescEn": "Stock — on-hand quantity by branch › warehouse › location › product › lot, in the product unit (read only).\nWhere: Inventory › Stock. Only Validate on a transfer changes it: incoming documents add to the destination location, outgoing ones deduct from the source location; external locations (vendors, customers) hold no stock.\nProducts without inventory tracking are not listed; quantity-tracked products have an empty lot. Use the Pivot view for warehouse × product totals. Related: Inventory › Product Moves.", + "DescTr": "Stok — şube › depo › konum › ürün › lot bazında eldeki miktar, ürünün biriminde (salt okunur).\nNerede: Envanter › Stok. Yalnız transferin Doğrula işlemi değiştirir: giriş belgesi hedef konuma ekler, çıkış belgesi kaynak konumdan düşer; dış konumlar (tedarikçi, müşteri) stok tutmaz.\nEnvanter takibi kapalı ürün listelenmez; miktara göre takipli üründe lot boştur. Depo × ürün toplamı için Pivot görünümü kullanılır. İlişkili: Envanter › Ürün Hareketleri.", "Texts": [ { "Key": "App.Inventory.Widget.Products", diff --git a/configs/seeds/wizard/Inventory_StockMove.json b/configs/seeds/wizard/Inventory_StockMove.json index 18f19c8e..1e10d508 100644 --- a/configs/seeds/wizard/Inventory_StockMove.json +++ b/configs/seeds/wizard/Inventory_StockMove.json @@ -63,6 +63,12 @@ "En": "Id", "Tr": "Kimlik" }, + { + "FieldName": "PartnerId", + "CaptionName": "App.Inventory.Transfer.PartnerId", + "En": "Contact", + "Tr": "Kontak" + }, { "FieldName": "TransferId", "CaptionName": "App.Listform.ListformField.TransferId", @@ -105,18 +111,18 @@ "En": "Product", "Tr": "Ürün" }, - { - "FieldName": "LotNo", - "CaptionName": "App.Listform.ListformField.LotNo", - "En": "Lot/Serial Number", - "Tr": "Lot/Seri No" - }, { "FieldName": "DemandQuantity", "CaptionName": "App.Listform.ListformField.DemandQuantity", "En": "Demand", "Tr": "Talep" }, + { + "FieldName": "LotNo", + "CaptionName": "App.Listform.ListformField.LotNo", + "En": "Lot/Serial Number", + "Tr": "Lot/Seri No" + }, { "FieldName": "Quantity", "CaptionName": "App.Listform.ListformField.Quantity", @@ -153,12 +159,6 @@ "En": "Destination Location", "Tr": "Hedef Konum" }, - { - "FieldName": "PartnerId", - "CaptionName": "App.Inventory.Transfer.PartnerId", - "En": "Contact", - "Tr": "Kontak" - }, { "FieldName": "SourceDocument", "CaptionName": "App.Listform.ListformField.SourceDocument", @@ -485,7 +485,7 @@ "D": "App.Inventory.StockMove.Delete", "E": "App.Inventory.StockMove.Export", "I": "App.Inventory.StockMove.Import", - "N": "App.Inventory.StockMove.Note" + "N": null }, "CommandColumnDto": [ { @@ -547,7 +547,7 @@ "IsOrganizationUnit": false, "ListFormType": "List", "IsSubForm": false, - "ShowNote": true, + "ShowNote": false, "SubFormsListFormType": "Form", "SubFormsDto": [], "ExtraFilterDto": [], @@ -957,6 +957,132 @@ "CreatorId": null, "Id": "00000000-0000-0000-0000-000000000000" }, + { + "EditType": null, + "ListFormCode": "App.Inventory.StockMove", + "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": "PartnerId", + "CaptionName": "App.Inventory.Transfer.PartnerId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Adm_T_Contact WHERE TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Inventory.StockMove.Create", + "R": "App.Inventory.StockMove", + "U": "App.Inventory.StockMove.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.Inventory.StockMove", @@ -980,7 +1106,7 @@ "Visible": false, "IsActive": true, "Width": 0, - "ListOrderNo": 2, + "ListOrderNo": 3, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -1106,7 +1232,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 3, + "ListOrderNo": 4, "SourceDbType": 6, "CultureName": "en", "DataType": "datetime", @@ -1232,7 +1358,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 4, + "ListOrderNo": 5, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -1358,7 +1484,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 5, + "ListOrderNo": 6, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -1484,7 +1610,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 6, + "ListOrderNo": 7, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -1610,7 +1736,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 7, + "ListOrderNo": 8, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -1736,7 +1862,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 8, + "ListOrderNo": 9, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -1839,132 +1965,6 @@ "CreatorId": null, "Id": "00000000-0000-0000-0000-000000000000" }, - { - "EditType": null, - "ListFormCode": "App.Inventory.StockMove", - "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": "LotNo", - "CaptionName": "App.Listform.ListformField.LotNo", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": true, - "IsActive": true, - "Width": 0, - "ListOrderNo": 9, - "SourceDbType": 16, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.StockMove.Create", - "R": "App.Inventory.StockMove", - "U": "App.Inventory.StockMove.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.Inventory.StockMove", @@ -2091,6 +2091,132 @@ "CreatorId": null, "Id": "00000000-0000-0000-0000-000000000000" }, + { + "EditType": null, + "ListFormCode": "App.Inventory.StockMove", + "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": "LotNo", + "CaptionName": "App.Listform.ListformField.LotNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": true, + "ColumnCssClass": null, + "ColumnCssValue": null, + "BandName": null, + "ColumnFilterDto": { + "AllowFiltering": true, + "FilterOperations": null, + "SelectedFilterOperation": null, + "FilterValue": null + }, + "ColumnHeaderDto": { + "AllowHeaderFiltering": true, + "AllowSearch": false, + "DataSource": null, + "DataSourceString": "" + }, + "ColumnGroupingDto": { + "AllowGrouping": true, + "GroupIndex": null, + "AutoExpandGroup": false + }, + "ColumnCustomizationDto": { + "Fixed": false, + "FixedPosition": "left", + "AllowReordering": true + }, + "ColumnTotalSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Inventory.StockMove.Create", + "R": "App.Inventory.StockMove", + "U": "App.Inventory.StockMove.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.Inventory.StockMove", @@ -2847,132 +2973,6 @@ "CreatorId": null, "Id": "00000000-0000-0000-0000-000000000000" }, - { - "EditType": null, - "ListFormCode": "App.Inventory.StockMove", - "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": "PartnerId", - "CaptionName": "App.Inventory.Transfer.PartnerId", - "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], Name AS [Name] FROM Adm_T_Contact WHERE TenantId = '@TENANTID' ORDER BY Name" - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.StockMove.Create", - "R": "App.Inventory.StockMove", - "U": "App.Inventory.StockMove.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.Inventory.StockMove", @@ -3120,8 +3120,7 @@ "App.Inventory.StockMove.Update", "App.Inventory.StockMove.Delete", "App.Inventory.StockMove.Export", - "App.Inventory.StockMove.Import", - "App.Inventory.StockMove.Note" + "App.Inventory.StockMove.Import" ], "MenuCodes": [ "App.Inventory.StockMove" diff --git a/configs/seeds/wizard/Inventory_TransferApproval.json b/configs/seeds/wizard/Inventory_TransferApproval.json index 0919ed0c..d862bb32 100644 --- a/configs/seeds/wizard/Inventory_TransferApproval.json +++ b/configs/seeds/wizard/Inventory_TransferApproval.json @@ -33,8 +33,8 @@ "MenuTr": "Onay ve Teslim", "TitleEn": "Approval & Delivery", "TitleTr": "Onay ve Teslim", - "DescEn": "Approval & Delivery — source warehouse approval and receipt of an internal transfer (Approval & Delivery tab of Internal Transfers; read only).\nFields: source warehouse approval (No Approval Needed when the source location has no responsible), approval user / date / description (written by the workflow), received by and receipt date (written by Mark as Done).", - "DescTr": "Onay ve Teslim — iç transferin kaynak depo onayı ve teslimi (İç Transferler'in Onay ve Teslim sekmesi; salt okunur).\nAlanlar: kaynak depo onayı (kaynak konumun sorumlusu yoksa Onay Gerekmez), onaylayan / onay tarihi / açıklaması (iş akışı yazar), teslim alan ve teslim alma tarihi (Tamamla yazar)." + "DescEn": "Approval & Delivery — source warehouse approval and receipt of an internal transfer (Approval & Delivery tab of Internal Transfers; read only).\nFields: source warehouse approval (No Approval Needed when the source location has no responsible), approval user / date / description (written by the workflow), received by and receipt date (written by Validate).", + "DescTr": "Onay ve Teslim — iç transferin kaynak depo onayı ve teslimi (İç Transferler'in Onay ve Teslim sekmesi; salt okunur).\nAlanlar: kaynak depo onayı (kaynak konumun sorumlusu yoksa Onay Gerekmez), onaylayan / onay tarihi / açıklaması (iş akışı yazar), teslim alan ve teslim alma tarihi (Doğrula yazar)." }, "Groups": [ { diff --git a/configs/seeds/wizard/Inventory_TransferLine.json b/configs/seeds/wizard/Inventory_TransferLine.json index dad2c997..7aa0e639 100644 --- a/configs/seeds/wizard/Inventory_TransferLine.json +++ b/configs/seeds/wizard/Inventory_TransferLine.json @@ -33,8 +33,8 @@ "MenuTr": "Transfer Satırları", "TitleEn": "Transfer Lines", "TitleTr": "Transfer Satırları", - "DescEn": "Transfer Lines — product lines of receipts, deliveries and internal transfers.\nWhere: Operations tab of Inventory › Operations › Receipts, Deliveries and Internal Transfers.\nFields: product (unit comes from the product), description, demand, done quantity (filled by Mark as Ready, editable before Mark as Done), unit.\nRow buttons — shown only on lines of lot/serial tracked products: Details opens the lot/serial distribution (incoming lines type new numbers, outgoing lines select from the stock of the source location); Generate Lot/Serial (incoming lines of lot/serial tracked products, from the Inventory.LotNumber / Inventory.SerialNumber sequences) and Auto Assign (outgoing lines, first-in first-out from the source location). On lot/serial tracked lines the done quantity follows the total of the entered lots, and the Lots column lists them. Lines of done or cancelled documents cannot be changed.", - "DescTr": "Transfer Satırları — alım, teslimat ve iç transferlerin ürün satırları.\nNerede: Envanter › Operasyonlar › Alımlar, Teslimatlar ve İç Transferler ekranlarının Operasyonlar sekmesi.\nAlanlar: ürün (birim üründen gelir), açıklama, talep, yapılan miktar (Hazırla doldurur, Tamamla'dan önce değiştirilebilir), birim.\nSatır butonları — yalnız lot/seri takipli ürünün satırında görünür: Detaylar lot/seri dağılımını açar (giren satırda numara yazılır, çıkan satırda kaynak konumun stoğundan seçilir); Lot/Seri Oluştur (lot/seri takipli ürünün giriş satırı; Inventory.LotNumber / Inventory.SerialNumber numaratöründen) ve Otomatik Ata (çıkış satırı; kaynak konumdan ilk giren ilk çıkar). Lot/seri takipli satırda yapılan miktar girilen lotların toplamını izler; Lotlar kolonu seçilen lotları listeler. Tamamlanmış ya da iptal edilmiş belgenin satırı değiştirilemez.", + "DescEn": "Transfer Lines — product lines of receipts, deliveries and internal transfers.\nWhere: Operations tab of Inventory › Operations › Receipts, Deliveries and Internal Transfers.\nFields: product (unit comes from the product), description, demand, done quantity (filled by Mark as To Do, editable before Validate), unit.\nRow buttons — shown only on lines of lot/serial tracked products: Details opens the lot/serial distribution (incoming lines type new numbers, outgoing lines select from the stock of the source location); Generate Lot/Serial (incoming lines of lot/serial tracked products, from the Inventory.LotNumber / Inventory.SerialNumber sequences) and Auto Assign (outgoing lines, first-in first-out from the source location). On lot/serial tracked lines the done quantity follows the total of the entered lots, and the Lots column lists them. Lines of done or cancelled documents cannot be changed.", + "DescTr": "Transfer Satırları — alım, teslimat ve iç transferlerin ürün satırları.\nNerede: Envanter › Operasyonlar › Alımlar, Teslimatlar ve İç Transferler ekranlarının Operasyonlar sekmesi.\nAlanlar: ürün (birim üründen gelir), açıklama, talep, yapılan miktar (Yapılacak olarak işaretle doldurur, Doğrula'dan önce değiştirilebilir), birim.\nSatır butonları — yalnız lot/seri takipli ürünün satırında görünür: Detaylar lot/seri dağılımını açar (giren satırda numara yazılır, çıkan satırda kaynak konumun stoğundan seçilir); Lot/Seri Oluştur (lot/seri takipli ürünün giriş satırı; Inventory.LotNumber / Inventory.SerialNumber numaratöründen) ve Otomatik Ata (çıkış satırı; kaynak konumdan ilk giren ilk çıkar). Lot/seri takipli satırda yapılan miktar girilen lotların toplamını izler; Lotlar kolonu seçilen lotları listeler. Tamamlanmış ya da iptal edilmiş belgenin satırı değiştirilemez.", "Texts": [ { "Key": "App.Inventory.TransferLine.GenerateLots", @@ -50,11 +50,6 @@ "Key": "App.Inventory.TransferLine.Details", "En": "Details", "Tr": "Detaylar" - }, - { - "Key": "App.Inventory.TransferLineLot.Info", - "En": "Incoming goods: type the lot/serial numbers or use Generate Lot/Serial on the line. Outgoing goods: choose from the lots in the source location or use Auto Assign. The total must equal the done quantity.", - "Tr": "Girişte lot/seri numaraları yazılır ya da satırda Lot/Seri Oluştur kullanılır. Çıkışta kaynak konumdaki lotlardan seçilir ya da Otomatik Ata kullanılır. Toplam, yapılan miktara eşit olmalıdır." } ] }, @@ -1748,8 +1743,8 @@ "FieldName": "LotNumbers", "CaptionName": "App.Listform.ListformField.LotNumbers", "PlaceHolder": null, - "ReadOnly": true, - "Visible": true, + "ReadOnly": false, + "Visible": false, "IsActive": true, "Width": 0, "ListOrderNo": 8, @@ -2495,8 +2490,7 @@ "App.Inventory.TransferLine.Desc", "App.Inventory.TransferLine.GenerateLots", "App.Inventory.TransferLine.AssignLots", - "App.Inventory.TransferLine.Details", - "App.Inventory.TransferLineLot.Info" + "App.Inventory.TransferLine.Details" ], "PermissionGroupNames": [], "PermissionNames": [ diff --git a/configs/seeds/wizard/Inventory_TransferLineLot.json b/configs/seeds/wizard/Inventory_TransferLineLot.json index 530911de..fefeef85 100644 --- a/configs/seeds/wizard/Inventory_TransferLineLot.json +++ b/configs/seeds/wizard/Inventory_TransferLineLot.json @@ -33,8 +33,8 @@ "MenuTr": "Lot/Seri Numaraları", "TitleEn": "Lot/Serial Numbers", "TitleTr": "Lot/Seri Numaraları", - "DescEn": "Lot/Serial Numbers — lot or serial numbers of an incoming line (receipt, return of a delivery), opened with the Details button of the line.\nFields: lot/serial number (a new number is typed; or use Generate Lot/Serial on the line), quantity in the line unit.\nThe total must equal the done quantity of the line before Mark as Done; a serial-tracked product needs one row of 1 per serial. Outgoing lines open Lots from Stock instead. Lots of done or cancelled documents cannot be changed.", - "DescTr": "Lot/Seri Numaraları — stoğa giren satırın (alım, teslimat iadesi) lot ya da seri numaraları; satırdaki Detaylar butonuyla açılır.\nAlanlar: lot/seri no (yeni numara yazılır ya da satırda Lot/Seri Oluştur kullanılır), miktar (satırın biriminde).\nTamamla'dan önce toplam satırın yapılan miktarına eşit olmalıdır; seri takipli üründe her seri 1 adetlik ayrı satırdır. Stoktan çıkan satır bunun yerine Stoktan Lot Seçimi'ni açar. Tamamlanmış ya da iptal edilmiş belgenin lotları değiştirilemez." + "DescEn": "Lot/Serial Numbers — lot or serial numbers of an incoming line (receipt, return of a delivery), opened with the Details button of the line.\nFields: lot/serial number (a new number is typed; or use Generate Lot/Serial on the line), quantity in the line unit.\nThe total must equal the done quantity of the line before Validate; a serial-tracked product needs one row of 1 per serial. Outgoing lines open Lots from Stock instead. Lots of done or cancelled documents cannot be changed.", + "DescTr": "Lot/Seri Numaraları — stoğa giren satırın (alım, teslimat iadesi) lot ya da seri numaraları; satırdaki Detaylar butonuyla açılır.\nAlanlar: lot/seri no (yeni numara yazılır ya da satırda Lot/Seri Oluştur kullanılır), miktar (satırın biriminde).\nDoğrula'dan önce toplam satırın yapılan miktarına eşit olmalıdır; seri takipli üründe her seri 1 adetlik ayrı satırdır. Stoktan çıkan satır bunun yerine Stoktan Lot Seçimi'ni açar. Tamamlanmış ya da iptal edilmiş belgenin lotları değiştirilemez." }, "Groups": [ { @@ -376,7 +376,7 @@ "D": "App.Inventory.TransferLineLot.Delete", "E": "App.Inventory.TransferLineLot.Export", "I": "App.Inventory.TransferLineLot.Import", - "N": "App.Inventory.TransferLineLot.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -1227,8 +1227,7 @@ "App.Inventory.TransferLineLot.Update", "App.Inventory.TransferLineLot.Delete", "App.Inventory.TransferLineLot.Export", - "App.Inventory.TransferLineLot.Import", - "App.Inventory.TransferLineLot.Note" + "App.Inventory.TransferLineLot.Import" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/Inventory_TransferLineLotStock.json b/configs/seeds/wizard/Inventory_TransferLineLotStock.json index 09c2e1f8..eb3aabb1 100644 --- a/configs/seeds/wizard/Inventory_TransferLineLotStock.json +++ b/configs/seeds/wizard/Inventory_TransferLineLotStock.json @@ -33,8 +33,8 @@ "MenuTr": "Stoktan Lot Seçimi", "TitleEn": "Lots from Stock", "TitleTr": "Stoktan Lot Seçimi", - "DescEn": "Lots from Stock — every lot/serial in stock at the source location of an outgoing line (delivery, internal transfer, return of a receipt), opened with the Details button of the line.\nColumns: select, lot/serial number, in date, on hand (in the line unit), selected quantity, unit.\nTicking Select fills Selected Quantity with the quantity on hand; it can be lowered but not raised above the stock of the lot; unticking removes the lot. Changes are kept with Save Changes. Auto Assign on the line fills first-in first-out. The total must equal the done quantity before Mark as Done. Lots of done or cancelled documents cannot be changed.", - "DescTr": "Stoktan Lot Seçimi — stoktan çıkan satırın (teslimat, iç transfer, alım iadesi) kaynak konumundaki bütün lot/seriler; satırdaki Detaylar butonuyla açılır.\nKolonlar: seç, lot/seri no, giriş tarihi, eldeki miktar (satırın biriminde), seçilen miktar, birim.\nSeç işaretlenince Seçilen Miktar eldeki miktarla dolar; azaltılabilir, lotun stoğunun üstüne çıkamaz; işaret kaldırılınca lot satırdan çıkar. Değişiklikler Değişiklikleri Kaydet ile yazılır. Satırdaki Otomatik Ata ilk giren ilk çıkar kuralıyla doldurur. Tamamla'dan önce toplam yapılan miktara eşit olmalıdır. Tamamlanmış ya da iptal edilmiş belgenin lotları değiştirilemez." + "DescEn": "Lots from Stock — every lot/serial in stock at the source location of an outgoing line (delivery, internal transfer, return of a receipt), opened with the Details button of the line.\nColumns: select, lot/serial number, in date, on hand (in the line unit), selected quantity, unit.\nTicking Select fills Selected Quantity with the quantity on hand; it can be lowered but not raised above the stock of the lot; unticking removes the lot. Changes are kept with Save Changes. Auto Assign on the line fills first-in first-out. The total must equal the done quantity before Validate. Lots of done or cancelled documents cannot be changed.", + "DescTr": "Stoktan Lot Seçimi — stoktan çıkan satırın (teslimat, iç transfer, alım iadesi) kaynak konumundaki bütün lot/seriler; satırdaki Detaylar butonuyla açılır.\nKolonlar: seç, lot/seri no, giriş tarihi, eldeki miktar (satırın biriminde), seçilen miktar, birim.\nSeç işaretlenince Seçilen Miktar eldeki miktarla dolar; azaltılabilir, lotun stoğunun üstüne çıkamaz; işaret kaldırılınca lot satırdan çıkar. Değişiklikler Değişiklikleri Kaydet ile yazılır. Satırdaki Otomatik Ata ilk giren ilk çıkar kuralıyla doldurur. Doğrula'dan önce toplam yapılan miktara eşit olmalıdır. Tamamlanmış ya da iptal edilmiş belgenin lotları değiştirilemez." }, "Groups": [ { @@ -340,7 +340,7 @@ "D": "App.Inventory.TransferLineLotStock.Delete", "E": "App.Inventory.TransferLineLotStock.Export", "I": "App.Inventory.TransferLineLotStock.Import", - "N": "App.Inventory.TransferLineLotStock.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -1667,8 +1667,7 @@ "App.Inventory.TransferLineLotStock.Update", "App.Inventory.TransferLineLotStock.Delete", "App.Inventory.TransferLineLotStock.Export", - "App.Inventory.TransferLineLotStock.Import", - "App.Inventory.TransferLineLotStock.Note" + "App.Inventory.TransferLineLotStock.Import" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/Prc_MaterialRequest.json b/configs/seeds/wizard/Prc_MaterialRequest.json index d203808f..42b6ffbf 100644 --- a/configs/seeds/wizard/Prc_MaterialRequest.json +++ b/configs/seeds/wizard/Prc_MaterialRequest.json @@ -19,7 +19,7 @@ "MenuParentCode": "App.Prc.MaterialRequests", "MenuParentIcon": "FcList", "MenuCode": "App.Prc.MaterialRequest", - "MenuOrder": 5, + "MenuOrder": 6, "MenuUrl": "/admin/list/App.Prc.MaterialRequest", "MenuIcon": "FcDocument" }, @@ -32,19 +32,14 @@ "MenuTr": "Tüm Talepler", "TitleEn": "All Material Requests", "TitleTr": "Tüm Talepler", - "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, branch, 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 › Talepler › Tüm Talepler.\nAlanlar: her satır bir talep kalemidir — talep başlığı (talep no, öncelik, talep eden, şube, 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.", + "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, branch, department, warehouse and location, request date, general description, approval status / approver / date / description) next to the line (product, quantity, unit, required date, reason, delivered quantity, 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 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 › Talepler › Tüm Talepler.\nAlanlar: her satır bir talep kalemidir — talep başlığı (talep no, öncelik, talep eden, şube, departman, depo ve konum, talep tarihi, genel açıklama, onay durumu / onaylayan / tarih / açıklama) ile kalemin bilgileri (ürün, miktar, birim, termin tarihi, talep nedeni, teslim edilen miktar, 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ı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", "En": "Material Request", "Tr": "Malzeme Talebi" }, - { - "Key": "App.Prc.MaterialRequest.Group.Approval", - "En": "Approval / Rejection", - "Tr": "Onay / Red Bilgileri" - }, { "Key": "App.Prc.MaterialRequest.Status.DeptApproval", "En": "Department Approval", @@ -85,8 +80,8 @@ { "FieldName": "Priority", "CaptionName": "App.Listform.ListformField.Priority", - "En": "Priority (0-3)", - "Tr": "Öncelik (0-3)" + "En": "Priority", + "Tr": "Öncelik" }, { "FieldName": "RequesterUserId", @@ -122,7 +117,7 @@ "FieldName": "RequestDate", "CaptionName": "App.Listform.ListformField.RequestDate", "En": "Request Date", - "Tr": "Talep Tarihi" + "Tr": "İstek Tarihi" }, { "FieldName": "Description", @@ -175,19 +170,13 @@ { "FieldName": "UomId", "CaptionName": "App.Listform.ListformField.UomId", - "En": "Unit", + "En": "Uom", "Tr": "Birim" }, - { - "FieldName": "FulfillmentMethod", - "CaptionName": "App.Listform.ListformField.FulfillmentMethod", - "En": "Fulfilment", - "Tr": "Karşılama Şekli" - }, { "FieldName": "DueDate", - "CaptionName": "App.Listform.ListformField.DueDate", - "En": "Due Date", + "CaptionName": "App.Listform.ListformField.RequiredDate", + "En": "Required Date", "Tr": "Termin Tarihi" }, { @@ -202,12 +191,6 @@ "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", @@ -239,7 +222,7 @@ "InsertBeforeCommand": 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", + "UpdateCommand": "UPDATE \"Prc_T_MaterialRequestItem\" SET \"LineStatus\" = @LineStatus, \"LastModificationTime\" = @LastModificationTime, \"LastModifierId\" = @LastModifierId WHERE \"Id\" IN @Id AND \"TenantId\" IS NOT DISTINCT FROM @TenantId", "UpdateBeforeCommand": null, "UpdateAfterCommand": null, "UpdateFieldsDefaultValueDto": [ @@ -497,7 +480,7 @@ "D": "App.Prc.MaterialRequest.Delete", "E": "App.Prc.MaterialRequest.Export", "I": "App.Prc.MaterialRequest.Import", - "N": "App.Prc.MaterialRequest.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -3182,140 +3165,14 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "FulfillmentMethod", - "CaptionName": "App.Listform.ListformField.FulfillmentMethod", + "FieldName": "DueDate", + "CaptionName": "App.Listform.ListformField.RequiredDate", "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": 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": 20, "SourceDbType": 6, "CultureName": "en", "DataType": "datetime", @@ -3441,7 +3298,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 21, + "ListOrderNo": 20, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -3567,7 +3424,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 22, + "ListOrderNo": 21, "SourceDbType": 7, "CultureName": "en", "DataType": "number", @@ -3670,132 +3527,6 @@ "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": 23, - "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": 1, - "EditorType2": "dxSelectBox", - "ColSpan": 1, - "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", @@ -3819,7 +3550,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 24, + "ListOrderNo": 22, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -3921,7 +3652,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 2, + "EditOrderNo": 1, "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", "ColSpan": 1, @@ -3954,8 +3685,7 @@ "App.Prc.MaterialRequest.Update", "App.Prc.MaterialRequest.Delete", "App.Prc.MaterialRequest.Export", - "App.Prc.MaterialRequest.Import", - "App.Prc.MaterialRequest.Note" + "App.Prc.MaterialRequest.Import" ], "MenuCodes": [ "App.Prc.MaterialRequest" diff --git a/configs/seeds/wizard/Prc_MaterialRequestDeptApproval.json b/configs/seeds/wizard/Prc_MaterialRequestDeptApproval.json index dc0d3465..e1f78468 100644 --- a/configs/seeds/wizard/Prc_MaterialRequestDeptApproval.json +++ b/configs/seeds/wizard/Prc_MaterialRequestDeptApproval.json @@ -40,11 +40,6 @@ "En": "Material Request", "Tr": "Malzeme Talebi" }, - { - "Key": "App.Prc.MaterialRequest.Group.Approval", - "En": "Approval / Rejection", - "Tr": "Onay / Red Bilgileri" - }, { "Key": "App.Prc.MaterialRequest.Status.DeptApproval", "En": "Department Approval", diff --git a/configs/seeds/wizard/Prc_MaterialRequestLine.json b/configs/seeds/wizard/Prc_MaterialRequestLine.json index 66223199..225b8df9 100644 --- a/configs/seeds/wizard/Prc_MaterialRequestLine.json +++ b/configs/seeds/wizard/Prc_MaterialRequestLine.json @@ -33,19 +33,9 @@ "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 › 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 › Talepler › 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ı).", + "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), required date, line status (Waiting / Done / Cancelled), request reason, delivered quantity (read-only).\nRules: lines can be added, changed or deleted only while the request is a draft; to change a sent request, move it back to Draft, edit it and send it for approval again. How a line is fulfilled (purchase or internal transfer) and who is responsible are decided in Planning: the user who plans becomes the purchasing responsible. Changing line statuses recalculates the request status (Partially Done / Done).", + "DescTr": "Talep Satırları — malzeme talebinde istenen ürünler.\nNerede: Satınalma › Talepler › 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), termin tarihi, satır durumu (Bekliyor / Tamamlandı / İptal), talep nedeni, teslim edilen miktar (salt okunur).\nKurallar: satır yalnız talep Taslak iken eklenip değiştirilip silinebilir; onaya gönderilmiş talebin satırı için talep Taslak adımına alınır, düzenlenir ve yeniden onaya gönderilir. Kalemin nasıl karşılanacağı (satınalma ya da iç transfer) ve sorumlusu Planlama'da belirlenir: planlamayı yapan kullanıcı satınalma sorumlusudur. Satır durumları değişince talebin durumu yeniden hesaplanır (Kısmi Tamamlandı / Tamamlandı).", "Texts": [ - { - "Key": "App.StaticLookup.Purchase", - "En": "Purchasing", - "Tr": "Satınalma" - }, - { - "Key": "App.StaticLookup.WarehouseTransfer", - "En": "Warehouse Transfer", - "Tr": "Depodan Transfer" - }, { "Key": "App.Prc.MaterialRequest.LineStatus.Waiting", "En": "Waiting", @@ -93,19 +83,13 @@ { "FieldName": "UomId", "CaptionName": "App.Listform.ListformField.UomId", - "En": "Unit", + "En": "Uom", "Tr": "Birim" }, - { - "FieldName": "FulfillmentMethod", - "CaptionName": "App.Listform.ListformField.FulfillmentMethod", - "En": "Fulfilment", - "Tr": "Karşılama Şekli" - }, { "FieldName": "DueDate", - "CaptionName": "App.Listform.ListformField.DueDate", - "En": "Due Date", + "CaptionName": "App.Listform.ListformField.RequiredDate", + "En": "Required Date", "Tr": "Termin Tarihi" }, { @@ -120,12 +104,6 @@ "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", @@ -150,7 +128,7 @@ "SeedSyncUpdate": false, "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;", + "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: önce talebi Taslak adımına alın, düzenleyip yeniden onaya gönderin.', 1;", "DeleteAfterCommand": null, "DeleteFieldsDefaultValueDto": [ { @@ -169,7 +147,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;", + "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: önce talebi Taslak adımına alın, düzenleyip yeniden onaya gönderin.', 1;", "InsertAfterCommand": null, "InsertFieldsDefaultValueDto": [ { @@ -202,7 +180,7 @@ } ], "UpdateCommand": null, - "UpdateBeforeCommand": null, + "UpdateBeforeCommand": "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 50005, N'Onaya gönderilmiş talebin satırı değiştirilemez: önce talebi Taslak adımına alın, düzenleyip yeniden onaya gönderin.', 1;", "UpdateAfterCommand": null, "UpdateFieldsDefaultValueDto": [ { @@ -221,13 +199,6 @@ } ], "FormFieldsDefaultValueDto": [ - { - "FieldName": "FulfillmentMethod", - "FieldDbType": 16, - "Value": "Purchase", - "CustomValueType": 1, - "SqlQuery": null - }, { "FieldName": "DeliveredQuantity", "FieldDbType": 7, @@ -248,13 +219,6 @@ "Value": "1", "CustomValueType": 1, "SqlQuery": "" - }, - { - "FieldName": "PurchaseResponsibleUserId", - "FieldDbType": 9, - "Value": "@USERID", - "CustomValueType": 2, - "SqlQuery": "" } ], "WidgetsDto": [], @@ -1118,6 +1082,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1256,6 +1222,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1394,6 +1362,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1458,152 +1428,14 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "FulfillmentMethod", - "CaptionName": "App.Listform.ListformField.FulfillmentMethod", + "FieldName": "DueDate", + "CaptionName": "App.Listform.ListformField.RequiredDate", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, "ListOrderNo": 6, - "SourceDbType": 16, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 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": [ - { - "Type": "required", - "Message": null, - "IgnoreEmptyValue": false, - "Reevaluate": true, - "ComparisonType": "", - "Pattern": "", - "Max": null, - "Min": null, - "Trim": true - } - ], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Prc.MaterialRequestLine.Create", - "R": "App.Prc.MaterialRequestLine", - "U": "App.Prc.MaterialRequestLine.Update", - "E": true, - "I": true - }, - "CanRead": false, - "CanCreate": false, - "CanUpdate": false, - "CanExport": false, - "DefaultValue": null, - "DefaultValueType": 0, - "PivotSettingsDto": { - "IsPivot": true, - "Expanded": false, - "SortOrder": "asc", - "Area": "filter", - "Format": null, - "SummaryType": null, - "GroupInterval": "", - "WordWrapEnabled": false - }, - "Alignment": "left", - "Format": null, - "EditOrderNo": 4, - "EditGroupOrderNo": 1, - "EditorType2": "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.MaterialRequestLine", - "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": 7, "SourceDbType": 6, "CultureName": "en", "DataType": "datetime", @@ -1670,6 +1502,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1703,7 +1537,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 5, + "EditOrderNo": 4, "EditGroupOrderNo": 1, "EditorType2": "dxDateBox", "ColSpan": 1, @@ -1741,7 +1575,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 8, + "ListOrderNo": 7, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -1808,6 +1642,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -1879,7 +1715,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 9, + "ListOrderNo": 8, "SourceDbType": 7, "CultureName": "en", "DataType": "number", @@ -1982,132 +1818,6 @@ "CreatorId": null, "Id": "00000000-0000-0000-0000-000000000000" }, - { - "EditType": null, - "ListFormCode": "App.Prc.MaterialRequestLine", - "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": 10, - "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' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name, Surname" - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Prc.MaterialRequestLine.Create", - "R": "App.Prc.MaterialRequestLine", - "U": "App.Prc.MaterialRequestLine.Update", - "E": true, - "I": true - }, - "CanRead": false, - "CanCreate": false, - "CanUpdate": false, - "CanExport": false, - "DefaultValue": null, - "DefaultValueType": 0, - "PivotSettingsDto": { - "IsPivot": true, - "Expanded": false, - "SortOrder": "asc", - "Area": "filter", - "Format": null, - "SummaryType": null, - "GroupInterval": "", - "WordWrapEnabled": false - }, - "Alignment": "left", - "Format": null, - "EditOrderNo": 7, - "EditGroupOrderNo": 1, - "EditorType2": "dxSelectBox", - "ColSpan": 1, - "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.MaterialRequestLine", @@ -2131,7 +1841,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 11, + "ListOrderNo": 9, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -2198,6 +1908,8 @@ "IgnoreEmptyValue": false, "Reevaluate": true, "ComparisonType": "", + "ComparisonTarget": null, + "ValidationCallback": null, "Pattern": "", "Max": null, "Min": null, @@ -2231,7 +1943,7 @@ }, "Alignment": "left", "Format": null, - "EditOrderNo": 8, + "EditOrderNo": 5, "EditGroupOrderNo": 1, "EditorType2": "dxSelectBox", "ColSpan": 1, @@ -2254,16 +1966,14 @@ "App.Prc.MaterialRequestLine", "App.Prc.MaterialRequestLine.Title", "App.Prc.MaterialRequestLine.Desc", - "App.StaticLookup.WarehouseTransfer", "App.Prc.MaterialRequest.LineStatus.Waiting", "App.Prc.MaterialRequest.LineStatus.Done", "App.Prc.MaterialRequest.LineStatus.Cancelled", "App.Listform.ListformField.MaterialRequestId", - "App.Listform.ListformField.FulfillmentMethod", "App.Listform.ListformField.RequestReason", "App.Listform.ListformField.DeliveredQuantity", - "App.Listform.ListformField.PurchaseResponsibleUserId", - "App.Listform.ListformField.LineStatus" + "App.Listform.ListformField.LineStatus", + "App.Listform.ListformField.RequiredDate" ], "PermissionGroupNames": [], "PermissionNames": [ diff --git a/configs/seeds/wizard/Prc_MaterialRequestPlan.json b/configs/seeds/wizard/Prc_MaterialRequestPlan.json new file mode 100644 index 00000000..a7cd6c05 --- /dev/null +++ b/configs/seeds/wizard/Prc_MaterialRequestPlan.json @@ -0,0 +1,3688 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "Prc_MaterialRequestPlan", + "WizardCode": "App.Prc.MaterialRequestPlan", + "SeededAt": "2026-10-13T12:00:10+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Prc", + "ModuleId": "Prc", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Prc", + "Icon": "FcShop", + "En": "Purchasing", + "Tr": "Satınalma" + } + ], + "MenuParentCode": "App.Prc.MaterialRequests", + "MenuParentIcon": "FcList", + "MenuCode": "App.Prc.MaterialRequestPlan", + "MenuOrder": 4, + "MenuUrl": "/admin/list/App.Prc.MaterialRequestPlan", + "MenuIcon": "FcPlanner" + }, + "Language": { + "MenuParentEn": "Material Requests", + "MenuParentTr": "Talepler", + "PermissionGroupEn": "Purchasing", + "PermissionGroupTr": "Satınalma", + "MenuEn": "Planning", + "MenuTr": "Planlama", + "TitleEn": "Purchase Planning", + "TitleTr": "Satınalma Planlama", + "DescEn": "Planning — the purchasing team decides how each approved request line is fulfilled: bought (RFQ) or moved from stock (internal transfer).\nWhere: Purchasing › Requests › Planning, right below Awaiting Purchasing Approval. Waiting lines of approved requests with a quantity left to plan are listed; a line stays here until nothing is left.\nFields: request no, priority, department, branch, warehouse and destination location, product and category, requested quantity and unit, required date and due state (overdue / within 7 days / later), purchase share, transfer share, quantity to plan, draft plan (distributed but not confirmed), stock in all internal locations, request reason, requester, request date.\nDetail: selecting a row opens the product's Warehouse Stocks, Suppliers and Last Purchases tabs below the list.\nPlan (row button): opens the plan dialog (on the Internal Transfer tab when there is stock, otherwise Purchasing) — Internal Transfer (locations with stock: on hand, reserved, free) and Purchasing (suppliers: price, lead time, last purchase) tabs; Plan Quantity typed on any number of rows makes a draft Fulfilment Plan, so one line can be met by several methods. Confirm turns the draft into documents in one go: the line is added to the source location's draft internal transfer to the request's location (or a new one) and to the supplier's draft RFQ for the request's branch and warehouse (or a new one); the user who confirms becomes the purchasing responsible (RFQ buyer, transfer responsible); RFQ → order → receipt continues from there. A line fully covered by transfers with no purchase share closes. If an RFQ or transfer is cancelled or its row deleted, the quantity returns here.\nCards: lines to plan, overdue, within 7 days, draft planned.\nRelated: Awaiting Purchasing Approval, Plan Tracking, RFQs, Inventory › Internal Transfers.", + "DescTr": "Planlama — satınalma ekibi onaylanmış her talep kaleminin nasıl karşılanacağına karar verir: satın alınır (teklif talebi) ya da stoktan taşınır (iç transfer).\nNerede: Satınalma › Talepler › Planlama, Satınalma Onayı Bekleyenler'in hemen altında. Onaylanmış taleplerin Bekliyor durumundaki ve planlanacak miktarı kalan kalemleri listelenir; kalem, kalanı bitene kadar burada kalır.\nAlanlar: talep no, öncelik, departman, şube, depo ve hedef konum, ürün ve kategori, talep miktarı ve birim, termin tarihi ve termin durumu (geciken / 7 gün içinde / daha sonra), satınalma payı, transfer payı, planlanacak miktar, taslak plan (dağıtılmış ama onaylanmamış), bütün iç konumlardaki stok, talep nedeni, talep eden, talep tarihi.\nDetay: satır seçilince listenin altında ürünün Depo Stokları, Tedarikçiler ve Son Alımlar sekmeleri açılır.\nPlanla (satır butonu): plan diyaloğunu açar (stok varsa İç Transfer, yoksa Satınalma sekmesiyle) — İç Transfer (stoğu olan konumlar: eldeki, ayrılan, serbest) ve Satınalma (tedarikçiler: fiyat, teslim süresi, son alım) sekmeleri; istenen sayıda satıra yazılan Plan Miktarı taslak Karşılama Planı'nı oluşturur, böylece bir kalem birden çok yöntemle karşılanır. Onayla taslağı tek seferde belgeye çevirir: kalem kaynak konumdan talebin konumuna giden taslak iç transfere (yoksa yenisine) ve tedarikçinin talebin şubesi ve deposu için taslak teklif talebine (yoksa yenisine) eklenir; onaylayan kullanıcı satınalma sorumlusu olur (teklif talebinin alıcısı, transferin sorumlusu); teklif → sipariş → alım oradan sürer. Kalanın tamamı transferle karşılanan, satınalma payı olmayan kalem kapanır. Teklif ya da transfer iptal edilir veya satırı silinirse miktar buraya geri döner.\nKartlar: planlanacak kalem, geciken, 7 gün içinde, taslak planlı.\nİlişkili: Satınalma Onayı Bekleyenler, Plan Takibi, Teklif Talepleri, Envanter › İç Transferler.", + "Texts": [ + { + "Key": "App.StaticLookup.Overdue", + "En": "Overdue", + "Tr": "Geciken" + }, + { + "Key": "App.StaticLookup.Within7Days", + "En": "Within 7 days", + "Tr": "7 gün içinde" + }, + { + "Key": "App.StaticLookup.Later", + "En": "Later", + "Tr": "Daha sonra" + }, + { + "Key": "App.Prc.MaterialRequestPlan.Plan", + "En": "Plan", + "Tr": "Planla" + }, + { + "Key": "App.Prc.MaterialRequestPlan.Info", + "En": "1) Suggest builds the plan for you: stock first (the delivery location, then the location with the most free stock), the rest as purchasing from the best supplier (lowest price, else the latest purchase); Suggest & Confirm also confirms it at once. Nothing is planned until you press a button. 2) To change it, type into the highlighted Plan Quantity cell (saved when you leave the cell), press Plan All on a row, or select rows and press Plan Selected; each row takes the most it allows (Max). Stock on the request's own delivery location is fulfilled from stock without a transfer. 3) Check the Fulfilment Plan below (a row can be deleted there) and press Confirm: internal transfers and RFQs are created.", + "Tr": "1) Öner planı sizin için kurar: önce stok (talebin teslim konumu, sonra serbest stoğu en çok olan konum), kalan kısım en uygun tedarikçiden (en düşük fiyat, fiyat yoksa en son alım) satınalma; Öner ve Onayla bunu hemen onaylar. Siz bir butona basmadan hiçbir şey planlanmaz. 2) Değiştirmek için vurgulu Plan Miktarı hücresine yazın (hücreden çıkınca kaydedilir), satırdaki Tümünü Planla'ya basın ya da satırları seçip Seçilenleri Planla'ya basın; her satır alabileceği en fazla miktarı (En Fazla) alır. Talebin kendi teslim konumundaki stok transfer açmadan stoktan karşılanır. 3) Alttaki Karşılama Planı'nı kontrol edin (satır oradan silinebilir) ve Onayla'ya basın: iç transferler ve teklif talepleri oluşur." + }, + { + "Key": "App.Prc.MaterialRequestPlan.Confirmed", + "En": "Plan confirmed; the internal transfers and RFQs were created.", + "Tr": "Plan onaylandı; iç transferler ve teklif talepleri oluşturuldu." + }, + { + "Key": "App.Prc.MaterialRequestPlan.Widget.Draft", + "En": "Draft Planned", + "Tr": "Taslak Planlı" + }, + { + "Key": "App.Prc.MaterialRequestPlan.PlanQuantityMax", + "En": "Plan Quantity cannot exceed Max (remaining quantity less the other draft rows; on Internal Transfer also free stock).", + "Tr": "Plan Miktarı En Fazla değerini aşamaz (planlanacak kalandan diğer taslak satırlar düşülür; İç Transfer'de serbest stok da sınırdır)." + }, + { + "Key": "App.Prc.MaterialRequestPlan.TakeMax", + "En": "Plan All", + "Tr": "Tümünü Planla" + }, + { + "Key": "App.Prc.MaterialRequestPlan.Suggest", + "En": "Suggest", + "Tr": "Öner" + }, + { + "Key": "App.Prc.MaterialRequestPlan.PlanSelected", + "En": "Plan Selected", + "Tr": "Seçilenleri Planla" + }, + { + "Key": "App.Prc.MaterialRequestPlan.SuggestConfirm", + "En": "Suggest & Confirm", + "Tr": "Öner ve Onayla" + }, + { + "Key": "App.Prc.MaterialRequestPlan.ResetDraft", + "En": "Reset Draft", + "Tr": "Taslağı Sıfırla" + } + ] + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "MaterialRequestId", + "CaptionName": "App.Listform.ListformField.MaterialRequestId", + "En": "Material Request", + "Tr": "Malzeme Talebi" + }, + { + "FieldName": "RequestNo", + "CaptionName": "App.Listform.ListformField.RequestNo", + "En": "Request No", + "Tr": "Talep No" + }, + { + "FieldName": "Priority", + "CaptionName": "App.Listform.ListformField.Priority", + "En": "Priority", + "Tr": "Öncelik" + }, + { + "FieldName": "DepartmentId", + "CaptionName": "App.Listform.ListformField.Department", + "En": "Department", + "Tr": "Departman" + }, + { + "FieldName": "BranchId", + "CaptionName": "App.Listform.ListformField.BranchId", + "En": "Branch Name", + "Tr": "Şube Adı" + }, + { + "FieldName": "WarehouseId", + "CaptionName": "App.Listform.ListformField.WarehouseId", + "En": "Warehouse", + "Tr": "Depo" + }, + { + "FieldName": "LocationId", + "CaptionName": "App.Listform.ListformField.DestinationLocationId", + "En": "Destination Location", + "Tr": "Hedef Konum" + }, + { + "FieldName": "ProductId", + "CaptionName": "App.Listform.ListformField.ProductId", + "En": "Product", + "Tr": "Ürün" + }, + { + "FieldName": "CategoryId", + "CaptionName": "App.Listform.ListformField.Category", + "En": "Category", + "Tr": "Kategori" + }, + { + "FieldName": "Quantity", + "CaptionName": "App.Listform.ListformField.Quantity", + "En": "Quantity", + "Tr": "Miktar" + }, + { + "FieldName": "UomId", + "CaptionName": "App.Listform.ListformField.UomId", + "En": "Uom", + "Tr": "Birim" + }, + { + "FieldName": "DueDate", + "CaptionName": "App.Listform.ListformField.RequiredDate", + "En": "Required Date", + "Tr": "Termin Tarihi" + }, + { + "FieldName": "DueState", + "CaptionName": "App.Listform.ListformField.DueState", + "En": "Due Status", + "Tr": "Termin Durumu" + }, + { + "FieldName": "PurchaseQuantity", + "CaptionName": "App.Listform.ListformField.PurchaseQuantity", + "En": "Purchase Share", + "Tr": "Satınalma Payı" + }, + { + "FieldName": "TransferQuantity", + "CaptionName": "App.Listform.ListformField.TransferQuantity", + "En": "Transfer Share", + "Tr": "Transfer Payı" + }, + { + "FieldName": "RemainingQuantity", + "CaptionName": "App.Listform.ListformField.RemainingQuantity", + "En": "To Plan", + "Tr": "Planlanacak" + }, + { + "FieldName": "StockQuantity", + "CaptionName": "App.Listform.ListformField.StockQuantity", + "En": "Stock", + "Tr": "Stok" + }, + { + "FieldName": "DraftQuantity", + "CaptionName": "App.Listform.ListformField.DraftQuantity", + "En": "Draft Plan", + "Tr": "Taslak Plan" + }, + { + "FieldName": "RequestReason", + "CaptionName": "App.Listform.ListformField.RequestReason", + "En": "Request Reason", + "Tr": "Talep Nedeni" + }, + { + "FieldName": "RequesterUserId", + "CaptionName": "App.Listform.ListformField.RequesterUserId", + "En": "Requester", + "Tr": "Talep Eden" + }, + { + "FieldName": "RequestDate", + "CaptionName": "App.Listform.ListformField.RequestDate", + "En": "Request Date", + "Tr": "İstek Tarihi" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 9, + "TableName": null, + "DefaultFilter": "\"IsDeleted\" = 'false'", + "SelectCommand": "Prc_V_MaterialRequestPlan", + "SelectCommandType": 2, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": null, + "DeleteBeforeCommand": null, + "DeleteAfterCommand": null, + "DeleteFieldsDefaultValueDto": [], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": null, + "InsertFieldsDefaultValueDto": [], + "UpdateCommand": "EXEC Prc_P_MaterialRequestPlanConfirm @Id, @TenantId, @LastModifierId", + "UpdateBeforeCommand": null, + "UpdateAfterCommand": null, + "UpdateFieldsDefaultValueDto": [ + { + "FieldName": "LastModificationTime", + "FieldDbType": 6, + "Value": "@NOW", + "CustomValueType": 2, + "SqlQuery": "" + }, + { + "FieldName": "LastModifierId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": "" + }, + { + "FieldName": "Id", + "FieldDbType": 9, + "Value": "@ID", + "CustomValueType": 2, + "SqlQuery": "" + } + ], + "FormFieldsDefaultValueDto": [], + "WidgetsDto": [ + { + "ColGap": 3, + "ColSpan": 3, + "SqlQuery": "SELECT 'App.Widget.Total' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Prc.MaterialRequestPlan' AS \"SubTitle\", 'FaListUl' AS \"Icon\" FROM \"Prc_V_MaterialRequestPlan\" WHERE \"TenantId\" = '@TENANTID' UNION ALL SELECT 'App.StaticLookup.Overdue' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'red' AS \"Color\", 'App.Prc.MaterialRequestPlan' AS \"SubTitle\", 'FaClock' AS \"Icon\" FROM \"Prc_V_MaterialRequestPlan\" WHERE \"TenantId\" = '@TENANTID' AND \"DueState\" = 'Late' UNION ALL SELECT 'App.StaticLookup.Within7Days' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'orange' AS \"Color\", 'App.Prc.MaterialRequestPlan' AS \"SubTitle\", 'FaHourglassHalf' AS \"Icon\" FROM \"Prc_V_MaterialRequestPlan\" WHERE \"TenantId\" = '@TENANTID' AND \"DueState\" = 'Week' UNION ALL SELECT 'App.Prc.MaterialRequestPlan.Widget.Draft' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'green' AS \"Color\", 'App.Prc.MaterialRequestPlan' AS \"SubTitle\", 'FaClipboardList' AS \"Icon\" FROM \"Prc_V_MaterialRequestPlan\" WHERE \"TenantId\" = '@TENANTID' AND \"DraftQuantity\" > 0", + "Title": "Title", + "Value": "Value", + "ValueClassName": "text-3xl", + "Color": "Color", + "Icon": "Icon", + "SubTitle": "SubTitle", + "OnClick": "", + "ClassName": "mb-3", + "IsActive": true + } + ], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Prc.MaterialRequestPlan", + "CultureName": "en", + "Name": "App.Prc.MaterialRequestPlan", + "KeyFieldName": "Id", + "Title": "App.Prc.MaterialRequestPlan.Title", + "SortMode": "single", + "PageSize": 10, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Prc.MaterialRequestPlan.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "500", + "WhiteSpace": "nowrap", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "single", + "AllowSelectAll": false, + "SelectAllMode": "allPages", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "popup", + "RefreshMode": "full", + "AllowUpdating": false, + "AllowDetail": false, + "AllowDeleting": false, + "AllowAllDeleting": false, + "AllowAdding": false, + "AllowDuplicate": false, + "OpenDetailAfterInsert": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Prc.MaterialRequestPlan.Title", + "ShowTitle": true, + "Width": 900, + "Height": 640, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [], + "PermissionDto": { + "C": "App.Prc.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.Update", + "D": "App.Prc.MaterialRequestPlan.Delete", + "E": "App.Prc.MaterialRequestPlan.Export", + "I": "App.Prc.MaterialRequestPlan.Import", + "N": null + }, + "CommandColumnDto": [ + { + "ButtonPosition": 0, + "AuthName": "App.Prc.MaterialRequestPlan.Update", + "Text": "App.Prc.MaterialRequestPlan.Plan", + "Hint": "App.Prc.MaterialRequestPlan.Plan", + "Icon": "", + "Url": null, + "UrlTarget": null, + "DialogName": null, + "DialogParameters": null, + "OnClick": "(() => { const r = (e && e.row && e.row.data); if (!r) return; dialog.setConfig({ component: 'MaterialRequestPlan', props: { itemId: r.Id, planListFormCode: 'App.Prc.MaterialRequestPlan', tabs: ['App.Prc.MaterialRequestPlanSource', 'App.Prc.MaterialRequestPlanVendor'], activeTab: r.StockQuantity > 0 ? 0 : 1, draftListFormCode: 'App.Prc.MaterialRequestPlanLine', resetText: 'App.Prc.MaterialRequestPlan.ResetDraft', info: 'App.Prc.MaterialRequestPlan.Info', suggest: { text: 'App.Prc.MaterialRequestPlan.Suggest', confirmText: 'App.Prc.MaterialRequestPlan.SuggestConfirm', listFormCode: 'App.Prc.MaterialRequestPlanLine' } }, onClose: () => e.component.refresh() }); })()", + "IsVisible": true, + "VisibleExpression": "(e) => !!e.row && !e.row.isEditing" + } + ], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Prc.MaterialRequestPlan", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": false, + "SubFormsListFormType": "List", + "SubFormsDto": [ + { + "TabType": "List", + "TabTitle": "App.Prc.MaterialRequestPlanStock", + "Code": "App.Prc.MaterialRequestPlanStock", + "IsRefresh": false, + "Relation": [ + { + "ParentFieldName": "ProductId", + "DbType": 9, + "ChildFieldName": "ProductId" + } + ] + }, + { + "TabType": "List", + "TabTitle": "App.Prc.MaterialRequestPlanSupplier", + "Code": "App.Prc.MaterialRequestPlanSupplier", + "IsRefresh": false, + "Relation": [ + { + "ParentFieldName": "ProductId", + "DbType": 9, + "ChildFieldName": "ProductId" + } + ] + }, + { + "TabType": "List", + "TabTitle": "App.Prc.MaterialRequestPlanLastPurchase", + "Code": "App.Prc.MaterialRequestPlanLastPurchase", + "IsRefresh": false, + "Relation": [ + { + "ParentFieldName": "ProductId", + "DbType": 9, + "ChildFieldName": "ProductId" + } + ] + } + ], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Prc.MaterialRequestPlan", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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.MaterialRequestPlan", + "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": 2, + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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.MaterialRequestPlan", + "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": "RequestNo", + "CaptionName": "App.Listform.ListformField.RequestNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": "Priority", + "CaptionName": "App.Listform.ListformField.Priority", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 11, + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "dxRating", + "ColSpan": 1, + "EditorOptions": "{\"min\":0,\"max\":3,\"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.MaterialRequestPlan", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "DepartmentId", + "CaptionName": "App.Listform.ListformField.Department", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": 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 Hr_T_Department WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": "BranchId", + "CaptionName": "App.Listform.ListformField.BranchId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 6, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": 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 Sas_T_Branch WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": "WarehouseId", + "CaptionName": "App.Listform.ListformField.WarehouseId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": 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(Code, ' - ', Name) AS [Name] FROM Inv_T_Warehouse WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Code" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": "LocationId", + "CaptionName": "App.Listform.ListformField.DestinationLocationId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "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": "WarehouseId", + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT l.Id AS [Key], CONCAT(w.Code, '/', l.Name) AS [Name] FROM Inv_T_Location l INNER JOIN Inv_T_Warehouse w ON w.Id = l.WarehouseId WHERE l.TenantId = '@TENANTID' ORDER BY w.Code, l.Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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.MaterialRequestPlan", + "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": 9, + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": "CategoryId", + "CaptionName": "App.Listform.ListformField.Category", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "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 Id AS [Key], Name AS [Name] FROM Inv_T_ProductCategory WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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.MaterialRequestPlan", + "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": 11, + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": 12, + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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.MaterialRequestPlan", + "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.RequiredDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 13, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 1, + "SortDirection": "asc", + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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\",\"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.MaterialRequestPlan", + "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": "DueState", + "CaptionName": "App.Listform.ListformField.DueState", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 14, + "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\":\"Late\",\"name\":\"App.StaticLookup.Overdue\"},{\"key\":\"Week\",\"name\":\"App.StaticLookup.Within7Days\"},{\"key\":\"Later\",\"name\":\"App.StaticLookup.Later\"}]" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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.MaterialRequestPlan", + "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": "PurchaseQuantity", + "CaptionName": "App.Listform.ListformField.PurchaseQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 15, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": "TransferQuantity", + "CaptionName": "App.Listform.ListformField.TransferQuantity", + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": "RemainingQuantity", + "CaptionName": "App.Listform.ListformField.RemainingQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 17, + "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": "sum", + "ValueFormat": "#,##0.##", + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": "{0}", + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": "StockQuantity", + "CaptionName": "App.Listform.ListformField.StockQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 18, + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": "DraftQuantity", + "CaptionName": "App.Listform.ListformField.DraftQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 19, + "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": "sum", + "ValueFormat": "#,##0.##", + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": "{0}", + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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, + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "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.MaterialRequestPlan", + "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": "RequesterUserId", + "CaptionName": "App.Listform.ListformField.RequesterUserId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 21, + "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 Id AS [Key], CONCAT(Name, ' ', Surname) AS [Name], DepartmentId FROM AbpUsers WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name, Surname" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.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": "{\"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.MaterialRequestPlan", + "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": "RequestDate", + "CaptionName": "App.Listform.ListformField.RequestDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 22, + "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.MaterialRequestPlan.Create", + "R": "App.Prc.MaterialRequestPlan", + "U": "App.Prc.MaterialRequestPlan.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"useMaskBehavior\":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, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Prc.MaterialRequestPlan", + "App.Prc.MaterialRequestPlan.Title", + "App.Prc.MaterialRequestPlan.Desc", + "App.Listform.ListformField.DueState", + "App.Listform.ListformField.PurchaseQuantity", + "App.Listform.ListformField.RemainingQuantity", + "App.Listform.ListformField.StockQuantity", + "App.Listform.ListformField.TransferQuantity", + "App.StaticLookup.Overdue", + "App.StaticLookup.Within7Days", + "App.StaticLookup.Later", + "App.Listform.ListformField.DraftQuantity", + "App.Prc.MaterialRequestPlan.Plan", + "App.Prc.MaterialRequestPlan.Info", + "App.Prc.MaterialRequestPlan.Confirmed", + "App.Prc.MaterialRequestPlan.Widget.Draft", + "App.Prc.MaterialRequestPlan.PlanQuantityMax", + "App.Prc.MaterialRequestPlan.TakeMax", + "App.Prc.MaterialRequestPlan.Suggest", + "App.Prc.MaterialRequestPlan.PlanSelected", + "App.Prc.MaterialRequestPlan.SuggestConfirm", + "App.Prc.MaterialRequestPlan.ResetDraft" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Prc.MaterialRequestPlan", + "App.Prc.MaterialRequestPlan.Create", + "App.Prc.MaterialRequestPlan.Update", + "App.Prc.MaterialRequestPlan.Delete", + "App.Prc.MaterialRequestPlan.Export", + "App.Prc.MaterialRequestPlan.Import" + ], + "MenuCodes": [ + "App.Prc.MaterialRequestPlan" + ], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/wizard/Prc_MaterialRequestPlanLastPurchase.json b/configs/seeds/wizard/Prc_MaterialRequestPlanLastPurchase.json new file mode 100644 index 00000000..656dcce0 --- /dev/null +++ b/configs/seeds/wizard/Prc_MaterialRequestPlanLastPurchase.json @@ -0,0 +1,2323 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "Prc_MaterialRequestPlanLastPurchase", + "WizardCode": "App.Prc.MaterialRequestPlanLastPurchase", + "SeededAt": "2026-10-13T12:00:00+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Prc", + "ModuleId": "Prc", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Prc", + "Icon": "FcShop", + "En": "Purchasing", + "Tr": "Satınalma" + } + ], + "MenuParentCode": "App.Prc.MaterialRequests", + "MenuParentIcon": "FcList", + "CreateMenu": false, + "MenuCode": "App.Prc.MaterialRequestPlanLastPurchase", + "MenuOrder": 0, + "MenuUrl": "/admin/list/App.Prc.MaterialRequestPlanLastPurchase", + "MenuIcon": "FcViewDetails" + }, + "Language": { + "MenuParentEn": "Material Requests", + "MenuParentTr": "Talepler", + "PermissionGroupEn": "Purchasing", + "PermissionGroupTr": "Satınalma", + "MenuEn": "Last Purchases", + "MenuTr": "Son Alımlar", + "TitleEn": "Last Purchases", + "TitleTr": "Son Alımlar", + "DescEn": "Last Purchases — the completed receipts of the selected request line's product (Inventory › Receipts), newest first.\nWhere: Purchasing › Requests › Planning › Last Purchases tab (no menu of its own); filtered by the product of the row selected in Planning. Only receipts put into stock with Validate are listed; receipts without an order are included, returns are not.\nFields: receipt date, slip no, supplier, quantity, unit, unit price, currency, amount (tax excluded), order no, warehouse, request no. Price, currency and order no are filled only for receipts opened from a purchase order.\nUsage: read-only; it shows from whom, when and at what price the product was last bought before deciding Purchasing and the supplier in Plan.", + "DescTr": "Son Alımlar — Planlama'da seçili talep kaleminin ürününün tamamlanan alımları (Envanter › Alımlar), en yenisi üstte.\nNerede: Satınalma › Talepler › Planlama › Son Alımlar sekmesi (kendi menüsü yoktur); Planlama'da seçilen satırın ürününe süzülür. Yalnız Doğrula ile stoğa girmiş alımlar gelir; siparişsiz alım da listelenir, iadeler listelenmez.\nAlanlar: alım tarihi, fiş no, tedarikçi, miktar, birim, birim fiyat, para birimi, tutar (KDV hariç), sipariş no, depo, talep no. Fiyat, para birimi ve sipariş no yalnız siparişten açılan alımda dolar.\nKullanım: salt okunurdur; Planla'da Satınalma kararı ve tedarikçi seçilmeden önce ürünün en son kimden, ne zaman ve hangi fiyata alındığını gösterir." + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "ProductId", + "CaptionName": "App.Listform.ListformField.ProductId", + "En": "Product", + "Tr": "Ürün" + }, + { + "FieldName": "EffectiveDate", + "CaptionName": "App.Listform.ListformField.ReceiptDate", + "En": "Receipt Date", + "Tr": "Alım Tarihi" + }, + { + "FieldName": "TransferNo", + "CaptionName": "App.Listform.ListformField.TransferNo", + "En": "Slip No", + "Tr": "Fiş No" + }, + { + "FieldName": "PartnerId", + "CaptionName": "App.Listform.ListformField.SupplierId", + "En": "Supplier", + "Tr": "Tedarikçi" + }, + { + "FieldName": "Quantity", + "CaptionName": "App.Listform.ListformField.Quantity", + "En": "Quantity", + "Tr": "Miktar" + }, + { + "FieldName": "UomId", + "CaptionName": "App.Listform.ListformField.UomId", + "En": "Uom", + "Tr": "Birim" + }, + { + "FieldName": "UnitPrice", + "CaptionName": "App.Listform.ListformField.UnitPrice", + "En": "Unit Price", + "Tr": "Birim Fiyat" + }, + { + "FieldName": "CurrencyId", + "CaptionName": "App.Listform.ListformField.CurrencyId", + "En": "Currency", + "Tr": "Para Birimi" + }, + { + "FieldName": "UntaxedAmount", + "CaptionName": "App.Listform.ListformField.UntaxedAmount", + "En": "Untaxed Amount", + "Tr": "Vergi Hariç Tutar" + }, + { + "FieldName": "OrderNo", + "CaptionName": "App.Listform.ListformField.PurchaseOrderNo", + "En": "Order No", + "Tr": "Sipariş No" + }, + { + "FieldName": "WarehouseId", + "CaptionName": "App.Listform.ListformField.WarehouseId", + "En": "Warehouse", + "Tr": "Depo" + }, + { + "FieldName": "RequestNo", + "CaptionName": "App.Listform.ListformField.RequestNo", + "En": "Request No", + "Tr": "Talep No" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 9, + "TableName": null, + "DefaultFilter": "\"IsDeleted\" = 'false'", + "SelectCommand": "Prc_V_PurchaseReceiptLine", + "SelectCommandType": 2, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": null, + "DeleteBeforeCommand": null, + "DeleteAfterCommand": null, + "DeleteFieldsDefaultValueDto": [], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": null, + "InsertFieldsDefaultValueDto": [], + "UpdateCommand": null, + "UpdateBeforeCommand": null, + "UpdateAfterCommand": null, + "UpdateFieldsDefaultValueDto": [], + "FormFieldsDefaultValueDto": [], + "WidgetsDto": [], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Prc.MaterialRequestPlanLastPurchase", + "CultureName": "en", + "Name": "App.Prc.MaterialRequestPlanLastPurchase", + "KeyFieldName": "Id", + "Title": "App.Prc.MaterialRequestPlanLastPurchase.Title", + "SortMode": "single", + "PageSize": 10, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Prc.MaterialRequestPlanLastPurchase.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "auto", + "WhiteSpace": "normal", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "none", + "AllowSelectAll": false, + "SelectAllMode": "allPages", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "popup", + "RefreshMode": "full", + "AllowUpdating": false, + "AllowDetail": false, + "AllowDeleting": false, + "AllowAllDeleting": false, + "AllowAdding": false, + "AllowDuplicate": false, + "OpenDetailAfterInsert": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Prc.MaterialRequestPlanLastPurchase.Title", + "ShowTitle": true, + "Width": 800, + "Height": 400, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [], + "PermissionDto": { + "C": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.Update", + "D": "App.Prc.MaterialRequestPlanLastPurchase.Delete", + "E": "App.Prc.MaterialRequestPlanLastPurchase.Export", + "I": "App.Prc.MaterialRequestPlanLastPurchase.Import", + "N": null + }, + "CommandColumnDto": [], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Prc.MaterialRequestPlanLastPurchase", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": false, + "SubFormsListFormType": "Form", + "SubFormsDto": [], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Prc.MaterialRequestPlanLastPurchase", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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": "" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.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.MaterialRequestPlanLastPurchase", + "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": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "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, p.PurchaseDescription AS PurchaseDescription, COALESCE(p.PurchaseTaxRate, 0) AS PurchaseTaxRate 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.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.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": "{\"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.MaterialRequestPlanLastPurchase", + "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": "EffectiveDate", + "CaptionName": "App.Listform.ListformField.ReceiptDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 1, + "SortDirection": "desc", + "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.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"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.MaterialRequestPlanLastPurchase", + "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": "TransferNo", + "CaptionName": "App.Listform.ListformField.TransferNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.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": "{\"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.MaterialRequestPlanLastPurchase", + "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": "PartnerId", + "CaptionName": "App.Listform.ListformField.SupplierId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": 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_Contact WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.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.MaterialRequestPlanLastPurchase", + "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": 6, + "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": "sum", + "ValueFormat": "#,##0.##", + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": "{0}", + "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": "" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.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": "{\"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.MaterialRequestPlanLastPurchase", + "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": 7, + "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.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true}", + "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.MaterialRequestPlanLastPurchase", + "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": "UnitPrice", + "CaptionName": "App.Listform.ListformField.UnitPrice", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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": "" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.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": "{\"readOnly\":true,\"format\":\"#,##0.00\"}", + "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.MaterialRequestPlanLastPurchase", + "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": "CurrencyId", + "CaptionName": "App.Listform.ListformField.CurrencyId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": 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], Id AS [Name] FROM Sas_H_Currency WHERE IsActive = 1 ORDER BY Id" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true}", + "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.MaterialRequestPlanLastPurchase", + "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": "UntaxedAmount", + "CaptionName": "App.Listform.ListformField.UntaxedAmount", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": 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": "" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.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": "{\"readOnly\":true,\"format\":\"#,##0.00\"}", + "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.MaterialRequestPlanLastPurchase", + "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": "OrderNo", + "CaptionName": "App.Listform.ListformField.PurchaseOrderNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 11, + "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": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.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": "{\"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.MaterialRequestPlanLastPurchase", + "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": "WarehouseId", + "CaptionName": "App.Listform.ListformField.WarehouseId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 12, + "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 Id AS [Key], CONCAT(Code, ' - ', Name) AS [Name], BranchId FROM Inv_T_Warehouse WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Code" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.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": "{\"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.MaterialRequestPlanLastPurchase", + "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": "RequestNo", + "CaptionName": "App.Listform.ListformField.RequestNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 13, + "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": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanLastPurchase.Create", + "R": "App.Prc.MaterialRequestPlanLastPurchase", + "U": "App.Prc.MaterialRequestPlanLastPurchase.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": "{\"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, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Prc.MaterialRequestPlanLastPurchase", + "App.Prc.MaterialRequestPlanLastPurchase.Title", + "App.Prc.MaterialRequestPlanLastPurchase.Desc", + "App.Listform.ListformField.PurchaseOrderNo", + "App.Listform.ListformField.ReceiptDate" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Prc.MaterialRequestPlanLastPurchase", + "App.Prc.MaterialRequestPlanLastPurchase.Create", + "App.Prc.MaterialRequestPlanLastPurchase.Update", + "App.Prc.MaterialRequestPlanLastPurchase.Delete", + "App.Prc.MaterialRequestPlanLastPurchase.Export", + "App.Prc.MaterialRequestPlanLastPurchase.Import" + ], + "MenuCodes": [], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/wizard/Prc_PurchaseRfqImportItem.json b/configs/seeds/wizard/Prc_MaterialRequestPlanLine.json similarity index 81% rename from configs/seeds/wizard/Prc_PurchaseRfqImportItem.json rename to configs/seeds/wizard/Prc_MaterialRequestPlanLine.json index ff2124ec..38e62709 100644 --- a/configs/seeds/wizard/Prc_PurchaseRfqImportItem.json +++ b/configs/seeds/wizard/Prc_MaterialRequestPlanLine.json @@ -1,9 +1,9 @@ { "Wizard": { "ComponentKind": 0, - "WizardName": "Prc_PurchaseRfqImportItem", - "WizardCode": "App.Prc.PurchaseRfqImportItem", - "SeededAt": "2026-10-11T21:01:00+03:00", + "WizardName": "Prc_MaterialRequestPlanLine", + "WizardCode": "App.Prc.MaterialRequestPlanLine", + "SeededAt": "2026-10-13T12:00:00+03:00", "CustomComponentName": null, "PermissionGroupName": "App.Prc", "ModuleId": "Prc", @@ -16,25 +16,25 @@ "Tr": "Satınalma" } ], - "MenuParentCode": "App.Prc.Orders", - "MenuParentIcon": "FcShop", + "MenuParentCode": "App.Prc.MaterialRequests", + "MenuParentIcon": "FcList", "CreateMenu": false, - "MenuCode": "App.Prc.PurchaseRfqImportItem", + "MenuCode": "App.Prc.MaterialRequestPlanLine", "MenuOrder": 0, - "MenuUrl": "/admin/list/App.Prc.PurchaseRfqImportItem", - "MenuIcon": "FcTodoList" + "MenuUrl": "/admin/list/App.Prc.MaterialRequestPlanLine", + "MenuIcon": "FcViewDetails" }, "Language": { - "MenuParentEn": "Orders", - "MenuParentTr": "Siparişler", + "MenuParentEn": "Material Requests", + "MenuParentTr": "Talepler", "PermissionGroupEn": "Purchasing", "PermissionGroupTr": "Satınalma", - "MenuEn": "RFQ Request Lines", - "MenuTr": "Teklif Talep Kalemleri", - "TitleEn": "RFQ Request Lines", - "TitleTr": "Teklif Talep Kalemleri", - "DescEn": "RFQ Request Lines — the lines of approved material requests that can still be quoted, listed for the open request for quotation.\nWhere: Purchasing › Orders › Requests for Quotation › Request Lines tab (no menu of its own); grouped by request.\nFields: request no, requester, product, quantity, unit, requested date, reason.\nUsage: select as many lines as needed with the row checkboxes (several requests at once) and press Transfer Selected; the lines are copied to the RFQ with the agreement or supplier price and the requested date, and disappear from this list. Only an RFQ in RFQ or RFQ Sent status takes lines; a line already on another active RFQ or order is not listed.", - "DescTr": "Teklif Talep Kalemleri — onaylı malzeme taleplerinin henüz teklif istenmemiş kalemleri, açık teklif talebi için listelenir.\nNerede: Satınalma › Siparişler › Teklif Talepleri › Talep Kalemleri sekmesi (kendi menüsü yoktur); talebe göre gruplanır.\nAlanlar: talep no, talep eden, ürün, miktar, birim, istenen tarih, neden.\nKullanım: istenen kadar satır, satır başındaki kutuyla seçilir (birden fazla talep birlikte) ve Seçilenleri Aktar'a basılır; kalemler sözleşme ya da tedarikçi fiyatı ve istenen termin ile teklife kopyalanır ve bu listeden düşer. Yalnız Teklif Talebi ya da Gönderildi durumundaki teklife kalem aktarılır; başka bir açık teklifte ya da siparişte olan kalem listelenmez." + "MenuEn": "Fulfilment Plan", + "MenuTr": "Karşılama Planı", + "TitleEn": "Fulfilment Plan", + "TitleTr": "Karşılama Planı", + "DescEn": "Fulfilment Plan — the draft distribution of the line in the Plan dialog, waiting for Confirm.\nWhere: Purchasing › Requests › Planning › Plan button, below the Internal Transfer and Purchasing tabs (no menu of its own); filtered by the line being planned.\nFields: decision (internal transfer / from stock / purchasing), supplier or source location, quantity and unit, unit price and currency for purchasing (the price the RFQ line will get).\nUsage: rows are written from the Plan Quantity of the two tabs; a row can be deleted here (applied at once); Reset Draft in the dialog clears the whole draft. Confirm turns every row into a document in one go (internal transfers first, then fulfilment from stock, then RFQs) and empties the plan; if a row is rejected (stock, remaining quantity, operation type) no document is created and the draft stays. The draft total is shown in Planning as Draft Plan.", + "DescTr": "Karşılama Planı — kalemin Planla diyaloğundaki, onay bekleyen taslak dağıtımı.\nNerede: Satınalma › Talepler › Planlama › Planla butonu, İç Transfer ve Satınalma sekmelerinin altında (kendi menüsü yoktur); planlanan kaleme süzülür.\nAlanlar: karar (iç transfer / stoktan / satınalma), tedarikçi ya da kaynak konum, miktar ve birim, satınalmada birim fiyat ve para birimi (teklif kalemine yazılacak fiyat).\nKullanım: satırlar iki sekmenin Plan Miktarı'ndan yazılır; burada satır silinebilir (silme hemen uygulanır), diyalogdaki Taslağı Sıfırla bütün taslağı siler. Onayla bütün satırları tek seferde belgeye çevirir (önce iç transferler, sonra stoktan karşılama, en son teklif talepleri) ve planı boşaltır; bir satır reddedilirse (stok, kalan, operasyon türü) hiçbir belge açılmaz, taslak yerinde kalır. Taslak toplamı Planlama'da Taslak Plan kolonunda görünür." }, "Groups": [ { @@ -52,22 +52,22 @@ "Tr": "Ana Belge" }, { - "FieldName": "RequestNo", - "CaptionName": "App.Listform.ListformField.RequestNo", - "En": "Request No", - "Tr": "Talep No" + "FieldName": "PlanMethod", + "CaptionName": "App.Listform.ListformField.PlanMethod", + "En": "Decision", + "Tr": "Karar" }, { - "FieldName": "RequesterUserId", - "CaptionName": "App.Listform.ListformField.RequesterUserId", - "En": "Requester", - "Tr": "Talep Eden" + "FieldName": "SupplierId", + "CaptionName": "App.Listform.ListformField.SupplierId", + "En": "Supplier", + "Tr": "Tedarikçi" }, { - "FieldName": "ProductId", - "CaptionName": "App.Listform.ListformField.ProductId", - "En": "Product", - "Tr": "Ürün" + "FieldName": "SourceLocationId", + "CaptionName": "App.Listform.ListformField.SourceLocationId", + "En": "Source Location", + "Tr": "Kaynak Konum" }, { "FieldName": "Quantity", @@ -82,16 +82,16 @@ "Tr": "Birim" }, { - "FieldName": "DueDate", - "CaptionName": "App.Listform.ListformField.DueDate", - "En": "Due Date", - "Tr": "Bitiş Tarihi" + "FieldName": "Price", + "CaptionName": "App.Listform.ListformField.UnitPrice", + "En": "Unit Price", + "Tr": "Birim Fiyat" }, { - "FieldName": "RequestReason", - "CaptionName": "App.Listform.ListformField.RequestReason", - "En": "Request Reason", - "Tr": "Talep Nedeni" + "FieldName": "CurrencyId", + "CaptionName": "App.Listform.ListformField.Currency", + "En": "Currency", + "Tr": "Para Birimi" } ] } @@ -100,66 +100,72 @@ "ListForm": { "EditType": null, "DataSourceCode": "Default", - "KeyFieldDbSourceType": 16, + "KeyFieldDbSourceType": 9, "TableName": null, - "DefaultFilter": null, - "SelectCommand": "Prc_V_PurchaseImportItem", + "DefaultFilter": "\"IsDeleted\" = 'false'", + "SelectCommand": "Prc_V_MaterialRequestPlanLine", "SelectCommandType": 2, "SelectFieldsDefaultValueDto": [], "SeedFilePath": null, "SeedSyncInsert": false, "SeedSyncUpdate": false, "SeedSyncDelete": false, - "DeleteCommand": null, + "DeleteCommand": "UPDATE \"Prc_T_MaterialRequestPlanLine\" SET \"DeleterId\"=@DeleterId, \"DeletionTime\"=CURRENT_TIMESTAMP, \"IsDeleted\"='true' WHERE \"Id\" IN @Id", "DeleteBeforeCommand": null, "DeleteAfterCommand": null, "DeleteFieldsDefaultValueDto": [ { - "FieldName": "Id", - "FieldDbType": 16, - "Value": "@ID", + "FieldName": "DeleterId", + "FieldDbType": 9, + "Value": "@USERID", "CustomValueType": 2, - "SqlQuery": null - } - ], - "InsertCommand": null, - "InsertBeforeCommand": null, - "InsertAfterCommand": null, - "InsertFieldsDefaultValueDto": [ + "SqlQuery": "" + }, { "FieldName": "Id", "FieldDbType": 9, - "Value": "@NEWID", - "CustomValueType": 2, - "SqlQuery": null - } - ], - "UpdateCommand": "EXEC Prc_P_PurchaseImportItem @Id", - "UpdateBeforeCommand": null, - "UpdateAfterCommand": null, - "UpdateFieldsDefaultValueDto": [ - { - "FieldName": "Id", - "FieldDbType": 16, "Value": "@ID", "CustomValueType": 2, "SqlQuery": "" } ], + "InsertCommand": "EXEC Prc_P_MaterialRequestPlanSuggest @BaseId, @TenantId, @CreatorId", + "InsertBeforeCommand": null, + "InsertAfterCommand": null, + "InsertFieldsDefaultValueDto": [ + { + "FieldName": "CreationTime", + "FieldDbType": 6, + "Value": "@NOW", + "CustomValueType": 2, + "SqlQuery": "" + }, + { + "FieldName": "CreatorId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": "" + } + ], + "UpdateCommand": null, + "UpdateBeforeCommand": null, + "UpdateAfterCommand": null, + "UpdateFieldsDefaultValueDto": [], "FormFieldsDefaultValueDto": [], "WidgetsDto": [], "ExtraFilterEditDto": [], - "ListFormCode": "App.Prc.PurchaseRfqImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanLine", "CultureName": "en", - "Name": "App.Prc.PurchaseRfqImportItem", + "Name": "App.Prc.MaterialRequestPlanLine", "KeyFieldName": "Id", - "Title": "App.Prc.PurchaseRfqImportItem.Title", + "Title": "App.Prc.MaterialRequestPlanLine.Title", "SortMode": "single", "PageSize": 10, "Width": 0, "Height": 0, "FullHeight": false, - "Description": "App.Prc.PurchaseRfqImportItem.Desc", + "Description": "App.Prc.MaterialRequestPlanLine.Desc", "FilterRowDto": { "Visible": true, "ApplyFilter": "auto", @@ -192,9 +198,9 @@ "AutoExpandAll": false }, "SelectionDto": { - "Mode": "multiple", - "AllowSelectAll": true, - "SelectAllMode": "page", + "Mode": "none", + "AllowSelectAll": false, + "SelectAllMode": "allPages", "ShowCheckBoxesMode": "always" }, "ColumnOptionDto": { @@ -315,11 +321,11 @@ "LoadPanelText": "Loading..." }, "EditingOptionDto": { - "Mode": "batch", + "Mode": "cell", "RefreshMode": "full", "AllowUpdating": false, "AllowDetail": false, - "AllowDeleting": false, + "AllowDeleting": true, "AllowAllDeleting": false, "AllowAdding": false, "AllowDuplicate": false, @@ -331,10 +337,10 @@ "StartEditAction": "click", "EditColumnName": null, "Popup": { - "Title": "App.Prc.PurchaseRfqImportItem.Title", + "Title": "App.Prc.MaterialRequestPlanLine.Title", "ShowTitle": true, - "Width": 800, - "Height": 125, + "Width": 600, + "Height": 260, "FullScreen": false, "HideOnOutsideClick": true, "ResizeEnabled": true, @@ -349,35 +355,19 @@ }, "EditingFormDto": [], "PermissionDto": { - "C": "App.Prc.PurchaseRfqImportItem.Create", - "R": "App.Prc.PurchaseRfqImportItem", - "U": "App.Prc.PurchaseRfqImportItem.Update", - "D": "App.Prc.PurchaseRfqImportItem.Delete", - "E": "App.Prc.PurchaseRfqImportItem.Export", - "I": "App.Prc.PurchaseRfqImportItem.Import", - "N": "App.Prc.PurchaseRfqImportItem.Note" + "C": "App.Prc.MaterialRequestPlanLine.Create", + "R": "App.Prc.MaterialRequestPlanLine", + "U": "App.Prc.MaterialRequestPlanLine.Update", + "D": "App.Prc.MaterialRequestPlanLine.Delete", + "E": "App.Prc.MaterialRequestPlanLine.Export", + "I": "App.Prc.MaterialRequestPlanLine.Import", + "N": null }, - "CommandColumnDto": [ - { - "ButtonPosition": 1, - "AuthName": "App.Prc.PurchaseRfqImportItem.Update", - "Text": "App.Prc.PurchaseImportItem.TransferSelected", - "Hint": "App.Prc.PurchaseImportItem.TransferSelected", - "Icon": "download", - "Url": null, - "UrlTarget": "_blank", - "DialogName": null, - "DialogParameters": null, - "OnClick": "(async () => { const rows = getSelectedRowsData(); if (!rows.length) return; for (const r of rows) { await dynamicFetch('list-form-data/update', 'POST', null, { listFormCode, keys: [r.Id], data: {} }); } const c = dialog.config; if (c && c.component) { dialog.setConfig({}); if (c.onClose) c.onClose(); } else refreshData(); })().catch(() => refreshData())", - "Command": null, - "IsVisible": true, - "VisibleExpression": null - } - ], + "CommandColumnDto": [], "StateStoringDto": { "Enabled": true, "Type": "custom", - "StorageKey": "listFormGridStorage-App.Prc.PurchaseRfqImportItem", + "StorageKey": "listFormGridStorage-App.Prc.MaterialRequestPlanLine", "SavingTimeout": 5000 }, "CustomJsSources": [], @@ -676,7 +666,7 @@ "Fields": [ { "EditType": null, - "ListFormCode": "App.Prc.PurchaseRfqImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanLine", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -698,7 +688,7 @@ "IsActive": true, "Width": 0, "ListOrderNo": 1, - "SourceDbType": 16, + "SourceDbType": 9, "CultureName": "en", "DataType": "string", "SortIndex": 0, @@ -761,135 +751,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseRfqImportItem.Create", - "R": "App.Prc.PurchaseRfqImportItem", - "U": "App.Prc.PurchaseRfqImportItem.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": "{\"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.PurchaseRfqImportItem", - "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": "BaseId", - "CaptionName": "App.Listform.ListformField.BaseId", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": false, - "IsActive": true, - "Width": 0, - "ListOrderNo": 2, - "SourceDbType": 9, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Prc.PurchaseRfqImportItem.Create", - "R": "App.Prc.PurchaseRfqImportItem", - "U": "App.Prc.PurchaseRfqImportItem.Update", + "C": "App.Prc.MaterialRequestPlanLine.Create", + "R": "App.Prc.MaterialRequestPlanLine", + "U": "App.Prc.MaterialRequestPlanLine.Update", "E": true, "I": true }, @@ -928,7 +792,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseRfqImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanLine", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -942,15 +806,15 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "RequestNo", - "CaptionName": "App.Listform.ListformField.RequestNo", + "FieldName": "BaseId", + "CaptionName": "App.Listform.ListformField.BaseId", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, - "ListOrderNo": 3, - "SourceDbType": 16, + "ListOrderNo": 2, + "SourceDbType": 9, "CultureName": "en", "DataType": "string", "SortIndex": 0, @@ -975,8 +839,8 @@ }, "ColumnGroupingDto": { "AllowGrouping": true, - "GroupIndex": 0, - "AutoExpandGroup": true + "GroupIndex": null, + "AutoExpandGroup": false }, "ColumnCustomizationDto": { "Fixed": false, @@ -1013,9 +877,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseRfqImportItem.Create", - "R": "App.Prc.PurchaseRfqImportItem", - "U": "App.Prc.PurchaseRfqImportItem.Update", + "C": "App.Prc.MaterialRequestPlanLine.Create", + "R": "App.Prc.MaterialRequestPlanLine", + "U": "App.Prc.MaterialRequestPlanLine.Update", "E": true, "I": true }, @@ -1041,7 +905,7 @@ "EditGroupOrderNo": null, "EditorType2": "dxTextBox", "ColSpan": 1, - "EditorOptions": "{\"readOnly\":true}", + "EditorOptions": null, "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1054,7 +918,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseRfqImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanLine", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1068,22 +932,22 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "RequesterUserId", - "CaptionName": "App.Listform.ListformField.RequesterUserId", + "FieldName": "PlanMethod", + "CaptionName": "App.Listform.ListformField.PlanMethod", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 4, - "SourceDbType": 9, + "ListOrderNo": 3, + "SourceDbType": 16, "CultureName": "en", "DataType": "string", - "SortIndex": 0, - "SortDirection": null, + "SortIndex": 1, + "SortDirection": "desc", "AllowSearch": true, "AllowEditing": false, - "AllowAdding": true, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1126,22 +990,22 @@ "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 TenantId = '@TENANTID'" + "LookupQuery": "[{\"key\":\"Purchase\",\"name\":\"App.StaticLookup.Purchase\"},{\"key\":\"Transfer\",\"name\":\"App.StaticLookup.InternalTransfer\"},{\"key\":\"Stock\",\"name\":\"App.StaticLookup.FromStock\"}]" }, "ValidationRuleDto": [], "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseRfqImportItem.Create", - "R": "App.Prc.PurchaseRfqImportItem", - "U": "App.Prc.PurchaseRfqImportItem.Update", + "C": "App.Prc.MaterialRequestPlanLine.Create", + "R": "App.Prc.MaterialRequestPlanLine", + "U": "App.Prc.MaterialRequestPlanLine.Update", "E": true, "I": true }, @@ -1167,7 +1031,7 @@ "EditGroupOrderNo": null, "EditorType2": "dxSelectBox", "ColSpan": 1, - "EditorOptions": "{\"searchEnabled\":true}", + "EditorOptions": null, "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1180,7 +1044,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseRfqImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanLine", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1194,14 +1058,14 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "ProductId", - "CaptionName": "App.Listform.ListformField.ProductId", + "FieldName": "SupplierId", + "CaptionName": "App.Listform.ListformField.SupplierId", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 5, + "ListOrderNo": 4, "SourceDbType": 9, "CultureName": "en", "DataType": "string", @@ -1209,7 +1073,7 @@ "SortDirection": null, "AllowSearch": true, "AllowEditing": false, - "AllowAdding": true, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1259,15 +1123,15 @@ "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] FROM Inv_T_Product p WHERE p.TenantId = '@TENANTID'" + "LookupQuery": "SELECT Id AS [Key], Name AS [Name], COALESCE(SupplierCurrency, 'TRY') AS SupplierCurrency FROM Adm_T_Contact WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseRfqImportItem.Create", - "R": "App.Prc.PurchaseRfqImportItem", - "U": "App.Prc.PurchaseRfqImportItem.Update", + "C": "App.Prc.MaterialRequestPlanLine.Create", + "R": "App.Prc.MaterialRequestPlanLine", + "U": "App.Prc.MaterialRequestPlanLine.Update", "E": true, "I": true }, @@ -1306,7 +1170,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseRfqImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanLine", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1320,22 +1184,22 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "Quantity", - "CaptionName": "App.Listform.ListformField.Quantity", + "FieldName": "SourceLocationId", + "CaptionName": "App.Listform.ListformField.SourceLocationId", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 6, - "SourceDbType": 7, + "ListOrderNo": 5, + "SourceDbType": 9, "CultureName": "en", - "DataType": "number", + "DataType": "string", "SortIndex": 0, "SortDirection": null, "AllowSearch": true, "AllowEditing": false, - "AllowAdding": true, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1377,6 +1241,132 @@ "DisplayFormat": null, "ShowInColumn": null }, + "LookupDto": { + "DataSourceType": 2, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT l.Id AS [Key], CONCAT(w.Code, '/', l.Name) AS [Name] FROM Inv_T_Location l INNER JOIN Inv_T_Warehouse w ON w.Id = l.WarehouseId WHERE l.TenantId = '@TENANTID' ORDER BY w.Code, l.Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanLine.Create", + "R": "App.Prc.MaterialRequestPlanLine", + "U": "App.Prc.MaterialRequestPlanLine.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.MaterialRequestPlanLine", + "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": 6, + "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": "sum", + "ValueFormat": "#,##0.##", + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": "{0}", + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, "LookupDto": { "DataSourceType": 0, "ValueExpr": "Key", @@ -1391,9 +1381,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseRfqImportItem.Create", - "R": "App.Prc.PurchaseRfqImportItem", - "U": "App.Prc.PurchaseRfqImportItem.Update", + "C": "App.Prc.MaterialRequestPlanLine.Create", + "R": "App.Prc.MaterialRequestPlanLine", + "U": "App.Prc.MaterialRequestPlanLine.Update", "E": true, "I": true }, @@ -1419,7 +1409,7 @@ "EditGroupOrderNo": null, "EditorType2": "dxNumberBox", "ColSpan": 1, - "EditorOptions": "{\"format\":\"#,##0.##\"}", + "EditorOptions": "{\"readOnly\":true,\"format\":\"#,##0.####\"}", "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1432,7 +1422,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseRfqImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanLine", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1461,7 +1451,7 @@ "SortDirection": null, "AllowSearch": true, "AllowEditing": false, - "AllowAdding": true, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1517,9 +1507,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseRfqImportItem.Create", - "R": "App.Prc.PurchaseRfqImportItem", - "U": "App.Prc.PurchaseRfqImportItem.Update", + "C": "App.Prc.MaterialRequestPlanLine.Create", + "R": "App.Prc.MaterialRequestPlanLine", + "U": "App.Prc.MaterialRequestPlanLine.Update", "E": true, "I": true }, @@ -1545,7 +1535,7 @@ "EditGroupOrderNo": null, "EditorType2": "dxSelectBox", "ColSpan": 1, - "EditorOptions": "{\"searchEnabled\":true}", + "EditorOptions": "{\"readOnly\":true}", "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1558,7 +1548,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseRfqImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanLine", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1572,22 +1562,22 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "DueDate", - "CaptionName": "App.Listform.ListformField.DueDate", + "FieldName": "Price", + "CaptionName": "App.Listform.ListformField.UnitPrice", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, "ListOrderNo": 8, - "SourceDbType": 6, + "SourceDbType": 7, "CultureName": "en", - "DataType": "datetime", + "DataType": "number", "SortIndex": 0, "SortDirection": null, "AllowSearch": true, "AllowEditing": false, - "AllowAdding": true, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1643,9 +1633,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseRfqImportItem.Create", - "R": "App.Prc.PurchaseRfqImportItem", - "U": "App.Prc.PurchaseRfqImportItem.Update", + "C": "App.Prc.MaterialRequestPlanLine.Create", + "R": "App.Prc.MaterialRequestPlanLine", + "U": "App.Prc.MaterialRequestPlanLine.Update", "E": true, "I": true }, @@ -1669,9 +1659,9 @@ "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, - "EditorType2": "dxDateBox", + "EditorType2": "dxNumberBox", "ColSpan": 1, - "EditorOptions": "{\"type\":\"date\",\"displayFormat\":\"dd.MM.yyyy\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "EditorOptions": "{\"readOnly\":true,\"format\":\"#,##0.00\"}", "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1684,7 +1674,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseRfqImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanLine", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1698,8 +1688,8 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "RequestReason", - "CaptionName": "App.Listform.ListformField.RequestReason", + "FieldName": "CurrencyId", + "CaptionName": "App.Listform.ListformField.Currency", "PlaceHolder": null, "ReadOnly": false, "Visible": true, @@ -1713,7 +1703,7 @@ "SortDirection": null, "AllowSearch": true, "AllowEditing": false, - "AllowAdding": true, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1756,22 +1746,22 @@ "ShowInColumn": null }, "LookupDto": { - "DataSourceType": 0, + "DataSourceType": 2, "ValueExpr": "Key", "DisplayExpr": "Name", "CascadeRelationField": null, "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": null + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Sas_H_Currency WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseRfqImportItem.Create", - "R": "App.Prc.PurchaseRfqImportItem", - "U": "App.Prc.PurchaseRfqImportItem.Update", + "C": "App.Prc.MaterialRequestPlanLine.Create", + "R": "App.Prc.MaterialRequestPlanLine", + "U": "App.Prc.MaterialRequestPlanLine.Update", "E": true, "I": true }, @@ -1795,9 +1785,9 @@ "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, - "EditorType2": "dxTextBox", - "ColSpan": 2, - "EditorOptions": "{\"showClearButton\":true,\"maxLength\":512}", + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": null, "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1809,31 +1799,26 @@ "Id": "00000000-0000-0000-0000-000000000000" } ], - "IsDeletedField": false, + "IsDeletedField": true, "IsCreatedField": true, "InsertedRecords": { "LanguageKeys": [ - "App.Prc.PurchaseRfqImportItem", - "App.Prc.PurchaseRfqImportItem.Title", - "App.Prc.PurchaseRfqImportItem.Desc", - "App.Listform.ListformField.BaseId" + "App.Prc.MaterialRequestPlanLine", + "App.Prc.MaterialRequestPlanLine.Title", + "App.Prc.MaterialRequestPlanLine.Desc", + "App.StaticLookup.FromStock" ], "PermissionGroupNames": [], "PermissionNames": [ - "App.Prc.PurchaseRfqImportItem", - "App.Prc.PurchaseRfqImportItem.Create", - "App.Prc.PurchaseRfqImportItem.Update", - "App.Prc.PurchaseRfqImportItem.Delete", - "App.Prc.PurchaseRfqImportItem.Export", - "App.Prc.PurchaseRfqImportItem.Import", - "App.Prc.PurchaseRfqImportItem.Note" + "App.Prc.MaterialRequestPlanLine", + "App.Prc.MaterialRequestPlanLine.Create", + "App.Prc.MaterialRequestPlanLine.Update", + "App.Prc.MaterialRequestPlanLine.Delete", + "App.Prc.MaterialRequestPlanLine.Export", + "App.Prc.MaterialRequestPlanLine.Import" ], "MenuCodes": [], "DataSourceCodes": [], "ModuleIds": [] - }, - "DevRequest": { - "Id": "4784f377-808b-424b-a7e5-13afd94034a3", - "Title": "Satınalma -> Siparişler" } } \ No newline at end of file diff --git a/configs/seeds/wizard/Prc_MaterialRequestPlanSource.json b/configs/seeds/wizard/Prc_MaterialRequestPlanSource.json new file mode 100644 index 00000000..c9d6ef2f --- /dev/null +++ b/configs/seeds/wizard/Prc_MaterialRequestPlanSource.json @@ -0,0 +1,2128 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "Prc_MaterialRequestPlanSource", + "WizardCode": "App.Prc.MaterialRequestPlanSource", + "SeededAt": "2026-10-13T12:00:00+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Prc", + "ModuleId": "Prc", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Prc", + "Icon": "FcShop", + "En": "Purchasing", + "Tr": "Satınalma" + } + ], + "MenuParentCode": "App.Prc.MaterialRequests", + "MenuParentIcon": "FcList", + "CreateMenu": false, + "MenuCode": "App.Prc.MaterialRequestPlanSource", + "MenuOrder": 0, + "MenuUrl": "/admin/list/App.Prc.MaterialRequestPlanSource", + "MenuIcon": "FcViewDetails" + }, + "Language": { + "MenuParentEn": "Material Requests", + "MenuParentTr": "Talepler", + "PermissionGroupEn": "Purchasing", + "PermissionGroupTr": "Satınalma", + "MenuEn": "Internal Transfer", + "MenuTr": "İç Transfer", + "TitleEn": "Internal Transfer", + "TitleTr": "İç Transfer", + "DescEn": "Internal Transfer — the Internal Transfer tab of the Plan dialog: internal locations holding stock of the line's product.\nWhere: Purchasing › Material Requests › Planning › Plan button (no menu of its own); filtered by the line being planned. The request's own delivery location is listed too and ticked as Delivery Location.\nFields: branch, warehouse, location, delivery location, on hand, reserved (requested from that location by open internal transfers), free (on hand − reserved), max (upper limit for the row), plan quantity, unit — all in the line's unit.\nUsage: type into the highlighted Plan Quantity cell (saved when leaving the cell), press Plan All (takes Max) or select rows and press Plan Selected (each row takes its Max in turn) on one or more locations; the quantities go to the Fulfilment Plan as a draft (0 removes the row). A row cannot exceed its free stock, the draft total cannot exceed the remaining quantity. Confirm in the dialog creates the internal transfers; a quantity on the delivery location opens no transfer — it is fulfilled from stock and closes the line when nothing is left to plan and nothing is being purchased.", + "DescTr": "İç Transfer — Planla diyaloğunun İç Transfer sekmesi: talep kaleminin ürününün stoğu olan iç konumlar.\nNerede: Satınalma › Talepler › Planlama › Planla butonu (kendi menüsü yoktur); planlanan kaleme süzülür. Talebin kendi teslim konumu da listelenir, Teslim Konumu işaretiyle.\nAlanlar: şube, depo, konum, teslim konumu, eldeki, ayrılan (açık iç transferlerde o konumdan istenen), serbest (eldeki − ayrılan), en fazla (satıra yazılabilecek üst sınır), plan miktarı, birim — hepsi kalemin biriminde.\nKullanım: bir ya da birkaç konumun vurgulu Plan Miktarı hücresine miktar yazılır (hücreden çıkınca kaydedilir), satırdaki Tümünü Planla ile En Fazla değeri atanır ya da satırlar seçilip Seçilenleri Planla ile her birine sırayla En Fazla yazılır; miktarlar taslak olarak Karşılama Planı'na geçer (0 satırı çıkarır). Satır serbest stoğu, taslak toplamı planlanacak kalanı aşamaz. Diyalogdaki Onayla iç transferleri oluşturur; teslim konumuna yazılan miktar transfer açmaz, stoktan karşılanır ve planlanacak kalanı kalmayan, satınalma payı olmayan kalemi kapatır." + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "BaseId", + "CaptionName": "App.Listform.ListformField.BaseId", + "En": "Base Document", + "Tr": "Ana Belge" + }, + { + "FieldName": "BranchId", + "CaptionName": "App.Listform.ListformField.BranchId", + "En": "Branch Name", + "Tr": "Şube Adı" + }, + { + "FieldName": "WarehouseId", + "CaptionName": "App.Listform.ListformField.WarehouseId", + "En": "Warehouse", + "Tr": "Depo" + }, + { + "FieldName": "LocationId", + "CaptionName": "App.Listform.ListformField.LocationId", + "En": "Location", + "Tr": "Konum" + }, + { + "FieldName": "UomId", + "CaptionName": "App.Listform.ListformField.UomId", + "En": "Uom", + "Tr": "Birim" + }, + { + "FieldName": "PlanQuantity", + "CaptionName": "App.Listform.ListformField.PlanQuantity", + "En": "Plan Quantity", + "Tr": "Plan Miktarı" + }, + { + "FieldName": "OnHand", + "CaptionName": "App.Listform.ListformField.OnHand", + "En": "On Hand", + "Tr": "Eldeki Miktar" + }, + { + "FieldName": "ReservedQuantity", + "CaptionName": "App.Listform.ListformField.ReservedQuantity", + "En": "Reserved Quantity", + "Tr": "Rezerve Miktar" + }, + { + "FieldName": "FreeQuantity", + "CaptionName": "App.Listform.ListformField.FreeQuantity", + "En": "Free Quantity", + "Tr": "Serbest Miktar" + }, + { + "FieldName": "IsDestination", + "CaptionName": "App.Listform.ListformField.IsDestination", + "En": "Delivery Location", + "Tr": "Teslim Konumu" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 16, + "TableName": null, + "DefaultFilter": "\"IsDeleted\" = 'false'", + "SelectCommand": "Prc_V_MaterialRequestPlanSource", + "SelectCommandType": 2, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": null, + "DeleteBeforeCommand": null, + "DeleteAfterCommand": null, + "DeleteFieldsDefaultValueDto": [], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": null, + "InsertFieldsDefaultValueDto": [], + "UpdateCommand": "EXEC Prc_P_MaterialRequestPlanLineSave @Id, 'Transfer', @PlanQuantity, @TenantId, @LastModifierId", + "UpdateBeforeCommand": null, + "UpdateAfterCommand": null, + "UpdateFieldsDefaultValueDto": [ + { + "FieldName": "LastModifierId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "Id", + "FieldDbType": 16, + "Value": "@ID", + "CustomValueType": 2, + "SqlQuery": null + } + ], + "FormFieldsDefaultValueDto": [], + "WidgetsDto": [], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Prc.MaterialRequestPlanSource", + "CultureName": "en", + "Name": "App.Prc.MaterialRequestPlanSource", + "KeyFieldName": "Id", + "Title": "App.Prc.MaterialRequestPlanSource.Title", + "SortMode": "single", + "PageSize": 10, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Prc.MaterialRequestPlanSource.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "auto", + "WhiteSpace": "nowrap", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "multiple", + "AllowSelectAll": true, + "SelectAllMode": "page", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "cell", + "RefreshMode": "full", + "AllowUpdating": true, + "AllowDetail": false, + "AllowDeleting": false, + "AllowAllDeleting": false, + "AllowAdding": false, + "AllowDuplicate": false, + "OpenDetailAfterInsert": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Prc.MaterialRequestPlanSource.Title", + "ShowTitle": true, + "Width": 600, + "Height": 260, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [], + "PermissionDto": { + "C": "App.Prc.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.Update", + "D": "App.Prc.MaterialRequestPlanSource.Delete", + "E": "App.Prc.MaterialRequestPlanSource.Export", + "I": "App.Prc.MaterialRequestPlanSource.Import", + "N": null + }, + "CommandColumnDto": [ + { + "ButtonPosition": 0, + "AuthName": "App.Prc.MaterialRequestPlanSource.Update", + "Text": "App.Prc.MaterialRequestPlan.TakeMax", + "Hint": "App.Prc.MaterialRequestPlan.TakeMax", + "Icon": "", + "Url": null, + "UrlTarget": null, + "DialogName": null, + "DialogParameters": null, + "OnClick": "(() => { const r = e && e.row; if (!r) return; e.component.cellValue(r.rowIndex, 'PlanQuantity', r.data.MaxQuantity); e.component.saveEditData(); })()", + "IsVisible": true, + "VisibleExpression": "(e) => !!e.row && e.row.data.MaxQuantity > 0 && Number(e.row.data.PlanQuantity || 0) !== e.row.data.MaxQuantity" + }, + { + "ButtonPosition": 1, + "AuthName": "App.Prc.MaterialRequestPlanSource.Update", + "Text": "App.Prc.MaterialRequestPlan.PlanSelected", + "Hint": "App.Prc.MaterialRequestPlan.PlanSelected", + "Icon": "", + "Url": null, + "UrlTarget": null, + "DialogName": null, + "DialogParameters": null, + "OnClick": "(async () => { const rows = getSelectedRowsData() || []; if (!rows.length) return; for (const r of rows) { await dynamicFetch('list-form-data/update', 'POST', null, { listFormCode, keys: [r.Id], data: { PlanQuantity: -1 } }); } refreshData(); })().catch(() => refreshData())", + "IsVisible": true, + "VisibleExpression": null + } + ], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Prc.MaterialRequestPlanSource", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": false, + "SubFormsListFormType": "Form", + "SubFormsDto": [], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Prc.MaterialRequestPlanSource", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.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.MaterialRequestPlanSource", + "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": "BaseId", + "CaptionName": "App.Listform.ListformField.BaseId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "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.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.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.MaterialRequestPlanSource", + "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": "BranchId", + "CaptionName": "App.Listform.ListformField.BranchId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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 Sas_T_Branch WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.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.MaterialRequestPlanSource", + "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": "WarehouseId", + "CaptionName": "App.Listform.ListformField.WarehouseId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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], CONCAT(Code, ' - ', Name) AS [Name] FROM Inv_T_Warehouse WHERE TenantId = '@TENANTID' ORDER BY Code" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.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.MaterialRequestPlanSource", + "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": "LocationId", + "CaptionName": "App.Listform.ListformField.LocationId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 1, + "SortDirection": "asc", + "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 l.Id AS [Key], CONCAT(w.Code, '/', l.Name) AS [Name] FROM Inv_T_Location l INNER JOIN Inv_T_Warehouse w ON w.Id = l.WarehouseId WHERE l.TenantId = '@TENANTID' ORDER BY w.Code, l.Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.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.MaterialRequestPlanSource", + "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": 6, + "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": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.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": "{\"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.MaterialRequestPlanSource", + "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": "PlanQuantity", + "CaptionName": "App.Listform.ListformField.PlanQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": 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": "sum", + "ValueFormat": "#,##0.##", + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": "{0}", + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [ + { + "Type": "compare", + "Message": "App.Prc.MaterialRequestPlan.PlanQuantityMax", + "IgnoreEmptyValue": true, + "Reevaluate": true, + "ComparisonType": "<=", + "ComparisonTarget": "MaxQuantity", + "ValidationCallback": null, + "Pattern": "", + "Max": null, + "Min": null, + "Trim": true + } + ], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": null, + "ConditionValue": null, + "CssStyles": "background-color:rgba(99,102,241,.18) | box-shadow:inset 0 0 0 1px rgba(99,102,241,.6) | font-weight:600 | cursor:text", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.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,\"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.MaterialRequestPlanSource", + "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": "OnHand", + "CaptionName": "App.Listform.ListformField.OnHand", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.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": "{\"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.MaterialRequestPlanSource", + "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": "ReservedQuantity", + "CaptionName": "App.Listform.ListformField.ReservedQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.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": "{\"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.MaterialRequestPlanSource", + "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": "FreeQuantity", + "CaptionName": "App.Listform.ListformField.FreeQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": 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.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.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": "{\"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.MaterialRequestPlanSource", + "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": "IsDestination", + "CaptionName": "App.Listform.ListformField.IsDestination", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 11, + "SourceDbType": 3, + "CultureName": "en", + "DataType": "boolean", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanSource.Create", + "R": "App.Prc.MaterialRequestPlanSource", + "U": "App.Prc.MaterialRequestPlanSource.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxCheckBox", + "ColSpan": 1, + "EditorOptions": "{\"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, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Prc.MaterialRequestPlanSource", + "App.Prc.MaterialRequestPlanSource.Title", + "App.Prc.MaterialRequestPlanSource.Desc", + "App.Listform.ListformField.FreeQuantity", + "App.Listform.ListformField.PlanQuantity", + "App.Listform.ListformField.IsDestination", + "App.Listform.ListformField.MaxQuantity" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Prc.MaterialRequestPlanSource", + "App.Prc.MaterialRequestPlanSource.Create", + "App.Prc.MaterialRequestPlanSource.Update", + "App.Prc.MaterialRequestPlanSource.Delete", + "App.Prc.MaterialRequestPlanSource.Export", + "App.Prc.MaterialRequestPlanSource.Import" + ], + "MenuCodes": [], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/wizard/Inventory_TransferImportItem.json b/configs/seeds/wizard/Prc_MaterialRequestPlanStock.json similarity index 82% rename from configs/seeds/wizard/Inventory_TransferImportItem.json rename to configs/seeds/wizard/Prc_MaterialRequestPlanStock.json index 890b1a7f..096be9ef 100644 --- a/configs/seeds/wizard/Inventory_TransferImportItem.json +++ b/configs/seeds/wizard/Prc_MaterialRequestPlanStock.json @@ -1,40 +1,40 @@ { "Wizard": { "ComponentKind": 0, - "WizardName": "Inventory_TransferImportItem", - "WizardCode": "App.Inventory.TransferImportItem", - "SeededAt": "2026-10-12T22:05:00+03:00", + "WizardName": "Prc_MaterialRequestPlanStock", + "WizardCode": "App.Prc.MaterialRequestPlanStock", + "SeededAt": "2026-10-13T12:00:00+03:00", "CustomComponentName": null, - "PermissionGroupName": "App.Inventory", - "ModuleId": "Inventory", + "PermissionGroupName": "App.Prc", + "ModuleId": "Prc", "Menu": { "MenuParentPath": [ { - "Code": "App.Inventory", - "Icon": "FcPackage", - "En": "Inventory", - "Tr": "Envanter" + "Code": "App.Prc", + "Icon": "FcShop", + "En": "Purchasing", + "Tr": "Satınalma" } ], - "MenuParentCode": "App.Inventory.Operations", - "MenuParentIcon": "FcServices", + "MenuParentCode": "App.Prc.MaterialRequests", + "MenuParentIcon": "FcList", "CreateMenu": false, - "MenuCode": "App.Inventory.TransferImportItem", + "MenuCode": "App.Prc.MaterialRequestPlanStock", "MenuOrder": 0, - "MenuUrl": "/admin/list/App.Inventory.TransferImportItem", + "MenuUrl": "/admin/list/App.Prc.MaterialRequestPlanStock", "MenuIcon": "FcViewDetails" }, "Language": { - "MenuParentEn": "Operations", - "MenuParentTr": "Operasyonlar", - "PermissionGroupEn": "Inventory", - "PermissionGroupTr": "Envanter", - "MenuEn": "Transfer Request Lines", - "MenuTr": "Transfer Talep Kalemleri", - "TitleEn": "Transfer Request Lines", - "TitleTr": "Transfer Talep Kalemleri", - "DescEn": "Transfer Request Lines — approved material request lines to be fulfilled by transfer, opened with Import from Requests of a draft internal transfer.\nOnly waiting lines of requests in the document branch that are not in another open transfer are listed; quantity is the remaining (requested − delivered) quantity.\nSelect lines and click Transfer Selected; the destination location of the transfer is taken from the request when empty.", - "DescTr": "Transfer Talep Kalemleri — transferle karşılanacak onaylı malzeme talebi kalemleri; taslak iç transferin Talepten Aktar butonuyla açılır.\nYalnız belgenin şubesindeki, başka açık transferde olmayan bekleyen kalemler listelenir; miktar kalan (talep − teslim) miktardır.\nSatırlar seçilip Seçilenleri Aktar'a basılır; transferin hedef konumu boşsa talebin konumu yazılır." + "MenuParentEn": "Material Requests", + "MenuParentTr": "Talepler", + "PermissionGroupEn": "Purchasing", + "PermissionGroupTr": "Satınalma", + "MenuEn": "Warehouse Stocks", + "MenuTr": "Depo Stokları", + "TitleEn": "Warehouse Stocks", + "TitleTr": "Depo Stokları", + "DescEn": "Warehouse Stocks — the on-hand stock of the selected request line's product in every location, by lot.\nWhere: Purchasing › Requests › Planning › Warehouse Stocks tab (no menu of its own); filtered by the product of the row selected in Planning.\nFields: branch, warehouse, location, lot/serial number, quantity (total in the footer), unit, in date, last move.\nUsage: read-only; it shows where the product can be moved from before choosing Internal Transfer and a source location in Plan. Stock changes only through inventory operations (Inventory › Receipts, Deliveries, Internal Transfers).", + "DescTr": "Depo Stokları — Planlama'da seçili talep kaleminin ürününün bütün konumlardaki eldeki stoğu, lot bazında.\nNerede: Satınalma › Talepler › Planlama › Depo Stokları sekmesi (kendi menüsü yoktur); Planlama'da seçilen satırın ürününe süzülür.\nAlanlar: şube, depo, konum, lot/seri no, miktar (alt toplamı ile), birim, giriş tarihi, son hareket.\nKullanım: salt okunurdur; Planla'da İç Transfer kararı ve kaynak konum seçilmeden önce ürünün nereden taşınabileceğini gösterir. Stok yalnız envanter işlemleriyle değişir (Envanter › Alımlar, Teslimatlar, İç Transferler)." }, "Groups": [ { @@ -45,30 +45,36 @@ "En": "Id", "Tr": "Kimlik" }, - { - "FieldName": "BaseId", - "CaptionName": "App.Listform.ListformField.BaseId", - "En": "BaseId", - "Tr": "BaseId" - }, - { - "FieldName": "RequestNo", - "CaptionName": "App.Listform.ListformField.RequestNo", - "En": "Request No", - "Tr": "Talep No" - }, - { - "FieldName": "RequesterUserId", - "CaptionName": "App.Listform.ListformField.RequesterUserId", - "En": "Requester", - "Tr": "Talep Eden" - }, { "FieldName": "ProductId", "CaptionName": "App.Listform.ListformField.ProductId", "En": "Product", "Tr": "Ürün" }, + { + "FieldName": "BranchId", + "CaptionName": "App.Listform.ListformField.BranchId", + "En": "Branch Name", + "Tr": "Şube Adı" + }, + { + "FieldName": "WarehouseId", + "CaptionName": "App.Listform.ListformField.WarehouseId", + "En": "Warehouse", + "Tr": "Depo" + }, + { + "FieldName": "LocationId", + "CaptionName": "App.Listform.ListformField.LocationId", + "En": "Location", + "Tr": "Konum" + }, + { + "FieldName": "LotNo", + "CaptionName": "App.Listform.ListformField.LotNo", + "En": "Lot/Serial Number", + "Tr": "Lot/Seri No" + }, { "FieldName": "Quantity", "CaptionName": "App.Listform.ListformField.Quantity", @@ -78,26 +84,20 @@ { "FieldName": "UomId", "CaptionName": "App.Listform.ListformField.UomId", - "En": "Unit", + "En": "Uom", "Tr": "Birim" }, { - "FieldName": "LocationId", - "CaptionName": "App.Listform.ListformField.LocationId", - "En": "Location", - "Tr": "Konum" + "FieldName": "InDate", + "CaptionName": "App.Listform.ListformField.InDate", + "En": "In Date", + "Tr": "Giriş Tarihi" }, { - "FieldName": "DueDate", - "CaptionName": "App.Listform.ListformField.DueDate", - "En": "Due Date", - "Tr": "İstenen Tarih" - }, - { - "FieldName": "RequestReason", - "CaptionName": "App.Listform.ListformField.RequestReason", - "En": "Reason", - "Tr": "Neden" + "FieldName": "LastMoveDate", + "CaptionName": "App.Listform.ListformField.LastMoveDate", + "En": "Last Move", + "Tr": "Son Hareket" } ] } @@ -106,11 +106,11 @@ "ListForm": { "EditType": null, "DataSourceCode": "Default", - "KeyFieldDbSourceType": 16, + "KeyFieldDbSourceType": 9, "TableName": null, - "DefaultFilter": "", - "SelectCommand": "Prc_V_MaterialRequestTransferItem", - "SelectCommandType": 2, + "DefaultFilter": "\"IsDeleted\" = 'false' AND \"Quantity\" <> 0", + "SelectCommand": "Inv_T_Stock", + "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": null, "SeedSyncInsert": false, @@ -119,53 +119,29 @@ "DeleteCommand": null, "DeleteBeforeCommand": null, "DeleteAfterCommand": null, - "DeleteFieldsDefaultValueDto": [ - { - "FieldName": "Id", - "FieldDbType": 16, - "Value": "@ID", - "CustomValueType": 2, - "SqlQuery": null - } - ], + "DeleteFieldsDefaultValueDto": [], "InsertCommand": null, "InsertBeforeCommand": null, "InsertAfterCommand": null, - "InsertFieldsDefaultValueDto": [ - { - "FieldName": "Id", - "FieldDbType": 9, - "Value": "@NEWID", - "CustomValueType": 2, - "SqlQuery": null - } - ], - "UpdateCommand": "EXEC Inv_P_TransferImportItem @Id", + "InsertFieldsDefaultValueDto": [], + "UpdateCommand": null, "UpdateBeforeCommand": null, "UpdateAfterCommand": null, - "UpdateFieldsDefaultValueDto": [ - { - "FieldName": "Id", - "FieldDbType": 16, - "Value": "@ID", - "CustomValueType": 2, - "SqlQuery": "" - } - ], + "UpdateFieldsDefaultValueDto": [], "FormFieldsDefaultValueDto": [], "WidgetsDto": [], "ExtraFilterEditDto": [], - "ListFormCode": "App.Inventory.TransferImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanStock", "CultureName": "en", - "Name": "App.Inventory.TransferImportItem", + "Name": "App.Prc.MaterialRequestPlanStock", "KeyFieldName": "Id", - "Title": "App.Inventory.TransferImportItem.Title", + "Title": "App.Prc.MaterialRequestPlanStock.Title", "SortMode": "single", "PageSize": 10, "Width": 0, "Height": 0, "FullHeight": false, - "Description": "App.Inventory.TransferImportItem.Desc", + "Description": "App.Prc.MaterialRequestPlanStock.Desc", "FilterRowDto": { "Visible": true, "ApplyFilter": "auto", @@ -198,9 +174,9 @@ "AutoExpandAll": false }, "SelectionDto": { - "Mode": "multiple", - "AllowSelectAll": true, - "SelectAllMode": "page", + "Mode": "none", + "AllowSelectAll": false, + "SelectAllMode": "allPages", "ShowCheckBoxesMode": "always" }, "ColumnOptionDto": { @@ -321,7 +297,7 @@ "LoadPanelText": "Loading..." }, "EditingOptionDto": { - "Mode": "batch", + "Mode": "popup", "RefreshMode": "full", "AllowUpdating": false, "AllowDetail": false, @@ -337,10 +313,10 @@ "StartEditAction": "click", "EditColumnName": null, "Popup": { - "Title": "App.Inventory.TransferImportItem.Title", + "Title": "App.Prc.MaterialRequestPlanStock.Title", "ShowTitle": true, - "Width": 1000, - "Height": 700, + "Width": 800, + "Height": 400, "FullScreen": false, "HideOnOutsideClick": true, "ResizeEnabled": true, @@ -353,44 +329,21 @@ "AddDialogName": null, "AddDialogParameters": null }, - "EditingFormDto": [ - { - "Order": 1, - "ItemType": "group", - "Caption": "", - "ColCount": 2, - "ColSpan": 2 - } - ], + "EditingFormDto": [], "PermissionDto": { - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.Update", - "D": "App.Inventory.TransferImportItem.Delete", - "E": "App.Inventory.TransferImportItem.Export", - "I": "App.Inventory.TransferImportItem.Import", - "N": "App.Inventory.TransferImportItem.Note" + "C": "App.Prc.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.Update", + "D": "App.Prc.MaterialRequestPlanStock.Delete", + "E": "App.Prc.MaterialRequestPlanStock.Export", + "I": "App.Prc.MaterialRequestPlanStock.Import", + "N": "App.Prc.MaterialRequestPlanStock.Note" }, - "CommandColumnDto": [ - { - "ButtonPosition": 1, - "AuthName": "App.Inventory.TransferImportItem.Update", - "Text": "App.Prc.PurchaseImportItem.TransferSelected", - "Hint": "App.Prc.PurchaseImportItem.TransferSelected", - "Icon": "download", - "Url": null, - "UrlTarget": "_blank", - "DialogName": null, - "DialogParameters": null, - "OnClick": "(async () => { const rows = getSelectedRowsData(); if (!rows.length) return; for (const r of rows) { await dynamicFetch('list-form-data/update', 'POST', null, { listFormCode, keys: [r.Id], data: {} }); } const c = dialog.config; if (c && c.component) { dialog.setConfig({}); if (c.onClose) c.onClose(); } else refreshData(); })().catch(() => refreshData())", - "IsVisible": true, - "VisibleExpression": null - } - ], + "CommandColumnDto": [], "StateStoringDto": { "Enabled": true, "Type": "custom", - "StorageKey": "listFormGridStorage-App.Inventory.TransferImportItem", + "StorageKey": "listFormGridStorage-App.Prc.MaterialRequestPlanStock", "SavingTimeout": 5000 }, "CustomJsSources": [], @@ -689,7 +642,7 @@ "Fields": [ { "EditType": null, - "ListFormCode": "App.Inventory.TransferImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanStock", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -711,14 +664,14 @@ "IsActive": true, "Width": 0, "ListOrderNo": 1, - "SourceDbType": 16, + "SourceDbType": 9, "CultureName": "en", "DataType": "string", "SortIndex": 0, "SortDirection": null, "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, + "AllowEditing": false, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -774,9 +727,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.Update", + "C": "App.Prc.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.Update", "E": true, "I": true }, @@ -815,385 +768,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.TransferImportItem", - "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": "BaseId", - "CaptionName": "App.Listform.ListformField.BaseId", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": false, - "IsActive": true, - "Width": 0, - "ListOrderNo": 2, - "SourceDbType": 9, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.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.Inventory.TransferImportItem", - "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": "RequestNo", - "CaptionName": "App.Listform.ListformField.RequestNo", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": true, - "IsActive": true, - "Width": 0, - "ListOrderNo": 3, - "SourceDbType": 16, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.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": "{\"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.Inventory.TransferImportItem", - "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": "RequesterUserId", - "CaptionName": "App.Listform.ListformField.RequesterUserId", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": true, - "IsActive": true, - "Width": 0, - "ListOrderNo": 4, - "SourceDbType": 9, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 2, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": "SELECT Id AS [Key], CONCAT(Name, ' ', Surname) AS [Name] FROM AbpUsers WHERE TenantId = '@TENANTID' ORDER BY Name, Surname" - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.Update", - "E": true, - "I": true - }, - "CanRead": false, - "CanCreate": false, - "CanUpdate": false, - "CanExport": false, - "DefaultValue": null, - "DefaultValueType": 0, - "PivotSettingsDto": { - "IsPivot": true, - "Expanded": false, - "SortOrder": "asc", - "Area": "filter", - "Format": null, - "SummaryType": null, - "GroupInterval": "", - "WordWrapEnabled": false - }, - "Alignment": "left", - "Format": null, - "EditOrderNo": null, - "EditGroupOrderNo": null, - "EditorType2": "dxSelectBox", - "ColSpan": 1, - "EditorOptions": "{\"searchEnabled\":true}", - "GridBoxOptions": null, - "TagBoxOptions": null, - "ImageUploadOptions": null, - "EditorScript": null, - "LastModificationTime": null, - "LastModifierId": null, - "CreationTime": "0001-01-01T00:00:00", - "CreatorId": null, - "Id": "00000000-0000-0000-0000-000000000000" - }, - { - "EditType": null, - "ListFormCode": "App.Inventory.TransferImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanStock", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1211,18 +786,18 @@ "CaptionName": "App.Listform.ListformField.ProductId", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, - "ListOrderNo": 5, + "ListOrderNo": 2, "SourceDbType": 9, "CultureName": "en", "DataType": "string", "SortIndex": 0, "SortDirection": null, "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, + "AllowEditing": false, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1278,9 +853,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.Update", + "C": "App.Prc.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.Update", "E": true, "I": true }, @@ -1305,134 +880,8 @@ "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.Inventory.TransferImportItem", - "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": 6, - "SourceDbType": 7, - "CultureName": "en", - "DataType": "number", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.Update", - "E": true, - "I": true - }, - "CanRead": false, - "CanCreate": false, - "CanUpdate": false, - "CanExport": false, - "DefaultValue": null, - "DefaultValueType": 0, - "PivotSettingsDto": { - "IsPivot": true, - "Expanded": false, - "SortOrder": "asc", - "Area": "filter", - "Format": null, - "SummaryType": null, - "GroupInterval": "", - "WordWrapEnabled": false - }, - "Alignment": "right", - "Format": null, - "EditOrderNo": null, - "EditGroupOrderNo": null, - "EditorType2": "dxNumberBox", "ColSpan": 1, - "EditorOptions": "{\"format\":\"#,##0.####\"}", + "EditorOptions": null, "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1445,7 +894,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.TransferImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanStock", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1459,22 +908,22 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "UomId", - "CaptionName": "App.Listform.ListformField.UomId", + "FieldName": "BranchId", + "CaptionName": "App.Listform.ListformField.BranchId", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 7, - "SourceDbType": 16, + "ListOrderNo": 3, + "SourceDbType": 9, "CultureName": "en", "DataType": "string", "SortIndex": 0, "SortDirection": null, "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, + "AllowEditing": false, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1524,15 +973,15 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Adm_T_Uom WHERE IsDeleted = 'false' ORDER BY Name" + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Sas_T_Branch WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.Update", + "C": "App.Prc.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.Update", "E": true, "I": true }, @@ -1558,7 +1007,7 @@ "EditGroupOrderNo": null, "EditorType2": "dxSelectBox", "ColSpan": 1, - "EditorOptions": "{\"searchEnabled\":true}", + "EditorOptions": null, "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1571,7 +1020,133 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.TransferImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanStock", + "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": "WarehouseId", + "CaptionName": "App.Listform.ListformField.WarehouseId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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], CONCAT(Code, ' - ', Name) AS [Name] FROM Inv_T_Warehouse WHERE TenantId = '@TENANTID' ORDER BY Code" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.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.MaterialRequestPlanStock", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1592,15 +1167,15 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 8, + "ListOrderNo": 5, "SourceDbType": 9, "CultureName": "en", "DataType": "string", - "SortIndex": 0, - "SortDirection": null, + "SortIndex": 1, + "SortDirection": "asc", "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, + "AllowEditing": false, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1656,9 +1231,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.Update", + "C": "App.Prc.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.Update", "E": true, "I": true }, @@ -1684,7 +1259,7 @@ "EditGroupOrderNo": null, "EditorType2": "dxSelectBox", "ColSpan": 1, - "EditorOptions": "{\"showClearButton\":true,\"searchEnabled\":true}", + "EditorOptions": null, "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1697,7 +1272,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.TransferImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanStock", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1711,22 +1286,22 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "DueDate", - "CaptionName": "App.Listform.ListformField.DueDate", + "FieldName": "LotNo", + "CaptionName": "App.Listform.ListformField.LotNo", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 9, - "SourceDbType": 6, + "ListOrderNo": 6, + "SourceDbType": 16, "CultureName": "en", - "DataType": "datetime", + "DataType": "string", "SortIndex": 0, "SortDirection": null, "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, + "AllowEditing": false, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1782,9 +1357,387 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.Update", + "C": "App.Prc.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.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.MaterialRequestPlanStock", + "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": 7, + "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": "sum", + "ValueFormat": "#,##0.##", + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": "{0}", + "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.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "right", + "Format": null, + "EditOrderNo": 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.MaterialRequestPlanStock", + "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": 8, + "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.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.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.MaterialRequestPlanStock", + "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": "InDate", + "CaptionName": "App.Listform.ListformField.InDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.Update", "E": true, "I": true }, @@ -1810,7 +1763,7 @@ "EditGroupOrderNo": null, "EditorType2": "dxDateBox", "ColSpan": 1, - "EditorOptions": "{\"type\":\"date\",\"displayFormat\":\"dd.MM.yyyy\",\"useMaskBehavior\":true,\"showClearButton\":true}", + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"readOnly\":true}", "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1823,7 +1776,7 @@ }, { "EditType": null, - "ListFormCode": "App.Inventory.TransferImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanStock", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1837,22 +1790,22 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "RequestReason", - "CaptionName": "App.Listform.ListformField.RequestReason", + "FieldName": "LastMoveDate", + "CaptionName": "App.Listform.ListformField.LastMoveDate", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, "ListOrderNo": 10, - "SourceDbType": 16, + "SourceDbType": 6, "CultureName": "en", - "DataType": "string", + "DataType": "datetime", "SortIndex": 0, "SortDirection": null, "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, + "AllowEditing": false, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1908,9 +1861,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Inventory.TransferImportItem.Create", - "R": "App.Inventory.TransferImportItem", - "U": "App.Inventory.TransferImportItem.Update", + "C": "App.Prc.MaterialRequestPlanStock.Create", + "R": "App.Prc.MaterialRequestPlanStock", + "U": "App.Prc.MaterialRequestPlanStock.Update", "E": true, "I": true }, @@ -1934,9 +1887,9 @@ "Format": null, "EditOrderNo": null, "EditGroupOrderNo": null, - "EditorType2": "dxTextBox", - "ColSpan": 2, - "EditorOptions": "{\"showClearButton\":true,\"maxLength\":256}", + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"readOnly\":true}", "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1948,23 +1901,23 @@ "Id": "00000000-0000-0000-0000-000000000000" } ], - "IsDeletedField": false, + "IsDeletedField": true, "IsCreatedField": true, "InsertedRecords": { "LanguageKeys": [ - "App.Inventory.TransferImportItem", - "App.Inventory.TransferImportItem.Title", - "App.Inventory.TransferImportItem.Desc" + "App.Prc.MaterialRequestPlanStock", + "App.Prc.MaterialRequestPlanStock.Title", + "App.Prc.MaterialRequestPlanStock.Desc" ], "PermissionGroupNames": [], "PermissionNames": [ - "App.Inventory.TransferImportItem", - "App.Inventory.TransferImportItem.Create", - "App.Inventory.TransferImportItem.Update", - "App.Inventory.TransferImportItem.Delete", - "App.Inventory.TransferImportItem.Export", - "App.Inventory.TransferImportItem.Import", - "App.Inventory.TransferImportItem.Note" + "App.Prc.MaterialRequestPlanStock", + "App.Prc.MaterialRequestPlanStock.Create", + "App.Prc.MaterialRequestPlanStock.Update", + "App.Prc.MaterialRequestPlanStock.Delete", + "App.Prc.MaterialRequestPlanStock.Export", + "App.Prc.MaterialRequestPlanStock.Import", + "App.Prc.MaterialRequestPlanStock.Note" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/Prc_PurchaseOrderImportItem.json b/configs/seeds/wizard/Prc_MaterialRequestPlanSupplier.json similarity index 81% rename from configs/seeds/wizard/Prc_PurchaseOrderImportItem.json rename to configs/seeds/wizard/Prc_MaterialRequestPlanSupplier.json index 6a9c26a6..a8c85468 100644 --- a/configs/seeds/wizard/Prc_PurchaseOrderImportItem.json +++ b/configs/seeds/wizard/Prc_MaterialRequestPlanSupplier.json @@ -1,9 +1,9 @@ { "Wizard": { "ComponentKind": 0, - "WizardName": "Prc_PurchaseOrderImportItem", - "WizardCode": "App.Prc.PurchaseOrderImportItem", - "SeededAt": "2026-10-11T21:07:00+03:00", + "WizardName": "Prc_MaterialRequestPlanSupplier", + "WizardCode": "App.Prc.MaterialRequestPlanSupplier", + "SeededAt": "2026-10-13T12:00:00+03:00", "CustomComponentName": null, "PermissionGroupName": "App.Prc", "ModuleId": "Prc", @@ -16,25 +16,25 @@ "Tr": "Satınalma" } ], - "MenuParentCode": "App.Prc.Orders", - "MenuParentIcon": "FcShop", + "MenuParentCode": "App.Prc.MaterialRequests", + "MenuParentIcon": "FcList", "CreateMenu": false, - "MenuCode": "App.Prc.PurchaseOrderImportItem", + "MenuCode": "App.Prc.MaterialRequestPlanSupplier", "MenuOrder": 0, - "MenuUrl": "/admin/list/App.Prc.PurchaseOrderImportItem", - "MenuIcon": "FcTodoList" + "MenuUrl": "/admin/list/App.Prc.MaterialRequestPlanSupplier", + "MenuIcon": "FcViewDetails" }, "Language": { - "MenuParentEn": "Orders", - "MenuParentTr": "Siparişler", + "MenuParentEn": "Material Requests", + "MenuParentTr": "Talepler", "PermissionGroupEn": "Purchasing", "PermissionGroupTr": "Satınalma", - "MenuEn": "Order Request Lines", - "MenuTr": "Sipariş Talep Kalemleri", - "TitleEn": "Order Request Lines", - "TitleTr": "Sipariş Talep Kalemleri", - "DescEn": "Order Request Lines — the lines of approved material requests that are not on any RFQ or order yet, listed for a draft purchase order written without quotes.\nWhere: Purchasing › Orders › Purchase Orders › Request Lines tab (no menu of its own); grouped by request; only a draft order takes lines.\nFields: request no, requester, product, quantity, unit, requested date, reason.\nUsage: select the lines to order with the row checkboxes (several requests at once) and press Transfer Selected; the lines are copied with the agreement or supplier price and the requested date, and the order's Source shows the request numbers.", - "DescTr": "Sipariş Talep Kalemleri — onaylı malzeme taleplerinin henüz hiçbir teklifte ya da siparişte olmayan kalemleri, teklifsiz yazılan taslak sipariş için listelenir.\nNerede: Satınalma › Siparişler › Satınalma Siparişleri › Talep Kalemleri sekmesi (kendi menüsü yoktur); talebe göre gruplanır; yalnız taslak sipariş kalem alır.\nAlanlar: talep no, talep eden, ürün, miktar, birim, istenen tarih, neden.\nKullanım: sipariş edilecek satırlar, satır başındaki kutuyla seçilir (birden fazla talep birlikte) ve Seçilenleri Aktar'a basılır; kalemler sözleşme ya da tedarikçi fiyatı ve istenen termin ile kopyalanır, siparişin Kaynak'ında talep numaraları görünür." + "MenuEn": "Suppliers", + "MenuTr": "Tedarikçiler", + "TitleEn": "Product Suppliers", + "TitleTr": "Ürün Tedarikçileri", + "DescEn": "Suppliers — the price list of the selected request line's product: which suppliers sell it, at what price and lead time.\nWhere: Purchasing › Requests › Planning › Suppliers tab (no menu of its own); filtered by the product of the row selected in Planning. The list is maintained in Inventory › Products › Purchasing tab.\nFields: supplier, min. quantity, unit, unit price, currency, lead time (days), last purchase date.\nUsage: read-only; it helps pick the Supplier in Plan. The supplier's price here is copied to the RFQ line opened by the Purchasing decision. Completing a receipt from a purchase order refreshes the price and the last purchase date.", + "DescTr": "Tedarikçiler — Planlama'da seçili talep kaleminin ürününün fiyat listesi: hangi tedarikçi, hangi fiyat ve teslim süresiyle satıyor.\nNerede: Satınalma › Talepler › Planlama › Tedarikçiler sekmesi (kendi menüsü yoktur); Planlama'da seçilen satırın ürününe süzülür. Liste Envanter › Ürünler › Satınalma sekmesinde tutulur.\nAlanlar: tedarikçi, min. miktar, birim, birim fiyat, para birimi, teslim süresi (gün), son alım tarihi.\nKullanım: salt okunurdur; Planla'da Tedarikçi seçimine yardım eder. Satınalma kararıyla açılan teklif kalemine tedarikçinin buradaki fiyatı yazılır. Siparişli alım tamamlanınca fiyat ve son alım tarihi kendiliğinden yenilenir." }, "Groups": [ { @@ -45,35 +45,23 @@ "En": "Id", "Tr": "Kimlik" }, - { - "FieldName": "BaseId", - "CaptionName": "App.Listform.ListformField.BaseId", - "En": "Base Document", - "Tr": "Ana Belge" - }, - { - "FieldName": "RequestNo", - "CaptionName": "App.Listform.ListformField.RequestNo", - "En": "Request No", - "Tr": "Talep No" - }, - { - "FieldName": "RequesterUserId", - "CaptionName": "App.Listform.ListformField.RequesterUserId", - "En": "Requester", - "Tr": "Talep Eden" - }, { "FieldName": "ProductId", - "CaptionName": "App.Listform.ListformField.ProductId", + "CaptionName": "App.Listform.ListformField.Product", "En": "Product", "Tr": "Ürün" }, { - "FieldName": "Quantity", - "CaptionName": "App.Listform.ListformField.Quantity", - "En": "Quantity", - "Tr": "Miktar" + "FieldName": "ContactId", + "CaptionName": "App.Listform.ListformField.Supplier", + "En": "Supplier", + "Tr": "Tedarikçi" + }, + { + "FieldName": "MinQuantity", + "CaptionName": "App.Listform.ListformField.MinQuantity", + "En": "Min. Quantity", + "Tr": "Min. Miktar" }, { "FieldName": "UomId", @@ -82,16 +70,28 @@ "Tr": "Birim" }, { - "FieldName": "DueDate", - "CaptionName": "App.Listform.ListformField.DueDate", - "En": "Due Date", - "Tr": "Bitiş Tarihi" + "FieldName": "Price", + "CaptionName": "App.Listform.ListformField.UnitPrice", + "En": "Unit Price", + "Tr": "Birim Fiyat" }, { - "FieldName": "RequestReason", - "CaptionName": "App.Listform.ListformField.RequestReason", - "En": "Request Reason", - "Tr": "Talep Nedeni" + "FieldName": "CurrencyId", + "CaptionName": "App.Listform.ListformField.Currency", + "En": "Currency", + "Tr": "Para Birimi" + }, + { + "FieldName": "LeadTimeDays", + "CaptionName": "App.Listform.ListformField.LeadTimeDays", + "En": "Lead Time (days)", + "Tr": "Teslim Süresi (gün)" + }, + { + "FieldName": "LastPurchaseDate", + "CaptionName": "App.Listform.ListformField.LastPurchaseDate", + "En": "Last Purchase Date", + "Tr": "Son Alım Tarihi" } ] } @@ -100,11 +100,11 @@ "ListForm": { "EditType": null, "DataSourceCode": "Default", - "KeyFieldDbSourceType": 16, + "KeyFieldDbSourceType": 9, "TableName": null, - "DefaultFilter": null, - "SelectCommand": "Prc_V_PurchaseImportItem", - "SelectCommandType": 2, + "DefaultFilter": "\"IsDeleted\" = 'false'", + "SelectCommand": "Inv_T_ProductSupplier", + "SelectCommandType": 1, "SelectFieldsDefaultValueDto": [], "SeedFilePath": null, "SeedSyncInsert": false, @@ -113,53 +113,29 @@ "DeleteCommand": null, "DeleteBeforeCommand": null, "DeleteAfterCommand": null, - "DeleteFieldsDefaultValueDto": [ - { - "FieldName": "Id", - "FieldDbType": 16, - "Value": "@ID", - "CustomValueType": 2, - "SqlQuery": null - } - ], + "DeleteFieldsDefaultValueDto": [], "InsertCommand": null, "InsertBeforeCommand": null, "InsertAfterCommand": null, - "InsertFieldsDefaultValueDto": [ - { - "FieldName": "Id", - "FieldDbType": 9, - "Value": "@NEWID", - "CustomValueType": 2, - "SqlQuery": null - } - ], - "UpdateCommand": "EXEC Prc_P_PurchaseImportItem @Id", + "InsertFieldsDefaultValueDto": [], + "UpdateCommand": null, "UpdateBeforeCommand": null, "UpdateAfterCommand": null, - "UpdateFieldsDefaultValueDto": [ - { - "FieldName": "Id", - "FieldDbType": 16, - "Value": "@ID", - "CustomValueType": 2, - "SqlQuery": "" - } - ], + "UpdateFieldsDefaultValueDto": [], "FormFieldsDefaultValueDto": [], "WidgetsDto": [], "ExtraFilterEditDto": [], - "ListFormCode": "App.Prc.PurchaseOrderImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanSupplier", "CultureName": "en", - "Name": "App.Prc.PurchaseOrderImportItem", + "Name": "App.Prc.MaterialRequestPlanSupplier", "KeyFieldName": "Id", - "Title": "App.Prc.PurchaseOrderImportItem.Title", + "Title": "App.Prc.MaterialRequestPlanSupplier.Title", "SortMode": "single", "PageSize": 10, "Width": 0, "Height": 0, "FullHeight": false, - "Description": "App.Prc.PurchaseOrderImportItem.Desc", + "Description": "App.Prc.MaterialRequestPlanSupplier.Desc", "FilterRowDto": { "Visible": true, "ApplyFilter": "auto", @@ -192,9 +168,9 @@ "AutoExpandAll": false }, "SelectionDto": { - "Mode": "multiple", - "AllowSelectAll": true, - "SelectAllMode": "page", + "Mode": "none", + "AllowSelectAll": false, + "SelectAllMode": "allPages", "ShowCheckBoxesMode": "always" }, "ColumnOptionDto": { @@ -315,7 +291,7 @@ "LoadPanelText": "Loading..." }, "EditingOptionDto": { - "Mode": "batch", + "Mode": "popup", "RefreshMode": "full", "AllowUpdating": false, "AllowDetail": false, @@ -331,10 +307,10 @@ "StartEditAction": "click", "EditColumnName": null, "Popup": { - "Title": "App.Prc.PurchaseOrderImportItem.Title", + "Title": "App.Prc.MaterialRequestPlanSupplier.Title", "ShowTitle": true, "Width": 800, - "Height": 125, + "Height": 400, "FullScreen": false, "HideOnOutsideClick": true, "ResizeEnabled": true, @@ -349,35 +325,19 @@ }, "EditingFormDto": [], "PermissionDto": { - "C": "App.Prc.PurchaseOrderImportItem.Create", - "R": "App.Prc.PurchaseOrderImportItem", - "U": "App.Prc.PurchaseOrderImportItem.Update", - "D": "App.Prc.PurchaseOrderImportItem.Delete", - "E": "App.Prc.PurchaseOrderImportItem.Export", - "I": "App.Prc.PurchaseOrderImportItem.Import", - "N": "App.Prc.PurchaseOrderImportItem.Note" + "C": "App.Prc.MaterialRequestPlanSupplier.Create", + "R": "App.Prc.MaterialRequestPlanSupplier", + "U": "App.Prc.MaterialRequestPlanSupplier.Update", + "D": "App.Prc.MaterialRequestPlanSupplier.Delete", + "E": "App.Prc.MaterialRequestPlanSupplier.Export", + "I": "App.Prc.MaterialRequestPlanSupplier.Import", + "N": "App.Prc.MaterialRequestPlanSupplier.Note" }, - "CommandColumnDto": [ - { - "ButtonPosition": 1, - "AuthName": "App.Prc.PurchaseOrderImportItem.Update", - "Text": "App.Prc.PurchaseImportItem.TransferSelected", - "Hint": "App.Prc.PurchaseImportItem.TransferSelected", - "Icon": "download", - "Url": null, - "UrlTarget": "_blank", - "DialogName": null, - "DialogParameters": null, - "OnClick": "(async () => { const rows = getSelectedRowsData(); if (!rows.length) return; for (const r of rows) { await dynamicFetch('list-form-data/update', 'POST', null, { listFormCode, keys: [r.Id], data: {} }); } const c = dialog.config; if (c && c.component) { dialog.setConfig({}); if (c.onClose) c.onClose(); } else refreshData(); })().catch(() => refreshData())", - "Command": null, - "IsVisible": true, - "VisibleExpression": null - } - ], + "CommandColumnDto": [], "StateStoringDto": { "Enabled": true, "Type": "custom", - "StorageKey": "listFormGridStorage-App.Prc.PurchaseOrderImportItem", + "StorageKey": "listFormGridStorage-App.Prc.MaterialRequestPlanSupplier", "SavingTimeout": 5000 }, "CustomJsSources": [], @@ -676,7 +636,7 @@ "Fields": [ { "EditType": null, - "ListFormCode": "App.Prc.PurchaseOrderImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanSupplier", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -698,7 +658,7 @@ "IsActive": true, "Width": 0, "ListOrderNo": 1, - "SourceDbType": 16, + "SourceDbType": 9, "CultureName": "en", "DataType": "string", "SortIndex": 0, @@ -761,135 +721,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseOrderImportItem.Create", - "R": "App.Prc.PurchaseOrderImportItem", - "U": "App.Prc.PurchaseOrderImportItem.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": "{\"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.PurchaseOrderImportItem", - "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": "BaseId", - "CaptionName": "App.Listform.ListformField.BaseId", - "PlaceHolder": null, - "ReadOnly": false, - "Visible": false, - "IsActive": true, - "Width": 0, - "ListOrderNo": 2, - "SourceDbType": 9, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": true, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Prc.PurchaseOrderImportItem.Create", - "R": "App.Prc.PurchaseOrderImportItem", - "U": "App.Prc.PurchaseOrderImportItem.Update", + "C": "App.Prc.MaterialRequestPlanSupplier.Create", + "R": "App.Prc.MaterialRequestPlanSupplier", + "U": "App.Prc.MaterialRequestPlanSupplier.Update", "E": true, "I": true }, @@ -928,7 +762,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseOrderImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanSupplier", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -942,15 +776,15 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "RequestNo", - "CaptionName": "App.Listform.ListformField.RequestNo", + "FieldName": "ProductId", + "CaptionName": "App.Listform.ListformField.Product", "PlaceHolder": null, "ReadOnly": false, - "Visible": true, + "Visible": false, "IsActive": true, "Width": 0, - "ListOrderNo": 3, - "SourceDbType": 16, + "ListOrderNo": 2, + "SourceDbType": 9, "CultureName": "en", "DataType": "string", "SortIndex": 0, @@ -975,8 +809,8 @@ }, "ColumnGroupingDto": { "AllowGrouping": true, - "GroupIndex": 0, - "AutoExpandGroup": true + "GroupIndex": null, + "AutoExpandGroup": false }, "ColumnCustomizationDto": { "Fixed": false, @@ -1013,9 +847,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseOrderImportItem.Create", - "R": "App.Prc.PurchaseOrderImportItem", - "U": "App.Prc.PurchaseOrderImportItem.Update", + "C": "App.Prc.MaterialRequestPlanSupplier.Create", + "R": "App.Prc.MaterialRequestPlanSupplier", + "U": "App.Prc.MaterialRequestPlanSupplier.Update", "E": true, "I": true }, @@ -1041,7 +875,7 @@ "EditGroupOrderNo": null, "EditorType2": "dxTextBox", "ColSpan": 1, - "EditorOptions": "{\"readOnly\":true}", + "EditorOptions": null, "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1054,7 +888,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseOrderImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanSupplier", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1068,22 +902,22 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "RequesterUserId", - "CaptionName": "App.Listform.ListformField.RequesterUserId", + "FieldName": "ContactId", + "CaptionName": "App.Listform.ListformField.Supplier", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 4, + "ListOrderNo": 3, "SourceDbType": 9, "CultureName": "en", "DataType": "string", - "SortIndex": 0, - "SortDirection": null, + "SortIndex": 1, + "SortDirection": "asc", "AllowSearch": true, "AllowEditing": false, - "AllowAdding": true, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1133,141 +967,15 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": "SELECT Id AS [Key], CONCAT(Name, ' ', Surname) AS [Name] FROM AbpUsers WHERE TenantId = '@TENANTID'" + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Adm_T_Contact WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseOrderImportItem.Create", - "R": "App.Prc.PurchaseOrderImportItem", - "U": "App.Prc.PurchaseOrderImportItem.Update", - "E": true, - "I": true - }, - "CanRead": false, - "CanCreate": false, - "CanUpdate": false, - "CanExport": false, - "DefaultValue": null, - "DefaultValueType": 0, - "PivotSettingsDto": { - "IsPivot": true, - "Expanded": false, - "SortOrder": "asc", - "Area": "filter", - "Format": null, - "SummaryType": null, - "GroupInterval": "", - "WordWrapEnabled": false - }, - "Alignment": "left", - "Format": null, - "EditOrderNo": null, - "EditGroupOrderNo": null, - "EditorType2": "dxSelectBox", - "ColSpan": 1, - "EditorOptions": "{\"searchEnabled\":true}", - "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.PurchaseOrderImportItem", - "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": 5, - "SourceDbType": 9, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": false, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 2, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": "SELECT p.Id AS [Key], CONCAT(CASE WHEN p.InternalReference IS NULL OR p.InternalReference = '' THEN '' ELSE CONCAT('[', p.InternalReference, '] ') END, p.Name) AS [Name] FROM Inv_T_Product p WHERE p.TenantId = '@TENANTID'" - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Prc.PurchaseOrderImportItem.Create", - "R": "App.Prc.PurchaseOrderImportItem", - "U": "App.Prc.PurchaseOrderImportItem.Update", + "C": "App.Prc.MaterialRequestPlanSupplier.Create", + "R": "App.Prc.MaterialRequestPlanSupplier", + "U": "App.Prc.MaterialRequestPlanSupplier.Update", "E": true, "I": true }, @@ -1293,7 +1001,7 @@ "EditGroupOrderNo": null, "EditorType2": "dxSelectBox", "ColSpan": 2, - "EditorOptions": "{\"showClearButton\":true,\"searchEnabled\":true}", + "EditorOptions": "{\"searchEnabled\":true}", "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1306,7 +1014,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseOrderImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanSupplier", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1320,14 +1028,14 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "Quantity", - "CaptionName": "App.Listform.ListformField.Quantity", + "FieldName": "MinQuantity", + "CaptionName": "App.Listform.ListformField.MinQuantity", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 6, + "ListOrderNo": 4, "SourceDbType": 7, "CultureName": "en", "DataType": "number", @@ -1335,7 +1043,7 @@ "SortDirection": null, "AllowSearch": true, "AllowEditing": false, - "AllowAdding": true, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1391,9 +1099,9 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseOrderImportItem.Create", - "R": "App.Prc.PurchaseOrderImportItem", - "U": "App.Prc.PurchaseOrderImportItem.Update", + "C": "App.Prc.MaterialRequestPlanSupplier.Create", + "R": "App.Prc.MaterialRequestPlanSupplier", + "U": "App.Prc.MaterialRequestPlanSupplier.Update", "E": true, "I": true }, @@ -1419,7 +1127,7 @@ "EditGroupOrderNo": null, "EditorType2": "dxNumberBox", "ColSpan": 1, - "EditorOptions": "{\"format\":\"#,##0.##\"}", + "EditorOptions": "{\"readOnly\":true,\"format\":\"#,##0.##\"}", "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1432,7 +1140,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseOrderImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanSupplier", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1453,7 +1161,7 @@ "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 7, + "ListOrderNo": 5, "SourceDbType": 16, "CultureName": "en", "DataType": "string", @@ -1461,7 +1169,7 @@ "SortDirection": null, "AllowSearch": true, "AllowEditing": false, - "AllowAdding": true, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1511,15 +1219,15 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": null, - "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Adm_T_Uom WHERE IsDeleted = 'false' ORDER BY Name" + "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Adm_T_Uom WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" }, "ValidationRuleDto": [], "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseOrderImportItem.Create", - "R": "App.Prc.PurchaseOrderImportItem", - "U": "App.Prc.PurchaseOrderImportItem.Update", + "C": "App.Prc.MaterialRequestPlanSupplier.Create", + "R": "App.Prc.MaterialRequestPlanSupplier", + "U": "App.Prc.MaterialRequestPlanSupplier.Update", "E": true, "I": true }, @@ -1558,7 +1266,7 @@ }, { "EditType": null, - "ListFormCode": "App.Prc.PurchaseOrderImportItem", + "ListFormCode": "App.Prc.MaterialRequestPlanSupplier", "RoleId": null, "UserId": null, "ColumnJoinTableDto": { @@ -1572,22 +1280,22 @@ "JoinFieldName2": null, "BaseTableJoinFieldName2_OrValue": null }, - "FieldName": "DueDate", - "CaptionName": "App.Listform.ListformField.DueDate", + "FieldName": "Price", + "CaptionName": "App.Listform.ListformField.UnitPrice", "PlaceHolder": null, "ReadOnly": false, "Visible": true, "IsActive": true, "Width": 0, - "ListOrderNo": 8, - "SourceDbType": 6, + "ListOrderNo": 6, + "SourceDbType": 7, "CultureName": "en", - "DataType": "datetime", + "DataType": "number", "SortIndex": 0, "SortDirection": null, "AllowSearch": true, "AllowEditing": false, - "AllowAdding": true, + "AllowAdding": false, "ColumnCssClass": null, "ColumnCssValue": null, "BandName": null, @@ -1643,9 +1351,387 @@ "ColumnStylingDto": [], "PermissionDto": { "Deny": false, - "C": "App.Prc.PurchaseOrderImportItem.Create", - "R": "App.Prc.PurchaseOrderImportItem", - "U": "App.Prc.PurchaseOrderImportItem.Update", + "C": "App.Prc.MaterialRequestPlanSupplier.Create", + "R": "App.Prc.MaterialRequestPlanSupplier", + "U": "App.Prc.MaterialRequestPlanSupplier.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": "{\"readOnly\":true,\"format\":\"#,##0.00\"}", + "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.MaterialRequestPlanSupplier", + "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": "CurrencyId", + "CaptionName": "App.Listform.ListformField.Currency", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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 Sas_H_Currency WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanSupplier.Create", + "R": "App.Prc.MaterialRequestPlanSupplier", + "U": "App.Prc.MaterialRequestPlanSupplier.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.MaterialRequestPlanSupplier", + "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": "LeadTimeDays", + "CaptionName": "App.Listform.ListformField.LeadTimeDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanSupplier.Create", + "R": "App.Prc.MaterialRequestPlanSupplier", + "U": "App.Prc.MaterialRequestPlanSupplier.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": "{\"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.MaterialRequestPlanSupplier", + "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": "LastPurchaseDate", + "CaptionName": "App.Listform.ListformField.LastPurchaseDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanSupplier.Create", + "R": "App.Prc.MaterialRequestPlanSupplier", + "U": "App.Prc.MaterialRequestPlanSupplier.Update", "E": true, "I": true }, @@ -1671,133 +1757,7 @@ "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.PurchaseOrderImportItem", - "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": 9, - "SourceDbType": 16, - "CultureName": "en", - "DataType": "string", - "SortIndex": 0, - "SortDirection": null, - "AllowSearch": true, - "AllowEditing": false, - "AllowAdding": true, - "ColumnCssClass": null, - "ColumnCssValue": null, - "BandName": null, - "ColumnFilterDto": { - "AllowFiltering": true, - "FilterOperations": null, - "SelectedFilterOperation": null, - "FilterValue": null - }, - "ColumnHeaderDto": { - "AllowHeaderFiltering": true, - "AllowSearch": false, - "DataSource": null, - "DataSourceString": "" - }, - "ColumnGroupingDto": { - "AllowGrouping": true, - "GroupIndex": null, - "AutoExpandGroup": false - }, - "ColumnCustomizationDto": { - "Fixed": false, - "FixedPosition": "left", - "AllowReordering": true - }, - "ColumnTotalSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "ColumnGroupSummaryDto": { - "SummaryType": null, - "ValueFormat": null, - "ShowInGroupFooter": false, - "AlignByColumn": false, - "DisplayFormat": null, - "ShowInColumn": null - }, - "LookupDto": { - "DataSourceType": 0, - "ValueExpr": "Key", - "DisplayExpr": "Name", - "CascadeRelationField": null, - "CascadeFilterOperator": "=", - "CascadeParentFields": null, - "CascadeEmptyFields": null, - "LookupQuery": null - }, - "ValidationRuleDto": [], - "ColumnStylingDto": [], - "PermissionDto": { - "Deny": false, - "C": "App.Prc.PurchaseOrderImportItem.Create", - "R": "App.Prc.PurchaseOrderImportItem", - "U": "App.Prc.PurchaseOrderImportItem.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": 2, - "EditorOptions": "{\"showClearButton\":true,\"maxLength\":512}", + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"readOnly\":true}", "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, @@ -1809,31 +1769,27 @@ "Id": "00000000-0000-0000-0000-000000000000" } ], - "IsDeletedField": false, + "IsDeletedField": true, "IsCreatedField": true, "InsertedRecords": { "LanguageKeys": [ - "App.Prc.PurchaseOrderImportItem", - "App.Prc.PurchaseOrderImportItem.Title", - "App.Prc.PurchaseOrderImportItem.Desc", - "App.Listform.ListformField.BaseId" + "App.Prc.MaterialRequestPlanSupplier", + "App.Prc.MaterialRequestPlanSupplier.Title", + "App.Prc.MaterialRequestPlanSupplier.Desc", + "App.Listform.ListformField.MinQuantity" ], "PermissionGroupNames": [], "PermissionNames": [ - "App.Prc.PurchaseOrderImportItem", - "App.Prc.PurchaseOrderImportItem.Create", - "App.Prc.PurchaseOrderImportItem.Update", - "App.Prc.PurchaseOrderImportItem.Delete", - "App.Prc.PurchaseOrderImportItem.Export", - "App.Prc.PurchaseOrderImportItem.Import", - "App.Prc.PurchaseOrderImportItem.Note" + "App.Prc.MaterialRequestPlanSupplier", + "App.Prc.MaterialRequestPlanSupplier.Create", + "App.Prc.MaterialRequestPlanSupplier.Update", + "App.Prc.MaterialRequestPlanSupplier.Delete", + "App.Prc.MaterialRequestPlanSupplier.Export", + "App.Prc.MaterialRequestPlanSupplier.Import", + "App.Prc.MaterialRequestPlanSupplier.Note" ], "MenuCodes": [], "DataSourceCodes": [], "ModuleIds": [] - }, - "DevRequest": { - "Id": "4784f377-808b-424b-a7e5-13afd94034a3", - "Title": "Satınalma -> Siparişler" } } \ No newline at end of file diff --git a/configs/seeds/wizard/Prc_MaterialRequestPlanTrack.json b/configs/seeds/wizard/Prc_MaterialRequestPlanTrack.json new file mode 100644 index 00000000..b52d610f --- /dev/null +++ b/configs/seeds/wizard/Prc_MaterialRequestPlanTrack.json @@ -0,0 +1,3643 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "Prc_MaterialRequestPlanTrack", + "WizardCode": "App.Prc.MaterialRequestPlanTrack", + "SeededAt": "2026-10-13T12:00:20+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Prc", + "ModuleId": "Prc", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Prc", + "Icon": "FcShop", + "En": "Purchasing", + "Tr": "Satınalma" + } + ], + "MenuParentCode": "App.Prc.MaterialRequests", + "MenuParentIcon": "FcList", + "MenuCode": "App.Prc.MaterialRequestPlanTrack", + "MenuOrder": 5, + "MenuUrl": "/admin/list/App.Prc.MaterialRequestPlanTrack", + "MenuIcon": "FcInspection" + }, + "Language": { + "MenuParentEn": "Material Requests", + "MenuParentTr": "Talepler", + "PermissionGroupEn": "Purchasing", + "PermissionGroupTr": "Satınalma", + "MenuEn": "Plan Tracking", + "MenuTr": "Plan Takibi", + "TitleEn": "Plan Tracking", + "TitleTr": "Plan Takibi", + "DescEn": "Plan Tracking — every decision made in Planning with the document it produced and how far it has progressed; each row is one decision.\nWhere: Purchasing › Requests › Plan Tracking. Purchasing rows are the request lines on RFQs (the root RFQ of a tender; copies on alternative suppliers are not repeated), transfer rows are internal transfer lines; returns are not listed.\nFields: plan date and purchasing responsible (the user who planned), request no, department, product, decision (Purchasing / Internal Transfer / From Stock), document no and status (RFQ: Draft / Sent / Converted / Cancelled; transfer: Draft / Waiting / Ready / Done / Cancelled), supplier (the winning supplier once ordered) or source location, destination location, order no and status, planned quantity, done quantity (received on the order or moved by the completed transfer), unit, required date, warehouse, branch.\nUsage: the list is read-only. Row buttons open the RFQ, the purchase order or the internal transfer on its detail page; Undo on a From Stock row reverses the fulfilment from stock: the quantity is taken off the line's delivered quantity, the line returns to Waiting and can be planned again in Planning. Purchasing and transfer decisions are undone on their document: cancelling the RFQ or the internal transfer, or deleting its line, returns the line to Planning.\nCards: total decisions, purchasing, internal transfer, completed.\nRelated: Planning, Requests for Quotation, Purchase Orders, Inventory › Internal Transfers.", + "DescTr": "Plan Takibi — Planlama'da verilen her karar, ürettiği belge ve belgenin geldiği aşamayla; her satır bir karardır.\nNerede: Satınalma › Talepler › Plan Takibi. Satınalma satırları teklif taleplerindeki talep kalemleridir (ihalenin kök teklif talebi; alternatif tedarikçilere kopyalanan satırlar tekrar listelenmez), transfer satırları iç transfer satırlarıdır, Stoktan satırları talebin teslim konumundaki stoktan belgesiz karşılanan miktardır; iade belgeleri listelenmez.\nAlanlar: plan tarihi ve satınalma sorumlusu (planlayan kullanıcı), talep no, departman, ürün, karar (Satınalma / İç Transfer / Stoktan), belge no ve durumu (teklif: Taslak / Gönderildi / Siparişe Dönüştü / İptal; transfer: Taslak / Bekleyen / Hazır / Tamamlandı / İptal), tedarikçi (siparişe dönüştüyse kazanan tedarikçi) ya da kaynak konum, hedef konum, sipariş no ve durumu, planlanan miktar, gerçekleşen (siparişte alınan ya da tamamlanan transferde taşınan), birim, termin tarihi, depo, şube.\nKullanım: liste salt okunurdur. Satırdaki butonlar teklif talebini, satınalma siparişini ya da iç transferi detay sayfasında açar; Stoktan satırındaki Geri Al stoktan karşılamayı geri alır: miktar kalemin teslim edilen miktarından düşer, kalem Bekliyor'a döner ve Planlama'da yeniden planlanır. Satınalma ve transfer kararı belgesinden geri alınır: teklif talebi ya da iç transfer iptal edilince ya da satırı silinince kalem Planlama'ya döner.\nKartlar: toplam karar, satınalma, iç transfer, tamamlanan.\nİlişkili: Planlama, Teklif Talepleri, Satınalma Siparişleri, Envanter › İç Transferler.", + "Texts": [ + { + "Key": "App.Prc.MaterialRequestPlanTrack.OpenRfq", + "En": "RFQ", + "Tr": "Teklif" + }, + { + "Key": "App.Prc.MaterialRequestPlanTrack.OpenOrder", + "En": "Order", + "Tr": "Sipariş" + }, + { + "Key": "App.Prc.MaterialRequestPlanTrack.OpenTransfer", + "En": "Transfer", + "Tr": "Transfer" + }, + { + "Key": "App.Prc.MaterialRequestPlanTrack.UndoStock", + "En": "Undo", + "Tr": "Geri Al" + }, + { + "Key": "App.Prc.MaterialRequestPlanTrack.UndoStockConfirm", + "En": "Undo this fulfilment from stock? The quantity returns to the line and it can be planned again in Planning.", + "Tr": "Bu stoktan karşılama geri alınsın mı? Miktar kaleme geri döner ve Planlama ekranında yeniden planlanabilir." + } + ] + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "DocumentId", + "CaptionName": "App.Listform.ListformField.DocumentId", + "En": "Document", + "Tr": "Belge" + }, + { + "FieldName": "PurchaseOrderId", + "CaptionName": "App.Listform.ListformField.PurchaseOrderId", + "En": "Purchase Order", + "Tr": "Satınalma Siparişi" + }, + { + "FieldName": "PlanDate", + "CaptionName": "App.Listform.ListformField.PlanDate", + "En": "Plan Date", + "Tr": "Plan Tarihi" + }, + { + "FieldName": "RequestNo", + "CaptionName": "App.Listform.ListformField.RequestNo", + "En": "Request No", + "Tr": "Talep No" + }, + { + "FieldName": "DepartmentId", + "CaptionName": "App.Listform.ListformField.Department", + "En": "Department", + "Tr": "Departman" + }, + { + "FieldName": "ProductId", + "CaptionName": "App.Listform.ListformField.ProductId", + "En": "Product", + "Tr": "Ürün" + }, + { + "FieldName": "PlanMethod", + "CaptionName": "App.Listform.ListformField.PlanMethod", + "En": "Decision", + "Tr": "Karar" + }, + { + "FieldName": "DocumentNo", + "CaptionName": "App.Listform.ListformField.DocumentNo", + "En": "Document No", + "Tr": "Belge No" + }, + { + "FieldName": "DocumentStatus", + "CaptionName": "App.Listform.ListformField.Status", + "En": "Status", + "Tr": "Durum" + }, + { + "FieldName": "SupplierId", + "CaptionName": "App.Listform.ListformField.SupplierId", + "En": "Supplier", + "Tr": "Tedarikçi" + }, + { + "FieldName": "SourceLocationId", + "CaptionName": "App.Listform.ListformField.SourceLocationId", + "En": "Source Location", + "Tr": "Kaynak Konum" + }, + { + "FieldName": "LocationId", + "CaptionName": "App.Listform.ListformField.DestinationLocationId", + "En": "Destination Location", + "Tr": "Hedef Konum" + }, + { + "FieldName": "PurchaseOrderNo", + "CaptionName": "App.Listform.ListformField.PurchaseOrderNo", + "En": "Order No", + "Tr": "Sipariş No" + }, + { + "FieldName": "OrderStatus", + "CaptionName": "App.Listform.ListformField.OrderStatus", + "En": "Order Status", + "Tr": "Sipariş Durumu" + }, + { + "FieldName": "Quantity", + "CaptionName": "App.Listform.ListformField.Quantity", + "En": "Quantity", + "Tr": "Miktar" + }, + { + "FieldName": "DoneQuantity", + "CaptionName": "App.Listform.ListformField.DoneQuantity", + "En": "Done", + "Tr": "Gerçekleşen" + }, + { + "FieldName": "UomId", + "CaptionName": "App.Listform.ListformField.UomId", + "En": "Uom", + "Tr": "Birim" + }, + { + "FieldName": "DueDate", + "CaptionName": "App.Listform.ListformField.RequiredDate", + "En": "Required Date", + "Tr": "Termin Tarihi" + }, + { + "FieldName": "WarehouseId", + "CaptionName": "App.Listform.ListformField.WarehouseId", + "En": "Warehouse", + "Tr": "Depo" + }, + { + "FieldName": "BranchId", + "CaptionName": "App.Listform.ListformField.BranchId", + "En": "Branch Name", + "Tr": "Şube Adı" + }, + { + "FieldName": "PlannerUserId", + "CaptionName": "App.Listform.ListformField.PurchaseResponsibleUserId", + "En": "Purchasing Responsible", + "Tr": "Satınalma Sorumlusu" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 9, + "TableName": null, + "DefaultFilter": "\"IsDeleted\" = 'false'", + "SelectCommand": "Prc_V_MaterialRequestPlanTrack", + "SelectCommandType": 2, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": null, + "DeleteBeforeCommand": null, + "DeleteAfterCommand": null, + "DeleteFieldsDefaultValueDto": [], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": null, + "InsertFieldsDefaultValueDto": [], + "UpdateCommand": "EXEC Prc_P_MaterialRequestStockUndo @Id, @TenantId, @LastModifierId", + "UpdateBeforeCommand": null, + "UpdateAfterCommand": null, + "UpdateFieldsDefaultValueDto": [ + { + "FieldName": "LastModificationTime", + "FieldDbType": 6, + "Value": "@NOW", + "CustomValueType": 2, + "SqlQuery": "" + }, + { + "FieldName": "LastModifierId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": "" + }, + { + "FieldName": "Id", + "FieldDbType": 9, + "Value": "@ID", + "CustomValueType": 2, + "SqlQuery": "" + } + ], + "FormFieldsDefaultValueDto": [], + "WidgetsDto": [ + { + "ColGap": 3, + "ColSpan": 3, + "SqlQuery": "SELECT 'App.Widget.Total' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'blue' AS \"Color\", 'App.Prc.MaterialRequestPlanTrack' AS \"SubTitle\", 'FaListUl' AS \"Icon\" FROM \"Prc_V_MaterialRequestPlanTrack\" WHERE \"TenantId\" = '@TENANTID' UNION ALL SELECT 'App.StaticLookup.Purchase' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'purple' AS \"Color\", 'App.Prc.MaterialRequestPlanTrack' AS \"SubTitle\", 'FaShoppingCart' AS \"Icon\" FROM \"Prc_V_MaterialRequestPlanTrack\" WHERE \"TenantId\" = '@TENANTID' AND \"PlanMethod\" = 'Purchase' UNION ALL SELECT 'App.StaticLookup.InternalTransfer' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'orange' AS \"Color\", 'App.Prc.MaterialRequestPlanTrack' AS \"SubTitle\", 'FaExchangeAlt' AS \"Icon\" FROM \"Prc_V_MaterialRequestPlanTrack\" WHERE \"TenantId\" = '@TENANTID' AND \"PlanMethod\" = 'Transfer' UNION ALL SELECT 'App.StaticLookup.Done' AS \"Title\", CAST(COUNT(*) AS VARCHAR(32)) AS \"Value\", 'green' AS \"Color\", 'App.Prc.MaterialRequestPlanTrack' AS \"SubTitle\", 'FaCheckCircle' AS \"Icon\" FROM \"Prc_V_MaterialRequestPlanTrack\" WHERE \"TenantId\" = '@TENANTID' AND \"DoneQuantity\" >= \"Quantity\"", + "Title": "Title", + "Value": "Value", + "ValueClassName": "text-3xl", + "Color": "Color", + "Icon": "Icon", + "SubTitle": "SubTitle", + "OnClick": "", + "ClassName": "mb-3", + "IsActive": true + } + ], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Prc.MaterialRequestPlanTrack", + "CultureName": "en", + "Name": "App.Prc.MaterialRequestPlanTrack", + "KeyFieldName": "Id", + "Title": "App.Prc.MaterialRequestPlanTrack.Title", + "SortMode": "single", + "PageSize": 10, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Prc.MaterialRequestPlanTrack.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "auto", + "WhiteSpace": "normal", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "single", + "AllowSelectAll": false, + "SelectAllMode": "allPages", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "popup", + "RefreshMode": "full", + "AllowUpdating": false, + "AllowDetail": false, + "AllowDeleting": false, + "AllowAllDeleting": false, + "AllowAdding": false, + "AllowDuplicate": false, + "OpenDetailAfterInsert": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Prc.MaterialRequestPlanTrack.Title", + "ShowTitle": true, + "Width": 800, + "Height": 400, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [], + "PermissionDto": { + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.Update", + "D": "App.Prc.MaterialRequestPlanTrack.Delete", + "E": "App.Prc.MaterialRequestPlanTrack.Export", + "I": "App.Prc.MaterialRequestPlanTrack.Import", + "N": null + }, + "CommandColumnDto": [ + { + "ButtonPosition": 0, + "AuthName": "App.Prc.PurchaseRfq", + "Text": "App.Prc.MaterialRequestPlanTrack.OpenRfq", + "Hint": "App.Prc.MaterialRequestPlanTrack.OpenRfq", + "Icon": "", + "Url": "/admin/form/App.Prc.PurchaseRfq/@DocumentId", + "UrlTarget": "_self", + "DialogName": null, + "DialogParameters": null, + "OnClick": null, + "IsVisible": true, + "VisibleExpression": "(e) => !!e.row && e.row.data.PlanMethod === 'Purchase'" + }, + { + "ButtonPosition": 0, + "AuthName": "App.Prc.PurchaseOrder", + "Text": "App.Prc.MaterialRequestPlanTrack.OpenOrder", + "Hint": "App.Prc.MaterialRequestPlanTrack.OpenOrder", + "Icon": "", + "Url": "/admin/form/App.Prc.PurchaseOrder/@PurchaseOrderId", + "UrlTarget": "_self", + "DialogName": null, + "DialogParameters": null, + "OnClick": null, + "IsVisible": true, + "VisibleExpression": "(e) => !!e.row && !!e.row.data.PurchaseOrderId" + }, + { + "ButtonPosition": 0, + "AuthName": "App.Inventory.InternalTransfer", + "Text": "App.Prc.MaterialRequestPlanTrack.OpenTransfer", + "Hint": "App.Prc.MaterialRequestPlanTrack.OpenTransfer", + "Icon": "", + "Url": "/admin/form/App.Inventory.InternalTransfer/@DocumentId", + "UrlTarget": "_self", + "DialogName": null, + "DialogParameters": null, + "OnClick": null, + "IsVisible": true, + "VisibleExpression": "(e) => !!e.row && e.row.data.PlanMethod === 'Transfer'" + }, + { + "ButtonPosition": 0, + "AuthName": "App.Prc.MaterialRequestPlanTrack.Update", + "Text": "App.Prc.MaterialRequestPlanTrack.UndoStock", + "Hint": "App.Prc.MaterialRequestPlanTrack.UndoStock", + "Icon": "", + "Url": null, + "UrlTarget": null, + "DialogName": null, + "DialogParameters": null, + "OnClick": "(async () => { const r = e.row.data; if (!window.confirm(translate('::App.Prc.MaterialRequestPlanTrack.UndoStockConfirm'))) return; await dynamicFetch('list-form-data/update', 'POST', null, { listFormCode, keys: [r.Id], data: {} }); e.component.refresh(); })().catch(() => {})", + "IsVisible": true, + "VisibleExpression": "(e) => !!e.row && e.row.data.PlanMethod === 'Stock'" + } + ], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Prc.MaterialRequestPlanTrack", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": false, + "SubFormsListFormType": "Form", + "SubFormsDto": [], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Prc.MaterialRequestPlanTrack", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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.MaterialRequestPlanTrack", + "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": "DocumentId", + "CaptionName": "App.Listform.ListformField.DocumentId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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.MaterialRequestPlanTrack", + "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": "PurchaseOrderId", + "CaptionName": "App.Listform.ListformField.PurchaseOrderId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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.MaterialRequestPlanTrack", + "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": "PlanDate", + "CaptionName": "App.Listform.ListformField.PlanDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 6, + "CultureName": "en", + "DataType": "datetime", + "SortIndex": 1, + "SortDirection": "desc", + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"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.MaterialRequestPlanTrack", + "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": "RequestNo", + "CaptionName": "App.Listform.ListformField.RequestNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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": "{\"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.MaterialRequestPlanTrack", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "DepartmentId", + "CaptionName": "App.Listform.ListformField.Department", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 6, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": 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 Hr_T_Department WHERE IsDeleted = 'false' AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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": "{\"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.MaterialRequestPlanTrack", + "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": 7, + "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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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.MaterialRequestPlanTrack", + "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": "PlanMethod", + "CaptionName": "App.Listform.ListformField.PlanMethod", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "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.InternalTransfer\"},{\"key\":\"Stock\",\"name\":\"App.StaticLookup.FromStock\"}]" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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.MaterialRequestPlanTrack", + "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": "DocumentNo", + "CaptionName": "App.Listform.ListformField.DocumentNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": 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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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": "{\"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.MaterialRequestPlanTrack", + "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": "DocumentStatus", + "CaptionName": "App.Listform.ListformField.Status", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 10, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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\":\"Draft\",\"name\":\"App.StaticLookup.Draft\"},{\"key\":\"Sent\",\"name\":\"App.Prc.OrderStatus.Sent\"},{\"key\":\"Purchase\",\"name\":\"App.Prc.OrderStatus.Purchase\"},{\"key\":\"Waiting\",\"name\":\"App.StaticLookup.Waiting\"},{\"key\":\"Ready\",\"name\":\"App.StaticLookup.Ready\"},{\"key\":\"Done\",\"name\":\"App.StaticLookup.Done\"},{\"key\":\"Cancelled\",\"name\":\"App.StaticLookup.Cancelled\"}]" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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.MaterialRequestPlanTrack", + "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": "SupplierId", + "CaptionName": "App.Listform.ListformField.SupplierId", + "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": 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], COALESCE(SupplierCurrency, 'TRY') AS SupplierCurrency FROM Adm_T_Contact WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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.MaterialRequestPlanTrack", + "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": "SourceLocationId", + "CaptionName": "App.Listform.ListformField.SourceLocationId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 12, + "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 l.Id AS [Key], CONCAT(w.Code, '/', l.Name) AS [Name] FROM Inv_T_Location l INNER JOIN Inv_T_Warehouse w ON w.Id = l.WarehouseId WHERE l.TenantId = '@TENANTID' ORDER BY w.Code, l.Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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.MaterialRequestPlanTrack", + "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": "LocationId", + "CaptionName": "App.Listform.ListformField.DestinationLocationId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 13, + "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": "WarehouseId", + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": "SELECT l.Id AS [Key], CONCAT(w.Code, '/', l.Name) AS [Name] FROM Inv_T_Location l INNER JOIN Inv_T_Warehouse w ON w.Id = l.WarehouseId WHERE l.TenantId = '@TENANTID' ORDER BY w.Code, l.Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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": "{\"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.MaterialRequestPlanTrack", + "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": "PurchaseOrderNo", + "CaptionName": "App.Listform.ListformField.PurchaseOrderNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 14, + "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": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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": "{\"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.MaterialRequestPlanTrack", + "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": "OrderStatus", + "CaptionName": "App.Listform.ListformField.OrderStatus", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 15, + "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\":\"Draft\",\"name\":\"App.StaticLookup.Draft\"},{\"key\":\"Purchase\",\"name\":\"App.StaticLookup.Confirmed\"},{\"key\":\"Cancelled\",\"name\":\"App.StaticLookup.Cancelled\"}]" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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.MaterialRequestPlanTrack", + "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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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": "{\"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.MaterialRequestPlanTrack", + "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": "DoneQuantity", + "CaptionName": "App.Listform.ListformField.DoneQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 17, + "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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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": "{\"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.MaterialRequestPlanTrack", + "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": 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": 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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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.MaterialRequestPlanTrack", + "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.RequiredDate", + "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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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\",\"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.MaterialRequestPlanTrack", + "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": "WarehouseId", + "CaptionName": "App.Listform.ListformField.WarehouseId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 20, + "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 Id AS [Key], CONCAT(Code, ' - ', Name) AS [Name] FROM Inv_T_Warehouse WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Code" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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": "{\"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.MaterialRequestPlanTrack", + "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": "BranchId", + "CaptionName": "App.Listform.ListformField.BranchId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 21, + "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 Id AS [Key], Name AS [Name] FROM Sas_T_Branch WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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": "{\"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.MaterialRequestPlanTrack", + "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": "PlannerUserId", + "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": 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], 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.MaterialRequestPlanTrack.Create", + "R": "App.Prc.MaterialRequestPlanTrack", + "U": "App.Prc.MaterialRequestPlanTrack.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": "{\"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" + } + ], + "IsDeletedField": true, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Prc.MaterialRequestPlanTrack", + "App.Prc.MaterialRequestPlanTrack.Title", + "App.Prc.MaterialRequestPlanTrack.Desc", + "App.Listform.ListformField.DocumentId", + "App.Listform.ListformField.DoneQuantity", + "App.Listform.ListformField.OrderStatus", + "App.Listform.ListformField.PlanDate", + "App.Prc.MaterialRequestPlanTrack.OpenRfq", + "App.Prc.MaterialRequestPlanTrack.OpenOrder", + "App.Prc.MaterialRequestPlanTrack.OpenTransfer", + "App.Listform.ListformField.PlanMethod", + "App.Listform.ListformField.PurchaseResponsibleUserId", + "App.StaticLookup.FromStock", + "App.Prc.MaterialRequestPlanTrack.UndoStock", + "App.Prc.MaterialRequestPlanTrack.UndoStockConfirm" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Prc.MaterialRequestPlanTrack", + "App.Prc.MaterialRequestPlanTrack.Create", + "App.Prc.MaterialRequestPlanTrack.Update", + "App.Prc.MaterialRequestPlanTrack.Delete", + "App.Prc.MaterialRequestPlanTrack.Export", + "App.Prc.MaterialRequestPlanTrack.Import" + ], + "MenuCodes": [ + "App.Prc.MaterialRequestPlanTrack" + ], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/wizard/Prc_MaterialRequestPlanVendor.json b/configs/seeds/wizard/Prc_MaterialRequestPlanVendor.json new file mode 100644 index 00000000..dbd89e45 --- /dev/null +++ b/configs/seeds/wizard/Prc_MaterialRequestPlanVendor.json @@ -0,0 +1,2667 @@ +{ + "Wizard": { + "ComponentKind": 0, + "WizardName": "Prc_MaterialRequestPlanVendor", + "WizardCode": "App.Prc.MaterialRequestPlanVendor", + "SeededAt": "2026-10-13T12:00:00+03:00", + "CustomComponentName": null, + "PermissionGroupName": "App.Prc", + "ModuleId": "Prc", + "Menu": { + "MenuParentPath": [ + { + "Code": "App.Prc", + "Icon": "FcShop", + "En": "Purchasing", + "Tr": "Satınalma" + } + ], + "MenuParentCode": "App.Prc.MaterialRequests", + "MenuParentIcon": "FcList", + "CreateMenu": false, + "MenuCode": "App.Prc.MaterialRequestPlanVendor", + "MenuOrder": 0, + "MenuUrl": "/admin/list/App.Prc.MaterialRequestPlanVendor", + "MenuIcon": "FcViewDetails" + }, + "Language": { + "MenuParentEn": "Material Requests", + "MenuParentTr": "Talepler", + "PermissionGroupEn": "Purchasing", + "PermissionGroupTr": "Satınalma", + "MenuEn": "Purchasing", + "MenuTr": "Satınalma", + "TitleEn": "Purchasing", + "TitleTr": "Satınalma", + "DescEn": "Purchasing — the Purchasing tab of the Plan dialog: every active contact; suppliers on the product's price list come first with their price, the others follow without a price.\nWhere: Purchasing › Material Requests › Planning › Plan button (no menu of its own); filtered by the line being planned. Price lists are kept in Inventory › Products › Purchase tab.\nFields: supplier, unit price and currency (the row with the lowest minimum quantity — the price written to the RFQ line), min. quantity, unit, lead time, last purchase date, max (upper limit for the row), plan quantity and the supplier's draft RFQ carrying this line (RFQ no, quantity on the RFQ).\nUsage: type into the highlighted Plan Quantity cell (saved when leaving the cell), press Plan All (takes Max) or select rows and press Plan Selected (each row takes its Max in turn) on one or more suppliers; the quantities go to the Fulfilment Plan as a draft (0 removes the row). Confirm in the dialog adds the line to the supplier's open draft RFQ for the request's branch and warehouse or opens a new one (price 0 when the supplier has no price list row); the RFQ button opens the RFQ in a new tab.", + "DescTr": "Satınalma — Planla diyaloğunun Satınalma sekmesi: bütün aktif kontaklar; ürünün fiyat listesindeki tedarikçiler fiyatıyla önce, diğerleri fiyatsız sonra gelir.\nNerede: Satınalma › Talepler › Planlama › Planla butonu (kendi menüsü yoktur); planlanan kaleme süzülür. Fiyat listesi Envanter › Ürünler › Satınalma sekmesinde tutulur.\nAlanlar: tedarikçi, birim fiyat ve para birimi (en düşük minimum miktarlı satır — teklif kalemine yazılan fiyat), min. miktar, birim, teslim süresi, son alım tarihi, en fazla (satıra yazılabilecek üst sınır), plan miktarı ve tedarikçinin bu kalemi taşıyan taslak teklif talebi (teklif talep no, teklifteki miktar).\nKullanım: bir ya da birkaç tedarikçinin vurgulu Plan Miktarı hücresine miktar yazılır (hücreden çıkınca kaydedilir), satırdaki Tümünü Planla ile En Fazla değeri atanır ya da satırlar seçilip Seçilenleri Planla ile her birine sırayla En Fazla yazılır; miktarlar taslak olarak Karşılama Planı'na geçer (0 satırı çıkarır). Diyalogdaki Onayla kalemi tedarikçinin talebin şubesi ve deposu için açık taslak teklif talebine ekler ya da yenisini açar (fiyat listesinde satırı olmayan tedarikçide fiyat 0); Teklif butonu teklif talebini yeni sekmede açar." + }, + "Groups": [ + { + "Items": [ + { + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "En": "Id", + "Tr": "Kimlik" + }, + { + "FieldName": "BaseId", + "CaptionName": "App.Listform.ListformField.BaseId", + "En": "Base Document", + "Tr": "Ana Belge" + }, + { + "FieldName": "RfqId", + "CaptionName": "App.Listform.ListformField.PurchaseRfqId", + "En": "RFQ", + "Tr": "Teklif Talebi" + }, + { + "FieldName": "SuggestRank", + "CaptionName": "App.Listform.ListformField.ContactId", + "En": null, + "Tr": null + }, + { + "FieldName": "ContactId", + "CaptionName": "App.Listform.ListformField.Supplier", + "En": "Supplier", + "Tr": "Tedarikçi" + }, + { + "FieldName": "PlanQuantity", + "CaptionName": "App.Listform.ListformField.PlanQuantity", + "En": "Plan Quantity", + "Tr": "Plan Miktarı" + }, + { + "FieldName": "Price", + "CaptionName": "App.Listform.ListformField.UnitPrice", + "En": "Unit Price", + "Tr": "Birim Fiyat" + }, + { + "FieldName": "CurrencyId", + "CaptionName": "App.Listform.ListformField.Currency", + "En": "Currency", + "Tr": "Para Birimi" + }, + { + "FieldName": "MinQuantity", + "CaptionName": "App.Listform.ListformField.MinQuantity", + "En": "Min. Quantity", + "Tr": "Min. Miktar" + }, + { + "FieldName": "UomId", + "CaptionName": "App.Listform.ListformField.UomId", + "En": "Uom", + "Tr": "Birim" + }, + { + "FieldName": "LeadTimeDays", + "CaptionName": "App.Listform.ListformField.LeadTimeDays", + "En": "Lead Time (days)", + "Tr": "Teslim Süresi (gün)" + }, + { + "FieldName": "LastPurchaseDate", + "CaptionName": "App.Listform.ListformField.LastPurchaseDate", + "En": "Last Purchase Date", + "Tr": "Son Alım Tarihi" + }, + { + "FieldName": "MaxQuantity", + "CaptionName": "App.Listform.ListformField.MaxQuantity", + "En": "Max", + "Tr": "En Fazla" + }, + { + "FieldName": "RfqNo", + "CaptionName": "App.Listform.ListformField.RfqNo", + "En": "RFQ No", + "Tr": "Teklif Talep No" + }, + { + "FieldName": "RfqQuantity", + "CaptionName": "App.Listform.ListformField.RfqQuantity", + "En": "Quantity in RFQ", + "Tr": "Teklifteki Miktar" + } + ] + } + ] + }, + "ListForm": { + "EditType": null, + "DataSourceCode": "Default", + "KeyFieldDbSourceType": 16, + "TableName": null, + "DefaultFilter": "\"IsDeleted\" = 'false'", + "SelectCommand": "Prc_V_MaterialRequestPlanVendor", + "SelectCommandType": 2, + "SelectFieldsDefaultValueDto": [], + "SeedFilePath": null, + "SeedSyncInsert": false, + "SeedSyncUpdate": false, + "SeedSyncDelete": false, + "DeleteCommand": null, + "DeleteBeforeCommand": null, + "DeleteAfterCommand": null, + "DeleteFieldsDefaultValueDto": [], + "InsertCommand": null, + "InsertBeforeCommand": null, + "InsertAfterCommand": null, + "InsertFieldsDefaultValueDto": [], + "UpdateCommand": "EXEC Prc_P_MaterialRequestPlanLineSave @Id, 'Purchase', @PlanQuantity, @TenantId, @LastModifierId", + "UpdateBeforeCommand": null, + "UpdateAfterCommand": null, + "UpdateFieldsDefaultValueDto": [ + { + "FieldName": "LastModifierId", + "FieldDbType": 9, + "Value": "@USERID", + "CustomValueType": 2, + "SqlQuery": null + }, + { + "FieldName": "Id", + "FieldDbType": 16, + "Value": "@ID", + "CustomValueType": 2, + "SqlQuery": null + } + ], + "FormFieldsDefaultValueDto": [], + "WidgetsDto": [], + "ExtraFilterEditDto": [], + "ListFormCode": "App.Prc.MaterialRequestPlanVendor", + "CultureName": "en", + "Name": "App.Prc.MaterialRequestPlanVendor", + "KeyFieldName": "Id", + "Title": "App.Prc.MaterialRequestPlanVendor.Title", + "SortMode": "single", + "PageSize": 5, + "Width": 0, + "Height": 0, + "FullHeight": false, + "Description": "App.Prc.MaterialRequestPlanVendor.Desc", + "FilterRowDto": { + "Visible": true, + "ApplyFilter": "auto", + "AllowUserUiFilterSave": true + }, + "RowDto": { + "RowHeight": "auto", + "WhiteSpace": "nowrap", + "OverflowWrap": "break-word" + }, + "HeaderFilterDto": { + "Visible": true, + "AllowSearch": false, + "Height": 325, + "SearchTimeout": 500, + "Width": 252 + }, + "FilterPanelDto": { + "Visible": false, + "Texts": null, + "FilterEnabled": false, + "CustomizeText": null + }, + "SearchPanelDto": { + "Visible": true, + "Width": 160 + }, + "GroupPanelDto": { + "Visible": true, + "AutoExpandAll": false + }, + "SelectionDto": { + "Mode": "multiple", + "AllowSelectAll": true, + "SelectAllMode": "page", + "ShowCheckBoxesMode": "always" + }, + "ColumnOptionDto": { + "ShowBorders": true, + "ShowRowLines": true, + "ShowColumnLines": false, + "RowAlternationEnabled": true, + "AllowColumnReordering": true, + "AllowColumnResizing": true, + "ColumnResizingMode": "widget", + "ColumnAutoWidth": true, + "RtlEnabled": false, + "ColumnFixingEnabled": true, + "ColumnChooserEnabled": true, + "ColumnChooserMode": "dragAndDrop", + "HoverStateEnabled": false, + "ColumnHidingEnabled": true, + "FocusedRowEnabled": true, + "ShowColumnHeaders": true + }, + "PivotOptionDto": { + "ColumnChooserEnabled": false, + "AllowFieldDragging": true, + "ShowFieldPanel": true, + "ShowDataFields": true, + "ShowColumnFields": true, + "ShowRowFields": true, + "ShowFilterFields": true, + "ShowChart": false, + "ChartHeight": 320, + "ChartCommonSeriesType": "bar" + }, + "TreeOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null + }, + "GanttOptionDto": { + "KeyExpr": null, + "ParentIdExpr": null, + "HasItemsExpr": null, + "RootValue": null, + "ExpandedRowKeys": [], + "AutoExpandAll": false, + "RecursiveSelection": false, + "TitleExpr": null, + "ScaleType": "weeks", + "StartExpr": null, + "EndExpr": null, + "ProgressExpr": null, + "EditingEnabled": false, + "AllowTaskAdding": false, + "AllowTaskUpdating": false, + "AllowTaskResourceUpdating": false, + "AllowTaskDeleting": false, + "AllowDependencyAdding": false, + "AllowDependencyDeleting": false, + "AllowResourceAdding": false, + "AllowResourceUpdating": false, + "AllowResourceDeleting": false + }, + "SchedulerOptionDto": { + "TextExpr": null, + "UserNameExpr": null, + "DescriptionExpr": null, + "StartDateExpr": null, + "EndDateExpr": null, + "AllDayExpr": null, + "RecurrenceRuleExpr": null, + "RecurrenceExceptionExpr": null, + "StartDayHour": 8, + "EndDayHour": 20, + "DefaultView": "week", + "ShowAllDayPanel": true, + "CellDuration": 30, + "FirstDayOfWeek": 1, + "CrossScrollingEnabled": false, + "AllowResizing": false, + "AllowDragging": false, + "AllowDeleting": false, + "AllowEditing": false, + "AllowAdding": false + }, + "TodoOptionDto": { + "TitleExpr": null, + "StatusExpr": null, + "DescriptionExpr": null, + "AnalysisExpr": null, + "DueDateExpr": null, + "TagExpr": null, + "AssigneeExpr": null, + "PriorityExpr": null, + "CompletedExpr": null, + "OrderExpr": null, + "TimesheetExpr": null, + "SubTaskExpr": null, + "StatusOrder": null, + "AllowDragging": true + }, + "PagerOptionDto": { + "Visible": true, + "ShowPageSizeSelector": true, + "ShowInfo": false, + "ShowNavigationButtons": true, + "AllowedPageSizes": "5,10,20,50,100", + "InfoText": "Page {0} of {1} ({2} items)", + "DisplayMode": "adaptive", + "ScrollingMode": "standard", + "LoadPanelEnabled": "auto", + "LoadPanelText": "Loading..." + }, + "EditingOptionDto": { + "Mode": "cell", + "RefreshMode": "full", + "AllowUpdating": true, + "AllowDetail": false, + "AllowDeleting": false, + "AllowAllDeleting": false, + "AllowAdding": false, + "AllowDuplicate": false, + "OpenDetailAfterInsert": false, + "UseIcons": false, + "ConfirmDelete": true, + "NewRowPosition": "viewportTop", + "SelectTextOnEditStart": false, + "StartEditAction": "click", + "EditColumnName": null, + "Popup": { + "Title": "App.Prc.MaterialRequestPlanVendor.Title", + "ShowTitle": true, + "Width": 600, + "Height": 260, + "FullScreen": false, + "HideOnOutsideClick": true, + "ResizeEnabled": true, + "DragEnabled": true, + "RestorePosition": true, + "Position": "center" + }, + "SendOnlyChangedFormValuesUpdate": false, + "AddPageUrl": null, + "AddDialogName": null, + "AddDialogParameters": null + }, + "EditingFormDto": [], + "PermissionDto": { + "C": "App.Prc.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.Update", + "D": "App.Prc.MaterialRequestPlanVendor.Delete", + "E": "App.Prc.MaterialRequestPlanVendor.Export", + "I": "App.Prc.MaterialRequestPlanVendor.Import", + "N": null + }, + "CommandColumnDto": [ + { + "ButtonPosition": 0, + "AuthName": "App.Prc.MaterialRequestPlanVendor.Update", + "Text": "App.Prc.MaterialRequestPlan.TakeMax", + "Hint": "App.Prc.MaterialRequestPlan.TakeMax", + "Icon": "", + "Url": null, + "UrlTarget": null, + "DialogName": null, + "DialogParameters": null, + "OnClick": "(() => { const r = e && e.row; if (!r) return; e.component.cellValue(r.rowIndex, 'PlanQuantity', r.data.MaxQuantity); e.component.saveEditData(); })()", + "IsVisible": true, + "VisibleExpression": "(e) => !!e.row && e.row.data.MaxQuantity > 0 && Number(e.row.data.PlanQuantity || 0) !== e.row.data.MaxQuantity" + }, + { + "ButtonPosition": 0, + "AuthName": "App.Prc.PurchaseRfq", + "Text": "App.Prc.MaterialRequestPlanTrack.OpenRfq", + "Hint": "App.Prc.MaterialRequestPlanTrack.OpenRfq", + "Icon": "", + "Url": "/admin/form/App.Prc.PurchaseRfq/@RfqId", + "UrlTarget": "_blank", + "DialogName": null, + "DialogParameters": null, + "OnClick": null, + "IsVisible": true, + "VisibleExpression": "(e) => !!e.row && !e.row.isEditing && !!e.row.data.RfqId" + }, + { + "ButtonPosition": 1, + "AuthName": "App.Prc.MaterialRequestPlanVendor.Update", + "Text": "App.Prc.MaterialRequestPlan.PlanSelected", + "Hint": "App.Prc.MaterialRequestPlan.PlanSelected", + "Icon": "", + "Url": null, + "UrlTarget": null, + "DialogName": null, + "DialogParameters": null, + "OnClick": "(async () => { const rows = getSelectedRowsData() || []; if (!rows.length) return; for (const r of rows) { await dynamicFetch('list-form-data/update', 'POST', null, { listFormCode, keys: [r.Id], data: { PlanQuantity: -1 } }); } refreshData(); })().catch(() => refreshData())", + "IsVisible": true, + "VisibleExpression": null + } + ], + "StateStoringDto": { + "Enabled": true, + "Type": "custom", + "StorageKey": "listFormGridStorage-App.Prc.MaterialRequestPlanVendor", + "SavingTimeout": 5000 + }, + "CustomJsSources": [], + "CustomStyleSources": [], + "UpdateServiceAddress": "list-form-data/update", + "InsertServiceAddress": "list-form-data/insert", + "DeleteServiceAddress": "list-form-data/delete", + "IsTenant": true, + "IsBranch": false, + "IsOrganizationUnit": false, + "ListFormType": "List", + "IsSubForm": false, + "ShowNote": false, + "SubFormsListFormType": "Form", + "SubFormsDto": [], + "ExtraFilterDto": [], + "LayoutDto": { + "Grid": true, + "Card": true, + "Pivot": true, + "Chart": true, + "Tree": false, + "Gantt": false, + "Scheduler": false, + "Todo": false, + "DefaultLayout": "grid" + }, + "WorkflowDto": { + "ApprovalUserFieldName": null, + "ApprovalDateFieldName": null, + "ApprovalStatusFieldName": null, + "ApprovalDescriptionFieldName": null, + "ApprovalIsFilterUserName": false, + "ApprovalIsResetWorkflow": false, + "ApprovalIsManualStart": false, + "Criteria": [] + }, + "UserId": null, + "RoleId": null, + "CommonDto": { + "AdjustOnZoom": true, + "ContainerBackgroundColor": "#FFFFFF", + "Palette": "Material", + "PaletteExtensionMode": "blend", + "DefaultPane": null, + "Disabled": false, + "Theme": "generic.light" + }, + "AdaptivelayoutDto": { + "Height": 80, + "Width": 80, + "KeepLabels": true + }, + "AnimationDto": { + "Duration": 1000, + "Easing": "easeOutCubic", + "Enabled": true, + "MaxPointCountSupported": 300 + }, + "AnnotationsDto": [], + "ArgumentAxisDto": { + "ArgumentType": null, + "AggregationInterval": null, + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "HoverMode": "none", + "Label": { + "DisplayMode": "standard", + "RotationAngle": 90, + "OverlappingBehavior": "hide" + }, + "Position": "bottom", + "Title": null, + "Visible": true, + "Width": 1, + "WorkdaysOnly": false + }, + "CommonAnnotationSettingsDto": { + "Argument": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Description": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Height": -1, + "Image": null, + "OffsetX": -1, + "OffsetY": -1, + "PaddingLeftRight": 10, + "PaddingTopBottom": 10, + "Series": null, + "Text": null, + "TooltipEnabled": true, + "Type": null, + "Value": null, + "Width": 0, + "WordWrap": "normal", + "X": 0, + "Y": 0 + }, + "CommonAxisSettingsDto": { + "Grid": { + "Color": "#d3d3d3", + "Visible": false, + "Width": 1 + }, + "Title": null, + "Visible": true, + "Width": 1 + }, + "CommonPaneSettingsDto": { + "BackgroundColor": null + }, + "CommonSeriesSettingsDto": { + "ArgumentField": "arg", + "Axis": null, + "BarOverlapGroup": null, + "BarPadding": 0, + "BarWidth": 0, + "Color": null, + "CornerRadius": 0, + "DashStyle": "solid", + "IgnoreEmptyPoints": false, + "Pane": null, + "RangeValue1Field": "val1", + "RangeValue2Field": "val2", + "SelectionMode": "none", + "ShowInLegend": true, + "Type": null, + "ValueField": null, + "Visible": true, + "Width": 2, + "Label": null + }, + "CrosshairDto": { + "Color": "#f05b41", + "DashStyle": "dot", + "Enabled": false, + "Width": 1, + "HorizontalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + }, + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "VerticalLine": { + "Color": "#f05b41", + "DashStyle": "dot", + "Label": { + "BackgroundColor": "#f05b41", + "CustomizeText": null, + "Font": { + "Color": "#FFFFFF", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Visible": false, + "Format": null + }, + "Visible": true, + "Width": 1 + } + }, + "ExportDto": { + "BackgroundColor": "#FFFFFF", + "Enabled": true, + "AllowExportSelectedData": false, + "Margin": 10, + "PrintingEnabled": true + }, + "LegendDto": { + "BackgroundColor": null, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "ColumnCount": 0, + "Orientation": "vertical", + "Position": "outside", + "RowCount": 0, + "Title": null, + "Visible": true + }, + "MarginDto": { + "Bottom": 0, + "Left": 0, + "Right": 0, + "Top": 0 + }, + "PanesDto": [], + "ScrollBarDto": { + "Color": "gray", + "Offset": 5, + "Position": "top", + "Visible": false, + "Width": 10 + }, + "SeriesDto": [], + "SizeDto": { + "UseSize": false, + "Width": 400, + "Height": 200 + }, + "TitleDto": { + "Text": null, + "VerticalAlignment": "top", + "HorizontalAlignment": "center", + "Subtitle": null, + "TextOverflow": "ellipsis", + "WordWrap": null + }, + "TooltipDto": { + "ArgumentFormat": null, + "ArrowLength": 10, + "Border": { + "Color": "#d3d3d3", + "CornerRadius": 0, + "DashStyle": "solid", + "Visible": false, + "Width": 1 + }, + "Color": "#ffffff", + "Enabled": false, + "Font": { + "Color": "#000000", + "Family": "\"Segoe UI\", \"Helvetica Neue\", \"Trebuchet MS\", Verdana, sans-serif", + "Size": 12, + "Weight": 400 + }, + "Format": null, + "Location": "center", + "PaddingLeftRight": 18, + "PaddingTopBottom": 15, + "Shared": false + }, + "ValueAxisDto": [], + "ZoomAndPanDto": { + "AllowMouseWheel": true, + "AllowTouchGestures": true, + "ArgumentAxis": "none", + "DragToZoom": false, + "PanKey": "shift", + "ValueAxis": "none", + "DragBoxStyle": { + "Color": null, + "Opacity": 0 + } + }, + "LastModificationTime": null, + "LastModifierId": null, + "CreationTime": "0001-01-01T00:00:00", + "CreatorId": null, + "Id": "00000000-0000-0000-0000-000000000000" + }, + "Fields": [ + { + "EditType": null, + "ListFormCode": "App.Prc.MaterialRequestPlanVendor", + "RoleId": null, + "UserId": null, + "ColumnJoinTableDto": { + "JoinType": null, + "TableName": null, + "JoinFieldName": null, + "BaseTableJoinFieldName": null, + "SelectFieldName": null, + "FieldNameAlias": null, + "JoinCondition2": "AND", + "JoinFieldName2": null, + "BaseTableJoinFieldName2_OrValue": null + }, + "FieldName": "Id", + "CaptionName": "App.Listform.ListformField.Id", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 1, + "SourceDbType": 16, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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.MaterialRequestPlanVendor", + "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": "BaseId", + "CaptionName": "App.Listform.ListformField.BaseId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 2, + "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.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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.MaterialRequestPlanVendor", + "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": "RfqId", + "CaptionName": "App.Listform.ListformField.PurchaseRfqId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 3, + "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.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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.MaterialRequestPlanVendor", + "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": "SuggestRank", + "CaptionName": "App.Listform.ListformField.ContactId", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": false, + "IsActive": true, + "Width": 0, + "ListOrderNo": 4, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 1, + "SortDirection": "asc", + "AllowSearch": false, + "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.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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": "{\"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.MaterialRequestPlanVendor", + "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": "ContactId", + "CaptionName": "App.Listform.ListformField.Supplier", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 5, + "SourceDbType": 9, + "CultureName": "en", + "DataType": "string", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": false, + "AllowAdding": 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_Contact WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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": "{\"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.MaterialRequestPlanVendor", + "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": "PlanQuantity", + "CaptionName": "App.Listform.ListformField.PlanQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 6, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": true, + "AllowAdding": 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": "sum", + "ValueFormat": "#,##0.##", + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": "{0}", + "ShowInColumn": null + }, + "ColumnGroupSummaryDto": { + "SummaryType": null, + "ValueFormat": null, + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": null, + "ShowInColumn": null + }, + "LookupDto": { + "DataSourceType": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [ + { + "Type": "compare", + "Message": "App.Prc.MaterialRequestPlan.PlanQuantityMax", + "IgnoreEmptyValue": true, + "Reevaluate": true, + "ComparisonType": "<=", + "ComparisonTarget": "MaxQuantity", + "ValidationCallback": null, + "Pattern": "", + "Max": null, + "Min": null, + "Trim": true + } + ], + "ColumnStylingDto": [ + { + "RowType": "data", + "UseRow": false, + "Condition": null, + "ConditionValue": null, + "CssStyles": "background-color:rgba(99,102,241,.18) | box-shadow:inset 0 0 0 1px rgba(99,102,241,.6) | font-weight:600 | cursor:text", + "CssClassName": null + } + ], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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,\"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.MaterialRequestPlanVendor", + "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": "Price", + "CaptionName": "App.Listform.ListformField.UnitPrice", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 7, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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": "{\"readOnly\":true,\"format\":\"#,##0.00\"}", + "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.MaterialRequestPlanVendor", + "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": "CurrencyId", + "CaptionName": "App.Listform.ListformField.Currency", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 8, + "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 Sas_H_Currency WHERE IsDeleted = 'false' AND IsActive = 1 ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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.MaterialRequestPlanVendor", + "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": "MinQuantity", + "CaptionName": "App.Listform.ListformField.MinQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 9, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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": "{\"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.MaterialRequestPlanVendor", + "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": 10, + "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' AND IsActive = 1 ORDER BY Name" + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxSelectBox", + "ColSpan": 1, + "EditorOptions": "{\"searchEnabled\":true}", + "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.MaterialRequestPlanVendor", + "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": "LeadTimeDays", + "CaptionName": "App.Listform.ListformField.LeadTimeDays", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 11, + "SourceDbType": 11, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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": "{\"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.MaterialRequestPlanVendor", + "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": "LastPurchaseDate", + "CaptionName": "App.Listform.ListformField.LastPurchaseDate", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 12, + "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.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.Update", + "E": true, + "I": true + }, + "CanRead": false, + "CanCreate": false, + "CanUpdate": false, + "CanExport": false, + "DefaultValue": null, + "DefaultValueType": 0, + "PivotSettingsDto": { + "IsPivot": true, + "Expanded": false, + "SortOrder": "asc", + "Area": "filter", + "Format": null, + "SummaryType": null, + "GroupInterval": "", + "WordWrapEnabled": false + }, + "Alignment": "left", + "Format": null, + "EditOrderNo": null, + "EditGroupOrderNo": null, + "EditorType2": "dxDateBox", + "ColSpan": 1, + "EditorOptions": "{\"type\":\"datetime\",\"displayFormat\":\"dd.MM.yyyy HH:mm\",\"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.MaterialRequestPlanVendor", + "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": "MaxQuantity", + "CaptionName": "App.Listform.ListformField.MaxQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 13, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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": "sum", + "ValueFormat": "#,##0.##", + "ShowInGroupFooter": false, + "AlignByColumn": false, + "DisplayFormat": "{0}", + "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.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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": "{\"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.MaterialRequestPlanVendor", + "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": "RfqNo", + "CaptionName": "App.Listform.ListformField.RfqNo", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 14, + "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": 0, + "ValueExpr": "Key", + "DisplayExpr": "Name", + "CascadeRelationField": null, + "CascadeFilterOperator": "=", + "CascadeParentFields": null, + "CascadeEmptyFields": null, + "LookupQuery": null + }, + "ValidationRuleDto": [], + "ColumnStylingDto": [], + "PermissionDto": { + "Deny": false, + "C": "App.Prc.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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": "{\"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.MaterialRequestPlanVendor", + "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": "RfqQuantity", + "CaptionName": "App.Listform.ListformField.RfqQuantity", + "PlaceHolder": null, + "ReadOnly": false, + "Visible": true, + "IsActive": true, + "Width": 0, + "ListOrderNo": 15, + "SourceDbType": 7, + "CultureName": "en", + "DataType": "number", + "SortIndex": 0, + "SortDirection": null, + "AllowSearch": true, + "AllowEditing": 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.MaterialRequestPlanVendor.Create", + "R": "App.Prc.MaterialRequestPlanVendor", + "U": "App.Prc.MaterialRequestPlanVendor.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": "{\"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" + } + ], + "IsDeletedField": true, + "IsCreatedField": true, + "InsertedRecords": { + "LanguageKeys": [ + "App.Prc.MaterialRequestPlanVendor", + "App.Prc.MaterialRequestPlanVendor.Title", + "App.Prc.MaterialRequestPlanVendor.Desc", + "App.Listform.ListformField.RfqQuantity" + ], + "PermissionGroupNames": [], + "PermissionNames": [ + "App.Prc.MaterialRequestPlanVendor", + "App.Prc.MaterialRequestPlanVendor.Create", + "App.Prc.MaterialRequestPlanVendor.Update", + "App.Prc.MaterialRequestPlanVendor.Delete", + "App.Prc.MaterialRequestPlanVendor.Export", + "App.Prc.MaterialRequestPlanVendor.Import" + ], + "MenuCodes": [], + "DataSourceCodes": [], + "ModuleIds": [] + } +} \ No newline at end of file diff --git a/configs/seeds/wizard/Prc_MaterialRequestPurchaseApproval.json b/configs/seeds/wizard/Prc_MaterialRequestPurchaseApproval.json index 5a15bd6d..1a4e7b6b 100644 --- a/configs/seeds/wizard/Prc_MaterialRequestPurchaseApproval.json +++ b/configs/seeds/wizard/Prc_MaterialRequestPurchaseApproval.json @@ -40,11 +40,6 @@ "En": "Material Request", "Tr": "Malzeme Talebi" }, - { - "Key": "App.Prc.MaterialRequest.Group.Approval", - "En": "Approval / Rejection", - "Tr": "Onay / Red Bilgileri" - }, { "Key": "App.Prc.MaterialRequest.Status.DeptApproval", "En": "Department Approval", diff --git a/configs/seeds/wizard/Prc_MyMaterialRequest.json b/configs/seeds/wizard/Prc_MyMaterialRequest.json index 18bbd2b8..fadf6732 100644 --- a/configs/seeds/wizard/Prc_MyMaterialRequest.json +++ b/configs/seeds/wizard/Prc_MyMaterialRequest.json @@ -32,19 +32,14 @@ "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), branch and department (yours by default; departments are filtered by branch), warehouse (filtered by branch) and location (filtered by warehouse) where the goods will be put, request date, general description (rich text); 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 › Talepler › Taleplerim.\nAlanlar: talep no (MT-YYYY-00001, otomatik), öncelik, talep eden (siz), şube ve departman (varsayılan olarak sizinkiler; departman şubeye göre süzülür), malın konulacağı depo (şubeye göre) ve konum (depoya göre), talep tarihi, genel açıklama (biçimli metin); 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.", + "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), branch and department (yours by default; departments are filtered by branch), warehouse (filtered by branch) and location (filtered by warehouse) where the goods will be put, request date, general description (rich text); 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. A request that has been sent (pending or approved) cannot be changed: header fields and the lines (product, quantity, unit, due date, reason) are locked and lines cannot be added or removed. To change it, move the request back to Draft, edit it and send it for approval again. 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.\nBranch: only the branches the user is authorized for (Users › Permissions › Branch Management) can be chosen and the list shows only their records; choosing a branch fills in the user's default warehouse and location of that branch, and a new record opens with your department's branch (when you are authorized for it).\nRelated: Awaiting Department Approval, Awaiting Purchasing Approval, All Requests.", + "DescTr": "Taleplerim — açtığınız malzeme talepleri, tüm durumlarıyla.\nNerede: Satınalma › Talepler › Taleplerim.\nAlanlar: talep no (MT-YYYY-00001, otomatik), öncelik, talep eden (siz), şube ve departman (varsayılan olarak sizinkiler; departman şubeye göre süzülür), malın konulacağı depo (şubeye göre) ve konum (depoya göre), talep tarihi, genel açıklama (biçimli metin); 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. Onaya gönderilen talep (onaylanmış ya da onayda olan) değiştirilemez: başlık alanları ve satırların ürünü, miktarı, birimi, termini, nedeni kilitlenir, satır eklenip silinemez. Değişiklik için talebi Taslak adımına alın, düzenleyin ve yeniden onaya gönderin. 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Şube: yalnız kullanıcının yetkili olduğu şubeler (Kullanıcılar › Yetkiler › Şube Yönetimi) seçilir ve listede yalnız bu şubelerin kayıtları görünür; şube seçilince kullanıcının o şubedeki varsayılan deposu ve konumu kendiliğinden gelir, yeni kayıt departmanınızın şubesiyle (o şubeye yetkiliyseniz) açılır.\nİlişkili: Departman Onayı Bekleyenler, Satınalma Onayı Bekleyenler, Tüm Talepler.", "Texts": [ { "Key": "App.Prc.MaterialRequest.Group.Request", "En": "Material Request", "Tr": "Malzeme Talebi" }, - { - "Key": "App.Prc.MaterialRequest.Group.Approval", - "En": "Approval / Rejection", - "Tr": "Onay / Red Bilgileri" - }, { "Key": "App.Prc.MaterialRequest.Status.DeptApproval", "En": "Department Approval", @@ -289,13 +284,6 @@ "CustomValueType": 2, "SqlQuery": "" }, - { - "FieldName": "BranchId", - "FieldDbType": 9, - "Value": "", - "CustomValueType": 3, - "SqlQuery": "SELECT BranchId FROM Hr_T_Department WHERE Id = (SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID')" - }, { "FieldName": "DepartmentId", "FieldDbType": 9, @@ -316,6 +304,34 @@ "Value": "0", "CustomValueType": 1, "SqlQuery": "" + }, + { + "FieldName": "Priority", + "FieldDbType": 11, + "Value": "5", + "CustomValueType": 1, + "SqlQuery": "" + }, + { + "FieldName": "BranchId", + "FieldDbType": 9, + "Value": "", + "CustomValueType": 3, + "SqlQuery": "SELECT bu.BranchId FROM Sas_T_BranchUsers bu WHERE bu.UserId = '@USERID' AND bu.BranchId = (SELECT d.BranchId FROM Hr_T_Department d WHERE d.Id = (SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID'))" + }, + { + "FieldName": "WarehouseId", + "FieldDbType": 9, + "Value": "", + "CustomValueType": 3, + "SqlQuery": "SELECT bu.DefaultWarehouseId FROM Sas_T_BranchUsers bu WHERE bu.UserId = '@USERID' AND bu.BranchId = (SELECT d.BranchId FROM Hr_T_Department d WHERE d.Id = (SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID'))" + }, + { + "FieldName": "LocationId", + "FieldDbType": 9, + "Value": "", + "CustomValueType": 3, + "SqlQuery": "SELECT bu.DefaultLocationId FROM Sas_T_BranchUsers bu WHERE bu.UserId = '@USERID' AND bu.BranchId = (SELECT d.BranchId FROM Hr_T_Department d WHERE d.Id = (SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID'))" } ], "WidgetsDto": [ @@ -564,7 +580,7 @@ "InsertServiceAddress": "list-form-data/insert", "DeleteServiceAddress": "list-form-data/delete", "IsTenant": true, - "IsBranch": false, + "IsBranch": true, "IsOrganizationUnit": false, "ListFormType": "List", "IsSubForm": false, @@ -1570,7 +1586,7 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": "DepartmentId,WarehouseId,LocationId", - "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Sas_T_Branch WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name" + "LookupQuery": "SELECT b.Id AS [Key], b.Name AS [Name], bu.DefaultWarehouseId, bu.DefaultLocationId FROM Sas_T_Branch b INNER JOIN Sas_T_BranchUsers bu ON bu.BranchId = b.Id AND bu.UserId = '@USERID' WHERE b.IsDeleted = 'false' AND b.IsActive = 1 AND b.TenantId = '@TENANTID' ORDER BY b.Name" }, "ValidationRuleDto": [ { @@ -1622,7 +1638,7 @@ "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, - "EditorScript": null, + "EditorScript": "// @builder {\"v\":1,\"rules\":[{\"id\":\"copy_1\",\"recipe\":\"copy\",\"condition\":{\"operator\":\"always\",\"source\":\"\",\"value\":\"\"},\"params\":{\"source\":\"DefaultWarehouseId\",\"target\":\"WarehouseId\"},\"fields\":[],\"trigger\":\"change\"},{\"id\":\"copy_2\",\"recipe\":\"copy\",\"condition\":{\"operator\":\"always\",\"source\":\"\",\"value\":\"\"},\"params\":{\"source\":\"DefaultLocationId\",\"target\":\"LocationId\"},\"fields\":[],\"trigger\":\"change\"}]}\ncopy(\"DefaultWarehouseId\", \"WarehouseId\")\ncopy(\"DefaultLocationId\", \"LocationId\")", "LastModificationTime": null, "LastModifierId": null, "CreationTime": "0001-01-01T00:00:00", @@ -3080,7 +3096,6 @@ "App.Prc.MyMaterialRequest.Title", "App.Prc.MyMaterialRequest.Desc", "App.Prc.MaterialRequest.Group.Request", - "App.Prc.MaterialRequest.Group.Approval", "App.Prc.MaterialRequest.Status.DeptApproval", "App.Prc.MaterialRequest.Status.PurchaseApproval", "App.Prc.MaterialRequest.Status.Approved", diff --git a/configs/seeds/wizard/Prc_PurchaseAgreement.json b/configs/seeds/wizard/Prc_PurchaseAgreement.json index d07ac37b..ba8e6fbc 100644 --- a/configs/seeds/wizard/Prc_PurchaseAgreement.json +++ b/configs/seeds/wizard/Prc_PurchaseAgreement.json @@ -57,16 +57,6 @@ "En": "Cancelled", "Tr": "İptal" }, - { - "Key": "App.Prc.PurchaseAgreement.NewRfq", - "En": "New RFQ", - "Tr": "Yeni Teklif" - }, - { - "Key": "App.Prc.PurchaseAgreement.NewRfqHint", - "En": "Open Requests for Quotation; select this agreement on a new RFQ", - "Tr": "Teklif Talepleri'ni açar; yeni teklifte bu sözleşmeyi seçin" - }, { "Key": "App.Prc.PurchaseAgreement.Products", "En": "Products", @@ -2599,8 +2589,6 @@ "App.Prc.AgreementStatus.Confirmed", "App.Prc.AgreementStatus.Closed", "App.Prc.AgreementStatus.Cancelled", - "App.Prc.PurchaseAgreement.NewRfq", - "App.Prc.PurchaseAgreement.NewRfqHint", "App.Prc.PurchaseAgreement.Products", "App.Prc.Orders", "App.Listform.ListformField.AgreementNo", diff --git a/configs/seeds/wizard/Prc_PurchaseOrder.json b/configs/seeds/wizard/Prc_PurchaseOrder.json index 7c659717..2cb48f85 100644 --- a/configs/seeds/wizard/Prc_PurchaseOrder.json +++ b/configs/seeds/wizard/Prc_PurchaseOrder.json @@ -32,8 +32,8 @@ "MenuTr": "Satınalma Siparişleri", "TitleEn": "Purchase Orders", "TitleTr": "Satınalma Siparişleri", - "DescEn": "Purchase Orders — orders given to suppliers, either converted from a tender of requests for quotation or written directly without collecting quotes.\nWhere: Purchasing › Orders › Purchase Orders; tabs Products, Request Lines (draft orders), Other Information and Quotes (the RFQs of the source tender).\nStatuses: Draft › Confirmed / Cancelled; orders converted from an RFQ open confirmed.\nFields: order no (automatic, P00001), supplier, supplier reference, branch, agreement (filtered by supplier and branch), receiving warehouse (filtered by branch) and operation type (filtered by warehouse; all three required; taken from the RFQ when converted from a quote), currency, confirmation date, expected arrival, arrival (entered when the goods arrive), deliver to, terms; the list also shows untaxed / tax / total (calculated from the lines); Source shows the RFQ no when converted from a quote, otherwise the material request numbers.\nToolbar (select an order): Import from Requests (draft orders), and the status buttons Confirm Order, Send by E-mail (queues the order with prices to the supplier's contact e-mail), Cancel, Set to Draft (a cancelled order); status buttons ask for confirmation. Only a draft order written without an RFQ can be deleted; a cancelled order cannot be edited.", - "DescTr": "Satınalma Siparişleri — tedarikçilere verilen siparişler; teklif talebi ihalesinden dönüştürülür ya da teklif toplamadan doğrudan yazılır.\nNerede: Satınalma › Siparişler › Satınalma Siparişleri; sekmeler Ürünler, Talep Kalemleri (taslak siparişte), Diğer Bilgiler ve Teklifler (kaynak ihalenin teklif talepleri).\nDurumlar: Taslak › Onaylandı / İptal; teklif talebinden dönüştürülen sipariş onaylı açılır.\nAlanlar: sipariş no (otomatik, P00001), tedarikçi, tedarikçi referansı, şube, sözleşme (tedarikçi ve şubeye göre), teslim alınacak depo (şubeye göre) ve operasyon türü (depoya göre; üçü de zorunlu; teklif talebinden dönüştürülen siparişte talepten gelir), para birimi, onaylama tarihi, beklenen geliş, varış (mal gelince girilir), teslim alacak, şartlar; listede ayrıca vergi hariç / KDV / toplam (kalemlerden hesaplanır) görünür; Kaynak teklif talebinden gelen siparişte teklif talep no, doğrudan yazılanda malzeme talebi numaralarıdır.\nAraç çubuğu (bir sipariş seçilir): Talepten Aktar (taslak siparişte) ve durum butonları Siparişi Onayla, E-posta ile Gönder (sipariş fiyatlarıyla tedarikçinin kontak e-postasına kuyruğa alınır), İptal, Taslak olarak ayarla (iptal edilmiş sipariş); durum butonları onay ister. Yalnız teklifsiz yazılmış taslak sipariş silinebilir; iptal edilmiş sipariş düzenlenemez.", + "DescEn": "Purchase Orders — orders given to suppliers, either converted from a tender of requests for quotation or written directly without collecting quotes.\nWhere: Purchasing › Orders › Purchase Orders; tabs Products, Other Information and Quotes (the RFQs of the source tender).\nStatuses: Draft › Confirmed / Cancelled; orders converted from an RFQ open confirmed.\nFields: order no (automatic, P00001), supplier, supplier reference, branch, agreement (filtered by supplier and branch), receiving warehouse (filtered by branch) and operation type (filtered by warehouse; all three required; taken from the RFQ when converted from a quote), currency, confirmation date, expected arrival, arrival (entered when the goods arrive), deliver to, terms; the list also shows untaxed / tax / total (calculated from the lines); Source shows the RFQ no when converted from a quote; request lines reach an order only through an RFQ (Purchasing › Requests › Planning, Purchasing decision).\nBranch: only the branches the user is authorized for (Users › Permissions › Branch Management) can be chosen and the list shows only their records; choosing a branch fills in the user's default warehouse of that branch, and a new record opens with your department's branch (when you are authorized for it).\nToolbar (select an order): the status buttons Confirm Order, Send by E-mail (queues the order with prices to the supplier's contact e-mail), Cancel, Set to Draft (a cancelled order); status buttons ask for confirmation. Only a draft order written without an RFQ can be deleted; a cancelled order cannot be edited.", + "DescTr": "Satınalma Siparişleri — tedarikçilere verilen siparişler; teklif talebi ihalesinden dönüştürülür ya da teklif toplamadan doğrudan yazılır.\nNerede: Satınalma › Siparişler › Satınalma Siparişleri; sekmeler Ürünler, Diğer Bilgiler ve Teklifler (kaynak ihalenin teklif talepleri).\nDurumlar: Taslak › Onaylandı / İptal; teklif talebinden dönüştürülen sipariş onaylı açılır.\nAlanlar: sipariş no (otomatik, P00001), tedarikçi, tedarikçi referansı, şube, sözleşme (tedarikçi ve şubeye göre), teslim alınacak depo (şubeye göre) ve operasyon türü (depoya göre; üçü de zorunlu; teklif talebinden dönüştürülen siparişte talepten gelir), para birimi, onaylama tarihi, beklenen geliş, varış (mal gelince girilir), teslim alacak, şartlar; listede ayrıca vergi hariç / KDV / toplam (kalemlerden hesaplanır) görünür; Kaynak teklif talebinden gelen siparişte teklif talep no'dur; talep kalemleri siparişe yalnız teklif talebi üzerinden (Satınalma › Talepler › Planlama, Satınalma kararı) gelir.\nŞube: yalnız kullanıcının yetkili olduğu şubeler (Kullanıcılar › Yetkiler › Şube Yönetimi) seçilir ve listede yalnız bu şubelerin kayıtları görünür; şube seçilince kullanıcının o şubedeki varsayılan deposu kendiliğinden gelir, yeni kayıt departmanınızın şubesiyle (o şubeye yetkiliyseniz) açılır.\nAraç çubuğu (bir sipariş seçilir): durum butonları Siparişi Onayla, E-posta ile Gönder (sipariş fiyatlarıyla tedarikçinin kontak e-postasına kuyruğa alınır), İptal, Taslak olarak ayarla (iptal edilmiş sipariş); durum butonları onay ister. Yalnız teklifsiz yazılmış taslak sipariş silinebilir; iptal edilmiş sipariş düzenlenemez.", "Texts": [ { "Key": "App.StaticLookup.Confirmed", @@ -293,7 +293,14 @@ "FieldDbType": 9, "Value": "", "CustomValueType": 3, - "SqlQuery": "SELECT BranchId FROM Hr_T_Department WHERE Id = (SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID')" + "SqlQuery": "SELECT bu.BranchId FROM Sas_T_BranchUsers bu WHERE bu.UserId = '@USERID' AND bu.BranchId = (SELECT d.BranchId FROM Hr_T_Department d WHERE d.Id = (SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID'))" + }, + { + "FieldName": "WarehouseId", + "FieldDbType": 9, + "Value": "", + "CustomValueType": 3, + "SqlQuery": "SELECT bu.DefaultWarehouseId FROM Sas_T_BranchUsers bu WHERE bu.UserId = '@USERID' AND bu.BranchId = (SELECT d.BranchId FROM Hr_T_Department d WHERE d.Id = (SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID'))" } ], "WidgetsDto": [ @@ -530,20 +537,6 @@ "N": "App.Prc.PurchaseOrder.Note" }, "CommandColumnDto": [ - { - "ButtonPosition": 1, - "AuthName": "App.Prc.PurchaseOrderImportItem.Update", - "Text": "App.Prc.PurchaseRfq.ImportRequests", - "Hint": "App.Prc.PurchaseRfq.ImportRequests", - "Icon": "download", - "Url": null, - "UrlTarget": "_blank", - "DialogName": null, - "DialogParameters": null, - "OnClick": "(() => { const r = (e && e.row && e.row.data) || getSelectedRowsData()[0]; if (!r) return; dialog.setConfig({ component: 'PurchaseDocGrid', props: { docId: r.Id, listFormCode: 'App.Prc.PurchaseOrderImportItem', title: 'App.Prc.PurchaseRfq.ImportRequests', info: 'App.Prc.PurchaseRfq.ImportRequestsInfo' }, onClose: () => refreshData() }); })()", - "IsVisible": true, - "VisibleExpression": null - }, { "ButtonPosition": 1, "AuthName": "App.Prc.PurchaseOrder.Update", @@ -613,7 +606,7 @@ "InsertServiceAddress": "list-form-data/insert", "DeleteServiceAddress": "list-form-data/delete", "IsTenant": true, - "IsBranch": false, + "IsBranch": true, "IsOrganizationUnit": false, "ListFormType": "List", "IsSubForm": false, @@ -633,19 +626,6 @@ } ] }, - { - "TabType": "List", - "TabTitle": "App.Prc.PurchaseRfq.RequestItems", - "Code": "App.Prc.PurchaseOrderImportItem", - "IsRefresh": false, - "Relation": [ - { - "ParentFieldName": "Id", - "DbType": 9, - "ChildFieldName": "BaseId" - } - ] - }, { "TabType": "Form", "TabTitle": "App.Prc.PurchaseOrder.OtherInfo", @@ -1567,7 +1547,7 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": "WarehouseId,OperationTypeId,AgreementId", - "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Sas_T_Branch WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name" + "LookupQuery": "SELECT b.Id AS [Key], b.Name AS [Name], bu.DefaultWarehouseId, bu.DefaultLocationId FROM Sas_T_Branch b INNER JOIN Sas_T_BranchUsers bu ON bu.BranchId = b.Id AND bu.UserId = '@USERID' WHERE b.IsDeleted = 'false' AND b.IsActive = 1 AND b.TenantId = '@TENANTID' ORDER BY b.Name" }, "ValidationRuleDto": [ { @@ -1619,7 +1599,7 @@ "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, - "EditorScript": null, + "EditorScript": "// @builder {\"v\":1,\"rules\":[{\"id\":\"copy_1\",\"recipe\":\"copy\",\"condition\":{\"operator\":\"always\",\"source\":\"\",\"value\":\"\"},\"params\":{\"source\":\"DefaultWarehouseId\",\"target\":\"WarehouseId\"},\"fields\":[],\"trigger\":\"change\"}]}\ncopy(\"DefaultWarehouseId\", \"WarehouseId\")", "LastModificationTime": null, "LastModifierId": null, "CreationTime": "0001-01-01T00:00:00", diff --git a/configs/seeds/wizard/Prc_PurchaseOrderAlternative.json b/configs/seeds/wizard/Prc_PurchaseOrderAlternative.json index 7c269674..a153a3c1 100644 --- a/configs/seeds/wizard/Prc_PurchaseOrderAlternative.json +++ b/configs/seeds/wizard/Prc_PurchaseOrderAlternative.json @@ -359,7 +359,7 @@ "D": "App.Prc.PurchaseOrderAlternative.Delete", "E": "App.Prc.PurchaseOrderAlternative.Export", "I": "App.Prc.PurchaseOrderAlternative.Import", - "N": "App.Prc.PurchaseOrderAlternative.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -2066,8 +2066,7 @@ "App.Prc.PurchaseOrderAlternative.Update", "App.Prc.PurchaseOrderAlternative.Delete", "App.Prc.PurchaseOrderAlternative.Export", - "App.Prc.PurchaseOrderAlternative.Import", - "App.Prc.PurchaseOrderAlternative.Note" + "App.Prc.PurchaseOrderAlternative.Import" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/Prc_PurchaseOrderProduct.json b/configs/seeds/wizard/Prc_PurchaseOrderProduct.json index a8b740b9..27311561 100644 --- a/configs/seeds/wizard/Prc_PurchaseOrderProduct.json +++ b/configs/seeds/wizard/Prc_PurchaseOrderProduct.json @@ -456,7 +456,7 @@ "D": "App.Prc.PurchaseOrderProduct.Delete", "E": "App.Prc.PurchaseOrderProduct.Export", "I": "App.Prc.PurchaseOrderProduct.Import", - "N": "App.Prc.PurchaseOrderProduct.Note" + "N": null }, "CommandColumnDto": [ { @@ -3941,8 +3941,7 @@ "App.Prc.PurchaseOrderProduct.Update", "App.Prc.PurchaseOrderProduct.Delete", "App.Prc.PurchaseOrderProduct.Export", - "App.Prc.PurchaseOrderProduct.Import", - "App.Prc.PurchaseOrderProduct.Note" + "App.Prc.PurchaseOrderProduct.Import" ], "MenuCodes": [ "App.Prc.PurchaseOrderProduct" diff --git a/configs/seeds/wizard/Prc_PurchaseRfq.json b/configs/seeds/wizard/Prc_PurchaseRfq.json index 4206be3f..1ecb8ad3 100644 --- a/configs/seeds/wizard/Prc_PurchaseRfq.json +++ b/configs/seeds/wizard/Prc_PurchaseRfq.json @@ -32,8 +32,8 @@ "MenuTr": "Teklif Talepleri", "TitleEn": "Requests for Quotation", "TitleTr": "Teklif Talepleri", - "DescEn": "Requests for Quotation — one purchasing document per supplier; documents opened for the same need form a tender and are compared before ordering.\nWhere: Purchasing › Orders › Requests for Quotation; tabs Products, Request Lines, Supplier Quote, Other Information, Quotes (other documents of the tender) and Price Comparison.\nStatuses: RFQ (draft) › RFQ Sent (e-mail queued to the supplier) › Purchase Order (converted) / Cancelled.\nFields: RFQ no (automatic, RFQ00001), supplier, supplier reference, branch, agreement (filtered by supplier and branch), receiving warehouse (filtered by branch) and operation type (filtered by warehouse; all three required; copied to the order by Convert to Order and to alternative quotes; Request Lines shows only requests of the same branch), currency, order deadline, expected arrival, ask confirmation, deliver to, terms; the list also shows tender, source (material request numbers of the lines), buyer and untaxed / tax / total (calculated from the lines).\nToolbar (select an RFQ): Import from Requests opens the approved request lines (several requests at once) to tick and save; Create Alternative adds suppliers to the tender (each gets a copy of the document with prices from its price list) and has a price entry table for all suppliers. The same work can be done in the Request Lines, Quotes and Price Comparison tabs. Choosing an agreement fills an empty RFQ with its remaining lines.\nStatus buttons (toolbar, confirmed before running): Send by E-mail, Send Whole Tender (all draft documents of the tender), Convert to Purchase Order (line by line: the Selected line, otherwise the Recommended line of the Price Comparison wins; one purchase order per winning supplier, documents that win nothing are cancelled), Cancel, Set to Draft (a cancelled RFQ). An RFQ converted or cancelled cannot be edited.", - "DescTr": "Teklif Talepleri — her tedarikçi için ayrı satınalma belgesi; aynı ihtiyaç için açılan belgeler bir ihale oluşturur ve siparişten önce kıyaslanır.\nNerede: Satınalma › Siparişler › Teklif Talepleri; sekmeler Ürünler, Talep Kalemleri, Tedarikçi Teklifi, Diğer Bilgiler, Teklifler (ihalenin diğer belgeleri) ve Fiyat Karşılaştırması.\nDurumlar: Teklif Talebi (taslak) › Teklif Talebi Gönderildi (tedarikçiye e-posta kuyruğa alındı) › Satınalma Siparişi (dönüştürüldü) / İptal Edildi.\nAlanlar: teklif talep no (otomatik, RFQ00001), tedarikçi, tedarikçi referansı, şube, sözleşme (tedarikçi ve şubeye göre), teslim alınacak depo (şubeye göre) ve operasyon türü (depoya göre; üçü de zorunlu; Siparişe Dönüştür ile siparişe, alternatif teklife kopyalanır; Talep Kalemleri yalnız aynı şubenin taleplerini gösterir), para birimi, sipariş zaman sınırı, beklenen geliş, onay isteyin, teslim alacak, şartlar; listede ayrıca ihale, kaynak (kalemlerin malzeme talebi numaraları), alıcı ve vergi hariç / KDV / toplam (kalemlerden hesaplanır) görünür.\nAraç çubuğu (bir teklif seçilir): Talepten Aktar onaylı talep kalemlerini (birden fazla talep birlikte) işaretleyip kaydetmek için açar; Alternatif Oluştur ihaleye tedarikçi ekler (her biri belgenin kopyasını tedarikçinin fiyat listesiyle alır) ve bütün tedarikçiler için fiyat giriş tablosu sunar. Aynı işler Talep Kalemleri, Teklifler ve Fiyat Karşılaştırması sekmelerinden de yapılır. Sözleşme seçilince boş teklif kalan sözleşme kalemleriyle dolar.\nDurum butonları (araç çubuğu, çalışmadan önce onay ister): E-posta ile Gönder, İhaleyi Gönder (ihalenin bütün taslak belgeleri), Siparişe Dönüştür (kalem bazında: Fiyat Karşılaştırması'nda Seçili satır, yoksa Önerilen satır kazanır; kazanan her tedarikçiye bir satınalma siparişi açılır, hiç kalem kazanamayan belge iptal olur), İptal, Taslak olarak ayarla (iptal edilmiş teklif). Siparişe dönüşmüş ya da iptal edilmiş teklif düzenlenemez.", + "DescEn": "Requests for Quotation — one purchasing document per supplier; documents opened for the same need form a tender and are compared before ordering.\nWhere: Purchasing › Orders › Requests for Quotation; tabs Products, Supplier Quote, Other Information, Quotes (other documents of the tender) and Price Comparison.\nStatuses: RFQ (draft) › RFQ Sent (e-mail queued to the supplier) › Purchase Order (converted) / Cancelled.\nFields: RFQ no (automatic, RFQ00001), supplier, supplier reference, branch, agreement (filtered by supplier and branch), receiving warehouse (filtered by branch) and operation type (filtered by warehouse; all three required; copied to the order by Convert to Order and to alternative quotes), currency, order deadline, expected arrival, ask confirmation, deliver to, terms; the list also shows tender, source (material request numbers of the lines), buyer and untaxed / tax / total (calculated from the lines).\nToolbar (select an RFQ): Create Alternative adds suppliers to the tender (each gets a copy of the document with prices from its price list) and has a price entry table for all suppliers. The same work can be done in the Quotes and Price Comparison tabs. Request lines come to an RFQ through the Purchasing decision in Purchasing › Requests › Planning: the line is added to the supplier's draft RFQ for the same branch and warehouse, otherwise a new draft is opened. Choosing an agreement fills an empty RFQ with its remaining lines.\nBranch: only the branches the user is authorized for (Users › Permissions › Branch Management) can be chosen and the list shows only their records; choosing a branch fills in the user's default warehouse of that branch, and a new record opens with your department's branch (when you are authorized for it).\nStatus buttons (toolbar, confirmed before running): Send by E-mail, Send Whole Tender (all draft documents of the tender), Convert to Purchase Order (line by line: the Selected line, otherwise the Recommended line of the Price Comparison wins; one purchase order per winning supplier, documents that win nothing are cancelled), Cancel, Set to Draft (a cancelled RFQ). An RFQ converted or cancelled cannot be edited.", + "DescTr": "Teklif Talepleri — her tedarikçi için ayrı satınalma belgesi; aynı ihtiyaç için açılan belgeler bir ihale oluşturur ve siparişten önce kıyaslanır.\nNerede: Satınalma › Siparişler › Teklif Talepleri; sekmeler Ürünler, Tedarikçi Teklifi, Diğer Bilgiler, Teklifler (ihalenin diğer belgeleri) ve Fiyat Karşılaştırması.\nDurumlar: Teklif Talebi (taslak) › Teklif Talebi Gönderildi (tedarikçiye e-posta kuyruğa alındı) › Satınalma Siparişi (dönüştürüldü) / İptal Edildi.\nAlanlar: teklif talep no (otomatik, RFQ00001), tedarikçi, tedarikçi referansı, şube, sözleşme (tedarikçi ve şubeye göre), teslim alınacak depo (şubeye göre) ve operasyon türü (depoya göre; üçü de zorunlu; Siparişe Dönüştür ile siparişe, alternatif teklife kopyalanır), para birimi, sipariş zaman sınırı, beklenen geliş, onay isteyin, teslim alacak, şartlar; listede ayrıca ihale, kaynak (kalemlerin malzeme talebi numaraları), alıcı ve vergi hariç / KDV / toplam (kalemlerden hesaplanır) görünür.\nAraç çubuğu (bir teklif seçilir): Alternatif Oluştur ihaleye tedarikçi ekler (her biri belgenin kopyasını tedarikçinin fiyat listesiyle alır) ve bütün tedarikçiler için fiyat giriş tablosu sunar. Aynı işler Teklifler ve Fiyat Karşılaştırması sekmelerinden de yapılır. Talep kalemleri teklife Satınalma › Talepler › Planlama'daki Satınalma kararıyla gelir: kalem tedarikçinin aynı şube ve depodaki taslak teklif talebine eklenir, yoksa yeni taslak açılır. Sözleşme seçilince boş teklif kalan sözleşme kalemleriyle dolar.\nŞube: yalnız kullanıcının yetkili olduğu şubeler (Kullanıcılar › Yetkiler › Şube Yönetimi) seçilir ve listede yalnız bu şubelerin kayıtları görünür; şube seçilince kullanıcının o şubedeki varsayılan deposu kendiliğinden gelir, yeni kayıt departmanınızın şubesiyle (o şubeye yetkiliyseniz) açılır.\nDurum butonları (araç çubuğu, çalışmadan önce onay ister): E-posta ile Gönder, İhaleyi Gönder (ihalenin bütün taslak belgeleri), Siparişe Dönüştür (kalem bazında: Fiyat Karşılaştırması'nda Seçili satır, yoksa Önerilen satır kazanır; kazanan her tedarikçiye bir satınalma siparişi açılır, hiç kalem kazanamayan belge iptal olur), İptal, Taslak olarak ayarla (iptal edilmiş teklif). Siparişe dönüşmüş ya da iptal edilmiş teklif düzenlenemez.", "Texts": [ { "Key": "App.Prc.PurchaseRfq.Action.SendTender", @@ -45,21 +45,6 @@ "En": "Convert to Purchase Order", "Tr": "Siparişe Dönüştür" }, - { - "Key": "App.Prc.PurchaseRfq.ImportRequests", - "En": "Import from Requests", - "Tr": "Talepten Aktar" - }, - { - "Key": "App.Prc.PurchaseRfq.ImportRequestsInfo", - "En": "Select the lines to bring in with the row checkboxes (several requests at once) and press Transfer Selected in the table toolbar.", - "Tr": "Aktarılacak satırları satır başındaki kutuyla seçin (birden fazla talep birlikte) ve tablonun araç çubuğundaki Seçilenleri Aktar'a basın." - }, - { - "Key": "App.Prc.PurchaseImportItem.TransferSelected", - "En": "Transfer Selected", - "Tr": "Seçilenleri Aktar" - }, { "Key": "App.Prc.PurchaseRfq.CreateAlternative", "En": "Create Alternative", @@ -89,11 +74,6 @@ "Key": "App.Prc.PurchaseRfq.PriceComparison", "En": "Price Comparison", "Tr": "Fiyat Karşılaştırması" - }, - { - "Key": "App.Prc.PurchaseRfq.RequestItems", - "En": "Request Lines", - "Tr": "Talep Kalemleri" } ] }, @@ -354,7 +334,14 @@ "FieldDbType": 9, "Value": "", "CustomValueType": 3, - "SqlQuery": "SELECT BranchId FROM Hr_T_Department WHERE Id = (SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID')" + "SqlQuery": "SELECT bu.BranchId FROM Sas_T_BranchUsers bu WHERE bu.UserId = '@USERID' AND bu.BranchId = (SELECT d.BranchId FROM Hr_T_Department d WHERE d.Id = (SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID'))" + }, + { + "FieldName": "WarehouseId", + "FieldDbType": 9, + "Value": "", + "CustomValueType": 3, + "SqlQuery": "SELECT bu.DefaultWarehouseId FROM Sas_T_BranchUsers bu WHERE bu.UserId = '@USERID' AND bu.BranchId = (SELECT d.BranchId FROM Hr_T_Department d WHERE d.Id = (SELECT DepartmentId FROM AbpUsers WHERE Id = '@USERID'))" } ], "WidgetsDto": [ @@ -591,20 +578,6 @@ "N": "App.Prc.PurchaseRfq.Note" }, "CommandColumnDto": [ - { - "ButtonPosition": 1, - "AuthName": "App.Prc.PurchaseRfqImportItem.Update", - "Text": "App.Prc.PurchaseRfq.ImportRequests", - "Hint": "App.Prc.PurchaseRfq.ImportRequests", - "Icon": "download", - "Url": null, - "UrlTarget": "_blank", - "DialogName": null, - "DialogParameters": null, - "OnClick": "(() => { const r = (e && e.row && e.row.data) || getSelectedRowsData()[0]; if (!r) return; dialog.setConfig({ component: 'PurchaseDocGrid', props: { docId: r.Id, listFormCode: 'App.Prc.PurchaseRfqImportItem', title: 'App.Prc.PurchaseRfq.ImportRequests', info: 'App.Prc.PurchaseRfq.ImportRequestsInfo' }, onClose: () => refreshData() }); })()", - "IsVisible": true, - "VisibleExpression": null - }, { "ButtonPosition": 1, "AuthName": "App.Prc.PurchaseRfqAlternative.Create", @@ -716,7 +689,7 @@ "InsertServiceAddress": "list-form-data/insert", "DeleteServiceAddress": "list-form-data/delete", "IsTenant": true, - "IsBranch": false, + "IsBranch": true, "IsOrganizationUnit": false, "ListFormType": "List", "IsSubForm": false, @@ -736,19 +709,6 @@ } ] }, - { - "TabType": "List", - "TabTitle": "App.Prc.PurchaseRfq.RequestItems", - "Code": "App.Prc.PurchaseRfqImportItem", - "IsRefresh": false, - "Relation": [ - { - "ParentFieldName": "Id", - "DbType": 9, - "ChildFieldName": "BaseId" - } - ] - }, { "TabType": "Form", "TabTitle": "App.Prc.PurchaseOrder.SupplierQuote", @@ -1430,7 +1390,7 @@ "CascadeFilterOperator": "=", "CascadeParentFields": null, "CascadeEmptyFields": "WarehouseId,OperationTypeId,AgreementId", - "LookupQuery": "SELECT Id AS [Key], Name AS [Name] FROM Sas_T_Branch WHERE IsDeleted = 'false' AND IsActive = 1 AND TenantId = '@TENANTID' ORDER BY Name" + "LookupQuery": "SELECT b.Id AS [Key], b.Name AS [Name], bu.DefaultWarehouseId, bu.DefaultLocationId FROM Sas_T_Branch b INNER JOIN Sas_T_BranchUsers bu ON bu.BranchId = b.Id AND bu.UserId = '@USERID' WHERE b.IsDeleted = 'false' AND b.IsActive = 1 AND b.TenantId = '@TENANTID' ORDER BY b.Name" }, "ValidationRuleDto": [ { @@ -1482,7 +1442,7 @@ "GridBoxOptions": null, "TagBoxOptions": null, "ImageUploadOptions": null, - "EditorScript": null, + "EditorScript": "// @builder {\"v\":1,\"rules\":[{\"id\":\"copy_1\",\"recipe\":\"copy\",\"condition\":{\"operator\":\"always\",\"source\":\"\",\"value\":\"\"},\"params\":{\"source\":\"DefaultWarehouseId\",\"target\":\"WarehouseId\"},\"fields\":[],\"trigger\":\"change\"}]}\ncopy(\"DefaultWarehouseId\", \"WarehouseId\")", "LastModificationTime": null, "LastModifierId": null, "CreationTime": "0001-01-01T00:00:00", @@ -3963,15 +3923,12 @@ "App.Prc.PurchaseRfq.Desc", "App.Prc.PurchaseRfq.Action.SendTender", "App.Prc.PurchaseRfq.Action.Award", - "App.Prc.PurchaseRfq.ImportRequests", - "App.Prc.PurchaseRfq.ImportRequestsInfo", "App.Prc.PurchaseRfq.CreateAlternative", "App.Prc.PurchaseRfq.CreateAlternativeInfo", "App.Prc.PurchaseRfq.PriceEntry", "App.Prc.PurchaseRfq.PriceEntryInfo", "App.Prc.PurchaseOrder.ConfirmAction", "App.Prc.PurchaseRfq.PriceComparison", - "App.Prc.PurchaseRfq.RequestItems", "App.Listform.ListformField.RfqNo", "App.Listform.ListformField.TenderGroupId" ], diff --git a/configs/seeds/wizard/Prc_PurchaseRfqAlternative.json b/configs/seeds/wizard/Prc_PurchaseRfqAlternative.json index 06eaaa29..8279a70f 100644 --- a/configs/seeds/wizard/Prc_PurchaseRfqAlternative.json +++ b/configs/seeds/wizard/Prc_PurchaseRfqAlternative.json @@ -359,7 +359,7 @@ "D": "App.Prc.PurchaseRfqAlternative.Delete", "E": "App.Prc.PurchaseRfqAlternative.Export", "I": "App.Prc.PurchaseRfqAlternative.Import", - "N": "App.Prc.PurchaseRfqAlternative.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -2078,8 +2078,7 @@ "App.Prc.PurchaseRfqAlternative.Update", "App.Prc.PurchaseRfqAlternative.Delete", "App.Prc.PurchaseRfqAlternative.Export", - "App.Prc.PurchaseRfqAlternative.Import", - "App.Prc.PurchaseRfqAlternative.Note" + "App.Prc.PurchaseRfqAlternative.Import" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/Prc_PurchaseRfqAlternativeSupplier.json b/configs/seeds/wizard/Prc_PurchaseRfqAlternativeSupplier.json index 2efe1684..bd5f2da9 100644 --- a/configs/seeds/wizard/Prc_PurchaseRfqAlternativeSupplier.json +++ b/configs/seeds/wizard/Prc_PurchaseRfqAlternativeSupplier.json @@ -350,7 +350,7 @@ "D": "App.Prc.PurchaseRfqAlternativeSupplier.Delete", "E": "App.Prc.PurchaseRfqAlternativeSupplier.Export", "I": "App.Prc.PurchaseRfqAlternativeSupplier.Import", - "N": "App.Prc.PurchaseRfqAlternativeSupplier.Note" + "N": null }, "CommandColumnDto": [ { @@ -1567,8 +1567,7 @@ "App.Prc.PurchaseRfqAlternativeSupplier.Update", "App.Prc.PurchaseRfqAlternativeSupplier.Delete", "App.Prc.PurchaseRfqAlternativeSupplier.Export", - "App.Prc.PurchaseRfqAlternativeSupplier.Import", - "App.Prc.PurchaseRfqAlternativeSupplier.Note" + "App.Prc.PurchaseRfqAlternativeSupplier.Import" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/Prc_PurchaseRfqComparison.json b/configs/seeds/wizard/Prc_PurchaseRfqComparison.json index a6f29723..8755b866 100644 --- a/configs/seeds/wizard/Prc_PurchaseRfqComparison.json +++ b/configs/seeds/wizard/Prc_PurchaseRfqComparison.json @@ -411,7 +411,7 @@ "D": "App.Prc.PurchaseRfqComparison.Delete", "E": "App.Prc.PurchaseRfqComparison.Export", "I": "App.Prc.PurchaseRfqComparison.Import", - "N": "App.Prc.PurchaseRfqComparison.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -2764,8 +2764,7 @@ "App.Prc.PurchaseRfqComparison.Update", "App.Prc.PurchaseRfqComparison.Delete", "App.Prc.PurchaseRfqComparison.Export", - "App.Prc.PurchaseRfqComparison.Import", - "App.Prc.PurchaseRfqComparison.Note" + "App.Prc.PurchaseRfqComparison.Import" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/Prj_BudgetReport.json b/configs/seeds/wizard/Prj_BudgetReport.json index b4b98835..197799cd 100644 --- a/configs/seeds/wizard/Prj_BudgetReport.json +++ b/configs/seeds/wizard/Prj_BudgetReport.json @@ -361,7 +361,7 @@ "D": "App.Prj.BudgetReport.Delete", "E": "App.Prj.BudgetReport.Export", "I": "App.Prj.BudgetReport.Import", - "N": "App.Prj.BudgetReport.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -2320,8 +2320,7 @@ "App.Prj.BudgetReport.Update", "App.Prj.BudgetReport.Delete", "App.Prj.BudgetReport.Export", - "App.Prj.BudgetReport.Import", - "App.Prj.BudgetReport.Note" + "App.Prj.BudgetReport.Import" ], "MenuCodes": [ "App.Prj.BudgetReport" diff --git a/configs/seeds/wizard/Prj_ManMonth.json b/configs/seeds/wizard/Prj_ManMonth.json index f66f0b83..addd5e88 100644 --- a/configs/seeds/wizard/Prj_ManMonth.json +++ b/configs/seeds/wizard/Prj_ManMonth.json @@ -343,7 +343,7 @@ "D": "App.Prj.ManMonth.Delete", "E": "App.Prj.ManMonth.Export", "I": "App.Prj.ManMonth.Import", - "N": "App.Prj.ManMonth.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -1925,8 +1925,7 @@ "App.Prj.ManMonth.Update", "App.Prj.ManMonth.Delete", "App.Prj.ManMonth.Export", - "App.Prj.ManMonth.Import", - "App.Prj.ManMonth.Note" + "App.Prj.ManMonth.Import" ], "MenuCodes": [ "App.Prj.ManMonth" diff --git a/configs/seeds/wizard/Prj_PersonnelManMonth.json b/configs/seeds/wizard/Prj_PersonnelManMonth.json index 6efaa8f5..49454e8e 100644 --- a/configs/seeds/wizard/Prj_PersonnelManMonth.json +++ b/configs/seeds/wizard/Prj_PersonnelManMonth.json @@ -355,7 +355,7 @@ "D": "App.Prj.PersonnelManMonth.Delete", "E": "App.Prj.PersonnelManMonth.Export", "I": "App.Prj.PersonnelManMonth.Import", - "N": "App.Prj.PersonnelManMonth.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -2190,8 +2190,7 @@ "App.Prj.PersonnelManMonth.Update", "App.Prj.PersonnelManMonth.Delete", "App.Prj.PersonnelManMonth.Export", - "App.Prj.PersonnelManMonth.Import", - "App.Prj.PersonnelManMonth.Note" + "App.Prj.PersonnelManMonth.Import" ], "MenuCodes": [ "App.Prj.PersonnelManMonth" diff --git a/configs/seeds/wizard/Prj_ProjectCostSummary.json b/configs/seeds/wizard/Prj_ProjectCostSummary.json index 670d076c..191af94a 100644 --- a/configs/seeds/wizard/Prj_ProjectCostSummary.json +++ b/configs/seeds/wizard/Prj_ProjectCostSummary.json @@ -368,7 +368,7 @@ "D": "App.Prj.ProjectCostSummary.Delete", "E": "App.Prj.ProjectCostSummary.Export", "I": "App.Prj.ProjectCostSummary.Import", - "N": "App.Prj.ProjectCostSummary.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -2207,8 +2207,7 @@ "App.Prj.ProjectCostSummary.Update", "App.Prj.ProjectCostSummary.Delete", "App.Prj.ProjectCostSummary.Export", - "App.Prj.ProjectCostSummary.Import", - "App.Prj.ProjectCostSummary.Note" + "App.Prj.ProjectCostSummary.Import" ], "MenuCodes": [], "DataSourceCodes": [], diff --git a/configs/seeds/wizard/Prj_ResourceList.json b/configs/seeds/wizard/Prj_ResourceList.json index c87b6d17..442b1856 100644 --- a/configs/seeds/wizard/Prj_ResourceList.json +++ b/configs/seeds/wizard/Prj_ResourceList.json @@ -400,7 +400,7 @@ "D": "App.Prj.ResourceList.Delete", "E": "App.Prj.ResourceList.Export", "I": "App.Prj.ResourceList.Import", - "N": "App.Prj.ResourceList.Note" + "N": null }, "CommandColumnDto": [], "StateStoringDto": { @@ -2864,8 +2864,7 @@ "App.Prj.ResourceList.Update", "App.Prj.ResourceList.Delete", "App.Prj.ResourceList.Export", - "App.Prj.ResourceList.Import", - "App.Prj.ResourceList.Note" + "App.Prj.ResourceList.Import" ], "MenuCodes": [ "App.Prj.ResourceList" diff --git a/ui/src/proxy/admin/models.ts b/ui/src/proxy/admin/models.ts index 90c2a61e..a4227066 100644 --- a/ui/src/proxy/admin/models.ts +++ b/ui/src/proxy/admin/models.ts @@ -126,7 +126,7 @@ export interface UserInfoViewModel extends ExtensibleObject { isVerified: boolean userRoleNames: string[] roles: AssignedRoleViewModel[] - branches: AssignedRoleViewModel[] + branches: AssignedBranchViewModel[] claims: AssignedClaimViewModel[] workHours: AssignedWorkHourViewModel[] departments: AssignedDepartmentViewModel[] @@ -281,8 +281,19 @@ export interface AssignedRoleViewModel { } export interface AssignedBranchViewModel { + id: string name?: string isAssigned: boolean + defaultWarehouseId?: string | null + defaultLocationId?: string | null + /** Şubenin depoları ve iç konumları; varsayılan depo/konum seçimini besler. */ + warehouses?: BranchWarehouseViewModel[] +} + +export interface BranchWarehouseViewModel { + id: string + name: string + locations: { id: string; name: string }[] } export interface AssignedClaimViewModel { diff --git a/ui/src/views/admin/user-management/Details.tsx b/ui/src/views/admin/user-management/Details.tsx index 18018a07..e35d06fe 100644 --- a/ui/src/views/admin/user-management/Details.tsx +++ b/ui/src/views/admin/user-management/Details.tsx @@ -35,7 +35,7 @@ import { CountryDto, getCountry } from '@/services/country.service' import { useLocalization } from '@/utils/hooks/useLocalization' import { usePermission } from '@/utils/hooks/usePermission' import dayjs from 'dayjs' -import { Field, FieldArray, FieldProps, Form, Formik, FormikHelpers } from 'formik' +import { ErrorMessage, Field, FieldArray, FieldProps, Form, Formik, FormikHelpers } from 'formik' import { ReactNode, useEffect, useMemo, useRef, useState } from 'react' import PageTitle from '@/components/shared/PageTitle' import { @@ -90,7 +90,11 @@ import { useParams } from 'react-router-dom' import * as Yup from 'yup' import { SelectBoxOption, SelectBoxOptionWithGroup, SelectBoxOptionByNumber } from '@/types/shared' import { AdaptableCard, ConfirmDialog } from '@/components/shared' -import { AssignedClaimViewModel, UserInfoViewModel } from '@/proxy/admin/models' +import { + AssignedBranchViewModel, + AssignedClaimViewModel, + UserInfoViewModel, +} from '@/proxy/admin/models' import { AVATAR_URL } from '@/constants/app.constant' import { useStoreActions, useStoreState } from '@/store' import { useSetting } from '@/utils/hooks/useSetting' @@ -140,6 +144,27 @@ const isProbationInvalid = (hireDate?: Date | string, probationEndDate?: Date | (dayjs(probationEndDate).isBefore(dayjs(hireDate), 'day') || dayjs(probationEndDate).isAfter(dayjs(hireDate).add(PROBATION_MAX_MONTHS, 'month'), 'day')) +/** + * İşaretli şubede depo seçeneği varsa varsayılan depo, seçilen deponun konumu varsa varsayılan konum zorunludur + * (sunucu aynı kuralı `UpdatePermissionAsync`'te uygular). + */ +const validateBranchDefaults = ( + branches: AssignedBranchViewModel[] | undefined, + translate: (key: string, params?: Record) => string, +) => { + const branchErrors = (branches ?? []).map((branch) => { + if (!branch.isAssigned || !branch.warehouses?.length) return undefined + const params = { 0: branch.name ?? '' } + const warehouse = branch.warehouses.find((w) => w.id === branch.defaultWarehouseId) + if (!warehouse) + return { defaultWarehouseId: translate('::Abp.Identity.User.BranchDefaultWarehouseRequired', params) } + if (warehouse.locations.length && !warehouse.locations.some((l) => l.id === branch.defaultLocationId)) + return { defaultLocationId: translate('::Abp.Identity.User.BranchDefaultLocationRequired', params) } + return undefined + }) + return branchErrors.some(Boolean) ? { branches: branchErrors } : {} +} + function UserDetails() { const { userId } = useParams() const { translate } = useLocalization() @@ -551,15 +576,15 @@ function UserDetails() { { setTimeout(() => { previewRef.current?.update(cropper) }, 100) }} - className="cropper max-h-[300px] max-w-[300px]" - stencilComponent={CircleStencil} - minHeight={100} - minWidth={100} /> ) : ( validateBranchDefaults(values.branches, translate)} onSubmit={async (values, { setSubmitting }) => { setSubmitting(true) @@ -1142,35 +1168,99 @@ function UserDetails() {
- {/* Şube Management */} + {/* Şube Management: işaretli şubede depo şubeye, konum depoya göre süzülür; seçenek varsa ikisi zorunludur. */}
{translate('::Abp.Identity.User.UserInformation.BranchManagement')}
- - {() => ( -
- {branches && branches.length > 0 - ? branches.map((_, index: number) => ( -
- - + + + {translate('::App.Listform.ListformField.BranchId')} + {translate('::Abp.Identity.User.DefaultWarehouse')} + {translate('::Abp.Identity.User.DefaultLocation')} + + + + {branches?.map((branch, index) => { + const warehouseOptions = (branch.warehouses ?? []).map((w) => ({ + value: w.id, + label: w.name, + })) + const locationOptions = ( + branch.warehouses?.find((w) => w.id === branch.defaultWarehouseId) + ?.locations ?? [] + ).map((l) => ({ value: l.id, label: l.name })) + return ( + + + + {branch.name} + + + + + {({ field, form }: FieldProps) => ( + option.value === branch.defaultLocationId, + )} + onChange={(option) => + form.setFieldValue(field.name, option?.value ?? null) + } + /> + )} + + + + + ) + })} + +
@@ -1416,13 +1506,13 @@ function UserDetails() { '::Abp.Identity.User.LockoutManagement.AccountEndDate', )} inputPrefix={} + disabled={values.lockoutEnabled === false} onChange={(date) => { form.setFieldValue( field.name, date ? dayjs(date).format('YYYY-MM-DDTHH:mm:ss') : null, ) }} - disabled={values.lockoutEnabled === false} /> )} @@ -1558,6 +1648,7 @@ function UserDetails() { {({ field, form }: FieldProps) => ( } /> )} @@ -1580,6 +1670,7 @@ function UserDetails() { {({ field, form }: FieldProps) => ( } /> )} diff --git a/ui/src/views/list/Grid.tsx b/ui/src/views/list/Grid.tsx index 86b1a603..9854364a 100644 --- a/ui/src/views/list/Grid.tsx +++ b/ui/src/views/list/Grid.tsx @@ -209,11 +209,14 @@ const Grid = (props: GridProps) => { [currentUser, getGridInstance, gridDto], ) + // Araç çubuğu eylemleri (iş akışı, özel buton) veriyi değiştirir; ızgarayı taşıyan ekran (form, diyalog) da haberdar edilir. + const notifyParent = props.refreshData const refreshData = useCallback(() => { const grid = getGridInstance() Promise.resolve(grid?.refresh()).finally(() => updateWorkflowApprovalButtons(grid)) void refreshWidgets() - }, [getGridInstance, updateWorkflowApprovalButtons, refreshWidgets]) + void notifyParent?.() + }, [getGridInstance, updateWorkflowApprovalButtons, refreshWidgets, notifyParent]) const getSelectedRowKeys = useCallback( async () => (await getGridInstance()?.getSelectedRowKeys()) ?? [], diff --git a/ui/src/views/list/Tree.tsx b/ui/src/views/list/Tree.tsx index ccf1e6fc..31653778 100644 --- a/ui/src/views/list/Tree.tsx +++ b/ui/src/views/list/Tree.tsx @@ -200,11 +200,14 @@ const Tree = (props: TreeProps) => { [currentUser, getTreeInstance, gridDto], ) + // Araç çubuğu eylemleri (iş akışı, özel buton) veriyi değiştirir; ızgarayı taşıyan ekran (form, diyalog) da haberdar edilir. + const notifyParent = props.refreshData const refreshData = useCallback(() => { const tree = getTreeInstance() Promise.resolve(tree?.refresh()).finally(() => updateWorkflowApprovalButtons(tree)) void refreshWidgets() - }, [getTreeInstance, updateWorkflowApprovalButtons, refreshWidgets]) + void notifyParent?.() + }, [getTreeInstance, updateWorkflowApprovalButtons, refreshWidgets, notifyParent]) const getSelectedRowKeys = useCallback( async () => (await getTreeInstance()?.getSelectedRowKeys()) ?? [], diff --git a/ui/src/views/list/useListFormColumns.ts b/ui/src/views/list/useListFormColumns.ts index e6590343..70b05631 100644 --- a/ui/src/views/list/useListFormColumns.ts +++ b/ui/src/views/list/useListFormColumns.ts @@ -609,6 +609,9 @@ const useListFormColumns = ({ minWidth: MIN_COMMAND_COLUMN_WIDTH, buttons, allowResizing: true, + // Kolonlar ızgaraya sığmadığında satır butonları yatay kaydırmanın dışında kalmasın. + fixed: true, + fixedPosition: 'right' as HorizontalEdge, } return column as GridColumnData diff --git a/ui/src/views/list/useToolbar.tsx b/ui/src/views/list/useToolbar.tsx index fafb44a7..6ccbf548 100644 --- a/ui/src/views/list/useToolbar.tsx +++ b/ui/src/views/list/useToolbar.tsx @@ -329,7 +329,7 @@ const useToolbar = ({ locateInMenu: 'auto', showText: 'always', options: { - icon: 'play', + icon: 'send', text: toToolbarText(translate('::App.ListForm.WorkflowStart')), hint: translate('::App.ListForm.WorkflowStart'), visible: true, diff --git a/ui/src/views/purchasing/MaterialRequestPlanDialog.tsx b/ui/src/views/purchasing/MaterialRequestPlanDialog.tsx new file mode 100644 index 00000000..286f8c5b --- /dev/null +++ b/ui/src/views/purchasing/MaterialRequestPlanDialog.tsx @@ -0,0 +1,385 @@ +import { useCallback, useEffect, useMemo, useRef, useState } from 'react' +import { FaChevronDown, FaChevronUp, FaInfoCircle } from 'react-icons/fa' +import { Button, Dialog, Notification, Tabs, toast } from '@/components/ui' +import TabContent from '@/components/ui/Tabs/TabContent' +import TabList from '@/components/ui/Tabs/TabList' +import TabNav from '@/components/ui/Tabs/TabNav' +import { dynamicFetch } from '@/services/form.service' +import { useLocalization } from '@/utils/hooks/useLocalization' +import { usePermission } from '@/utils/hooks/usePermission' +import Grid from '../list/Grid' +import { useListFormGridDto } from '../list/shared/hooks' + +type PlanRow = { + RequestNo?: string + UomId?: string + RemainingQuantity?: number + DraftQuantity?: number +} + +type MaterialRequestPlanDialogProps = { + open: boolean + onDialogClose: () => void + /** Planlanan talep kalemi; ızgaralar BaseId ile buna süzülür. */ + itemId: string + /** Kalemin listesi: özet buradan okunur, Onayla bu ekranın UpdateCommand'ını çalıştırır. */ + planListFormCode: string + /** Karar ızgaraları (İç Transfer, Satınalma); sekme başlığı ekranın başlığıdır. */ + tabs: string[] + /** Açılışta seçili sekme (stok varsa İç Transfer). */ + activeTab?: number + /** Onay bekleyen taslak planın ızgarası. */ + draftListFormCode: string + /** Taslağı silen Sıfırla butonunun dil anahtarı (:: öneki olmadan); verilmezse buton çizilmez. */ + resetText?: string + /** Açıklamanın dil anahtarı (:: öneki olmadan). */ + info?: string + /** + * Öner butonu: `listFormCode` ekranının ekleme komutu kalemin taslağını kurallara göre yeniden kurar (kural SQL'dedir); yalnız + * kullanıcı basınca çalışır. `confirmText` verilirse öneriyi kurup hemen onaylayan ikinci buton çizilir. + */ + suggest?: { + /** Buton metinlerinin dil anahtarları (:: öneki olmadan). */ + text: string + confirmText?: string + listFormCode: string + } +} + +const formatQuantity = (value?: number) => + (value ?? 0).toLocaleString(undefined, { maximumFractionDigits: 4 }) + +// Her kayıt (hücre, Tümünü Planla) ayrı refreshData üretir; diğer ızgaralar son kayıttan sonra bir kez yenilenir. +const REFRESH_DELAY_MS = 400 + +// Açıklama uzun ve öğrenildikten sonra gereksiz: varsayılan kapalı, seçim tarayıcıda hatırlanır (gizli pencere/engelli depolamada yalnız oturumluk). +const INFO_OPEN_KEY = 'materialRequestPlan.infoOpen' +const readInfoOpen = () => { + try { + return localStorage.getItem(INFO_OPEN_KEY) === '1' + } catch { + return false + } +} + +type PlanGridProps = { + listFormCode: string + itemId: string + version: number + onChanged: (listFormCode: string) => void +} + +const PlanGrid = ({ listFormCode, itemId, version, onChanged }: PlanGridProps) => { + const gridDto = useListFormGridDto(listFormCode) + const searchParams = useMemo( + () => new URLSearchParams({ filter: JSON.stringify(['BaseId', '=', itemId]) }), + [itemId], + ) + const refreshData = useCallback(async () => onChanged(listFormCode), [onChanged, listFormCode]) + + if (!gridDto) return null + return ( + + ) +} + +/** + * Planlama'nın Planla butonu: talep kaleminin kalanı iç transfer (kaynak konumlar) ve satınalma (tedarikçiler) ızgaralarında + * Plan Miktarı girilerek taslak plana dağıtılır, taslak Karşılama Planı'nda görünür; Onayla taslağı iç transfer ve teklif talebi + * belgelerine çevirir. Veri, kayıt ve yetki ekranların kendisindedir; bileşen yalnız düzen ve onay tetiğidir. + */ +const MaterialRequestPlanDialog = ({ + open, + onDialogClose, + itemId, + planListFormCode, + tabs, + activeTab = 0, + draftListFormCode, + resetText, + info, + suggest, +}: MaterialRequestPlanDialogProps) => { + const { translate } = useLocalization() + const { checkPermission } = usePermission() + const [row, setRow] = useState() + const [versions, setVersions] = useState>({}) + const pendingSources = useRef(new Set()) + const refreshTimer = useRef>(undefined) + const [confirming, setConfirming] = useState(false) + const [suggesting, setSuggesting] = useState(false) + const [resetting, setResetting] = useState(false) + const [infoOpen, setInfoOpen] = useState(readInfoOpen) + const toggleInfo = () => + setInfoOpen((open) => { + try { + localStorage.setItem(INFO_OPEN_KEY, open ? '0' : '1') + } catch { + // depolama kapalıysa seçim yalnız bu oturumda geçerli kalır + } + return !open + }) + + const loadRow = useCallback(async () => { + const response = await dynamicFetch('list-form-select/select', 'GET', { + listFormCode: planListFormCode, + filter: JSON.stringify(['Id', '=', itemId]), + take: 1, + }) + const next: PlanRow | undefined = response?.data?.data?.[0] + setRow(next) + return next + }, [planListFormCode, itemId]) + + const allCodes = useMemo(() => [...tabs, draftListFormCode], [tabs, draftListFormCode]) + + // Bir ızgaradaki kayıt diğerlerinin değerlerini (serbest stok, taslak) ve özeti değiştirir; kaydı yapan ızgara kendini zaten + // yeniler, yeniden kurulursa süren düzenleme kesilirdi. + const reloadGrids = useCallback( + (except: Set) => + setVersions((current) => + Object.fromEntries( + allCodes.map((code) => [code, (current[code] ?? 0) + (except.has(code) ? 0 : 1)]), + ), + ), + [allCodes], + ) + + const onGridChanged = useCallback( + (source: string) => { + pendingSources.current.add(source) + clearTimeout(refreshTimer.current) + refreshTimer.current = setTimeout(() => { + const sources = new Set(pendingSources.current) + pendingSources.current.clear() + reloadGrids(sources) + loadRow().catch(() => setRow(undefined)) + }, REFRESH_DELAY_MS) + }, + [reloadGrids, loadRow], + ) + + useEffect(() => () => clearTimeout(refreshTimer.current), []) + + const runSuggest = useCallback(async () => { + if (!suggest) return undefined + setSuggesting(true) + try { + await dynamicFetch('list-form-data/insert', 'POST', null, { + listFormCode: suggest.listFormCode, + data: { BaseId: itemId }, + }) + } catch { + // Ret mesajını genel API hata gösterimi verir; öneri tek transaction'dır, taslak değişmez. + } finally { + setSuggesting(false) + } + reloadGrids(new Set()) + return loadRow().catch(() => { + setRow(undefined) + return undefined + }) + }, [suggest, itemId, reloadGrids, loadRow]) + + // Açılışta yalnız özet okunur; plan kullanıcının butonlarıyla kurulur. + useEffect(() => { + loadRow().catch(() => setRow(undefined)) + }, [loadRow]) + + const confirm = async () => { + setConfirming(true) + try { + await dynamicFetch('list-form-data/update', 'POST', null, { + listFormCode: planListFormCode, + keys: [itemId], + data: {}, + }) + toast.push( + + {translate('::App.Prc.MaterialRequestPlan.Confirmed')} + , + { placement: 'bottom-end' }, + ) + // Kalanı biten kalem Planlama'dan çıkar; diyalog da kapanır. + reloadGrids(new Set()) + const next = await loadRow() + if (!next) onDialogClose() + } catch { + // Ret mesajını (stok, kalan, operasyon türü) genel API hata gösterimi verir; taslak yerinde kalır. + } finally { + setConfirming(false) + } + } + + // Taslağın bütün satırları taslak ızgarasının kendi silme komutuyla silinir; plan baştan kurulabilir. + const resetDraft = async () => { + setResetting(true) + try { + const response = await dynamicFetch('list-form-select/select', 'GET', { + listFormCode: draftListFormCode, + filter: JSON.stringify(['BaseId', '=', itemId]), + take: 500, + }) + const keys = ((response?.data?.data ?? []) as { Id: string }[]).map((line) => line.Id) + if (keys.length) { + await dynamicFetch('list-form-data/delete', 'POST', null, { + listFormCode: draftListFormCode, + keys, + }) + } + } catch { + // Ret mesajını genel API hata gösterimi verir. + } finally { + setResetting(false) + } + reloadGrids(new Set()) + await loadRow().catch(() => setRow(undefined)) + } + + // Önerilecek kaynak yoksa taslak boş kalır; onay denenmez, kullanıcı planı elle kurar. + const suggestAndConfirm = async () => { + const current = await runSuggest() + if ((current?.DraftQuantity ?? 0) > 0) await confirm() + } + + const caption = (key: string) => translate(`::App.Listform.ListformField.${key}`) + const canConfirm = checkPermission(`${planListFormCode}.Update`) && (row?.DraftQuantity ?? 0) > 0 + const canReset = checkPermission(`${draftListFormCode}.Delete`) && (row?.DraftQuantity ?? 0) > 0 + const canSuggest = + !!suggest && + checkPermission(`${suggest.listFormCode}.Create`) && + (row?.RemainingQuantity ?? 0) > 0 + + return ( + + + + {translate(`::${planListFormCode}.Title`)} + {info && ( + + )} + + + + {row && ( +
+ + {caption('RequestNo')}: {row.RequestNo} + + + {caption('RemainingQuantity')}:{' '} + + {formatQuantity(row.RemainingQuantity)} {row.UomId} + + + + {caption('DraftQuantity')}:{' '} + + {formatQuantity(row.DraftQuantity)} {row.UomId} + + + {resetText && ( + + )} + {suggest && ( + + )} + {suggest?.confirmText && ( + + )} +
+ )} + {info && infoOpen &&

{translate(`::${info}`)}

} + + + {tabs.map((code) => ( + + {translate(`::${code}.Title`)} + + ))} + + {tabs.map((code) => ( + + + + ))} + +
{translate(`::${draftListFormCode}.Title`)}
+ +
+ + + + +
+ ) +} + +export default MaterialRequestPlanDialog diff --git a/ui/src/views/shared/DialogContext/DialogShowComponent.tsx b/ui/src/views/shared/DialogContext/DialogShowComponent.tsx index 84793b6d..70063aa9 100644 --- a/ui/src/views/shared/DialogContext/DialogShowComponent.tsx +++ b/ui/src/views/shared/DialogContext/DialogShowComponent.tsx @@ -19,6 +19,7 @@ const dialogs: Record> = { BranchSeed: lazy(() => import('@/views/branch/BranchSeed')), DiaryEntry: lazy(() => import('@/views/intranet/DiaryModal')), PurchaseDocGrid: lazy(() => import('@/views/purchasing/PurchaseDocGridDialog')), + MaterialRequestPlan: lazy(() => import('@/views/purchasing/MaterialRequestPlanDialog')), } const DialogShowComponent = (): ReactElement => {