Malzeme ihtiyaç planlaması (MRP) src/cluster_erp/modules/procurement/mrp/ içinde yer alır. Bir planlama çalıştırması (MrpRun), her ürün için talebi stok ve açık arzla karşılaştırır, ürün ağaçlarını patlatır ve ürün başına bir öneri ve bir istisna mesajı içeren bir sonuç satırı (MrpRunItem) saklar. Bu sayfa bir çalıştırmanın nasıl işlediğini ve sonuçlarının nasıl kullanıldığını açıklar. Alan listeleri procurement modülü sayfasında ve kaynakta, ürün ağacı patlatması BOM modülü sayfasında yer alır.
Kısaca¶
- Bir çalıştırmanın yedi evresi vardır: başlatma, talep, arz, düşük seviye kodlama, netleme, istisnalar ve sonuç derleme (
src/cluster_erp/modules/procurement/mrp/engine.py:1-19). - Aynı anda yalnızca bir çalıştırma
runningolabilir; denetimi bir veritabanı danışma kilidi korur (src/cluster_erp/modules/procurement/mrp/services.py:157-176). - Diğer modüllerden gelen tüm veriler
GetOpenSalesOrderDemand,GetBulkStockLevelsveGetBomExplosiongibi EventBus sorgularıyla gelir (src/cluster_erp/modules/procurement/mrp/engine.py:871,src/cluster_erp/modules/procurement/mrp/engine.py:1325,src/cluster_erp/modules/procurement/mrp/engine.py:1720). - Stok ve üretim olayları çalıştırmayı bayat olarak işaretler ve ürünleri bir sonraki net değişim çalıştırması için planlama dosyasına işaretler (
src/cluster_erp/modules/procurement/module.py:863-1003). - Çalıştırma kalemleri açık aksiyonlarla satın alma taleplerine veya üretim emirlerine dönüşür (
src/cluster_erp/modules/procurement/mrp/services.py:331,src/cluster_erp/modules/procurement/mrp/routes.py:359-375).
Nasıl çalışır¶
Bir çalıştırma POST /mrp/runs (eşzamanlı) veya POST /mrp/runs/background (running durumuyla hemen döner) ve MrpRunCreate parametreleriyle başlar (src/cluster_erp/modules/procurement/mrp/routes.py:105-121, src/cluster_erp/modules/procurement/mrp/schemas.py:28-70). Diyagram evreleri gösterir.
flowchart TD P0["_phase0_init: MrpRun durumu running"] --> PM["planning_mode: delete_and_recreate veya normal"] PM --> P1["_phase1_demand: satış, üretim, PIR, emniyet stoğu"] P1 --> P2["_phase2_supply: stok, açık siparişler, üretim arzı, tedarikçiler"] P2 --> P3["_phase3_llc: etkin ürün ağaçlarından düşük seviye kodları"] P3 --> P4["_phase4_net_requirements: netleme, parti büyüklüğü, tarihler"] P4 --> P5["_phase5_exceptions: aksiyon mesajları"] P5 --> P7["_phase7_assemble: MrpRunItem satırları, toplamlar"] P7 --> E["MrpRunCompleted ve CriticalMaterialAlert"] P7 --> PR["output_type purchase_requisition ise satın alma talepleri"]
Düz anlatımla:
- Başlatma. Motor çalıştırmayı
runningdurumuyla oluşturur ve parametrelerin anlık görüntüsünü alır (src/cluster_erp/modules/procurement/mrp/engine.py:769-823).delete_and_recreateile önceki tamamlanmış çalıştırmanın kalemleri toplu silinir ve tek bir özet değişiklik geçmişi satırı yazılır;normalile önceki çalıştırmanın ürün ağacı önbelleği önceden yüklenir (src/cluster_erp/modules/procurement/mrp/engine.py:555-562,src/cluster_erp/modules/procurement/mrp/engine.py:697-767). - Talep. Talep açık satış siparişlerinden, açık üretim emri bileşenlerinden, planlı bağımsız ihtiyaçlardan (PIR), emniyet stoğu açıklarından ve yeniden sipariş noktalarından gelir.
projectkapsamlı bir çalıştırma ürün listesini önce projenin talebinden türetir (src/cluster_erp/modules/procurement/mrp/engine.py:824-977,src/cluster_erp/modules/procurement/mrp/engine.py:1059). - Arz. Stok seviyeleri, açık satın alma siparişleri, üretim arzı, üretim versiyonları, tedarikçiler ve ikameler toplu okunur (
src/cluster_erp/modules/procurement/mrp/engine.py:1311-1626). - Düşük seviye kodlama. Üretilen her ürün için etkin ürün ağacı versiyonu alınır ve düşük seviye kodları atamak için ürün ağacı patlatılır; kapsam ürün ağacı çocuklarıyla genişler (
src/cluster_erp/modules/procurement/mrp/engine.py:1627-1920). - Netleme. İhtiyaçlar zaman kovası başına; ürün ağaçlarından gelen bağımlı talep, hayalet kalemler, ikame, parti büyüklüğü, fire, teslim süresi kaydırması ve tedarikçi seçimiyle netlenir (
src/cluster_erp/modules/procurement/mrp/engine.py:1921-2599). Parti büyüklüğü çalıştırmanın kuralını ya da ürünün ABC sınıfına ait ayarı kullanır (src/cluster_erp/modules/procurement/mrp/engine.py:3037-3093). Teslim süresi tarihleriGetOwnerWorkingDaysüzerinden önce tedarikçinin çalışma takvimini, sonra şirket grup takvimini kullanır (src/cluster_erp/modules/procurement/mrp/engine.py:3247-3287). - İstisnalar. Her ürün en fazla bir ana istisna alır:
new_order,reschedule_in,reschedule_out,cancel,decrease_qty,increase_qtyveyaexpedite. Sönümleme payları ayarlardan gelir (src/cluster_erp/modules/procurement/mrp/engine.py:3405-3600,src/cluster_erp/modules/procurement/mrp/engine.py:2817). - Derleme. Kalemler parçalar halinde saklanır, çalıştırma toplamları güncellenir, durum
completedveyasimulationolur veMrpRunCompletedileCriticalMaterialAlertyayılır (src/cluster_erp/modules/procurement/mrp/engine.py:3880-4118).
Bir evre başarısız olursa çalıştırma hata mesajı ve süresiyle failed durumunu alır (src/cluster_erp/modules/procurement/mrp/engine.py:594-607). output_type değeri purchase_requisition ise tamamlanan çalıştırma hemen satın alma talepleri oluşturur (src/cluster_erp/modules/procurement/mrp/services.py:188-189).
Neden böyle kurulmuştur¶
Motorun modül belge dizesi yedi evreli algoritmayı ve netleme yöntemini adlandırır (src/cluster_erp/modules/procurement/mrp/engine.py:1-19). Kod yorumları iki gerekçe verir: önceki çalıştırma kalemlerinin toplu silinmesi, yeniden üretilebilen satırlar için satır başına geçmişten kaçınır (src/cluster_erp/modules/procurement/mrp/engine.py:718-721); net değişim tabanı yalnızca plan taşıyan bir çalıştırmadan alınır (src/cluster_erp/modules/procurement/mrp/engine.py:2835-2842). Başka gerekçe ne kodda ne de projenin yazılı mühendislik kurallarında belirtilmiştir.
Kurallar ve sınırlar¶
run_typedeğeriregenerativeveyanet_change;planning_modedeğerinormal,re_explode_bomveyadelete_and_recreate;scheduling_methoddeğeribackward,forward,lead_timeveyabasic_date;lot_size_ruledeğeridefault,lot_for_lot,fixed_order,period_orderveyaeoq;scopedeğeriall,abc_class,product,product_group,warehouse,projectveyamps_itemsolur (src/cluster_erp/modules/procurement/mrp/schemas.py:28-67).- Simülasyon çalıştırması önceki kalemlere dokunmaz (
src/cluster_erp/modules/procurement/mrp/engine.py:556). - Satın alma talebi yalnızca
completedbir çalıştırmadan oluşturulabilir (src/cluster_erp/modules/procurement/mrp/services.py:331-345). - Açılış dönemi dışındaki planlı bir siparişi üretim emrine dönüştürmek
forceister; dönüşümCreateProductionOrderFromPlannedsorgusudur (src/cluster_erp/modules/procurement/mrp/routes.py:359-447). POST /mrp/runs/{run_id}/materialize, bir simülasyonu aynı parametrelerle gerçek çalıştırma olarak yeniden koşar (src/cluster_erp/modules/procurement/mrp/routes.py:545-560).- Bir çalıştırmayı silmek çalıştırmada ve kalemlerinde
deleted_atalanını doldurur; koşan bir çalıştırma silinemez (src/cluster_erp/modules/procurement/mrp/services.py:1217-1246). - Çalıştırma kalemleri sabitlenebilir ve sabitlemesi kaldırılabilir; sabitlenen kalemler sonraki çalıştırmalarca yüklenir (
src/cluster_erp/modules/procurement/mrp/services.py:1284-1368,src/cluster_erp/modules/procurement/mrp/engine.py:2966). - Çalıştırma miktarları ve maliyetleri
Numericolarak saklar; sürelerROUND_HALF_EVENile yuvarlanır (src/cluster_erp/modules/procurement/mrp/engine.py:599-602).
Diğer parçalarla etkileşim¶
| Sözleşme | Yön | Amaç | Kaynak |
|---|---|---|---|
GetOpenSalesOrderDemand, GetOpenProductionDemand |
sorgu | talep | src/cluster_erp/modules/procurement/mrp/engine.py:871, src/cluster_erp/modules/procurement/mrp/engine.py:911 |
GetBulkStockLevels, GetBatchExpirySchedule |
inventory modülüne sorgu |
stok | src/cluster_erp/modules/procurement/mrp/engine.py:1325 |
GetBulkOpenPos, GetProductionSupply, GetProductionVersionsBulk |
sorgu | açık arz | src/cluster_erp/modules/procurement/mrp/engine.py:1526, src/cluster_erp/modules/procurement/mrp/engine.py:1542, src/cluster_erp/modules/procurement/mrp/engine.py:1421 |
GetActiveBomVersionForProduct, GetBomExplosion |
bom modülüne sorgu |
yapı | src/cluster_erp/modules/procurement/mrp/engine.py:1649, src/cluster_erp/modules/procurement/mrp/engine.py:1720 |
GetBulkProductVendors, GetProductPlanningData |
products_and_services modülüne sorgu |
tedarikçiler ve planlama verisi | src/cluster_erp/modules/procurement/mrp/engine.py:1561 |
GetOwnerWorkingDays |
calendars modülüne sorgu |
teslim süresi takvimi | src/cluster_erp/modules/procurement/mrp/engine.py:3271 |
MrpRunCompleted, CriticalMaterialAlert |
yayın | sonuçlar | src/cluster_erp/modules/procurement/mrp/engine.py:4073, src/cluster_erp/modules/procurement/mrp/engine.py:4106 |
Çalıştırma çalışma süresi sayfasında anlatılan çalışma süresi kurallarını okur. Web uygulaması sonuçları yedi özel bileşende gösterir; bkz. procurement modülü.
Sınırlar ve açık noktalar¶
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| MRP run | MrpRun |
Planlama algoritmasının parametreleri ve toplamlarıyla bir kez yürütülmesi. | MRP çalıştırması | src/cluster_erp/modules/procurement/mrp/models.py:26 |
| run item | MrpRunItem |
Bir ürünün bir çalıştırmadaki öneri ve istisnalı planlama sonucu. | Çalıştırma kalemi | src/cluster_erp/modules/procurement/mrp/models.py:201 |
| planned independent requirement | PlannedIndependentRequirement |
Bir ürün ve dönem için tahmini talep miktarı. | Tahmin (PIR) | src/cluster_erp/modules/procurement/mrp/models.py:535 |
| low-level code | bom_level |
Bir ürünün göründüğü en derin ürün ağacı seviyesi; netleme sırasını belirler. | Düşük seviye kodu | src/cluster_erp/modules/procurement/mrp/models.py:235 |
| planning file | MrpPlanningFileEntry |
Bir ürünün değiştiğini ve net değişim çalıştırmasıyla yeniden planlanması gerektiğini gösteren işaret. | Planlama dosyası | src/cluster_erp/modules/procurement/mrp/models.py:584 |
| exception message | exception_type |
MRP'nin bir ürün için önerdiği aksiyon, örneğin expedite veya new_order. |
İstisna mesajı | src/cluster_erp/modules/procurement/mrp/models.py:349 |
İlgili sayfalar¶
- Procurement modülü
- Kritik malzemeler ve ikame
- Satın alma talepleri
- BOM modülü
- Production modülü
- Çalışma süresi
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.