namespace EgwCoreLib.Lux.Data.Repository.Sales
{
///
/// Interfaccia per la gestione delle righe delle offerte.
///
public interface IOfferRowRepository : IBaseRepository
{
///
/// Inserisce una nuova riga d'offerta nel database e adegua i numeri di riga successivi.
///
/// La riga d'offerta da inserire.
/// True se l'inserimento ha successo, false altrimenti.
Task AddAsync(OfferRowModel entity);
///
/// Elimina una riga d'offerta e adegua i numeri di riga successivi.
///
/// La riga d'offerta da eliminare.
/// True se l'eliminazione ha successo, false altrimenti.
Task DeleteAsync(OfferRowModel entity);
///
/// Recupera l'elenco degli elementi BOM (Bill of Materials).
///
/// L'elenco degli elementi BOM.
Task> GetBomItemsAsync();
///
/// Recupera una riga d'offerta per il suo identificatore.
///
/// L'identificatore della riga d'offerta.
/// La riga d'offerta corrispondente, o null se non esiste.
Task GetByIdAsync(int offerRowId);
///
/// Recupera tutte le righe d'offerta per un'offerta specifica.
///
/// L'identificatore dell'offerta.
/// L'elenco delle righe d'offerta associate all'offerta.
Task> GetByParentAsync(int offerId);
///
/// Recupera una riga d'offerta per il suo UID.
///
/// L'UID della riga d'offerta.
/// La riga d'offerta corrispondente, o null se non esiste.
Task GetByUidAsync(string offerRowUid);
///
/// Recupera l'elenco dei gruppi di articoli.
///
/// L'elenco dei gruppi di articoli.
Task> GetItemGroupsAsync();
///
/// Aggiorna in batch le righe d'offerta.
///
/// L'elenco delle righe da aggiornare.
/// True se l'aggiornamento ha successo, false altrimenti.
Task SaveRowsAsync(List rows);
///
/// Aggiorna una riga d'offerta esistente.
///
/// La riga d'offerta aggiornata.
/// True se l'aggiornamento ha successo, false altrimenti.
Task UpdateAsync(OfferRowModel entity);
}
}