Files
lux/EgwCoreLib.Lux.Data/Repository/Items/IItemRepository.cs
T
Samuele E. Locatelli (W11-AI) e455bb217e Continuo fix interfaces
2026-03-25 16:12:13 +01:00

70 lines
2.9 KiB
C#

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