-
-
Notifications
You must be signed in to change notification settings - Fork 41
Existencias Productos
Andres Ramos edited this page Sep 6, 2023
·
3 revisions
El proyecto incluye repositorios que implementan la interfaz IExistenciasRepository
que proporciona metodos que puedes utilizar para consultar las existencias de los productos.
Los repositorios disponibles para SDK son:
-
ExistenciasSdkRepository
- ImplementaIExistenciasRepository
.
Los repositorios disponibles para SQL son:
-
ExistenciasSqlRepository
- ImplementaIExistenciasSqlRepository
.IExistenciasSqlRepository
hereda deIExistenciasRepository
y define las versiones asincronas de los metodos para beneficiarse del uso de Entity Framework Core.
/// <summary>
/// Interfaz de repositorio que define métodos para consultar existencias de productos.
/// </summary>
public interface IExistenciasRepository
{
/// <summary>
/// Busca las existencias de un producto en un almacén en una fecha determinada.
/// </summary>
/// <param name="codigoProducto">Código del producto.</param>
/// <param name="codigoAlmacen">Código del almacén.</param>
/// <param name="fecha">Fecha</param>
/// <returns>
/// Las existencias del producto en el almacén en la fecha proporcionada.
/// </returns>
double BuscaExistencias(string codigoProducto, string codigoAlmacen, DateOnly fecha);
/// <summary>
/// Busca las existencias de un producto con características en un almacén en una fecha determinada.
/// </summary>
/// <param name="codigoProducto">Código del producto.</param>
/// <param name="codigoAlmacen">Código del almacén.</param>
/// <param name="fecha">Fecha</param>
/// <param name="abreviaturaValorCaracteristica1">Abreviatura del Valor de la Característica 1 del producto.</param>
/// <param name="abreviaturaValorCaracteristica2">Abreviatura del Valor de la Característica 2 del producto.</param>
/// <param name="abreviaturaValorCaracteristica3">Abreviatura del Valor de la Característica 3 del producto.</param>
/// <returns>
/// Las existencias del producto con características en el almacén en la fecha proporcionada.
/// </returns>
double BuscaExistenciasConCaracteristicas(string codigoProducto, string codigoAlmacen, DateOnly fecha,
string abreviaturaValorCaracteristica1, string abreviaturaValorCaracteristica2, string abreviaturaValorCaracteristica3);
/// <summary>
/// Busca las existencias de un producto por lote y/o pedimento.
/// </summary>
/// <param name="codigoProducto">Código del producto.</param>
/// <param name="codigoAlmacen">Código del almacén.</param>
/// <param name="pedimento">Numero de pedimento.</param>
/// <param name="lote">Numero de lote.</param>
/// <returns>
/// Las existencias del producto por lote y/o pedimento.
/// </returns>
double BuscaExistenciasConCapas(string codigoProducto, string codigoAlmacen, string pedimento, string lote);
}
/// <inheritdoc cref="IExistenciasRepository" />
public interface IExistenciasSqlRepository : IExistenciasRepository
{
/// <summary>
/// Busca las existencias de un producto en un almacén en una fecha determinada.
/// </summary>
/// <param name="codigoProducto">Código del producto.</param>
/// <param name="codigoAlmacen">Código del almacén.</param>
/// <param name="fecha">Fecha</param>
/// <param name="cancellationToken">
/// Token de cancelación.
/// </param>
/// <returns>
/// Las existencias del producto en el almacén en la fecha proporcionada.
/// </returns>
Task<double> BuscaExistenciasAsync(string codigoProducto, string codigoAlmacen, DateOnly fecha, CancellationToken cancellationToken);
/// <summary>
/// Busca las existencias de un producto con características en un almacén en una fecha determinada.
/// </summary>
/// <param name="codigoProducto">Código del producto.</param>
/// <param name="codigoAlmacen">Código del almacén.</param>
/// <param name="fecha">Fecha</param>
/// <param name="abreviaturaValorCaracteristica1">Abreviatura del Valor de la Característica 1 del producto.</param>
/// <param name="abreviaturaValorCaracteristica2">Abreviatura del Valor de la Característica 2 del producto.</param>
/// <param name="abreviaturaValorCaracteristica3">Abreviatura del Valor de la Característica 3 del producto.</param>
/// <param name="cancellationToken">
/// Token de cancelación.
/// </param>
/// <returns>
/// Las existencias del producto con características en el almacén en la fecha proporcionada.
/// </returns>
Task<double> BuscaExistenciasConCaracteristicasAsync(string codigoProducto, string codigoAlmacen, DateOnly fecha,
string abreviaturaValorCaracteristica1, string abreviaturaValorCaracteristica2, string abreviaturaValorCaracteristica3,
CancellationToken cancellationToken);
/// <summary>
/// Busca las existencias de un producto por lote y/o pedimento.
/// </summary>
/// <param name="codigoProducto">Código del producto.</param>
/// <param name="codigoAlmacen">Código del almacén.</param>
/// <param name="pedimento">Numero de pedimento.</param>
/// <param name="lote">Numero de lote.</param>
/// <param name="cancellationToken">
/// Token de cancelación.
/// </param>
/// <returns>
/// Las existencias del producto por lote y/o pedimento.
/// </returns>
Task<double> BuscaExistenciasConCapasAsync(string codigoProducto, string codigoAlmacen, string pedimento, string lote,
CancellationToken cancellationToken);
}
public class BuscarExistenciasConRepositorio
{
private readonly IExistenciasRepository _existenciasRepository;
// private readonly IExistenciasSqlRepository _existenciasRepository;
private readonly ILogger<BuscarExistenciasConRepositorio> _logger;
public BuscarExistenciasConRepositorio(IExistenciasRepository existenciasRepository, ILogger<BuscarExistenciasConRepositorio> logger)
{
_existenciasRepository = existenciasRepository;
_logger = logger;
}
}
public void BuscaExistencias()
{
var codigoProducto = "PRUEBACARA";
var codigoAlmacen = "PRUEBA";
DateOnly fecha = DateOnly.FromDateTime(DateTime.Today);
double existencias = _existenciasRepository.BuscaExistencias(codigoProducto, codigoAlmacen, fecha);
_logger.LogInformation("Existencias: {Existencias}", existencias);
}
public void BuscaExistenciasConCaracteristicas()
{
var codigoProducto = "PRUEBACARA";
var codigoAlmacen = "PRUEBA";
DateOnly fecha = DateOnly.FromDateTime(DateTime.Today);
var abreviaturaValorCaracteristica1 = "UV1";
var abreviaturaValorCaracteristica2 = "DV1";
var abreviaturaValorCaracteristica3 = "";
double existencias = _existenciasRepository.BuscaExistenciasConCaracteristicas(codigoProducto, codigoAlmacen, fecha,
abreviaturaValorCaracteristica1, abreviaturaValorCaracteristica2, abreviaturaValorCaracteristica3);
_logger.LogInformation("Existencias: {Existencias}", existencias);
}
public void BuscaExistenciasConCapas()
{
var codigoProducto = "PUEBAPEDIM";
var codigoAlmacen = "PRUEBA";
var pedimento = "11 11 1111 1111111";
var lote = "";
double existencias = _existenciasRepository.BuscaExistenciasConCapas(codigoProducto, codigoAlmacen, pedimento, lote);
_logger.LogInformation("Existencias: {Existencias}", existencias);
}