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

Modül

Costing modülü (costing)

Ürün ağacı versiyonunu malzeme, işçilik, yerleşim, fire ve genel gider maliyetlerine, önerilen fiyata ve onaya taşıyan costing modülü sayfası.

src/cluster_erp/modules/costing/ içindeki costing modülü bir ürün ağacı versiyonunu maliyetlendirir. Bir maliyet analizi ürün ağacı patlatmasını okur, işçilik ve genel gider oranlarını uygular, isteğe bağlı bir yerleşim maliyeti ekler ve bir maliyet kırılımı, bir toplam, bir hedef marj için önerilen fiyat ve bir düşük marj bayrağı saklar. Bir analiz ardından gönderme, onay veya red aşamalarından geçer ve bir teklife bağlı onaylanmış bir analiz fiyatını geri bildirir. İşçilik oranları ve genel gider oranları modülün kendi başvuru kayıtlarıdır.

Bir bakışta

Öğe Değer Kaynak
Paket src/cluster_erp/modules/costing/ klasör
Modül sınıfı Module src/cluster_erp/modules/costing/module.py:15
name / version costing / 0.1.0 src/cluster_erp/modules/costing/module.py:16-22
API öneki /api/v1/costing (ModuleBase.api_prefix) src/cluster_erp/core/module_base.py:37-38
Alt modüller 3: costing_analyses, labor_rates, overhead_rates klasör listesi
Tablolar 5: costing_costing_analyses, costing_cost_breakdown_items, costing_rate_snapshots, costing_labor_rates, costing_overhead_rates src/cluster_erp/modules/costing/costing_analyses/models.py:24, src/cluster_erp/modules/costing/costing_analyses/models.py:193, src/cluster_erp/modules/costing/costing_analyses/models.py:294, src/cluster_erp/modules/costing/labor_rates/models.py:15, src/cluster_erp/modules/costing/overhead_rates/models.py:13
Metadata'daki varlıklar 3: costing_analysis, labor_rate, overhead_rate src/cluster_erp/modules/costing/module.py:303-307
Uçlar Pakette 30 uç dekoratörü @router. için grep
Web uygulamasında yeri Katalog uygulaması costing src/cluster_erp/modules/app_store/catalog.json (costing girdisi)
Masaüstünde yeri Yalnızca genel bileşenler; src/cluster_erp/desktop/modules/ içinde klasör yok klasör

Modül ne yapar

  • Bir ürün ağacı ve ürün ağacı versiyonu için, isteğe bağlı olarak bir teklife ve bir yerleşim işine bağlı, hedef marj ve para birimiyle bir maliyet analizi kaydeder (src/cluster_erp/modules/costing/costing_analyses/models.py:23-189).
  • Maliyet kırılımını katmanlar halinde hesaplar ve maliyet satırı başına bir kırılım satırı saklar (src/cluster_erp/modules/costing/costing_analyses/services.py:256-708).
  • Kullanılan her oranın anlık görüntüsünü saklar; böylece sonraki bir oran değişikliği eski bir sonucun açıklamasını değiştirmez (src/cluster_erp/modules/costing/costing_analyses/services.py:627-662).
  • Bir kullanıcının son fiyat belirlemesine, göndermesine, onaylamasına, reddetmesine, taslağa döndürmesine ve yerine geçirmesine izin verir (src/cluster_erp/modules/costing/costing_analyses/services.py:710-896).
  • İki ile beş analizi karşılaştırır ve bir analizi maliyet çarpanlarıyla bir ne-olursa senaryosu olarak klonlar (src/cluster_erp/modules/costing/costing_analyses/services.py:957-1159).
  • İş merkezi ve operasyon türü başına işçilik oranlarını ve bir esas ve uygulama sırasıyla genel gider oranlarını tutar (src/cluster_erp/modules/costing/labor_rates/models.py:14-68, src/cluster_erp/modules/costing/overhead_rates/models.py:12-54).

Alt modüller

Alt modül Amaç Ana varlıklar Yönlendirici Kaynak
costing_analyses Analizler, kırılım, anlık görüntüler, yaşam döngüsü CostingAnalysis, CostBreakdownItem, CostingRateSnapshot /api/v1/costing/analyses src/cluster_erp/modules/costing/costing_analyses/routes.py:31
labor_rates İşçilik oranları LaborRate /api/v1/costing/labor-rates src/cluster_erp/modules/costing/labor_rates/routes.py:22
overhead_rates Genel gider oranları OverheadRate /api/v1/costing/overhead-rates src/cluster_erp/modules/costing/overhead_rates/routes.py:22

Veri modeli

Varlık Tablo Anahtar alanlar Notlar Kaynak
CostingAnalysis costing_costing_analyses analysis_no, bom_id, bom_version_id, quote_id, nesting_job_id, status, is_scenario, parent_analysis_id, superseded_by_id, yedi maliyet toplamı, target_margin_pct, actual_margin_pct, markup_pct, suggested_price, final_price, currency, low_margin_flag, calculation_version, onay damgaları para Numeric(19, 4), yüzdeler Numeric(5, 2) src/cluster_erp/modules/costing/costing_analyses/models.py:23-189
CostBreakdownItem costing_cost_breakdown_items analysis_id, cost_type, bom_item_id, part_id, work_center_id, operation_type, overhead_category, description, quantity, rate, scrap_factor, base_cost, scrap_cost, total_cost, currency, rate_snapshot_id maliyet satırı başına bir satır src/cluster_erp/modules/costing/costing_analyses/models.py:192-290
CostingRateSnapshot costing_rate_snapshots analysis_id, rate_type, source_rate_id, snapshot_data bir oranın JSONB kopyası src/cluster_erp/modules/costing/costing_analyses/models.py:293-307
LaborRate costing_labor_rates work_center_id, operation_type, rate_type, rate_per_hour, rate_per_unit, pricing_unit_id, currency, valid_from, valid_to, is_active iş merkezi ve operasyon türü başına bir açık oran src/cluster_erp/modules/costing/labor_rates/models.py:14-68
OverheadRate costing_overhead_rates name, rate_type, basis, rate_value, currency, valid_from, valid_to, is_active, apply_order rate_type başına bir açık oran src/cluster_erp/modules/costing/overhead_rates/models.py:12-54

"Açık", valid_to boş ve satır canlı demektir; kısmi benzersiz indeksler bunu zorlar (src/cluster_erp/modules/costing/labor_rates/models.py:16-24, src/cluster_erp/modules/costing/overhead_rates/models.py:14-21). Para Numeric ve Decimal türündedir; bkz. para ve Decimal.

Ekranlar ve metadata

get_metadata üç listeli bir Maliyet Yönetimi (İngilizce Costing Management) kenar çubuğu grubu bildirir: Maliyet Analizleri, İşçilik Oranları ve Genel Gider Oranları (src/cluster_erp/modules/costing/module.py:253-308). Analiz listesi numara, durum, toplam maliyet, son fiyat, gerçek marj, para birimi, düşük marj bayrağı ve hesaplama zamanını bir durum süzgeciyle gösterir (src/cluster_erp/modules/costing/costing_analyses/metadata.py:125-200).

Durumlar ve aksiyonlar

Durumlar ve izin verilen geçişler serviste sabittir (src/cluster_erp/modules/costing/costing_analyses/services.py:71-80): draft durumundan calculated durumuna; calculated durumundan yeniden calculated veya pending_approval durumuna; pending_approval durumundan approved veya rejected durumuna; approved durumundan superseded durumuna; rejected durumundan geri draft durumuna. approved ve superseded analizler değiştirilemez.

Aksiyon Etiket Koşul Uç İzin Kaynak
calculate Hesapla status değeri draft POST /analyses/{id}/calculate costing_analysis.calculate src/cluster_erp/modules/costing/costing_analyses/metadata.py:41-51, src/cluster_erp/modules/costing/costing_analyses/routes.py:129-141
recalculate Yeniden Hesapla status değeri calculated POST /analyses/{id}/recalculate costing_analysis.calculate src/cluster_erp/modules/costing/costing_analyses/metadata.py:52-65, src/cluster_erp/modules/costing/costing_analyses/routes.py:144-156
submit_approval Onaya Gönder status değeri calculated POST /analyses/{id}/submit-for-approval costing_analysis.submit src/cluster_erp/modules/costing/costing_analyses/metadata.py:66-79, src/cluster_erp/modules/costing/costing_analyses/routes.py:175-187
approve Onayla status değeri pending_approval POST /analyses/{id}/approve costing_analysis.approve src/cluster_erp/modules/costing/costing_analyses/metadata.py:80-93, src/cluster_erp/modules/costing/costing_analyses/routes.py:190-203
reject Reddet status değeri pending_approval POST /analyses/{id}/reject costing_analysis.reject src/cluster_erp/modules/costing/costing_analyses/metadata.py:94-107, src/cluster_erp/modules/costing/costing_analyses/routes.py:206-219
return_to_draft Taslağa Döndür status değeri rejected POST /analyses/{id}/return-to-draft costing_analysis.update src/cluster_erp/modules/costing/costing_analyses/metadata.py:108-121, src/cluster_erp/modules/costing/costing_analyses/routes.py:222-234

İki yaşam döngüsü ucunun ActionMeta girdisi yoktur: POST /analyses/{id}/set-final-price ve POST /analyses/{id}/supersede (src/cluster_erp/modules/costing/costing_analyses/routes.py:159-172, src/cluster_erp/modules/costing/costing_analyses/routes.py:237-250).

İş kuralları

Maliyet toplaması

Şema calculate içindeki katmanların sırasını gösterir.

flowchart TD
 E["GetBomExplosion (bom)"] --> M["malzeme katmanı: effective_qty x material_cost_per_unit, artı fire"]
 E --> L["işçilik katmanı: dakika x saatlik oran veya adet x birim oran, artı fire"]
 N["GetNestingJobById (nesting)"] --> NT["yerleşim katmanı: net_material_cost"]
 M --> S["ara toplam"]
 L --> S
 NT --> S
 S --> O["genel gider katmanı, apply_order sırasıyla"]
 O --> T["total_cost = malzeme + işçilik + genel gider + fire + yerleşim"]
 T --> P["suggested_price = toplam / (1 - hedef marj)"]
 P --> F["marj 15 altındaysa low_margin_flag"]

Düz anlatımla, adım adım (src/cluster_erp/modules/costing/costing_analyses/services.py:256-708):

  1. Analizin calculated durumuna geçmesine izin verilmelidir (src/cluster_erp/modules/costing/costing_analyses/services.py:261-262).
  2. Modül bom modülünden ürün ağacı versiyonunun patlatmasını ister; patlatma yoksa veya kalemi yoksa başarısız olur (src/cluster_erp/modules/costing/costing_analyses/services.py:264-290).
  3. Etkin işçilik ve genel gider oranlarını yükler ve para birimi analizin para biriminden farklı olan her oranı COSTING_CURRENCY_MISMATCH ile reddeder (src/cluster_erp/modules/costing/costing_analyses/services.py:292-313).
  4. Önceki kırılım satırlarını ve anlık görüntüleri kaldırır (src/cluster_erp/modules/costing/costing_analyses/services.py:315-329).
  5. Malzeme katmanı: malzeme maliyeti olan her kalem için temel maliyet, etkin miktar çarpı birim malzeme maliyetidir; fire maliyeti temel maliyet çarpı fire katsayısıdır (src/cluster_erp/modules/costing/costing_analyses/services.py:346-404).
  6. İşçilik katmanı: işçilik dakikası olan her kalem için oran önce iş merkezi ve operasyon türüyle, sonra yalnızca iş merkeziyle, sonra yalnızca operasyon türüyle, sonra general operasyon türüyle, sonra ikisi de olmayan bir oranla aranır. Birim fiyat oranı miktarı çarpar; saatlik oran saatleri çarpar. Oran yoksa kalemin kendi birim işçilik maliyeti kullanılır. İşçilik firesi, işçilik maliyeti çarpı fire katsayısıdır (src/cluster_erp/modules/costing/costing_analyses/services.py:406-504).
  7. Yerleşim katmanı: analiz bir yerleşim işini belirttiğinde, işin net_material_cost değeri tek bir kırılım satırı olur (src/cluster_erp/modules/costing/costing_analyses/services.py:506-534).
  8. Genel gider katmanı: her etkin genel gider oranı apply_order sırasıyla işçiliğin, malzemenin, o ana kadarki toplamın veya yürüyen ara toplamın bir yüzdesini ya da miktar birimi başına sabit bir tutarı alır; her sonuç yürüyen ara toplama eklenir (src/cluster_erp/modules/costing/costing_analyses/services.py:536-587).
  9. Toplam; malzeme artı işçilik artı genel gider artı fire artı yerleşimdir (src/cluster_erp/modules/costing/costing_analyses/services.py:589-600).
  10. Hedef marj varsa önerilen fiyat, toplamın bir eksi marja bölümüdür ve kâr payı ondan türetilir (src/cluster_erp/modules/costing/costing_analyses/services.py:602-619).
  11. Marj yüzde 15'in altındaysa düşük marj bayrağı ayarlanır (src/cluster_erp/modules/costing/costing_analyses/services.py:60, src/cluster_erp/modules/costing/costing_analyses/services.py:621-625).
  12. Oran anlık görüntüleri saklanır, durum calculated olur, calculation_version bir artar ve CostingCalculated, bayrak varsa ayrıca LowMarginAlert yayılır (src/cluster_erp/modules/costing/costing_analyses/services.py:627-706).

Her para sonucu ROUND_HALF_EVEN ile dört basamağa yuvarlanır (src/cluster_erp/modules/costing/costing_analyses/services.py:359-372, src/cluster_erp/modules/costing/costing_analyses/services.py:606-609).

Diğer kurallar

  • Son fiyat yalnızca calculated bir analizde belirlenebilir; gerçek marj (fiyat eksi maliyet) bölü fiyat, kâr payı (fiyat eksi maliyet) bölü maliyet olur (src/cluster_erp/modules/costing/costing_analyses/services.py:710-739).
  • Gönderme bir son veya önerilen fiyat ister; son fiyat yoksa önerilen fiyat ona kopyalanır (src/cluster_erp/modules/costing/costing_analyses/services.py:742-759).
  • Teklifi ve son fiyatı olan bir analizin onayı ayrıca QuoteCostingCompleted yayar (src/cluster_erp/modules/costing/costing_analyses/services.py:768-808).
  • Yerine geçirme aynı ürün ağacının yeni bir analizini ister (src/cluster_erp/modules/costing/costing_analyses/services.py:857-880).
  • Tek tek yalnızca taslak bir analiz silinebilir (src/cluster_erp/modules/costing/costing_analyses/services.py:233-244).
  • Bir senaryo calculated veya approved bir analizden klonlanabilir; malzeme ve işçilik satırları verilen çarpanlarla ölçeklenir (src/cluster_erp/modules/costing/costing_analyses/services.py:1031-1104).
  • Bir işçilik veya genel gider oranının valid_to değeri valid_from değerinden önce olamaz (src/cluster_erp/modules/costing/labor_rates/services.py:159-163, src/cluster_erp/modules/costing/overhead_rates/services.py:107-111). Bir işçilik oranı türü hourly veya unit_price olur (src/cluster_erp/modules/costing/labor_rates/schemas.py:9).
  • analysis_no değeri costing_analysis yıllık dizisinden gelir (src/cluster_erp/modules/costing/costing_analyses/services.py:183).

Olaylar ve sorgular

Modül 7 sözleşme tüketir ve 10 sözleşme üretir; sayım parties modülü sayfasındaki gibi yapıldı.

Yön Sözleşme sınıfı İşleyici veya yayan Kaynak
yayar CostingCreated create src/cluster_erp/modules/costing/costing_analyses/services.py:200-209
yayar CostingCalculated, LowMarginAlert calculate src/cluster_erp/modules/costing/costing_analyses/services.py:660-692
yayar CostingApproved, QuoteCostingCompleted, CostingRejected, CostingSuperseded yaşam döngüsü yöntemleri src/cluster_erp/modules/costing/costing_analyses/services.py:786-808, src/cluster_erp/modules/costing/costing_analyses/services.py:828-836, src/cluster_erp/modules/costing/costing_analyses/services.py:886-894
yayar CostingRateUpdated oran güncellemeleri src/cluster_erp/modules/costing/labor_rates/services.py:218, src/cluster_erp/modules/costing/overhead_rates/services.py:157
sorgular GetBomExplosion, GetNestingJobById calculate src/cluster_erp/modules/costing/costing_analyses/services.py:262-267, src/cluster_erp/modules/costing/costing_analyses/services.py:508-513
sorguyu yanıtlar GetCostingById, GetCostingByBomId işleyiciler src/cluster_erp/modules/costing/module.py:66-70, src/cluster_erp/modules/costing/module.py:89-139
sorguyu yanıtlar GetActiveLaborRate, GetActiveOverheadRates, GetCostBreakdown işleyiciler src/cluster_erp/modules/costing/module.py:71-82, src/cluster_erp/modules/costing/module.py:141-223
abone olur BomActivated, NestingCostCalculated _on_bom_activated, _on_nesting_cost_calculated src/cluster_erp/modules/costing/module.py:84-85, src/cluster_erp/modules/costing/module.py:227-231

Abone olunan iki işleyicinin gövdesi bu commit'te boştur (src/cluster_erp/modules/costing/module.py:227-231). Tam liste sözleşmeler başvurusu sayfasındadır.

Yetkiler

İzin anahtarı Kullanan Kaynak
costing_analysis.read, .create, .update, .delete, .bulk_delete analiz uçları, kırılım, karşılaştırma, anlık görüntüler, senaryo src/cluster_erp/modules/costing/costing_analyses/routes.py:43-295
costing_analysis.calculate, .submit, .approve, .reject, .supersede yaşam döngüsü uçları src/cluster_erp/modules/costing/costing_analyses/routes.py:135-244
labor_rate.read, .create, .update, .delete, .bulk_delete işçilik oranı uçları src/cluster_erp/modules/costing/labor_rates/routes.py:34-113
overhead_rate.read, .create, .update, .delete, .bulk_delete genel gider oranı uçları src/cluster_erp/modules/costing/overhead_rates/routes.py:32-109

Gizlilik, saklama ve geçmiş

Modül gönderenlerin ve onaylayanların kullanıcı kimliklerini saklar, kendine ait kişisel alanı yoktur; privacy_handlers.py dosyası yoktur. Analizler ve oranlar geçici olarak silinir. Değişiklikler değişiklik geçmişi tarafından kaydedilir.

Analitik olguları

Bu modülün analytics_facts.py dosyası yoktur.

Ayarlar ve başvuru verileri

İşçilik ve genel gider oranları modülün başvuru verileridir; ayarlar bölümü ve tohumu yoktur (src/cluster_erp/modules/costing/module.py:28-30). Düşük marj eşiği _LOW_MARGIN_THRESHOLD modül sabitidir (src/cluster_erp/modules/costing/costing_analyses/services.py:60).

Testler

tests/ içinde modules.costing için grep ile ve web-client/ içinde dosya adıyla bulundu.

Tür Dosya Kapsam
e2e web-client/_e2e_costing_app.mjs maliyet uygulamasının üç metadata listesi ve mağaza kartı
e2e web-client/_e2e_quote_line_bom.mjs, web-client/_e2e_order_shipment_chain.mjs maliyet uçlarını çağıran zincirler

Hiçbir pytest dosyası modülü içe aktarmaz.

Tutarsızlıklar

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
costing analysis CostingAnalysis Toplamları, fiyatı, marjı ve yaşam döngüsü olan maliyetlendirilmiş bir ürün ağacı versiyonu. Maliyet analizi src/cluster_erp/modules/costing/costing_analyses/models.py:23
cost breakdown item CostBreakdownItem Bir analizin tek bir malzeme, işçilik, yerleşim veya genel gider satırı. Maliyet kırılım kalemi src/cluster_erp/modules/costing/costing_analyses/models.py:192
rate snapshot CostingRateSnapshot Bir hesaplamanın kullandığı bir oranın dondurulmuş kopyası. Oran anlık görüntüsü src/cluster_erp/modules/costing/costing_analyses/models.py:293
labour rate LaborRate Bir iş merkezi ve operasyon türü için saatlik veya birim fiyat. İşçilik oranı src/cluster_erp/modules/costing/labor_rates/models.py:14
overhead rate OverheadRate Bir esas ve uygulama sırasıyla yüzde veya birim başına genel gider. Genel gider oranı src/cluster_erp/modules/costing/overhead_rates/models.py:12
scenario is_scenario Ne-olursa karşılaştırması için maliyet çarpanlarıyla klonlanmış bir analiz. Senaryo src/cluster_erp/modules/costing/costing_analyses/models.py:61

İlgili sayfalar


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

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