;WITH S0 AS (
SELECT
INV.FICHENO AS FaturaNo,
CAST(INV.DATE_ AS date) AS FaturaTarihi,
C.CODE AS CariKodu,
C.DEFINITION_ AS CariAdi,
I.CODE AS MalzemeKodu,
I.NAME AS MalzemeAdi,
S.LOGICALREF AS StLineRef,
S.AMOUNT AS Miktar,
S.PRICE AS BirimFiyat,
-- Satırdaki indirim oran kolonlarını kendi sisteminize göre uyarlayın:
COALESCE(NULLIF(S.DISCPER ,0),0) AS ind1_oran, -- %1
COALESCE(NULLIF(S.DISCPER2,0),0) AS ind2_oran, -- %2
COALESCE(NULLIF(S.DISCPER3,0),0) AS ind3_oran -- %3
FROM LG_222_01_STLINE S
JOIN LG_222_01_INVOICE INV ON INV.LOGICALREF = S.INVOICEREF
JOIN LG_222_ITEMS I ON I.LOGICALREF = S.STOCKREF
JOIN LG_222_CLCARD C ON C.LOGICALREF = INV.CLIENTREF
WHERE S.LINETYPE = 0 -- Malzeme satırı
),
K AS (
SELECT *,
CAST(Miktar * BirimFiyat AS decimal(18,4)) AS TutarBrut
FROM S0
),
H AS (
SELECT
*,
ROUND(TutarBrut * ind1_oran/100.0, 2) AS ind1_tutar,
ROUND( (TutarBrut - ROUND(TutarBrut * ind1_oran/100.0, 2))
* ind2_oran/100.0, 2) AS ind2_tutar,
ROUND( (TutarBrut
- ROUND(TutarBrut * ind1_oran/100.0, 2)
- ROUND( (TutarBrut - ROUND(TutarBrut * ind1_oran/100.0, 2)) * ind2_oran/100.0, 2)
) * ind3_oran/100.0, 2) AS ind3_tutar
FROM K
)
SELECT
FaturaNo, FaturaTarihi, CariKodu, CariAdi, MalzemeKodu, MalzemeAdi,
Miktar, BirimFiyat,
TutarBrut AS Tutar,
ind1_oran, ind1_tutar,
ind2_oran, ind2_tutar,
ind3_oran, ind3_tutar,
ROUND(ind1_tutar + ind2_tutar + ind3_tutar, 2) AS ToplamIskonto,
ROUND(TutarBrut - (ind1_tutar + ind2_tutar + ind3_tutar), 2) AS NetTutar
FROM H
ORDER BY FaturaTarihi, FaturaNo, MalzemeKodu;