void FaturaGetir()
        {
            try
            {
                Fonksiyonlar.Fatura fatura = DB.Faturas.First(s => s.FaturaID == faturaId);
                irsaliyeId       = fatura.IrsaliyeId.Value;
                txtAciklama.Text = fatura.Aciklama;
                txtFaturaNo.Text = fatura.FaturaNo;
                if (fatura.OdemeYeriId > 0)          //Fatura kapalı faturaysa
                {
                    txtFaturaTuru.SelectedIndex = 1; //Fatura türünü kapalı faturaya getirdik
                    if (fatura.OdemeYeri == "Kasa")
                    {
                        txtOdemeYeri.SelectedIndex = 0;
                        odemeYeri = fatura.OdemeYeri;

                        txtKasaAdi.Text  = DB.Kasas.First(s => s.KasaID == fatura.OdemeYeriId.Value).KasaAdi;
                        txtKasaKodu.Text = DB.Kasas.First(s => s.KasaID == fatura.OdemeYeriId.Value).KasaKodu;
                    }
                    else if (fatura.OdemeYeri == "Banka")
                    {
                        txtOdemeYeri.SelectedIndex = 1;
                        odemeYeri = fatura.OdemeYeri;

                        txtHesapAdi.Text = DB.Bankas.First(s => s.BankaID == fatura.OdemeYeriId.Value).HesapAdi;
                        txtHesapNo.Text  = DB.Bankas.First(s => s.BankaID == fatura.OdemeYeriId.Value).HesapNo;
                    }
                    odemeId = fatura.OdemeYeriId.Value;
                }
                else if (fatura.OdemeYeriId < 1)
                {
                    txtFaturaTuru.SelectedIndex = 0;
                }
                txtIrsaliyeNo.Text          = DB.Irsaliyes.First(s => s.IrsaliyeID == fatura.IrsaliyeId).IrsaliyeNo;
                txtIrsaliyeTarihi.EditValue = DB.Irsaliyes.First(s => s.IrsaliyeID == fatura.IrsaliyeId).Tarih.Value.ToShortDateString();
                txtCariAdi.Text             = DB.Caris.First(s => s.CariKodu == fatura.CariKodu).CariAdi;
                txtCariKodu.Text            = fatura.CariKodu;
                txtFaturaTarihi.EditValue   = fatura.Tarih.Value.ToShortDateString();
                var srg = from s in DB.View_Kalemlers
                          where s.FaturaId == faturaId
                          select s;
                foreach (Fonksiyonlar.View_Kalemler k in srg)
                {
                    gridView1.AddNewRow();
                    gridView1.SetFocusedRowCellValue("Miktar", k.Miktar);
                    gridView1.SetFocusedRowCellValue("BirimFiyat", k.BirimFiyat);
                    gridView1.SetFocusedRowCellValue("KDV", k.KDV);
                    gridView1.SetFocusedRowCellValue("Barkod", k.StokBarkod);
                    gridView1.SetFocusedRowCellValue("StokKodu", k.StokKodu);
                    gridView1.SetFocusedRowCellValue("StokAdi", k.StokAdi);
                    gridView1.SetFocusedRowCellValue("Birim", k.StokBirim);
                    gridView1.UpdateCurrentRow();
                }
            }
            catch (Exception e)
            {
                mesajlar.Hata(e);
            }
        }
        void Guncelle()
        {
            try
            {
                Fonksiyonlar.Fatura fatura = DB.Faturas.First(s => s.FaturaID == faturaId);
                fatura.FaturaNo    = txtFaturaNo.Text;
                fatura.Aciklama    = txtAciklama.Text;
                fatura.CariKodu    = txtCariKodu.Text;
                fatura.GenelToplam = decimal.Parse(txtGenelToplam.Text);
                fatura.OdemeYeri   = txtOdemeYeri.Text;
                fatura.OdemeYeriId = odemeId;
                fatura.EditDate    = DateTime.Now;
                fatura.EditUser    = AnaForm.UserID;
                DB.SubmitChanges();

                Fonksiyonlar.Irsaliye irsaliye = DB.Irsaliyes.First(s => s.IrsaliyeID == irsaliyeId);
                irsaliye.IrsaliyeNo = txtIrsaliyeNo.Text;
                irsaliye.Tarih      = DateTime.Parse(txtIrsaliyeTarihi.SelectedText);
                irsaliye.EditDate   = DateTime.Now;
                irsaliye.EditUser   = AnaForm.UserID;
                DB.StokHareketleris.DeleteAllOnSubmit(DB.StokHareketleris.Where(s => s.FaturaId == faturaId));
                DB.SubmitChanges();

                Fonksiyonlar.StokHareketleri[] stokHareketi = new Fonksiyonlar.StokHareketleri[gridView1.RowCount];
                for (int i = 0; i < gridView1.RowCount; i++)
                {
                    stokHareketi[i]            = new Fonksiyonlar.StokHareketleri();
                    stokHareketi[i].FaturaId   = faturaId;
                    stokHareketi[i].BirimFiyat = decimal.Parse(gridView1.GetRowCellValue(i, "BirimFiyat").ToString());
                    stokHareketi[i].GCKodu     = "C";
                    stokHareketi[i].IrsaliyeId = irsaliyeId;
                    stokHareketi[i].KDV        = decimal.Parse(gridView1.GetRowCellValue(i, "KDV").ToString());
                    stokHareketi[i].Miktar     = int.Parse(gridView1.GetRowCellValue(i, "Miktar").ToString());
                    stokHareketi[i].StokKodu   = gridView1.GetRowCellValue(i, "StokKodu").ToString();
                    stokHareketi[i].Tipi       = "Satış Faturası";
                    stokHareketi[i].SaveDate   = DateTime.Now;
                    stokHareketi[i].SaveUser   = AnaForm.UserID;
                    DB.StokHareketleris.InsertOnSubmit(stokHareketi[i]);
                }
                DB.SubmitChanges();

                Fonksiyonlar.CariHareketleri cariHareket = DB.CariHareketleris.First(s => s.EvrakTuru == "Satış Faturası" && s.EvrakId == faturaId);
                if (txtFaturaTuru.SelectedIndex == 0)
                {
                    cariHareket.Alacak = 0;
                    cariHareket.Borc   = decimal.Parse(txtGenelToplam.Text);
                }
                else if (txtFaturaTuru.SelectedIndex == 1)
                {
                    cariHareket.Alacak = decimal.Parse(txtGenelToplam.Text);
                    cariHareket.Borc   = decimal.Parse(txtGenelToplam.Text);
                }
                cariHareket.EditDate = DateTime.Now;
                cariHareket.EditUser = AnaForm.UserID;
                DB.SubmitChanges();
                mesajlar.Guncelle(true);
                Temizle();
            }
            catch (Exception e)
            {
                mesajlar.Hata(e);
            }
        }
        void FaturaKaydet()
        {
            try
            {
                Fonksiyonlar.Fatura fatura = new Fonksiyonlar.Fatura();
                fatura.Aciklama    = txtAciklama.Text;
                fatura.CariKodu    = txtCariKodu.Text;
                fatura.FaturaNo    = txtFaturaNo.Text;
                fatura.FaturaTuru  = "Satış Faturası";
                fatura.GenelToplam = decimal.Parse(txtGenelToplam.Text);
                fatura.IrsaliyeId  = irsaliyeId;
                fatura.OdemeYeri   = txtOdemeYeri.SelectedItem.ToString();
                fatura.OdemeYeriId = odemeId;
                fatura.Tarih       = DateTime.Parse(txtFaturaTarihi.Text);
                fatura.SaveDate    = DateTime.Now;
                fatura.SaveUser    = AnaForm.UserID;
                DB.Faturas.InsertOnSubmit(fatura);
                DB.SubmitChanges();
                faturaId = fatura.FaturaID;

                if (irsaliyeId < 0)
                {
                    Fonksiyonlar.Irsaliye irsaliye = new Fonksiyonlar.Irsaliye();
                    irsaliye.Aciklama   = txtAciklama.Text;
                    irsaliye.CariKodu   = txtCariKodu.Text;
                    irsaliye.FaturaId   = fatura.FaturaID;
                    irsaliye.IrsaliyeNo = txtIrsaliyeNo.Text;
                    irsaliye.Tarih      = DateTime.Parse(txtIrsaliyeTarihi.Text);
                    irsaliye.SaveDate   = DateTime.Now;
                    irsaliye.SaveUser   = AnaForm.UserID;
                    DB.Irsaliyes.InsertOnSubmit(irsaliye);
                    DB.SubmitChanges();
                    irsaliyeId        = irsaliye.IrsaliyeID;
                    fatura.IrsaliyeId = irsaliyeId;
                }

                Fonksiyonlar.StokHareketleri[] stokHareketleri = new Fonksiyonlar.StokHareketleri[gridView1.RowCount];
                for (int i = 0; i < gridView1.RowCount; i++)
                {
                    stokHareketleri[i]            = new Fonksiyonlar.StokHareketleri();
                    stokHareketleri[i].BirimFiyat = decimal.Parse(gridView1.GetRowCellValue(i, "BirimFiyat").ToString());
                    stokHareketleri[i].FaturaId   = faturaId;
                    stokHareketleri[i].GCKodu     = "C";
                    stokHareketleri[i].IrsaliyeId = irsaliyeId;
                    stokHareketleri[i].KDV        = decimal.Parse(gridView1.GetRowCellValue(i, "KDV").ToString());
                    stokHareketleri[i].Miktar     = int.Parse(gridView1.GetRowCellValue(i, "Miktar").ToString());
                    stokHareketleri[i].StokKodu   = gridView1.GetRowCellValue(i, "StokKodu").ToString();
                    stokHareketleri[i].Tipi       = "Satış Faturası";
                    stokHareketleri[i].SaveDate   = DateTime.Now;
                    stokHareketleri[i].SaveUser   = AnaForm.UserID;
                    DB.StokHareketleris.InsertOnSubmit(stokHareketleri[i]);
                }
                DB.SubmitChanges();
                Fonksiyonlar.CariHareketleri cariHareket = new Fonksiyonlar.CariHareketleri();
                cariHareket.Aciklama = txtFaturaNo.Text + " Numaralı satış faturası tutarı";

                if (txtFaturaTuru.SelectedIndex == 0)
                {
                    cariHareket.Alacak = 0;
                    cariHareket.Borc   = decimal.Parse(txtGenelToplam.Text);
                }
                else if (txtFaturaTuru.SelectedIndex == 1)
                {
                    cariHareket.Alacak = decimal.Parse(txtGenelToplam.Text);
                    cariHareket.Borc   = decimal.Parse(txtGenelToplam.Text);
                }
                cariHareket.CariId    = cariId;
                cariHareket.Tarih     = DateTime.Now;
                cariHareket.Tipi      = "SF";
                cariHareket.EvrakTuru = "Satış Faturası";
                cariHareket.EvrakId   = fatura.FaturaID;
                cariHareket.SaveDate  = DateTime.Now;
                cariHareket.SaveUser  = AnaForm.UserID;
                DB.CariHareketleris.InsertOnSubmit(cariHareket);
                DB.SubmitChanges();
                mesajlar.YeniKayit("Yeni Fatura Kaydı Başarıyla Yapıldı");
                Temizle();
            }
            catch (Exception e)
            {
                mesajlar.Hata(e);
            }
        }