-- =============================================
-- Author:		Code by BAU
-- Create date: 03.07.2019
-- Description:	
-- =============================================
create FUNCTION dbo._Brk_Fnc_Mutabakat_CariHareket (@Tarih datetime, @Sifirlar int, @KacAy int, @SUBEKODU int, @MERKEZSUBEOLARAKCALIS int, @AltCarileriGrupla int)
RETURNS TABLE 
AS
RETURN 
(

SELECT
	dbo.TBLCAHAR.CARI_KOD AS CariKodu
	,dbo.TRK(cari.CARI_ISIM) AS CariAdi
	,SUM(dbo.TBLCAHAR.BORC) AS Borc
	,SUM(dbo.TBLCAHAR.ALACAK) AS Alacak
	,CASE
		WHEN (SUM(BORC) - SUM(ALACAK)) > 0 THEN SUM(BORC - ALACAK)
		ELSE 0
	END AS BorcBakiye
	,CASE
		WHEN (SUM(ALACAK) - SUM(BORC)) > 0 THEN SUM(ALACAK - BORC)
		ELSE 0
	END AS AlacakBakiye
	,CASE
		WHEN (SUM(BORC) - SUM(ALACAK)) > 0 THEN SUM(BORC - ALACAK)
		ELSE 0
	END - CASE
		WHEN (SUM(ALACAK) - SUM(BORC)) > 0 THEN SUM(ALACAK - BORC)
		ELSE 0
	END AS Bakiye
	,dbo.trk(cari.CARI_IL) as CariIl
	,dbo.trk(cari.CARI_ILCE) as CariIlce
	,dbo.TRK(cari.CARI_ADRES) AS CariAdres
	,dbo.trk(cari.VERGI_DAIRESI) AS VergiDairesi
	,cari.VERGI_NUMARASI AS VergiNo
	,dbo.TRK(cari.GRUP_KODU) AS GrupKodu
	,dbo.TRK(cari.RAPOR_KODU1) AS Kod1
	,dbo.TRK(cari.RAPOR_KODU2) AS Kod2
	,dbo.TRK(cari.RAPOR_KODU3) AS Kod3
	,dbo.TRK(cari.RAPOR_KODU4) AS Kod4
	,dbo.TRK(cari.RAPOR_KODU5) AS Kod5
	,dbo.TRK(cari.CARI_TEL) AS Telefon
	,dbo.TRK(cari.FAX) AS Faks
	,cari.CARI_TIP AS CariTipi
	,MAX(dbo.TBLCAHAR.TARIH) AS SonTarih
	,cariek.S_YEDEK2
FROM dbo.TBLCAHAR WITH(NOLOCK)
LEFT OUTER JOIN dbo.TBLCASABIT cari WITH(NOLOCK)  ON dbo.TBLCAHAR.CARI_KOD = cari.CARI_KOD
LEFT JOIN dbo.TBLCASABITEK cariek WITH(NOLOCK) on cariek.CARI_KOD=cari.CARI_KOD 
WHERE TBLCAHAR.TARIH < @Tarih 
--AND TBLCAHAR.SUBE_KODU = @SUBEKODU
AND (CASE
         WHEN @MERKEZSUBEOLARAKCALIS = 1 AND (SELECT COUNT(*) FROM dbo.TBLSUBELER WHERE SUBE_KODU <> -1 and SUBE_KODU <> 32767 and MERKEZMI='E' and SUBE_KODU=@SUBEKODU) > 0 THEN
             'TRUE'
         ELSE
          (CASE
            WHEN TBLCAHAR.SUBE_KODU = @SUBEKODU THEN
             'TRUE'
            ELSE
             'FALSE'
          END)
       END) = 'TRUE' 

AND ( CASE WHEN @AltCarileriGrupla=1 THEN 

CASE WHEN ISNULL(cariek.S_YEDEK2,'NULL')='NULL'  THEN 'TRUE' ELSE 'FALSE' END 

ELSE

'TRUE'

END
)= 'TRUE'
GROUP BY	dbo.TBLCAHAR.CARI_KOD
			,cari.CARI_ISIM
			,cari.CARI_IL
			,cari.CARI_ILCE
			,cari.CARI_ADRES
			,cari.VERGI_DAIRESI
			,cari.VERGI_NUMARASI
			,cari.GRUP_KODU
			,cari.RAPOR_KODU1
			,cari.RAPOR_KODU2
			,cari.RAPOR_KODU3
			,cari.RAPOR_KODU4
			,cari.RAPOR_KODU5
			,cari.CARI_TEL
			,cari.FAX
			,cari.CARI_TIP
			,cariek.S_YEDEK2

--IF (@Sifirlar = 0)
--HAVING (CONVERT(money, CASE WHEN (SUM(BORC) - SUM(ALACAK)) > 0 THEN SUM(BORC - ALACAK) ELSE 0 END - CASE WHEN (SUM(ALACAK) - SUM(BORC)) > 0 THEN SUM(ALACAK - BORC) ELSE 0 END) <> 0) 	
--IF (@Sifirlar = 1)
--YOK
--IF (@Sifirlar = 2)
--HAVING MONTH(MAX(dbo.TBLCAHAR.TARIH)) > (CASE WHEN MONTH(DATEADD(month, -@KacAy , @Tarih))=12 THEN 0 ELSE MONTH(DATEADD(month, -@KacAy , @Tarih)) END)



HAVING 
--@0
CASE WHEN @Sifirlar=0 THEN 
	CASE WHEN (CONVERT(money, CASE WHEN (SUM(BORC) - SUM(ALACAK)) > 0 THEN SUM(BORC - ALACAK) ELSE 0 END - CASE WHEN (SUM(ALACAK) - SUM(BORC)) > 0 THEN SUM(ALACAK - BORC) ELSE 0 END) <> 0) THEN 1 ELSE 0 END

ELSE
	CASE WHEN @Sifirlar=2 THEN 
		CASE WHEN MONTH(MAX(dbo.TBLCAHAR.TARIH)) > (CASE WHEN MONTH(DATEADD(month, -@KacAy , @Tarih))=12 THEN 0 ELSE MONTH(DATEADD(month, -@KacAy , @Tarih)) END) THEN 1 ELSE 0 END

	ELSE 
		CASE WHEN @Sifirlar=1 THEN  1 ELSE 0 END

	END


END=1
--CASE WHEN (CONVERT(money, CASE WHEN (SUM(BORC) - SUM(ALACAK)) > 0 THEN SUM(BORC - ALACAK) ELSE 0 END - CASE WHEN (SUM(ALACAK) - SUM(BORC)) > 0 THEN SUM(ALACAK - BORC) ELSE 0 END) <> 0) THEN 1 ELSE 0 END
--


		 


)
