src/cluster_erp/modules/procurement/ içindeki procurement modülü satın almayı kapsar. Bir tarafın tedarikçi rolünü, satın alma taleplerini, tedarikçi teklifleri ve puanlamayla satın alma teklif taleplerini, mal kabulüyle satın alma siparişlerini, satın alma sözleşmelerini ve satın alma info kayıtlarını tutar. Ayrıca malzeme ihtiyaç planlamasını (MRP) çalıştırır; kritik malzemeleri ve ikame gruplarını saklar. Bu sayfa genel bakıştır; her alt modülün kendi başvuru sayfası, MRP'nin ise bir açıklama sayfası vardır.
Bir bakışta¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Paket | src/cluster_erp/modules/procurement/ |
klasör |
| Modül sınıfı | Module |
src/cluster_erp/modules/procurement/module.py:18 |
name / version |
procurement / 0.1.0 |
src/cluster_erp/modules/procurement/module.py:20-25 |
| API öneki | /api/v1/procurement (ModuleBase.api_prefix) |
src/cluster_erp/core/module_base.py:37-38 |
| Alt modüller | 9: suppliers, purchase_requests, purchase_rfqs, purchase_orders, purchase_contracts, info_records, critical_materials, substitution_groups, mrp |
klasör listesi |
| Tablolar | 27 | dokuz models.py dosyasındaki __tablename__ |
| Metadata'daki varlıklar | entities içinde 22 anahtar |
src/cluster_erp/modules/procurement/module.py:1419-1442 |
| Uçlar | Pakette 155 uç dekoratörü | @...router.get/post/put/patch/delete için grep |
| Aksiyonlar | 21 ActionMeta girdisi |
pakette grep "ActionMeta(" |
| Göçler | 47 dosya | metni 27 tablo adından birini içeren migrations/versions/ dosyaları |
| Web uygulamasında yeri | Katalog uygulaması procurement; kapılı bir paketten sekiz özel bileşen |
src/cluster_erp/modules/app_store/catalog.json (procurement girdisi), gated_apps/procurement/app.js:1647-1656 |
| Masaüstünde yeri | src/cluster_erp/desktop/modules/procurement/mrp/ (pano, istisna çalışma masası, planlı siparişler, stok ihtiyaçları, zaman evreli görünüm, bağlama) |
klasör |
Modül ne yapar¶
- Taraf başına, kimlik alanları taraftan türetilen bir tedarikçi rolü tutar (
src/cluster_erp/modules/procurement/suppliers/services.py:80-145). - Malzeme ihtiyaçlarını onaydan siparişe ilerleyen satın alma taleplerinde toplar (
src/cluster_erp/modules/procurement/purchase_requests/services.py:76-83). - Satın alma teklif taleplerini birden çok tedarikçiye gönderir, tekliflerini kaydeder ve puanlar, kalemleri ihale eder; ihale, kazanan her tedarikçi için bir satın alma siparişi oluşturur (
src/cluster_erp/modules/procurement/purchase_rfqs/services.py:1215-1292). - Satın alma siparişleri verir, malı kalem kalem kabul eder ve girişi envantere işler (
src/cluster_erp/modules/procurement/purchase_orders/services.py:695-837). - Miktar ve değer sözleşmelerini ve tedarikçi ile ürün kırılımı başına bir fiyat ana verisini tutar (
src/cluster_erp/modules/procurement/purchase_contracts/models.py:23-109,src/cluster_erp/modules/procurement/info_records/models.py:25-121). - MRP'yi yedi evrede çalıştırır ve önerilerini taleplere veya emirlere dönüştürür (
src/cluster_erp/modules/procurement/mrp/engine.py:1-19). - Kritik malzemeleri işaretler ve birbirinin yerine geçebilen malzemeleri gruplar (
src/cluster_erp/modules/procurement/critical_materials/models.py:12-65,src/cluster_erp/modules/procurement/substitution_groups/models.py:24-127).
Alt modüller¶
| Alt modül | Amaç | Ana varlıklar | Yönlendirici | Kaynak |
|---|---|---|---|---|
suppliers |
Bir tarafın tedarikçi rolü | Supplier |
/suppliers |
src/cluster_erp/modules/procurement/suppliers/routes.py:28-37 |
purchase_requests |
Satın alma talepleri ve kalemleri | PurchaseRequest, PurchaseRequestItem |
/purchase-requests |
src/cluster_erp/modules/procurement/purchase_requests/routes.py:33 |
purchase_rfqs |
Satın alma teklif talepleri, tedarikçiler, teklifler, kriterler, puanlar, tedarikçi portalı | PurchaseRfq ve altı alt varlık |
/purchase-rfqs, /portal/rfqs |
src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:44-45, src/cluster_erp/modules/procurement/purchase_rfqs/portal_routes.py:26-27 |
purchase_orders |
Satın alma siparişleri, kalemleri, mal kabul | PurchaseOrder, PurchaseOrderItem |
/purchase-orders |
src/cluster_erp/modules/procurement/purchase_orders/routes.py:35 |
purchase_contracts |
Çerçeve anlaşmalar | PurchaseContract, PurchaseContractItem |
/purchase-contracts |
src/cluster_erp/modules/procurement/purchase_contracts/routes.py:33-34 |
info_records |
Tedarikçi fiyat ana verisi ve fiyat geçmişi | PurchasingInfoRecord, PurchasingInfoRecordPrice |
/info-records |
src/cluster_erp/modules/procurement/info_records/routes.py:24-25 |
critical_materials |
Eksik kalmaması gereken malzemeler | CriticalMaterial |
/critical-materials |
src/cluster_erp/modules/procurement/critical_materials/routes.py:24 |
substitution_groups |
Birbirinin yerine geçebilen malzemeler | MaterialSubstitutionGroup, MaterialSubstitutionMember |
/substitution-groups |
src/cluster_erp/modules/procurement/substitution_groups/routes.py:27 |
mrp |
Planlama çalıştırmaları, kalemleri, PIR'ler, emniyet zamanı, kotalar, netleme grupları, ATP | MrpRun, MrpRunItem ve beş varlık daha |
/mrp |
src/cluster_erp/modules/procurement/mrp/routes.py:54 |
Tüm yönlendiriciler modül önekinin altına require_app("procurement") ile bağlanır (src/cluster_erp/modules/procurement/module.py:70-82). Ortak yardımcı delivery_address.py, siparişlerin ve teklif taleplerinin yapılandırılmış teslimat adresini GetAddressById ile çözer ve bir metin anlık görüntüsü saklar (src/cluster_erp/modules/procurement/delivery_address.py:1-13, src/cluster_erp/modules/procurement/delivery_address.py:78).
Veri modeli¶
Her alt modül sayfası kendi alanlarını listeler. Tüm malzeme kalemleri product_id, product_model_id ve product_version_id taşır; sipariş kalemleri ürünsüz metin kalemi de olabilir (src/cluster_erp/modules/procurement/purchase_orders/schemas.py:20-37). Para sütunları Numeric türündedir; örneğin sipariş toplamı Numeric(19, 4), birim fiyat Numeric(18, 4) (src/cluster_erp/modules/procurement/purchase_orders/models.py:81-82, src/cluster_erp/modules/procurement/purchase_orders/models.py:195-200). Kalem toplamları saklanmadan önce ROUND_HALF_EVEN ile yuvarlanır (src/cluster_erp/modules/procurement/purchase_orders/services.py:307-312).
Ekranlar ve metadata¶
get_metadata, 19 bölümlü bir Satın Alma (İngilizce Procurement) kenar çubuğu grubu bildirir (src/cluster_erp/modules/procurement/module.py:1072-1418). Yedi bölüm kapılı paketin özel bileşenleridir: MRP Panosu, İstisna Çalışma Masası, Planlı Siparişler, Stok İhtiyaçları, Segmentasyon (XYZ), DDMRP Tamponları ve ATP/CTP. Diğerleri listedir: Tahmin (PIR), MRP Çalıştırmaları, Emniyet Zamanı Dönemleri, Kota Anlaşmaları, Satın Alma Talepleri, Satın Alma Teklif Talepleri, Satın Alma Siparişleri, Satın Alma Sözleşmeleri, Info Kayıtları, Kritik Malzemeler ve İkame Grupları. Teklif talebi karşılaştırması sekizinci bileşen olan purchase_rfq_comparison'dır (gated_apps/procurement/app.js:1647-1656). Bkz. kapılı uygulama paketleri ve masaüstü modül ekranları.
Durumlar ve aksiyonlar¶
Durumlar ve aksiyonlar her alt modül sayfasında listelenir. Diyagram bir ihtiyaçtan stoğa giden ana yolu gösterir.
flowchart LR MRP["MrpRun kalemleri"] --> PR["PurchaseRequest"] PR --> RFQ["PurchaseRfq"] RFQ --> Q["PurchaseRfqQuotation"] Q --> AW["award"] AW --> PO["PurchaseOrder"] PR --> PO PO --> GR["receive_item"] GR --> INV["inventory modülüne PostGoodsReceipt"] AW --> IR["SupplierQuotationAwarded ile PurchasingInfoRecord"]
Düz anlatımla: bir MRP çalıştırması kalemlerinden satın alma talepleri oluşturur (src/cluster_erp/modules/procurement/mrp/services.py:331). Bir talep purchase_request_id ile bir teklif talebine (src/cluster_erp/modules/procurement/purchase_rfqs/models.py:49) ya da onaylandıktan sonra POST /purchase-orders/from-pr/{pr_id} ile doğrudan siparişe gider (src/cluster_erp/modules/procurement/purchase_orders/services.py:349-413). Teklif talebi kalemlerinin ihalesi, kazanan her tedarikçi için bir sipariş oluşturur (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:1281-1286). Bir sipariş kaleminin kabulü envantere PostGoodsReceipt ile mal girişi işler (src/cluster_erp/modules/procurement/purchase_orders/services.py:799-836). purchasing_quotations modülünde bir tedarikçi teklifinin ihalesi info kayıtlarını günceller (src/cluster_erp/modules/procurement/module.py:813-862).
İş kuralları¶
Her alt modülün kuralları kendi sayfasındadır. İki kural modülün tamamında geçerlidir:
- Her malzeme kalemi EventBus üzerinden
ensure_product_breakdownile denetlenir (src/cluster_erp/modules/procurement/purchase_orders/services.py:279,src/cluster_erp/modules/procurement/purchase_requests/services.py:233). - Belgeler yıllık diziler kullanır:
supplier,purchase_request,purchase_order,purchase_contract,info_record,substitution_groupvemrp_pir(src/cluster_erp/modules/procurement/suppliers/services.py:130,src/cluster_erp/modules/procurement/purchase_requests/services.py:208,src/cluster_erp/modules/procurement/purchase_orders/services.py:245).
Olaylar ve sorgular¶
Modül 31 sözleşme tüketir ve 48 sözleşme üretir; sayım parties modülü sayfasındaki gibi yapıldı. Tam liste sözleşmeler başvurusu sayfasındadır.
| Yön | Sözleşme sınıfı | İşleyici veya yayan | Kaynak |
|---|---|---|---|
| yayar | PrCreated, PrApproved, PrCancelled |
satın alma talebi servisi | src/cluster_erp/modules/procurement/purchase_requests/services.py:279, src/cluster_erp/modules/procurement/purchase_requests/services.py:522, src/cluster_erp/modules/procurement/purchase_requests/services.py:547 |
| yayar | PoCreated, PoSent, PoAcknowledged, PoReceivedFull, PoReceivedPartial, PoCancelled |
satın alma siparişi servisi | src/cluster_erp/modules/procurement/purchase_orders/services.py:338, src/cluster_erp/modules/procurement/purchase_orders/services.py:648-921 |
| yayar | PartyRoleSet |
tedarikçi oluşturma ve silme | src/cluster_erp/modules/procurement/suppliers/services.py:138, src/cluster_erp/modules/procurement/suppliers/services.py:195 |
| yayar | MrpRunCompleted, CriticalMaterialAlert |
MRP motoru | src/cluster_erp/modules/procurement/mrp/engine.py:4073, src/cluster_erp/modules/procurement/mrp/engine.py:4106 |
| sorguyu yanıtlar | GetPurchaseOrderById, GetPurchaseRequestById, GetOpenPosForProduct, GetOpenPoLinesForReceipt, GetPlannedOrdersForCapacity, GetBulkOpenPos, GetCriticalMaterials, GetSubstitutesForProduct, GetPurchaseRfqQuotations, CreateFollowOnFromSupplierQuotation, ReconcilePoReceiptReversal |
module.py içindeki işleyiciler |
src/cluster_erp/modules/procurement/module.py:139-202 |
| abone olur | PartyUpdated, PartyDeleted |
tedarikçi rolü eşitlemesi | src/cluster_erp/modules/procurement/module.py:122-125 |
| abone olur | SalesOrderOpened, ProductionOrderCreated, BomActivated, GoodsReceived, GoodsIssued, StockTransferred, StockAdjusted, GoodsMovementReversed, StockCategoryTransferred, ProductionOrderCompleted, BomItemAdded, BomItemChanged, ProductUpdated |
MRP bayatlığı ve planlama dosyası | src/cluster_erp/modules/procurement/module.py:182-207 |
| abone olur | SupplierQuotationAwarded |
info kaydı güncellemesi | src/cluster_erp/modules/procurement/module.py:208 |
| abone olur | CollectSubjectData, AnonymiseSubject, DescribeAnalyticsFacts, DescribeFieldConsumers |
gizlilik, analitik, kiracı alanları | src/cluster_erp/modules/procurement/module.py:88, src/cluster_erp/modules/procurement/module.py:136-137, src/cluster_erp/modules/procurement/module.py:218-219 |
Yetkiler¶
Her alt modül sayfası kendi anahtarlarını listeler. Modül uç dosyalarında require_permission ile supplier.*, purchase_request.*, purchase_rfq.*, purchase_order.*, purchase_contract.*, info_record.*, critical_material.*, substitution_group.* ve mrp_run.* ailelerini denetler.
Gizlilik, saklama ve geçmiş¶
privacy_handlers.py, bireysel tarafların tedarikçi rolleri için ilgili kişi taleplerini yanıtlar: CollectSubjectData satırları döndürür, AnonymiseSubject tanımlayıcı değerlerin üzerine yazar ve satırları devre dışı bırakır (src/cluster_erp/modules/procurement/privacy_handlers.py:1-11). Silmeler deleted_at alanını doldurur (src/cluster_erp/modules/procurement/suppliers/services.py:185-191). Bkz. gizlilik ve ilgili kişi talepleri ve değişiklik geçmişi.
Analitik olguları¶
analytics_facts.py iki olgu kümesi katar. procurement_purchase_orders üzerindeki purchase_order kümesinin ölçüleri order_count, total_amount, average_amount ve median_amount olup para birimi alanı currency'dir. procurement_purchase_requests üzerindeki purchase_request kümesinin ölçüleri request_count ve total_estimated_cost'tur (src/cluster_erp/modules/procurement/analytics_facts.py:19-179). Bkz. analitik olguları.
Ayarlar ve başvuru verileri¶
Modülün ayarlar bölümü yoktur. MRP, ABC sınıfı başına parti büyüklüğü varsayılanlarını Settings üzerinden okur (src/cluster_erp/modules/procurement/mrp/engine.py:3037-3048); bkz. ayarlar başvurusu.
Testler¶
tests/ içinde modules.procurement için ve web-client/_e2e_*.mjs içinde /procurement/ yolu için grep ile bulundu.
| Tür | Dosya | Kapsam |
|---|---|---|
| pytest | tests/test_procurement_descriptions.py |
satın alma metadata'sındaki aksiyon açıklamaları |
| pytest | tests/test_data_map_package3.py, tests/test_party_form_contract.py |
tedarikçi rolü ve taraf formu sözleşmeleri |
| e2e | web-client/_e2e_procurement_app.mjs |
satın alma uygulaması |
| e2e | web-client/_e2e_procurement_audit_high.mjs, _medium, _low, _deferred |
talepler, teklif talepleri ve siparişlerdeki denetim bulguları |
| e2e | web-client/_e2e_procurement_gr.mjs |
mal kabul |
| e2e | web-client/_e2e_rfq_portal_token.mjs |
tedarikçi portalı |
| e2e | web-client/_e2e_mrp_hygiene_faz0.mjs ile web-client/_e2e_mrp_atp_faz8.mjs arası (dokuz süit) |
MRP |
Tutarsızlıklar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| supplier facet | Supplier |
Bir tarafın ticari varsayılanlarıyla tedarikçi rol kaydı. | Tedarikçi rolü | src/cluster_erp/modules/procurement/suppliers/models.py:13 |
| delivery snapshot | resolve_delivery_snapshot |
Bir sipariş veya teklif talebine adres seçildiğinde kopyalanan adres metni. | Teslimat adresi anlık görüntüsü | src/cluster_erp/modules/procurement/delivery_address.py:78 |
İlgili sayfalar¶
- Modüller dizini
- Tedarikçiler
- Satın alma talepleri
- Satın alma teklif talepleri
- Satın alma siparişleri
- Satın alma sözleşmeleri ve info kayıtları
- Malzeme ihtiyaç planlaması
- Kritik malzemeler ve ikame
- Purchasing quotations modülü
- Inventory modülü
- Bu modülün API başvurusu
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.