> Menünün altındaki her dal bu dosyada bir bölümdür (`module-doc:section`); dosya ve bölümler ilk deploy'da otomatik açılır. `module-doc:todo` işaretli alt bölümleri modülü üreten kişi ya da AI doldurur (`lowcode.instructions.md` §0.13); MCP ile üretimde talep bu bölümler doldurulmadan Testing'e alınamaz. "Ek — Ekran envanteri" bölümü wizard dosyalarından üretilir, elle düzenlenmez.
Satınalma belgelerinde kullanılacak ödeme koşulu, ödeme yöntemi, teslimat koşulu (Incoterm) ve teslim yöntemi tanımları. Kullanıcılar satınalma ve muhasebe personelidir. Satınalma talebi, teklif, sipariş ve fatura belgeleri bu modülün kapsamında değildir; bu ekranlar onların lookup kaynağıdır.
Tedarikçi kartı (eski `App.Prc.Supplier`) satış ve satınalmanın ortak kartı olarak **Kontaklar** adıyla Yönetim › Tanımlamalar'a taşındı; ayrıntı [Administration › Tanımlamalar](<App.Administration.md>). Kontak kartının Satış ve Satınalma sekmeleri bu modülün tanımlarını lookup olarak kullanır.
- Kart, etiket, ilgili kişi ve banka hesabı ekranları Satış tarafı da kullanacağı için `Adm` modülüne (`Adm_T_Contact*`, `App.Definitions.Contact*`) taşındı; bu modülde yalnızca satınalma koşulu tanımları kaldı.
Yetki ağacı: `App.Prc`›`App.Prc.Definitions`› her ekran (+ Create/Update/Delete/Export/Import/Note). Tüm ekranlar kiracı kapsamlıdır, şube filtresi yoktur. Widget'lar: her ekranda Toplam · Aktif · Pasif.
Yok. Tanımlar Yönetim › Tanımlamalar › Kontaklar'ın Satış ve Satınalma sekmelerinde (`App.Definitions.ContactSales`, `App.Definitions.ContactPurchasing`) seçilir.
- Geri alma: Kontak sekmeleri bu tanımlara bağlı olduğu için önce kontak tarafındaki seçimler temizlenir; ekranlar `delete_wizard` ile silinir, tablolar yalnızca açık onayla `dropTables: true` ile düşürülür.
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.
- Wizard List ekranları + menüsüz satır alt formu + Grid Workflow. Taleplerim ve iki onay listesi aynı tabloyu (`Prc_T_MaterialRequest`) filtreyle gösterir; Tüm Talepler başlık × kalem görünümünden (`Prc_V_MaterialRequestLine`) okur, her kalem bir satırdır.
- 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).
- **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 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.
| 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 |
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).
- 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).
-`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`).
- 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.
- Ş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 `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).
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.
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.
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.
- **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.
- **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.
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.
- 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.
- 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.
- 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.
- **Kaynak** kolonu: teklifte kalemlerin talep numaraları; tekliften dönüşen siparişte teklif talep no; doğrudan yazılan siparişte talep numaraları.
- Durum butonları (Gönder, İhaleyi Gönder, Siparişe Dönüştür, Siparişi Onayla, İptal, Taslak olarak ayarla) onay sorar, işlemi gizli `PendingAction` alanına yazıp ekranın kendi güncelleme ucuyla (`list-form-data/update`) kaydeder; kayıt sonrası yordam işlemi `Prc_P_*SetStatus` ile çalıştırır ve alanı temizler. Alan formda görünmez.
- E-posta, bildirim kuyruğundan (`Adm_T_Notification`, kanal Mail) tedarikçinin kontak e-postasına gider; teklif e-postası fiyat içermez (ürün, miktar, istenen termin, teklif son tarihi), sipariş e-postası fiyatlı. Kuyruk mesajı 2048 karakterle sınırlıdır; çok kalemli belgede tablo kısalır.
- SQL tarafında açılan belgelerin (alternatif teklif, dönüşen sipariş) numarası numaratörden `Adm_P_SequenceNext` ile alınır; biçim `Sequence.GetNextSequence` ile aynıdır.
- Kullanıcı kararıyla kapsam dışı: tedarikçi portalı (fiyatı satınalma girer), Alınan/Kalan/Faturalanan ve Fatura Yükle. Firma kolonu açılmadı (kiracı kapsamı). Demo veri girilmedi.
| 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.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`.
- 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).
- 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`).
- 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).
- Siparişe dönüşmüş ya da iptal edilmiş teklif ve kalemleri değiştirilemez; iptal edilmiş siparişin kalemi değiştirilemez. Gönderilmiş ya da dönüşmüş teklif silinemez; yalnız teklifsiz yazılmış taslak sipariş silinebilir.
- Fiyat Karşılaştırması sekmesinde birim fiyat, teslim tarihi ve Seçili düzenlenir (ilgili teklifin toplamı yeniden hesaplanır). Siparişe dönüşte kazanan satırlar Seçili olarak işaretlenir.
- Sözleşmede bitiş tarihi başlangıçtan önce olamaz; sözleşme seçilen boş teklif kalan (siparişe dönüşmemiş) miktarlarla dolar.
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.
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.
6. Satınalma Siparişleri'nde E-posta ile Gönder butonuyla siparişler tedarikçiye gider; mal gelince Varış girilir.
- **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ı.
- **Farklı para birimindeki teklif nasıl kıyaslanıyor?** Para Birimleri ekranındaki kurla TL'ye çevrilerek; kur güncel değilse kıyas yanıltır.
- 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.
| 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'` |
| 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'` |
| Açıklama | 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. |
| 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) |
| Açıklama | 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. |
| Alt formlar | `App.Prc.PurchaseOrderLine` (Id → PurchaseOrderId), `App.Prc.PurchaseOrderOther` (Id → Id), `App.Prc.PurchaseOrderAlternative` (Id → BaseId) |