﻿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 +
   '   B.TARIH, B.BELGENO, SB.SUBEADI, STOKKODU, CINSI, MIKTARI, BIRIMADI, FIYATI, FIYATI * MIKTARI AS TUTARI, '#13#10 + 
   '   B.OZELKOD1, B.OZELKOD2, B.OZELKOD3, B.OZELKOD4, B.OZELKOD5, B.ACIKLAMA  '#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 H.STOKID = S.KARTNO  '#13#10 + 
   'LEFT OUTER JOIN TBLBIRIMLEREX BX WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON H.BIRIMID = BX.KARTNO '#13#10 + 
   'LEFT OUTER JOIN TBLCARISUBELER SB WITH(INDEX=TBLCARISUBELER_CARIID) ON SB.CARIID = B.CARIID AND SB.ID = B.SUBEID '#13#10 + 
   ' WHERE B.CARIID = ' + IntToStr(CariID) + ' AND B.TARIH >= ' + QuotedStr(DateToStr(Tarih1)) + ' AND B.TARIH <= ' + QuotedStr(DateToStr(Tarih2)) + #13#10 +
   ' ORDER BY B.TARIH';
End;

Function RaporFileName: String;
Begin
  Result:= ''; // ParsDir + 'Fatura Raporları\Satış Faturaları\SatisFaturalari.fr3';
End;
   
Function RaporDefaultSQL: String;
Begin
  Result:= ReadSQL('');
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 Execute;
Var
  F: String;
Begin
  if ReadFilter(F) Then 
  Begin
    CreateReport(F, ReadSQL(F), 
      'TARIH;BELGENO;SUBEADI;STOKKODU:0;CINSI;MIKTARI;BIRIMADI:0;TUTARI;OZELKOD1;OZELKOD2:0;OZELKOD3:0;OZELKOD4:0;OZELKOD5:0;ACIKLAMA', 
	  'Tarih;Belge No;Şube;Stok Kodu;Cinsi;Miktarı;Birim Adı;Tutarı;Ö.K.1;Ö.K.2;Ö.K.3;Ö.K.4;Ö.K.5;Açıklama', 
	  0);
	  
	CReateSummary('TUTARI', skSum);
  End;
End;

Begin
End.

