5.6 KiB
EKÁER — Validációs szabályok és hibakódok
Forrás:
eKAERManagementService_2.2.pdf§2.3.2.2/2.3.2.5/2.3.2.9/3.5 +common.xsdReasonCodeType. Kivonat — a teljes hibakód-lista (~150 érték, leírással) acommon.xsdReasonCodeType-jában. Payload:EKAER_TRADECARD.md.
Válasz-eredmény (result)
| Mező | Érték |
|---|---|
funcCode |
OK (siker) / WARNING (részben — ritka) / ERROR (hiba) |
reasonCode |
enum; SUCCESS a siker, minden más hibára utal |
msg |
szöveges leírás (jellemzően hibánál) |
A manageTradeCardsResponse műveletenként (operationResult, index szerint) adja vissza az eredményt. A tradeCardInfo a bejelentés alapadatait (köztük a tcn-t és a státuszt) hozza; NAVValidations / warnings a részletek.
Kötelezőség tradeType szerint (a leggyakoribb hibaforrás)
| Szabály | E (export) | I (import) | D (belföld) |
|---|---|---|---|
| feladó+címzett név és adószám | kötelez | kötelező | kötelező (mindig) |
feladó címadat (sellerAddress/sellerCountry) |
kötelező | opcionális | kötelező |
címzett címadat (destinationAddress/destinationCountry) |
opcionális | kötelező | kötelező |
| fel-/lerakodási cím magyar + magyar adószám | felrakodás HU | lerakodás HU | mindkettő HU |
Normál bejelentésnél (tradeCardType=N) mindig kell fel- és lerakodási cím (1.8-tól: deliveryPlan-ben). Egyszerűsítettnél (S) nem.
Címadat-validáció (LocationType)
country,zipCode,citykötelező.street+streetNumbervagylotNumberkötelező.gpsPositionönmagában csak akkor elég, ha nincs kockázatos termék.- Import +
isDestinationCompanyIdentical=false+ kockázatos termék → a lerakodási címbennameésVATNumberkötelező.
Tétel-validáció (tradeCardItem)
- VTSZ létezés-ellenőrzés; 2021.01.01-től 8 számjegy kötelező (különben
TC_VTSZ_TOO_SHORT), ismeretlen →TC_VTSZ_UNKNOWN. - VTSZ alapján kockázatos-e → ha igen, biztosítékot számol; csak elegendő fedezetnél rögzíthető (
LOW_BALANCE). - VTSZ alapján FELIR-köteles-e → a bejelentő FELIR-számának ellenőrzése (NÉBIH); ezeket csak engedélyezett első beraktározási helyen lehet lerakni.
- 2021.01.01-től minden tétel
value> 0 kötelező.
Hibakód-kategóriák (ReasonCodeType kivonat)
A pontos kód + magyar leírás:
common.xsdReasonCodeType. Itt a navigációhoz a fő csoportok:
| Csoport | Példa kódok |
|---|---|
| Általános | SUCCESS, OPERATION_FAILED, INVALID_INPUT, INVALID_REQUEST, INVALID_REQUEST_HEADERS, UNKNOWN_PACKAGE_VERSION |
| Auth / jogosultság | INVALID_USER_OR_PASSWORD, ACCESS_DENIED, NO_TAX_DATA, USER_TAX_DATA_NOT_VALID, EXPIRED_PASSWORD, NO_VALID_MASTER_USER |
| Feladó / címzett | TC_SELLER_NAME_EMPTY, TC_SELLER_VAT_NUMBER_EMPTY/ERROR, TC_DESTINATION_*, TC_*_MUST_BE_HUNGARY, TC_*_CANT_BE_HUNGARY |
| Cím | TC_LOAD_LOCATION_*, TC_UNLOAD_LOCATION_*, TC_LOCATION_NOT_HUNGARY, TC_LOCATION_NOT_COMPLETE |
| Jármű / rendszám | TC_VEHICLE_NOT_FOUND, TC_PLATENUMBER_MISSING, TC_PLATENUMBER_COUNTRY_MISSING, TC_UNKNOWN_LICENCE_PLATE_COUNTRY_CODE |
| Dátum | TC_INVALID_LOADDATE, TC_INVALID_ARRIVALDATE, TC_ARRIVALDATE_MISSING, TC_LOADDATE_MISSING, TC_FUTURE_ARRIVAL_NOT_ALLOWED, TC_VALIDITY_EXCEEDED |
| Finalize | TC_FINALIZE_VEHICLE_DATA_EMPTY, TC_FINALIZE_ARRIVAL_DATE_EMPTY, TC_FINALIZE_NOT_ALLOWED |
| VTSZ / tétel | TC_VTSZ_TOO_SHORT, TC_VTSZ_UNKNOWN, TC_ITEM_NOT_FOUND, TCI_* (item-szintű), TC_FELIR_NEBIH_REG_NEEDED |
| Módosítás / lezárt | TC_MODIFICATION_DISABLED, TC_MODIFY_BY_CARRIER_DISABLED, TC_FINALIZED_MOD_NOT_ALLOWED, TC_FINALIZED_* |
| Biztosíték | LOW_BALANCE |
A funcCode/reasonCode C# leképezése
A BaseResultType (funcCode/reasonCode/msg) a Nav/NavInterfaces.cs INavResult-jára húzódik rá (IsSuccess = funcCode == OK). A NavReportServiceBase ez alapján dob NavReportException-t a reasonCode-dal.
A validáció C# megvalósítása
A fenti szabályokat a EkaerTradeCardValidator (Nav/Ekaer/) ellenőrzi a leképzett tradeCard-okon, beküldés előtt, hibalistával (nem áll meg az első hibánál):
- Séma-szint: a generált modellek
[Required]/[RegularExpression]/ hossz-attribútumai (rekurzívan a tradeCard + tételek + jármű + helyszínek fölött), aSystem.ComponentModel.DataAnnotations.Validator-ral. A*Value/*Specifiedsegéd-property-ket kihagyja (a defaultDateTimekülönben tévesen bukna a timestamp-patternen). - Üzleti szabályok (az XSD-ben nem
[Required], de a NAV megköveteli): vonó jármű kötelező, legalább egy tétel, feladó/címzett név+adószám+ország. productVtszüres-string: a modellen[Required(AllowEmptyStrings=true)]+ pattern miatt az""elcsúszna a sémán (anullbukik, az""nem) — ezért a validátor külön lezárja.
A EkaerSubmitService (Nav/Ekaer/) a kapu: Validate → ha a hibalista nem üres, nem küld (EkaerSubmitResult.Invalid); egyébként EkaerManageService.ManageAsync.
⚠️ Nyitott (value): a tétel
valuea NAV szerint 2021-től > 0 kötelező (lásd a Tétel-validáció szakaszt), a validátor viszont jelenleg nem követeli — mert a FruitBank-mapper a deviza/FX tisztázásáig nem tölti. Amíg ez nyitott, a NAV elutasíthatja a beküldést. Lezárandó: a value kitöltése (deviza→HUF) + a validátorbanvalue > 0üzleti szabály. (PluginEKAER_TODO#3/#10.)