Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
serkankayaoglu opened this issue Oct 14, 2024 · 16 comments
Open

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

serkankayaoglu opened this issue Oct 14, 2024 · 16 comments

Comments

@serkankayaoglu
Copy link

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
Copy link
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.

@serkankayaoglu
Copy link
Author

serkankayaoglu commented Oct 14, 2024

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:[email protected]
                            [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:[email protected]
                            [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:[email protected]
                            [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:[email protected]
                            [AliasRegisterTime] => 2022-10-21T14:32:17
                            [FirstCreationTime] => 2022-07-06T20:24:45
                            [Identifier] => XXXXXXXXXX
                            [Title] => XXXXXXXXXX ANONİM ŞİRKETİ
                            [Type] => OZEL
                        )

                )

        )

)

@serkankayaoglu
Copy link
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:[email protected]

@OrhanOzyalcin
Copy link
Contributor

OrhanOzyalcin commented Oct 14, 2024 via email

@serkankayaoglu
Copy link
Author

serkankayaoglu commented Oct 14, 2024

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
Copy link
Contributor

OrhanOzyalcin commented Oct 14, 2024 via email

@serkankayaoglu
Copy link
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.

@OrhanOzyalcin
Copy link
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.

@Hasokeyk
Copy link
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.

@OrhanOzyalcin
Copy link
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 :)

@serkankayaoglu
Copy link
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.

@serkankayaoglu
Copy link
Author

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

@OrhanOzyalcin
Copy link
Contributor

OrhanOzyalcin commented Oct 15, 2024

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
Copy link
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.

@Hasokeyk
Copy link
Owner

Merhabalar,

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

$musteri_firmasi->setAlias('urn:mail:[email protected]');

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.

@serkankayaoglu
Copy link
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
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants