/// <summary>
 /// Obtiene los movimientos de los subproductos de premezcla
 /// </summary>
 /// <param name="productosPremezcla"></param>
 /// <returns></returns>
 internal IEnumerable <AlmacenMovimientoSubProductosModel> ObtenerMovimientosSubProductos(IEnumerable <AlmacenMovimientoSubProductosModel> productosPremezcla)
 {
     try
     {
         Logger.Info();
         IMapBuilderContext <AlmacenMovimientoSubProductosModel> mapeo =
             MapAlmacenMovimientoDAL.ObtenerMapeoAlmacenMovimientoSubProductos();
         string parameters = AuxAlmacenMovimientoDAL.ObtenerParametrosMovimientosSubProductos(productosPremezcla);
         IEnumerable <AlmacenMovimientoSubProductosModel> movimientosSubProductos = GetDatabase().ExecuteSprocAccessor
                                                                                    <AlmacenMovimientoSubProductosModel>(
             "AlmacenMoviento_ObtenerSubProductos", mapeo.Build(),
             new object[] { parameters });
         return(movimientosSubProductos);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        /// <summary>
        /// Obtiene los movimientos de inventario para generar
        /// poliza de consumo de producto
        /// </summary>
        /// <param name="almacenID"></param>
        /// <param name="organizacionID"></param>
        /// <param name="fecha"> </param>
        /// <returns></returns>
        internal List <ContenedorAlmacenMovimientoCierreDia> ObtenerMovimientosInventario(int almacenID, int organizacionID, DateTime fecha)
        {
            List <ContenedorAlmacenMovimientoCierreDia> almacenesMovimiento = null;

            try
            {
                Logger.Info();
                Dictionary <string, object> parameters =
                    AuxAlmacenMovimientoDAL.ObtenerParametrosMovimientosInventario(almacenID, organizacionID, fecha);
                DataSet ds = Retrieve("AlmacenMovimiento_ObtenerMovimientosCierreDia", parameters);
                if (ValidateDataSet(ds))
                {
                    almacenesMovimiento = MapAlmacenMovimientoDAL.ObtenerMovimientosInventario(ds);
                }
                return(almacenesMovimiento);
            }
            catch (SqlException ex)
            {
                Logger.Error(ex);
                throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
            }
            catch (DataException ex)
            {
                Logger.Error(ex);
                throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
        }
        /// <summary>
        /// Obtiene el Almacen Movimiento por su Detalle
        /// </summary>
        /// <param name="almancenMovimientosDetalle"></param>
        /// <returns></returns>
        internal AlmacenMovimientoInfo ObtenerMovimientoPorClaveDetalle(List <AlmacenMovimientoDetalle> almancenMovimientosDetalle)
        {
            AlmacenMovimientoInfo almacenMovimiento = null;

            try
            {
                Dictionary <string, object> parameters =
                    AuxAlmacenMovimientoDAL.ObtenerParametrosPorClaveDetalle(almancenMovimientosDetalle);
                DataSet ds = Retrieve("AlmacenMovimiento_ObtenerMovimientoXML", parameters);
                if (ValidateDataSet(ds))
                {
                    almacenMovimiento = MapAlmacenMovimientoDAL.ObtenerMovimientoPorClaveDetalle(ds);
                }
            }
            catch (SqlException ex)
            {
                Logger.Error(ex);
                throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
            }
            catch (DataException ex)
            {
                Logger.Error(ex);
                throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(almacenMovimiento);
        }
 /// <summary>
 /// Obtiene los movimientos pendientes pro autorizar del cierre de dia de inventario de planta de alimentos
 /// </summary>
 /// <returns></returns>
 internal List <MovimientosAutorizarCierreDiaPAModel> ObtenerMovimientosPendientesAutorizar(FiltrosAutorizarCierreDiaInventarioPA filtrosAutorizarCierreDia)
 {
     try
     {
         List <MovimientosAutorizarCierreDiaPAModel> result = null;
         Logger.Info();
         Dictionary <string, object> parameters = AuxAlmacenMovimientoDAL.ObtenerParametrosObtenerMovimientosPendientesAutorizar(filtrosAutorizarCierreDia);
         DataSet ds = Retrieve("CierreDiaInventarioPA_ObtenerMovimientosAutorizar", parameters);
         if (ValidateDataSet(ds))
         {
             result = MapAlmacenMovimientoDAL.ObtenerPorMovimientosPendientesAutorizar(ds);
         }
         return(result);
     }
     catch (SqlException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (DataException ex)
     {
         Logger.Error(ex);
         throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        /// <summary>
        /// Obtiene un registro por id
        /// </summary>
        /// <param name="almacenMovimientoId"></param>
        /// <returns></returns>
        internal AlmacenMovimientoInfo ObtenerPorId(long almacenMovimientoId)
        {
            AlmacenMovimientoInfo almacenMovimientoInfo = null;

            try
            {
                Dictionary <string, object> parametros = AuxAlmacenMovimientoDAL.ObtenerParametrosObtenerPorId(almacenMovimientoId);
                DataSet ds = Retrieve("AlmacenMovimiento_ObtenerPorId", parametros);
                if (ValidateDataSet(ds))
                {
                    almacenMovimientoInfo = MapAlmacenMovimientoDAL.ObtenerPorId(ds);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(almacenMovimientoInfo);
        }
        /// <summary>
        /// Obtiene todos los movimientos de un Contrato
        /// </summary>
        /// <param name="contrato"></param>
        /// <returns></returns>
        internal List <AlmacenMovimientoInfo> ObtenerMovimientosPorContrato(ContratoInfo contrato)
        {
            List <AlmacenMovimientoInfo> movimientos = null;

            try
            {
                Dictionary <string, object> parametros = AuxAlmacenMovimientoDAL.ObtenerParametrosObtenerMovimientosPorContrato(contrato);
                DataSet ds = Retrieve("AlmacenMovimiento_ObtenerMovimientosPorContrato", parametros);
                if (ValidateDataSet(ds))
                {
                    movimientos = MapAlmacenMovimientoDAL.ObtenerMovimientosPorContrato(ds);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            return(movimientos);
        }