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
  FindParam;
    
  Result:='SET DATEFORMAT DMY ' + #13#10 +
		' SELECT  ' + #13#10 +
		'   TARIH, BELGENO, FIYATI, KOD1, KOD2, KOD3, KOD4, CAST(CASE WHEN RTRIM(LTRIM(ISNULL(KOD5, ''''))) = '''' THEN ''0.00'' ELSE REPLACE(KOD5, '','', ''.'') END AS DECIMAL(18, 4)) AS KOD5, ACIKLAMA ' + #13#10 +
		' from DETAYCARIDOKUM' + #13#10 +
		' WHERE ISLEMTIPI = 2 AND CARIID = ' + IntToStr(CariID) + ' AND TARIH >= ' + QuotedStr(DateToStr(Tarih1)) + ' AND TARIH <= ' + QuotedStr(DateToStr(Tarih2)) +  #13#10 +
		' ORDER BY TARIH'; 
End;

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

Function RaporFileName: String;
Begin
  Result:= ParsDir + 'Satış Raporları\Detaylı Satış (Özel Kodlu).fr3';
End;

Function RaporDefaultSQL: String;
Begin
  Result:= ReadSQL('SET DATEFORMAT DMY ' + #13#10 +
		' SELECT  ' + #13#10 +
		'   TARIH, FIYATI, BELGENO, KOD1, KOD2, KOD3, KOD4, CAST(CASE WHEN RTRIM(LTRIM(ISNULL(KOD5, ''''))) = '''' THEN 0 ELSE KOD5 END AS VARCHAR) AS KOD5, ACIKLAMA ' + #13#10 +
		' from DETAYCARIDOKUM' + #13#10 +
		' WHERE ISLEMTIPI = 2 ' + #13#10 +
		' ORDER BY TARIH');
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
End;

procedure Execute;
Var
  F: String;
Begin
  if ReadFilter(F) Then
  Begin
    CreateReport(F, ReadSQL(F), 
      'TARIH;BELGENO;FIYATI;KOD1;KOD2;KOD3;KOD4;KOD5;ACIKLAMA', 
	  'Tarih;Belge No;Fiyatı;Ö.K.1;Ö.K.2;Ö.K.3;Ö.K.4;Ö.K.5;Açıklama', 
	  0);
	  
	CReateSummary('KOD5', skSum);
  End;
End;

Begin
End.