namespace EgwCoreLib.Lux.Data.Repository.Sales
{
///
/// Interfaccia per la gestione delle righe degli ordini.
///
public interface IOrderRowRepository : IBaseRepository
{
///
/// Inserisce una nuova riga d'ordine nel database.
///
/// La riga d'ordine da inserire.
/// True se l'inserimento ha successo, false altrimenti.
Task AddAsync(OrderRowModel entity);
///
/// Elimina una riga d'ordine e adegua i numeri di riga successivi.
///
/// La riga d'ordine da eliminare.
/// True se l'eliminazione ha successo, false altrimenti.
Task DeleteAsync(OrderRowModel entity);
///
/// Recupera l'elenco degli elementi BOM (Bill of Materials).
///
/// L'elenco degli elementi BOM.
Task> GetBomItemsAsync();
///
/// Recupera una riga d'ordine per il suo identificatore.
///
/// L'identificatore della riga d'ordine.
/// La riga d'ordine corrispondente, o null se non esiste.
Task GetByIdAsync(int OrderRowId);
///
/// Recupera tutte le righe d'ordine per un ordine specifico.
///
/// L'identificatore dell'ordine.
/// L'elenco delle righe d'ordine associate all'ordine.
Task> GetByParentAsync(int orderId);
///
/// Recupera le righe d'ordine per stato e intervallo di date.
///
/// Lo stato richiesto della riga.
/// La data di inizio del periodo.
/// La data di fine del periodo.
/// L'elenco delle righe d'ordine con lo stato e le date specificate.
Task> GetByStateAsync(OrderStates reqState, DateTime dtStart, DateTime dtEnd);
///
/// Recupera le righe d'ordine per stato minimo e intervallo di date.
///
/// Lo stato minimo richiesto.
/// La data di inizio del periodo.
/// La data di fine del periodo.
/// L'elenco delle righe d'ordine con stato >= a quello specificato.
Task> GetByStateMinAsync(OrderStates reqState, DateTime dtStart, DateTime dtEnd);
///
/// Recupera una riga d'ordine per il suo UID.
///
/// L'UID della riga d'ordine.
/// La riga d'ordine corrispondente, o null se non esiste.
Task GetByUidAsync(string OrderRowUid);
///
/// Recupera l'elenco dei gruppi di articoli.
///
/// L'elenco dei gruppi di articoli.
Task> GetItemGroupsAsync();
///
/// Aggiorna la stima di produzione per una riga d'ordine.
///
/// L'UID della riga d'ordine.
/// La nuova stima di produzione.
/// True se l'aggiornamento ha successo, false altrimenti.
Task SaveProdEstAsync(string uID, string prodEstim);
///
/// Aggiorna in batch le righe d'ordine.
///
/// L'elenco delle righe da aggiornare.
/// True se l'aggiornamento ha successo, false altrimenti.
Task SaveRowsAsync(List rows);
///
/// Aggiorna una riga d'ordine esistente.
///
/// La riga d'ordine aggiornata.
/// True se l'aggiornamento ha successo, false altrimenti.
Task UpdateAsync(OrderRowModel entity);
///
/// Convalida un elenco di righe d'ordine e aggiorna lo stato se necessario.
///
/// L'elenco delle righe da convalidare.
/// Il numero di righe elaborate correttamente.
Task ValidateAsync(List list2chk);
}
}