71 lines
3.6 KiB
C#
71 lines
3.6 KiB
C#
using AyCode.Services.Nav.Ekaer.Models;
|
|
using TradeReasonType = AyCode.Services.Nav.Ekaer.Models.Common.TradeReasonType;
|
|
|
|
namespace FruitBank.Common.Services.Ekaer;
|
|
|
|
/// <summary>
|
|
/// Irány-független, normalizált szállítmány-modell. A bejövő (<c>ShippingDocument</c>-csoport) és a kimenő
|
|
/// (<c>OrderDto</c>) forrás EBBE képződik (a <see cref="IShippingToEkaerMapper"/> adapterei), és innen épül MIND a
|
|
/// NAV tradeCard (<see cref="IShippingToEkaerMapper.BuildTradeCard"/>), MIND a bejelentés-kötelezettség
|
|
/// (<see cref="EkaerReportability"/>). Így az irányfüggő tudás a két adapterre szorul, a közös logika egy helyen van.
|
|
/// Szerver-oldali köztes típus — NEM megy a SignalR-dróton.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// A fel-/lerakodási hely és a jármű már a NAV-típus (<see cref="LocationType"/>, <see cref="BasicVehicleDetailType"/>),
|
|
/// mert a saját telephely (<c>company.Site</c>) kész LocationType (Phone/Email/FELIR-mezőkkel) — azt átalakítás nélkül,
|
|
/// MEZŐVESZTÉS nélkül kell átengedni. A normalizálás (kötelezettséghez számít) a feladó/címzett országkódjára és a
|
|
/// tételek tömeg/érték-aggregálására korlátozódik.
|
|
/// </remarks>
|
|
public sealed class EkaerConsignment
|
|
{
|
|
/// <summary>A forrás azonosítója (bejövőnél ShippingDocument.Id, kimenőnél Order.Id). Csoport-kiértékelésnél
|
|
/// (több dokumentum) az első forrásé — a kötelezettség-döntés nem használja.</summary>
|
|
public int ForeignKey { get; init; }
|
|
|
|
public bool IsOutgoing { get; init; }
|
|
|
|
/// <summary>Számla-pénznem (ISO 4217). A tétel <see cref="EkaerLine.ValueHuf"/> már KISZÁMOLT HUF-ban.</summary>
|
|
public string? Currency { get; init; }
|
|
|
|
/// <summary>Feladó / eladó (a kötelezettség az országkódját nézi).</summary>
|
|
public EkaerEndpoint Seller { get; init; } = new();
|
|
|
|
/// <summary>Címzett / vevő (a kötelezettség az országkódját nézi).</summary>
|
|
public EkaerEndpoint Buyer { get; init; } = new();
|
|
|
|
/// <summary>Felrakodási hely (NAV LocationType — pl. a saját telephely átengedve).</summary>
|
|
public LocationType? LoadLocation { get; init; }
|
|
|
|
/// <summary>Lerakodási hely (NAV LocationType — pl. a saját telephely átengedve).</summary>
|
|
public LocationType? UnloadLocation { get; init; }
|
|
|
|
public IReadOnlyList<EkaerLine> Lines { get; init; } = [];
|
|
|
|
public BasicVehicleDetailType? Vehicle { get; init; }
|
|
public BasicVehicleDetailType? Trailer { get; init; }
|
|
public string? CarrierName { get; init; }
|
|
}
|
|
|
|
/// <summary>Egy fél (feladó/címzett) normalizálatlan adatai a NAV seller/destination mezőkhöz ÉS a kötelezettség
|
|
/// országkód-vizsgálatához. (A cím egysoros; a tagolt fel-/lerakodási helyet a <see cref="EkaerConsignment.LoadLocation"/>
|
|
/// / <see cref="EkaerConsignment.UnloadLocation"/> hordozza.)</summary>
|
|
public sealed class EkaerEndpoint
|
|
{
|
|
public string? Name { get; init; }
|
|
public string? VatNumber { get; init; }
|
|
public string? CountryCode { get; init; }
|
|
public string? FullAddress { get; init; }
|
|
}
|
|
|
|
/// <summary>Egy normalizált tétel. A <see cref="WeightKg"/> és a <see cref="ValueHuf"/> már KISZÁMOLT (HUF-ban),
|
|
/// hogy a küszöb-summa és a tradeCard ugyanazt használja (egyetlen érték-forrás).</summary>
|
|
public sealed class EkaerLine
|
|
{
|
|
public string ExternalId { get; init; } = string.Empty;
|
|
public string? Vtsz { get; init; }
|
|
public string? Name { get; init; }
|
|
public double WeightKg { get; init; }
|
|
public long? ValueHuf { get; init; }
|
|
public TradeReasonType TradeReason { get; init; }
|
|
}
|