Genel Bilgiler
İstatistikler
İlişki Bulunamadı
Bu nesne için henüz ilişki tanımlanmamış. İlişki Analizi sayfasından otomatik analiz başlatabilirsiniz.
Tam SQL Kodu
CREATE VIEW dbo.[0001_alis_satis_fiyatlari]
AS
SELECT TOP (100) PERCENT ITM.CODE AS [MALZEME KODU], ITM.NAME AS [MALZEME AÇIKLAMASI], GN.ONHAND - GN.RESERVED - GN.TEMPIN AS [STOK MIKTARI], ISNULL
((SELECT TOP (1) PRICE
FROM dbo.LG_011_PRCLIST
WHERE (PTYPE = 2) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC), 0) AS [SATIS FIYATI], ISNULL
((SELECT TOP (1) CASE WHEN CAST(CURRENCY AS VARCHAR(5)) = 1 THEN 'USD' WHEN CAST(CURRENCY AS VARCHAR(5)) = 20 THEN 'EURO' WHEN CAST(CURRENCY AS VARCHAR(5)) = 160 OR
CAST(CURRENCY AS VARCHAR(5)) = 0 THEN 'TL' ELSE 'YOK' END AS Expr1
FROM dbo.LG_011_PRCLIST AS LG_011_PRCLIST_5
WHERE (PTYPE = 2) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC), '') AS [SATIS KURU], ISNULL
((SELECT TOP (1) PRICE
FROM dbo.LG_011_PRCLIST AS LG_011_PRCLIST_4
WHERE (PTYPE = 1) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC), 0) AS [ALIS FIYATI], ISNULL
((SELECT TOP (1) CASE WHEN CAST(CURRENCY AS VARCHAR(5)) = 1 THEN 'USD' WHEN CAST(CURRENCY AS VARCHAR(5)) = 20 THEN 'EURO' WHEN CAST(CURRENCY AS VARCHAR(5)) = 160 OR
CAST(CURRENCY AS VARCHAR(5)) = 0 THEN 'TL' ELSE 'YOK' END AS Expr1
FROM dbo.LG_011_PRCLIST AS LG_011_PRCLIST_3
WHERE (PTYPE = 1) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC), '') AS [ALIS KURU], ISNULL
((SELECT TOP (1) LOGICALREF
FROM dbo.LG_011_PRCLIST AS LG_011_PRCLIST_2
WHERE (PTYPE = 2) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC), 0) AS [SATIS DURUM], ISNULL
((SELECT TOP (1) LOGICALREF
FROM dbo.LG_011_PRCLIST AS LG_011_PRCLIST_1
WHERE (PTYPE = 1) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC), 0) AS [ALIS DURUM], ITM.LOGICALREF, ITM.UNITSETREF
FROM dbo.LG_011_ITEMS AS ITM LEFT OUTER JOIN
dbo.LV_011_07_GNTOTST AS GN ON GN.STOCKREF = ITM.LOGICALREF AND GN.INVENNO = - 1
WHERE (ITM.ACTIVE = 0) AND (ITM.NAME <> '')
ORDER BY 'MALZEME AÇIKLAMASI'
Kodun Çalışma Mantığı (Adım Adım)
Analiz Ekle/DüzenleFROM dbo.LG_011_ITEMS AS ITM
LEFT OUTER JOIN dbo.LV_011_07_GNTOTST AS GN
ON GN.STOCKREF = ITM.LOGICALREF AND GN.INVENNO = - 1
WHERE (ITM.ACTIVE = 0) AND (ITM.NAME <> '')
Ne oluyor?
-
Listeyi LG_011_ITEMS (malzeme kartı) üzerinden kuruyor. (CODE, NAME, LOGICALREF, UNITSETREF buradan geliyor.) ugurozpinar.github.io+1
-
LV_011_07_GNTOTSTile STOCKREF = malzeme logicalref üzerinden birleşip stok toplamlarını çekiyor. -
INVENNO = -1genelde “tüm ambarlar / genel toplam” mantığında kullanılır (sizdeki yapı bu şekilde kurgulanmış). -
ITM.ACTIVE = 0veITM.NAME <> ''ile aktif olan ve adı boş olmayan kartları listeliyor (Logo’da ACTIVE alanı bu şekilde sık kullanılır).
GN.ONHAND - GN.RESERVED - GN.TEMPIN AS [STOK MİKTARI]
Ne oluyor?
-
Stok toplamından “kullanılabilir stok” gibi bir değer üretiyor:
-
ONHAND(eldeki stok) -
RESERVED(rezerve/ayrılmış) -
TEMPIN(geçici giriş / geçici işlem etkisi)
-
-
Sonuç: net kullanılabilir stok gibi düşünülmüş.
Buradaki alanların isimleri zaten stok toplam mantığını gösteriyor; view bunu “eldeki - ayrılmış - geçici” şeklinde nete çeviriyor.
ISNULL(
(SELECT TOP (1) PRICE
FROM dbo.LG_011_PRCLIST
WHERE (PTYPE = 2) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC),
0
) AS [SATIŞ FİYATI]
Ne oluyor?
-
LG_011_PRCLISTLogo’da fiyat kartları / fiyat listesi tablosu. ugurozpinar.github.io -
PTYPE = 2→ satış fiyatı tipini seçiyor. (PTYPE: 1 alış, 2 satış) ugurozpinar.github.io -
CARDREF = ITM.LOGICALREF→ fiyat kaydı hangi malzemeye ait (malzeme referansına bağlıyor). -
ORDER BY BEGDATE DESC+TOP 1→ “başlangıç tarihi en yeni olan fiyat kaydı”nı alıyor. -
Fiyat yoksa
ISNULL(..., 0)→ 0 dönüyor.
ISNULL(
(SELECT TOP (1)
CASE
WHEN CAST(CURRENCY AS VARCHAR(5)) = 1 THEN 'USD'
WHEN CAST(CURRENCY AS VARCHAR(5)) = 20 THEN 'EURO'
WHEN CAST(CURRENCY AS VARCHAR(5)) = 160 OR CAST(CURRENCY AS VARCHAR(5)) = 0 THEN 'TL'
ELSE 'YOK'
END
FROM dbo.LG_011_PRCLIST
WHERE (PTYPE = 2) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC),
''
) AS [SATIŞ KURU]
Ne oluyor?
-
Aynı “en güncel satış fiyat kaydı”nın
CURRENCYalanını alıyor. (LG_PRCLIST.CURRENCYalanı “Döviz türü” olarak geçer.) ugurozpinar.github.io -
Sonra
CASEile sizin sistemdeki kodlara göre USD/EURO/TL metnine çeviriyor.-
(Not: Buradaki
1/20/160değerleri Logo’nun kur tablosu/parametrelerine göre değişebilen bir eşleştirme olabiliyor; sizde böyle map’lenmiş.)
-
ISNULL(
(SELECT TOP (1) PRICE
FROM dbo.LG_011_PRCLIST
WHERE (PTYPE = 1) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC),
0
) AS [ALIŞ FİYATI]
Ne oluyor?
-
PTYPE = 1→ alış fiyatı tipini seçiyor. ugurozpinar.github.io -
Yine en güncel (BEGDATE en büyük) kaydı alıyor; yoksa 0.
ISNULL(
(SELECT TOP (1)
CASE ... END
FROM dbo.LG_011_PRCLIST
WHERE (PTYPE = 1) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC),
''
) AS [ALIŞ KURU]
Ne oluyor?
-
Aynı mantıkla alış fiyat kaydının
CURRENCYalanını yazıya çeviriyor.
ISNULL(
(SELECT TOP (1) LOGICALREF
FROM dbo.LG_011_PRCLIST
WHERE (PTYPE = 2) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC),
0
) AS [SATIŞ DURUM]
ISNULL(
(SELECT TOP (1) LOGICALREF
FROM dbo.LG_011_PRCLIST
WHERE (PTYPE = 1) AND (ACTIVE = 0) AND (CARDREF = ITM.LOGICALREF)
ORDER BY BEGDATE DESC),
0
) AS [ALIŞ DURUM]
Ne oluyor?
-
Burada fiyatın kendisini değil, o fiyat kaydının LOGICALREF’ini alıyor.
-
Pratik kullanım:
-
0ise “bu malzemede o tip fiyat kaydı yok” -
0 değilse“fiyat kaydı var” (ve istersen o kaydı referans alıp başka alanlarını da çekebilirsin)
-