Online-invoice: [DEV support] 3.0 számla beküldés gondom van az új namespace-ekkel

Created on 22 Oct 2020  Â·  11Comments  Â·  Source: nav-gov-hu/Online-Invoice

Környezet / Environment
[x] https://api-test.onlineszamla.nav.gov.hu

Hívott API operáció / called API operation
[x] /manageInvoice

A kérés verziója / version of the request
[x] 3.0

A probléma rövid és tömör leírása / Clear and concise description of the problem
Küldeném be az első teszt számlát a 3.0-val, de sajnos feldolgozási hibára fut az XML és ABORTED lesz a beküldést követően.

XML hiba:
XML contains on line: [18] and column: [26] error: [cvc-complex-type.2.4.a: Invalid content was found starting with element '{"http://schemas.nav.gov.hu/OSA/3.0/data":simpleAddress}'. One of '{"http://schemas.nav.gov.hu/OSA/3.0/base":simpleAddress, "http://schemas.nav.gov.hu/OSA/3.0/base":detailedAddress}' is expected.]
HibakĂłd: SCHEMA_VIOLATION

A ToDo alapján minden lépést megcsináltam már.
Az InvoiceData fejléce így néz ki:
<InvoiceData xmlns="http://schemas.nav.gov.hu/OSA/3.0/data" xmlns:base="http://schemas.nav.gov.hu/OSA/3.0/base" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.nav.gov.hu/OSA/3.0/data invoiceData.xsd">

A cím meg ebben a struktúrában van megadva:

<simpleAddress>
    <base:countryCode>HU</base:countryCode>
    <base:postalCode>1111</base:postalCode>
    <base:city>Budapest</base:city>
    <base:additionalAddressDetail>Pelda utca 1.</base:additionalAddressDetail>
</simpleAddress>

Próbáltam base nélkül is, de akkor sem megy. A fejléc a rossz vagy a simpleAddress-nél a namespace használat?

DEV support

Most helpful comment

A vevőnél ez volt a gond, csak annyira a namespace-re koncentráltam, hogy nem vettem észre az elgépelést: customerTaxnumber helyett customerTaxNumber

All 11 comments

Kérnék egy konkrét mező felsorolást, hogy az eddig tagokat hol kell megelőzze base: name space.
Pl. countryCode, postalCode, city, additionalAddressDetail

Közben megfejtettem, hogy a simpleAddress elé is kell, de jó lenne, ha ezt nem egyesével kellene kitalálni, mert nem értem a logikáját, így jól jönne egy komplex mezőfelsorolás. Az áfakulcsnál is belefutottam ebbe.

Az alapján már végképp teljesen zavaros az egész, mert ott így néz ki:

<supplierTaxNumber>
  <base:taxpayerId></base:taxpayerId>
  <base:vatCode></base:vatCode>
  <base:countyCode></base:countyCode>
</supplierTaxNumber>

Tehát itt meg nem kell base-t alkalmazni az eggyel magasabb szinten (supplierTaxnumber), míg a simpleAddress-nél meg kell.

A vevőnél szintén elakadok. Ott hol kell a base és hol nem?

A vevőnél ezt a megadási módot nem fogadja el, pedig a supplierTaxNumber-nél és e logika szerint van megadva:

<customerVatData>
  <customerTaxnumber>
     <base:taxpayerId></base:taxpayerId>
     <base:vatCode></base:vatCode>
     <base:countyCode></base:countyCode>
  </customerTaxnumber>
</customerVatData>

@nbeeps2 a Changelog-ot egyébként olvastad?
Abban a 3.2.1 fejezet pont ezekről értekezik.

A vevőnél ezt a megadási módot nem fogadja el, pedig a supplierTaxNumber-nél és e logika szerint van megadva:

<customerVatData>
  <customerTaxnumber>
     <base:taxpayerId></base:taxpayerId>
     <base:vatCode></base:vatCode>
     <base:countyCode></base:countyCode>
  </customerTaxnumber>
</customerVatData>

@nbeeps2 A tag-ok előtti névtér megjelenítés az XML elején történő névtér besorolástól függ.
Ha a data XML amit előállítasz az XSD valid akkor a beküldésnél is validnak kell lennie. Validáld le ha nem valid akkor az XML nem jó és a validáció ki fogja írni, hogy hol a hiba.

@lvitya586 Igen olvastam, ahogyan írtam is már minden lépést megcsináltam. Viszont pont ez a rész rébuszokban fogalmazott, ugyan volt forrás példa is, de pont nem volt a customer ág részletezve. Mivel nem következetes a kitöltés (lásd 2. bejegyzés), így nagyon nehézkes így átírni az XML-t, hogy találgatni kell, hogy hova kell a base: és hova nem.

"Három komplex adattípus esetén át kell vezetne a Base XSD namespace értékét a gyermek tagekben: TaxNumberType, SimpleAddressType, DetailedAddressType"

Nekem ez a megfogalmazás túl általános. Így kellene fogalmazni (ha a base az alap kiinduló pont):
A countryCode, postalCode, city, additionalAddressDetail, simpleAddress mezőket nevezd át erre: base:countryCode, base:postalCode, base:city, base:additionalAddressDetail, base:simpleAddress

Ehhez kellene nekem egy komplett mezőfelsorolás. Rákeresek ezekre a tagokra és beteszem elé a base: részletet. Ha már úgy hívjuk átállási mutató lépésről-lépésre, akkor ez érthetőbb lenne és kevesebb helyet is foglalna, mint a nem teljesértékű példa forráskód, amit mellékeltek.

@renced42: az a baj, hogy hülyeséget ír ki, lásd nyitó hozzászólásom. Ott például azt írta, hogy a detailedAddress lenne az elvárt érték, miközben nem az volt a gond, hanem az, hogy a simpleaddress elé be kellett tenni a base: szórészletet.

A vevőnél ez volt a gond, csak annyira a namespace-re koncentráltam, hogy nem vettem észre az elgépelést: customerTaxnumber helyett customerTaxNumber

@renced42 nyissak új issue-t vagy javítjátok a dokumentációban? Mert onnan szedtem a customerTaxnumber részt. 82-83. oldalon (eredeti oldalszámozás a pdf alján) így szerepel mindenhol.

@renced42 nyissak új issue-t vagy javítjátok a dokumentációban? Mert onnan szedtem a customerTaxnumber részt. 82-83. oldalon (eredeti oldalszámozás a pdf alján) így szerepel mindenhol.

@nbeeps2 Kérlek, nyiss egy Dokumentációs hiba issue-t, Azt figyeli @NTCA-supporter is :) és javítják.
Úgy látom, hogy a 43. ábra A CustomerVatDataType felépítését követő táblázatban mindenhol kis "n" betűs a customerTaxNumber szöveg.

@nbeeps2 nem kell Ăşj issue, felĂ­rtam ezt is.
Köszi

@NTCA-supporter ooh, sorry közben pont leadtam.

Kedves @nbeeps2 kérlek zárd az issuet, ha megoldódott a problémád, köszi!

Was this page helpful?
0 / 5 - 0 ratings