using Exferia_Aplicacion.General;
using Exferia_Aplicacion.Modelos_Existencias;
using Exferia_Aplicacion.Modelos_Generales;
using Exferia_Inventarios._1_Datos;
using Exferia_VariacionesExistencias._1_Datos;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Exferia_Inventarios
{
    public class Datos_Inventarios
    {
        #region INV_InventarioCabecera
        private DateTime? INV_InventarioCabecera_Obtener_Fecha_PrimerInventario(long _lng_idArticulo, DateTime _dtt_Fecha, long _lng_idDelegacion, long _lng_idAlmacen, long? _lng_idUbicacion)
        {
            DateTime? dtt_Fecha_Inventario = null;
            try
            {
                INV_InventarioCabecera_Datos obj_INV_InventarioCabecera_Datos = new INV_InventarioCabecera_Datos();

                dtt_Fecha_Inventario = obj_INV_InventarioCabecera_Datos.Obtener_Fecha_PrimerInventario(_lng_idArticulo, _dtt_Fecha, _lng_idDelegacion, _lng_idAlmacen, _lng_idUbicacion);
            }
            catch (Control_Errores)
            {
                dtt_Fecha_Inventario = null;
            }
            catch (Exception)
            {
                dtt_Fecha_Inventario = null;
            }

            return dtt_Fecha_Inventario;
        }
        #endregion

        #region INV_InventarioLineas
        private List<INTERNO_ArticuloDiarioActualizar_Documentos_Modelo> INV_InventarioLineas_Obtener_Para_RecalcularMovimientos(long? _lng_idArticulo, DateTime _dtt_Desde, DateTime _dtt_Hasta)
        {
            List<INTERNO_ArticuloDiarioActualizar_Documentos_Modelo> lst_INTERNO_ArticuloDiarioActualizar_Documentos_Modelo = null;
            try
            {
                INV_InventarioLineas_Datos obj_INV_InventarioLineas_Datos = new INV_InventarioLineas_Datos();

                lst_INTERNO_ArticuloDiarioActualizar_Documentos_Modelo = obj_INV_InventarioLineas_Datos.Obtener_Para_RecalcularMovimientos(_lng_idArticulo, _dtt_Desde, _dtt_Hasta);
            }
            catch (Control_Errores)
            {
                lst_INTERNO_ArticuloDiarioActualizar_Documentos_Modelo = null;
            }
            catch (Exception)
            {
                lst_INTERNO_ArticuloDiarioActualizar_Documentos_Modelo = null;
            }

            return lst_INTERNO_ArticuloDiarioActualizar_Documentos_Modelo;
        }
        private List<INTERNO_INF_MovimientosArticulos_Listado_Modelo> INV_InventarioLineas_Obtener_Listado_Movimientos(long _lng_idArticulo,
                                                                                                    DateTime _dtt_FechaDesde,
                                                                                                    DateTime _dtt_FechaHasta,
                                                                                                    long? _lng_idDelegacion,
                                                                                                    long? _lng_idAlmacen,
                                                                                                    long? _lng_idUbicacion)
        {
            List<INTERNO_INF_MovimientosArticulos_Listado_Modelo> lst_INTERNO_INF_MovimientosArticulos_Listado_Modelo = null;
            try
            {
                INV_InventarioLineas_Datos obj_INV_InventarioLineas_Datos = new INV_InventarioLineas_Datos();

                lst_INTERNO_INF_MovimientosArticulos_Listado_Modelo = obj_INV_InventarioLineas_Datos.Obtener_Listado_Movimientos(_lng_idArticulo,
                                                                                                     _dtt_FechaDesde,
                                                                                                     _dtt_FechaHasta,
                                                                                                     _lng_idDelegacion,
                                                                                                     _lng_idAlmacen,
                                                                                                     _lng_idUbicacion);
            }
            catch (Control_Errores)
            {
                lst_INTERNO_INF_MovimientosArticulos_Listado_Modelo = null;
            }
            catch (Exception)
            {
                lst_INTERNO_INF_MovimientosArticulos_Listado_Modelo = null;
            }

            return lst_INTERNO_INF_MovimientosArticulos_Listado_Modelo;
        }

        #endregion

        #region INV_VariacionExistenciaLineas
        private List<INTERNO_ArticuloDiarioActualizar_Documentos_Modelo> INV_VariacionExistenciaLineas_Obtener_Para_RecalcularMovimientos(long? _lng_idArticulo, DateTime _dtt_Desde, DateTime _dtt_Hasta)
        {
            List<INTERNO_ArticuloDiarioActualizar_Documentos_Modelo> lst_INTERNO_ArticuloDiarioActualizar_Documentos_Modelo = null;
            try
            {
                INV_VariacionExistenciaLineas_Datos obj_INV_VariacionExistenciaLineas_Datos = new INV_VariacionExistenciaLineas_Datos();

                lst_INTERNO_ArticuloDiarioActualizar_Documentos_Modelo = obj_INV_VariacionExistenciaLineas_Datos.Obtener_Para_RecalcularMovimientos(_lng_idArticulo, _dtt_Desde, _dtt_Hasta);
            }
            catch (Control_Errores)
            {
                lst_INTERNO_ArticuloDiarioActualizar_Documentos_Modelo = null;
            }
            catch (Exception)
            {
                lst_INTERNO_ArticuloDiarioActualizar_Documentos_Modelo = null;
            }

            return lst_INTERNO_ArticuloDiarioActualizar_Documentos_Modelo;
        }

        private List<INTERNO_INF_MovimientosArticulos_Listado_Modelo> INV_VariacionExistenciaLineas_Obtener_Listado_Movimientos(long _lng_idArticulo,
                                                                                                    DateTime _dtt_FechaDesde,
                                                                                                    DateTime _dtt_FechaHasta,
                                                                                                    long? _lng_idDelegacion,
                                                                                                    long? _lng_idAlmacen,
                                                                                                    long? _lng_idUbicacion)
        {
            List<INTERNO_INF_MovimientosArticulos_Listado_Modelo> lst_INTERNO_INF_MovimientosArticulos_Listado_Modelo = null;
            try
            {
                INV_VariacionExistenciaLineas_Datos obj_INV_VariacionExistenciaLineas_Datos = new INV_VariacionExistenciaLineas_Datos();

                lst_INTERNO_INF_MovimientosArticulos_Listado_Modelo = obj_INV_VariacionExistenciaLineas_Datos.Obtener_Listado_Movimientos(_lng_idArticulo,
                                                                                                     _dtt_FechaDesde,
                                                                                                     _dtt_FechaHasta,
                                                                                                     _lng_idDelegacion,
                                                                                                     _lng_idAlmacen,
                                                                                                     _lng_idUbicacion);
            }
            catch (Control_Errores)
            {
                lst_INTERNO_INF_MovimientosArticulos_Listado_Modelo = null;
            }
            catch (Exception)
            {
                lst_INTERNO_INF_MovimientosArticulos_Listado_Modelo = null;
            }

            return lst_INTERNO_INF_MovimientosArticulos_Listado_Modelo;
        }
        #endregion
    }
}
