void FisYazdir3(bool Disigner, string RaporDosyasi, string fkFaturaToplu)
        {
            try
            {
                System.Data.DataSet ds = new DataSet("Test");

                string sql = "";
                sql = @"SELECT sd.fkStokKarti,
case when sd.isKdvHaric=1 then 
 ((sk.SatisFiyatiKdvHaric*sd.iskontoyuzdetutar)/100)
else
 ((sd.SatisFiyati*sd.iskontoyuzdetutar)/100)
end iskontotutar,

sd.iskontoyuzdetutar,

sk.pkStokKarti,sk.Stokadi,
sk.Barcode,
sk.Stoktipi,sk.StokKod,
sd.KdvOrani,
sk.Stoktipi as Birimi,
sum(sd.Adet) as Adet,
sd.NakitFiyat,
sd.SatisFiyati,
0 as koliicitanefiyati,

case when sd.isKdvHaric=1 then 
sum(sd.Adet*((sd.SatisFiyati*sd.iskontoyuzdetutar)/100))
else
sum(sd.Adet*((sd.SatisFiyati*sd.iskontoyuzdetutar)/100))
end  iskontotutaradet,

case when sd.isKdvHaric=1 then 
sum(sd.Adet*((sd.SatisFiyati- (sd.SatisFiyati*sd.iskontoyuzdetutar)/100)
+
((sd.SatisFiyati- (sd.SatisFiyati*sd.iskontoyuzdetutar)/100)*sd.KdvOrani)/100))
else
sum(sd.Adet* (sd.SatisFiyati-((sd.SatisFiyati*sd.iskontoyuzdetutar)/100)-sd.Faturaiskonto))
end Tutar,

case when sd.isKdvHaric=1 then 
sum(((sd.SatisFiyati*sd.KdvOrani)/(100+sd.KdvOrani)))
else
sum(((sd.SatisFiyati-((sd.SatisFiyati*sd.KdvOrani)/(100+sd.KdvOrani)))*sd.KdvOrani)/100)
end KdvTutari,

case when sd.isKdvHaric=1 then 
sum(sd.Adet*(((sk.SatisFiyati-((sk.SatisFiyati*sd.iskontoyuzdetutar)/100))*sd.KdvOrani)/(100+sd.KdvOrani)))
else
sum(sd.Adet*((((sd.SatisFiyati-sd.iskontotutar)-(((sd.SatisFiyati-sd.iskontotutar)*sd.KdvOrani)/(100+sd.KdvOrani)))*sd.KdvOrani)/100))
 end KdvToplamTutari,
case when sd.isKdvHaric=1 then 
sd.SatisFiyati
else
sd.SatisFiyati-((sd.SatisFiyati*sd.KdvOrani)/(100+sd.KdvOrani))
end SatisFiyatiKdvHaric,

--sum((sd.SatisFiyati-sd.iskontotutar-sd.Faturaiskonto))/SUM(sd.Adet) as SatisFiyatiiskontolutane,
sum((sd.SatisFiyati-sd.iskontotutar-sd.Faturaiskonto)) as SatisFiyatiiskontolu,
sum(sd.Adet*(sd.SatisFiyati-sd.iskontotutar-sd.Faturaiskonto)) as FatuaToplami,
sum(sd.Faturaiskonto) as Faturaiskonto,
--kdvli iskontolu düşmüş tutar
sum(sd.Adet*((sd.SatisFiyati-((sd.SatisFiyati*sd.iskontoyuzdetutar)/100)-sd.Faturaiskonto)-
--iskontolu kdv düşmüş tutar
((sd.SatisFiyati-((sd.SatisFiyati*sd.iskontoyuzdetutar)/100)-sd.Faturaiskonto)*sd.KdvOrani)/(100+sd.KdvOrani)))
--*sd.KdvOrani)/(100+sd.KdvOrani))
as  toplamtutar_iskontolu,
-- satış fiyatı kdv haric
sum(sd.Adet*
((sd.SatisFiyati-((sd.SatisFiyati*sd.KdvOrani)/(100+sd.KdvOrani)))*sd.iskontoyuzdetutar)/100)--+sd.iskontoyuzdetutar)
as toplamiskonto_kdvsiz

FROM SatisDetay sd with(nolock)  
INNER JOIN (select pkStokKarti,StokKod,Stokadi,Barcode,Stoktipi,KdvOrani,Mevcut,SatisFiyati,SatisFiyatiKdvHaric from StokKarti sk with(nolock))sk  ON  sd.fkStokKarti = sk.pkStokKarti 
where sd.fkFaturaDurumu=1 and sd.fkFaturaToplu=@fkFaturaToplu 
group by sd.fkStokKarti,
sd.iskontoyuzdetutar,
sk.pkStokKarti,
sk.Stokadi,
sk.Barcode,
sk.Stoktipi,
sk.StokKod,
sd.isKdvHaric,
sd.KdvOrani,
sd.NakitFiyat,
sd.SatisFiyati,sk.SatisFiyatiKdvHaric";
//having sum(Adet)>0";

                sql = sql.Replace("@fkFaturaToplu", fkFaturaToplu);

                DataTable dtSatisDetay = DB.GetData(sql);

                if (dtSatisDetay.Rows.Count == 0)
                {
                    MessageBox.Show("Yazdırılacak Stok Bulunamadı.");
                    return;
                }

                dtSatisDetay.TableName = "FisDetay";
                ds.Tables.Add(dtSatisDetay);

//Firma Bilgileri
                string sqlFis = @"SELECT 
ft.Tarih,
Tutar,
FaturaAdresi as Adres,
FaturaTarihi,
VergiDairesi,
VergiNo,
FaturaUnvani,
dbo.fon_MusteriBakiyesi(ft.fkFirma) as Bakiye,

case when sd.isKdvHaric=1 then 
sum(sd.Adet*((sd.SatisFiyati- (sd.SatisFiyati*sd.iskontoyuzdetutar)/100)
+
((sd.SatisFiyati- (sd.SatisFiyati*sd.iskontoyuzdetutar)/100)*sd.KdvOrani)/100))
else
sum(sd.Adet* (sd.SatisFiyati-((sd.SatisFiyati*sd.iskontoyuzdetutar)/100)-sd.Faturaiskonto))
end Tutar,

case when sd.isKdvHaric=1 then 
dbo.fnc_ParayiYaziyaCevir(sum(sd.Adet*((sd.SatisFiyati- (sd.SatisFiyati*sd.iskontoyuzdetutar)/100)
+
((sd.SatisFiyati- (sd.SatisFiyati*sd.iskontoyuzdetutar)/100)*sd.KdvOrani)/100)),2)
else
dbo.fnc_ParayiYaziyaCevir(sum(sd.Adet* (sd.SatisFiyati-((sd.SatisFiyati*sd.iskontoyuzdetutar)/100)-sd.Faturaiskonto)),2)
end rakamoku

FROM FaturaToplu  ft with(nolock) 
left join SatisDetay sd with(nolock) on sd.fkFaturaToplu=ft.pkFaturaToplu
WHERE pkFaturaToplu=@pkFaturaToplu
group by ft.fkFirma,ft.Tarih,Tutar,FaturaAdresi,FaturaTarihi,VergiDairesi,VergiNo,
FaturaUnvani,sd.isKdvHaric";

                sqlFis = sqlFis.Replace("@pkFaturaToplu", fkFaturaToplu);

                DataTable Fis = DB.GetData(sqlFis);
                Fis.TableName = "Fis";
                ds.Tables.Add(Fis);

                //Fatura Bilgileri
                DataTable FaturaBaslik = DB.GetData(@"SELECT * from  FaturaToplu ft with(nolock) where pkFaturaToplu=" + fkFaturaToplu);
                FaturaBaslik.TableName = "FaturaBaslik";
                ds.Tables.Add(FaturaBaslik);

                //Fatura Bilgileri
                DataTable FaturaFirma = DB.GetData(@"SELECT * from  Firmalar with(nolock) where pkFirma=" + pkFirma);
                FaturaFirma.TableName = "FaturaFirma";
                ds.Tables.Add(FaturaFirma);

                string exedizini = Path.GetDirectoryName(Application.ExecutablePath);

                xrCariHareket rapor = new xrCariHareket();
                rapor.DataSource = ds;
                rapor.LoadLayout(RaporDosyasi);
                rapor.Name        = "FaturaToplu";
                rapor.Report.Name = "FaturaToplu";

                if (Disigner)
                {
                    rapor.ShowDesignerDialog();
                }
                else
                {
                    rapor.ShowPreviewDialog();//.Print(YaziciAdi);//.ShowPreview();
                }
            }
            catch (Exception exp)
            {
                MessageBox.Show("Hata Oluştu " + exp.Message);
            }
        }