pzs / nav-online-invoice

PHP interface for Online Invoice Data Reporting System of Hungarian Tax Office (NAV)
MIT License
144 stars 52 forks source link

Cím hiányzik a számla lekérdezésből #56

Closed cityba closed 2 years ago

cityba commented 2 years ago

Sziasztok, lenne egy kérdésem, egy ideje nem kapok a lekérdezésből címet, ez miért van? Mi a megoldás @pzs @webprogramozo @scr34m @mikaelz @bigfootbrz ?

["supplierAddress"]=> object(SimpleXMLElement)19 (0) { } } ["customerInfo"]=> object(SimpleXMLElement)16 (4) { ["customerVatStatus"]=> string(8) "DOMESTIC" ["customerVatData"]=> object(SimpleXMLElement)19 (1) { ["customerTaxNumber"]=> object(SimpleXMLElement)20 (0) { } }

Köszönöm a segítséget

szecsenyizoltan commented 2 years ago

A cím(ek) listaként jönnek le. Ha több telephely van, akkor mindegyiket megkapod.

  1. oldal https://onlineszamla.nav.gov.hu/api/files/container/download/Online_Szamla_interfesz%20specifikacio_HU_v3.0.pdf
cityba commented 2 years ago

@szecsenyizoltan listaként jó lenne de jelenleg semmit se tölt le a címekből. nézd meg még TaxNumbert se kapok. A bejövő számlán lévő cím, adószám teljesen üres.

szecsenyizoltan commented 2 years ago

@citba a legfrissebbet használod? (én csak kódrészleteket, vettem át)

Ezt nézd meg: https://github.com/pzs/nav-online-invoice/blob/master/examples/queryTaxpayer.php

cityba commented 2 years ago

@szecsenyizoltan Igen, mindenhogy próbáltam már, nem értem mi a gondja.

szecsenyizoltan commented 2 years ago

$response["taxpayerData"]["taxpayerAddressList"]["taxpayerAddressItem"]["taxpayerAddress"] => itt vannak a cím részletei

taxpayerAddressItem-ből lehet több is.

szecsenyizoltan commented 2 years ago

NAV 2.0 => NAV 3.0 átállásnál változott ez emlékeim szerint.

cityba commented 2 years ago

@szecsenyizoltan itt látszódik, de nekem az eladó címe kell a bejövő számlán. 2021 márciusában változhatott valami, addig szépen jött le a cím is.

szecsenyizoltan commented 2 years ago

Akkor passz. Azt hittem ez az operáció a gond.

ps.: Ránéztem. Én sem kapok értéket vissza.

cityba commented 2 years ago

@szecsenyizoltan akkor hogy oldható meg a cím lekérés? minden számlához legyen egy plusz adószám lekérés? Érthetetlen de nem látok más megoldást

szecsenyizoltan commented 2 years ago

De az adószámot sem látod! :) (mondjuk azt megadod a lekérésnél) :P

NAV oldalán nyiss hibajegyet: https://github.com/nav-gov-hu/Online-Invoice/issues

cityba commented 2 years ago

Akárhogy kérdezem le nincs semmilyen cím adat.

pzs commented 2 years ago

Erről az operációról/példafájlról van szó? examples/queryInvoiceData.php

Én most kipróbáltam egy kimenő számlát lekérni a teszt rendszerben és visszaérkeztek a címadatok.

Olvasd el ezt is, hátha érint: docs/xml_namespaces.md Illetve hibakereséshez ez is hasznos lehet: examples/log.php

Ez alapján biztosan meg fogod tudni állapítani, hogy esetleg ebben a php modulban lenne valami hiba, vagy már a NAV-tól sem érkeznek vissza a címadatok. Utóbbi esetben a NAV-ot keresd, előbbiben pedig itt írd meg a részleteket, hogy mit próbáltál eddig és hogyan lehet előidézni a hibát.

cityba commented 2 years ago

@pzs Igen ez a példafájlról van szó, több azonosítóval kipróbáltam, egyik se ad vissza címadatot. Én csak lekéréshez használom, de már tavaly áprilistól nem kapok címeket, idáig nem tűnt fel. a namespaces érintheti a lekérdezés válaszát? PHP 7.1 és 7.4 en is próbáltam. A namespaces részt hova adjam hozzá? melyik php fájlba tegyem? $addressElement = $supplierAddress->addChild("user", null, "http://schemas.nav.gov.hu/OSA/3.0/base"); $addressElement->addChild("countryCode", "HU"); $addressElement->addChild("region", "..."); Itt egy válasz : Response body: <?xml version="1.0" encoding="UTF-8" standalone="yes"?><QueryInvoiceDataResponse xmlns="http://schemas.nav.gov.hu/OSA/3.0/api" xmlns:ns2="http://schemas.nav.gov.hu/OSA/3.0/base" xmlns:ns3="http://schemas.nav.gov.hu/NTCA/1.0/common" xmlns:ns4="http://schemas.nav.gov.hu/OSA/3.0/data"><ns3:header><ns3:requestId>RID063471800164190981971156</ns3:requestId><ns3:timestamp>2022-01-11T14:03:39.635Z</ns3:timestamp><ns3:requestVersion>3.0</ns3:requestVersion><ns3:headerVersion>1.0</ns3:headerVersion></ns3:header><ns3:result><ns3:funcCode>OK</ns3:funcCode></ns3:result><software><softwareId>123456789123456789</softwareId><softwareName>string</softwareName><softwareOperation>ONLINE_SERVICE</softwareOperation><softwareMainVersion>string</softwareMainVersion><softwareDevName>string</softwareDevName><softwareDevContact>string</softwareDevContact><softwareDevCountryCode>HU</softwareDevCountryCode><softwareDevTaxNumber>string</softwareDevTaxNumber></software><invoiceDataResult><invoiceData>PE..4=</invoiceData><auditData><insdate>2021-11-23T07:39:52.000Z</insdate><insCusUser>wgslh6owjmd3ijq</insCusUser><source>MGM</source><transactionId>3KXIM7I692ISS19W</transactionId><index>1</index><originalRequestVersion>3.0</originalRequestVersion></auditData><compressedContentIndicator>false</compressedContentIndicator></invoiceDataResult></QueryInvoiceDataResponse>

erelke commented 2 years ago

Én is ezt a lekérdezést (is) használom - kimenő és bejövő számlán esetén is - és jönnek címadatok. @cityba nem értem, hogy miért nem jönnek neked.

cityba commented 2 years ago

@erelke Tavaly áprilistól semmilyen cím nem jön. már vagy 5x felraktam a 3.01 mappát, 2 külön szerveren. Most kezdtem kutatni miért nem kapok címet, lehet valamit állítani kell még? Több user-pass is probáltam de semmi változás. Van ötleted ? milyen teszteket csináljak még?

erelke commented 2 years ago

@cityba a NAV-tól nem kapsz választ, tehát náluk kell érdeklődni. Nekünk volt problémánk még az elején, hogy bizonyos adatok nem jól jöttek. Szerencsére van egy agilis emberünk, akit ilyenekre rá lehet ugrasztani. Sikerült nekik megoldani.

erelke commented 2 years ago

@cityba most végig néztem pár számlát, és találtam olyant, amelyiknél nem jön. Ahol jön, ott simpleAddress jön.

cityba commented 2 years ago

@erelke simpleAddress nincs csak supplierAdd.. de az is 0 tartalommal bír KFT." ["supplierAddress"]=> object(SimpleXMLElement)#19 (0) { } } ["customerInfo"]=> object(SimpleXMLElement)#16 (4) { ["customerVatStatus"]=> string(8) "DOMESTIC"

cityba commented 2 years ago

@erelke Lekértem vagy 100 számlát, nekem csak supplierAddress és customerAddress érkezik üresen mind, hogy lehet előcsalni a simpleAddress-t? kell külön kérni?

erelke commented 2 years ago

@cityba A supplierAddressban ha van adat, akkor az simpleAddresType. https://onlineszamla.nav.gov.hu/api/files/container/download/Online_Szamla_interfesz%20specifikacio_HU_v3.0.pdf#page=89

cityba commented 2 years ago

@erelke Köszi, bár nekem semmilyen address nem érkezik, az adószám se érkezik meg. 2021 04 01 tól. Mi történt akkor?

szecsenyizoltan commented 2 years ago

@erelke Az a beküldött számla amit te linkeltél. cityba letölt egy bejövő számlát. Ezt csinálja: https://onlineszamla.nav.gov.hu/api/files/container/download/Online_Szamla_interfesz%20specifikacio_HU_v3.0.pdf#page=45

@citiby Nekem sem.

szecsenyizoltan commented 2 years ago

// A response xml-ben van egy másik xml. Ez nálam: $base64_xml_as_string = $this->response["invoiceDataResult"]["invoiceData"] // ez base64-ben érkezik

// A kapott stringen futtasd ezen projectből ezt: $xml_as_string_without_namespaces = XmlUtil::removeNamespacesFromXmlString( base64_decode( $base64_xml_as_string ) );

Ezután tetszőlegesen alakíthatod. pl SimpleXml, majd json vagy array. Etc.

cityba commented 2 years ago

@szecsenyizoltan ezt a $base64-et hol találom meg? melyik php fájlban?

szecsenyizoltan commented 2 years ago

@cityba Pontosíts.

cityba commented 2 years ago

@szecsenyizoltan a fenti kódot, melyik mappába/fájlban keresem meg, mert nem találok ilyet a pzs php fájlokban.

szecsenyizoltan commented 2 years ago

Ezzel kéri le: https://github.com/pzs/nav-online-invoice/blob/master/examples/queryInvoiceData.php

Ennek: https://github.com/pzs/nav-online-invoice/blob/master/src/NavOnlineInvoice/XmlUtil.php

Ezzel az fv-jével: public static function removeNamespacesFromXmlString($xmlString) { return preg_replace('/(<\/|<)[a-z0-9]+:([a-z0-9]+[ =>])/i', '$1$2', $xmlString); }

kell parse-olni a kapott gyermek xml-t, base64_decode után. Lásd fentebb.

cityba commented 2 years ago

@szecsenyizoltan így gondoltad? $invoice = NavOnlineInvoice\InvoiceOperations::convertToXml($invoiceDataResult->invoiceData, $invoiceDataResult->compressedContentIndicator); $invoice = NavOnlineInvoice\XmlUtil::removeNamespacesFromXmlString(base64_decode($invoice)); var_dump($invoice);

szecsenyizoltan commented 2 years ago

kb. de nem használom ezt a kódot. inspirálódni jöttem annak idején ide, mert elakadtam.

Működik? mi a kimenet? (var_dump)

cityba commented 2 years ago

@szecsenyizoltan sajnos string(0) ""

szecsenyizoltan commented 2 years ago

base64_decode felesleges,. mert a convertToXml megcsinalja.

cityba commented 2 years ago

@szecsenyizoltan köszi, siker idáig 👍 $invoice = NavOnlineInvoice\XmlUtil::removeNamespaces($invoice);

pzs commented 2 years ago

Sziasztok, zárom ezt az issue-t. Ha jól értelmezem, nem ebben a php-s modulban volt a hiba, illetve remélhetőleg az eredeti gond is megoldódott.