Var 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('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 + ' Declare @T1 DateTime, @T2 DateTime '#13#10 + ' '#13#10 + ' Set @T1 = ' + QuotedStr(DateToStr(Tarih1)) + #13#10 + ' Set @T2 = ' + QuotedStr(DateToStr(Tarih2)) + #13#10 + ' '#13#10 + ' Select ' + ' CINSI, PERSONEL, SUM(MIKTARI * ALISFIYATI1) AS ALISFIYATI, SUM(MIKTARI * NETFIYATI) AS SATISFIYATI, '#13#10 + ' SUM(MIKTARI) AS MIKTAR, SUM(KAR) AS KAR, KOD1, KOD2, KOD3, KOD4, KOD4, KOD5, GRUPADI, ALTGRUP '#13#10 + ' FROM( '#13#10 + ' Select '#13#10 + ' H.ISLEM, P.AD + '' '' + P.SOYAD AS PERSONEL, '#13#10 + ' CASE WHEN H.CARIID < 1 THEN ''PEŞİN'' ELSE C.FIRMAADI END AS FIRMAADI, '#13#10 + ' S.CINSI, H.FIYATI, CASE WHEN S.KDVDAHIL = 1 THEN 1 ELSE ((100 + ISNULL(S.KDV, 1)) / 100) END * H.NETFIYATI AS NETFIYATI, H.MALIYET, B.ALISFIYATI1, H.MIKTARI, (NETFIYATI - ALISFIYATI1) * MIKTARI AS KAR, '#13#10 + ' H.KDV, H.TARIH, S.ETKENMADDE AS GRUPADI, S.GRUPADI AS ALTGRUP, S.KOD1, S.KOD2, S.KOD3, S.KOD4, S.KOD5 '#13#10 + ' from STOKHAREKET H '#13#10 + ' LEFT OUTER JOIN TBLSTOKLAR S WITH(INDEX=TBLSTOKLAR_KARTNO) ON S.KARTNO = H.STOKID '#13#10 + ' LEFT OUTER JOIN TBLBIRIMLEREX B WITH(INDEX=TBLBIRIMLEREX_KARTNO) ON B.KARTNO = H.BIRIMID '#13#10 + ' LEFT OUTER JOIN TBLCARI C WITH(INDEX=TBLCARI_KARTNO) ON C.KARTNO = H.CARIID '#13#10 + ' LEFT OUTER JOIN TBLPERSONEL P WITH(INDEX=TBLPERSONEL_KARTNO) ON P.KARTNO = H.PERSONELID '#13#10 + ' WHERE H.ISLEMTIPI IN(2, 157) AND TARIH BETWEEN @T1 AND @T2 '#13#10 + ' ) AS A '#13#10 + ' GROUP BY CINSI, PERSONEL, KOD1, KOD2, KOD3, KOD4, KOD4, KOD5, GRUPADI, ALTGRUP '#13#10 + ' ORDER BY CINSI'; End; procedure RaporLoad; Begin FindParam; // Filtre Kullanılırsa if FFilter <> '' Then Begin SetQueryParam('kullaniciQ', 'TARIH1', Tarih1); SetQueryParam('kullaniciQ', 'TARIH2', Tarih2); End; End; Function RaporFileName: String; Begin Result:= ParsDir + 'Satış Raporları\Detaylı Satış (Özel Kodlu).fr3'; End; Function RaporDefaultSQL: String; Begin Result:= ReadSQL(''); End; procedure Start; Begin End; Procedure Finish; Begin End; Function ReadFilter(Var F: String): Boolean; Begin F:= ''; Result:= Input2Date('Tarihleri Girin', Tarih1, Tarih2); if Result Then F:= '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), 'PERSONEL;CINSI;MIKTAR;ALISFIYATI;SATISFIYATI;KAR;GRUPADI;ALTGRUP;KOD1;KOD2;KOD3:0;KOD4:0;KOD5:0;', 'Plasiyer;Cinsi;Miktar;Alış Fiyatı;Satış Fiyatı;Kar;Grup Adı;Alt Grup Adı;Ö.K.1;Ö.K.2;Ö.K.3;Ö.K.4;Ö.K.5', 0); CreateSummary('ALISFIYATI', skSum); CreateSummary('SATISFIYATI', skSum); CreateSummary('KAR', skSum); CreateSummary('CINSI', skCount); End; End; Begin End.