using AyCode.Services.Nav.Ekaer; using AyCode.Services.Nav.Ekaer.Models; using FruitBank.Common.Dtos; using FruitBank.Common.Entities; namespace FruitBank.Common.Services.Ekaer; /// /// FruitBank domain → NAV EKÁER tradeCard leképezés. Egy bejövő -ből /// EKÁER tradeCard műveleteket állít elő (dokumentumonként egyet). /// /// /// A NAV-protokollt és az authentikációt NEM kezeli — az az AyCode.Services.Nav réteg felelőssége. /// A feladót (beszállító Partner) és a saját céget () egységesen, /// -ként kezeli. /// public interface IShippingToEkaerMapper { /// /// Leképezi a minden ShippingDocument-jét egy-egy EKÁER tradeCard műveletre. /// /// A bejövő szállítmány (fuvarozó/jármű a Shipping szintjén, eladó/tételek a dokumentum szintjén). /// A bejelentő saját cégadatai (címzett bejövő relációban) + a lerakodási hely. /// A tradeCard művelet típusa. Alapértelmezés: . IReadOnlyList MapShipping(Shipping shipping, EkaerCompanyInfo company, OperationType operation = OperationType.Create); /// /// EGY szállítólevelet () képez le egy tradeCard-dá — a dokumentum-szintű /// EKÁER-granularitás egysége (1 dokumentum = 1 tradeCard = 1 TCN). A jármű/fuvarozó adatok a /// document.Shipping-ből jönnek; ha az nincs betöltve, ezek üresen maradnak (a validátor jelzi). /// TradeCardType MapDocument(ShippingDocument document, EkaerCompanyInfo company); /// /// EGY kimenő rendelést () képez le egy tradeCard-dá: a bejelentő /// (mi) az ELADÓ, a vevő a CÍMZETT, az irány belföldi értékesítés (D/S). A vonó jármű forrása /// a kimenő fuvar-adat (OrderDto) — amíg az nincs bekötve, üresen marad (a validátor jelzi). /// TradeCardType MapOrder(OrderDto order, EkaerCompanyInfo company); /// /// Bejövő forrás → normalizált . Egy vagy több -tel /// hívható: EGY dokumentummal a tradeCard-generáláshoz, a (Shipping, Partner) CSOPORTtal a kötelezettség-summához /// (a tételek összevonva). A hívó gondoskodik róla, hogy a csoport azonos partneré és azonos Shippingé legyen. /// EkaerConsignment ToConsignment(IReadOnlyCollection documents, EkaerCompanyInfo company); /// Kimenő forrás → normalizált (egy rendelés = egy szállítmány). EkaerConsignment ToConsignment(OrderDto order, EkaerCompanyInfo company); /// Normalizált szállítmány → NAV tradeCard. KÖZÖS a két irányra; a MapDocument/MapOrder ezt hívja. TradeCardType BuildTradeCard(EkaerConsignment consignment); }