namespace EgwCoreLib.Lux.Data.Repository.Items
{
public interface IItemRepository : IBaseRepository
{
#region Public Methods
///
/// Inserisce un nuovo record Item nel database.
///
/// Record da inserire
Task AddAsync(ItemModel entity);
///
/// Elimina un record Item dal database.
///
/// Record da eliminare
Task DeleteAsync(ItemModel entity);
///
/// Recupera un record Item specifico per ID.
///
/// ID dell'item da recuperare
Task GetByIdAsync(int recId);
///
/// Recupera l'elenco degli item alternativi per un item specifico (stesso parent o child).
///
/// ID dell'item di riferimento
Task> GetAltAsync(int recId);
///
/// Recupera gli item filtrati per gruppo e tipo classe.
///
/// Codice del gruppo filtro (vuoto = tutti)
/// Tipo di classe filtro (ND = tutti)
Task> GetFiltAsync(string CodGroup, ItemClassType ItemType);
///
/// Cerca item per descrizione, codice esterno o codice fornitore.
///
/// Termine di ricerca
Task> GetSearchAsync(string term);
///
/// Aggiorna in massa costi e margini basati su dimensioni (larghezza x altezza).
///
/// Lista di item da aggiornare
/// Costo base per unità
/// Margine predefinito
/// Quantità massima predefinita
/// Unità di misura predefinita
/// Value per arrotondamento (0 = nessun arrotondamento)
/// Fattore di scala per il calcolo costo
Task MassUpdateAsync(List list2upd, double setCost, double defMargin, double defQtyMax, string defUM, int roundVal = 0, double scaleFactor = 1_000_000.0);
///
/// Aggiorna un record Item esistente nel database.
///
/// Record aggiornato
Task UpdateAsync(ItemModel entity);
///
/// Inserisce item mancanti dalla BOM nel database con valori predefiniti.
///
/// Lista BOM da processare
Task UpsertFromBomAsync(List bomList);
#endregion Public Methods
}
}