using AyCode.Services.Nav.Ekaer; using AyCode.Services.Nav.Ekaer.Models; using FruitBank.Common.Dtos; using FruitBank.Common.Entities; namespace FruitBank.Common.Server.Services.Ekaer; /// /// A FruitBank szerver-oldali EKÁER-fogyasztója: egy -et leképez EKÁER tradeCard-okra /// (a mapperrel), majd beküldi (az általános submit-orchestrátorral). Ez a vékony, projekt-specifikus réteg; /// az általános NAV/EKÁER logika (validátor, submit, manage) az AyCode.Services-ben él. /// public interface IFruitBankEkaerService { /// /// Leképezi és beküldi a szállítmányt. Az eredmény vagy validációs hibák (nem ment ki kérés), /// vagy a NAV-válasz — lásd . /// Task SubmitShippingAsync(Shipping shipping, OperationType operation = OperationType.Create, CancellationToken cancellationToken = default); /// /// Egy szállítólevélből legenerálja az EKÁER tradeCard XML-t és validálja — a (meglévő vagy új) /// rekordot tölti: XmlDoc + Status /// ( / ) + ErrorText. /// NEM perzisztál és NEM hív NAV-ot — a mentés (upsert) a hívó SignalR endpoint dolga. /// /// A szállítólevél a betöltött gráffal (Partner, Items+ProductDto, Shipping→járművek). /// A dokumentum meglévő rekordja (újrageneráláskor); null → új rekord készül. EkaerHistory GenerateEkaerXmlDocument(ShippingDocument document, EkaerHistory? ekaerHistory = null); /// /// Egy kimenő rendelésből () legenerálja az EKÁER tradeCard XML-t és validálja — /// a (meglévő vagy új) rekordot tölti (IsOutgoing = true). Mi vagyunk az /// ELADÓ, a vevő a CÍMZETT (belföldi értékesítés). NEM perzisztál és NEM hív NAV-ot — a mentés a hívó dolga. /// EkaerHistory GenerateEkaerXmlDocument(OrderDto order, EkaerHistory? ekaerHistory = null); }