Skip to content

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

Open

Description

@serkankayaoglu

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.

Activity

  1. Hasokeyk commented on Oct 14, 2024

    @Hasokeyk
    Owner

    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.

  2. serkankayaoglu commented on Oct 14, 2024

    @serkankayaoglu
    Author

    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
                            )
    
                    )
    
            )
    
    )
    
  3. serkankayaoglu commented on Oct 14, 2024

    @serkankayaoglu
    Author

    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

  4. OrhanOzyalcin commented on Oct 14, 2024

    @OrhanOzyalcin
    Contributor
  5. serkankayaoglu commented on Oct 14, 2024

    @serkankayaoglu
    Author

    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);
    
                }`
    
  6. OrhanOzyalcin commented on Oct 14, 2024

    @OrhanOzyalcin
    Contributor
  7. serkankayaoglu commented on Oct 14, 2024

    @serkankayaoglu
    Author

    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.

  8. OrhanOzyalcin commented on Oct 14, 2024

    @OrhanOzyalcin
    Contributor
        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.

  9. Hasokeyk commented on Oct 14, 2024

    @Hasokeyk
    Owner

    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.

  10. OrhanOzyalcin commented on Oct 14, 2024

    @OrhanOzyalcin
    Contributor

    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 :)

  11. serkankayaoglu commented on Oct 14, 2024

    @serkankayaoglu
    Author

    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.

  12. serkankayaoglu commented on Oct 15, 2024

    @serkankayaoglu
    Author

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

  13. OrhanOzyalcin commented on Oct 15, 2024

    @OrhanOzyalcin
    Contributor

    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)`
    
  14. Hasokeyk commented on Oct 16, 2024

    @Hasokeyk
    Owner

    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.

  15. Hasokeyk commented on Oct 19, 2024

    @Hasokeyk
    Owner

    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.

  16. serkankayaoglu commented on Nov 2, 2024

    @serkankayaoglu
    Author

    Öncelikle yardımlarınız için teşekkür ederim. Kodu güncelledim ve gerekli testleri yapıyorum. Sorunsuz çalışıyor şimdilik. Ancak ELogo.php dosyasında 171. satırda aşağıdaki kodları unutmuşsunuz. Bilgi vermek istedim. Kolay gelsin.

    print_r($eLogoParamList); exit;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions