Özet: Stok bakiye hataları yanlış fiyatlandırma, eksik satış ve mali sorunlara yol açar. Bu rehberde SQL sorguları ile hatalı stokları tespit etme ve düzeltme yöntemlerini öğreneceksiniz.
Stok Bakiye Hataları Neden Oluşur?
Negatif Stok
Stok olmadan satış fişi kesilmesi veya tarih sıralaması hataları
Silinen Fişler
Stok hareketi silindikten sonra bakiye güncellememe
Mükerrer Kayıt
Aynı fişin birden fazla kaydedilmesi
Entegrasyon Hataları
E-ticaret veya WMS entegrasyonlarından kaynaklanan hatalar
Negatif Stokları Tespit Etme
Aşağıdaki sorgu, negatif bakiyeye düşmüş tüm stokları listeler:
SELECT
ITM.CODE AS StokKodu,
ITM.NAME AS StokAdi,
WH.NAME AS DepoAdi,
ISNULL(INV.ONHAND, 0) AS Miktar
FROM LG_001_ITEMS ITM
LEFT JOIN LG_001_01_STINVTOT INV ON ITM.LOGICALREF = INV.STOCKREF
LEFT JOIN L_CAPIWHOUSE WH ON INV.INVENNO = WH.NR
WHERE ISNULL(INV.ONHAND, 0) < 0
ORDER BY INV.ONHAND ASC
Not: 001 firma kodunuza, 01 dönem kodunuza göre düzenleyin.
Hesaplanan vs Kayıtlı Bakiye Karşılaştırma
En kritik sorgu: Stok hareketlerinden hesaplanan bakiye ile kayıtlı bakiyeyi karşılaştırır.
WITH HesaplananBakiye AS (
SELECT
STOCKREF,
INVENNO,
SUM(CASE
WHEN IOCODE IN (1,2,3,4,12,13) THEN AMOUNT
WHEN IOCODE IN (5,6,7,8,14,15) THEN -AMOUNT
ELSE 0
END) AS HesaplananMiktar
FROM LG_001_01_STLINE
WHERE CANCELLED = 0
GROUP BY STOCKREF, INVENNO
)
SELECT
ITM.CODE AS StokKodu,
ITM.NAME AS StokAdi,
WH.NAME AS Depo,
HB.HesaplananMiktar,
ISNULL(INV.ONHAND, 0) AS KayitliBakiye,
HB.HesaplananMiktar - ISNULL(INV.ONHAND, 0) AS Fark
FROM HesaplananBakiye HB
INNER JOIN LG_001_ITEMS ITM ON HB.STOCKREF = ITM.LOGICALREF
LEFT JOIN LG_001_01_STINVTOT INV
ON HB.STOCKREF = INV.STOCKREF AND HB.INVENNO = INV.INVENNO
LEFT JOIN L_CAPIWHOUSE WH ON HB.INVENNO = WH.NR
WHERE ABS(HB.HesaplananMiktar - ISNULL(INV.ONHAND, 0)) > 0.01
ORDER BY ABS(HB.HesaplananMiktar - ISNULL(INV.ONHAND, 0)) DESC
IOCODE Değerleri (Stok Hareket Türleri)
| IOCODE | Açıklama | Etki |
|---|---|---|
| 1 | Satınalma İrsaliyesi | + Giriş |
| 2 | Perakende Satış İade | + Giriş |
| 3 | Toptan Satış İade | + Giriş |
| 4 | Konsinye Çıkış İade | + Giriş |
| 5 | Satınalma İade | - Çıkış |
| 6 | Perakende Satış | - Çıkış |
| 7 | Toptan Satış | - Çıkış |
| 8 | Konsinye Çıkış | - Çıkış |
| 12 | Üretimden Giriş | + Giriş |
| 13 | Devir Fişi | + Giriş |
Stok Bakiyelerini Yeniden Hesaplatma
Dikkat!
Doğrudan SQL UPDATE işlemi yapmadan önce mutlaka yedek alın. Tercihen Logo'nun kendi araçlarını kullanın:
- • Yardımcı Programlar → Envanter Hesapları Yeniden Oluştur
- • Bu işlem STINVTOT tablosunu hareket kayıtlarından yeniden hesaplar
Belirli Bir Stokun Hareket Geçmişi
SELECT
ST.DATE_ AS Tarih,
ST.FICHENO AS FisNo,
CASE ST.IOCODE
WHEN 1 THEN 'Satınalma'
WHEN 7 THEN 'Toptan Satış'
WHEN 13 THEN 'Devir'
ELSE CAST(ST.IOCODE AS VARCHAR)
END AS Tur,
ST.AMOUNT AS Miktar,
WH.NAME AS Depo
FROM LG_001_01_STLINE ST
INNER JOIN LG_001_ITEMS ITM ON ST.STOCKREF = ITM.LOGICALREF
LEFT JOIN L_CAPIWHOUSE WH ON ST.INVENNO = WH.NR
WHERE ITM.CODE = 'STK-001' -- Stok kodunu yazın
AND ST.CANCELLED = 0
ORDER BY ST.DATE_, ST.LOGICALREF
Envanter Sayım Farkı Fişi Oluşturma
Fiziksel sayım sonucu tespit edilen farklar için Logo'da:
- 1 Stok Yönetimi → Hareketler → Sayım Fişleri
- 2 Yeni Sayım Fişi oluşturun
- 3 Sayım miktarlarını girin (sistem farkı otomatik hesaplar)
- 4 Sayım fişini onaylayın → Fark fişi otomatik oluşur
Stok Bakiye Analizi Desteği
Karmaşık stok problemlerinizi çözelim, envanter doğruluğunuzu sağlayalım.
Destek Al