/// <summary>
        /// Senaryo:
        /// •   Oturum Açma
        /// •   E-SMM Makbuz Yükleme
        /// •   Makbuz Durumunu Sorgulama
        /// •   Makbuz Pdf Alma
        /// •   Makbuz Html Alma
        /// •   Makbuz Arama
        /// •   Makbuz İptal Etme
        /// </summary>
        public static void PrepareESMMByNetleEFatura()
        {
            try
            {
                var client = new Integration10();
                client.Url = "https://efaturatest.inposia.com.tr/CommonInvoice.Web.Service/Integration10.asmx";

                // Modül tipi olarak eSEVoucher kullanılması önemlidir
                var smmToken = client.CreateUserToken(@"KullanıcıAdı", "Şifre", ModuleType.eSEVoucher);

                /// smmNEF, NetleEFatura tipinde oluşturulmuş serbest meslek makbuzu belgesidir
                /// documentUUID değeri, o belgeye has tekil bir değer olacaktır ve gelecek sorgulamalarda kullanılacaktır, kullanıcı tarafından oluşturulup verilir
                /// prefix değeri, belgenin numarasıyla ilgilidir, şu aşamada boş bırakılmalıdır
                var uuid = Guid.NewGuid();
                client.UploadCommonDocument(smmToken, uuid, "", GetSMMInvoice(uuid));

                Console.WriteLine("Makbuz gönderildi");
                System.Threading.Thread.Sleep(5000); // Gönderim gerçekleştirildikten sonra, arka planda asenkron makbuz oluşturma işleminin bitmesi beklenmelidir.
                // Ardından, makbuz durumu sorgulanarak gönderimin durumu sorgulanmalıdır. Başarılı olan makbuzlar için pdf alma işlemine geçilebilir.

                var status = client.GetEArchiveStatus(smmToken, uuid);

                // makbuz durumu sorgulanabilir
                Console.WriteLine("Gönderildi mi ? :" + status.OK);

                var pdf = client.GetCommonDocumentPDFByUUIDs(smmToken, new UbltrPDFInput[] { new UbltrPDFInput {
                                                                                                 UUID = uuid
                                                                                             } });

                //uuid değerine göre pdf elde edilir
                if (pdf.Length > 0)
                {
                    File.WriteAllBytes(@"C:\temp\" + uuid.ToString() + ".pdf", pdf[0].PDFContent);
                }
                else
                {
                    Console.WriteLine("Pdf alınamadı");
                }

                // uuid değerine göre html elde edilir
                var html = client.GetCommonDocumentHtmlByUUID(smmToken, uuid); if (html.Length > 0)
                {
                    File.WriteAllText(@"c:\temp\test.html", html);
                }


                var seado = new SearchEArcDocumentOption()
                {
                    //Döküman numarası, doldurulmassa filtreye uyan tüm dökümanlar
                    InvoiceNumber = "SMM2018000000315",

                    // Tarih aralığı başlangıç değeri
                    StartDateTime = DateTime.Parse("2018-06-03"),

                    //Tarih aralığı bitiş değeri
                    EndDateTime = DateTime.Parse("2018-06-22")
                };

                var search = client.SearchEArchive(smmToken, seado);

                //uuid değerine göre makbuz iptal edilir
                client.DeleteEArchive(smmToken, uuid);
            }
            catch (Exception exc)
            {
                Console.WriteLine("Gönderim sürecinde hata oluştu. Hata detayı : " + exc.Message);
            }
        }
Пример #2
0
    /// <summary>
    /// Senaryo 1
    /// •   Token oluşturma.
    /// •	NetleEFatura formatında bir e-arşiv hazırlama.
    /// •	Faturayı web servise gönderme.
    /// •	Faturayı indirme.
    /// •	Faturanın html’ini alma.
    /// </summary>
    public static void PrepareElectronicArchiveByNetleEFatura()
    {
        Integration10 client = new Integration10();

        client.Url = @" https://efaturatest.inposia.com.tr/CommonInvoice.Web.Service/Integration10.asmx";
        var token = client.CreateUserToken(@"UserName", "Password", ModuleType.eArchive);
        var nef   = new NetleEFatura();

        #region [  invoice header  ]
        var uniqueId = Guid.NewGuid(); nef.GUID = uniqueId.ToString();
        nef.Tedarikci = new Tedarikci()               // sender information
        {
            FirmaAdi          = "Sender Company",     // company name
            VergiNoTCKimlikNo = "1122334456",         // company tax number
            WebAdresi         = "www.inposia.com.tr", // web address
            Il           = "izmir",                   // city
            IlceSemt     = "konak",                   //district
            Ulke         = "Türkiye",                 //country
            PostaKodu    = "35000",                   // postal code
            VergiDairesi = "konak"                    // tax office
        };

        nef.Musteri = new Musteri()                                        // receiver / customer information
        {
            Alias             = "urn:mail:[email protected]", // receiver alias
            FirmaAdi          = "Receiver Company",                        // company name
            VergiNoTCKimlikNo = "1623427874",                              // company tax number
            WebAdresi         = "www.inposia.com.tr",                      // web adress
            Il           = "izmir",                                        // city
            IlceSemt     = "konak",                                        // district
            Ulke         = "Türkiye",                                      // country
            PostaKodu    = "35310",                                        // post code
            VergiDairesi = "konak"                                         //tax office
        };

        nef.DuzenlenmeTarihi = DateTime.Now;
        nef.No                  = "ABC2016000000629";
        nef.DovizTipi           = "TRY";
        nef.KDVTutari           = 36; nef.ToplamTutar = 200;
        nef.OdenecekToplamTutar = 236;
        nef.Tip                 = NetleEFaturaType.SATIS;
        nef.Senaryo             = NetleEFaturaSenaryoType.TEMELFATURA;

        #endregion

        #region [  items  ]

        nef.FaturaKalemleri = new FaturaKalemi[]
        {
            new FaturaKalemi()
            {
                Aciklama        = "energry drink", //description
                Miktar          = 2,               // quantity
                MusteriStokNo   = "MusStok001",    // customer stock code
                TedarikciStokNo = "TedStok001",    // supplier stock code
                UreticiStokNo   = "UretStok001",   // manufacturer stock code
                BirimFiyat      = 100,             // unit price
                ToplamTutar     = 200,             // total amount
                KDVOrani        = 18,              //vat rate
                KDVTutari       = 36,              // vat amount
                StokAdi         = "energy drink",  // item name
                Birim           = "NIU",           // unit
                DovizTipi       = "TRY"            // currency
            }
        };

        #endregion

        var uuid = Guid.NewGuid();
        client.UploadInvoice(token, uuid, "", nef);
        var di = client.GetEArchiveStatus(token, uuid);
        Console.WriteLine("Status : " + di.OK);
        var html = client.GetCommonDocumentHtmlByUUID(token, uuid);
    }
Пример #3
0
    /// <summary>
    /// •   (daha önceden güvenlik-token) yoksa, oluştur ve işlemlere hazır hale gel
    /// •	Durumu sorgulanması gereken ve süreci sonlandırılmamış kayıtları yerel veritabanı ortamından listeyi al (UUID array)
    /// •	Entegratör ortamına erişim yaparak güncel durum kodunu alarak yerel sistemde güncelle
    /// </summary>
    public static void EArsivBelgelerineIliskinDurumKodlariniGuncelleVeYerelSistemeYaz()
    {
        ///Öneri:
        ///Yerel ortam log kayıtları guncellenir
        ///AddLog("e-arsiv durum sorgulama calisiyor...", DateTime.Now, UserId, MachineId);
        string[] uuids = null;

        ///Öneri
        ///Yerel veritabanından liste alınır
        ///SQL
        ///uuids=ExecOnDB("Select UUID from ???? Where (FinalState=False) And (Durum In ('Uploaded','Processing'))");

        ///sorgulanacak kayıt yoksa çık
        if (uuids == null || uuids.Length == 0)
        {
            return;
        }

        try
        {
            CheckToken();

            foreach (var uuid in uuids)
            {
                try
                {
                    var earcStatus = client.GetEArchiveStatus(token, Guid.Parse(uuid));

                    if (earcStatus.OK)
                    {
                        ///e-arşiv belgesi başarılı şekilde iletildi (++++)
                        ///Öneri
                        ///SQL : Update ???? Set IslemKodu=0, IslemAciklamasi=null, FinalState=True, Durum=ErcStateMachineCode.OnSuccess Where UUID=nef.Guid
                    }
                    else
                    {
                        ///Öneri
                        ///SQL : Update ???? Set
                        ///IslemKodu=earcStatus.RecordStatus,
                        ///IslemAciklamasi=string.Join(" - ", earcStatus.ErrorDescription, earcStatus.RecordStatusText),
                        ///FinalState=CheckCodeAndGetFinalState(earcStatus.RecordStatus),
                        ///Durum=CheckCodeAndGetStateCode(earcStatus.RecordStatus)
                        ///Where UUID=nef.Guid
                    }
                }
                catch (System.Web.Services.Protocols.SoapException sexc) //entegratör tarafından SOAP tabanlı hata geliyor
                {
                    var errorCode    = GetErrorCodeFromSoapException(sexc);
                    var errorMessage = sexc.Message;
                    ///Öneri
                    ///SQL : Update ???? Set
                    ///IslemKodu=errorCode,
                    ///IslemAciklamasi=errorMessage,

                    /////hata koduna gore bu isleme karar verilmelidir.
                    ///FinalState=CheckCodeAndGetFinalState(errorCode),
                    ///Durum=CheckCodeAndGetStateCode(errorCode)
                    ///Where UUID=nef.Guid
                }
                catch (Exception exc) //entegratör bağımsız olası hatalar gelebilir (ağ bağlantısı kesildi gibi)
                {
                    ///Öneri
                    ///SQL : Update ???? Set
                    ///IslemKodu="-1",  //unknown exception code
                    ///IslemAciklamasi=exc.Message,
                    ///Where UUID=nef.Guid
                }
            }
        }
        catch (Exception exc)
        {
            ///AddLog("e-arsiv durum sorgulama işleminde hata var. Hata : " + exc.Message, DateTime.Now, UserId, MachineId);
            throw;
        }
        ///AddLog("e-arsiv durum sorgulama calisti. Sorgulanan kayıt sayısı : " + uuids.Length.ToString(), DateTime.Now, UserId, MachineId);
    }