USE [Ent_DY2018]
GO
/****** Object:  StoredProcedure [dbo].[sp_mb_XML_InvoiceLine_List_delphi]    Script Date: 30.04.2021 22:54:04 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_mb_XML_InvoiceLine_List_delphi]    
   /*
   
   2021 01 15 güncellendi. A.t*/
 @IslemNo nvarchar(30)    
 AS      
 SELECT    
 ROW_NUMBER() OVER (ORDER BY LST.StokKodu ) "SiraNo"  ,    
 LST.StokKodu,    
 LST.StokAdi,    
 LST.IskOran,  --LST.IskOran,    
 LST.Kdv,    
 LST.Birim,    
 LST.ISO_BIRIM,    
 LST.MUAFIYET,    
 LST.ToplamBirimFiyat,    
 SUM(LST.Miktar) Miktar,    
 SUM(LST.KdvsizSatirToplami) KdvsizSatirToplami,    
 SUM(LST.SatirIskontoToplami) SatirIskontoToplami,    
 SUM(LST.Isksuz_Satir_Toplami) Isksuz_Satir_Toplami,    
 SUM(LST.KdvToplami) KdvToplami,    
 SUM(LST.Alt_Iskonto_Toplami) Alt_Iskonto_Toplami,    
 SUM(LST.Tutar) Tutar,    
 SUM(LST.SonTutar) SonTutar,     
 LST.Iskonto_Aciklama,    
 LST.OTVOrani,    
 sum(LST.OTVsizSatirToplami) OTVsizSatirToplami,    
 sum(LST.OtvToplami) OtvToplami    
    
 FROM(    
SELECT     
     
DD.StokKodu,    
DD.StokAdi AS StokAdi,    
(FaturaMiktari) as Miktar,    
(SonTutar-DD.KdvTutari)* CASE WHEN TopTutar>0 THEN (DD.DovizTut/TopTutar) ELSE 0 END as KdvsizSatirToplami,    
(SonTutar-DD.OTVTutari)* CASE WHEN TopTutar>0 THEN (DD.DovizTut/TopTutar) ELSE 0 END as OTVsizSatirToplami,    
DD.Iskonto1 AS IskOran,    
((FaturaMiktari* BirimFiyat*BirimMiktar) -DD.Tutar )* CASE WHEN TopTutar>0 THEN (DD.DovizTut/TopTutar) ELSE 0 END as SatirIskontoToplami,    
(FaturaMiktari* BirimFiyat*BirimMiktar)* CASE WHEN TopTutar>0 THEN (DD.DovizTut/TopTutar) ELSE 0 END  as Isksuz_Satir_Toplami,--tutar    
 DD.Kdv,    
 DD.OTVOrani,    
(DD.KdvTutari)* CASE WHEN TopTutar>0 THEN (DD.DovizTut/TopTutar) ELSE 0 END as KdvToplami,      
(DD.OTVTutari)* CASE WHEN TopTutar>0 THEN (DD.DovizTut/TopTutar) ELSE 0 END as OtvToplami,      
(Birim) as Birim,    
(DD.Tutar -(SonTutar-DD.KdvTutari))* CASE WHEN TopTutar>0 THEN (DD.DovizTut/TopTutar) ELSE 0 END as Alt_Iskonto_Toplami,     
(DD.Tutar)* CASE WHEN TopTutar>0 THEN (DD.DovizTut/TopTutar) ELSE 0 END as Tutar,    
(SonTutar)* CASE WHEN TopTutar>0 THEN (DD.DovizTut/TopTutar) ELSE 0 END as SonTutar,    
DD.BirimFiyat*DD.BirimMiktar* CASE WHEN TopTutar>0 THEN (DD.DovizTut/TopTutar) ELSE 0 END AS ToplamBirimFiyat,--Fiyat    
CASE WHEN ISNULL (DD.Kdv,0)=0 AND DB.OzelKod1='31' AND DB.YazarKasaFisNo<>2 THEN    '351;Vergiden muaf.'  
WHEN  ISNULL (DD.Kdv,0)=0 AND DB.OzelKod1='31' AND DB.YazarKasaFisNo=2 THEN   '11/1-a Mal ihracatı' 
when SUBSTRING(ISNULL(DB.OzelKod1,'00'), 1, 1)=3 and ISNULL (DD.Kdv,0)=0 and DB.EF_ISTISNA=0  then '701;11/1-c md. Kapsamındaki İhraç Kayıtlı Satış'    
when DD.TopTutar=0 and DB.EF_ISTISNA=0 then '351;Kısmibedelsiz' 
 WHEN ISNULL (DD.Kdv,0)=0 AND (select MuafiyetKodu+';'+MuafiyetAciklamasi from StokVergiMuafiyetleri where StokKodu=DD.StokKodu and MuafiyetKodu=DB.EF_ISTISNA and MuafiyetKodu<>'000')=';'  THEN   
    '351;Vergiden muaf.' 
	WHEN ISNULL (DD.Kdv,0)=0 AND (select MuafiyetKodu+';'+MuafiyetAciklamasi from StokVergiMuafiyetleri where StokKodu=DD.StokKodu and MuafiyetKodu=DB.EF_ISTISNA and MuafiyetKodu<>'000')<>';'  THEN 
  (select MuafiyetKodu+';'+MuafiyetAciklamasi from StokVergiMuafiyetleri where StokKodu=DD.StokKodu and MuafiyetKodu=DB.EF_ISTISNA) ELSE ''    END  AS  "MUAFIYET",    
 ( SELECT IsoBirimKodu FROM BIRIM b where b.BirimAdi=DD.Birim  )   AS ISO_BIRIM,    
 CASE WHEN DD.Iskonto1 >0 then '%'+CAST(DD.Iskonto1 as varchar(10))    end +    
 CASE WHEN DD.Iskonto2 >0 then  '%'+CAST(DD.Iskonto2 as varchar(10))  else '' end+    
 CASE WHEN DD.Iskonto3 >0 then  '%'+CAST(DD.Iskonto3 as varchar(10))  else '' end+    
 CASE WHEN DD.Iskonto4 >0 then  '%'+CAST(DD.Iskonto4 as varchar(10))  else '' end as "Iskonto_Aciklama"    
    
from STOKHAR DD     
JOIN STOKHARDETBAG DB ON DD.IslemNo=DB.IslemNo    
 where (DD.IslemTuru ='Satış' or DD.IslemTuru ='Alış İade'  )    
AND @IslemNo in (DD.IslemNo, DD.IslemNo3 )    
--AND DD.Tutar >0     
)LST    
GROUP BY     
LST.StokKodu,    
LST.StokAdi,    
LST.IskOran,    
LST.Kdv,    
LST.Birim,    
LST.ISO_BIRIM,    
LST.MUAFIYET,    
LST.ToplamBirimFiyat,    
Iskonto_Aciklama,    
LST.OTVOrani;