using Domain.Dtos.Stock; using Domain.Entities; using Domain.Generics; namespace Models.Interfaces { // 1.1 Data (Repo) public interface IExpeditionRepository { /// /// Verifica si alguno de los stock items indicados ya está asociado /// a otra expedición activa. Utilizado para prevenir doble traza. /// /// Lista de stockitem_id a validar. /// /// Expedición a ignorar (usado en edición para no detectar conflicto consigo misma). /// /// Lista de conflictos encontrados. Task> CheckStockItemConflictsAsync(IEnumerable stockItemIds, int? ignoreExpeditionId); /// /// Crea la expedición completa (encabezado + detalles) y la deja emitida con numeración de serie. /// Task<(int Id, string Expeditionnumber)> CreateFullExpeditionAsync(ELSExpeditionHeader expedition, int formSeriesId); Task GetDtoByIdAsync(int id); Task> SearchAsync(string? expeditionNumber, string? status, DateTime? issueDateFrom, DateTime? issueDateTo, int? locationId, int page, int pageSize); } }