Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / İş modülleri

Modül

Procurement modülü (procurement)

Tedarikçiler, satın alma talepleri, teklif talepleri, siparişler, sözleşmeler, info kayıtları, kritik malzemeler ve MRP ile procurement modülü sayfası.

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_breakdown ile 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_group ve mrp_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


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

Doğrulanan commit 92f8051 · 2026-11-13