Bu sayfa procurement modülünün purchase_orders alt modülündeki 18 uç noktayı /api/v1/procurement altında listeler. Kapsam: Sipariş kayıtları, satın alma talebinden oluşturma, teslim alınabilir kalemler, gönderme, onaylama, yolda, kalem bazında teslim alma, kapatma, iptal ve sipariş kalemleri. Modül giriş sayfası Procurement API sayfasıdır.
Grup olguları¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Temel yol | /api/v1/procurement |
src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/procurement/module.py:70 |
| Yönlendiriciler | 1 dosyada 1 yönlendirici nesnesi; Uç noktalar bölümünde listelenir | src/cluster_erp/modules/procurement/module.py:35 |
| Uç noktalar | 18; register_routes ile bağlanan yönlendiricilerin yol dekoratörleri ve add_api_route çağrılarından sayıldı |
src/cluster_erp/modules/procurement/purchase_orders/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ı | 18 yolun 18 tanesi require_permission bildirir |
src/cluster_erp/modules/auth/guards.py:205-240 |
| Uygulama yetkilendirme kapısı | bağlanan her yönlendiricide require_app("procurement") |
src/cluster_erp/modules/procurement/module.py:82 |
| Hata biçimi | JSON gövdesi {"error": {...}}; bkz. Hatalar |
src/cluster_erp/server/error_handler.py:33-46 |
Uç noktalar¶
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/procurement/purchase-orders/ |
list_purchase_orders |
purchase_order.read |
yok | status, vendor_id, search, product_ids, project_id, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:58 |
POST |
/api/v1/procurement/purchase-orders/ |
create_purchase_order |
purchase_order.create |
PurchaseOrderCreate |
yok | PurchaseOrderRead |
201 |
src/cluster_erp/modules/procurement/purchase_orders/routes.py:98 |
POST |
/api/v1/procurement/purchase-orders/from-pr/{pr_id} |
create_from_pr |
purchase_order.create |
CreateFromPrRequest |
yok | PurchaseOrderRead |
201 |
src/cluster_erp/modules/procurement/purchase_orders/routes.py:110 |
GET |
/api/v1/procurement/purchase-orders/receivable-lines |
receivable_lines |
purchase_order.read |
yok | po_id, vendor_id |
list[dict[str, Any]] |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:129 |
GET |
/api/v1/procurement/purchase-orders/{po_id} |
get_purchase_order |
purchase_order.read |
yok | yok | PurchaseOrderRead |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:147 |
PUT |
/api/v1/procurement/purchase-orders/{po_id} |
update_purchase_order |
purchase_order.update |
PurchaseOrderUpdate |
yok | PurchaseOrderRead |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:161 |
DELETE |
/api/v1/procurement/purchase-orders/{po_id} |
delete_purchase_order |
purchase_order.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/procurement/purchase_orders/routes.py:174 |
POST |
/api/v1/procurement/purchase-orders/bulk-delete |
bulk_delete_purchase_orders |
purchase_order.bulk_delete |
BulkDeleteRequest |
yok | BulkDeleteResponse |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:186 |
POST |
/api/v1/procurement/purchase-orders/{po_id}/send |
send_purchase_order |
purchase_order.send |
yok | yok | PurchaseOrderRead |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:201 |
POST |
/api/v1/procurement/purchase-orders/{po_id}/acknowledge |
acknowledge_purchase_order |
purchase_order.update |
yok | yok | PurchaseOrderRead |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:213 |
POST |
/api/v1/procurement/purchase-orders/{po_id}/in-transit |
mark_in_transit |
purchase_order.update |
yok | yok | PurchaseOrderRead |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:225 |
POST |
/api/v1/procurement/purchase-orders/{po_id}/items/{item_id}/receive |
receive_item |
purchase_order.receive |
ReceiveItemRequest |
yok | PurchaseOrderRead |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:237 |
POST |
/api/v1/procurement/purchase-orders/items/{item_id}/receive |
receive_item_by_line |
purchase_order.receive |
ReceiveItemRequest |
yok | PurchaseOrderRead |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:254 |
POST |
/api/v1/procurement/purchase-orders/{po_id}/close |
close_purchase_order |
purchase_order.update |
yok | yok | PurchaseOrderRead |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:269 |
POST |
/api/v1/procurement/purchase-orders/{po_id}/cancel |
cancel_purchase_order |
purchase_order.update |
PoCancelRequest |
yok | PurchaseOrderRead |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:281 |
POST |
/api/v1/procurement/purchase-orders/{po_id}/items |
add_item |
purchase_order.update |
PurchaseOrderItemCreate |
yok | PurchaseOrderItemRead |
201 |
src/cluster_erp/modules/procurement/purchase_orders/routes.py:297 |
PUT |
/api/v1/procurement/purchase-orders/{po_id}/items/{item_id} |
update_item |
purchase_order.update |
PurchaseOrderItemUpdate |
yok | PurchaseOrderItemRead |
200 (varsayılan) | src/cluster_erp/modules/procurement/purchase_orders/routes.py:314 |
DELETE |
/api/v1/procurement/purchase-orders/{po_id}/items/{item_id} |
remove_item |
purchase_order.update |
yok | yok | yok | 204 |
src/cluster_erp/modules/procurement/purchase_orders/routes.py:331 |
Hata kodları¶
Tablo, src/cluster_erp/modules/procurement/purchase_orders/ 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 |
services |
src/cluster_erp/modules/procurement/purchase_orders/services.py:429 |
PO_GOODS_RECEIPT_FAILED |
400 |
services |
src/cluster_erp/modules/procurement/purchase_orders/services.py:821 |
PO_INVALID_STATUS |
400, 409 |
services |
src/cluster_erp/modules/procurement/purchase_orders/services.py:86 |
PO_ITEM_ALREADY_RECEIVED |
400 |
services |
src/cluster_erp/modules/procurement/purchase_orders/services.py:735 |
PO_NO_ORDER_DATE |
400 |
services |
src/cluster_erp/modules/procurement/purchase_orders/services.py:630 |
PO_NO_TECHNICAL_ATTACHMENT |
400 |
services |
src/cluster_erp/modules/procurement/purchase_orders/services.py:637 |
PO_RECEIVE_QTY_EXCEEDS |
400 |
services |
src/cluster_erp/modules/procurement/purchase_orders/services.py:743 |
PO_VENDOR_BLACKLISTED |
400 |
services |
src/cluster_erp/modules/procurement/purchase_orders/services.py:233 |
RESOURCE_NOT_FOUND |
404 |
routes, services |
src/cluster_erp/modules/procurement/purchase_orders/routes.py:157 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.