> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flextell.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Stok

> Stok hareketleri, sayım ve depolar arası transfer.

Stok takibi üç ana modelle yapılır: tüm hareketler `StockMovement`, fiziki sayım `StockCount`, depolar arası transfer `StockTransfer`.

## Hareketler (`StockMovement`)

Her stok değişimi bir hareket olarak işlenir. `Type` ve `Direction` enum'larıyla yön belirlenir.

```mermaid theme={null}
flowchart LR
    K[Kaynak] --> SM[StockMovement<br/>Type + Direction]
    SM -->|In| ART[Stok artar]
    SM -->|Out| AZA[Stok azalır]
```

### `Type` enum

| Değer          | Anlamı                  |
| -------------- | ----------------------- |
| `Purchase`     | Satın alma giriş        |
| `Sale`         | Satış çıkış             |
| `SaleReturn`   | Satış iadesi giriş      |
| `Transfer`     | Depo transferi (in/out) |
| `Adjustment`   | Manuel düzeltme         |
| `Count`        | Sayım sonucu düzeltme   |
| `Usage`        | Tedavi kullanımı çıkış  |
| `UsageReturn`  | Kullanım iadesi giriş   |
| `InitialStock` | İlk stok girişi         |
| `Waste`        | Fire / atık çıkış       |

### `Direction` enum

| Değer | Anlamı        |
| ----- | ------------- |
| `In`  | Stoğa giriş   |
| `Out` | Stoktan çıkış |

### Kaynak ilişkileri

Hareket kaynağına göre `sale_id`, `invoice_id`, `stock_transfer_id`, `stock_count_id` alanlarından biri dolu olur — hareketin nereden geldiği bu sayede izlenir.

## Sayım (`StockCount`)

Fiziki sayım kaydı:

| Alan               | Açıklama                |
| ------------------ | ----------------------- |
| `warehouse_id`     | Hangi depo              |
| `counted_quantity` | Sayımda bulunan miktar  |
| `system_quantity`  | Sistemdeki miktar       |
| `difference`       | Fark (counted - system) |
| `notes`            | Açıklama                |

Sayım onaylandığında otomatik `StockMovement` (`Type=Count`) yaratılır ve sistem değeri sayıma eşitlenir.

## Transfer (`StockTransfer`)

Depolar arası ürün transferi:

| Alan                       | Açıklama     |
| -------------------------- | ------------ |
| `source_warehouse_id`      | Çıkış deposu |
| `destination_warehouse_id` | Varış deposu |

Bir transfer iki `StockMovement` yaratır: kaynaktan `Out` + hedefe `In`.

## Satış sırasında stok düşümü

Satış statüsü `Invoiced`'a geçtiğinde, ürün kalemleri için otomatik `StockMovement` (`Type=Sale, Direction=Out`) yaratılır (`StockService::deductStockForSale`).

## Sonraki adımlar

<CardGroup cols={2}>
  <Card title="Depolar" icon="warehouse" href="/documentation/finance/warehouses">
    Stoğun tutulduğu birimler.
  </Card>

  <Card title="Ürünler" icon="box" href="/documentation/finance/products">
    Ürün tanımları.
  </Card>
</CardGroup>
