# Harici bir sistemden stok miktarlarını ayarlama

> inventorySetQuantities ile ürün ve lokasyon bazında stoğu ayarlayın; 2026-10’da zorunlu olan changeFromQuantity ve idempotency key dahil.

Sayfa: https://lintelagency.com/tr/kaynaklar/graphql/stok-miktarlarini-ayarlama

## Kısaca

Stoğu bir ERP’den ya da depo sisteminden ayarlamak için inventorySetQuantities’i name available (ya da on_hand), correction gibi bir reason ve envanter kalemi ile lokasyon başına miktar listesiyle çağırın. 2026-04’ten itibaren her miktar için changeFromQuantity (Shopify’da olmasını beklediğiniz değer ya da kontrolü atlamak için null) ve mutation için bir @idempotent anahtarı zorunludur.

## Bilgiler

- **API:** Admin GraphQL API
- **İşlem:** inventorySetQuantities
- **Erişim yetkisi:** write_inventory
- **Yerini aldığı REST çağrısı:** POST /admin/api/inventory_levels/set.json
- **API sürümü:** 2026-10
- **Son kontrol:** 2 Kasım 2026

## Nasıl kullanılır

1. Envanter kalemi ID’lerini (her varyantın inventoryItem’ında) ve lokasyon ID’lerini bir kez çekin, SKU’larınızın yanında saklayın.
2. Her kalem için yeni miktarı ve en son gördüğünüz miktarı changeFromQuantity olarak gönderin.
3. Her değişiklik için yeni bir idempotency key (UUID) üretip @idempotent ile verin. Başarısız bir isteği aynı anahtarla tekrar deneyin.
4. userErrors CHANGE_FROM_QUANTITY_STALE dönerse değeri zorlamak yerine güncel seviyeyi okuyup yeniden karar verin.

## Kod

### inventory-set-quantities.graphql

```graphql
mutation SetStock($input: InventorySetQuantitiesInput!, $idempotencyKey: String!) {
  inventorySetQuantities(input: $input) @idempotent(key: $idempotencyKey) {
    inventoryAdjustmentGroup {
      reason
      referenceDocumentUri
      changes {
        name
        delta
        quantityAfterChange
      }
    }
    userErrors {
      code
      field
      message
    }
  }
}
```

### inventory-set-quantities.variables.json

```json
{
  "idempotencyKey": "6f1c2b9e-3d4a-4f7e-9b1a-2c3d4e5f6a7b",
  "input": {
    "name": "available",
    "reason": "correction",
    "referenceDocumentUri": "gid://your-erp/StockSync/2026-11-02-0900",
    "quantities": [
      {
        "inventoryItemId": "gid://shopify/InventoryItem/1111111111",
        "locationId": "gid://shopify/Location/1234567890",
        "quantity": 12,
        "changeFromQuantity": 10
      },
      {
        "inventoryItemId": "gid://shopify/InventoryItem/1111111112",
        "locationId": "gid://shopify/Location/1234567890",
        "quantity": 0,
        "changeFromQuantity": 3
      }
    ]
  }
}
```

### inventory-set-quantities.response.json

```json
{
  "data": {
    "inventorySetQuantities": {
      "inventoryAdjustmentGroup": {
        "reason": "Inventory correction",
        "referenceDocumentUri": "gid://your-erp/StockSync/2026-11-02-0900",
        "changes": [
          {
            "name": "available",
            "delta": 2,
            "quantityAfterChange": null
          },
          {
            "name": "on_hand",
            "delta": 2,
            "quantityAfterChange": null
          },
          {
            "name": "available",
            "delta": -3,
            "quantityAfterChange": null
          },
          {
            "name": "on_hand",
            "delta": -3,
            "quantityAfterChange": null
          }
        ]
      },
      "userErrors": []
    }
  }
}
```

## Sınırlar ve özel durumlar

- name yalnızca available ya da on_hand alır. available’ı ayarlamak on_hand’i de aynı fark kadar değiştirir.
- reason, Shopify’ın değerlerinden biri olmalıdır: correction, cycle_count_available, received, restock gibi. referenceDocumentUri stok geçmişinde görünür.
- Bu mutation’ı yalnızca stok bilgisinin asıl kaynağı (source of truth) sizin sisteminizse kullanın. Başka bir kanaldaki satış gibi göreli değişiklikler için inventoryAdjustQuantities daha uygundur.
- changeFromQuantity: null kontrolü kapatır; eşzamanlı güncellemeler birbirinin üzerine yazabilir.

## Sorular

### Shopify’da stok GraphQL ile nasıl güncellenir?

Kesin bir sayı belirlemek için inventorySetQuantities’i, adet eklemek ya da düşmek için inventoryAdjustQuantities’i kullanın. İkisi de envanter kalemi ve lokasyon bazında çalışır.

### changeFromQuantity nedir?

Değişiklikten önce Shopify’da olmasını beklediğiniz miktardır. Farklıysa güncelleme reddedilir; böylece arada gerçekleşen bir satış kaybolmaz.

### Neden idempotency key hatası alıyorum?

2026-04 API sürümünden itibaren mutation @idempotent(key: ...) ister. Her değişiklik için yeni, tekrar denemede aynı anahtarı kullanın.

### Envanter kalemi ID’sini nerede bulurum?

Her varyantın kendi ID’sine sahip bir inventoryItem’ı vardır. productVariants’ı ya da varyantı ID ile sorgulayıp inventoryItem { id } seçin.

## Shopify belgeleri

- [inventorySetQuantities](https://shopify.dev/docs/api/admin-graphql/latest/mutations/inventorySetQuantities)
- [Manage inventory quantities and states](https://shopify.dev/docs/apps/build/orders-fulfillment/inventory-management-apps/manage-quantities-states)
- [Idempotent requests](https://shopify.dev/docs/api/usage/idempotent-requests)

## İlgili içerikler

- [Lokasyona göre stok seviyelerini okuma](https://lintelagency.com/tr/kaynaklar/graphql/lokasyona-gore-stok-seviyeleri)
- [Shopify stoğunu başka bir sistemle senkron tutmak](https://lintelagency.com/tr/blog/shopify-stok-senkronizasyonu)

Lisans: MIT. Kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.
