Var
  CariID: Integer;
  Tarih1, Tarih2: TDateTime;

procedure FindParam;
Var 
  S: TStringList;
  I: Integer;
  C: String;
Begin
  S:= TStringList.Create;
  S.Text:= FFilter;
    
  For I:= 0 to S.Count - 1 Do
  Begin
    C:= S[I];
	
	if Length(C) > 9 Then
	  Delete(C, 1, 9);
	
    if Pos('CARIID = ', S[I]) = 1 Then
	  CariID:= StrToInt(C)
    else if Pos('TARIH1 = ', S[I]) = 1 Then
	  Tarih1:= StrToDate(C)
    else if Pos('TARIH2 = ', S[I]) = 1 Then
	  Tarih2:= StrToDate(C)
  End;
  S.Free;  
End;

Function ReadSQL(W: String): String;
Begin
  FFilter:= W;
  FindParam;
  
  Result:= 'SET DATEFORMAT DMY  '#13 +
        ' DECLARE @CARIID INT, @T1 DATETIME, @T2 DATETIME, @T DECIMAL(18, 4)  '#13 +
        ' SET @CARIID = ' + IntToStr(CariID) + #13 +
        ' SET @T1 = ' + QuotedStr(DateToStr(Tarih1)) + #13 +
        ' SET @T2 = ' + QuotedStr(DateToStr(Tarih2)) + #13 +
		' SET @T = ISNULL((SELECT SUM((ALACAK - BORC) * KUR) FROM CARIDOKUM WHERE CARIID =  @CARIID AND TARIH < @T1), 0)'#13 +
        ' SELECT * FROM( '#13 +
        '   SELECT   '#13 +
        '     ACIKLAMA, ISLEMTIPI, KARTNO, ISLEM, TARIH, BELGENO, STOKKODU, CINSI, MIKTARI, BIRIMADI, NETFIYAT * ((KDV + 100.0000) / 100.0000) AS FIYATI,  '#13 +
        '     CASE WHEN ISLEMTIPI IN (0, 2, 5, 11, 20, 257, 157, 243)  THEN NETTUTAR * ((KDV + 100.0000) / 100.0000) ELSE NULL END AS BORC,  '#13 +
        '     CASE WHEN ISLEMTIPI IN (1, 3, 4, 12, 239, 158, 242) THEN NETTUTAR * ((KDV + 100.0000) / 100.0000) ELSE NULL END AS ALACAK  '#13 +
        '   FROM(  '#13 +
        '   SELECT   '#13 +
        '     H.ACIKLAMA, 2 AS ISLEMTIPI, B.KARTNO, ''SATIŞ'' AS ISLEM, B.TARIH, B.BELGENO, S.STOKKODU, S.CINSI,   '#13 +
        '     H.MIKTARI, BR.BIRIMADI, H.KDV,   '#13 +
        '     H.FIYATI,   '#13 +
        '     ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y) /  '#13 +
        '        CASE when ISNULL(H.MIKTARI, 0) = 0 THEN 1 ELSE H.MIKTARI END, 4) AS NETFIYAT,   '#13 +
        '     H.FIYATI * H.MIKTARI AS TUTARI,  '#13 +
        '     ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y), 4) AS NETTUTAR  '#13 +
        '   FROM TBLSATFATHAREKET H  '#13 +
        '   LEFT OUTER JOIN TBLSATFATBASLIK B WITH(INDEX=TBLSATFATBASLIK_KARTNO) ON B.KARTNO = H.FATURAID  '#13 +
        '   LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID  '#13 +
        '   LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = H.BIRIMID  '#13 +
        '   WHERE ISNULL(B.DELETED, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        '  UNION ALL '#13 +
        '  SELECT   '#13 +
        '     H.ACIKLAMA, 3, B.KARTNO, ''ALIŞ'' AS ISLEM, B.TARIH, B.BELGENO, S.STOKKODU, S.CINSI,   '#13 +
        '     H.MIKTARI, BR.BIRIMADI, H.KDV,   '#13 +
        '     H.FIYATI,   '#13 +
        '     ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y) /  '#13 +
        '         CASE when ISNULL(H.MIKTARI, 0) = 0 THEN 1 ELSE H.MIKTARI END, 4) AS NETFIYAT, '#13 +
        '     H.FIYATI * H.MIKTARI AS TUTARI,  '#13 +
        '     ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y), 4) AS NETTUTAR  '#13 +
        '   FROM TBLALFATHAREKET H  '#13 +
        '   LEFT OUTER JOIN TBLALFATBASLIK B WITH(INDEX=TBLALFATBASLIK_KARTNO) ON B.KARTNO = H.FATURAID  '#13 +
        '   LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID  '#13 +
        '   LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = H.BIRIMID  '#13 +
        '   WHERE ISNULL(B.DELETED, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        '  UNION ALL '#13 +
        '  SELECT   '#13 +
        '     H.ACIKLAMA, 4, B.KARTNO, ''SATIŞ İADE'' AS ISLEM, B.TARIH, B.BELGENO, S.STOKKODU, S.CINSI,   '#13 +
        '     H.MIKTARI, BR.BIRIMADI, H.KDV,   '#13 +
        '     H.FIYATI,   '#13 +
        '     ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y) /  '#13 +
        '         CASE when ISNULL(H.MIKTARI, 0) = 0 THEN 1 ELSE H.MIKTARI END, 4) AS NETFIYAT, '#13 +
        '     H.FIYATI * H.MIKTARI AS TUTARI,  '#13 +
        '     ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y), 4) AS NETTUTAR  '#13 +
        '   FROM TBLSATFATIADEHAREKET H  '#13 +
        '   LEFT OUTER JOIN TBLSATFATIADEBASLIK B WITH(INDEX=TBLSATFATIADEBASLIK_KARTNO) ON B.KARTNO = H.FATURAID  '#13 +
        '   LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID  '#13 +
        '   LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = H.BIRIMID  '#13 +
        '   WHERE ISNULL(B.DELETED, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        '  UNION ALL '#13 +
        '  SELECT   '#13 +
        '     H.ACIKLAMA, 5 AS ISLEMTIPI, B.KARTNO, ''ALIŞ İADE'' AS ISLEM, B.TARIH, B.BELGENO, S.STOKKODU, S.CINSI,   '#13 +
        '     H.MIKTARI, BR.BIRIMADI, H.KDV,   '#13 +
        '     H.FIYATI,   '#13 +
        '     ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y) /  '#13 +
        '         CASE when ISNULL(H.MIKTARI, 0) = 0 THEN 1 ELSE H.MIKTARI END, 4) AS NETFIYAT, '#13 +
        '     H.FIYATI * H.MIKTARI AS TUTARI,  '#13 +
        '     ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y), 4) AS NETTUTAR  '#13 +
        '   FROM TBLALFATIADEHAREKET H  '#13 +
        '   LEFT OUTER JOIN TBLALFATIADEBASLIK B WITH(INDEX=TBLALFATIADEBASLIK_KARTNO) ON B.KARTNO = H.FATURAID  '#13 +
        '   LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID  '#13 +
        '   LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = H.BIRIMID  '#13 +
        '   WHERE ISNULL(B.DELETED, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +

        '  UNION ALL  '#13 +
        '  SELECT   '#13 +
        '    H.ACIKLAMA, 157 AS ISLEMTIPI, B.KARTNO, ''SATIŞ İRSALİYESİ'' AS ISLEM, B.TARIH, B.BELGENO, S.STOKKODU, S.CINSI,   '#13 +
        '    H.MIKTARI, BR.BIRIMADI, H.KDV,   '#13 +
        '    H.FIYATI,   '#13 +
        '    ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y) /  '#13 +
        '       CASE when ISNULL(H.MIKTARI, 0) = 0 THEN 1 ELSE H.MIKTARI END, 4) AS NETFIYAT,   '#13 +
        '    H.FIYATI * H.MIKTARI AS TUTARI,  '#13 +
        '    ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y), 4) AS NETTUTAR  '#13 +
        '  FROM TBLSATIRSHAREKET H  '#13 +
        '  LEFT OUTER JOIN TBLSATIRSBASLIK B WITH(INDEX=TBLSATIRSBASLIK_KARTNO) ON B.KARTNO = H.FATURAID  '#13 +
        '  LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID  '#13 +
        '  LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = H.BIRIMID  '#13 +
        '  WHERE ISNULL(B.DELETED, 0) = 0 AND ISNULL(B.FATURALASTI, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        '  UNION ALL  '#13 +
        '  SELECT   '#13 +
        '    H.ACIKLAMA, 158, B.KARTNO, ''ALIŞ İRSALİYESİ'' AS ISLEM, B.TARIH, B.BELGENO, S.STOKKODU, S.CINSI,   '#13 +
        '    H.MIKTARI, BR.BIRIMADI, H.KDV,   '#13 +
        '    H.FIYATI,   '#13 +
        '    ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y) /  '#13 +
        '        CASE when ISNULL(H.MIKTARI, 0) = 0 THEN 1 ELSE H.MIKTARI END, 4) AS NETFIYAT,   '#13 +
        '    H.FIYATI * H.MIKTARI AS TUTARI,  '#13 +
        '    ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y), 4) AS NETTUTAR  '#13 +
        '  FROM TBLALIRSHAREKET H  '#13 +
        '  LEFT OUTER JOIN TBLALIRSBASLIK B WITH(INDEX=TBLALIRSBASLIK_KARTNO) ON B.KARTNO = H.FATURAID  '#13 +
        '  LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID  '#13 +
        '  LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = H.BIRIMID  '#13 +
        '  WHERE ISNULL(B.DELETED, 0) = 0 AND ISNULL(B.FATURALASTI, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        '  UNION ALL   '#13 +
        '  SELECT   '#13 +
        '    H.ACIKLAMA, 242, B.KARTNO, ''SATIŞ İADE İRSALİYESİ'' AS ISLEM, B.TARIH, B.BELGENO, S.STOKKODU, S.CINSI,   '#13 +
        '    H.MIKTARI, BR.BIRIMADI, H.KDV,   '#13 +
        '    H.FIYATI,   '#13 +
        '    ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y) /  '#13 +
        '        CASE when ISNULL(H.MIKTARI, 0) = 0 THEN 1 ELSE H.MIKTARI END, 4) AS NETFIYAT,   '#13 +
        '    H.FIYATI * H.MIKTARI AS TUTARI,  '#13 +
        '    ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y), 4) AS NETTUTAR  '#13 +
        '  FROM TBLSATIRSIADEHAREKET H  '#13 +
        '  LEFT OUTER JOIN TBLSATIRSIADEBASLIK B WITH(INDEX=TBLSATIRSIADEBASLIK_KARTNO) ON B.KARTNO = H.FATURAID  '#13 +
        '  LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID  '#13 +
        '  LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = H.BIRIMID  '#13 +
        '  WHERE ISNULL(B.DELETED, 0) = 0 AND ISNULL(B.FATURALASTI, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        '  UNION ALL   '#13 +
        '  SELECT   '#13 +
        '    H.ACIKLAMA, 243 AS ISLEMTIPI, B.KARTNO, ''ALIŞ İADE İRSALİYESİ'' AS ISLEM, B.TARIH, B.BELGENO, S.STOKKODU, S.CINSI,   '#13 +
        '    H.MIKTARI, BR.BIRIMADI, H.KDV,   '#13 +
        '    H.FIYATI,   '#13 +
        '    ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y) /  '#13 +
        '        CASE when ISNULL(H.MIKTARI, 0) = 0 THEN 1 ELSE H.MIKTARI END, 4) AS NETFIYAT,   '#13 +
        '    H.FIYATI * H.MIKTARI AS TUTARI,  '#13 +
        '    ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y), 4) AS NETTUTAR  '#13 +
        '  FROM TBLALIRSIADEHAREKET H  '#13 +
        '  LEFT OUTER JOIN TBLALIRSIADEBASLIK B WITH(INDEX=TBLALIRSIADEBASLIK_KARTNO) ON B.KARTNO = H.FATURAID  '#13 +
        '  LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID  '#13 +
        '  LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = H.BIRIMID  '#13 +
        '  WHERE ISNULL(B.DELETED, 0) = 0 AND ISNULL(B.FATURALASTI, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2 '#13 +

        '   ) AS A  '#13 +
        '   UNION ALL  '#13 +
        '   SELECT   '#13 +
        '     H.ACIKLAMA, 1, B.KARTNO, ''TAHSİLAT'', TARIH, BELGENO, ''TAHSİLAT'',   '#13 +
        '     CASE H.ISLEM   '#13 +
        '       WHEN 0 THEN ''NAKİT''  '#13 +
        '       WHEN 1 THEN ''ÇEK''  '#13 +
        '       WHEN 2 THEN ''SENET''  '#13 +
        '       WHEN 3 THEN ''VİSA''  '#13 +
        '       WHEN 7 THEN ''DEKONT''  '#13 +
        '     END + ''\'' + H.ACIKLAMA, NULL, NULL, NULL,  '#13 +
        '     NULL, H.TUTAR '#13 +
        '   FROM TBLCARIGIRISDETAY H  '#13 +
        '   LEFT OUTER JOIN TBLCARIGIRIS B WITH(INDEX=TBLCARIGIRIS_KARTNO) ON B.KARTNO = H.BASLIKID  '#13 +
        '   WHERE ISNULL(B.DELETED, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        '  UNION ALL '#13 +
        '   SELECT   '#13 +
        '     H.ACIKLAMA, 0, B.KARTNO, ''ÖDEME'', TARIH, BELGENO, ''ÖDEME'',   '#13 +
        '     CASE H.ISLEM   '#13 +
        '       WHEN 0 THEN ''NAKİT''  '#13 +
        '       WHEN 1 THEN ''ÇEK''  '#13 +
        '       WHEN 2 THEN ''SENET''  '#13 +
        '       WHEN 3 THEN ''VİSA''  '#13 +
        '       WHEN 4 THEN ''ŞAHSİ ÇEK''  '#13 +
        '       WHEN 5 THEN ''ŞAHSİ SENET''  '#13 +
        '       WHEN 6 THEN ''ŞAHSİ VİSA''  '#13 +
        '       WHEN 7 THEN ''DEKONT''  '#13 +
        '       WHEN 9 THEN ''ÇEK''  '#13 +
        '       WHEN 4 THEN ''SENET''  '#13 +
        '     END + ''\'' + H.ACIKLAMA, NULL, NULL, NULL,  '#13 +
        '     H.TUTAR, NULL '#13 +
        '   FROM TBLCARICIKISDETAY H  '#13 +
        '   LEFT OUTER JOIN TBLCARICIKIS B WITH(INDEX=TBLCARICIKIS_KARTNO) ON B.KARTNO = H.BASLIKID  '#13 +
        '   WHERE ISNULL(B.DELETED, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        '  UNION ALL '#13 +
        '  SELECT   '#13 +
        '     H.ACIKLAMA, 11, B.KARTNO, ''ÖDEME İADE'', TARIH, BELGENO, ''ÖDEME İADE'',   '#13 +
        '     CASE H.ISLEM   '#13 +
        '       WHEN 0 THEN ''NAKİT''  '#13 +
        '       WHEN 1 THEN ''ÇEK''  '#13 +
        '       WHEN 2 THEN ''SENET''  '#13 +
        '       WHEN 3 THEN ''VİSA''  '#13 +
        '       WHEN 4 THEN ''ŞAHSİ ÇEK''  '#13 +
        '       WHEN 5 THEN ''ŞAHSİ SENET''  '#13 +
        '       WHEN 6 THEN ''ŞAHSİ VİSA''  '#13 +
        '       WHEN 7 THEN ''DEKONT''  '#13 +
        '       WHEN 9 THEN ''ÇEK''  '#13 +
        '       WHEN 4 THEN ''SENET''  '#13 +
        '     END + ''\'' + H.ACIKLAMA, NULL, NULL, NULL,  '#13 +
        '     NULL, H.TUTAR '#13 +
        '   FROM TBLCARICIKISIADEDETAY H  '#13 +
        '   LEFT OUTER JOIN TBLCARICIKISIADE B WITH(INDEX=TBLCARICIKISIADE_KARTNO) ON B.KARTNO = H.BASLIKID  '#13 +
        '   WHERE ISNULL(B.DELETED, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        '  UNION ALL '#13 +
        '  SELECT   '#13 +
        '     H.ACIKLAMA, 12, B.KARTNO, ''TAHSİLAT İADE'', TARIH, BELGENO, ''TAHSİLAT İADE'',   '#13 +
        '     CASE H.ISLEM   '#13 +
        '       WHEN 0 THEN ''NAKİT''  '#13 +
        '       WHEN 1 THEN ''ÇEK''  '#13 +
        '       WHEN 2 THEN ''SENET''  '#13 +
        '       WHEN 3 THEN ''VİSA''  '#13 +
        '       WHEN 4 THEN ''ŞAHSİ ÇEK''  '#13 +
        '       WHEN 5 THEN ''ŞAHSİ SENET''  '#13 +
        '       WHEN 6 THEN ''ŞAHSİ VİSA''  '#13 +
        '       WHEN 7 THEN ''DEKONT''  '#13 +
        '       WHEN 9 THEN ''ÇEK''  '#13 +
        '       WHEN 4 THEN ''SENET''  '#13 +
        '     END + ''\'' + H.ACIKLAMA, NULL, NULL, NULL,  '#13 +
        '     H.TUTAR, NULL '#13 +
        '   FROM TBLCARIGIRISIADEDETAY H  '#13 +
        '   LEFT OUTER JOIN TBLCARIGIRISIADE B WITH(INDEX=TBLCARIGIRISIADE_KARTNO) ON B.KARTNO = H.BASLIKID  '#13 +
        '   WHERE ISNULL(B.DELETED, 0) = 0 AND B.CARIID = @CARIID AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        ' UNION ALL '#13 +
        ' Select '#13 +
        '     ''FASON'', B.ISLEM, B.ID,  '#13 +
        '     CASE B.ISLEM WHEN 238 THEN ''FASONA GİDİŞ'' ELSE ''FASONDAN GİRİŞ'' END, CONVERT(VARCHAR, B.TARIH, 104) AS TARIH, B.BELGENO, STOKKODU, CINSI, '#13 +
        '     D.MIKTAR - ISNULL((SELECT SUM(MIKTAR) FROM TBLSTOKURETIMISEMRIHAREKETISLEMSIZGELEN WHERE BASLIKID = B.ID AND RENK = D.RENK AND BEDEN = D.BEDEN), 0) -  '#13 +
        '      ISNULL((SELECT SUM(MIKTAR) FROM TBLSTOKURETIMISEMRIHAREKETARIZALIGELEN WHERE BASLIKID = B.ID AND RENK = D.RENK AND BEDEN = D.BEDEN), 0) AS MIKTAR,  '#13 +
        '     BR.BIRIMADI, B.PARCAUCRETI, NULL AS BORC,  '#13 +
        '     (D.MIKTAR - ISNULL((SELECT SUM(MIKTAR) FROM TBLSTOKURETIMISEMRIHAREKETISLEMSIZGELEN WHERE BASLIKID = B.ID AND RENK = D.RENK AND BEDEN = D.BEDEN), 0) -  '#13 +
        '     ISNULL((SELECT SUM(MIKTAR) FROM TBLSTOKURETIMISEMRIHAREKETARIZALIGELEN WHERE BASLIKID = B.ID AND RENK = D.RENK AND BEDEN = D.BEDEN), 0)) * B.PARCAUCRETI AS ALACAK '#13 +
        '   From TBLSTOKURETIMISEMRIHAREKETDETAY D '#13 +
        '   LEFT OUTER JOIN TBLSTOKURETIMISEMRIHAREKET B ON B.ID = D.BASLIKID '#13 +
        '   LEFT OUTER JOIN TBLSTOKURETIMISEMRI IE ON IE.ID = B.ISEMRINO '#13 +
        '   LEFT OUTER JOIN TBLSTOKURUNAGACI UA ON UA.ID = IE.URUNAGACIID '#13 +
        '   LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = UA.CIKISSTOK '#13 +
        ' LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = S.ANABIRIM '#13 +
        ' WHERE B.ISLEM IN(238, 239) AND FASONCU = @CARIID  AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        ' UNION ALL '#13 +
        ' Select '#13 +
        '   ''FASON ARIZA'', 257, B.ID, ''FASON ARIZA'', CONVERT(VARCHAR, B.TARIH, 104) AS TARIH, B.BELGENO, STOKKODU, CINSI, MIKTAR, '#13 +
        '   BR.BIRIMADI, D.FIYATI, MIKTAR * D.FIYATI AS BORC, NULL AS ALACAK '#13 +
        ' From TBLSTOKURETIMISEMRIHAREKETARIZALIGELEN D '#13 +
        ' LEFT OUTER JOIN TBLSTOKURETIMISEMRIHAREKET B ON B.ID = D.BASLIKID '#13 +
        ' LEFT OUTER JOIN TBLSTOKURETIMISEMRI IE ON IE.ID = B.ISEMRINO '#13 +
        ' LEFT OUTER JOIN TBLSTOKURUNAGACI UA ON UA.ID = IE.URUNAGACIID '#13 +
        ' LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = UA.CIKISSTOK '#13 +
        ' LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = S.ANABIRIM '#13 +
        ' WHERE D.MIKTAR > 0 AND B.ISLEM = 239  AND FASONCU = @CARIID  AND B.TARIH BETWEEN @T1 AND @T2  '#13 +
        ' UNION ALL '#13 +
        ' SELECT ACIKLAMA, ISLEMTIPI, KARTNO, ISLEM, TARIH, BELGENO, ''NAKİT'', NULL, NULL, NULL, NULL, '#13 +
		' CASE WHEN ISLEMTIPI = -1 THEN CARIBORC ELSE BORC END AS BORC, '#13 + 
		' CASE WHEN ISLEMTIPI = -1 THEN CARIALACAK ELSE ALACAK END AS ALACAK '#13 +
        ' FROM CARIDOKUM '#13 +
        ' WHERE ISLEMTIPI IN(-1, 20, 21, 184) AND CARIID = @CARIID AND TARIH BETWEEN @T1 AND @T2  '#13 +
        ' UNION ALL '#13 +
        ' SELECT  '#13 +
        '   ''DEVİR'', -1, 0, ''DEVİR'', @T1 - 1, '''', ''DEVİR'', NULL, NULL, NULL, NULL, SUM(CARIBORC), SUM(CARIALACAK)'#13 +
		' FROM CARIDOKUM '#13 + 
		' WHERE CARIID = @CARIID AND TARIH < @T1 '#13 +
        ' ) AS B ORDER BY TARIH  ';  
End;

procedure RaporLoad;
Begin
  FindParam;
  
// Filtre Kullanılırsa
  if FFilter <> '' Then
  Begin
    SetQueryParam('ekstreQ', 'TARIH1', Tarih1);
	SetQueryParam('ekstreQ', 'TARIH2', Tarih2);
	SetQueryParam('ekstreQ', 'CARIID', CariID);
	
    SetQueryParam('ekstredetayQ', 'TARIH1', Tarih1);
	SetQueryParam('ekstredetayQ', 'TARIH2', Tarih2);
	SetQueryParam('ekstredetayQ', 'CARIID', CariID);

	SetQueryParam('cariQ', 'CARIID', CariID);
  End;
End;

Function RaporFileName: String;
Begin
  Result:= ParsDir + 'Cari Kart Raporları\Hesap Ekstresi\Hesap Ekstresi Detay (Belge Nolu).fr3';
End;

Function RaporDefaultSQL: String;
Begin
  Result:= ReadSQL('');
End;

procedure Start;
Begin
End;

Procedure Finish;
Begin
End;

Function ReadFilter(Var F: String): Boolean;
Begin
  F:= '';
  Result:= ReadMusteriTarih(CariID, Tarih1, Tarih2);
  
  if Result Then
    F:= 'CARIID = ' + IntToStr(CariID) + #13#10 + 
	    'TARIH1 = ' + DateToStr(Tarih1) + #13#10 + 
		'TARIH2 = ' + DateToStr(Tarih2);
End;

procedure OnCreateReport;
Begin
//  CalcEkstreFromActivePage;

  CreateSummary('BORC', skSum);
  CreateSummary('ALACAK', skSum);
End;

procedure Execute;
Var
  F: String;
Begin
  if ReadFilter(F) Then
  Begin
    CreateReport(F, ReadSQL(F), 
      'ISLEM;TARIH;BELGENO;ACIKLAMA;STOKKODU;CINSI;MIKTARI;BIRIMADI;FIYATI;BORC;ALACAK', 
	  'İşlem;Tarih;Belge No;Açıklama;Stok Kodu;Cinsi;Miktari;Birim;Fiyati;Borç;Alacak', 
	  0);
  End;
End;

Begin
End.