Skip to main content
Flextell stok miktarını saklamaz, hesaplar. Bir ürünün bir depodaki bakiyesi, o ürün ve depo için kaydedilmiş hareketlerin giriş toplamı - çıkış toplamı değeridir. Hareketler eklenir, değiştirilmez ve silinmez. Bu sayfa depo kaynağını, stok durumu listesini, hareket kayıtlarını ve stoğu değiştiren dört işlemi anlatır: giriş, düzeltme, transfer ve sayım. Ürün kaynağı için Ürünler sayfasına bakın. Panelde aynı işlemleri nasıl yapacağınız için Depolar, Stoklar ve Stok hareketleri sayfalarına bakın.

Endpoint özeti

Tüm endpoint’ler X-Tenant başlığı ister. Başka kliniğe ait bir depo 404 döner. Başka kliniğe ait ürün veya depo kimliği stok yazma işlemlerinde 422 döner. Başlıklar için Başlıklar sayfasına bakın.
Her stok işleminin izni ayrıdır. Create:StockMovement tek başına düzeltme, sayım veya transfer yapmaya yetmez. View:StockOverview ile View:StockMovement de birbirini kapsamaz. İzinlerin genel işleyişi için İzinler ve görünürlük sayfasına bakın.
Bu modülde “kendi kayıtlarını görme” gibi bir sahiplik kısıtı yoktur. İzni olan kullanıcı kliniğin tüm depo ve stok kayıtlarını görür.

Depolar

Depo nesnesi

Listeleme

GET /warehouses sayfalı döner. Genel kurallar için Sayfalama ve Filtreleme ve sıralama sayfalarına bakın.

Oluşturma ve güncelleme

POST /warehouses için yalnızca name zorunludur. PUT /warehouses/{id} aynı alanları kabul eder ve hepsi isteğe bağlıdır.
Bir depoyu is_default: true ile kaydettiğinizde klinikteki diğer depoların is_default değeri sessizce false olur. Klinikte aynı anda en fazla bir varsayılan depo bulunur.Varsayılan depo; ürün oluştururken verdiğiniz initial_stock_quantity için kullanılır. Klinikte hiç varsayılan depo yoksa Flextell Ana Depo adıyla bir tane oluşturur.
Güncellemede country_id değişir ve city_id ile district_id göndermezseniz bu iki alan null olur.

Silme

DELETE /warehouses/{id} depoyu kalıcı olarak siler; geri dönüşüm kutusuna gitmez. Depodaki ürünlerin net miktarı sıfırdan büyükse işlem 422 ve WAREHOUSE_HAS_STOCK koduyla reddedilir. Mesaj: Bu depo kalan stoğu olduğu için silinemez. Önce stoğu başka depoya taşıyın veya düzeltme ile sıfırlayın. Başarılı yanıt {"message": "Depo başarıyla silindi"} gövdesini taşır.

Stok durumu

GET /stocks/overview her ürün ve depo çifti için güncel bakiyeyi döner. Listede yalnızca o depoda en az bir hareketi olan ürünler görünür. Hiç stok girişi yapılmamış bir ürün-depo çifti listede yer almaz.

Satır alanları

Yanıt yalnızca toplam balance değerini verir. “7 kutu 4 flakon 9 cc” gibi kutu dökümünü istiyorsanız ürünün paketleme alanlarından kendiniz hesaplayın.

Stok durumu değerleri

Filtreler

Stok hareketleri

Her stok değişikliği bir hareket kaydı bırakır. Satış, fatura iptali, transfer, düzeltme ve sayım da hareket üretir.

Hareket nesnesi

reference değeri Fatura #<belge no>, Satış #<id>, Transfer #<id>, Sayım #<id> veya Seans #<id> biçimindedir. Kaynağı olmayan harekette null döner.

Hareket türleri

type süzgecinde usage, usage_return ve waste değerleri de geçerlidir.

Listeleme

GET /stocks/movements sayfalı döner.
Hareket güncelleme veya silme endpoint’i yoktur. Yanlış bir kaydı düzeltmek için ters yönde yeni bir hareket oluşturun; bunun için POST /stocks/adjustment kullanın.

Stok girişi

POST /stocks/entry bir ürünü bir depoya purchase hareketiyle ekler. Yanıt 201 ve oluşan hareketi döner. full girişte toplam miktarı ürünün takip biriminde verirsiniz. partial girişte miktarı kutu, iç birim ve temel birim olarak ayrı ayrı verirsiniz; Flextell bunları ürünün stock_tracking_mode değerine göre toplar. partial girişte üç alanı da göndermelisiniz ve hesaplanan toplam sıfırdan büyük olmalıdır. Örnek: bir kutuda 5 flakon, bir flakonda 10 cc olan base_unit ürün için 7 kutu, 4 flakon ve 9 cc girişi 399 cc eder.

Stok düzeltme

POST /stocks/adjustment bakiyeyi elle değiştirir. İki modu vardır. Yanıt 201 ve {"movement": ...} döner.
  • in_out: Bakiyeye quantity kadar ekler veya düşer. Bakiyeden fazla çıkış INSUFFICIENT_STOCK ile reddedilir.
  • correction: Bakiyeyi quantity değerine eşitler. 0 verebilirsiniz. Flextell farkı tek bir adjustment hareketi olarak yazar. Bakiye zaten bu değerdeyse hiçbir şey yazılmaz ve yanıt 201 olup movement değeri null gelir.

Transfer

POST /stocks/transfer bir ürünü iki depo arasında taşır. Flextell bir transfer kaydı ve iki transfer hareketi oluşturur: kaynakta çıkış, hedefte giriş. İkisi de aynı effective_at değerini taşır. Yanıt 201 ve transfer nesnesini döner. Transfer nesnesi şu alanları taşır: id, product, source_warehouse, destination_warehouse, quantity, unit_label, user, notes, transferred_at, source_movement, destination_movement, movements[], created_at, updated_at. Kaynak depodaki bakiye yetmezse 422 ve INSUFFICIENT_STOCK döner. Hedefteki bakiye üst sınırı aşacaksa işlem tamamen geri alınır. Transferler için ayrı liste veya detay endpoint’i yoktur. Transferleri GET /stocks/movements?type=transfer ile izleyin; reference alanında Transfer #<id> görürsünüz.

Sayım

POST /stocks/count tek bir depodaki birçok ürünü tek istekte sayar. Flextell sayılan miktarı sistemdeki bakiyeyle karşılaştırır ve farkı hareket olarak yazar. Sayım miktarını yalnızca boxes, inner_units ve base_units ile verirsiniz. counted_quantity ve üst düzeyde product_id kabul edilmez. items.*.counted_quantity gönderirseniz The counted_quantity field is not supported. Use the partial fields instead. hatası alırsınız. Her satır şu kurallarla işlenir:
  1. Üç miktar alanı da yoksa, null ise veya boşsa satır atlanır. Açık 0 değeri sayılır.
  2. Ürünün o depoda hiç hareketi yoksa ve sayılan miktar 0’dan büyükse tek bir initial_stock hareketi yazılır. Sayım kaydı oluşmaz ve yanıtta count değeri null olur.
  3. Diğer durumlarda sayım kaydı oluşur. Fark sıfırdan farklıysa bir count hareketi yazılır: fark pozitifse giriş, negatifse çıkış.
Yanıt 201 olur ve items dizisi döner. Her öğe {count, movement} biçimindedir. Önce başlangıç stoğu satırları, sonra sayım satırları gelir; sıra isteğinizdeki sıra değildir. Sayım kaydı counted_quantity, system_quantity ve difference (sayılan eksi sistemdeki miktar) alanlarını taşır.
Sayım tek bir işlemdir. Bir satır hata verirse tüm sayım geri alınır ve hiçbir hareket yazılmaz. Hata items.{i}.* anahtarlarıyla hangi satırın sorunlu olduğunu gösterir.
Sayımlar için ayrı liste endpoint’i yoktur. Sonuçları GET /stocks/movements?type=count ile görün; reference alanında Sayım #<id> yazar.

Miktar sınırları

Tüm stok miktarları en fazla 9999999999,9999 olabilir ve en fazla 4 ondalık basamak taşır. boxes ve inner_units sıfır veya pozitif tam sayı olmalıdır. Giriş ve transfer miktarı en az 0,0001’dir. Sonuçtaki bakiye sınırı aşıyorsa istek reddedilir; hata quantity, boxes veya items.{i}.boxes alanı üzerinde bir doğrulama hatası olarak döner. Stok yazma işlemlerinin tamamı tek işlem olarak çalışır. Hata olursa hiçbir hareket kalmaz.

Hata kodları

Genel hata biçimi için Hatalar ve Hata kodları sayfalarına bakın. Stok yazma işlemlerinde şu doğrulama mesajları İngilizce gelir: The product does not belong to the tenant., The warehouse does not belong to the tenant., The boxes field must be empty when a full stock entry is selected., The quantity field must be empty when a partial stock entry is selected., The partial fields must produce a total stock quantity greater than 0.

Satış ve stok ilişkisi

Satışların stoktan düşmesi kliniğin Stok Düşürme Modu ayarına bağlıdır: Satış kaleminde warehouse_id yoksa varsayılan depo kullanılır. Düşürme mantığı ve ilgili hata kodları için Satışlar sayfasına bakın.