Add EKÁER XML support for outgoing orders, refactor config

- Introduced IEkaerSettings interface and refactored code to use it for DI/testability
- Added support for generating EKÁER XML from outgoing orders (OrderDto)
- Extended service and mapper interfaces for outgoing order handling
- Implemented MapOrder and value calculation for order items
- Replaced UnloadLocation with Site in EkaerCompanyInfo for general site usage
- Updated tests, SignalR/controller interfaces, and UI to support new features and signatures
- Improved documentation and code clarity throughout
This commit is contained in:
Loretta 2026-06-12 07:54:38 +02:00
parent ecc8c97a80
commit 52541628f9
2 changed files with 27 additions and 2 deletions

View File

@ -22,6 +22,7 @@ public sealed class EkaerCompanyInfo : ICompanyInfoBase
public string? FullAddress => this.ComposeFullAddress(); public string? FullAddress => this.ComposeFullAddress();
/// <summary>A saját telephely / lerakodási hely. Magyar címnél a NAV a Name/VatNumber/Phone/Email-t is megköveteli.</summary> /// <summary>A bejelentő saját telephelye (fizikai fel-/lerakodási hely): bejövőnél lerakodás, kimenőnél felrakodás.
public LocationType? UnloadLocation { get; set; } /// Magyar címnél a NAV a Name/VatNumber/Phone/Email-t is megköveteli.</summary>
public LocationType? Site { get; set; }
} }

View File

@ -0,0 +1,24 @@
namespace AyCode.Services.Nav.Ekaer;
/// <summary>
/// Általános EKÁER-konfiguráció kontraktus — bármely bejelentő projekt implementálja: a bejelentő cégadata
/// (a telephely fel-/lerakodási hellyel), a deviza→HUF árfolyam és a bejelentési küszöbök. Read-only; a konkrét,
/// config-kötött beállítást a DI szolgáltatja — ugyanúgy, mint az <see cref="INavCredentials"/>-t.
/// A kettő szándékosan KÜLÖN kontraktus: az <c>INavCredentials</c> a NAV-hitelesítés (transport/titok), ez pedig
/// a bejelentés üzleti tartalma — más a fogyasztójuk és más a változási okuk (ISP / Single Responsibility).
/// </summary>
public interface IEkaerSettings
{
/// <summary>A bejelentő saját cégadatai (eladó/címzett + a <see cref="EkaerCompanyInfo.Site"/> telephely).</summary>
EkaerCompanyInfo Company { get; }
/// <summary>EUR→HUF árfolyam a tétel-érték HUF-ra számításához (HUF feladónál nem használt).</summary>
double EurHufRate { get; }
/// <summary>Tömeg-küszöb kg-ban: e felett (vagy az érték-küszöb felett) kell EKÁER.</summary>
double ThresholdWeightKg { get; }
/// <summary>Érték-küszöb HUF-ban (nettó): e felett (vagy a tömeg-küszöb felett) kell EKÁER.
/// <c>int</c> elég: a legmagasabb EKÁER-küszöb 5 millió Ft (a tétel-érték maga viszont long — 11 jegyű).</summary>
int ThresholdValueHuf { get; }
}