--OZEL HESAP KAPATMALI BEKLEYEN CARI HAREKETLER
WITH TMP AS (SELECT A.SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,HAREKET_TURU HT,ACIKLAMA,ROW_NUMBER() OVER(PARTITION BY CARI_KOD ORDER BY CARI_KOD,VADE_TARIHI,INC_KEY_NUMBER) SIRA, DOVIZ_TURU DT, (SELECT CAST(CM_BORCT - CM_ALACT AS money) FROM TBLCASABIT U WHERE U.CARI_KOD=A.CARI_KOD) BAKIYE, BORC,CASE WHEN BORC>0 THEN BORC - ROUND((CASE WHEN ROUND(DOVIZ_TUTAR,2)>0 AND DOVIZ_TURU<>0 THEN (BORC+ALACAK)/ROUND(DOVIZ_TUTAR,2) ELSE 1 END)*KAPATILMIS_TUTAR,2) ELSE 0 END GBORC, ALACAK, CASE WHEN ALACAK>0 THEN ALACAK - ROUND((CASE WHEN ROUND(DOVIZ_TUTAR,2)>0 AND DOVIZ_TURU<>0 THEN (BORC+ALACAK)/ROUND(DOVIZ_TUTAR,2) ELSE 1 END)*KAPATILMIS_TUTAR,2) ELSE 0 END GALACAK, --KAPATILMIS_TUTAR,DOVIZ_TUTAR, --ROUND((CASE WHEN ROUND(DOVIZ_TUTAR,2)>0 AND DOVIZ_TURU<>0 THEN (BORC+ALACAK)/ROUND(DOVIZ_TUTAR,2) ELSE 1 END)*KAPATILMIS_TUTAR,2) KAPTL_TUTAR, DATEDIFF(d,GETDATE(),VADE_TARIHI) GUN,A.INC_KEY_NUMBER, ROUND((DATEDIFF(d,GETDATE(),VADE_TARIHI))*((CASE WHEN BORC>0 THEN BORC - ROUND((CASE WHEN ROUND(DOVIZ_TUTAR,2)>0 AND DOVIZ_TURU<>0 THEN (BORC+ALACAK)/ROUND(DOVIZ_TUTAR,2) ELSE 1 END)*KAPATILMIS_TUTAR,2) ELSE 0 END) - (CASE WHEN ALACAK>0 THEN ALACAK - ROUND((CASE WHEN ROUND(DOVIZ_TUTAR,2)>0 AND DOVIZ_TURU<>0 THEN (BORC+ALACAK)/ROUND(DOVIZ_TUTAR,2) ELSE 1 END)*KAPATILMIS_TUTAR,2) ELSE 0 END)),2) AS ADAT --CASE WHEN ACIKLAMA<>'KUR FARKI' THEN DATEDIFF(D,VADE_TARIHI,CAST(GETDATE() AS DATE)) ELSE 0 END GUN FROM TBLCAHAR A (NOLOCK) WHERE CARI_KOD IN (SELECT CARI_KOD FROM TBLCASABIT WHERE HESAPTUTMASEKLI='K') AND BORC + ALACAK > ROUND((CASE WHEN ROUND(DOVIZ_TUTAR,2)>0 AND DOVIZ_TURU<>0 THEN (BORC+ALACAK)/ROUND(DOVIZ_TUTAR,2) ELSE 1 END)*KAPATILMIS_TUTAR,2) --ORDER BY CARI_KOD,TARIH,SIRA ) ,
--YASLANDIRMALI BEKLEYEN CARI HAREKETLER
BORCLU AS (SELECT CARI_KOD,CARI_ISIM,CARI_TIP,'Y' HTS, ROUND(CM_BORCT - CM_ALACT,2) BAKIYE FROM TBLCASABIT --CBAK WHERE /*BAKIYE*/ ROUND(CM_BORCT - CM_ALACT,2) > 0 AND HESAPTUTMASEKLI='Y' --AND SUBE_KODU=-1 --AND M_KOD LIKE '[13]2%' ), ALACAKLI AS (SELECT CARI_KOD,CARI_ISIM,CARI_TIP,'Y' HTS, ROUND(CM_ALACT - CM_BORCT,2) BAKIYE FROM TBLCASABIT --CBAK WHERE /*BAKIYE*/ ROUND(CM_BORCT - CM_ALACT,2) < 0 AND HESAPTUTMASEKLI='Y' --AND SUBE_KODU=-1 --AND M_KOD LIKE '[13]2%' ),
BHAR AS (SELECT A.SUBE_KODU,A.CARI_KOD,ROUND(BORC,2) BORC,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HAREKET_TURU HT,DATEDIFF(d,GETDATE(),VADE_TARIHI) GUN,B.BAKIYE,INC_KEY_NUMBER, ROW_NUMBER() OVER (PARTITION BY A.CARI_KOD ORDER BY A.CARI_KOD,/*TARIH*/VADE_TARIHI DESC,INC_KEY_NUMBER DESC) AS SIRA FROM TBLCAHAR A (NOLOCK) JOIN BORCLU B ON A.CARI_KOD=B.CARI_KOD WHERE ROUND(A.BORC,2) > 0 ), AHAR AS (SELECT A.SUBE_KODU,A.CARI_KOD,ROUND(ALACAK,2) ALACAK,TARIH,VADE_TARIHI,BELGE_NO,ACIKLAMA,HAREKET_TURU HT,DATEDIFF(d,GETDATE(),VADE_TARIHI) GUN,B.BAKIYE,INC_KEY_NUMBER, ROW_NUMBER() OVER (PARTITION BY A.CARI_KOD ORDER BY A.CARI_KOD,/*TARIH*/VADE_TARIHI DESC,INC_KEY_NUMBER DESC) AS SIRA FROM TBLCAHAR A (NOLOCK) JOIN ALACAKLI B ON A.CARI_KOD=B.CARI_KOD WHERE ROUND(A.ALACAK,2) > 0 ), BBHAR AS (SELECT B1.SUBE_KODU,B1.CARI_KOD,B1.BAKIYE,B1.TARIH,B1.VADE_TARIHI,B1.BORC,B1.GUN,B1.INC_KEY_NUMBER,B1.BELGE_NO,B1.ACIKLAMA,B1.HT, SUM(B2.BORC) TBORC,SUM(B2.GUN*B2.BORC) ADAT,SUM(B2.GUN) TGUN,B1.SIRA FROM BHAR B1 JOIN BHAR B2 ON B1.SUBE_KODU=B2.SUBE_KODU AND B1.CARI_KOD=B2.CARI_KOD AND B2.SIRA<=B1.SIRA GROUP BY B1.SUBE_KODU,B1.CARI_KOD,B1.SIRA,B1.BORC,B1.GUN,B1.TARIH,B1.VADE_TARIHI,B1.BAKIYE,B1.INC_KEY_NUMBER,B1.BELGE_NO,B1.ACIKLAMA,B1.HT ), AAHAR AS (SELECT A1.SUBE_KODU,A1.CARI_KOD,A1.BAKIYE,A1.TARIH,A1.VADE_TARIHI,A1.ALACAK,A1.GUN,A1.INC_KEY_NUMBER,A1.BELGE_NO,A1.ACIKLAMA,A1.HT, SUM(A2.ALACAK) TALACAK,SUM(A2.GUN*A2.ALACAK) ADAT,SUM(A2.GUN) TGUN,A1.SIRA FROM AHAR A1 JOIN AHAR A2 ON A1.SUBE_KODU=A2.SUBE_KODU AND A1.CARI_KOD=A2.CARI_KOD AND A2.SIRA<=A1.SIRA GROUP BY A1.SUBE_KODU,A1.CARI_KOD,A1.SIRA,A1.ALACAK,A1.GUN,A1.TARIH,A1.VADE_TARIHI,A1.BAKIYE,A1.INC_KEY_NUMBER,A1.BELGE_NO,A1.ACIKLAMA,A1.HT ), SONUCB AS (SELECT SUBE_KODU,CARI_KOD,BAKIYE,TARIH,VADE_TARIHI,BELGE_NO,HT,ACIKLAMA,BORC,TBORC TBORC1,CASE WHEN BAKIYE BETWEEN TBORC - BORC AND TBORC THEN BAKIYE ELSE TBORC END TBORC,GUN,BBHAR.INC_KEY_NUMBER, CASE WHEN BAKIYE BETWEEN TBORC - BORC AND TBORC THEN ADAT - BORC*GUN + GUN*(BAKIYE - (TBORC - BORC)) ELSE ADAT END ADAT,SIRA, ROUND(ADAT/TBORC,0) ORT1, ROUND((CASE WHEN BAKIYE BETWEEN TBORC - BORC AND TBORC THEN ADAT - BORC*GUN + GUN*(BAKIYE - (TBORC - BORC)) ELSE ADAT END)/ CASE WHEN BAKIYE BETWEEN TBORC - BORC AND TBORC THEN BAKIYE ELSE TBORC END,0) ORT --,CASE WHEN (BAKIYE BETWEEN TBORC - BORC AND TBORC) OR BAKIYE >= TBORC THEN 1 ELSE 0 END C FROM BBHAR WHERE (CASE WHEN (BAKIYE BETWEEN TBORC - BORC AND TBORC) OR BAKIYE > TBORC THEN 1 ELSE 0 END) = 1),
SONUCA AS (SELECT SUBE_KODU,CARI_KOD,BAKIYE,TARIH,VADE_TARIHI,BELGE_NO,HT,ACIKLAMA,ALACAK,TALACAK TALAC1,CASE WHEN -BAKIYE BETWEEN TALACAK - ALACAK AND TALACAK THEN -BAKIYE ELSE TALACAK END TALACAK,GUN,AAHAR.INC_KEY_NUMBER, CASE WHEN -BAKIYE BETWEEN TALACAK - ALACAK AND TALACAK THEN ADAT - ALACAK*GUN + GUN*(-1*BAKIYE - (TALACAK - ALACAK)) ELSE ADAT END ADAT,SIRA, ROUND(ADAT/TALACAK,0) AS ORT1, ROUND((CASE WHEN -BAKIYE BETWEEN TALACAK - ALACAK AND TALACAK THEN ADAT - ALACAK*GUN + GUN*(-1*BAKIYE - (TALACAK - ALACAK)) ELSE ADAT END)/ CASE WHEN -BAKIYE BETWEEN TALACAK - ALACAK AND TALACAK THEN -BAKIYE ELSE TALACAK END,0) AS ORT --,CASE WHEN (BAKIYE BETWEEN TBORC - BORC AND TBORC) OR BAKIYE >= TBORC THEN 1 ELSE 0 END C FROM AAHAR WHERE (CASE WHEN (BAKIYE BETWEEN TALACAK - ALACAK AND TALACAK) OR BAKIYE > TALACAK THEN 1 ELSE 0 END) = 1)
--BORC YASLANDIRMA SONUCB DEN --OZET ICIN --SELECT CARI_KOD,MAX(BAKIYE) BAKIYE,MAX(ORT) GUN FROM SONUCB GROUP BY CARI_KOD SELECT SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,HT,ACIKLAMA,SIRA,BAKIYE,BORC BORC1,/*TBORC1,TBORC,*/BORC -(TBORC1 - TBORC) BORC,0.0 ALACAK1,/*0.0 TALACAK,0.0 TALAC1,*/0.0 ALACAK,GUN --,INC_KEY_NUMBER,ADAT,ORT1 ORT
FROM SONUCB
UNION ALL --ALACAK YASLANDIRMA SONUCA DAN --OZET ICIN --SELECT CARI_KOD,-MAX(BAKIYE) BAKIYE,MAX(ORT) GUN FROM SONUCA GROUP BY CARI_KOD --DETAY ICIN SELECT SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,HT,ACIKLAMA,ROW_NUMBER() OVER (PARTITION BY CARI_KOD ORDER BY CARI_KOD,SIRA DESC) AS SIRA, -BAKIYE BAKIYE ,0.0 BORC1,/*0.0 TBORC1,0.0 TBORC,*/0.0,ALACAK ALACAK1,/*TALACAK,TALAC1,*/ALACAK - (TALAC1-TALACAK) ALACAK,GUN --,INC_KEY_NUMBER,ADAT,ORT1 ORT FROM SONUCA
UNION ALL SELECT SUBE_KODU,CARI_KOD,TARIH,VADE_TARIHI,BELGE_NO,HT,ACIKLAMA,SIRA,BAKIYE,BORC BORC1,GBORC BORC,ALACAK ALACAK1,GALACAK ALACAK,GUN --,ROUND(ADAT/(GBORC + GALACAK),0) ORT FROM TMP WHERE GBORC + GALACAK>0
ORDER BY CARI_KOD,TARIH GO
BORC1 ve ALACAK1 sütunları hareketin asıl tutarları, BORC ve ALACAK sütunları ise kapatma/yaşlandırma sonrası hareketin bakiye tutarlarıdır.
BAKIYE ise + Borç bakiyeyeyi - Alacak bakiyeyi gösterir
------------- Mehmet Baykan
|