Var
  Tarih1, Tarih2: TDateTime;

procedure FindParam(FF: String);
Var 
  S: TStringList;
  I: Integer;
  C: String;
Begin
  S:= TStringList.Create;
  S.Text:= FF;
  
  For I:= 0 to S.Count - 1 Do
  Begin
    C:= S[I];
	
	if Length(C) > 9 Then
	  Delete(C, 1, 9);
	
    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
  if W <> '' Then
    FindParam(W)
  else 
    FindParam(FFilter);
  
  Result:= 'Declare @T1 DateTime, @T2 DateTime ' + #13#10 +
     ' Set @T1 = ' + QuotedStr(DateToStr(Tarih1)) +  #13#10 +
     ' Set @T2 = ' + QuotedStr(DateToStr(Tarih2)) +  #13#10 +
     ' ' + #13#10 +
     ' Select ' + #13#10 +
     ' A.*, A.FIYATI * A.MIKTARI AS TUTARI, A.NETFIYAT * A.MIKTARI AS NETTUTAR, (A.FIYATI - A.NETFIYAT) * A.MIKTARI AS TOPLAMISKONTO ' + #13#10 +
     ' from ( ' + #13#10 +
     ' SELECT ' + #13#10 +
     ' H.ACIKLAMA, B.TARIH, B.BELGENO, S.STOKKODU, S.CINSI, S.ETKENMADDE AS GRUPADI, ' + #13#10 +
     '   H.MIKTARI, BR.BIRIMADI, H.KDV, H.FIYATI AS FIYATI, C.FIRMAKODU, C.FIRMAADI, P.AD + '' '' + P.SOYAD AS PERSONEL, ' + #13#10 +
     '   ROUND(dbo.ISKONTODUS(dbo.ISKONTODUS(H.MIKTARI * H.FIYATI - H.ISKONTOTOPLAMI, B.ALTISKONTO1Y), B.ALTISKONTO2Y) / ' + #13#10 +
     '   CASE when ISNULL(H.MIKTARI, 0) = 0 THEN 1 ELSE H.MIKTARI END, 4) AS NETFIYAT ' + #13#10 +
     ' FROM TBLSATFATHAREKET H ' + #13#10 +
     ' LEFT OUTER JOIN TBLSATFATBASLIK B WITH(INDEX=TBLSATFATBASLIK_KARTNO) ON B.KARTNO = H.FATURAID ' + #13#10 +
     ' LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID ' + #13#10 +
     ' LEFT OUTER JOIN TBLBIRIMLEREX BR WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON BR.KARTNO = H.BIRIMID ' + #13#10 +
     ' LEFT OUTER JOIN TBLCARI C WITH(INDEX=TBLCARI_KARTNO) ON B.CARIID = C.KARTNO ' + #13#10 +
     ' LEFT OUTER JOIN TBLPERSONEL P  WITH(INDEX=TBLPERSONEL_KARTNO) ON B.PERSONELID = P.KARTNO ' + #13#10 +
     ' WHERE ISNULL(B.DELETED, 0) = 0 AND B.TARIH BETWEEN @T1 AND @T2 ' + #13#10 +
     ' ) AS A ' + #13#10 +
     ' WHERE ROUND(FIYATI - NETFIYAT, 2) > 0.000 ' + #13#10 +
     ' ORDER BY TARIH, CINSI';
End;

procedure RaporLoad;
Begin
  FindParam(FFilter);
  
  SetViewCaption('BASLIK', 'PARADOX ' + DateToStr(Tarih1) + ' İLE ' + DateToStr(Tarih2) + ' ARASI İSKONTO RAPORU');

  SetQueryParam('KullaniciQ', 'TARIH1', Tarih1);
  SetQueryParam('KullaniciQ', 'TARIH2', Tarih2);
End;

Function RaporFileName: String;
Begin
  Result:= ''; //ParsDir + 'Stok Raporları\Satış Raporları\En Az Satılanlar.fr3';
End;

procedure Start;
Begin
End;

Procedure Finish;
Begin
End;

Function ReadFilter(Var F: String): Boolean;
Var
  t1, t2: TDateTime;
Begin
  Result:= Input2Date('Tarihleri Girin', t1, t2);
  if Result Then
  Begin
    F:= 'TARIH1 = ' + DateToStr(t1) + #13#10 + 'TARIH2 = ' + DateToStr(t2);
  End;
End;

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

procedure Execute;
Var
  IDS: String;
Begin
  if ReadFilter(IDS) Then
  Begin
	CreateReport(IDS, ReadSQL(IDS), 
     'TARIH;BELGENO;FIRMAKODU:0;FIRMAADI;STOKKODU:0;CINSI;ACIKLAMA;GRUPADI;MIKTARI;BIRIMADI:0;FIYATI;TUTARI;NETFIYAT;NETTUTAR;TOPLAMISKONTO', 
	 'Tarih;Belge No;Firma Kodu;Firma Adı;Stok Kodu;Cinsi;Açıklama;Grup Adı;Miktarı;Birim Adı;Fiyatı;Tutarı;İskontolu Fiyatı;İskontolu Tutarı;İskonto Toplamı', 
	  0);
	 
	CreateSummary('TUTARI', skSum); 
	CreateSummary('NETTUTAR', skSum); 
	CreateSummary('TOPLAMISKONTO', skSum); 
	
	CreateSummary('STOKKODU', skCount); 
  End;
End;

Begin
End.