USE [MikroDB_V16_HILAL2019] GO /****** Object: StoredProcedure [dbo].[sp_Mbt_Cari_Bakiye_Yaslandirma] Script Date: 26.01.2021 13:56:46 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[sp_Mbt_Cari_Bakiye_Yaslandirma] ( @CariIlkKod NVARCHAR(25)='', @CariSonKod NVARCHAR(25)='', @CariKodYapisi NVARCHAR(25)='', @RaporTarihi DATETIME=NULL, @HangiHesaplar TINYINT=0 ) AS BEGIN IF @RaporTarihi IS NULL SET @RaporTarihi=dbo.fn_DatePart(GETDATE()) DECLARE @CariKodu NVARCHAR(25), @TmpBakiye FLOAT, @Id UNIQUEIDENTIFIER, @KayitTutar FLOAT, @KapanmamisTutar FLOAT, @Vade DATETIME DECLARE @BakiyeyeKonuKayitlar TABLE ( Id UNIQUEIDENTIFIER, CariKodu NVARCHAR(25), KapanmamisTutar FLOAT, GecikenGun INT ) SELECT TOP 100 PERCENT cha_Guid, cha_kod, cha_tarihi, CHA_VADE_TARIHI, CASE WHEN CHA_CARI_BORC_ALACAK_TIP=0 THEN 1.0 ELSE -1.0 END AS MEBLAG_SIGN, CHA_CARI_MEBLAG_ANA AS TUTAR, CAST(0.0 AS FLOAT) CHA_KAPANAN_MEBLAG INTO #CariHareketler FROM dbo.CARI_HESAP_HAREKETLERI_VIEW_WITH_INDEX_02 WITH (NOLOCK) LEFT OUTER JOIN CARI_HESAPLAR WITH(NOLOCK) ON (cari_kod=cha_kod) WHERE (cha_cari_cins=0) AND (cari_kod >= @CariIlkKod OR @CariIlkKod= N'') AND (cari_kod <= @CariSonKod OR @CariSonKod = N'') AND (cari_kod like @CariKodYapisi+'%') AND (cha_tarihi<=@RaporTarihi) ORDER BY cha_kod,cha_grupno DECLARE CariCursor CURSOR LOCAL READ_ONLY FAST_FORWARD FOR SELECT DISTINCT cha_kod FROM #CariHareketler ORDER BY cha_kod OPEN CariCursor FETCH NEXT FROM CariCursor INTO @CariKodu WHILE @@FETCH_STATUS = 0 BEGIN SELECT @TmpBakiye=SUM(TUTAR*MEBLAG_SIGN) FROM #CariHareketler WHERE cha_kod=@CariKodu IF ((@HangiHesaplar=0 AND @TmpBakiye>0) OR (@HangiHesaplar=1 AND @TmpBakiye<0) OR (@HangiHesaplar=2 AND @TmpBakiye<>0)) BEGIN DECLARE HareketCursor CURSOR LOCAL READ_ONLY FAST_FORWARD FOR SELECT TOP 100 PERCENT cha_Guid, (TUTAR-CHA_KAPANAN_MEBLAG)*MEBLAG_SIGN, CHA_VADE_TARIHI FROM #CariHareketler WHERE (cha_kod=@CariKodu) AND ((@TmpBakiye>0 AND MEBLAG_SIGN>0) OR (@TmpBakiye<0 AND MEBLAG_SIGN<0)) AND (TUTAR>CHA_KAPANAN_MEBLAG) ORDER BY CHA_VADE_TARIHI DESC,cha_tarihi DESC OPEN HareketCursor FETCH NEXT FROM HareketCursor INTO @Id, @KayitTutar, @Vade WHILE @@FETCH_STATUS = 0 AND ABS(@TmpBakiye)>1 BEGIN IF @TmpBakiye>0 SET @KapanmamisTutar = dbo.fn_MIN(@TmpBakiye,@KayitTutar) ELSE SET @KapanmamisTutar = dbo.fn_MAX(@TmpBakiye,@KayitTutar) SET @TmpBakiye = @TmpBakiye - @KapanmamisTutar INSERT INTO @BakiyeyeKonuKayitlar VALUES (@Id,@CariKodu,@KapanmamisTutar,dbo.fn_gunfarkibul(@RaporTarihi,@Vade)) FETCH NEXT FROM HareketCursor INTO @Id, @KayitTutar, @Vade END CLOSE HareketCursor DEALLOCATE HareketCursor END FETCH NEXT FROM CariCursor INTO @CariKodu END CLOSE CariCursor DEALLOCATE CariCursor SELECT TOP 100 PERCENT cari_kod AS [CARİ KODU], cari_unvan1 AS [CARİ İSMİ], SUM(CASE WHEN GecikenGun<=0 THEN KapanmamisTutar ELSE 0.0 END) AS [VADESİ GEÇEN BAKİYE\T], SUM(CASE WHEN GecikenGun>0 THEN KapanmamisTutar ELSE 0.0 END) AS [VADESİ GEÇMEMİŞ BAKİYE\T], SUM(KapanmamisTutar) AS [TOPLAM BAKİYE\T], CASE WHEN SUM(KapanmamisTutar)>0 THEN 'Borç' ELSE 'Alacak' END AS [BAKİYE TİPİ], SUM(CASE WHEN GecikenGun BETWEEN -30 AND 0 THEN KapanmamisTutar ELSE 0.0 END) AS [30 GÜN\T], SUM(CASE WHEN GecikenGun BETWEEN -60 AND -31 THEN KapanmamisTutar ELSE 0.0 END) AS [60 GÜN\T], SUM(CASE WHEN GecikenGun BETWEEN -90 AND -61 THEN KapanmamisTutar ELSE 0.0 END) AS [90 GÜN\T], SUM(CASE WHEN GecikenGun BETWEEN -120 AND -91 THEN KapanmamisTutar ELSE 0.0 END) AS [120 GÜN\T], SUM(CASE WHEN GecikenGun <= -121 THEN KapanmamisTutar ELSE 0.0 END) AS [+120 GÜN\T] FROM @BakiyeyeKonuKayitlar LEFT OUTER JOIN CARI_HESAPLAR WITH (NOLOCK) ON (cari_kod=CariKodu) GROUP BY cari_kod, cari_unvan1 HAVING ROUND(SUM(KapanmamisTutar),2)<>0 ORDER BY cari_kod, cari_unvan1 END GO /****** Object: StoredProcedure [dbo].[sp_Mbt_Cari_Bakiye_Yaslandirma_Raporu] Script Date: 26.01.2021 13:56:46 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[sp_Mbt_Cari_Bakiye_Yaslandirma_Raporu] ( @CariIlkKod NVARCHAR(25)='', @PlasiyerKodu NVARCHAR(25)='', @RaporTarihi DATETIME=NULL ) AS BEGIN IF @RaporTarihi IS NULL SET @RaporTarihi=dbo.fn_DatePart(GETDATE()) DECLARE @HangiHesaplar TINYINT set @HangiHesaplar=2 DECLARE @CariKodu NVARCHAR(25), @TmpBakiye FLOAT, @Id UNIQUEIDENTIFIER, @KayitTutar FLOAT, @KapanmamisTutar FLOAT, @Vade DATETIME, @BelgeNo Nvarchar(50) DECLARE @BakiyeyeKonuKayitlar TABLE ( Id UNIQUEIDENTIFIER, CariKodu NVARCHAR(25), KapanmamisTutar FLOAT, GecikenGun INT, FaturaVadesi DATETIME, FaturaNumarasi Nvarchar(50) ) SELECT TOP 100 PERCENT cha_Guid, cha_kod, cha_tarihi, CHA_VADE_TARIHI, BelgeNo=(cha_evrakno_seri+ '-'+ CAST(cha_evrakno_sira AS NVARCHAR)), CASE WHEN CHA_CARI_BORC_ALACAK_TIP=0 THEN 1.0 ELSE -1.0 END AS MEBLAG_SIGN, CHA_CARI_MEBLAG_ANA AS TUTAR, CAST(0.0 AS FLOAT) CHA_KAPANAN_MEBLAG INTO #CariHareketler FROM dbo.CARI_HESAP_HAREKETLERI_VIEW_WITH_INDEX_02 WITH (NOLOCK) LEFT OUTER JOIN CARI_HESAPLAR WITH(NOLOCK) ON (cari_kod=cha_kod) WHERE (cha_cari_cins=0) AND (cari_kod = @CariIlkKod) AND --(cari_temsilci_kodu = @PlasiyerKodu) AND (cha_tarihi<=@RaporTarihi) ORDER BY cha_kod,cha_grupno DECLARE CariCursor CURSOR LOCAL READ_ONLY FAST_FORWARD FOR SELECT DISTINCT cha_kod FROM #CariHareketler ORDER BY cha_kod OPEN CariCursor FETCH NEXT FROM CariCursor INTO @CariKodu WHILE @@FETCH_STATUS = 0 BEGIN SELECT @TmpBakiye=SUM(TUTAR*MEBLAG_SIGN) FROM #CariHareketler WHERE cha_kod=@CariKodu IF ((@HangiHesaplar=0 AND @TmpBakiye>0) OR (@HangiHesaplar=1 AND @TmpBakiye<0) OR (@HangiHesaplar=2 AND @TmpBakiye<>0)) BEGIN DECLARE HareketCursor CURSOR LOCAL READ_ONLY FAST_FORWARD FOR SELECT TOP 100 PERCENT cha_Guid, (TUTAR-CHA_KAPANAN_MEBLAG)*MEBLAG_SIGN, CHA_VADE_TARIHI,BelgeNo FROM #CariHareketler WHERE (cha_kod=@CariKodu) AND ((@TmpBakiye>0 AND MEBLAG_SIGN>0) OR (@TmpBakiye<0 AND MEBLAG_SIGN<0)) AND (TUTAR>CHA_KAPANAN_MEBLAG) ORDER BY CHA_VADE_TARIHI DESC,cha_tarihi DESC OPEN HareketCursor FETCH NEXT FROM HareketCursor INTO @Id, @KayitTutar, @Vade,@BelgeNo WHILE @@FETCH_STATUS = 0 AND ABS(@TmpBakiye)>1 BEGIN IF @TmpBakiye>0 SET @KapanmamisTutar = dbo.fn_MIN(@TmpBakiye,@KayitTutar) ELSE SET @KapanmamisTutar = dbo.fn_MAX(@TmpBakiye,@KayitTutar) SET @TmpBakiye = @TmpBakiye - @KapanmamisTutar INSERT INTO @BakiyeyeKonuKayitlar VALUES (@Id,@CariKodu,@KapanmamisTutar,dbo.fn_gunfarkibul(@RaporTarihi,@Vade),@Vade,@BelgeNo) FETCH NEXT FROM HareketCursor INTO @Id, @KayitTutar, @Vade,@BelgeNo END CLOSE HareketCursor DEALLOCATE HareketCursor END FETCH NEXT FROM CariCursor INTO @CariKodu END CLOSE CariCursor DEALLOCATE CariCursor SELECT *, KalanRisk=(T1.TanimliRiskTutari-T1.BakiyeToplami), RiskYuzdesi =(CASE When T1.TanimliRiskTutari=0 Then 0 else 100*(T1.BakiyeToplami/T1.TanimliRiskTutari) end) FROM ( SELECT TOP 100 PERCENT Oid=Id, FaturaVadesi, FaturaNumarasi, GecikenGun, MusteriKodu=cari_kod, Unvan=cari_unvan1, VadesiGecenBakiye=SUM(CASE WHEN GecikenGun<=0 THEN KapanmamisTutar ELSE 0.0 END), VadesiGecmemisBakiye=SUM(CASE WHEN GecikenGun>0 THEN KapanmamisTutar ELSE 0.0 END), Bakiye=SUM(KapanmamisTutar), BakiyeTipi=(CASE WHEN SUM(KapanmamisTutar)>0 THEN 'Borç' ELSE 'Alacak' END), Gun30=SUM(CASE WHEN GecikenGun BETWEEN -30 AND 0 THEN KapanmamisTutar ELSE 0.0 END), Gun60=SUM(CASE WHEN GecikenGun BETWEEN -60 AND -31 THEN KapanmamisTutar ELSE 0.0 END), Gun90=SUM(CASE WHEN GecikenGun BETWEEN -90 AND -61 THEN KapanmamisTutar ELSE 0.0 END), Gun120=SUM(CASE WHEN GecikenGun BETWEEN -120 AND -91 THEN KapanmamisTutar ELSE 0.0 END), Gun120Ustu=SUM(CASE WHEN GecikenGun <= -121 THEN KapanmamisTutar ELSE 0.0 END), OdemePlani=(select OP.odp_adi from ODEME_PLANLARI OP WHERE OP.odp_no= cari_odemeplan_no), OdemeTipi=(case when cari_cariodemetercihi=0 Then 'Nakit' when cari_cariodemetercihi=1 Then 'Müşteri Çeki' when cari_cariodemetercihi=2 Then 'Firma Çeki' when cari_cariodemetercihi=3 Then 'Müşteri Senedi' when cari_cariodemetercihi=4 Then 'Firma Senedi' when cari_cariodemetercihi=5 Then 'Havale' when cari_cariodemetercihi=6 Then 'Ödeme Emri' when cari_cariodemetercihi=7 Then 'Doğ.Havale' else 'TANIMSIZ' end ), Alacak=ISNULL((SELECT sum(CASE WHEN CH.cha_tip=1 then CH.cha_meblag else 0 end) from CARI_HESAP_HAREKETLERI CH WHERE CH.cha_kod=cari_kod),0), Borc=ISNULL((SELECT sum(CASE WHEN CH.cha_tip=0 then CH.cha_meblag else 0 end) from CARI_HESAP_HAREKETLERI CH WHERE CH.cha_kod=cari_kod),0), BakiyeToplami=ISNULL((SELECT sum(CASE WHEN CH.cha_tip=1 then -1*CH.cha_meblag else CH.cha_meblag end) from CARI_HESAP_HAREKETLERI CH WHERE CH.cha_kod=cari_kod),0), Il=(SELECT top 1 adr_il FROM CARI_HESAP_ADRESLERI MA WHERE MA.adr_cari_kod=cari_kod and MA.adr_adres_no=1), PlasiyerKodu=cari_temsilci_kodu, PlasiyerAdi=ISNULL((SELECT (cari_per_adi + ' ' + cari_per_soyadi) from CARI_PERSONEL_TANIMLARI P WHERE P.cari_per_kod=cari_temsilci_kodu),'TANIMSIZ'), TanimliRiskTutari=(ISNULL((SELECT SUM(CHT.ct_tutari) FROM CARI_HESAP_TEMINATLARI CHT WHERE CHT.ct_carikodu=cari_kod AND CHT.ct_vade>=GETDATE()),0)), SonOdemeCinsi=(SELECT TOP 1 [dbo].[fn_CariHarCins](cha_cinsi) from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ), SonOdemeTarihi=(SELECT TOP 1 CH1.cha_tarihi from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ), SonFaturaTutari=(SELECT TOP 1 CH1.cha_meblag from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ), SonOdemeninVadesi=CONVERT (datetime,convert(char(8),(SELECT TOP 1 CH1.cha_vade from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ))), SonSiparisTarihi=(SELECT TOP 1 sip_tarih FROM SIPARISLER WHERE sip_musteri_kod=cari_kod AND sip_tip=0 order by sip_tarih desc), Not1=(select Not1 From MusteriTahsilatRaporu Where FaturaGuid=Id), Not2=(select Not2 From MusteriTahsilatRaporu Where FaturaGuid=Id) FROM @BakiyeyeKonuKayitlar LEFT OUTER JOIN CARI_HESAPLAR WITH (NOLOCK) ON (cari_kod=CariKodu) GROUP BY cari_kod, cari_unvan1,cari_guid,cari_odemeplan_no,cari_cariodemetercihi,cari_temsilci_kodu,GecikenGun,FaturaVadesi,FaturaNumarasi,Id --HAVING ROUND(SUM(KapanmamisTutar),2)<>0 --Kapanmamis olanlarda Gorunsun ORDER BY cari_kod, cari_unvan1 ) T1 WHERE -1*T1.GecikenGun>=50 END GO /****** Object: StoredProcedure [dbo].[sp_Mbt_Cari_Bakiye_Yaslandirma_Raporu_TumCariler] Script Date: 26.01.2021 13:56:46 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[sp_Mbt_Cari_Bakiye_Yaslandirma_Raporu_TumCariler] ( @CariIlkKod NVARCHAR(25)='', @CariSonKod NVARCHAR(25)='', @CariKodYapisi NVARCHAR(25)='', @RaporTarihi DATETIME=NULL, @HangiHesaplar TINYINT=0 ) AS BEGIN IF @RaporTarihi IS NULL SET @RaporTarihi=dbo.fn_DatePart(GETDATE()) DECLARE @CariKodu NVARCHAR(25), @TmpBakiye FLOAT, @Id UNIQUEIDENTIFIER, @KayitTutar FLOAT, @KapanmamisTutar FLOAT, @Vade DATETIME, @BelgeNo Nvarchar(50) DECLARE @BakiyeyeKonuKayitlar TABLE ( Id UNIQUEIDENTIFIER, CariKodu NVARCHAR(25), KapanmamisTutar FLOAT, GecikenGun INT, FaturaVadesi DATETIME, FaturaNumarasi Nvarchar(50) ) SELECT TOP 100 PERCENT cha_Guid, cha_kod, cha_tarihi, CHA_VADE_TARIHI=(cha_tarihi+50), BelgeNo=(cha_evrakno_seri+ '-'+ CAST(cha_evrakno_sira AS NVARCHAR)), CASE WHEN CHA_CARI_BORC_ALACAK_TIP=0 THEN 1.0 ELSE -1.0 END AS MEBLAG_SIGN, CHA_CARI_MEBLAG_ANA AS TUTAR, CAST(0.0 AS FLOAT) CHA_KAPANAN_MEBLAG INTO #CariHareketler FROM dbo.CARI_HESAP_HAREKETLERI_VIEW_WITH_INDEX_02 WITH (NOLOCK) LEFT OUTER JOIN CARI_HESAPLAR WITH(NOLOCK) ON (cari_kod=cha_kod) WHERE (cha_cari_cins=0) AND (cari_kod >= @CariIlkKod OR @CariIlkKod= N'') AND (cari_kod <= @CariSonKod OR @CariSonKod = N'') AND (cari_kod like '%' + @CariKodYapisi+'%') --and (cha_tarihi+50)>=@RaporTarihi ORDER BY cha_kod,cha_grupno DECLARE CariCursor CURSOR LOCAL READ_ONLY FAST_FORWARD FOR SELECT DISTINCT cha_kod FROM #CariHareketler ORDER BY cha_kod OPEN CariCursor FETCH NEXT FROM CariCursor INTO @CariKodu WHILE @@FETCH_STATUS = 0 BEGIN SELECT @TmpBakiye=SUM(TUTAR*MEBLAG_SIGN) FROM #CariHareketler WHERE cha_kod=@CariKodu IF ((@HangiHesaplar=0 AND @TmpBakiye>0) OR (@HangiHesaplar=1 AND @TmpBakiye<0) OR (@HangiHesaplar=2 AND @TmpBakiye<>0)) BEGIN DECLARE HareketCursor CURSOR LOCAL READ_ONLY FAST_FORWARD FOR SELECT TOP 100 PERCENT cha_Guid, (TUTAR-CHA_KAPANAN_MEBLAG)*MEBLAG_SIGN, CHA_VADE_TARIHI=cha_tarihi+50,BelgeNo FROM #CariHareketler WHERE (cha_kod=@CariKodu) AND ((@TmpBakiye>0 AND MEBLAG_SIGN>0) OR (@TmpBakiye<0 AND MEBLAG_SIGN<0)) AND (TUTAR>CHA_KAPANAN_MEBLAG) ORDER BY CHA_VADE_TARIHI DESC,cha_tarihi DESC OPEN HareketCursor FETCH NEXT FROM HareketCursor INTO @Id, @KayitTutar, @Vade,@BelgeNo WHILE @@FETCH_STATUS = 0 AND ABS(@TmpBakiye)>1 BEGIN IF @TmpBakiye>0 SET @KapanmamisTutar = dbo.fn_MIN(@TmpBakiye,@KayitTutar) ELSE SET @KapanmamisTutar = dbo.fn_MAX(@TmpBakiye,@KayitTutar) SET @TmpBakiye = @TmpBakiye - @KapanmamisTutar INSERT INTO @BakiyeyeKonuKayitlar VALUES (@Id,@CariKodu,@KapanmamisTutar,dbo.fn_gunfarkibul(@RaporTarihi,@Vade),@Vade,@BelgeNo) FETCH NEXT FROM HareketCursor INTO @Id, @KayitTutar, @Vade,@BelgeNo END CLOSE HareketCursor DEALLOCATE HareketCursor END FETCH NEXT FROM CariCursor INTO @CariKodu END CLOSE CariCursor DEALLOCATE CariCursor SELECT *, KalanRisk=(T1.TanimliRiskTutari-T1.BakiyeToplami), RiskYuzdesi =(CASE When T1.TanimliRiskTutari=0 Then 0 else 100*(T1.BakiyeToplami/T1.TanimliRiskTutari) end) FROM ( SELECT TOP 100 PERCENT Oid=Id, FaturaVadesi, FaturaNumarasi, GecikenGun, MusteriKodu=cari_kod, Unvan=cari_unvan1, VadesiGecenBakiye=SUM(CASE WHEN GecikenGun<=0 THEN KapanmamisTutar ELSE 0.0 END), VadesiGecmemisBakiye=SUM(CASE WHEN GecikenGun>0 THEN KapanmamisTutar ELSE 0.0 END), Bakiye=SUM(KapanmamisTutar), BakiyeTipi=(CASE WHEN SUM(KapanmamisTutar)>0 THEN 'Borç' ELSE 'Alacak' END), Gun30=SUM(CASE WHEN GecikenGun BETWEEN -30 AND 0 THEN KapanmamisTutar ELSE 0.0 END), Gun60=SUM(CASE WHEN GecikenGun BETWEEN -60 AND -31 THEN KapanmamisTutar ELSE 0.0 END), Gun90=SUM(CASE WHEN GecikenGun BETWEEN -90 AND -61 THEN KapanmamisTutar ELSE 0.0 END), Gun120=SUM(CASE WHEN GecikenGun BETWEEN -120 AND -91 THEN KapanmamisTutar ELSE 0.0 END), Gun120Ustu=SUM(CASE WHEN GecikenGun <= -121 THEN KapanmamisTutar ELSE 0.0 END), OdemePlani=(select OP.odp_adi from ODEME_PLANLARI OP WHERE OP.odp_no= cari_odemeplan_no), OdemeTipi=(case when cari_cariodemetercihi=0 Then 'Nakit' when cari_cariodemetercihi=1 Then 'Müşteri Çeki' when cari_cariodemetercihi=2 Then 'Firma Çeki' when cari_cariodemetercihi=3 Then 'Müşteri Senedi' when cari_cariodemetercihi=4 Then 'Firma Senedi' when cari_cariodemetercihi=5 Then 'Havale' when cari_cariodemetercihi=6 Then 'Ödeme Emri' when cari_cariodemetercihi=7 Then 'Doğ.Havale' else 'TANIMSIZ' end ), Alacak=ISNULL((SELECT sum(CASE WHEN CH.cha_tip=1 then CH.cha_meblag else 0 end) from CARI_HESAP_HAREKETLERI CH WHERE CH.cha_kod=cari_kod),0), Borc=ISNULL((SELECT sum(CASE WHEN CH.cha_tip=0 then CH.cha_meblag else 0 end) from CARI_HESAP_HAREKETLERI CH WHERE CH.cha_kod=cari_kod),0), BakiyeToplami=ISNULL((SELECT sum(CASE WHEN CH.cha_tip=1 then -1*CH.cha_meblag else CH.cha_meblag end) from CARI_HESAP_HAREKETLERI CH WHERE CH.cha_kod=cari_kod),0), Il=(SELECT top 1 adr_il FROM CARI_HESAP_ADRESLERI MA WHERE MA.adr_cari_kod=cari_kod and MA.adr_adres_no=1), PlasiyerKodu=cari_temsilci_kodu, PlasiyerAdi=ISNULL((SELECT (cari_per_adi + ' ' + cari_per_soyadi) from CARI_PERSONEL_TANIMLARI P WHERE P.cari_per_kod=cari_temsilci_kodu),'TANIMSIZ'), TanimliRiskTutari=(ISNULL((SELECT SUM(CHT.ct_tutari) FROM CARI_HESAP_TEMINATLARI CHT WHERE CHT.ct_carikodu=cari_kod AND CHT.ct_vade>=GETDATE()),0)), SonOdemeCinsi=(SELECT TOP 1 [dbo].[fn_CariHarCins](cha_cinsi) from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ), SonOdemeTarihi=(SELECT TOP 1 CH1.cha_tarihi from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ), SonFaturaTutari=(SELECT TOP 1 CH1.cha_meblag from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ), SonOdemeninVadesi=CONVERT (datetime,convert(char(8),(SELECT TOP 1 CH1.cha_vade from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ))), SonSiparisTarihi=(SELECT TOP 1 sip_tarih FROM SIPARISLER WHERE sip_musteri_kod=cari_kod AND sip_tip=0 order by sip_tarih desc), Not1=(select Not1 From MusteriTahsilatRaporu Where FaturaGuid=Id), Not2=(select Not2 From MusteriTahsilatRaporu Where FaturaGuid=Id) FROM @BakiyeyeKonuKayitlar LEFT OUTER JOIN CARI_HESAPLAR WITH (NOLOCK) ON (cari_kod=CariKodu) Where FaturaVadesi<=GetDate() GROUP BY cari_kod, cari_unvan1,cari_guid,cari_odemeplan_no,cari_cariodemetercihi,cari_temsilci_kodu,GecikenGun,FaturaVadesi,FaturaNumarasi,Id --HAVING ROUND(SUM(KapanmamisTutar),2)<>0 --Kapanmamis olanlarda Gorunsun ORDER BY cari_kod, cari_unvan1 ) T1 WHERE -1*T1.GecikenGun>=50 END GO /****** Object: StoredProcedure [dbo].[sp_Mbt_Cari_Bakiye_Yaslandirma_RaporuPlasiyer] Script Date: 26.01.2021 13:56:46 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER PROCEDURE [dbo].[sp_Mbt_Cari_Bakiye_Yaslandirma_RaporuPlasiyer] ( @CariIlkKod NVARCHAR(25)='', @PlasiyerKodu NVARCHAR(25)='', @RaporTarihi DATETIME=NULL ) AS BEGIN IF @RaporTarihi IS NULL SET @RaporTarihi=dbo.fn_DatePart(GETDATE()) DECLARE @HangiHesaplar TINYINT set @HangiHesaplar=2 DECLARE @CariKodu NVARCHAR(25), @TmpBakiye FLOAT, @Id UNIQUEIDENTIFIER, @KayitTutar FLOAT, @KapanmamisTutar FLOAT, @Vade DATETIME, @BelgeNo Nvarchar(50) DECLARE @BakiyeyeKonuKayitlar TABLE ( Id UNIQUEIDENTIFIER, CariKodu NVARCHAR(25), KapanmamisTutar FLOAT, GecikenGun INT, FaturaVadesi DATETIME, FaturaNumarasi Nvarchar(50) ) SELECT TOP 100 PERCENT cha_Guid, cha_kod, cha_tarihi, CHA_VADE_TARIHI, BelgeNo=(cha_evrakno_seri+ '-'+ CAST(cha_evrakno_sira AS NVARCHAR)), CASE WHEN CHA_CARI_BORC_ALACAK_TIP=0 THEN 1.0 ELSE -1.0 END AS MEBLAG_SIGN, CHA_CARI_MEBLAG_ANA AS TUTAR, CAST(0.0 AS FLOAT) CHA_KAPANAN_MEBLAG INTO #CariHareketler FROM dbo.CARI_HESAP_HAREKETLERI_VIEW_WITH_INDEX_02 WITH (NOLOCK) LEFT OUTER JOIN CARI_HESAPLAR WITH(NOLOCK) ON (cari_kod=cha_kod) WHERE (cha_cari_cins=0) AND --(cari_kod = @CariIlkKod) AND (cari_temsilci_kodu = @PlasiyerKodu) AND (cha_tarihi<=@RaporTarihi) ORDER BY cha_kod,cha_grupno DECLARE CariCursor CURSOR LOCAL READ_ONLY FAST_FORWARD FOR SELECT DISTINCT cha_kod FROM #CariHareketler ORDER BY cha_kod OPEN CariCursor FETCH NEXT FROM CariCursor INTO @CariKodu WHILE @@FETCH_STATUS = 0 BEGIN SELECT @TmpBakiye=SUM(TUTAR*MEBLAG_SIGN) FROM #CariHareketler WHERE cha_kod=@CariKodu IF ((@HangiHesaplar=0 AND @TmpBakiye>0) OR (@HangiHesaplar=1 AND @TmpBakiye<0) OR (@HangiHesaplar=2 AND @TmpBakiye<>0)) BEGIN DECLARE HareketCursor CURSOR LOCAL READ_ONLY FAST_FORWARD FOR SELECT TOP 100 PERCENT cha_Guid, (TUTAR-CHA_KAPANAN_MEBLAG)*MEBLAG_SIGN, CHA_VADE_TARIHI,BelgeNo FROM #CariHareketler WHERE (cha_kod=@CariKodu) AND ((@TmpBakiye>0 AND MEBLAG_SIGN>0) OR (@TmpBakiye<0 AND MEBLAG_SIGN<0)) AND (TUTAR>CHA_KAPANAN_MEBLAG) ORDER BY CHA_VADE_TARIHI DESC,cha_tarihi DESC OPEN HareketCursor FETCH NEXT FROM HareketCursor INTO @Id, @KayitTutar, @Vade,@BelgeNo WHILE @@FETCH_STATUS = 0 AND ABS(@TmpBakiye)>1 BEGIN IF @TmpBakiye>0 SET @KapanmamisTutar = dbo.fn_MIN(@TmpBakiye,@KayitTutar) ELSE SET @KapanmamisTutar = dbo.fn_MAX(@TmpBakiye,@KayitTutar) SET @TmpBakiye = @TmpBakiye - @KapanmamisTutar INSERT INTO @BakiyeyeKonuKayitlar VALUES (@Id,@CariKodu,@KapanmamisTutar,dbo.fn_gunfarkibul(@RaporTarihi,@Vade),@Vade,@BelgeNo) FETCH NEXT FROM HareketCursor INTO @Id, @KayitTutar, @Vade,@BelgeNo END CLOSE HareketCursor DEALLOCATE HareketCursor END FETCH NEXT FROM CariCursor INTO @CariKodu END CLOSE CariCursor DEALLOCATE CariCursor SELECT *, KalanRisk=(T1.TanimliRiskTutari-T1.BakiyeToplami), RiskYuzdesi =(CASE When T1.TanimliRiskTutari=0 Then 0 else 100*(T1.BakiyeToplami/T1.TanimliRiskTutari) end) FROM ( SELECT TOP 100 PERCENT Oid=Id, FaturaVadesi, FaturaNumarasi, GecikenGun, MusteriKodu=cari_kod, Unvan=cari_unvan1, VadesiGecenBakiye=SUM(CASE WHEN GecikenGun<=0 THEN KapanmamisTutar ELSE 0.0 END), VadesiGecmemisBakiye=SUM(CASE WHEN GecikenGun>0 THEN KapanmamisTutar ELSE 0.0 END), Bakiye=SUM(KapanmamisTutar), BakiyeTipi=(CASE WHEN SUM(KapanmamisTutar)>0 THEN 'Borç' ELSE 'Alacak' END), Gun30=SUM(CASE WHEN GecikenGun BETWEEN -30 AND 0 THEN KapanmamisTutar ELSE 0.0 END), Gun60=SUM(CASE WHEN GecikenGun BETWEEN -60 AND -31 THEN KapanmamisTutar ELSE 0.0 END), Gun90=SUM(CASE WHEN GecikenGun BETWEEN -90 AND -61 THEN KapanmamisTutar ELSE 0.0 END), Gun120=SUM(CASE WHEN GecikenGun BETWEEN -120 AND -91 THEN KapanmamisTutar ELSE 0.0 END), Gun120Ustu=SUM(CASE WHEN GecikenGun <= -121 THEN KapanmamisTutar ELSE 0.0 END), OdemePlani=(select OP.odp_adi from ODEME_PLANLARI OP WHERE OP.odp_no= cari_odemeplan_no), OdemeTipi=(case when cari_cariodemetercihi=0 Then 'Nakit' when cari_cariodemetercihi=1 Then 'Müşteri Çeki' when cari_cariodemetercihi=2 Then 'Firma Çeki' when cari_cariodemetercihi=3 Then 'Müşteri Senedi' when cari_cariodemetercihi=4 Then 'Firma Senedi' when cari_cariodemetercihi=5 Then 'Havale' when cari_cariodemetercihi=6 Then 'Ödeme Emri' when cari_cariodemetercihi=7 Then 'Doğ.Havale' else 'TANIMSIZ' end ), Alacak=ISNULL((SELECT sum(CASE WHEN CH.cha_tip=1 then CH.cha_meblag else 0 end) from CARI_HESAP_HAREKETLERI CH WHERE CH.cha_kod=cari_kod),0), Borc=ISNULL((SELECT sum(CASE WHEN CH.cha_tip=0 then CH.cha_meblag else 0 end) from CARI_HESAP_HAREKETLERI CH WHERE CH.cha_kod=cari_kod),0), BakiyeToplami=ISNULL((SELECT sum(CASE WHEN CH.cha_tip=1 then -1*CH.cha_meblag else CH.cha_meblag end) from CARI_HESAP_HAREKETLERI CH WHERE CH.cha_kod=cari_kod),0), Il=(SELECT top 1 adr_il FROM CARI_HESAP_ADRESLERI MA WHERE MA.adr_cari_kod=cari_kod and MA.adr_adres_no=1), PlasiyerKodu=cari_temsilci_kodu, PlasiyerAdi=ISNULL((SELECT (cari_per_adi + ' ' + cari_per_soyadi) from CARI_PERSONEL_TANIMLARI P WHERE P.cari_per_kod=cari_temsilci_kodu),'TANIMSIZ'), TanimliRiskTutari=(ISNULL((SELECT SUM(CHT.ct_tutari) FROM CARI_HESAP_TEMINATLARI CHT WHERE CHT.ct_carikodu=cari_kod AND CHT.ct_vade>=GETDATE()),0)), SonOdemeCinsi=(SELECT TOP 1 [dbo].[fn_CariHarCins](cha_cinsi) from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ), SonOdemeTarihi=(SELECT TOP 1 CH1.cha_tarihi from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ), SonFaturaTutari=(SELECT TOP 1 CH1.cha_meblag from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ), SonOdemeninVadesi=CONVERT (datetime,convert(char(8),(SELECT TOP 1 CH1.cha_vade from CARI_HESAP_HAREKETLERI CH1 WHERE CH1.cha_evrak_tip in (1,4,3,34,2,98) and CH1.cha_tip=1 and CH1.cha_kod=cari_kod and cha_normal_Iade=0 order by CH1.cha_tarihi desc ))), SonSiparisTarihi=(SELECT TOP 1 sip_tarih FROM SIPARISLER WHERE sip_musteri_kod=cari_kod AND sip_tip=0 order by sip_tarih desc), Not1=(select Not1 From MusteriTahsilatRaporu Where FaturaGuid=Id), Not2=(select Not2 From MusteriTahsilatRaporu Where FaturaGuid=Id) FROM @BakiyeyeKonuKayitlar LEFT OUTER JOIN CARI_HESAPLAR WITH (NOLOCK) ON (cari_kod=CariKodu) GROUP BY cari_kod, cari_unvan1,cari_guid,cari_odemeplan_no,cari_cariodemetercihi,cari_temsilci_kodu,GecikenGun,FaturaVadesi,FaturaNumarasi,Id --HAVING ROUND(SUM(KapanmamisTutar),2)<>0 --Kapanmamis olanlarda Gorunsun ORDER BY cari_kod, cari_unvan1 ) T1 WHERE -1*T1.GecikenGun>=50 END GO