Skip to content

Existencias Productos

Andres Ramos edited this page Sep 6, 2023 · 3 revisions

Consultas

Repositorios

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 - Implementa IExistenciasRepository.

Los repositorios disponibles para SQL son:

  • ExistenciasSqlRepository - Implementa IExistenciasSqlRepository. IExistenciasSqlRepository hereda de IExistenciasRepository y define las versiones asincronas de los metodos para beneficiarse del uso de Entity Framework Core.

IExistenciasRepository

/// <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);
}

IExistenciasSqlRepository

/// <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);
}

Dependency Injection

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;
    }
}

Busca Existencias

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);
}

Busca Existencias Con Caracteristicas

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);
}

Busca Existencias Con Capas

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);
}