phronCare/Models/Interfaces/IExpeditionRepository.cs
leandro 915f78bb40
All checks were successful
CI/CD Pipeline / Build and Deploy with Docker Compose (pull_request) Successful in 4m23s
feat(stock): reserve stock when expedition moves to EnTransito
Closes #9
2026-03-15 19:17:26 -03:00

35 lines
1.6 KiB
C#

using Domain.Dtos.Stock;
using Domain.Entities;
using Domain.Generics;
namespace Models.Interfaces
{
// 1.1 Data (Repo)
public interface IExpeditionRepository
{
/// <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);
/// <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);
Task<PagedResult<ExpeditionDto>> SearchAsync(string? expeditionNumber, string? status, DateTime? issueDateFrom, DateTime? issueDateTo, int? locationId, int page, int pageSize);
/// <summary>
/// Pasa la expedición a En tránsito y crea las reservas de stock asociadas.
/// La operación es transaccional y falla completa si detecta inconsistencias.
/// </summary>
Task MarkInTransitAsync(int expeditionId);
}
}