Hasokeyk / elogo-php

elogo kütüphanesi ile e-fatura ve e-arşiv işlemlerinizi yapabilirsiniz.
18 stars 8 forks source link

Birden Fazla Etiketi Olan Müşteriler İçin #12

Open serkankayaoglu opened 6 days ago

serkankayaoglu commented 6 days ago

Merhabalar,

Öncelikle yazmış olduğunuz bu güzel sınıf için teşekkür ederim. Epey işimizi kolaylaştırdı. Ancak bir noktada tıkandım ve çözemiyorum. Bazı müşterilerin birden fazla etiket kaydı bulunmakta ve aşağıdaki gibi bir hata almaktayız.

"XXXXXXXXXX vergi numarasına ait birden fazla etiket mevcut. Etiket bilgisi gönderilmelidir"

Etiketi nasıl yollayabileceğim konusunda yardıma ihtiyacım var. İlgilenme şansınız olursa çok memnun olurum.

Hasokeyk commented 6 days ago

Merhabalar,

Rica ederim yorumunuz beni mutlu etti.

Etiket derken bir firmanın birdan fazla vergi nosunu mu kast ediyor dökümanda bulamadım etiket diye bir şey.

serkankayaoglu commented 6 days ago

Evet vergi numarasını sorgulattığımız zaman birden fazla sonuç dönüyor. Bu gibi durumlarda da "Etiket gönderilmesi zorunludur" diye hata dönüyor.

$musteri_bilgi = $elogo->musteri_bilgisi_getir($vergi_no);

Şeklinde sorgulattığım zaman aşağıdaki gibi bir sonuç geliyor. Büyük ihtimalle buradaki Alias bilgilerinden bir tanesini seçip göndermemiz gerekiyor ama buna dair bir bilgi bulamadım bende.

stdClass Object
(
    [DespatchAdvice] => 0
    [DespatchAdviceGbList] => stdClass Object
        (
        )

    [DespatchAdvicePkList] => stdClass Object
        (
        )

    [Identifier] => XXXXXXXXXX
    [Invoice] => 4
    [InvoiceGbList] => stdClass Object
        (
            [GibUserInfoType] => Array
                (
                    [0] => stdClass Object
                        (
                            [Alias] => urn:mail:defaultgb@XXXXXXXXXX.com
                            [AliasRegisterTime] => 2022-07-06T20:24:45
                            [FirstCreationTime] => 2022-07-06T20:24:45
                            [Identifier] => XXXXXXXXXX
                            [Title] => XXXXXXXXXX ANONİM ŞİRKETİ
                            [Type] => OZEL
                        )

                    [1] => stdClass Object
                        (
                            [Alias] => urn:mail:merkezgb@XXXXXXXXXX.com
                            [AliasRegisterTime] => 2022-10-21T14:32:17
                            [FirstCreationTime] => 2022-07-06T20:24:45
                            [Identifier] => XXXXXXXXXX
                            [Title] => XXXXXXXXXX ANONİM ŞİRKETİ
                            [Type] => OZEL
                        )

                )

        )

    [InvoicePkList] => stdClass Object
        (
            [GibUserInfoType] => Array
                (
                    [0] => stdClass Object
                        (
                            [Alias] => urn:mail:defaultpk@XXXXXXXXXX.com
                            [AliasRegisterTime] => 2022-07-06T20:24:45
                            [FirstCreationTime] => 2022-07-06T20:24:45
                            [Identifier] => XXXXXXXXXX
                            [Title] => XXXXXXXXXX ANONİM ŞİRKETİ
                            [Type] => OZEL
                        )

                    [1] => stdClass Object
                        (
                            [Alias] => urn:mail:merkezpk@XXXXXXXXXX.com
                            [AliasRegisterTime] => 2022-10-21T14:32:17
                            [FirstCreationTime] => 2022-07-06T20:24:45
                            [Identifier] => XXXXXXXXXX
                            [Title] => XXXXXXXXXX ANONİM ŞİRKETİ
                            [Type] => OZEL
                        )

                )

        )

)
serkankayaoglu commented 6 days ago

elogo_doc/webservices.pdf => içinde 7. sayfada var sanırım bu bilgi.

ALIAS : Belgenin gönderileceği alıcı etiketi ( Bu bilgi boşsa ve sistemde bir tane kullanıcı etiketi varsa, sistemdeki etiket kullanılır. Sistemde birden fazla etiket varsa ve bu alan boşsa yanıt olarak hata mesajı verilir. )

Örnek Format : ALIAS:urn:mail:defaultpk@firma.com.tr

OrhanOzyalcin commented 6 days ago

Merhaba. Etiket göndermenizi gerektirecek kısım tam olarak neresi? Vergi no gönderip bilgiyi alamıyormusunuz?14 Eki 2024 12:01 tarihinde serkankayaoglu @.> yazdı: elogo_doc/webservices.pdf => içinde 7. sayfada var sanırım bu bilgi. ALIAS : Belgenin gönderileceği alıcı etiketi ( Bu bilgi boşsa ve sistemde bir tane kullanıcı etiketi varsa, sistemdeki etiket kullanılır. Sistemde birden fazla etiket varsa ve bu alan boşsa yanıt olarak hata mesajı verilir. ) Örnek Format : @.

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

serkankayaoglu commented 6 days ago

Fatura kesim aşamasına geçmeden önce aşağıdaki kod ile bir sorgu yapıyorum. Bu sorgunun sonucuna göre de senaryoyu belirliyorum. TEMELFATURA yada EARSIVFATURA olarak. Anca fatura kesme işlemini yapmaya çalıştığımda yukarıdaki belirttiğim hatayı alıyorum. Benim anladığım kadarıyla, müşteri vergi numarasına ait birden fazla ALIAS dönüyorsa, hangi ALIAS a fatura kesileceğini belirtmek gerekiyor.

Yukarıda belirttiğim gibi GibUserInfoType dizisi birden fazla sonuç döndürüyor bazı vergi numaralarında.

`$musteri_bilgi = $elogo->musteri_bilgisi_getir($sorgu_deger);

            if( $musteri_bilgi->Invoice < 1 ) {

                $fatura->setFaturaSenaryo('EARSIVFATURA');

                $einvoice = $elogo->earsiv_gonder($fatura, $benim_firmam, $musteri_firmasi);

            } else {

                $fatura->setFaturaSenaryo('TEMELFATURA');

                $einvoice = $elogo->efatura_gonder($fatura, $benim_firmam, $musteri_firmasi);

            }`
OrhanOzyalcin commented 6 days ago

Eğer etiket boşsa e arşiv. Doluysa efatura. Şu an kullandığım kodları size göndereyim onun üzerinden istediğiniz gibi devam edin14 Eki 2024 12:53 tarihinde Serkan Kayaoğlu @.***> yazdı: Fatura kesim aşamasına geçmeden önce aşağıdaki kod ile bir sorgu yapıyorum. Bu sorgunun sonucuna göre de senaryoyu belirliyorum. TEMELFATURA yada EARSIVFATURA olarak. Anca fatura kesme işlemini yapmaya çalıştığımda yukarıdaki belirttiğim hatayı alıyorum. Benim anladığım kadarıyla, müşteri vergi numarasına ait birden fazla ALIAS dönüyorsa, hangi ALIAS a fatura kesileceğini belirtmek gerekiyor. `$musteri_bilgi = $elogo->musteri_bilgisi_getir($sorgu_deger); if( $musteri_bilgi->Invoice < 1 ) {

            $fatura->setFaturaSenaryo('EARSIVFATURA');

            $einvoice = $elogo->earsiv_gonder($fatura, $benim_firmam, $musteri_firmasi);

        } else {

            $fatura->setFaturaSenaryo('TEMELFATURA');

            $einvoice = $elogo->efatura_gonder($fatura, $benim_firmam, $musteri_firmasi);

        }`

—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

serkankayaoglu commented 6 days ago

Gönderdiğim kod yaptığım işleme ait. Ancak dediğim gibi $musteri_bilgi->InvoiceGbList->GibUserInfoType içerisindeki dizide birden fazla sonuç dönüyorsa o zaman etiket seçmek zorunludur hatası dönüyor.

elogo_doc/webservices.pdf => içinde 7. sayfada var bu bilgi ancak sınıfa nasıl entegre edebiliriz bulamadım.

OrhanOzyalcin commented 6 days ago
    public function eFaturaKontrol($vkn) {

        $elogo_username = "";
        $elogo_password = "";
        $elogo_test     = true;

        $elogo = new Elogo($elogo_username, $elogo_password, $elogo_test);

        $elogo_login = $elogo->giris_yap();
        if(isset($elogo_login->sessionID)){

            $musteri_bilgi = $elogo->musteri_bilgisi_getir($vkn);

            $objectIn = $musteri_bilgi->InvoicePkList;

            if(!isset($objectIn->GibUserInfoType)) {
                return ['mukellefDegil' => 'eFatura Mükellefi Değil'];
            } else {
                return ['mukellef' => 'eFatura Mükellefi'];
            }

        } else {
            return ['hata' => 'eLogo Giriş Bilgileri Hatalı'];
        }
    }

Bahsettiğiniz gibi bir hatayla hiç karşılaşmadım.

Hasokeyk commented 6 days ago

Gönderdiğim kod yaptığım işleme ait. Ancak dediğim gibi $musteri_bilgi->InvoiceGbList->GibUserInfoType içerisindeki dizide birden fazla sonuç dönüyorsa o zaman etiket seçmek zorunludur hatası dönüyor.

elogo_doc/webservices.pdf => içinde 7. sayfada var bu bilgi ancak sınıfa nasıl entegre edebiliriz bulamadım.

Bunun için bir güncelleme göndereceğim akşam.

OrhanOzyalcin commented 6 days ago

Fatura kesim aşamasına geçmeden önce aşağıdaki kod ile bir sorgu yapıyorum. Bu sorgunun sonucuna göre de senaryoyu belirliyorum. TEMELFATURA yada EARSIVFATURA olarak. Anca fatura kesme işlemini yapmaya çalıştığımda yukarıdaki belirttiğim hatayı alıyorum. Benim anladığım kadarıyla, müşteri vergi numarasına ait birden fazla ALIAS dönüyorsa, hangi ALIAS a fatura kesileceğini belirtmek gerekiyor.

Yukarıda belirttiğim gibi GibUserInfoType dizisi birden fazla sonuç döndürüyor bazı vergi numaralarında.

`$musteri_bilgi = $elogo->musteri_bilgisi_getir($sorgu_deger);

            if( $musteri_bilgi->Invoice < 1 ) {

                $fatura->setFaturaSenaryo('EARSIVFATURA');

                $einvoice = $elogo->earsiv_gonder($fatura, $benim_firmam, $musteri_firmasi);

            } else {

                $fatura->setFaturaSenaryo('TEMELFATURA');

                $einvoice = $elogo->efatura_gonder($fatura, $benim_firmam, $musteri_firmasi);

            }`

TEMELFATURA olduğunu şimdi fark ettim. Tamamdır :)

serkankayaoglu commented 6 days ago

Gönderdiğim kod yaptığım işleme ait. Ancak dediğim gibi $musteri_bilgi->InvoiceGbList->GibUserInfoType içerisindeki dizide birden fazla sonuç dönüyorsa o zaman etiket seçmek zorunludur hatası dönüyor. elogo_doc/webservices.pdf => içinde 7. sayfada var bu bilgi ancak sınıfa nasıl entegre edebiliriz bulamadım.

Bunun için bir güncelleme göndereceğim akşam.

Teşekkür ederim, akşam güncellemeyi görmek için tekrar giriş yapacağım. Kolay gelsin.

serkankayaoglu commented 5 days ago

Merhabalar, dönüşünüzü ve güncellemenizi bekliyorum.

OrhanOzyalcin commented 5 days ago

Merhabalar, dönüşünüzü ve güncellemenizi bekliyorum.

src -> Models -> Elogo.php 3 fonksiyonu kütüphanenizde güncelleyip bu şekilde test eder misiniz?

@serkankayaoglu

`public function dokuman_yolla($fatura_turu = 'EINVOICE', $zip_data, $temel_fatura = false, $alias = null){

        $document    = new ElogoDocumentType();
        $binary_data = new ElogoBase64BinaryData();
        $binary_data->setValue($zip_data['zip_data']);

        $document->setBinaryData($binary_data);
        $document->setCurrentDate(date('c'));
        $document->setFileName($zip_data['zip_name']);
        $document->setHash(md5($zip_data['zip_data']));

          if($temel_fatura === true && !empty($alias)){
            $eLogoParamList   = ['SIGNED=0', 'ALIAS=urn:'. $alias];
          } else {
            $eLogoParamList   = ['SIGNED=0'];
          }

        $eLogoParamList[] = "DOCUMENTTYPE=".$fatura_turu;

        $data = [
            'sessionID' => $this->session_id,
            'paramList' => $eLogoParamList,
        ];

        if($document != null){
            $data['document'] = $document->toArray();
        }

        $result = $this->client->SendDocument($data);

        if(property_exists($result, 'SendDocumentResult')){
            if($result->SendDocumentResult->resultCode == 1){
                return $result;
            }
            else{
                throw new ElogoHata($result->SendDocumentResult->resultMsg, $result->SendDocumentResult->resultCode);
            }
        }
        else{
            throw new ElogoHata("E-Logo cevap veremedi.", 0);
        }

    }

    public function efatura_gonder(Fatura $fatura, BenimFirmam $benim_firmam, MusteriFirmasi $musteri_firmasi, $sadece_ubl_getir = false, $temel_fatura = false, $alias = null){
        $convert_ubl = new FaturaUbl($fatura, $benim_firmam, $musteri_firmasi);
        $xml         = $convert_ubl->getir_ubl_xml('TICARIFATURA');

        if($sadece_ubl_getir){
            return $xml;
        }

        $zip_data = $this->create_zip($xml);
        return $this->dokuman_yolla('EINVOICE', $zip_data, $temel_fatura, $alias);
    }

    public function earsiv_gonder(Fatura $fatura, BenimFirmam $benim_firmam, MusteriFirmasi $musteri_firmasi, $sadece_ubl_getir = false, $temel_fatura = false, $alias = null){
        $convert_ubl = new FaturaUbl($fatura, $benim_firmam, $musteri_firmasi);
        $xml         = $convert_ubl->getir_ubl_xml('EARSIVFATURA');

        if($sadece_ubl_getir){
            return $xml;
        }

        $zip_data = $this->create_zip($xml);
        return $this->dokuman_yolla('EARCHIVE', $zip_data, $temel_fatura, $alias);
    }

    // Kullanım earsiv_gonder($fatura, $benim_firmam, $musteri_firmasi, $sadece_ubl_getir = false, $temel_fatura = false, $alias = null)
    // efatura_gonder($fatura, $benim_firmam, $musteri_firmasi, $sadece_ubl_getir = false, $temel_fatura = false, $alias = null)`
Hasokeyk commented 4 days ago

Merhabalar, dönüşünüzü ve güncellemenizi bekliyorum.

Güncelleme geciktiği için kusura bakmayın. Acil bir kaç iş vardı sabahladık bir kaç gün. Cuma akşamı gibi bir sorun çıkmazsa güncelleme göndericem ama arkadaşların yaptığı yöntemler ile çözüm bulabilirsiniz.

Hasokeyk commented 1 day ago

Merhabalar,

Geçikme için kusura bakmayın. Yoğunluktan güncelleme çıkamadım.

$musteri_firmasi->setAlias('urn:mail:defaultgb@XXXXXXXXXX.com');

Bu şekilde müşteri firması bilgileri girerken etiketi girebilirsiniz. Demo hesabında test ettim sonuç başarılı ama sizde test edep bilgi dönersiniz güncelleme yapabilirim.