EKSİ STOK

Gönderen Konu: EKSİ STOK  (Okunma sayısı 737 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı Recete

  • Yeni Kullanıcı
  • *
  • Karma: 0
EKSİ STOK
« : 30.10.2020, 14:18 »
Merhaba,
Aşağıdaki sorguda sütunlar arası hesaplamada bir terslik var.
Mesela mevcut 9, Sipariş 1 adet ama Satılabilir durumu -8
SATILABİLİR stok 8 yazması gerekirken -8 yazıyor.

Bir diğer konu da;

13 adet sipariş var, 1 adet şube de var. Mevcut sıfır ise
Satılabilir 12 olması gerekiyor.

Yardımcı olabilir misiniz?

Kod: [Seç]
SELECT

I.CODE 'ÜRÜN KODU',
ISNULL((SELECT SUM (DEPO.ONHAND) AS MIKTAR FROM LV_006_01_STINVTOT AS DEPO WHERE (DEPO.INVENNO IN (1)) AND (DEPO.STOCKREF = I.LOGICALREF)),0) AS 'MEVCUT',
SUM(O.AMOUNT)   'SİPARİŞ',
ISNULL((SELECT SUM (DEPO.ONHAND-DEPO.ACTSORDER) AS MIKTAR FROM LV_006_01_STINVTOT AS DEPO WHERE (DEPO.INVENNO IN (2)) AND (DEPO.STOCKREF= I.LOGICALREF)),0) AS 'ŞUBE',
ISNULL((SELECT SUM (DEPO.ONHAND-DEPO.ACTSORDER) AS MIKTAR FROM LV_006_01_STINVTOT AS DEPO WHERE (DEPO.INVENNO IN (-1)) AND (DEPO.STOCKREF = I.LOGICALREF)),0) AS 'SATILABİLİR'

FROM
LG_006_01_STLINE    ST  RIGHT JOIN
LG_006_ITEMS        I   ON I.LOGICALREF= O.STOCKREF RIGHT JOIN
LG_006_01_ORFLINE   O ON O.LOGICALREF= ST.ORDTRANSREF

WHERE
I.CARDTYPE='12'

GROUP BY
I.CODE,
I.LOGICALREF

Çevrimdışı Recete

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: EKSİ STOK
« Yanıtla #1 : 31.10.2020, 10:01 »
Üstadlar, bunu çözmem gerekiyor. Yardımcı olabilir ?

Çevrimdışı hyponectia

  • Logo Kullanıcısı
  • **
  • Karma: 0
  • hyponectia.com
Ynt: EKSİ STOK
« Yanıtla #2 : 31.10.2020, 13:27 »
Merhaba,

Yukarıdaki sorgu çalışmıyor olması lazım (orfline'a bağlantı kurulmadan join atılmış).
Siparişlerde sadece ORFLINE'a refer edilmiş ama herhangi bir kısıtlama yok: satış/satınalma? ITEMS.CARDTYPE=12 ama STLINE veya ORFLINE üzerinde LINETYPE ne? STLINE'a bağlantı sebebi (satış/satınalma - TRCODE)?

Alıntı
Aşağıdaki sorguda sütunlar arası hesaplamada bir terslik var.
Sütunlar arasında herhangi bir işlem yok. Terslik, sütunlara değer gelirken oluşturulan sorgudaki eksiklik.

Kolay gelsin.

Çevrimdışı Recete

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: EKSİ STOK
« Yanıtla #3 : 31.10.2020, 13:50 »
İlginiz için teşekkür ederim.
Sorgu şu anda çalışıyor. Ancak ORFLINE bağlantısı eksik olduğundan bazı yerlerde sapıtıyor.
Nasıl olmalıdır?
Sorguyu düzeltebilir misiniz?
Selamlar

Çevrimdışı hyponectia

  • Logo Kullanıcısı
  • **
  • Karma: 0
  • hyponectia.com
Ynt: EKSİ STOK
« Yanıtla #4 : 31.10.2020, 14:16 »
Yardımcı olmaya çalışıyım. Tam olarak yapmak istediğiniz nedir? Malzeme ve depo bazında stok durumları ile sipariş durumlarını mı görmek istiyorsunuz? 

Çevrimdışı Recete

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: EKSİ STOK
« Yanıtla #5 : 31.10.2020, 15:02 »
Merhaba,
Doğrudur dediğiniz gibi yapmaya çalışıyorum.
Teşekkür ederim.

Çevrimdışı hyponectia

  • Logo Kullanıcısı
  • **
  • Karma: 0
  • hyponectia.com
Ynt: EKSİ STOK
« Yanıtla #6 : 31.10.2020, 16:19 »
Merhaba,

Aşağıdaki işinizi görür heralde ama ORFLINE için LINETYPE ayarlamanız gerekebilir. Firma ve dönem bilgilerinize göre de sorguyu düzeltmeniz gerekir.

Ekran görüntüsü de ekledim nasıl bir sonuç çıktığına dair.

Kod: [Seç]

SELECT IT.CODE AS 'Ürün Kodu', ISNULL(B1.X,0) AS 'Toplam Stok', ISNULL(B2.X,0) AS 'Merkez Stok', ISNULL(B3.X,0) AS 'Bekleyen Satış Sipariş',
CASE
WHEN ISNULL(B1.X,0)-ISNULL(B3.X,0) > 0 THEN CONVERT(varchar,(ISNULL(B1.X,0)-ISNULL(B3.X,0)))
WHEN ISNULL(B1.X,0)-ISNULL(B3.X,0) <=0 THEN 'Yeteri Kadar Stok Yok'
END AS 'Satılabilir'

FROM LG_507_ITEMS IT

LEFT JOIN
(
SELECT STOCKREF, SUM(ONHAND) X FROM LV_507_01_STINVTOT SI WHERE INVENNO=-1 GROUP BY STOCKREF
) AS B1 ON B1.STOCKREF=IT.LOGICALREF

LEFT JOIN
(
SELECT STOCKREF, SUM(ONHAND) X FROM LV_507_01_STINVTOT SI WHERE INVENNO=0 GROUP BY STOCKREF
) AS B2 ON B2.STOCKREF=IT.LOGICALREF

LEFT JOIN
(
SELECT STOCKREF, SUM(AMOUNT-SHIPPEDAMOUNT) X FROM LG_507_01_ORFLINE ORL WHERE ORL.TRCODE=1 AND ORL.LINETYPE IN (0,7) AND (ORL.AMOUNT-ORL.SHIPPEDAMOUNT > 0 ) AND ORL.STATUS <>2 AND ORL.CANCELLED=0
GROUP BY ORL.STOCKREF
) AS B3 ON B3.STOCKREF=IT.LOGICALREF

WHERE IT.ACTIVE=0




Çevrimdışı Recete

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: EKSİ STOK
« Yanıtla #7 : 31.10.2020, 16:33 »
Tamamdır. Çok teşekkür ederim. Hakkınızı helal ediniz.
Buna şube ambarını da ilave etmem gerekecek.
MERKEZ STOK Üzerinden Çoğaltarak gidebilir miyim?
Ayrıca stok kartı içerisindeki gurup kodunu buraya yazmadan iç select ile sıralamak ve daha sonra ürün koduna göre sıralama yapmam gerekecek.
ORDER BY En sona mı yazmalıyım?
« Son Düzenleme: 31.10.2020, 16:42 Gönderen: Recete »

Çevrimdışı hyponectia

  • Logo Kullanıcısı
  • **
  • Karma: 0
  • hyponectia.com
Ynt: EKSİ STOK
« Yanıtla #8 : 31.10.2020, 16:45 »
B1 veya B2 sorgusunu kopyalayıp, ambar (INVENNO) değiştirmeniz yeterli ambar eklemek için.

Sıralama yapmak için son satırdaki WHERE'den sonra yazabilirsiniz ORDER BY.

Çevrimdışı Recete

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: EKSİ STOK
« Yanıtla #9 : 31.10.2020, 17:04 »
Tamamdır. Tekrar teşekkür ederim.
Sağlıcakla kalın .

Çevrimdışı Recete

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: EKSİ STOK
« Yanıtla #10 : 02.11.2020, 14:51 »
Merhaba,

Aşağıdaki sorguda;
Msg 8114, Level 16, State 5, Line 1
varchar veri türü numeric veri türüne dönüştürülürken hata.

hatası veriyor.
Nasıl düzeltilebilir?

Aslında (yeterli stok yok) yazısı yerine sıfır (0) yazsa nasıl olur?
Demek istediğim (-) durumdaki stokları da sıfır (0) görelim.
Eğer bir üründen sipariş miktarı toplam mevcuttan fazlaysa yani fark < 0 ise doğrudan sıfır yazmalıdır.

Bir diğer konu da;
İç ve dış Selectler sorgu içerisine alınabilir mi?

Kod: [Seç]
SELECT
[ÜRÜN KODU],
SHOWROOM,
ŞUBE,
[TOPLAM MEVCUT],
SİPARİŞ,
SATILABİLİR
FROM
(
SELECT * FROM
(
SELECT

I.CODE AS 'ÜRÜN KODU',
I.STGRPCODE,

ISNULL(B2.X,0) 'SHOWROOM',
ISNULL(B4.X,0) 'ŞUBE',
ISNULL(B1.X,0) 'TOPLAM MEVCUT',
ISNULL(B3.X,0) 'SİPARİŞ',

CASE
WHEN ISNULL(B1.X,0)-ISNULL(B3.X,0) > 0 THEN CONVERT(varchar,(ISNULL(B1.X,0)-ISNULL(B3.X,0)))
WHEN ISNULL(B1.X,0)-ISNULL(B3.X,0) <=0 THEN 'Yeteri Kadar Stok Yok'
END AS 'Satılabilir'

FROM LG_622_ITEMS I

LEFT JOIN
(
SELECT STOCKREF, SUM(ONHAND) X FROM LV_622_04_STINVTOT SI
WHERE INVENNO=-1 GROUP BY STOCKREF
) AS B1 ON B1.STOCKREF=I.LOGICALREF

LEFT JOIN
(
SELECT STOCKREF, SUM(ONHAND) X FROM LV_622_04_STINVTOT SI
WHERE INVENNO=1 GROUP BY STOCKREF
) AS B2 ON B2.STOCKREF=I.LOGICALREF

LEFT JOIN
(
SELECT STOCKREF, SUM(ONHAND) X FROM LV_622_04_STINVTOT SI
WHERE INVENNO=2 GROUP BY STOCKREF
) AS B4 ON B4.STOCKREF=I.LOGICALREF

LEFT JOIN
(
SELECT STOCKREF, SUM(AMOUNT-SHIPPEDAMOUNT) X FROM LG_622_04_ORFLINE ORL
WHERE ORL.TRCODE=1 AND ORL.LINETYPE IN (0,7) AND (ORL.AMOUNT-ORL.SHIPPEDAMOUNT > 0 ) AND ORL.STATUS <>2 AND ORL.CANCELLED=0
GROUP BY ORL.STOCKREF
) AS B3 ON B3.STOCKREF=I.LOGICALREF

WHERE I.CARDTYPE=12
)
AS T
WHERE
CAST(SHOWROOM AS decimal(38,2))>0 OR
CAST(ŞUBE AS decimal(38,2))>0 OR
CAST([TOPLAM MEVCUT] AS decimal(38,2))>0 OR
CAST(SİPARİŞ AS decimal(38,2))>0 OR
CAST(SATILABİLİR AS decimal(38,2))>0
) TS
ORDER BY STGRPCODE, [ÜRÜN KODU]
« Son Düzenleme: 02.11.2020, 15:20 Gönderen: Recete »

Çevrimdışı hyponectia

  • Logo Kullanıcısı
  • **
  • Karma: 0
  • hyponectia.com
Ynt: EKSİ STOK
« Yanıtla #11 : 02.11.2020, 20:49 »
Merhaba,

CASE
WHEN ISNULL(B1.X,0)-ISNULL(B3.X,0) > 0 THEN ISNULL(B1.X,0)-ISNULL(B3.X,0)
WHEN ISNULL(B1.X,0)-ISNULL(B3.X,0) <=0 THEN 0
END AS 'Satılabilir'

olarak değiştirilebilir.

Çevrimdışı Recete

  • Yeni Kullanıcı
  • *
  • Karma: 0
Ynt: EKSİ STOK
« Yanıtla #12 : 03.11.2020, 14:19 »

Tamamdır. Bilgi ve yardımınız için teşekkür ederim.
Kolay gelsin.