Files
2026-04-17 12:35:21 +02:00

139 lines
5.7 KiB
C#

namespace EgwCoreLib.Lux.Data.Services.Sales
{
public interface IOrderRowService
{
#region Public Methods
/// <summary>
/// Eliminazione record
/// </summary>
/// <param name="rec2del"></param>
/// <returns></returns>
Task<bool> DeleteAsync(OrderRowModel model);
/// <summary>
/// Effettua fix TipoImg righe child dell' Order indicato
/// </summary>
/// <param name="OrderId">Key</param>
/// <returns></returns>
Task<bool> FixImgTypeAsync(int OrderId);
/// <summary>
/// Effettua fix UID righe child del temoplate indicato e restituisce elenco UID da chiamare x refresh
/// </summary>
/// <param name="OrderId">Key</param>
/// <returns></returns>
Task<List<string>> FixUidAsync(int OrderId);
/// <summary>
/// Recupera una riga ordine per ID. Utilizza la cache se doForce è false.
/// </summary>
/// <param name="OrderRowId">ID della riga ordine da recuperare</param>
Task<OrderRowModel?> GetByIdAsync(int OrderRowId);
/// <summary>
/// Elenco filtrato (parent) OrderRow da DB
/// </summary>
/// <param name="OrderId"></param>
/// <returns></returns>
Task<List<OrderRowModel>> GetByParentAsync(int OrderId);
/// <summary>
/// Recupera le righe ordine filtrate per stato in un intervallo di date.
/// Utilizza la cache automaticamente.
/// </summary>
/// <param name="reqState">Stato richiesto</param>
/// <param name="dtStart">Data inizio periodo</param>
/// <param name="dtEnd">Data fine periodo</param>
Task<List<OrderRowModel>> GetByStateAsync(OrderStates reqState, DateTime dtStart, DateTime dtEnd);
/// <summary>
/// Recupera le righe ordine con stato minimo in un intervallo di date.
/// Utilizza la cache automaticamente.
/// </summary>
/// <param name="reqState">Stato minimo richiesto</param>
/// <param name="dtStart">Data inizio periodo</param>
/// <param name="dtEnd">Data fine periodo</param>
Task<List<OrderRowModel>> GetByStateMinAsync(OrderStates reqState, DateTime dtStart, DateTime dtEnd);
/// <summary>
/// Recupera una riga ordine per UID. Utilizza la cache automaticamente.
/// </summary>
/// <param name="OrderRowUid">UID della riga ordine da recuperare</param>
Task<OrderRowModel?> GetByUidAsync(string OrderRowUid);
/// <summary>
/// Aggiorna lo stato di attesa (BOM/Prezzo) per una riga ordine.
/// </summary>
/// <param name="OrderRowId">ID della riga da aggiornare</param>
/// <param name="awaitBom">Nuovo valore AwaitBom</param>
/// <param name="awaitPrice">Nuovo valore AwaitPrice</param>
/// <param name="flushCache">Se true invalida la cache</param>
Task<bool> UpdateAwaitStateAsync(int OrderRowId, bool? awaitBom, bool? awaitPrice, bool flushCache = false);
/// <summary>
/// Effettua update del valore serializzato della Riga Order
/// </summary>
/// <param name="OrderRowID">ID Riga Order da aggiornare</param>
/// <param name="serStruct">Serializzazione oggetto (es JWD)</param>
/// <returns></returns>
Task<bool> UpdateBomAsync(int OrderRowID, List<BomItemDTO> newBomList);
/// <summary>
/// Effettua update della BOM (esplicita) della Riga Order
/// </summary>
/// <param name="uID">UID Riga Offer da aggiornare</param>
/// <param name="newBomList">BOM List esplicita</param>
/// <returns></returns>
Task<bool> UpdateBomAsync(string uID, List<BomItemDTO> newBomList);
/// <summary>
/// Effettua update delle info legate al file per il Order indicato
/// </summary>
/// <param name="updRec">Riga Order coi dati da aggiornare</param>
/// <returns></returns>
Task<bool> UpdateFileDataAsync(OrderRowModel updRec);
/// <summary>
/// Effettua update del valore serializzato della Riga Order
/// </summary>
/// <param name="OrderRowID">ID Riga Order da aggiornare</param>
/// <param name="serStruct">Serializzazione oggetto (es JWD)</param>
/// <returns></returns>
Task<bool> UpdateSerStructAsync(int OrderRowID, string serStruct);
/// <summary>
/// Effettua update dello stato della Riga Order
/// </summary>
/// <param name="OrderRowID">ID Riga Order da aggiornare</param>
/// <param name="serStruct">Serializzazione oggetto (es JWD)</param>
/// <returns></returns>
Task<bool> UpdateStateAsync(int orderRowID, OrderStates reqState);
/// <summary>
/// Upsert record OrderRow
/// </summary>
/// <param name="updRec"></param>
/// <returns></returns>
Task<OrderRowModel?> UpsertAsync(OrderRowModel upsRec);
/// <summary>
/// Esegue salvataggio ProdEstimate (per riga ordine) sul DB
/// </summary>
/// <param name="uID">UID dell'item offerta di cui si è ricevuto la ProdEstim</param>
/// <param name="execEnvironment">Environment dell'item</param>
/// <param name="prodEstim">Stima ProdEstimate serializzata</param>
/// <returns></returns>
Task<bool> SaveProdEstAsync(string uID, string prodEstim);
/// <summary>
/// Validazione record:
/// - controllo state vs estimate
/// - segnala il numero dei record aggiornati
/// </summary>
/// <param name="list2chk">Elenco record da verificare</param>
Task<int> ValidateAsync(List<OrderRowModel> list2chk);
#endregion Public Methods
}
}