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);
}