procedure Start;
Begin
End;

Procedure Finish;
Begin
End;

Function ReadFilter(Var F: String): Boolean;
Begin
  F:= IntToStr(FIslemNo);
  Result:= True;
End;

Function ReadSQL(W: String): String;
Begin
  if W <> '' Then
    W:= ' AND H.CARIID = ' + W;
  
  Result:= 'Select ' +
    ' BELGENO, TARIH, FIRMAKODU, FIRMAADI, STOKKODU, CINSI, SUM(CIKAN) AS CIKAN, ' +
    ' ISKONTOTOPLAMI, KDVTUTARI, MALIYETFIYATI, FIYATI, NETFIYAT, ' +
    '  SUM(TUTARI) AS TUTARI, SUM(MALIYETTUTARI) AS MALIYETTUTARI, SUM(KAR) AS KAR, ' +
    ' CASE ' +
    '   WHEN TUTARI = 0 THEN CASE WHEN MALIYETTUTARI = 0 THEN 100 ELSE -100 END ' +
    '   WHEN MALIYETTUTARI = 0 THEN 100 ' +
    ' ELSE ' +
    '   Round(100 / (MALIYETTUTARI / KAR), 2) ' +
    ' END AS KARYUZDESI ' +
    ' FROM( ' +
    'Select ' +
    '  BELGENO, TARIH, C.FIRMAKODU, C.FIRMAADI, S.STOKKODU, S.CINSI, H.CIKAN, ' +
    '	FIYATI, ISKONTOTOPLAMI, KDVTUTARI, H.MALIYET AS MALIYETFIYATI, ' +
    '	H.CIKAN * FIYATI - H.ISKONTOTOPLAMI AS TUTARI, ' +
    '	Round((H.CIKAN * FIYATI - (H.ISKONTOTOPLAMI / H.KUR)) / H.CIKAN, 2) AS NETFIYAT, ' +
    '	H.MALIYET * H.CIKAN AS MALIYETTUTARI, ' +
    '	(H.CIKAN * FIYATI - H.ISKONTOTOPLAMI) - (H.MALIYET * H.CIKAN) AS KAR ' +
    ' from STOKHAREKET H ' +
    ' LEFT OUTER JOIN TBLCARI C WITH(INDEX=TBLCARI_KARTNO) ON C.KARTNO = H.CARIID ' +
    ' LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID ' +
    ' WHERE ' +
    '  H.ISLEMTIPI = 2 ' +
    W +
    ') AS A ' +
    'GROUP BY ' +
      'BELGENO, TARIH, FIRMAKODU, FIRMAADI, STOKKODU, CINSI, TUTARI, MALIYETTUTARI, KAR, ' +
    '  ISKONTOTOPLAMI, KDVTUTARI, FIYATI, MALIYETFIYATI, NETFIYAT'; 
  Result:= Result + ' ORDER BY TARIH, BELGENO, STOKKODU';
End;

procedure Execute;
Var
  IDS: String;
Begin
  Form.Caption:= 'Firma Bazlı Karlılık';
  
  SetPanelCaption('Firma Bazlı Karlılık');
  SetPanelRemarks('Bu Firmaya Yapılan Satışlar ve Kar Oranları');
  SetIconIndex(28);
  
  if ReadFilter(IDS) Then
  Begin
    CreateGrid(IDS, ReadSQL(IDS), 
     'FIRMAKODU:0;FIRMAADI;STOKKODU:0;CINSI;TARIH;BELGENO;CIKAN;FIYATI;MALIYETFIYATI;NETFIYAT;TUTARI;MALIYETTUTARI;KAR;KARYUZDESI', 
	 'Firma Kodu;Firma Adı;Stok Kodu;Cinsi;Tarih;Belge No;Miktar;Fiyatı;Maliyet F.;Net Fiyatı;Tutarı;Maliyet T.;Kar;Kar %', 
	  0);
  End;
  
  CreateSummary('FIRMAKODU', skCount);
  CreateSummary('CIKAN', skSum);
  CreateSummary('TUTARI', skSum);
  CreateSummary('MALIYETTUTARI', skSum);
  CreateSummary('KAR', skSum);
End;

Begin
End.