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 * from( ' +  #13#10 +
     ' Select ' +  #13#10 +
       ' S.STOKKODU, S.CINSI, S.KOD1, S.KOD2, S.KOD3, S.KOD4, S.KOD5, S.ETKENMADDE AS ANAGRUP, S.GRUPADI AS ALTGRUP, ' +  #13#10 +
       ' SUM(H.CIKAN) AS SATIS ' +  #13#10 +
     ' from STOKHAREKET H ' +  #13#10 +
     ' LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID ' +  #13#10 +
     ' WHERE ISLEMTIPI IN(2, 5) AND H.TARIH >= @T1 AND H.TARIH <= @T2 ' +  #13#10 +
     ' GROUP BY S.STOKKODU, S.CINSI, S.KOD1, S.KOD2, S.KOD3, S.KOD4, S.KOD5, S.ETKENMADDE, S.GRUPADI ' +  #13#10 +
     ' ) AS A ' +  #13#10 +
     ' ORDER BY SATIS DESC';
 End;

procedure RaporLoad;
Begin
  FindParam(FFilter);
  
  SetViewCaption('BASLIK', 'PARADOX ' + DateToStr(Tarih1) + ' İLE ' + DateToStr(Tarih2) + ' ARASI EN ÇOK SATILAN STOKLAR');

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

Function RaporFileName: String;
Begin
  Result:= ParsDir + 'Stok Raporları\Satış Raporları\En Çok 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), 
     'STOKKODU:0;CINSI;SATIS;KOD1:0;KOD2:0;KOD3:0;KOD4:0;KOD5:0;ANAGRUP:0;ALTGRUP:0', 
	 'Stok Kodu;Cinsi;Satış;1. Özel Kod;2. Özel Kod;3. Özel Kod;4. Özel Kod;5. Özel Kod;Ana Grup;Alt Grup', 
	  0);
	 
	CreateSummary('SATIS', skSum); 
	CreateSummary('STOKKODU', skCount); 
  End;
End;

Begin
End.