costing modülü hesaplama ve onay yaşam döngüsüyle maliyet analizlerini, işçilik oranlarını ve genel gider oranlarını sunar. 30 uç noktanın tamamı /api/v1/costing altındadır. İş anlamı için Costing modülü sayfasına bakın.
Grup olguları¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Temel yol | /api/v1/costing |
src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/costing/module.py:46 |
| Yönlendiriciler | 3 dosyada 3 yönlendirici nesnesi; Uç nokta özeti bölümünde listelenir | src/cluster_erp/modules/costing/module.py:32 |
| Uç noktalar | 30; register_routes ile bağlanan yönlendiricilerin yol dekoratörleri ve add_api_route çağrılarından sayıldı |
src/cluster_erp/modules/costing/costing_analyses/routes.py, src/cluster_erp/modules/costing/labor_rates/routes.py, src/cluster_erp/modules/costing/overhead_rates/routes.py |
| Kimlik doğrulama | Bearer başlığı veya oturum çerezi, get_current_user ile çözülür; bkz. Kimlik doğrulama ve başlıklar |
src/cluster_erp/modules/auth/guards.py:85-167 |
| Yetki koruması | 30 yolun 30 tanesi require_permission bildirir |
src/cluster_erp/modules/auth/guards.py:205-240 |
| Uygulama yetkilendirme kapısı | bağlanan her yönlendiricide require_app("costing") |
src/cluster_erp/modules/costing/module.py:51 |
| Hata biçimi | JSON gövdesi {"error": {...}}; bkz. Hatalar |
src/cluster_erp/server/error_handler.py:33-46 |
Uç nokta özeti¶
Alt modül klasörü başına bir satır. Yönlendirici öneki temel yola eklenir.
| Alt modül | Yönlendiriciler | Uç noktalar | Yönlendirici kaynağı |
|---|---|---|---|
costing_analyses |
router (/analyses) |
18 | src/cluster_erp/modules/costing/costing_analyses/routes.py:31 |
labor_rates |
router (/labor-rates) |
6 | src/cluster_erp/modules/costing/labor_rates/routes.py:22 |
overhead_rates |
router (/overhead-rates) |
6 | src/cluster_erp/modules/costing/overhead_rates/routes.py:22 |
Maliyet analizleri uç noktaları¶
Analiz kayıtları, hesaplama ve yeniden hesaplama, nihai fiyat, onaya gönderme, onaylama, reddetme, taslağa döndürme, yerine geçirme, kırılım, karşılaştırma, senaryo olarak klonlama ve oran anlık görüntüleri.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/costing/analyses/ |
list_analyses |
costing_analysis.read |
yok | status, bom_id, quote_id, is_scenario, search, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:34 |
POST |
/api/v1/costing/analyses/ |
create_analysis |
costing_analysis.create |
CostingAnalysisCreate |
yok | CostingAnalysisRead |
201 |
src/cluster_erp/modules/costing/costing_analyses/routes.py:66 |
GET |
/api/v1/costing/analyses/{analysis_id} |
get_analysis |
costing_analysis.read |
yok | yok | CostingAnalysisRead |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:78 |
PUT |
/api/v1/costing/analyses/{analysis_id} |
update_analysis |
costing_analysis.update |
CostingAnalysisUpdate |
yok | CostingAnalysisRead |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:92 |
DELETE |
/api/v1/costing/analyses/{analysis_id} |
delete_analysis |
costing_analysis.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/costing/costing_analyses/routes.py:105 |
POST |
/api/v1/costing/analyses/bulk-delete |
bulk_delete_analyses |
costing_analysis.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:117 |
POST |
/api/v1/costing/analyses/{analysis_id}/calculate |
calculate_analysis |
costing_analysis.calculate |
yok | yok | CostingAnalysisRead |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:129 |
POST |
/api/v1/costing/analyses/{analysis_id}/recalculate |
recalculate_analysis |
costing_analysis.calculate |
yok | yok | CostingAnalysisRead |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:144 |
POST |
/api/v1/costing/analyses/{analysis_id}/set-final-price |
set_final_price |
costing_analysis.update |
SetFinalPrice |
yok | CostingAnalysisRead |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:159 |
POST |
/api/v1/costing/analyses/{analysis_id}/submit-for-approval |
submit_for_approval |
costing_analysis.submit |
yok | yok | CostingAnalysisRead |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:175 |
POST |
/api/v1/costing/analyses/{analysis_id}/approve |
approve_analysis |
costing_analysis.approve |
CostingApproveRequest |
yok | CostingAnalysisRead |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:190 |
POST |
/api/v1/costing/analyses/{analysis_id}/reject |
reject_analysis |
costing_analysis.reject |
CostingRejectRequest |
yok | CostingAnalysisRead |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:206 |
POST |
/api/v1/costing/analyses/{analysis_id}/return-to-draft |
return_to_draft |
costing_analysis.update |
yok | yok | CostingAnalysisRead |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:222 |
POST |
/api/v1/costing/analyses/{analysis_id}/supersede |
supersede_analysis |
costing_analysis.supersede |
CostingSupersedeRequest |
yok | CostingAnalysisRead |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:237 |
GET |
/api/v1/costing/analyses/{analysis_id}/breakdown |
get_breakdown |
costing_analysis.read |
yok | yok | dict |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:253 |
POST |
/api/v1/costing/analyses/compare |
compare_analyses |
costing_analysis.read |
CostingCompareRequest |
yok | dict |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:264 |
POST |
/api/v1/costing/analyses/{analysis_id}/clone-as-scenario |
clone_as_scenario |
costing_analysis.create |
ScenarioOverrides |
yok | CostingAnalysisRead |
201 |
src/cluster_erp/modules/costing/costing_analyses/routes.py:275 |
GET |
/api/v1/costing/analyses/{analysis_id}/rate-snapshots |
get_rate_snapshots |
costing_analysis.read |
yok | yok | list |
200 (varsayılan) | src/cluster_erp/modules/costing/costing_analyses/routes.py:292 |
İşçilik oranları uç noktaları¶
İşçilik oranı kayıtları.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/costing/labor-rates/ |
list_labor_rates |
labor_rate.read |
yok | work_center_id, operation_type, rate_type, active_only, search, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/costing/labor_rates/routes.py:25 |
POST |
/api/v1/costing/labor-rates/ |
create_labor_rate |
labor_rate.create |
LaborRateCreate |
yok | LaborRateRead |
201 |
src/cluster_erp/modules/costing/labor_rates/routes.py:57 |
GET |
/api/v1/costing/labor-rates/{rate_id} |
get_labor_rate |
labor_rate.read |
yok | yok | LaborRateRead |
200 (varsayılan) | src/cluster_erp/modules/costing/labor_rates/routes.py:69 |
PUT |
/api/v1/costing/labor-rates/{rate_id} |
update_labor_rate |
labor_rate.update |
LaborRateUpdate |
yok | LaborRateRead |
200 (varsayılan) | src/cluster_erp/modules/costing/labor_rates/routes.py:83 |
POST |
/api/v1/costing/labor-rates/bulk-delete |
bulk_delete_labor_rates |
labor_rate.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/costing/labor_rates/routes.py:98 |
DELETE |
/api/v1/costing/labor-rates/{rate_id} |
delete_labor_rate |
labor_rate.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/costing/labor_rates/routes.py:110 |
Genel gider oranları uç noktaları¶
Genel gider oranı kayıtları.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/costing/overhead-rates/ |
list_overhead_rates |
overhead_rate.read |
yok | rate_type, active_only, search, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/costing/overhead_rates/routes.py:25 |
POST |
/api/v1/costing/overhead-rates/ |
create_overhead_rate |
overhead_rate.create |
OverheadRateCreate |
yok | OverheadRateRead |
201 |
src/cluster_erp/modules/costing/overhead_rates/routes.py:53 |
GET |
/api/v1/costing/overhead-rates/{rate_id} |
get_overhead_rate |
overhead_rate.read |
yok | yok | OverheadRateRead |
200 (varsayılan) | src/cluster_erp/modules/costing/overhead_rates/routes.py:65 |
PUT |
/api/v1/costing/overhead-rates/{rate_id} |
update_overhead_rate |
overhead_rate.update |
OverheadRateUpdate |
yok | OverheadRateRead |
200 (varsayılan) | src/cluster_erp/modules/costing/overhead_rates/routes.py:79 |
POST |
/api/v1/costing/overhead-rates/bulk-delete |
bulk_delete_overhead_rates |
overhead_rate.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/costing/overhead_rates/routes.py:94 |
DELETE |
/api/v1/costing/overhead-rates/{rate_id} |
delete_overhead_rate |
overhead_rate.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/costing/overhead_rates/routes.py:106 |
Hata kodları¶
Tablo, src/cluster_erp/modules/costing/ altındaki kodun attığı hata kodlarını listeler. Kodlar, AppError(...) çağrıları, src/cluster_erp/core/errors.py içindeki fabrikalar (not_found, conflict, protected, permission_denied, privilege_escalation, check_version) ve HTTPException(...) için yapılan bir sözdizimi ağacı taramasıyla bulundu. 400 durumu AppError varsayılanıdır (src/cluster_erp/core/errors.py:23). Koruma hataları (401, 403), yetkilendirme kodları ve doğrulama hataları (422) her yol için geçerlidir ve Hatalar sayfasında listelenir.
| Kod | HTTP durumu | Atıldığı yer | İlk konum |
|---|---|---|---|
CONCURRENCY_VERSION_CONFLICT |
409 |
costing_analyses, labor_rates, overhead_rates |
src/cluster_erp/modules/costing/costing_analyses/services.py:221 |
COSTING_BOM_NOT_FOUND |
404 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:272 |
COSTING_BOM_NO_ITEMS |
400 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:287 |
COSTING_COMPARE_MAX_ITEMS |
400 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:967 |
COSTING_COMPARE_MIN_ITEMS |
400 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:962 |
COSTING_CURRENCY_MISMATCH |
422 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:304 |
COSTING_FINAL_PRICE_REQUIRED |
400 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:751 |
COSTING_IMMUTABLE |
400 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:120 |
COSTING_INVALID_STATUS |
400 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:113 |
COSTING_NOT_FOUND |
404 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:103 |
COSTING_RATE_INVALID_DATES |
400 |
labor_rates, overhead_rates |
src/cluster_erp/modules/costing/labor_rates/services.py:160 |
COSTING_SCENARIO_SOURCE_INVALID |
400 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:1039 |
COSTING_SUPERSEDE_SAME_BOM |
400 |
costing_analyses |
src/cluster_erp/modules/costing/costing_analyses/services.py:874 |
RESOURCE_NOT_FOUND |
404 |
costing_analyses, labor_rates, overhead_rates |
src/cluster_erp/modules/costing/costing_analyses/routes.py:88 |
Yayımlanan olaylar¶
Tablo, src/cluster_erp/modules/costing/ altındaki kodun EventBus.emit çağrısına doğrudan verdiği sözleşme sınıflarını listeler; sözdizimi ağacı taramasıyla bulundu. Önce bir değişkene kurulan olaylar sayılmaz. Sözleşmeler Sözleşmeler başvurusu sayfasında anlatılır.
| Sözleşme | Konum sayısı | İlk konum |
|---|---|---|
CostingApproved |
1 | src/cluster_erp/modules/costing/costing_analyses/services.py:786 |
CostingCalculated |
1 | src/cluster_erp/modules/costing/costing_analyses/services.py:674 |
CostingCreated |
1 | src/cluster_erp/modules/costing/costing_analyses/services.py:200 |
CostingRateUpdated |
2 | src/cluster_erp/modules/costing/labor_rates/services.py:218 |
CostingRejected |
1 | src/cluster_erp/modules/costing/costing_analyses/services.py:828 |
CostingSuperseded |
1 | src/cluster_erp/modules/costing/costing_analyses/services.py:886 |
LowMarginAlert |
1 | src/cluster_erp/modules/costing/costing_analyses/services.py:694 |
QuoteCostingCompleted |
1 | src/cluster_erp/modules/costing/costing_analyses/services.py:800 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.