Genel Bilgiler
İstatistikler
→ Kullandığı Nesneler (2)
← Kullanan Nesneler (3)
→ Bağımlılık Ağacı
- TuketimRaporuREFERENCES
- PLAS_RAPOR_PLAKALARJOINS
← Etki Ağacı
- 001_PLASIYER_SIRALI_AYLIK_GIDERLERUSES_VIEW
- STR_GUNCELLECALLS_SP
- STR_GUNCELLECALLS_SP
- STR_GUNCELLECALLS_SP
- STR_GUNCELLECALLS_SP
- 001_GIDER_LISTESIUSES_VIEW
Tam SQL Kodu
CREATE VIEW dbo.[001_PLASIYER_GIDER_LISTESI]
AS
SELECT *
FROM ((SELECT KSL.DATE_ AS TARIH, KSL.LINEEXP AS ACK, KSL.TRNET AS TUTAR, SP2.DEFINITION_ AS PLAS, SP1.DEFINITION_ AS GIDER, MONTH(DATE_) AS AY, YEAR(DATE_) AS [YIL], 'KASA' AS TUR,
CASE WHEN KSL.CUSTTITLE LIKE '%GENEL GIDER%' THEN '' ELSE KSL.CUSTTITLE END AS [DEF]
FROM LG_011_08_KSLINES AS KSL LEFT OUTER JOIN
LG_011_SPECODES AS SP1 ON SP1.SPECODE = KSL.SPECODE AND SP1.CODETYPE = 1 AND SP1.SPECODETYPE = 44 LEFT OUTER JOIN
LG_011_SPECODES AS SP2 ON SP2.SPECODE = KSL.CYPHCODE AND SP2.CODETYPE = 2 AND SP2.SPECODETYPE = 44
WHERE KSL.TRCODE = 12 AND KSL.SPECODE <> '' AND KSL.CYPHCODE <> '')
UNION ALL
(SELECT CLF.DATE_ AS TARIH,CC.DEFINITION_ +' '+ CLF.LINEEXP AS ACK, CLF.TRNET AS TUTAR, 'SIRKET' AS PLAS, 'MAAS ÖDEME' AS GIDER, MONTH(DATE_)
AS AY, YEAR(DATE_) AS YIL, 'KASA' AS TUR, CC.DEFINITION_ AS [DEF]
FROM LG_011_08_CLFLINE AS CLF LEFT OUTER JOIN
LG_011_CLCARD AS CC ON CC.LOGICALREF = CLF.CLIENTREF
WHERE CLF.TRCODE = 4 AND CLF.CANCELLED = 0 AND (CLF.LINEEXP LIKE '%MAAS%'))
UNION ALL
(SELECT CLF.DATE_ AS TARIH, CLF.LINEEXP AS ACK, CLF.TRNET AS TUTAR, CASE WHEN CC.DEFINITION_ = 'MURAT ÜZÜM' THEN 'MURAT ÜZÜM' WHEN CC.DEFINITION_ = 'MURAT TURHAN' THEN NULL WHEN LEFT(CC.DEFINITION_,
CHARINDEX(' ', CC.DEFINITION_) - 1) = 'Ali' THEN 'Emre' ELSE LEFT(CC.DEFINITION_, CHARINDEX(' ', CC.DEFINITION_) - 1) END AS PLAS, 'YEMEK' AS GIDER, MONTH(DATE_) AS AY, YEAR(DATE_) AS YIL, 'KASA' AS TUR,
CC.DEFINITION_ AS [DEF]
FROM LG_011_08_CLFLINE AS CLF LEFT OUTER JOIN
LG_011_CLCARD AS CC ON CC.LOGICALREF = CLF.CLIENTREF
WHERE CLF.TRCODE = 4 AND CLF.CANCELLED = 0 AND (CLF.LINEEXP LIKE '%YEMEK%'))
UNION ALL
(SELECT BNL.DATE_ AS TARIH, BNL.GENEXP1 AS ACK, BNL.CREDITTOT AS TUTAR, SP2.DEFINITION_ AS PLAS, SP1.DEFINITION_ AS GIDER, MONTH(DATE_) AS AY, YEAR(DATE_) AS [YIL], 'BANKA' AS TUR, '' AS [DEF]
FROM LG_011_08_BNFICHE AS BNL LEFT OUTER JOIN
LG_011_SPECODES AS SP1 ON SP1.SPECODE = BNL.SPECODE AND SP1.CODETYPE = 1 AND SP1.SPECODETYPE = 43 LEFT OUTER JOIN
LG_011_SPECODES AS SP2 ON SP2.SPECODE = BNL.CYPHCODE AND SP2.CODETYPE = 2 AND SP2.SPECODETYPE = 43
WHERE BNL.SPECODE <> '' AND BNL.CYPHCODE <> '')
UNION ALL
(SELECT CSR.DATE_ AS TARIH, CSR.GENEXP1 AS ACK, CSR.TRNET AS TUTAR, SP2.DEFINITION_ AS PLAS, SP1.DEFINITION_ AS GIDER, MONTH(DATE_) AS AY, YEAR(DATE_) AS [YIL], 'ÇEK' AS TUR, CC.DEFINITION_ AS [DEF]
FROM LG_011_07_CSROLL AS CSR LEFT OUTER JOIN
LG_011_CLCARD AS CC ON CC.LOGICALREF = CSR.CARDREF LEFT OUTER JOIN
LG_011_SPECODES AS SP1 ON SP1.SPECODE = CSR.SPECODE AND SP1.CODETYPE = 1 AND SP1.SPECODETYPE = 30 LEFT OUTER JOIN
LG_011_SPECODES AS SP2 ON SP2.SPECODE = CSR.CYPHCODE AND SP2.CODETYPE = 2 AND SP2.SPECODETYPE = 30
WHERE CSR.SPECODE <> '' AND CSR.CYPHCODE <> '')
UNION ALL
(SELECT CAST(TRR.IslemTarihi AS DATE) AS TARIH, TRR.IstasyonAdi AS ACK, TRR.Tutar AS TUTAR, PRP.PLAS, 'YAKIT' AS GIDER, MONTH(TRR.IslemTarihi) AS AY, YEAR(TRR.IslemTarihi) AS [YIL], 'KASA' AS TUR, '' AS DEF
FROM dbo.TuketimRaporu AS TRR LEFT OUTER JOIN
dbo.PLAS_RAPOR_PLAKALAR AS PRP ON PRP.PLAKA = TRR.Plaka
WHERE PRP.PLAS IS NOT NULL)
UNION ALL
(SELECT TTR.DATE_ AS TARIH, CONCAT(MONTH(TTR.DATE_), '. Ay Turkcell Fatura Ödeme') AS ACK, TTR.TRNET AS TUTAR, PRP.PLAS, 'TELEKOM ÖDEME' AS GIDER, MONTH(TTR.DATE_) AS AY, YEAR(TTR.DATE_) AS YIL,
'BANKA' AS TUR, '' AS DEF
FROM (SELECT LEFT(BNL.LINEEXP, CHARINDEX(' - ', BNL.LINEEXP)) AS ACK, TRNET, DATE_
FROM LG_011_08_BNFLINE AS BNL
WHERE BNL.TRCODE = 4 AND BNL.CANCELLED = 0 AND LINEEXP LIKE '%Turkcell%') AS TTR LEFT OUTER JOIN
dbo.PLAS_RAPOR_PLAKALAR AS PRP ON PRP.TELEFON = TTR.ACK
WHERE PRP.PLAS IS NOT NULL)) QQ
WHERE QQ.YIL = 2025 AND (QQ.ACK NOT LIKE '%prim%');
Kodun Çalışma Mantığı (Adım Adım)
Analiz Ekle/DüzenleSELECT KSL.DATE_ AS TARIH,
KSL.LINEEXP AS ACK,
KSL.TRNET AS TUTAR,
SP2.DEFINITION_ AS PLAS,
SP1.DEFINITION_ AS GIDER,
MONTH(DATE_) AS AY,
YEAR(DATE_) AS YIL,
'KASA' AS TUR,
CASE WHEN KSL.CUSTTITLE LIKE '%GENEL GIDER%' THEN '' ELSE KSL.CUSTTITLE END AS DEF
FROM LG_011_08_KSLINES AS KSL
LEFT JOIN LG_011_SPECODES AS SP1 ON SP1.SPECODE = KSL.SPECODE AND SP1.CODETYPE = 1 AND SP1.SPECODETYPE = 44
LEFT JOIN LG_011_SPECODES AS SP2 ON SP2.SPECODE = KSL.CYPHCODE AND SP2.CODETYPE = 2 AND SP2.SPECODETYPE = 44
WHERE KSL.TRCODE = 12 AND KSL.SPECODE <> '' AND KSL.CYPHCODE <> ''
Mantık:
-
Kasa satırlarından (
KSLINES) gider çekiyor. -
KSL.TRCODE = 12ile belli tür kasa hareketlerini alıyor (sizde gider kaydı için kullanılan tür). -
KSL.SPECODE→ gider sınıfı gibi kullanılmış,SPECODES(CODETYPE=1) üzerindenGIDERadına çevriliyor. -
KSL.CYPHCODE→ plasiyer/kisi gibi kullanılmış,SPECODES(CODETYPE=2) üzerindenPLASadına çevriliyor. -
DEF:CUSTTITLE“GENEL GIDER” içeriyorsa boş geçiyor, değilse ünvanı yazıyor.
SELECT CLF.DATE_ AS TARIH,
CC.DEFINITION_ +' '+ CLF.LINEEXP AS ACK,
CLF.TRNET AS TUTAR,
'SIRKET' AS PLAS,
'MAAS ÖDEME' AS GIDER,
MONTH(DATE_) AS AY,
YEAR(DATE_) AS YIL,
'KASA' AS TUR,
CC.DEFINITION_ AS DEF
FROM LG_011_08_CLFLINE AS CLF
LEFT JOIN LG_011_CLCARD AS CC ON CC.LOGICALREF = CLF.CLIENTREF
WHERE CLF.TRCODE = 4 AND CLF.CANCELLED = 0 AND (CLF.LINEEXP LIKE '%MAAS%')
Mantık:
-
Cari hareket satırlarından (
CLFLINE) “MAAS” geçenleri alıp gider yazıyor. -
Burada plasiyer sabit: PLAS = 'SIRKET'
-
Gider sabit: GIDER = 'MAAS ÖDEME'
-
Açıklama: Cari ünvan + satır açıklaması birleştiriliyor.
SELECT CLF.DATE_ AS TARIH,
CLF.LINEEXP AS ACK,
CLF.TRNET AS TUTAR,
CASE
WHEN CC.DEFINITION_ = 'MURAT ÜZÜM' THEN 'MURAT ÜZÜM'
WHEN CC.DEFINITION_ = 'MURAT TURHAN' THEN NULL
WHEN LEFT(CC.DEFINITION_, CHARINDEX(' ', CC.DEFINITION_) - 1) = 'Ali' THEN 'Emre'
ELSE LEFT(CC.DEFINITION_, CHARINDEX(' ', CC.DEFINITION_) - 1)
END AS PLAS,
'YEMEK' AS GIDER,
MONTH(DATE_) AS AY,
YEAR(DATE_) AS YIL,
'KASA' AS TUR,
CC.DEFINITION_ AS DEF
FROM LG_011_08_CLFLINE AS CLF
LEFT JOIN LG_011_CLCARD AS CC ON CC.LOGICALREF = CLF.CLIENTREF
WHERE CLF.TRCODE = 4 AND CLF.CANCELLED = 0 AND (CLF.LINEEXP LIKE '%YEMEK%')
Mantık:
-
Cari hareket satırlarında açıklamada “YEMEK” geçenleri alıyor.
-
PLASalanını cari ünvanından türetmeye çalışıyor:-
Ünvan “MURAT ÜZÜM” ise aynen yaz.
-
“MURAT TURHAN” ise PLAS’i NULL bırak.
-
Ünvanın ilk kelimesi “Ali” ise “Emre” yap (manual eşleme).
-
Diğer durumda ünvanın ilk kelimesini plasiyer olarak kullan.
-
-
Gider sabit:
YEMEK
Burada
CHARINDEX(' ', CC.DEFINITION_) - 1kullanıldığı için ünvan içinde hiç boşluk yoksa hata riski olabilir (boşluk yoksa CHARINDEX 0 döner). Bu view’in sorunsuz çalışması için pratikte ünvanların boşluk içeriyor olması beklenmiş.
SELECT BNL.DATE_ AS TARIH,
BNL.GENEXP1 AS ACK,
BNL.CREDITTOT AS TUTAR,
SP2.DEFINITION_ AS PLAS,
SP1.DEFINITION_ AS GIDER,
MONTH(DATE_) AS AY,
YEAR(DATE_) AS YIL,
'BANKA' AS TUR,
'' AS DEF
FROM LG_011_08_BNFICHE AS BNL
LEFT JOIN LG_011_SPECODES AS SP1 ON SP1.SPECODE = BNL.SPECODE AND SP1.CODETYPE = 1 AND SP1.SPECODETYPE = 43
LEFT JOIN LG_011_SPECODES AS SP2 ON SP2.SPECODE = BNL.CYPHCODE AND SP2.CODETYPE = 2 AND SP2.SPECODETYPE = 43
WHERE BNL.SPECODE <> '' AND BNL.CYPHCODE <> ''
Mantık:
-
Banka fiş başlığından gider çekiyor (
BNFICHE). -
Tutar olarak
CREDITTOTkullanılmış (kredi toplamı). -
Gider ve plasiyer yine SPECODES üzerinden çözülüyor ama bu kez
SPECODETYPE=43.
SELECT CSR.DATE_ AS TARIH,
CSR.GENEXP1 AS ACK,
CSR.TRNET AS TUTAR,
SP2.DEFINITION_ AS PLAS,
SP1.DEFINITION_ AS GIDER,
MONTH(DATE_) AS AY,
YEAR(DATE_) AS YIL,
'ÇEK' AS TUR,
CC.DEFINITION_ AS DEF
FROM LG_011_07_CSROLL AS CSR
LEFT JOIN LG_011_CLCARD AS CC ON CC.LOGICALREF = CSR.CARDREF
LEFT JOIN LG_011_SPECODES AS SP1 ON SP1.SPECODE = CSR.SPECODE AND SP1.CODETYPE = 1 AND SP1.SPECODETYPE = 30
LEFT JOIN LG_011_SPECODES AS SP2 ON SP2.SPECODE = CSR.CYPHCODE AND SP2.CODETYPE = 2 AND SP2.SPECODETYPE = 30
WHERE CSR.SPECODE <> '' AND CSR.CYPHCODE <> ''
Mantık:
-
Çek/senet bordrosu (CSROLL) tarafındaki hareketleri gider gibi listeye alıyor.
-
Gider/Plas yine SPECODES’tan, bu sefer
SPECODETYPE=30. -
DEFcari ünvan (CC.DEFINITION_) olarak doldurulmuş. -
Burada tablonun
LG_011_07_CSROLLolması dikkat: Kaynak dönem farklı (muhtemelen sistemde CSROLL bu dönemde tutulmuş veya yıllar karışık).
SELECT CAST(TRR.IslemTarihi AS DATE) AS TARIH,
TRR.IstasyonAdi AS ACK,
TRR.Tutar AS TUTAR,
PRP.PLAS,
'YAKIT' AS GIDER,
MONTH(TRR.IslemTarihi) AS AY,
YEAR(TRR.IslemTarihi) AS YIL,
'KASA' AS TUR,
'' AS DEF
FROM dbo.TuketimRaporu AS TRR
LEFT JOIN dbo.PLAS_RAPOR_PLAKALAR AS PRP ON PRP.PLAKA = TRR.Plaka
WHERE PRP.PLAS IS NOT NULL
Mantık:
-
Logo dışı yakıt tüketim raporu tablosundan satırlar geliyor.
-
Plaka üzerinden
PLAS_RAPOR_PLAKALARile plasiyer bulunuyor. -
Gider tipi sabit:
YAKIT -
Plasiyer bulunamayan satırlar filtreleniyor (
PRP.PLAS IS NOT NULL).
SELECT LEFT(BNL.LINEEXP, CHARINDEX(' - ', BNL.LINEEXP)) AS ACK, TRNET, DATE_
FROM LG_011_08_BNFLINE AS BNL
WHERE BNL.TRCODE = 4 AND BNL.CANCELLED = 0 AND LINEEXP LIKE '%Turkcell%'
-----------------------------------------------------------------------------------
SELECT TTR.DATE_ AS TARIH,
CONCAT(MONTH(TTR.DATE_), '. Ay Turkcell Fatura Ödeme') AS ACK,
TTR.TRNET AS TUTAR,
PRP.PLAS,
'TELEKOM ÖDEME' AS GIDER,
MONTH(TTR.DATE_) AS AY,
YEAR(TTR.DATE_) AS YIL,
'BANKA' AS TUR,
'' AS DEF
FROM ( ... ) AS TTR
LEFT JOIN dbo.PLAS_RAPOR_PLAKALAR AS PRP ON PRP.TELEFON = TTR.ACK
WHERE PRP.PLAS IS NOT NULL
Mantık:
-
Banka satırlarından (
BNFLINE) “Turkcell” geçen ödemeleri çekiyor. -
LINEEXPiçinden' - 'ayracına kadar olan kısmı alıpACKyapıyor (burada amaç genelde “telefon numarası” gibi bir şey yakalamak). -
Bu
ACKdeğeriniPLAS_RAPOR_PLAKALAR.TELEFONile eşleştirip plasiyeri buluyor. -
Gider sabit:
TELEKOM ÖDEME -
Plasiyer bulunamayan satırları almıyor.
Burada da
' - 'geçmiyorsaCHARINDEX0 döner;LEFT(...,0)boş kalır ve eşleşmez.