procedure Start;
Begin
End;

Procedure Finish;
Begin
End;

Function ReadFilter(Var F: String): Boolean;
Begin
  F:= 'H.CARIID = ' + IntToStr(FIslemNo);
  Result:= True;
End;

Function ReadSQL(W: String): String;
Var
  S: String;
Begin
  S:= REPLACESTRING(W, 'GRUPADI', 'S.GRUPADI');
  
  Result:= 'Select ' + 
	' BELGENO, ISLEM, TARIH, C.FIRMAKODU, C.FIRMAADI, S.STOKKODU, S.CINSI, H.GIREN, H.CIKAN, ' + 
	' FIYATI, ISKONTOTOPLAMI, KDVTUTARI, ' +
	' CASE WHEN ISLEMTIPI IN(2, 5) THEN H.CIKAN * FIYATI - H.ISKONTOTOPLAMI ELSE 0 END AS ALACAK, ' +
	' CASE WHEN ISLEMTIPI IN(3, 4) THEN H.GIREN * FIYATI - H.ISKONTOTOPLAMI ELSE 0 END AS BORC ' +	
	' 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 IN(2, 3, 4, 5) ';
 
  if S <> '' Then
    Result:= Result + ' AND ' + S;
  Result:= Result + ' ORDER BY TARIH, STOKKODU';
End;

procedure Execute;
Var
  IDS: String;
Begin
  Form.Caption:= 'Cari Stok İlişkisi';
  
  SetPanelCaption('Cari Stok İlişkisi');
  SetPanelRemarks('Bu Cari Kartın İşlem Yaptığı Stoklar Listesi');
  SetIconIndex(28);
  
  if ReadFilter(IDS) Then
  Begin
    CreateGrid(IDS, ReadSQL(IDS), 
     'ISLEM;FIRMAKODU:0;FIRMAADI;STOKKODU:0;CINSI;TARIH;BELGENO;GIREN;CIKAN;FIYATI;KDVTUTARI:0;ISKONTOTOPLAMI;BORC;ALACAK', 
	 'İşlem;Firma Kodu;Firma Adı;Stok Kodu;Cinsi;Tarih;Belge No;Giren;Çıkan;Fiyatı;KDV;İskonto;Borç;Alacak', 
	  0);
  End;
  
  CreateSummary('FIRMAKODU', skCount);
  CreateSummary('GIREN', skSum);
  CreateSummary('CIKAN', skSum);
  CreateSummary('BORC', skSum);
  CreateSummary('ALACAK', skSum);
  CreateSummary('ISKONTOTOPLAMI', skSum);
  CreateSummary('KDVTUTARI', skSum);
End;

Begin
End.