FruitBankHybridApp/FruitBank.Common/Services/Ekaer/IShippingToEkaerMapper.cs

27 lines
1.6 KiB
C#

using AyCode.Services.Nav.Ekaer.Models;
using FruitBank.Common.Entities;
namespace FruitBank.Common.Services.Ekaer;
/// <summary>
/// FruitBank domain → NAV EKÁER tradeCard leképezés. Egy bejövő <see cref="Shipping"/>-ből
/// EKÁER tradeCard műveleteket állít elő (dokumentumonként egyet).
/// </summary>
/// <remarks>
/// A NAV-protokollt és az authentikációt NEM kezeli — az az <c>AyCode.Services.Nav</c> réteg
/// (<c>NavReportServiceBase</c> / <c>EkaerManageService</c>) felelőssége. A tényleges NAV-bejelentést
/// a szerver-oldali (nopCommerce plugin) service végzi, amely ezt a leképezőt használja. A leképezés
/// tisztázott pontjai és nyitott döntései a plugin <c>docs/EKAER/README.md</c> és <c>EKAER_TODO.md</c> fájljaiban.
/// </remarks>
public interface IShippingToEkaerMapper
{
/// <summary>
/// Leképezi a <paramref name="shipping"/> minden <c>ShippingDocument</c>-jét egy-egy EKÁER tradeCard műveletre.
/// </summary>
/// <param name="shipping">A bejövő szállítmány. A fuvarozó/jármű a Shipping szintjén, az eladó/tételek a dokumentum szintjén élnek.</param>
/// <param name="options">A konfiguráció-függő adatok (destination cég, lerakodási hely, home country).</param>
/// <param name="operation">A tradeCard művelet típusa. Alapértelmezés: <see cref="OperationType.Create"/>.</param>
/// <returns>Dokumentumonként egy <see cref="TradeCardOperationType"/>, a beérkezés sorrendjében indexelve.</returns>
IReadOnlyList<TradeCardOperationType> MapShipping(Shipping shipping, EkaerMappingOptions options, OperationType operation = OperationType.Create);
}