예제 #1
0
 /// <summary>
 /// Obtiene una lista de produccion de formula
 /// </summary>
 /// <param name="reader"></param>
 /// <returns></returns>
 internal static List <ProduccionFormulaInfo> ObtenerResumenDeProduccion(IDataReader reader)
 {
     try
     {
         Logger.Info();
         var ResumenProduccionLista = new List <ProduccionFormulaInfo>();
         var formula = new ProduccionFormulaInfo();
         while (reader.Read())
         {
             formula = new ProduccionFormulaInfo
             {
                 Formula = new FormulaInfo
                 {
                     FormulaId   = Convert.ToInt32(reader["FormulaID"]),
                     Descripcion = Convert.ToString(reader["Descripcion"])
                 },
                 CantidadProducida = Convert.ToDecimal(reader["Cantidad"]),
                 CantidadReparto   = Convert.ToDecimal(reader["CantidadServida"])
             };
             ResumenProduccionLista.Add(formula);
         }
         return(ResumenProduccionLista);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #2
0
 /// <summary>
 /// Guarda los datos capturados en el formulario "ProduccionFormula" en la tabla "ProduccionFormulaBatch"
 /// </summary>
 internal static Dictionary <string, object> GuardarProduccionFormulaBatch(ProduccionFormulaInfo produccionFormula)
 {
     try
     {
         var xml =
             new XElement("ROOT",
                          from info in produccionFormula.ProduccionFormulaDetalle
                          select
                          new XElement("ListaProduccionFormula",
                                       new XElement("ProduccionFormulaID", info.ProduccionFormulaId),
                                       new XElement("CantidadProducto", Convert.ToInt32(Math.Round(info.CantidadProducto))),
                                       new XElement("ProductoId", info.Producto.ProductoId)
                                       ));
         var parametros =
             new Dictionary <string, object>
         {
             { "@XmlListaProduccionFormula", xml.ToString() },
             { "@OrganizacionID", produccionFormula.Organizacion.OrganizacionID },
             { "@FormulaID", produccionFormula.Formula.FormulaId },
             { "@RotomixID", produccionFormula.RotoMixID },
             { "@Batch", produccionFormula.Batch },
             { "@CantidadProgramada", Convert.ToDecimal(Numeros.ValorCero) },
             { "@Activo", Convert.ToBoolean(EstatusEnum.Activo) },
             { "@UsuarioCreacionID", produccionFormula.UsuarioCreacionId },
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #3
0
        public static ProduccionFormulaInfo ConsultarFormulaId(int formulaId)
        {
            ProduccionFormulaInfo resultado = null;

            try
            {
                int organizacionid = 0;
                var seguridad      = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
                organizacionid = seguridad.Usuario.Organizacion.OrganizacionID;
                var produccionFormulaResumenPL = new ProduccionFormulaResumenPL();
                ProduccionFormulaResumenInfo produccionFormulaResumenInfo = new ProduccionFormulaResumenInfo();
                produccionFormulaResumenInfo.OrganizacionID = organizacionid;
                produccionFormulaResumenInfo.FormulaID      = formulaId;
                produccionFormulaResumenInfo.TipoAlmacenID  = Convert.ToInt16(TipoAlmacenEnum.PlantaDeAlimentos);
                resultado = produccionFormulaResumenPL.ConsultarFormulaId(produccionFormulaResumenInfo);
            }
            catch (ExcepcionDesconocida)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(resultado);
        }
 /// <summary>
 /// Obtiene de la formula ingresada y para la organizacion del usuario, cuanto hay en inventario y cuanto esta programada para repartir
 /// </summary>
 internal ProduccionFormulaInfo ConsultarFormulaId(ProduccionFormulaResumenInfo produccionFormulaResumenInfo)
 {
     try
     {
         Dictionary <string, object> parameters = AuxProduccionFormulaResumenDAL.ConsultarFormulaId(produccionFormulaResumenInfo);
         DataSet ds = Retrieve("ProduccionFormula_Resumen", parameters);
         ProduccionFormulaInfo result = null;
         if (ValidateDataSet(ds))
         {
             result = MapProduccionFormulaResumen.ConsultarFormulaId(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);
     }
 }
예제 #5
0
 /// <summary>
 ///  Método que obtiene un registro
 /// </summary>
 /// <param name="ds"></param>
 /// <returns></returns>
 public static ProduccionFormulaInfo ObtenerPorFolioMovimiento(DataSet ds)
 {
     try
     {
         Logger.Info();
         DataTable             dt      = ds.Tables[ConstantesDAL.DtDatos];
         ProduccionFormulaInfo entidad =
             (from info in dt.AsEnumerable()
              select
              new ProduccionFormulaInfo
         {
             ProduccionFormulaId = info.Field <int>("ProduccionFormulaID"),
             Organizacion = new OrganizacionInfo {
                 OrganizacionID = info.Field <int>("OrganizacionID"), Descripcion = info.Field <string>("Organizacion")
             },
             FolioFormula = info.Field <int>("FolioFormula"),
             Formula = new FormulaInfo {
                 FormulaId = info.Field <int>("FormulaID"), Descripcion = info.Field <string>("Formula")
             },
             CantidadProducida = info.Field <decimal>("CantidadProducida"),
             FechaProduccion = info.Field <DateTime>("FechaProduccion"),
             AlmacenMovimientoEntradaID = info.Field <long?>("AlmacenMovimientoEntradaID") != null ? info.Field <long>("AlmacenMovimientoEntradaID") : 0,
             AlmacenMovimientoSalidaID = info.Field <long?>("AlmacenMovimientoSalidaID") != null ? info.Field <long>("AlmacenMovimientoSalidaID") : 0,
             DescripcionFormula = info.Field <string>("Formula"),
             Activo = info.Field <bool>("Activo").BoolAEnum(),
             FolioMovimiento = info.Field <long>("FolioMovimiento"),
         }).First();
         return(entidad);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #6
0
 /// <summary>
 /// Guarda la produccion de una formula y retorna el objeto
 /// </summary>
 /// <param name="produccionFormula"></param>
 /// <returns></returns>
 internal ProduccionFormulaInfo GuardarProduccionFormula(ProduccionFormulaInfo produccionFormula)
 {
     try
     {
         Logger.Info();
         var parameters = AuxProduccionFormulaDAL.GuardarProduccionFormula(produccionFormula);
         var ds         = Retrieve("ProduccionFormula_Crear", parameters);
         ProduccionFormulaInfo result = null;
         if (ValidateDataSet(ds))
         {
             result = MapProduccionFormulaDAL.GuardarProduccionFormula(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);
     }
 }
예제 #7
0
        /// <summary>
        /// Obtiene los parametros para guardar una formula
        /// </summary>
        /// <param name="produccionFormula"></param>
        /// <returns></returns>
        internal static Dictionary <string, object> GuardarProduccionFormula(ProduccionFormulaInfo produccionFormula)
        {
            Dictionary <string, object> parametros;

            try
            {
                Logger.Info();
                parametros = new Dictionary <string, object>
                {
                    { "@OrganizacionID", produccionFormula.Organizacion.OrganizacionID },
                    { "@FormulaID", produccionFormula.Formula.FormulaId },
                    { "@CantidadProducida", produccionFormula.CantidadProducida },
                    { "@TipoFolio", TipoFolio.ProduccionFormula },
                    { "@AlmacenMovimientoEntradaID", produccionFormula.AlmacenMovimientoEntradaID },
                    { "@AlmacenMovimientoSalidaID", produccionFormula.AlmacenMovimientoSalidaID },
                    { "@UsuarioCreacionID", produccionFormula.UsuarioCreacionId },
                    { "@FechaProduccion", produccionFormula.FechaProduccion }
                };
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(parametros);
        }
예제 #8
0
        /// <summary>
        /// Obtiene un flujo de datos
        /// para la generacion de la reimpresion
        /// de la poliza de Salida de Traspaso
        /// </summary>
        /// <param name="produccionFormula"></param>
        /// <param name="polizaClave"></param>
        /// <returns></returns>
        private MemoryStream ReimpresionPolizaProduccionAlimento(ProduccionFormulaInfo produccionFormula, TipoPolizaInfo polizaClave)
        {
            var polizaBL = new PolizaBL();
            IList <PolizaInfo> polizasProduccionAlimento = polizaBL.ObtenerPoliza(TipoPoliza.ProduccionAlimento,
                                                                                  produccionFormula.Organizacion.OrganizacionID,
                                                                                  produccionFormula.FechaProduccion,
                                                                                  produccionFormula.FolioFormula.ToString(CultureInfo.InvariantCulture),
                                                                                  polizaClave.ClavePoliza, 1);
            MemoryStream stream = null;

            if (polizasProduccionAlimento != null)
            {
                var poliza = FabricaPoliza.ObtenerInstancia().ObtenerTipoPoliza(TipoPoliza.ProduccionAlimento);
                var produccionFormulaBL = new ProduccionFormulaBL();
                using (var almacenDAL = new AlmacenDAL())
                {
                    var almacenMovimientoBL          = new AlmacenMovimientoBL();
                    ProduccionFormulaInfo produccion = produccionFormulaBL.ObtenerPorIDCompleto(produccionFormula.ProduccionFormulaId);


                    if (produccion != null)
                    {
                        AlmacenInfo almacenPlantaAlimento =
                            almacenDAL.ObtenerAlmacenOrganizacionTipo(produccionFormula.Organizacion.OrganizacionID, TipoAlmacenEnum.PlantaDeAlimentos);

                        AlmacenMovimientoInfo almacenMovimiento =
                            almacenMovimientoBL.ObtenerPorIDCompleto(produccion.AlmacenMovimientoSalidaID);

                        var produccionFormulaDetalles = new List <ProduccionFormulaDetalleInfo>();
                        if (almacenMovimiento != null)
                        {
                            foreach (var detalle in produccion.ProduccionFormulaDetalle)
                            {
                                var movimiento = almacenMovimiento.ListaAlmacenMovimientoDetalle.FirstOrDefault(
                                    alm => alm.Producto.ProductoId == detalle.Producto.ProductoId &&
                                    alm.AlmacenInventarioLoteId == detalle.AlmacenInventarioLoteID);

                                if (movimiento == null)
                                {
                                    continue;
                                }
                                detalle.CantidadProducto = movimiento.Cantidad;
                                detalle.PrecioPromedio   = movimiento.Precio;
                                produccionFormulaDetalles.Add(detalle);
                            }
                        }

                        if (almacenPlantaAlimento == null)
                        {
                            return(null);
                        }
                        produccion.ProduccionFormulaDetalle = produccionFormulaDetalles;
                        produccion.Almacen        = almacenPlantaAlimento;
                        polizasProduccionAlimento = poliza.GeneraPoliza(produccion);
                        stream = poliza.ImprimePoliza(produccion, polizasProduccionAlimento);
                    }
                }
            }
            return(stream);
        }
예제 #9
0
 /// <summary>
 /// Obtiene un registro de ProduccionFormula
 /// </summary>
 /// <param name="produccionFormulaID">Identificador de la ProduccionFormula</param>
 /// <returns></returns>
 public ProduccionFormulaInfo ObtenerPorID(int produccionFormulaID)
 {
     try
     {
         Logger.Info();
         Dictionary <string, object> parameters = AuxProduccionFormulaDAL.ObtenerParametrosPorID(produccionFormulaID);
         DataSet ds = Retrieve("ProduccionFormula_ObtenerPorID", parameters);
         ProduccionFormulaInfo result = null;
         if (ValidateDataSet(ds))
         {
             result = MapProduccionFormulaDAL.ObtenerPorID(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);
     }
 }
예제 #10
0
 /// <summary>
 /// Guarda los datos capturados en el formulario "ProduccionFormula" en la tabla "ProduccionFormulaBatch"
 /// </summary>
 public void GuardarProduccionFormulaBatch(ProduccionFormulaInfo produccionFormula)
 {
     try
     {
         Logger.Info();
         var produccionFormulaBatchDAL = new ProduccionFormulaBatchDAL();
         produccionFormulaBatchDAL.GuardarProduccionFormulaBatch(produccionFormula);
     }
     catch (ExcepcionDesconocida ex)
     {
         Logger.Error(ex);
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
     }
 }
예제 #11
0
        public static ProduccionFormulaInfo GuardarProduccionFormula(string fecha, int FormulaId, decimal CantidadProducida, List <ProduccionFormulaDetalleInfo> ProduccionFormulaDetalle, int RotoMixID, int Batch)
        {
            ProduccionFormulaInfo retorno = null;

            try
            {
                var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

                if (seguridad != null)
                {
                    ProduccionFormulaInfo produccionFormula = new ProduccionFormulaInfo()
                    {
                        FechaProduccion = Convert.ToDateTime(fecha),
                        Organizacion    = new OrganizacionInfo()
                        {
                            OrganizacionID = seguridad.Usuario.Organizacion.OrganizacionID
                        },
                        UsuarioCreacionId = seguridad.Usuario.UsuarioID,
                        Formula           = new FormulaInfo()
                        {
                            FormulaId = FormulaId
                        },
                        ProduccionFormulaDetalle = ProduccionFormulaDetalle,
                        RotoMixID         = RotoMixID,
                        Batch             = Batch,
                        CantidadProducida = CantidadProducida
                    };
                    var produccionFormulaPl = new ProduccionFormulaPL();
                    retorno = produccionFormulaPl.GuardarProduccionFormula(produccionFormula);
                }
            }
            catch (ExcepcionDesconocida ex)
            {
                Logger.Error(ex);
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(retorno);
        }
 /// <summary>
 /// Obtiene de la formula ingresada y para la organizacion del usuario, cuanto hay en inventario y cuanto esta programada para repartir
 /// </summary>
 internal ProduccionFormulaInfo ConsultarFormulaId(ProduccionFormulaResumenInfo produccionFormulaResumenInfo)
 {
     try
     {
         Logger.Info();
         var produccionFormulaResumenDAL = new ProduccionFormulaResumenDAL();
         ProduccionFormulaInfo result    = produccionFormulaResumenDAL.ConsultarFormulaId(produccionFormulaResumenInfo);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #13
0
 /// <summary>
 ///  Obtiene Parametros por Id
 /// </summary>
 /// <param name="produccionFormula">Identificador de la entidad ProduccionFormula</param>
 /// <returns></returns>
 public static Dictionary <string, object> ObtenerParametrosPorFolioFormula(ProduccionFormulaInfo produccionFormula)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@FolioMovimiento", produccionFormula.FolioMovimiento },
             { "@OrganizacionID", produccionFormula.Organizacion.OrganizacionID }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #14
0
 /// <summary>
 /// Obtiene una entidad por su Id
 /// </summary>
 /// <param name="produccionFormula"></param>
 /// <returns></returns>
 public ProduccionFormulaInfo ObtenerPorFolioMovimiento(ProduccionFormulaInfo produccionFormula)
 {
     try
     {
         Logger.Info();
         var produccionFormulaBL      = new ProduccionFormulaBL();
         ProduccionFormulaInfo result = produccionFormulaBL.ObtenerPorFolioMovimiento(produccionFormula);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #15
0
        /// <summary>
        /// Genera las Lineas del Detalle
        /// </summary>
        /// <param name="produccionFormula"></param>
        private void GeneraLineasDetalle(ProduccionFormulaInfo produccionFormula)
        {
            PolizaModel.Detalle = new List <PolizaDetalleModel>();
            PolizaDetalleModel detalleModel;

            foreach (var detalle in produccionFormula.ProduccionFormulaDetalle)
            {
                detalleModel = new PolizaDetalleModel
                {
                    CantidadCabezas = detalle.Producto.ProductoId.ToString(CultureInfo.InvariantCulture),
                    PesoPromedio    = string.Empty,
                    TipoGanado      = detalle.Producto.ProductoDescripcion,
                    PesoTotal       = string.Format("{0} {1}.", detalle.CantidadProducto.ToString("N2"), detalle.Producto.UnidadMedicion.ClaveUnidad),
                    ImportePromedio = detalle.PrecioPromedio.ToString("N2"),
                    PrecioVenta     = Math.Round(detalle.CantidadProducto * detalle.PrecioPromedio, 2).ToString("N2"),
                };
                PolizaModel.Detalle.Add(detalleModel);
            }
            polizaImpresion.GenerarDetalles("Detalle");
        }
예제 #16
0
        /// <summary>
        /// Genera los totales por Detalle
        /// </summary>
        /// <param name="produccionFormula"></param>
        private void GeneraLineaTotales(ProduccionFormulaInfo produccionFormula)
        {
            var sumaImporte = Math.Round(produccionFormula.ProduccionFormulaDetalle.Sum(importe => importe.CantidadProducto * importe.PrecioPromedio), 2);

            PolizaModel.Detalle = new List <PolizaDetalleModel>();

            var detalleModel = new PolizaDetalleModel
            {
                CantidadCabezas = string.Empty,
                PesoPromedio    = string.Empty,
                TipoGanado      = string.Empty,
                Lote            = string.Empty,
                PesoTotal       = string.Empty,
                ImportePromedio = string.Empty,
                PrecioVenta     = sumaImporte.ToString("N2", CultureInfo.CurrentCulture),
                ImporteVenta    = string.Empty,
                Corral          = string.Empty
            };

            PolizaModel.Detalle.Add(detalleModel);
        }
예제 #17
0
        /// <summary>
        /// Guarda la produccion de una formula, ademas graba el detalle
        /// </summary>
        /// <param name="produccionFormula"></param>
        /// <returns></returns>
        public ProduccionFormulaInfo GuardarProduccionFormula(ProduccionFormulaInfo produccionFormula)
        {
            ProduccionFormulaInfo retorno = null;

            try
            {
                Logger.Info();
                var produccionFormulaBl = new ProduccionFormulaBL();
                retorno = produccionFormulaBl.GuardarProduccionFormula(produccionFormula);
            }
            catch (ExcepcionDesconocida)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            return(retorno);
        }
 /// <summary>
 /// Obtiene de la formula ingresada y para la organizacion del usuario, cuanto hay en inventario y cuanto esta programada para repartir
 /// </summary>
 internal static ProduccionFormulaInfo ConsultarFormulaId(DataSet ds)
 {
     try
     {
         Logger.Info();
         DataTable             dt        = ds.Tables[ConstantesDAL.DtDatos];
         ProduccionFormulaInfo resultado =
             (from info in dt.AsEnumerable()
              select
              new ProduccionFormulaInfo
         {
             DescripcionFormula = info.Field <string>("DescripcionFormula"),
             CantidadProducida = info.Field <decimal>("CantidadProducida"),
             CantidadReparto = Convert.ToDecimal(info.Field <int>("CantidadReparto")),
         }).First();
         return(resultado);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
 /// <summary>
 /// Guarda los datos capturados en el formulario "ProduccionFormula" en la tabla "ProduccionFormulaBatch"
 /// </summary>
 internal void GuardarProduccionFormulaBatchLista(ProduccionFormulaInfo produccionFormula, int ProduccionFormulaId)
 {
     try
     {
         Logger.Info();
         var parameters = AuxProduccionFormulaBatchDAL.GuardarProduccionFormulaBatchLista(produccionFormula, ProduccionFormulaId);
         Create("GuardarProduccionFormulaBatch", parameters);
     }
     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);
     }
 }
예제 #20
0
 /// <summary>
 /// Guarda los datos capturados en el formulario "ProduccionFormula" en la tabla "ProduccionFormulaBatch"
 /// </summary>
 internal static Dictionary <string, object> GuardarProduccionFormulaBatchLista(ProduccionFormulaInfo produccionFormula, int ProduccionFormulaId)
 {
     try
     {
         var xml =
             new XElement("ROOT",
                          from info in produccionFormula.ProduccionFormulaBatch
                          select
                          new XElement("ListaProduccionFormulaBatch",
                                       new XElement("ProduccionFormulaID", ProduccionFormulaId),
                                       new XElement("OrganizacionID", info.OrganizacionID),
                                       new XElement("ProductoID", info.ProductoID),
                                       new XElement("FormulaID", info.FormulaID),
                                       new XElement("RotomixID", info.RotomixID),
                                       new XElement("Batch", info.Batch),
                                       new XElement("CantidadProgramada", info.CantidadProgramada),
                                       new XElement("CantidadReal", info.CantidadReal),
                                       new XElement("Activo", (int)info.Activo),
                                       new XElement("UsuarioCreacionID", produccionFormula.UsuarioCreacionId)
                                       ));
         var parametros =
             new Dictionary <string, object>
         {
             { "@XmlProduccionFormulaBatch", xml.ToString() },
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #21
0
 /// <summary>
 /// Obtiene un lista paginada
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public ResultadoInfo <ProduccionFormulaInfo> ObtenerPorPagina(PaginacionInfo pagina, ProduccionFormulaInfo filtro)
 {
     try
     {
         Dictionary <string, object> parameters = AuxProduccionFormulaDAL.ObtenerParametrosPorPagina(pagina, filtro);
         DataSet ds = Retrieve("ProduccionFormula_ObtenerPorPagina", parameters);
         ResultadoInfo <ProduccionFormulaInfo> result = null;
         if (ValidateDataSet(ds))
         {
             result = MapProduccionFormulaDAL.ObtenerPorPagina(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);
     }
 }
예제 #22
0
 /// <summary>
 /// Obtiene parametros para obtener lista paginada
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public static Dictionary <string, object> ObtenerParametrosPorPagina(PaginacionInfo pagina, ProduccionFormulaInfo filtro)
 {
     try
     {
         Logger.Info();
         var parametros =
             new Dictionary <string, object>
         {
             { "@OrganizacionID", filtro.Organizacion.OrganizacionID },
             { "@Descripcion", filtro.DescripcionFormula ?? string.Empty },
             { "@Activo", filtro.Activo },
             { "@Inicio", pagina.Inicio },
             { "@Limite", pagina.Limite }
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #23
0
 /// <summary>
 ///  Método que obtiene un registro
 /// </summary>
 /// <param name="ds"></param>
 /// <returns></returns>
 public static ProduccionFormulaInfo ObtenerPorIDCompleto(DataSet ds)
 {
     try
     {
         Logger.Info();
         DataTable             dt        = ds.Tables[ConstantesDAL.DtDatos];
         DataTable             dtDetalle = ds.Tables[ConstantesDAL.DtDetalle];
         ProduccionFormulaInfo entidad   =
             (from info in dt.AsEnumerable()
              select
              new ProduccionFormulaInfo
         {
             ProduccionFormulaId = info.Field <int>("ProduccionFormulaID"),
             Organizacion = new OrganizacionInfo {
                 OrganizacionID = info.Field <int>("OrganizacionID"), Descripcion = info.Field <string>("Organizacion")
             },
             FolioFormula = info.Field <int>("FolioFormula"),
             Formula = new FormulaInfo
             {
                 FormulaId = info.Field <int>("FormulaID"),
                 Descripcion = info.Field <string>("Formula"),
                 Producto = new ProductoInfo
                 {
                     ProductoId = info.Field <int>("ProductoID"),
                     ProductoDescripcion = info.Field <string>("Producto")
                 }
             },
             CantidadProducida = info.Field <decimal>("CantidadProducida"),
             FechaProduccion = info.Field <DateTime>("FechaProduccion"),
             AlmacenMovimientoEntradaID = info.Field <long?>("AlmacenMovimientoEntradaID") != null ? info.Field <long>("AlmacenMovimientoEntradaID") : 0,
             AlmacenMovimientoSalidaID = info.Field <long?>("AlmacenMovimientoSalidaID") != null ? info.Field <long>("AlmacenMovimientoSalidaID") : 0,
             DescripcionFormula = info.Field <string>("Formula"),
             Activo = info.Field <bool>("Activo").BoolAEnum(),
             ProduccionFormulaDetalle = (from detalle in dtDetalle.AsEnumerable()
                                         select new ProduccionFormulaDetalleInfo
             {
                 ProduccionFormulaId = detalle.Field <int>("ProduccionFormulaID"),
                 ProduccionFormulaDetalleId = detalle.Field <int>("ProduccionFormulaDetalleID"),
                 Producto = new ProductoInfo
                 {
                     ProductoId = detalle.Field <int>("ProductoID"),
                     ProductoDescripcion = detalle.Field <string>("Producto"),
                     UnidadMedicion = new UnidadMedicionInfo
                     {
                         UnidadID = detalle.Field <int>("UnidadID"),
                         ClaveUnidad = detalle.Field <string>("ClaveUnidad")
                     }
                 },
                 CantidadProducto = detalle.Field <decimal>("CantidadProducto"),
                 Ingrediente = new IngredienteInfo
                 {
                     IngredienteId = detalle.Field <int>("IngredienteID")
                 },
                 AlmacenInventarioLoteID = detalle.Field <int>("AlmacenInventarioLoteID")
             }).ToList()
         }).First();
         return(entidad);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
        public ResultadoValidacion ValidacionesLista(List <ProcesarArchivoInfo> listaprocesarlo)
        {
            var    seguridad           = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
            string mensajeOK           = string.Empty;
            var    localResourceObject = GetLocalResourceObject("OK");

            if (localResourceObject != null)
            {
                mensajeOK = localResourceObject.ToString();
            }

            string nombrerotomix = "";

            var resultado = new ResultadoValidacion
            {
                Mensaje = mensajeOK
            };

            var listaFormulaDetalle         = new List <ProduccionFormulaDetalleInfo>();
            var listaFormulaProduccionBatch = new List <ProduccionFormulaBatchInfo>();

            try
            {
                List <ProcesarArchivoInfo> listaparadetalle = listaprocesarlo;
                //sacamos las distintas formulas del archivo de texto
                List <ProcesarArchivoInfo> formulas = listaprocesarlo.GroupBy(p => p.Formula).Select(g => g.First()).ToList();

                foreach (var renglon in formulas) //recorremos por formulas
                {
                    ProcesarArchivoInfo elemento = renglon;
                    //sacamos los batchs
                    var batches = from w in listaprocesarlo
                                  where w.Formula == elemento.Formula
                                  group w by w.batch into g
                                  select new
                    {
                        FirstLetter = g.Key,
                        Words       = g
                    };

                    resultado.Mensaje = ValidarCodigoFormula(elemento);
                    if (resultado.Mensaje != mensajeOK)
                    {
                        return(resultado);
                    }

                    int sumatoriameta = 0; int sumatoriareal = 0;
                    listaFormulaProduccionBatch = new List <ProduccionFormulaBatchInfo>();
                    foreach (var batch in batches)
                    {
                        List <ProcesarArchivoInfo> lista = listaprocesarlo.Where(k => k.Formula == elemento.Formula && k.batch == batch.FirstLetter).ToList();
                        var detallesBatchs     = new DetalleBatchInfo();
                        int sumatoriarealbatch = 0;

                        foreach (ProcesarArchivoInfo elmentoArchivo in lista)
                        {
                            if (elmentoArchivo.Marca == "2")
                            {
                                resultado.Mensaje = ValidarColumnaCodigoLista(elmentoArchivo);
                                if (resultado.Mensaje != mensajeOK)
                                {
                                    return(resultado);
                                }
                            }
                            else
                            {
                                resultado.Mensaje = ValidarFechaYHora(elmentoArchivo);
                                if (resultado.Mensaje != mensajeOK)
                                {
                                    return(resultado);
                                }

                                //valido que exista el codigo del producto
                                resultado.Mensaje = ValidarCodigoProducto(elmentoArchivo);
                                if (resultado.Mensaje != mensajeOK)
                                {
                                    return(resultado);
                                }

                                resultado.Mensaje = ValidarCodigoRotomix(elmentoArchivo);
                                if (resultado.Mensaje != mensajeOK)
                                {
                                    return(resultado);
                                }
                                resultado.Mensaje = ValidarCodigoFormula(elmentoArchivo);
                                if (resultado.Mensaje != mensajeOK)
                                {
                                    return(resultado);
                                }
                                resultado.Mensaje = ValidarProduccionFormula(elmentoArchivo);
                                if (resultado.Mensaje != mensajeOK)
                                {
                                    return(resultado);
                                }
                                //var elementosDuplicados =
                                //    lista.Where(det => det.Codigo.Equals(elmentoArchivo.Codigo)
                                //                         && det.Formula.ToUpper().Trim().Equals(elmentoArchivo.Formula.ToUpper().Trim())
                                //                         && det.Rotomix.ToUpper().Trim().Equals(elmentoArchivo.Rotomix.ToUpper().Trim())
                                //                         && det.Hora.Equals(elmentoArchivo.Hora)).ToList();

                                //if(elementosDuplicados.Count > 1)
                                //{
                                //    resultado.Mensaje = string.Format("El renglon se encuentra duplicado, Batch: {0}, Producto: {1}, RotoMix: {2}, Hora: {3}", elmentoArchivo.batch, elmentoArchivo.Codigo, elmentoArchivo.Rotomix, elmentoArchivo.Hora);
                                //    return resultado;
                                //}

                                sumatoriameta      = sumatoriameta + elmentoArchivo.Meta;
                                sumatoriareal      = sumatoriareal + elmentoArchivo.Real;
                                sumatoriarealbatch = sumatoriarealbatch + elmentoArchivo.Real;
                                nombrerotomix      = elmentoArchivo.Rotomix;
                            }
                        }

                        detallesBatchs.Batch           = batch.FirstLetter;
                        detallesBatchs.KilosProducidos = sumatoriarealbatch;
                        detallesBatchs.Rotomix         = nombrerotomix;
                        detallesBatchs.Formula         = renglon.Formula;
                        ListaGlobalDetalleBatch.Add(detallesBatchs);

                        //creamos el detalle de la tabla Produccion Formula Detalle
                        listaFormulaDetalle = CrearListaProduccionFormulaDetalle(listaparadetalle, renglon.Formula);

                        if (listaFormulaDetalle == null)
                        {
                            resultado.Mensaje = "ingrediente";
                            return(resultado);
                        }

                        //creamos el detalle de la tabla Produccion Formula Batch
                        listaFormulaProduccionBatch.AddRange(CrearListaProduccionFormulaBatch(listaparadetalle, renglon.Formula, batch.FirstLetter, nombrerotomix));
                    }//aqui termina por batch

                    //aqui llenara la lista

                    var produccionFormula = new ProduccionFormulaInfo();
                    produccionFormula.Organizacion = new OrganizacionInfo
                    {
                        OrganizacionID = seguridad.Usuario.Organizacion.OrganizacionID
                    };

                    var formulaPL = new FormulaPL();

                    var todasFormulas = formulaPL.ObtenerTodos(EstatusEnum.Activo);

                    FormulaInfo formula =
                        todasFormulas.FirstOrDefault(
                            fo =>
                            fo.Descripcion.ToUpper().Trim().Equals(renglon.Formula.ToUpper().Trim(),
                                                                   StringComparison.InvariantCultureIgnoreCase));

                    produccionFormula.Formula                  = formula;
                    produccionFormula.CantidadReparto          = sumatoriameta; //cantidad programada
                    produccionFormula.CantidadProducida        = sumatoriareal; //cantidad real
                    produccionFormula.FechaProduccion          = DateTime.Parse(txtFecha.Text);
                    produccionFormula.Activo                   = EstatusEnum.Activo;
                    produccionFormula.ProduccionFormulaDetalle = listaFormulaDetalle;
                    //produccionFormula.ProduccionFormulaBatch = ListaGlobalDetalleBatch.Where(batch => batch.Formula.ToUpper().Trim().Equals(produccionFormula.Formula.Descripcion.ToUpper().Trim())).ToList();
                    produccionFormula.ProduccionFormulaBatch = listaFormulaProduccionBatch;
                    produccionFormula.UsuarioCreacionId      = seguridad.Usuario.UsuarioID;

                    ListaGlobal.Add(produccionFormula);
                }
            }
            catch (Exception er)
            {
                Logger.Error(er);
                return(null);
            }

            return(resultado);
        }
예제 #25
0
 /// <summary>
 /// Obtiene una lista de produccion de formula
 /// </summary>
 /// <param name="reader"></param>
 /// <returns></returns>
 internal static List <ProduccionFormulaInfo> ObtenerPorConciliacion(IDataReader reader)
 {
     try
     {
         Logger.Info();
         var distribuciones = new List <ProduccionFormulaInfo>();
         ProduccionFormulaInfo distribucion;
         while (reader.Read())
         {
             distribucion = new ProduccionFormulaInfo
             {
                 ProduccionFormulaId = Convert.ToInt32(reader["ProduccionFormulaID"]),
                 Organizacion        = new OrganizacionInfo
                 {
                     OrganizacionID = Convert.ToInt32(reader["OrganizacionID"]),
                     Descripcion    = Convert.ToString(reader["Organizacion"])
                 },
                 FolioFormula = Convert.ToInt32(reader["FolioFormula"]),
                 Formula      = new FormulaInfo
                 {
                     FormulaId   = Convert.ToInt32(reader["FormulaID"]),
                     Descripcion = Convert.ToString(reader["Formula"]),
                     Producto    = new ProductoInfo
                     {
                         ProductoId          = Convert.ToInt32(reader["ProductoID"]),
                         ProductoDescripcion = Convert.ToString(reader["Producto"])
                     }
                 },
                 CantidadProducida          = Convert.ToDecimal(reader["CantidadProducida"]),
                 FechaProduccion            = Convert.ToDateTime(reader["FechaProduccion"]),
                 AlmacenMovimientoEntradaID = reader["AlmacenMovimientoEntradaID"] != null?Convert.ToInt64(reader["AlmacenMovimientoEntradaID"]) : 0,
                                                  AlmacenMovimientoSalidaID = reader["AlmacenMovimientoSalidaID"] != null?Convert.ToInt64(reader["AlmacenMovimientoSalidaID"]) : 0,
                                                                                  DescripcionFormula = Convert.ToString(reader["Formula"]),
                                                                                  Activo             = Convert.ToBoolean(reader["Activo"]).BoolAEnum(),
             };
             distribuciones.Add(distribucion);
         }
         reader.NextResult();
         var distribucionIngredientesOrganizaciones = new List <ProduccionFormulaDetalleInfo>();
         ProduccionFormulaDetalleInfo distribucionIngredienteOrganizacion;
         while (reader.Read())
         {
             distribucionIngredienteOrganizacion = new ProduccionFormulaDetalleInfo
             {
                 Producto = new ProductoInfo
                 {
                     ProductoId          = Convert.ToInt32(reader["ProductoID"]),
                     Descripcion         = Convert.ToString(reader["Producto"]),
                     ProductoDescripcion = Convert.ToString(reader["Producto"]),
                     UnidadMedicion      = new UnidadMedicionInfo
                     {
                         UnidadID    = Convert.ToInt32(reader["UnidadID"]),
                         ClaveUnidad = Convert.ToString(reader["ClaveUnidad"])
                     },
                 },
                 CantidadProducto = Convert.ToDecimal(reader["CantidadProducto"]),
                 Ingrediente      = new IngredienteInfo
                 {
                     IngredienteId = Convert.ToInt32(reader["IngredienteID"])
                 },
                 AlmacenInventarioLoteID    = Convert.ToInt32(reader["AlmacenInventarioLoteID"]),
                 ProduccionFormulaId        = Convert.ToInt32(reader["ProduccionFormulaID"]),
                 ProduccionFormulaDetalleId = Convert.ToInt32(reader["ProduccionFormulaDetalleID"]),
             };
             distribucionIngredientesOrganizaciones.Add(distribucionIngredienteOrganizacion);
         }
         distribuciones.ForEach(datos =>
         {
             datos.ProduccionFormulaDetalle =
                 distribucionIngredientesOrganizaciones.Where(
                     id => id.ProduccionFormulaId == datos.ProduccionFormulaId).ToList();
         });
         return(distribuciones);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }
예제 #26
0
        private IList <PolizaInfo> ObtenerPoliza(ProduccionFormulaInfo produccionFormula)
        {
            var polizasProduccionAlimento = new List <PolizaInfo>();

            IList <ClaseCostoProductoInfo> cuentasAlmacenProductoSalida =
                ObtenerCostosProducto(produccionFormula.Almacen.AlmacenID);

            if (cuentasAlmacenProductoSalida == null || !cuentasAlmacenProductoSalida.Any())
            {
                throw new ExcepcionServicio("No se encuentran cuentas configuradas, para productos del almacén  de planta de alimentos");
            }
            IList <CuentaSAPInfo> cuentasSap = ObtenerCuentasSAP();

            TipoPolizaInfo tipoPoliza =
                TiposPoliza.FirstOrDefault(clave => clave.TipoPolizaID == TipoPoliza.ProduccionAlimento.GetHashCode());

            string textoDocumento = tipoPoliza.TextoDocumento;
            string tipoMovimiento = tipoPoliza.ClavePoliza;
            string postFijoRef3   = tipoPoliza.PostFijoRef3;

            var linea = 1;
            var ref3  = new StringBuilder();

            ref3.Append("03");
            ref3.Append(
                string.Format("{0}{1}{2}", DateTime.Today.Day, DateTime.Today.Month, DateTime.Today.Year).PadLeft(
                    10, ' '));
            ref3.Append(new Random(10).Next(10, 20));
            ref3.Append(new Random(30).Next(30, 40));
            ref3.Append(DateTime.Now.Millisecond);
            ref3.Append(postFijoRef3);

            var almacenMovimientoBL = new AlmacenMovimientoBL();

            AlmacenMovimientoInfo almacenMovimiento =
                almacenMovimientoBL.ObtenerPorId(produccionFormula.AlmacenMovimientoEntradaID);

            //string numeroReferencia = ObtenerNumeroReferencia;
            string numeroReferencia = ObtenerNumeroReferenciaFolio(almacenMovimiento.FolioMovimiento);

            DateTime fecha        = produccionFormula.FechaProduccion;
            string   archivoFolio = ObtenerArchivoFolio(fecha);

            OrganizacionInfo organizacion = ObtenerOrganizacionIVA(produccionFormula.Organizacion.OrganizacionID);

            if (organizacion == null)
            {
                organizacion = new OrganizacionInfo
                {
                    TipoOrganizacion = new TipoOrganizacionInfo()
                };
            }

            foreach (var produccionDetalle in produccionFormula.ProduccionFormulaDetalle)
            {
                CuentaSAPInfo claveContableCargo;
                var           cuentaSapEntrada = cuentasAlmacenProductoSalida.FirstOrDefault(
                    cuenta => cuenta.ProductoID == produccionFormula.Formula.Producto.ProductoId);

                if (cuentaSapEntrada == null)
                {
                    cuentaSapEntrada = new ClaseCostoProductoInfo();
                }

                claveContableCargo = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapEntrada.CuentaSAPID);

                if (claveContableCargo == null)
                {
                    throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", produccionFormula.Formula.Producto.ProductoDescripcion));
                }

                var datos = new DatosPolizaInfo
                {
                    NumeroReferencia = numeroReferencia,
                    FechaEntrada     = produccionFormula.FechaProduccion,
                    Folio            = numeroReferencia,
                    CabezasRecibidas = string.Empty,
                    NumeroDocumento  = string.Empty,
                    ClaseDocumento   = postFijoRef3,
                    ClaveProveedor   = string.Empty,
                    Importe
                        = string.Format("{0}", Math.Round(produccionDetalle.CantidadProducto * produccionDetalle.PrecioPromedio, 2).ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    CentroCosto       = string.Empty,
                    Renglon           = Convert.ToString(linea++),
                    Cabezas           = string.Empty,
                    ImporteIva        = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = claveContableCargo.CuentaSAP,
                    CodigoRetencion  = string.Empty,
                    Division         = organizacion.Division,
                    TipoRetencion    = string.Empty,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = string.Empty,
                    PesoOrigen       = 0,
                    TipoDocumento    = textoDocumento,
                    ComplementoRef1  = string.Empty,
                    Concepto         = String.Format("{0}-{1} {2} {3} {4}",
                                                     tipoMovimiento,
                                                     numeroReferencia,
                                                     produccionDetalle.Producto.ProductoDescripcion,
                                                     (string.Format("{0} {1}.", produccionDetalle.CantidadProducto.ToString("N2"), produccionDetalle.Producto.UnidadMedicion.ClaveUnidad)),
                                                     produccionDetalle.PrecioPromedio.ToString("C2")),
                    Sociedad            = organizacion.Sociedad,
                    DescripcionProducto = produccionDetalle.Producto.ProductoDescripcion,
                    Segmento            = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                PolizaInfo polizaSalida = GeneraRegistroPoliza(datos);
                polizasProduccionAlimento.Add(polizaSalida);

                var cuentaSapSale = cuentasAlmacenProductoSalida.FirstOrDefault(
                    cuenta => cuenta.ProductoID == produccionDetalle.Producto.ProductoId);

                if (cuentaSapSale == null)
                {
                    cuentaSapSale = new ClaseCostoProductoInfo();
                }
                var claveContableAbono = cuentasSap.FirstOrDefault(sap => sap.CuentaSAPID == cuentaSapSale.CuentaSAPID);

                if (claveContableAbono == null)
                {
                    throw new ExcepcionServicio(string.Format("No se encontró configurada la cuenta del producto {0}", produccionDetalle.Producto.ProductoDescripcion));
                }

                datos = new DatosPolizaInfo
                {
                    NumeroReferencia  = numeroReferencia,
                    FechaEntrada      = produccionFormula.FechaProduccion,
                    Folio             = numeroReferencia,
                    CabezasRecibidas  = string.Empty,
                    NumeroDocumento   = string.Empty,
                    ClaseDocumento    = postFijoRef3,
                    ClaveProveedor    = string.Empty,
                    Importe           = string.Format("{0}", (Math.Round(produccionDetalle.CantidadProducto * produccionDetalle.PrecioPromedio, 2) * -1).ToString("F2")),
                    IndicadorImpuesto = String.Empty,
                    CentroCosto       = string.Empty,
                    Renglon           = Convert.ToString(linea++),
                    Cabezas           = string.Empty,
                    ImporteIva        = "0",
                    Ref3             = ref3.ToString(),
                    Cuenta           = claveContableAbono.CuentaSAP,
                    CodigoRetencion  = string.Empty,
                    TipoRetencion    = string.Empty,
                    ArchivoFolio     = archivoFolio,
                    DescripcionCosto = string.Empty,
                    Division         = organizacion.Division,
                    PesoOrigen       = 0,
                    TipoDocumento    = textoDocumento,
                    ComplementoRef1  = string.Empty,
                    Concepto         = String.Format("{0}-{1} {2} {3} {4}",
                                                     tipoMovimiento,
                                                     numeroReferencia,
                                                     produccionDetalle.Producto.ProductoDescripcion,
                                                     (string.Format("{0} {1}.", produccionDetalle.CantidadProducto.ToString("N2"), produccionDetalle.Producto.UnidadMedicion.ClaveUnidad)),
                                                     produccionDetalle.PrecioPromedio.ToString("C2")),
                    Sociedad            = organizacion.Sociedad,
                    DescripcionProducto = produccionDetalle.Producto.ProductoDescripcion,
                    Segmento            = string.Format("{0}{1}", PrefijoSegmento, organizacion.Sociedad),
                };
                polizaSalida = GeneraRegistroPoliza(datos);
                polizasProduccionAlimento.Add(polizaSalida);
            }
            return(polizasProduccionAlimento);
        }
예제 #27
0
 /// <summary>
 /// Obtiene un lista paginada
 /// </summary>
 /// <param name="pagina"></param>
 /// <param name="filtro"></param>
 /// <returns></returns>
 public ResultadoInfo <ProduccionFormulaInfo> ObtenerPorPagina(PaginacionInfo pagina, ProduccionFormulaInfo filtro)
 {
     try
     {
         Logger.Info();
         var produccionFormulaBL = new ProduccionFormulaBL();
         ResultadoInfo <ProduccionFormulaInfo> result = produccionFormulaBL.ObtenerPorPagina(pagina, filtro);
         return(result);
     }
     catch (ExcepcionGenerica)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }