Mango.Nop.Plugins/Nop.Plugin.Misc.AIPlugin/docs/EKAER/EKAER_TODO.md

5.6 KiB
Raw Blame History

EKÁER — TODO / nyitott döntések

Companion to README.md. Topic EKAER, prefix MGFBANKPLUG → entry IDs MGFBANKPLUG-EKAER-T-<RAND>. ID format, Status vocabulary, type codes, archival → ../../.github/TOPIC_CODES.md (→ framework registry).

Scope: a Shipping / ShippingDocument → NAV tradeCard leképezés (ShippingToEkaerMapper, FruitBank.Common/Services/Ekaer/) nyitott üzleti/technikai döntései. A tisztázott megfeleltetést lásd README.md.

Active entries

MGFBANKPLUG-EKAER-T-K7Q2: Shipping → tradeCard mapping — nyitott döntések

Status: Open · Priority: P2 · Type: T (mapping-tervezés)

A ShippingToEkaerMapper megírása előtt tisztázandó pontok. Minden sor a jelenlegi (alapértelmezett) feltételezést és a nyitott kérdést rögzíti.

# Téma Jelenlegi feltételezés Nyitott kérdés
1 tradeType (E/I/D irány) Bejövő = beszerzés. HU feladó → D (belföldi), egyébként → I (import). A feladó országát a ShippingDocument.Partner / Country adja. Automatikusan az országból dőljön el, vagy kézzel (UI) állítható? A kimenő (E, export) egyelőre hatókörön kívül (lásd #7).
2 Célhely / telephely Megoldva: configból (Ekaer:Company + Site al-szekció) → IEkaerSettings.Company + EkaerCompanyInfo.Site (LocationType, fel-/lerakodás). Nincs hardcode. Több telephely (mint a PartnerDepot) — későbbi, ha kell.
3 Érték (value, HUF) Megoldva: UnitPriceOnDocument × QuantityOnDocument × árfolyam (EkaerValueCalculator). Pénznem a Partner.Currency-ből; EUR-HUF árfolyam configból (Ekaer:ExchangeRate:EurHuf, MNB középárfolyam). Árfolyam dinamizálása (jelenleg „drót" config-érték) — későbbi.
4 Tömeg (weight) ShippingItem.MeasuredGrossWeight (bruttó). Az EKÁER bruttó tömeget vár — megerősíteni, hogy ez bruttó és nem nettó.
5 Granularitás 1 ShippingDocument → 1 tradeCard; 1 Shipping → több művelet (több dokumentum). Megerősíteni: tényleg dokumentumonként egy tradeCard?
6 Eladó (seller*) mezők ShippingDocument.Partner-ből: Name, TaxId (első 8 jegy = adószám-törzs), CountryCode, City, Street, PostalCode. A Partner (PartnerBase) pontos mezőnevei/forrásai — megerősíteni.
7 Kimenő irány (Order → EKÁER) Implementálva (MapOrder): belföldi értékesítés (D/S), mi=eladó, vevő=címzett; tömeg OrderItemDto.GrossWeight, érték nettó (UnitPriceExclTax × qty), jelenleg minden HUF (rate 1). Nyitott: a vonó jármű / fuvarozó forrása — az Orderen NINCS; az OrderDto-ba bekötendő (a MapOrder Vehicle/CarrierText TODO-ja). Export (E) + külföldi deviza + a Customer.CountryId ISO-feloldása: későbbi.
8 productVtsz forrás ProductDto.Gtin (átmeneti). GTIN ≠ VTSZ — lásd MGFBANKPLUG-EKAER-I-T3X8. Hosszú távon külön Vtsz mező.
9 tétel tradeReason A (beszerzés) — a mapper ezt használja bejövő árura. Korábban tévesen S-nek feltételezve; az enum valójában S=értékesítés, A=beszerzés. Üzletileg megerősítendő.
10 value mező Megoldva: a value most töltve (lásd #3); 0 / ismeretlen ár esetén null marad. A NAV 2021-től value > 0-t vár — a validátorban a value > 0 üzleti szabály még hozzáadandó.

Affected:

  • ShippingToEkaerMapper (FruitBank.Common/Services/Ekaer/) — a leképezés
  • EkaerTradeCardValidator / EkaerSubmitService / EkaerManageService (AyCode.Services/Nav/Ekaer/) — validáció + beküldés + HTTP (általános NAV-réteg)
  • FruitBankEkaerService (FruitBank.Common.Server/Services/Ekaer/) — a szerver-oldali fogyasztó (map → submit)
  • Forrás-entitások (FruitBank.Common): Shipping, ShippingDocument, ShippingItem, ProductDto.Gtin

MGFBANKPLUG-EKAER-T-W3R8: EKÁER küszöb-kategória a terméknél (enum, DB-ben tárolva)

Status: Open · Priority: P2 · Type: T (adatmodell + mapping)

Az EKÁER bejelentés-kötelezettség küszöbe termékfüggő — a VTSZ kockázati besorolása dönti el, melyik értékhatár vonatkozik rá:

Kategória Tömeg Érték (nettó)
Kockázatos élelmiszer 200 kg 250 000 Ft
Kockázatos egyéb (nem élelmiszer) 500 kg 1 000 000 Ft
Nem kockázatos 2500 kg 5 000 000 Ft

Jelenlegi (átmeneti): a CreateMissingEkaerHistories egyetlen, globális küszöböt használ az EkaerSettings-ből (config: 200 kg / 250 000 Ft — a legszigorúbb, hogy ne legyen aluljelentés).

Cél: a terméknél (Product) kézzel megadható küszöb-KATEGÓRIA (nem a konkrét érték!) — egy enum (pl. EkaerThresholdCategory { RiskyFood, RiskyOther, NonRisky }) —, DB-ben tárolva (Product oszlop / GenericAttribute). A konkrét kg/Ft értékeket a kód rendeli a kategóriához → értékhatár-változáskor egy helyen módosul. A küszöb-kapu dokumentumonként a tételek kategóriái szerint alkalmazza a megfelelő határt. (Későbbi lépés: a kategória automatikus levezetése a NAV kockázatos-VTSZ-listákból.)

Affected:

  • FruitBank.Common/Dtos/ProductDto.cs — küszöb-kategória mező (enum, DB-ben)
  • EkaerSettings / EkaerValueCalculator (FruitBank.Common/Services/Ekaer/) — kategória → küszöbérték leképezés
  • FruitBankDataController.CreateMissingEkaerHistories — a kapu a tételek kategóriái szerint