public Vergi GetVergi(String vergiNo)
        {
            var   db    = new ContextEntitiess();//Veri tabanımızı çağırdık
            Vergi vergi = db.Vergi.Where(q => q.VergiNumarası == vergiNo).FirstOrDefault();

            return(vergi);
        }
    private void Urun_Grubu_Islemleri()
    {
        UrunGrubu ug = UrunGrubu.tum_gruplar();

        urun_grubu_listesi = new ObservableCollection <UrunGrubu>(UrunGrubu.urun_gruplari());
        urun_grubu_listesi.Add(new UrunGrubu {
            grup_adi = ug.grup_adi, yazici_id = ug.yazici_id, urun_turu_id = ug.urun_turu_id, vergi_id = ug.vergi_id
        });
        Yazici yzc = Yazici.yazicilar();

        yazici_listesi = new ObservableCollection <Yazici>(Yazici.tum_yazicilar());
        yazici_listesi.Add(new Yazici {
            adi = yzc.adi, id = yzc.id
        });
        Vergi vrg = Vergi.tum_vergileri_getir();

        vergi_listesi = new ObservableCollection <Vergi>(Vergi.tum_vergiler());
        vergi_listesi.Add(new Vergi {
            id = vrg.id, vergi_orani = vrg.vergi_orani
        });
        urunGrublariGrid.ItemsSource = urun_grubu_listesi;
        yazicilar.ItemsSource        = yazici_listesi;
        vergiler.ItemsSource         = vergi_listesi;
    }
        static NetleEFatura GetSMMInvoice(Guid uuid)
        {
            var nef = new NetleEFatura();

            nef.GUID = Guid.NewGuid().ToString();
            ///  Belge numarası, özel bir yapıdadır, ilk 3 karakter fatura serisi(Burada seri SMM olarak belirlendi),
            /// sonraki dört karakter yıl (2018) sonraki 9 karakter, müteselsil şekilde devam eden numara olmalıdır.
            /// Fatura numarası ve fatura tarihi birbiriyle sıralı olmalıdır.
            nef.DuzenlenmeTarihi = DateTime.Now;     // Belge düzenlenme zamanı
            nef.Tip      = NetleEFaturaType.SATIS;   // Bu şekilde sabit belirtilmelidir.
            nef.Aciklama = "Yalnız : DörtBinYüz TL"; // Belgede not olarak eklenecek bir açıklama varsa yazılır.
            nef.No       = "SMM2018000000315";

            // Bu şekilde sabit olmalıdır.
            nef.Senaryo = NetleEFaturaSenaryoType.EARSIVBELGE;

            // Belgeyi kesen kişi / firmanın bilgileri. Belge bir şahıs tarafından kesiliyorsa Sahis bölümü doldurulmalıdır.
            nef.Tedarikci = new Tedarikci
            {
                FirmaAdi = "SMMİsim SMMSoyisim ",
                Il       = "test",
                IlceSemt = "test",
                Sokak    = "Test adres 03",
                Sahis    = new Sahis {
                    Ad = "SMMİsim", Soyad = "SMMSoyisim"
                },
                /// Belgeyi kesen firmanın vergi kimlik numarası ya da şahsın tc kimlik no'su.
                /// Burada verilen değer, test hesabınıza tanımlı tckn değeridir, değiştirmeniz halinde sistemden hata alırsınız
                VergiNoTCKimlikNo = "98745612309",
                Ulke         = "TR",
                VergiDairesi = "Test"
            };

            nef.Musteri = new Musteri() // Belgenin alıcısı
            {
                FirmaAdi = "Musteriİsim MusteriSoyisim",
                Sokak    = "Test",
                Il       = "İzmir",
                IlceSemt = "Test",

                // Bir şahsa kesiliyorsa doldurulmalı
                Sahis = new Sahis {
                    Ad = "Musteriİsim", Soyad = "MusteriSoyisim"
                },

                VergiNoTCKimlikNo = "20231264774",
                Ulke         = "TR",
                VergiDairesi = "Test"
            };

            // Faturanın kalemleri bu listeye atılacak, sonrasında nef nesnesinin FaturaKalemleri elemanı bu listenin array'e çevrilmesiyle elde edilecek
            var fatKalemList = new List <FaturaKalemi>();

            /// ilk fatura kalemi
            var fatKalem = new FaturaKalemi();

            // Burada standart uluslararası birim kodları kullanılmalıdır. C62 Adet anlamına gelir.
            fatKalem.Birim       = "C62";
            fatKalem.BirimFiyat  = 113.6364;
            fatKalem.ToplamTutar = 113.6364;
            fatKalem.DovizTipi   = "TRY";

            // Verilen hizmetin ismi de yazılabilir.
            fatKalem.StokAdi = "Deneme";

            /// Fatura kaleminin vergileri bu listeye atılacak, sonrasında FaturaKalemi nesnesinin
            /// Vergiler elemanı bu listenin array'e çevrilmesiyle elde edilecek.
            var vergiler = new List <Vergi>();

            // vergi türü, 0015 Kdv anlamına gelmektedir.
            var vergi = new Vergi();

            vergi.Tur    = TaxCodeContentType.Item0015;
            vergi.Oran   = 8;
            vergi.Tutar  = 9.0909;
            vergi.Matrah = 113.6364;
            vergiler.Add(vergi);

            // vergi türü, 0003 stopaj anlamına gelmektedir.
            vergi        = new Vergi();
            vergi.Tur    = TaxCodeContentType.Item0003;
            vergi.Oran   = 20;
            vergi.Tutar  = 22.7273;
            vergi.Matrah = 113.6364;
            vergiler.Add(vergi);

            fatKalem.Vergiler = vergiler.ToArray();
            fatKalemList.Add(fatKalem);

            /// ikinci fatura kalemi
            /// fatKalem = new FaturaKalemi();
            fatKalem.Birim       = "C62";
            fatKalem.BirimFiyat  = 2840.9091;
            fatKalem.ToplamTutar = 2840.9091;
            fatKalem.DovizTipi   = "TRY";
            fatKalem.StokAdi     = "Deneme 2";

            vergiler = new List <Vergi>();
            vergi    = new Vergi();

            vergi.Tur    = TaxCodeContentType.Item0015;
            vergi.Oran   = 8; vergi.Tutar = 227.2727;
            vergi.Matrah = 2840.9091;
            vergiler.Add(vergi);

            vergi        = new Vergi();
            vergi.Tur    = TaxCodeContentType.Item0003;
            vergi.Oran   = 20; vergi.Tutar = 568.1818;
            vergi.Matrah = 2840.9091;
            vergiler.Add(vergi);
            fatKalem.Vergiler = vergiler.ToArray();
            fatKalemList.Add(fatKalem);

            /// üçüncü fatura kalemi

            fatKalem             = new FaturaKalemi();
            fatKalem.Birim       = "C62";
            fatKalem.BirimFiyat  = 1704.5455;
            fatKalem.ToplamTutar = 1704.5455;
            fatKalem.DovizTipi   = "TRY";
            fatKalem.StokAdi     = "Deneme 3";

            vergiler     = new List <Vergi>(); vergi = new Vergi();
            vergi.Tur    = TaxCodeContentType.Item0015;
            vergi.Oran   = 8; vergi.Tutar = 136.3636;
            vergi.Matrah = 1704.5455;
            vergiler.Add(vergi);

            vergi        = new Vergi();
            vergi.Tur    = TaxCodeContentType.Item0003;
            vergi.Oran   = 20;
            vergi.Tutar  = 340.9091;
            vergi.Matrah = 1704.5455;
            vergiler.Add(vergi);
            fatKalem.Vergiler = vergiler.ToArray();
            fatKalemList.Add(fatKalem);

            nef.FaturaKalemleri = fatKalemList.ToArray();

            /// Toplam tutara ilişkin bilgiler oluşturuluyor:
            /// Toplam tutar için toplam vergi bilgisi oluşturuluyor
            vergiler     = new List <Vergi>();
            vergi        = new Vergi();
            vergi.Tur    = TaxCodeContentType.Item0015;
            vergi.Oran   = 8;
            vergi.Tutar  = 372.73;
            vergi.Matrah = 4659.125;
            vergiler.Add(vergi);

            vergi        = new Vergi();
            vergi.Tur    = TaxCodeContentType.Item0003;
            vergi.Oran   = 20;
            vergi.Tutar  = 931.82;
            vergi.Matrah = 4659.1;
            vergiler.Add(vergi);
            nef.Vergiler = vergiler.ToArray();

            nef.ToplamTutar         = 4659.09;
            nef.OdenecekToplamTutar = 4100; nef.DovizTipi = "TRY";
            nef.VergilerDahilTutar  = 4100;
            nef.KaynakDokumanTuru   = KaynakDokumanTuru.ESERBESTMESLEKMAKBUZU;

            /// SMM belgeleri alıcıya iki şekilde gönderilir, kağıt çıktısı alınarak ya da elektonik yolla e-posta gönderilerek.
            /// Bu gönderim tipi belgede belirtilmelidir çünkü bu bilgi emtegratör tarafından ay sonunda oluşturulup
            /// GIB'e gönderilecek raporda doğru biçimde bildirilmelidir.
            nef.GonderimTipi = GonderimTipi.KAGIT;

            return(nef);
        }
        public ActionResult Index(FormCollection form)
        {
            var    response  = Request["g-recaptcha-response"];
            var    secretkey = "6LdKehIUAAAAAO_YaPgYHLVvnvr-rVIHnZFhrzl9";
            var    Client    = new WebClient();
            var    result    = Client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secretkey, response));
            var    obj       = JObject.Parse(result);
            var    status    = (bool)obj.SelectToken("success");
            string vergiNo   = form["vergiNo"].ToString();

            ViewBag.vergiNo = vergiNo;
            var  db      = new ContextEntitiess();
            bool kontrol = true;

            if (form["type"] == "0")
            {
                ViewBag.check = "checked";
                kontrol       = FirmaKontrol(vergiNo, "0");
            }
            else
            {
                ViewBag.check     = "";
                ViewBag.checksube = "checked";
                kontrol           = FirmaKontrol(vergiNo, "1");
                ViewBag.Subekodu  = "1";
            }
            if (status == true)
            {
                Vergi model = GetVergi(vergiNo);
                if (model != null)
                {
                    if (kontrol == false)
                    {
                        ViewBag.visibility = 0;
                        Session["User"]    = "******";
                    }
                    else
                    {
                        string firmayapısı = form["type"].ToString();
                        if (firmayapısı == "0")
                        {
                            TempData["SorguDurumu"] = "Bu firma Sistemimizde mevcut.";
                        }
                        else
                        {
                            TempData["SorguDurumu"] = "Merkeziniz Bulunmamaktadır.Lütfen Önce Merkezini Kaydediniz.";
                        }
                    }
                    ViewBag.getDb        = 0;
                    ViewBag.FirmaAdi     = model.FirmaAdi;
                    ViewBag.adres        = model.FirmaGenelMüdürlükAdresi;
                    ViewBag.vergiDairesi = model.VergiDairesi;
                    TempData["FirmaAdi"] = model.FirmaAdi;
                }
                else
                {
                    TempData["SorguDurumu"] = "Lütfen Vergi Numaranızı kontrol ediniz";
                }
            }
            else
            {
                TempData["CaptchaDurumu"] = "Lütfen robot olmadığını onayla.";
            }
            return(View());
        }