2025-09-04 18:15:15 -03:00
|
|
|
|
using Domain.Dtos.Stock;
|
|
|
|
|
|
using Domain.Entities;
|
2025-09-05 16:31:58 -03:00
|
|
|
|
using Domain.Generics;
|
2025-09-04 18:15:15 -03:00
|
|
|
|
|
|
|
|
|
|
namespace Models.Interfaces
|
|
|
|
|
|
{
|
|
|
|
|
|
// 1.1 Data (Repo)
|
|
|
|
|
|
public interface IExpeditionRepository
|
|
|
|
|
|
{
|
2026-03-11 23:35:51 -03:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Verifica si alguno de los stock items indicados ya está asociado
|
|
|
|
|
|
/// a otra expedición activa. Utilizado para prevenir doble traza.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="stockItemIds">Lista de stockitem_id a validar.</param>
|
|
|
|
|
|
/// <param name="ignoreExpeditionId">
|
|
|
|
|
|
/// Expedición a ignorar (usado en edición para no detectar conflicto consigo misma).
|
|
|
|
|
|
/// </param>
|
|
|
|
|
|
/// <returns>Lista de conflictos encontrados.</returns>
|
|
|
|
|
|
Task<List<StockItemExpeditionConflictDto>> CheckStockItemConflictsAsync(IEnumerable<int> stockItemIds, int? ignoreExpeditionId);
|
2025-09-04 18:15:15 -03:00
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Crea la expedición completa (encabezado + detalles) y la deja emitida con numeración de serie.
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
Task<(int Id, string Expeditionnumber)> CreateFullExpeditionAsync(ELSExpeditionHeader expedition, int formSeriesId);
|
|
|
|
|
|
Task<ExpeditionDto?> GetDtoByIdAsync(int id);
|
2025-09-05 16:31:58 -03:00
|
|
|
|
Task<PagedResult<ExpeditionDto>> SearchAsync(string? expeditionNumber, string? status, DateTime? issueDateFrom, DateTime? issueDateTo, int? locationId, int page, int pageSize);
|
2026-03-14 21:23:06 -03:00
|
|
|
|
Task MarkInTransitAsync(int expeditionId);
|
|
|
|
|
|
|
2025-09-04 18:15:15 -03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|