namespace EgwCoreLib.Lux.Data.Repository.Sales { /// /// Interfaccia per la gestione delle offerte. /// public interface IOfferRepository : IBaseRepository { /// /// Inserisce una nuova offerta nel database. /// /// L'offerta da inserire. /// True se l'inserimento ha successo, false altrimenti. Task AddAsync(OfferModel entity); /// /// Segna come scadute le offerte la cui data di validità è passata e che sono ancora aperte. /// /// True se almeno un'offerta è stata aggiornata, false altrimenti. Task CheckExpiredAsync(); /// /// Esegue il cloning completo di un'Offerta e di tutte le relative righe. /// /// L'offerta da clonare. /// True se il cloning ha successo, false altrimenti. Task CloneAsync(OfferModel rec2clone); /// /// Elimina un'offerta dal database. /// /// L'offerta da eliminare. /// True se l'eliminazione ha successo, false altrimenti. Task DeleteAsync(OfferModel entity); /// /// Recupera l'elenco di tutte le offerte. /// /// L'elenco di tutte le offerte con clienti, rivenditori e righe associate. Task> GetAllAsync(); /// /// Recupera l'elenco degli elementi BOM (Bill of Materials) utilizzati nelle offerte. /// /// L'elenco degli elementi BOM. Task> GetBomItemsAsync(); /// /// Recupera un'offerta per il suo identificatore. /// /// L'identificatore dell'offerta. /// L'offerta corrispondente, o null se non esiste. Task GetByIdAsync(int recId); /// /// Recupera le offerte inserite in un intervallo di date specifico. /// /// La data di inizio del periodo. /// La data di fine del periodo. /// L'elenco delle offerte nell'intervallo specificato. Task> GetFiltAsync(DateTime inizio, DateTime fine); /// /// Recupera l'elenco dei gruppi di articoli. /// /// L'elenco dei gruppi di articoli. Task> GetItemGroupsAsync(); /// /// Recupera le righe dell'offerta per un'offerta specifica. /// /// L'identificatore dell'offerta. /// L'elenco delle righe dell'offerta. Task> GetRowsAsync(int recId); /// /// Aggiorna in batch le righe di un'offerta. /// /// L'elenco delle righe da aggiornare. /// True se l'aggiornamento ha successo, false altrimenti. Task SaveRowsAsync(List rows); /// /// Aggiorna un'offerta esistente nel database. /// /// L'offerta aggiornata. /// True se l'aggiornamento ha successo, false altrimenti. Task UpdateAsync(OfferModel entity); } }