inventory modülü depoları ve depolama yerlerini, stok seviyelerini ve kullanılabilirliği, her kayıt türündeki mal hareketlerini, rezervasyonları, kullanım kararlarını, stok ödünçlerini, partileri ve seri numaralarını sunar. 51 uç noktanın tamamı /api/v1/inventory altındadır. İş anlamı için Inventory modülü sayfasına bakın.
Grup olguları¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Temel yol | /api/v1/inventory |
src/cluster_erp/core/module_base.py:37-38, src/cluster_erp/modules/inventory/module.py:52 |
| Yönlendiriciler | 3 dosyada 8 yönlendirici nesnesi; Uç nokta özeti bölümünde listelenir | src/cluster_erp/modules/inventory/module.py:33 |
| Uç noktalar | 51; register_routes ile bağlanan yönlendiricilerin yol dekoratörleri ve add_api_route çağrılarından sayıldı |
src/cluster_erp/modules/inventory/batches/routes.py, src/cluster_erp/modules/inventory/stock/routes.py, src/cluster_erp/modules/inventory/warehouses/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ı | 51 yolun 51 tanesi require_permission bildirir |
src/cluster_erp/modules/auth/guards.py:205-240 |
| Uygulama yetkilendirme kapısı | bağlanan her yönlendiricide require_app("inventory") |
src/cluster_erp/modules/inventory/module.py:62 |
| 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ğı |
|---|---|---|---|
warehouses |
warehouse_router (/warehouses), location_router (/locations) |
12 | src/cluster_erp/modules/inventory/warehouses/routes.py:33, src/cluster_erp/modules/inventory/warehouses/routes.py:34 |
stock |
stock_router (/stock), movement_router (/movements), reservation_router (/reservations), usage_decision_router (/usage-decisions) |
29 | src/cluster_erp/modules/inventory/stock/routes.py:47, src/cluster_erp/modules/inventory/stock/routes.py:48, src/cluster_erp/modules/inventory/stock/routes.py:49, src/cluster_erp/modules/inventory/stock/routes.py:50 |
batches |
batch_router (/batches), serial_router (/serial-numbers) |
10 | src/cluster_erp/modules/inventory/batches/routes.py:33, src/cluster_erp/modules/inventory/batches/routes.py:34 |
Depolar ve yerler uç noktaları¶
İki yönlendirici: depolar (pano ve bir deponun yerleriyle) ve depolama yerleri.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/inventory/warehouses/ |
list_warehouses |
warehouse.read |
yok | search, is_active, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/warehouses/routes.py:66 |
GET |
/api/v1/inventory/warehouses/dashboard |
warehouse_dashboard |
warehouse.read |
yok | yok | WarehouseDashboardRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/warehouses/routes.py:99 |
POST |
/api/v1/inventory/warehouses/ |
create_warehouse |
warehouse.create |
WarehouseCreate |
yok | WarehouseRead |
201 |
src/cluster_erp/modules/inventory/warehouses/routes.py:108 |
GET |
/api/v1/inventory/warehouses/{warehouse_id} |
get_warehouse |
warehouse.read |
yok | yok | WarehouseRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/warehouses/routes.py:119 |
PUT |
/api/v1/inventory/warehouses/{warehouse_id} |
update_warehouse |
warehouse.update |
WarehouseUpdate |
yok | WarehouseRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/warehouses/routes.py:132 |
DELETE |
/api/v1/inventory/warehouses/{warehouse_id} |
delete_warehouse |
warehouse.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/inventory/warehouses/routes.py:146 |
GET |
/api/v1/inventory/warehouses/{warehouse_id}/locations/ |
list_warehouse_locations |
storage_location.read |
yok | search, is_active, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/warehouses/routes.py:157 |
GET |
/api/v1/inventory/locations/ |
list_locations |
storage_location.read |
yok | warehouse_id, search, is_active, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/warehouses/routes.py:198 |
POST |
/api/v1/inventory/locations/ |
create_location |
storage_location.create |
StorageLocationCreate |
yok | StorageLocationRead |
201 |
src/cluster_erp/modules/inventory/warehouses/routes.py:233 |
GET |
/api/v1/inventory/locations/{location_id} |
get_location |
storage_location.read |
yok | yok | StorageLocationRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/warehouses/routes.py:244 |
PUT |
/api/v1/inventory/locations/{location_id} |
update_location |
storage_location.update |
StorageLocationUpdate |
yok | StorageLocationRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/warehouses/routes.py:257 |
DELETE |
/api/v1/inventory/locations/{location_id} |
delete_location |
storage_location.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/inventory/warehouses/routes.py:271 |
Stok, hareketler ve rezervasyonlar uç noktaları¶
Dört yönlendirici: kayıt yollarıyla stok seviyeleri ve kullanılabilirlik (mal girişi ve çıkışı, transfer, sahiplik transferi, ödünçler, düzeltme, blokeli giriş, kategori transferi, satıcıya iade, hurda, fason), ters kayıtlı hareketler, rezervasyonlar ve kullanım kararları.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/inventory/stock/levels/ |
list_stock_levels |
stock_level.read |
yok | product_id, product_model_id, product_version_id, warehouse_id, batch_id, custodian_party_id, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:59 |
GET |
/api/v1/inventory/stock/levels/row/{level_id} |
get_stock_level_row |
stock_level.read |
yok | yok | StockLevelListRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:93 |
GET |
/api/v1/inventory/stock/levels/{product_id} |
get_stock_level |
stock_level.read |
yok | warehouse_id, product_model_id, product_version_id |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:113 |
GET |
/api/v1/inventory/stock/availability/{product_id} |
check_stock_availability |
stock_level.read |
yok | product_model_id, product_version_id, qty, warehouse_id |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:129 |
POST |
/api/v1/inventory/stock/goods-receipt |
post_goods_receipt |
goods_movement.create |
GoodsReceiptCreate |
yok | GoodsMovementRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:156 |
POST |
/api/v1/inventory/stock/goods-issue |
post_goods_issue |
goods_movement.create |
GoodsIssueCreate |
yok | GoodsMovementRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:185 |
POST |
/api/v1/inventory/stock/transfer |
post_transfer |
goods_movement.create |
TransferCreate |
yok | GoodsMovementRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:201 |
POST |
/api/v1/inventory/stock/ownership-transfer |
post_ownership_transfer |
goods_movement.create |
OwnershipTransferCreate |
yok | GoodsMovementRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:217 |
POST |
/api/v1/inventory/stock/loans/borrow |
post_stock_borrow |
goods_movement.create |
StockBorrowCreate |
yok | ProjectStockLoanRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:235 |
POST |
/api/v1/inventory/stock/loans/{loan_id}/payback |
post_stock_payback |
goods_movement.create |
StockPaybackCreate |
yok | ProjectStockLoanRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:251 |
GET |
/api/v1/inventory/stock/loans |
list_stock_loans |
stock_level.read |
yok | project_id, status, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:267 |
POST |
/api/v1/inventory/stock/adjustment |
post_adjustment |
goods_movement.create |
AdjustmentCreate |
yok | GoodsMovementRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:290 |
POST |
/api/v1/inventory/stock/gr-blocked-receipt |
post_gr_blocked_receipt |
goods_movement.create |
GrBlockedReceiptCreate |
yok | GoodsMovementRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:306 |
POST |
/api/v1/inventory/stock/stock-category-transfer |
post_stock_category_transfer |
goods_movement.create |
StockCategoryTransferCreate |
yok | GoodsMovementRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:322 |
POST |
/api/v1/inventory/stock/return-to-vendor |
post_return_to_vendor |
goods_movement.create |
ReturnToVendorCreate |
yok | GoodsMovementRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:341 |
POST |
/api/v1/inventory/stock/scrap |
post_scrap |
goods_movement.create |
ScrapPostingCreate |
yok | GoodsMovementRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:357 |
POST |
/api/v1/inventory/stock/subcontract-issue |
post_subcontract_issue |
goods_movement.create |
SubcontractStockCreate |
yok | dict |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:598 |
POST |
/api/v1/inventory/stock/subcontract-return |
post_subcontract_return |
goods_movement.create |
SubcontractStockCreate |
yok | dict |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:610 |
POST |
/api/v1/inventory/stock/subcontract-consume |
post_subcontract_consume |
goods_movement.create |
SubcontractStockCreate |
yok | dict |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:622 |
POST |
/api/v1/inventory/movements/{movement_id}/reverse |
reverse_movement |
goods_movement.create |
MovementReversalCreate |
yok | GoodsMovementRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:376 |
GET |
/api/v1/inventory/movements/ |
list_movements |
goods_movement.read |
yok | product_id, product_model_id, product_version_id, warehouse_id, batch_id, movement_type, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:400 |
GET |
/api/v1/inventory/movements/{movement_id} |
get_movement |
goods_movement.read |
yok | yok | GoodsMovementRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:434 |
GET |
/api/v1/inventory/reservations/ |
list_reservations |
stock_reservation.read |
yok | product_id, warehouse_id, reference_type, reference_id, status, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:451 |
POST |
/api/v1/inventory/reservations/ |
create_reservation |
stock_reservation.create |
StockReservationCreate |
yok | StockReservationRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:483 |
POST |
/api/v1/inventory/reservations/{reservation_id}/consume |
consume_reservation |
stock_reservation.create |
yok | yok | StockReservationRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:499 |
POST |
/api/v1/inventory/reservations/{reservation_id}/cancel |
cancel_reservation |
stock_reservation.create |
yok | yok | StockReservationRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:514 |
GET |
/api/v1/inventory/usage-decisions/ |
list_usage_decisions |
usage_decision.read |
yok | movement_id, product_id, warehouse_id, decision_code, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:532 |
GET |
/api/v1/inventory/usage-decisions/{decision_id} |
get_usage_decision |
usage_decision.read |
yok | yok | UsageDecisionRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/stock/routes.py:562 |
POST |
/api/v1/inventory/usage-decisions/ |
create_usage_decision |
usage_decision.create |
UsageDecisionCreate |
yok | UsageDecisionRead |
201 |
src/cluster_erp/modules/inventory/stock/routes.py:579 |
Partiler ve seri numaraları uç noktaları¶
İki yönlendirici: partiler ve seri numaraları.
| Yöntem | Yol | İşleyici | Yetki | İstek | Sorgu | Yanıt | Durum | Kaynak |
|---|---|---|---|---|---|---|---|---|
GET |
/api/v1/inventory/batches/ |
list_batches |
batch.read |
yok | product_id, origin_type, status, search, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/batches/routes.py:49 |
POST |
/api/v1/inventory/batches/ |
create_batch |
batch.create |
BatchCreate |
yok | BatchRead |
201 |
src/cluster_erp/modules/inventory/batches/routes.py:87 |
GET |
/api/v1/inventory/batches/{batch_id} |
get_batch |
batch.read |
yok | yok | BatchRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/batches/routes.py:99 |
PUT |
/api/v1/inventory/batches/{batch_id} |
update_batch |
batch.update |
BatchUpdate |
yok | BatchRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/batches/routes.py:113 |
DELETE |
/api/v1/inventory/batches/{batch_id} |
delete_batch |
batch.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/inventory/batches/routes.py:128 |
GET |
/api/v1/inventory/serial-numbers/ |
list_serial_numbers |
serial_number.read |
yok | product_id, batch_id, status, search, limit, offset |
dict |
200 (varsayılan) | src/cluster_erp/modules/inventory/batches/routes.py:143 |
POST |
/api/v1/inventory/serial-numbers/ |
create_serial_number |
serial_number.create |
SerialNumberCreate |
yok | SerialNumberRead |
201 |
src/cluster_erp/modules/inventory/batches/routes.py:173 |
GET |
/api/v1/inventory/serial-numbers/{serial_id} |
get_serial_number |
serial_number.read |
yok | yok | SerialNumberRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/batches/routes.py:185 |
PUT |
/api/v1/inventory/serial-numbers/{serial_id} |
update_serial_number |
serial_number.update |
SerialNumberUpdate |
yok | SerialNumberRead |
200 (varsayılan) | src/cluster_erp/modules/inventory/batches/routes.py:199 |
DELETE |
/api/v1/inventory/serial-numbers/{serial_id} |
delete_serial_number |
serial_number.delete |
yok | yok | yok | 204 |
src/cluster_erp/modules/inventory/batches/routes.py:214 |
Hata kodları¶
Tablo, src/cluster_erp/modules/inventory/ 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 |
|---|---|---|---|
INVENTORY_BATCH_EXPIRED |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:2166 |
INVENTORY_BATCH_REQUIRED |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:2143 |
INVENTORY_DECISION_QTY_EXCEEDS |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:1527 |
INVENTORY_INSUFFICIENT_STOCK |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:853 |
INVENTORY_INVALID_CATEGORY_TRANSFER |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:1223 |
INVENTORY_INVALID_DECISION_CODE |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:1502 |
INVENTORY_INVALID_MOVEMENT |
409, 422 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:553 |
INVENTORY_INVALID_MOVEMENT_TYPE |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:332 |
INVENTORY_INVALID_ORIGIN_TYPE |
400 |
batches |
src/cluster_erp/modules/inventory/batches/services.py:189 |
INVENTORY_INVALID_STOCK_CATEGORY |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:1211 |
INVENTORY_MOVEMENT_ALREADY_REVERSED |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:1742 |
INVENTORY_MOVEMENT_NOT_DECIDABLE |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:1515 |
INVENTORY_PO_RECEIPT_REQUIRES_PO_FLOW |
409 |
stock |
src/cluster_erp/modules/inventory/stock/routes.py:174 |
INVENTORY_PRODUCT_NOT_STOCKABLE |
400 |
batches, stock |
src/cluster_erp/modules/inventory/batches/services.py:210 |
INVENTORY_PROJECT_TRANSFER_DISABLED |
403 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:563 |
INVENTORY_RESERVATION_ALREADY_CANCELLED |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:1998 |
INVENTORY_RESERVATION_ALREADY_CONSUMED |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:1992 |
INVENTORY_RESERVATION_NOT_FOUND |
404 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:1985 |
INVENTORY_SERIAL_ALREADY_USED |
409 |
batches, stock |
src/cluster_erp/modules/inventory/batches/services.py:349 |
INVENTORY_SERIAL_REQUIRED |
400 |
stock |
src/cluster_erp/modules/inventory/stock/services.py:2149 |
RESOURCE_CONFLICT |
409 |
batches, warehouses |
src/cluster_erp/modules/inventory/batches/services.py:228 |
RESOURCE_NOT_FOUND |
404 |
batches, stock, warehouses |
src/cluster_erp/modules/inventory/batches/routes.py:109 |
Yayımlanan olaylar¶
Tablo, src/cluster_erp/modules/inventory/ 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 |
|---|---|---|
BatchCreated |
1 | src/cluster_erp/modules/inventory/batches/services.py:134 |
GoodsIssued |
2 | src/cluster_erp/modules/inventory/stock/services.py:527 |
GoodsMovementReversed |
1 | src/cluster_erp/modules/inventory/stock/services.py:1879 |
GoodsReceived |
1 | src/cluster_erp/modules/inventory/stock/services.py:431 |
GrBlockedReceived |
1 | src/cluster_erp/modules/inventory/stock/services.py:1181 |
ReturnedToVendor |
1 | src/cluster_erp/modules/inventory/stock/services.py:1387 |
ScrapPosted |
1 | src/cluster_erp/modules/inventory/stock/services.py:1482 |
StockAdjusted |
1 | src/cluster_erp/modules/inventory/stock/services.py:1101 |
StockCategoryTransferred |
2 | src/cluster_erp/modules/inventory/stock/services.py:875 |
StockReservationCancelled |
1 | src/cluster_erp/modules/inventory/stock/services.py:2073 |
StockReservationConsumed |
1 | src/cluster_erp/modules/inventory/stock/services.py:2020 |
StockReserved |
1 | src/cluster_erp/modules/inventory/stock/services.py:1957 |
StockTransferred |
1 | src/cluster_erp/modules/inventory/stock/services.py:1039 |
UsageDecisionRecorded |
1 | src/cluster_erp/modules/inventory/stock/services.py:1653 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.