Existencias Productos - AndresRamos/ARSoftware.Contpaqi.Comercial GitHub Wiki
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);
}