purchasing_quotations modülü tedarikçi teklif kaydını sunar: yaşam döngüsüyle teklifler, kalemler, fiyat koşulları, miktar ölçekleri, karşılaştırma ve bir kayıt okuması. 27 uç noktanın tamamı /api/v1/purchasing_quotations altındadır. İş anlamı için Purchasing quotations modülü sayfasına bakın.
Grup olguları¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Temel yol | /api/v1/purchasing_quotations |
src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/purchasing_quotations/module.py:47 |
| Yönlendiriciler | 1 dosyada 1 yönlendirici nesnesi; Uç nokta özeti bölümünde listelenir | src/cluster_erp/modules/purchasing_quotations/module.py:39 |
| Uç noktalar | 27; register_routes ile bağlanan yönlendiricilerin yol dekoratörleri ve add_api_route çağrılarından sayıldı |
src/cluster_erp/modules/purchasing_quotations/quotations/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ı | 27 yolun 27 tanesi require_permission bildirir |
src/cluster_erp/modules/auth/guards.py:205-240 |
| Uygulama yetkilendirme kapısı | bağlanan her yönlendiricide require_app("purchasing_quotations") |
src/cluster_erp/modules/purchasing_quotations/module.py:49 |
| 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ğı |
|---|---|---|---|
quotations |
router |
27 | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:39 |
Tedarikçi teklifleri uç noktaları¶
Teklif kayıtları, eksiksizlik, gönderme, ihale, reddetme, tamamlama, iptal, yeniden açma, revize etme, kalemler, koşullar, ölçekler, karşılaştırma ve kayıt. Koşullar ve ölçekler ORM üzerinden fiziksel olarak kaldırılır (src/cluster_erp/modules/purchasing_quotations/quotations/services.py:932-936, src/cluster_erp/modules/purchasing_quotations/quotations/services.py:985); projenin yazılı mühendislik kuralları bu satırları bilinçli istisna olarak adlandırır.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/purchasing_quotations/purchasing-quotations/ |
list_quotations |
purchasing_quotation.read |
yok | search, status, source, vendor_party_id, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:61 |
POST |
/api/v1/purchasing_quotations/purchasing-quotations/ |
create_quotation |
purchasing_quotation.create |
PurchasingQuotationCreate |
yok | PurchasingQuotationRead |
201 |
src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:99 |
GET |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id} |
get_quotation |
purchasing_quotation.read |
yok | yok | PurchasingQuotationRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:110 |
PUT |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id} |
update_quotation |
purchasing_quotation.update |
PurchasingQuotationUpdate |
yok | PurchasingQuotationRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:123 |
DELETE |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id} |
delete_quotation |
purchasing_quotation.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:137 |
POST |
/api/v1/purchasing_quotations/purchasing-quotations/bulk-delete |
bulk_delete |
purchasing_quotation.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:148 |
GET |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id}/completeness |
get_completeness |
purchasing_quotation.read |
yok | yok | dict |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:163 |
POST |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id}/submit |
submit |
purchasing_quotation.submit |
PurqTransition |
yok | PurchasingQuotationRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:178 |
POST |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id}/award |
award |
purchasing_quotation.award |
PurchasingQuotationAwardRequest |
yok | PurchasingQuotationRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:192 |
POST |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id}/reject |
reject |
purchasing_quotation.reject |
PurqReasonTransition |
yok | PurchasingQuotationRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:214 |
POST |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id}/complete |
complete |
purchasing_quotation.complete |
PurqTransition |
yok | PurchasingQuotationRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:231 |
POST |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id}/cancel |
cancel |
purchasing_quotation.update |
PurqReasonTransition |
yok | PurchasingQuotationRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:245 |
POST |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id}/reopen |
reopen |
purchasing_quotation.update |
PurqTransition |
yok | PurchasingQuotationRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:262 |
POST |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id}/revise |
revise |
purchasing_quotation.revise |
yok | yok | PurchasingQuotationRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:276 |
GET |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id}/lines |
list_lines |
purchasing_quotation.read |
yok | yok | list[PurchasingQuotationLineRead] |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:288 |
POST |
/api/v1/purchasing_quotations/purchasing-quotations/{quotation_id}/lines |
add_line |
purchasing_quotation.update |
PurchasingQuotationLineCreate |
yok | PurchasingQuotationLineRead |
201 |
src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:302 |
PUT |
/api/v1/purchasing_quotations/purchasing-quotation-lines/{line_id} |
update_line |
purchasing_quotation.update |
PurchasingQuotationLineUpdate |
yok | PurchasingQuotationLineRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:318 |
DELETE |
/api/v1/purchasing_quotations/purchasing-quotation-lines/{line_id} |
delete_line |
purchasing_quotation.update |
yok | yok | yok | 204 |
src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:335 |
GET |
/api/v1/purchasing_quotations/purchasing-quotation-lines/{line_id}/conditions |
list_conditions |
purchasing_quotation.read |
yok | yok | list[PurchasingQuotationConditionRead] |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:347 |
POST |
/api/v1/purchasing_quotations/purchasing-quotation-lines/{line_id}/conditions |
add_condition |
purchasing_quotation.update |
PurchasingQuotationConditionCreate |
yok | PurchasingQuotationConditionRead |
201 |
src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:361 |
PUT |
/api/v1/purchasing_quotations/purchasing-quotation-conditions/{condition_id} |
update_condition |
purchasing_quotation.update |
PurchasingQuotationConditionUpdate |
yok | PurchasingQuotationConditionRead |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:377 |
DELETE |
/api/v1/purchasing_quotations/purchasing-quotation-conditions/{condition_id} |
delete_condition |
purchasing_quotation.update |
yok | yok | yok | 204 |
src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:394 |
GET |
/api/v1/purchasing_quotations/purchasing-quotation-lines/{line_id}/scales |
list_scales |
purchasing_quotation.read |
yok | yok | list[PurchasingQuotationScaleRead] |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:406 |
POST |
/api/v1/purchasing_quotations/purchasing-quotation-lines/{line_id}/scales |
add_scale |
purchasing_quotation.update |
PurchasingQuotationScaleCreate |
yok | PurchasingQuotationScaleRead |
201 |
src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:420 |
DELETE |
/api/v1/purchasing_quotations/purchasing-quotation-scales/{scale_id} |
delete_scale |
purchasing_quotation.update |
yok | yok | yok | 204 |
src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:436 |
GET |
/api/v1/purchasing_quotations/purchasing-quotation-compare |
compare |
purchasing_quotation.read |
yok | product_id, search, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:450 |
GET |
/api/v1/purchasing_quotations/purchasing-quotation-register |
register |
purchasing_quotation.read |
yok | origin, vendor_party_id, search, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:473 |
Hata kodları¶
Tablo, src/cluster_erp/modules/purchasing_quotations/ 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 |
quotations |
src/cluster_erp/modules/purchasing_quotations/quotations/services.py:201 |
PURQ_AWARD_INVALID |
422 |
quotations |
src/cluster_erp/modules/purchasing_quotations/quotations/services.py:302 |
PURQ_INCOMPLETE |
409 |
quotations |
src/cluster_erp/modules/purchasing_quotations/quotations/services.py:273 |
PURQ_INVALID_STATUS |
409 |
quotations |
src/cluster_erp/modules/purchasing_quotations/quotations/services.py:230 |
RESOURCE_NOT_FOUND |
404 |
quotations |
src/cluster_erp/modules/purchasing_quotations/quotations/routes.py:119 |
Yayımlanan olaylar¶
Tablo, src/cluster_erp/modules/purchasing_quotations/ 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 |
|---|---|---|
SupplierQuotationAwarded |
1 | src/cluster_erp/modules/purchasing_quotations/quotations/services.py:376 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.