Var
  cariID,
  depoID,
  personelID: Integer;

Function ReadSQL(W: String): String;
Begin
  Result:= 'Select ' + #13#10 +
    '   D.KARTNO, C.FIRMAKODU, C.FIRMAADI, ISNULL(P.AD, '''') + '' '' + ISNULL(P.SOYAD, '''') AS PERSONEL, BELGENO, D.TARIH, ' + #13#10 +
	'   AY, dbo.TRMONTHNAME(D.AY) AS AYADI, D.YIL,  ' + #13#10 +
    '   TUTARI, DP.KOD AS DEPOKOD, DP.ACIKLAMA AS DEPOACIKLAMA, D.OZELKOD1, D.OZELKOD2, D.OZELKOD3, D.OZELKOD4, D.OZELKOD5 ' + #13#10 +
    ' FROM CARIDOKUM D ' + #13#10 +
    ' LEFT OUTER JOIN TBLCARI C WITH(INDEX=TBLCARI_KARTNO) ON C.KARTNO = D.CARIID ' + #13#10 +
    ' LEFT OUTER JOIN TBLPERSONEL P WITH(INDEX=TBLPERSONEL_KARTNO) ON P.KARTNO = D.PERSONEL ' + #13#10 +
    ' LEFT OUTER JOIN TBLDEPOLAR DP WITH(INDEX=TBLDEPOLAR_KARTNO) ON DP.KARTNO = D.DEPOID ' +  #13#10 +
	' WHERE ISLEMTIPI = 2' + #13#10;

  if W <> '' Then
    Result:= Result + ' AND ' + W;
End;

procedure RaporLoad;
Begin
  SetViewCaption('BASLIK', 'PARADOX SATIŞ FATURALARI ANALİZİ');
// Filtre Kullanılırsa
  if FFilter <> '' Then
    AddQueryToSQL('KullaniciQ', ' AND ' + FFilter);
  AddQueryToSQL('KullaniciQ', 'ORDER BY D.TARIH');
End;

Function RaporFileName: String;
Begin
  Result:= ParsDir + 'Fatura Raporları\Satış Faturaları\SatisFaturalariAnaliz.fr3';
End;

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

// cxButton2.OnClick
procedure cxButton2Click(Sender: TObject);
begin
  Self.Close;
end;

// OK.OnClick
procedure cxButton1Click(Sender: TObject);
Var
  W: String;

  procedure Ekle(fld: String; VL: Integer);
  Begin
    if VL <> -1 Then
	Begin
	  if W = '' Then W:= fld Else W:= W + ' AND ' + fld;
	  W:= W + ' = ' + IntToSTr(VL);
	End;
  End;
  
begin
  W:= ' CAST(CONVERT(VARCHAR, D.TARIH, 104) AS DATETIME) >= CAST(' + QuotedStr(FormatDateTime('dd.mm.yyy', Self.Tarih1.Date)) + ' AS DATETIME) ' + 
      ' AND CAST(CONVERT(VARCHAR, D.TARIH, 104) AS DATETIME) <= CAST(' + QuotedStr(FormatDateTime('dd.mm.yyy', Self.Tarih2.Date)) + ' AS DATETIME)';	;
  
  Ekle('D.CARIID', cariID);
  Ekle('D.PERSONEL', personelID);
  Ekle('D.DEPOID', depoID);
  
  if not ReadFilterOnly Then
  Begin
    CreateReport(W, ReadSQL(W), 
	 'FIRMAKODU:0;FIRMAADI;BELGENO;TARIH;TUTARI;PERSONEL:0;DEPOKOD:0;DEPOACIKLAMA:0;OZELKOD1:0;' + 
	 'OZELKOD2:0;OZELKOD3:0;OZELKOD4:0;OZELKOD5:0;AY;AYADI;YIL',
	 'Firma Kodu;Firma Adı;Belge No;Tarih;Tutarı;Personel;Depo Kodu;Depo Açıklama;Ö.K.1;Ö.K.2;Ö.K.3;Ö.K.4;Ö.K.5;Ay;Ay Adı;Yıl',
	 2);
	
	AddDataField('TUTARI'); 
	AddRowField('FIRMAADI');
	AddColumnField('AYADI');

	Self.Close;
  End
  Else
  Begin
    SetReportData(W, ReadSQL(W));
	Self.Close;
  End;
end;

procedure firmaLCBPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
Var
  IDS: String;
begin
  IDS:= SelectRecord(
     'SELECT KARTNO, FIRMAKODU, FIRMAADI, FIRMAUNVANI FROM TBLCARI WHERE DELETED = 0', 
     'FIRMAKODU;FIRMAADI;FIRMAUNVANI', 
	 'Firma Kodu;Firma Adı;Firma Ünvanı', 
	 'KARTNO', 
	 'Firma Kodu / Adı / Ünvanı', 
	 'FIRMAKODU;FIRMAADI;FIRMAUNVANI', 
	 False);
  if IDS <> '' Then
  Begin
    cariID:= strToInt(IDS);
    Self.firmaLCB.Text:= GetDBValue('SELECT FIRMAADI FROM TBLCARI WITH(INDEX=TBLCARI_KARTNO) WHERE KARTNO = ' + IDS);
  End;
end;

procedure personelLCBPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
Var
  IDS: String;
begin
  IDS:= SelectRecord(
     'Select AD, SOYAD, GOREVI, DEPARTMAN, KARTNO From TBLPERSONEL WHERE DELETED = 0', 
     'AD;SOYAD;DEPARTMAN;GOREVI', 
	 'Adı; Soy Adı;Departman;Görevi', 
	 'KARTNO', 
	 'Adı / Soy Adı', 
	 'AD;SOYAD', 
	 False);
  if IDS <> '' Then
  Begin
    personelID:= strToInt(IDS);
    Self.personelLCB.Text:= GetDBValue('SELECT AD + '' '' + SOYAD FROM TBLPERSONEL WITH(INDEX=TBLPERSONEL_KARTNO) WHERE KARTNO = ' + IDS);
  End;
end;

procedure depoLCBPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer);
Var
  IDS: String;
begin
  IDS:= SelectRecord(
     'SELECT ID, KARTNO, KOD, ACIKLAMA FROM TBLDEPOLAR WHERE DELETED = 0', 
     'KOD;ACIKLAMA', 
	 'Depo Kodu; Açıklama', 
	 'KARTNO', 
	 'Depo Kodu / Açıklama', 
	 'KOD;ACIKLAMA', 
	 False);
  if IDS <> '' Then
  Begin
    depoID:= strToInt(IDS);
    Self.depoLCB.Text:= GetDBValue('SELECT KOD + ''\\'' + ACIKLAMA FROM TBLDEPOLAR WITH(INDEX=TBLDEPOLAR_KARTNO) WHERE KARTNO = ' + IDS);
  End;
end;

Begin
  cariID:= -1;
  depoID:= -1;
  personelID:= -1;
  
  Self.Tarih1.Date:= Date;
  Self.Tarih2.Date:= Date;

  self.firmaLCB.Properties.OnButtonClick:= @firmaLCBPropertiesButtonClick;
  self.personelLCB.Properties.OnButtonClick:= @personelLCBPropertiesButtonClick;
  self.depoLCB.Properties.OnButtonClick:= @depoLCBPropertiesButtonClick;
End.
