AyCode.Core/AyCode.Services/Nav/docs/EKAER_VALIDATION.md

5.6 KiB
Raw Blame History

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.xsd ReasonCodeType. Kivonat — a teljes hibakód-lista (~150 érték, leírással) a common.xsd ReasonCodeType-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űvelet­enké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, city kötelező.
  • street+streetNumber vagy lotNumber kö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ímben name és VATNumber kö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.xsd ReasonCodeType. 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), a System.ComponentModel.DataAnnotations.Validator-ral. A *Value/*Specified segéd-property-ket kihagyja (a default DateTime kü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 (a null bukik, 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 value a 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átorban value > 0 üzleti szabály. (Plugin EKAER_TODO #3/#10.)