create or alter procedure sp_GunlukDurumRaporu(@Tarih1 DATETIME,@Tarih2 DATETIME,@Tip nvarchar(1))
AS
--   sp_GunlukDurumRaporu '2024-04-15 12:00AM','2024-04-29 12:00AM','T'
BEGIN
    DECLARE @SQL nvarchar(max);
	DECLARE @Fiyat nvarchar(30);
	select @Fiyat = Deger from  Parametre where Param = 'Günlük Kar Raporu Kullanılacak Fiyat';

	IF (@Fiyat = '') OR (@Fiyat IS NULL)
	BEGIN
		SET @Fiyat = 'StokKartiFiyat1';
	END;

	IF @Tip = 'T'   ---'Fatura Toplami' Turu,IslemTuru,  '' NakitVisa, 
	BEGIN
	SET @SQL=' select  1 No , ''Fatura Toplami'' Turu, CASE WHEN IslemTuru = ''Prk.Satış'' THEN ''Veresiye Prk.Satış'' ELSE IslemTuru END IslemTuru  ,'''' NakitVisa,      
					   sum(Miktar*BirimFiyat*(100+Kdv)/100) IskontosuzTutar, 
					   sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) IskTop,
					   sum(Miktar*BirimFiyat*(100+Kdv)/100) + sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) Tutar, 
					   SUM((sh.SonTutar + ISNULL(sh.SatMasrafTutari,0)) - (sh.Miktar * sf.'+@Fiyat+')) AS Karlilik
					  from STOKHAR  sh
				LEFT JOIN StokFiyatlari sf on sf.StokNo = sh.StokNo
				LEFT JOIN KASA K ON K.ISLEMNO=sh.IslemNo
				where FisTuru=''F'' and IslemTuru in (''Satış'' ,''Alış'' ,''Alış İade'' ,''Satış İade'',''Prk.Satış'') 
				AND  not exists( Select 1 from KASA K where K.ISLEMNO = sh.IslemNo)	
				AND  sh.FaturaTarihi >= ''@Tarih1'' and sh.FaturaTarihi <= ''@Tarih2''
				group by IslemTuru
				UNION ALL	
				SELECT 2,IslemTuru, k.BAACIKLA,NakitVisa,      
						sum(Miktar*BirimFiyat*(100+Kdv)/100) IskontosuzTutar, 
						sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) IskTop,
						sum(Miktar*BirimFiyat*(100+Kdv)/100) + sum(SonTutar-(Miktar*BirimFiyat*(100+Kdv)/100)) Tutar, 
						SUM((sh.SonTutar + ISNULL(sh.SatMasrafTutari,0)) - (sh.Miktar * sf.'+@Fiyat+')) AS Karlilik
				from STOKHAR sh 
				left JOIN KASA k ON k.ISLEMNO = sh.IslemNo
				LEFT JOIN StokFiyatlari sf on sf.StokNo = sh.StokNo
				WHERE  FisTuru=''F'' AND (sh.IslemTuru = ''Prk.Satış'') AND k.BAACIKLA IN (''KK.Tahsilat'',''Tahsilat'')
				 AND  sh.FaturaTarihi >= ''@Tarih1'' and sh.FaturaTarihi <= ''@Tarih2''
				GROUP BY sh.IslemTuru,k.BAACIKLA,NakitVisa 
				UNION ALL 
				select 3,''Diğer Kasa Hareketleri'',BAACIKLA,'''' , SUM(BORC) Tutar,0,0,''''from KASA k where BAACIKLA IN (''KK.Tahsilat'',''Tahsilat'') 
				and not exists (select 1 from STOKHARDETBAG db where db.IslemNo = k.ISLEMNO)
				and TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'' 	
				group by BAACIKLA
				UNION ALL 
				select 4,''Faturalı Kasa Hareketleri'',BAACIKLA,'''', SUM(BORC) Tutar,0,0,''''  from KASA k where BAACIKLA IN (''KK.Tahsilat'',''Tahsilat'') 
				and exists (select 1 from STOKHARDETBAG db where db.IslemNo = k.ISLEMNO)
				and TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'' 	
				group by BAACIKLA
				UNION ALL
				SELECT 5,''Çek -Senet Girişleri'',BAACIKLA,'''',SUM(dbo.ACARI.ALACAK) AS TUTAR,0,0,''''  FROM dbo.ACARI 
				WHERE BAACIKLA in(''Çek Girişi'',''Senet Girişi'') and  TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'' 	
				group by BAACIKLA	
				UNION ALL
				SELECT 6,''Ödeme Islemleri'',BAACIKLA,'''',SUM(dbo.ACARI.BORC) AS TUTAR,0,0,'''' FROM dbo.ACARI 
				WHERE BAACIKLA = ''Ödeme'' and  TARIH >= ''@Tarih1'' and TARIH <= ''@Tarih2'' 	
				group by BAACIKLA order by 1'; 
    END;

	SET @sql =  REPLACE(@Sql,'@Tarih1',@Tarih1)
	SET @sql =  REPLACE(@Sql,'@Tarih2',@Tarih2)		
--	PRINT @SQL
	EXEC sp_executesql  @sql;
END;
GO