Beispiel #1
0
        public static List <AlmacenInventarioLoteInfo> ObtenerLotesDelProducto(int formulaId)
        {
            var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
            List <AlmacenInventarioLoteInfo> listaLotes = null;

            if (seguridad != null)
            {
                var         formulaPl   = new FormulaPL();
                FormulaInfo formulaInfo = formulaPl.ObtenerPorID(formulaId);

                if (formulaInfo.Descripcion.Trim() != "F1")
                {
                    var almaceninventariolotepl = new AlmacenInventarioLotePL();
                    listaLotes = almaceninventariolotepl.ObtenerListadoLotesPorOrganizacionTipoAlmacenProducto(
                        new ParametrosOrganizacionTipoAlmacenProductoActivo
                    {
                        Activo         = 1,
                        OrganizacionId = seguridad.Usuario.Organizacion.OrganizacionID,
                        ProductoId     = formulaInfo.Producto.ProductoId,
                        TipoAlmacenId  = (int)TipoAlmacenEnum.MateriasPrimas,
                        UsuarioId      = seguridad.Usuario.UsuarioID
                    });
                }
            }

            return(listaLotes);
        }
Beispiel #2
0
        /// <summary>
        /// Llena el combo de formulas
        /// </summary>
        private void CargarFormulas()
        {
            try
            {
                SeguridadInfo seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

                var formulaPl = new FormulaPL();
                IList <FormulaInfo> listaFormula = formulaPl.ObtenerFormulasConfiguradas(EstatusEnum.Activo);

                if (listaFormula != null)
                {
                    if (listaFormula.Count > 0)
                    {
                        listaFormula.Add(new FormulaInfo()
                        {
                            FormulaId = 0, Descripcion = "Seleccione"
                        });
                        cmbFormula.DataSource     = listaFormula;
                        cmbFormula.DataTextField  = "Descripcion";
                        cmbFormula.DataValueField = "FormulaID";
                        cmbFormula.DataBind();
                        cmbFormula.SelectedValue = "0";
                    }
                }
            }
            catch (ExcepcionDesconocida)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
Beispiel #3
0
        public void FormulaObtenerPorIdExistente()
        {
            var         pl      = new FormulaPL();
            FormulaInfo formula = pl.ObtenerPorID(1);

            Assert.AreNotEqual(formula, null);
        }
Beispiel #4
0
        public void FormulaGuardarDescripcionExistente()
        {
            var pl      = new FormulaPL();
            var formula = new FormulaInfo
            {
                FormulaId   = 0,
                Descripcion = "Formula FC",
                TipoFormula = new TipoFormulaInfo {
                    TipoFormulaID = 1
                },
                Producto = new ProductoInfo {
                    ProductoId = 1
                },
                UsuarioCreacionID = 1,
                Activo            = EstatusEnum.Activo
            };

            try
            {
                formula.FormulaId = pl.Guardar(formula);
            }
            catch (Exception)
            {
                formula.FormulaId = 0;
            }
            Assert.AreEqual(formula.FormulaId, 0);
        }
Beispiel #5
0
        public void FormulaObtenerTodosActivos()
        {
            var pl = new FormulaPL();
            IList <FormulaInfo> lista = pl.ObtenerTodos(EstatusEnum.Activo);

            Assert.AreNotEqual(lista, null);
        }
        public static FormulaInfo ObtenerFormula(int formulaID)
        {
            var         formulaPL = new FormulaPL();
            FormulaInfo formula   = formulaPL.ObtenerPorFormulaIDCalidadPaseProceso(formulaID);

            return(formula);
        }
Beispiel #7
0
        /// <summary>
        /// Método para guardar los valores del contexto
        /// </summary>
        private void Guardar()
        {
            bool guardar = ValidaGuardar();

            if (guardar)
            {
                try
                {
                    var formulaPL = new FormulaPL();
                    formulaPL.Guardar(Contexto);
                    SkMessageBox.Show(this, Properties.Resources.GuardadoConExito, MessageBoxButton.OK, MessageImage.Correct);
                    if (Contexto.FormulaId == 0)
                    {
                        InicializaContexto();
                        txtDescripcion.Focus();
                    }
                    else
                    {
                        confirmaSalir = false;
                        Close();
                    }
                }
                catch (ExcepcionGenerica)
                {
                    SkMessageBox.Show(this, Properties.Resources.Formula_ErrorGuardar, MessageBoxButton.OK, MessageImage.Error);
                }
                catch (Exception ex)
                {
                    Logger.Error(ex);
                    SkMessageBox.Show(this, Properties.Resources.Formula_ErrorGuardar, MessageBoxButton.OK, MessageImage.Error);
                }
            }
        }
Beispiel #8
0
        public static AlmacenInventarioInfo ObtenerExistenciaInventarioFormula(int formulaId)
        {
            var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

            AlmacenInventarioInfo almacenInventarioInfo = null;

            //var almaceninventarioPl = new AlmacenInventarioPL();

            if (seguridad != null)
            {
                FormulaInfo formula   = new FormulaInfo();
                FormulaPL   formulaPl = new FormulaPL();
                formula = formulaPl.ObtenerPorID(formulaId);
                //AlmacenInfo almacenInfo = new AlmacenInfo();
                AlmacenPL almacenPl = new AlmacenPL();
                almacenInventarioInfo = almacenPl.ObtenerAlmacenInventarioPorOrganizacionTipoAlmacen(new ParametrosOrganizacionTipoAlmacenProductoActivo()
                {
                    Activo         = 1,
                    OrganizacionId = seguridad.Usuario.OrganizacionID,
                    ProductoId     = formula.Producto.ProductoId,
                    TipoAlmacenId  = (int)TipoAlmacenEnum.PlantaDeAlimentos
                });
            }

            return(almacenInventarioInfo);
        }
        public string ValidarCodigoFormula(ProcesarArchivoInfo renglonArchivo)
        {
            string resultado;

            resultado = GetLocalResourceObject("OK").ToString();
            var formulas = new FormulaPL();

            if (string.IsNullOrWhiteSpace(renglonArchivo.Formula))
            {
                return(GetLocalResourceObject("formulas").ToString());
            }
            var formulasTodos = formulas.ObtenerTodos(EstatusEnum.Activo);

            var formulaExiste =
                formulasTodos.FirstOrDefault(fo => fo.Descripcion.ToUpper().Trim().Equals(renglonArchivo.Formula.ToUpper().Trim(), StringComparison.InvariantCultureIgnoreCase));

            if (formulaExiste == null)
            {
                return(GetLocalResourceObject("formulas").ToString());
            }
            else
            {
                renglonArchivo.FormulaID = formulaExiste.FormulaId;
            }
            return(resultado);
        }
Beispiel #10
0
        public void FormulaCrear()
        {
            var random       = new Random();
            int randomNumber = random.Next(0, 100);

            var pl      = new FormulaPL();
            var formula = new FormulaInfo
            {
                FormulaId         = 0,
                Descripcion       = string.Format("Prueba Unitaria Crear {0:D10}", randomNumber),
                UsuarioCreacionID = 1,
                TipoFormula       = new TipoFormulaInfo {
                    TipoFormulaID = 1
                },
                Producto = new ProductoInfo {
                    ProductoId = 1
                },
                Activo = EstatusEnum.Activo
            };

            try
            {
                pl.Guardar(formula);
            }
            catch (Exception)
            {
                formula = null;
            }
            Assert.AreNotEqual(formula, null);
        }
Beispiel #11
0
 /// <summary>
 /// Llena el combo de rotomix
 /// </summary>
 private void CargarRotoMix()
 {
     try
     {
         SeguridadInfo       seguridad    = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
         var                 formulaPl    = new FormulaPL();
         IList <RotoMixInfo> listaRotoMix = formulaPl.ObtenerRotoMixConfiguradas(seguridad.Usuario.Organizacion.OrganizacionID);
         if (listaRotoMix != null && listaRotoMix.Count > 0)
         {
             listaRotoMix.Add(new RotoMixInfo()
             {
                 RotoMixId = 0, Descripcion = "Seleccione"
             });
             cmbRotoMix.DataSource     = listaRotoMix;
             cmbRotoMix.DataTextField  = "Descripcion";
             cmbRotoMix.DataValueField = "RotoMixId";
             cmbRotoMix.DataBind();
             cmbRotoMix.SelectedValue = "0";
         }
     }
     catch (ExcepcionDesconocida)
     {
         throw;
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
     }
 }
        public List <ProduccionFormulaBatchInfo> CrearListaProduccionFormulaBatch(List <ProcesarArchivoInfo> lista, string formula, int Batch, string nombrerotomix)
        {
            var listaFormulaProduccionBatch = new List <ProduccionFormulaBatchInfo>();
            var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

            var formulaPL = new FormulaPL();

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

            try
            {
                //sacamos los Productos
                var produccionAgrupada = from w in lista
                                         where w.Formula == formula && w.Marca != "2" && w.batch == Batch
                                         group w by w.Codigo into g
                                         select new { FirstLetter = g.Key, Words = g };

                foreach (var z in produccionAgrupada)
                {
                    var         rotomixPl = new RotomixPL();
                    RotoMixInfo rotoMix   = rotomixPl.ObtenerRotoMixXOrganizacionYDescripcion(seguridad.Usuario.Organizacion.OrganizacionID, nombrerotomix);

                    var produccionformulabatch = new ProduccionFormulaBatchInfo();
                    List <ProcesarArchivoInfo> listafltrada = lista.Where(k => k.Formula == formula && k.Codigo == z.FirstLetter && k.batch == Batch).ToList();

                    int cantidadReal       = (from prod in listafltrada select prod.Real).Sum();
                    int cantidadProgramada = (from prod in listafltrada select prod.Meta).Sum();

                    var formulaExiste =
                        formulasTodas.FirstOrDefault(
                            fo =>
                            fo.Descripcion.ToUpper().Trim().Equals(formula.ToUpper().Trim(),
                                                                   StringComparison.InvariantCultureIgnoreCase));

                    if (formulaExiste == null)
                    {
                        formulaExiste = new FormulaInfo();
                    }

                    produccionformulabatch.OrganizacionID     = seguridad.Usuario.Organizacion.OrganizacionID;
                    produccionformulabatch.Batch              = Batch;
                    produccionformulabatch.ProductoID         = int.Parse(z.FirstLetter);
                    produccionformulabatch.FormulaID          = formulaExiste.FormulaId;
                    produccionformulabatch.CantidadProgramada = cantidadProgramada;
                    produccionformulabatch.CantidadReal       = cantidadReal;
                    produccionformulabatch.Activo             = EstatusEnum.Activo;
                    produccionformulabatch.RotomixID          = rotoMix.RotoMixId;

                    listaFormulaProduccionBatch.Add(produccionformulabatch);
                }
            }
            catch (Exception er)
            {
                Logger.Error(er);
                return(null);
            }
            return(listaFormulaProduccionBatch);
        }
Beispiel #13
0
        public void FormulaObtenerPorId()
        {
            var         pl      = new FormulaPL();
            FormulaInfo formula = pl.ObtenerPorID(0);

            Assert.AreEqual(formula, null);
            Assert.IsNotNull(formula.TipoFormula);
            Assert.IsNotNull(formula.Producto);
        }
Beispiel #14
0
        /// <summary>
        /// Metodo que valida los datos para guardar
        /// </summary>
        /// <returns></returns>
        private bool ValidaGuardar()
        {
            bool   resultado = true;
            string mensaje   = string.Empty;

            try
            {
                if (string.IsNullOrWhiteSpace(Contexto.Descripcion))
                {
                    resultado = false;
                    mensaje   = Properties.Resources.FormulaEdicion_MsgDescripcionRequerida;
                    txtDescripcion.Focus();
                }
                else if (cmbTipoFormula.SelectedItem == null || Contexto.TipoFormula.TipoFormulaID == 0)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.FormulaEdicion_MsgTipoFormulaIDRequerida;
                    cmbTipoFormula.Focus();
                }
                else if (Contexto.Producto.ProductoId == 0)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.FormulaEdicion_MsgProductoIDRequerida;
                    skAyudaProducto.AsignarFoco();
                }
                else if (cmbActivo.SelectedItem == null)
                {
                    resultado = false;
                    mensaje   = Properties.Resources.FormulaEdicion_MsgActivoRequerida;
                    cmbActivo.Focus();
                }
                else
                {
                    int formulaId = Contexto.FormulaId;

                    var         formulaPL = new FormulaPL();
                    FormulaInfo formula   = formulaPL.ObtenerPorDescripcion(Contexto.Descripcion);

                    if (formula != null && (formulaId == 0 || formulaId != formula.FormulaId))
                    {
                        resultado = false;
                        mensaje   = string.Format(Properties.Resources.FormulaEdicion_MsgDescripcionExistente, formula.FormulaId);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }

            if (!string.IsNullOrWhiteSpace(mensaje))
            {
                SkMessageBox.Show(this, mensaje, MessageBoxButton.OK, MessageImage.Warning);
            }
            return(resultado);
        }
Beispiel #15
0
        private void ObtenerFormulas()
        {
            var formulaPl = new FormulaPL();
            IList <FormulaInfo> formulas = formulaPl.ObtenerTodos();

            if (formulas == null)
            {
                SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal],
                                  Properties.Resources.TraspasoGanadoGordo_MensajeNoSeEncontraronRegistrosFormula,
                                  MessageBoxButton.OK, MessageImage.Warning);
            }
            CboFormula.ItemsSource = formulas;
        }
Beispiel #16
0
        public void FormulaObtenerPorPaginaSinDatos()
        {
            var pl     = new FormulaPL();
            var pagina = new PaginacionInfo {
                Inicio = 1, Limite = 15
            };
            var filtro = new FormulaInfo {
                Descripcion = "."
            };

            ResultadoInfo <FormulaInfo> listaPaginada = pl.ObtenerPorPagina(pagina, filtro);

            Assert.AreEqual(listaPaginada, null);
        }
        /* protected void btnLimpiar_Click(object sender, EventArgs e)
         * {
         *   txtCodigoCorral.Text = string.Empty;
         *   txtKgsProgramados.Text = string.Empty;
         *   ddlFormula.SelectedIndex = -1;
         * }*/
        #endregion
        #region Metodos

        private void CargarFormulas()
        {
            FormulaPL formulaPL = new FormulaPL();
            var       formulas  = formulaPL.ObtenerTodos();

            if (formulas != null)
            {
                formulas = formulas.Where(registro => registro.TipoFormula.TipoFormulaID == TipoFormula.Inicio.GetHashCode() ||
                                          registro.TipoFormula.TipoFormulaID == TipoFormula.Finalizacion.GetHashCode() ||
                                          registro.TipoFormula.TipoFormulaID == TipoFormula.Retiro.GetHashCode()).ToList();
                ddlFormula.DataSource = formulas;
                ddlFormula.DataBind();
            }
        }
Beispiel #18
0
 public static IList <FormulaInfo> ConsultarFormulas()
 {
     try
     {
         var formulasPl     = new FormulaPL();
         var formulas       = formulasPl.ObtenerPorTipoFormulaID((int)TipoFormula.Forraje);
         var formulasInicio = formulasPl.ObtenerPorTipoFormulaID((int)TipoFormula.Inicio);
         formulasInicio = formulasInicio.Where(item => item.Descripcion.Trim() == "F1").ToList();
         if (formulasInicio.Count > 0)
         {
             formulas.Add(formulasInicio[0]);
         }
         return(formulas);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw;
     }
 }
Beispiel #19
0
 /// <summary>
 /// Obtiene la lista para mostrar en el grid
 /// </summary>
 private void ObtenerListaFormula(int inicio, int limite)
 {
     try
     {
         if (ucPaginacion.ContextoAnterior != null)
         {
             bool contextosIguales = ucPaginacion.CompararObjetos(Contexto, ucPaginacion.ContextoAnterior);
             if (!contextosIguales)
             {
                 ucPaginacion.Inicio = 1;
                 inicio = 1;
             }
         }
         var         formulaPL = new FormulaPL();
         FormulaInfo filtros   = ObtenerFiltros();
         var         pagina    = new PaginacionInfo {
             Inicio = inicio, Limite = limite
         };
         ResultadoInfo <FormulaInfo> resultadoInfo = formulaPL.ObtenerPorPagina(pagina, filtros);
         if (resultadoInfo != null && resultadoInfo.Lista != null &&
             resultadoInfo.Lista.Count > 0)
         {
             gridDatos.ItemsSource       = resultadoInfo.Lista;
             ucPaginacion.TotalRegistros = resultadoInfo.TotalRegistros;
         }
         else
         {
             ucPaginacion.TotalRegistros = 0;
             gridDatos.ItemsSource       = new List <Formula>();
         }
     }
     catch (ExcepcionGenerica)
     {
         SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.Formula_ErrorBuscar, MessageBoxButton.OK, MessageImage.Error);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         SkMessageBox.Show(Application.Current.Windows[ConstantesVista.WindowPrincipal], Properties.Resources.Formula_ErrorBuscar, MessageBoxButton.OK, MessageImage.Error);
     }
 }
        public static IList <FormulaInfo> ObtenerFormulaPagina(string descripcionFormula)
        {
            var pagina = new PaginacionInfo
            {
                Inicio = 1,
                Limite = 100000
            };
            var formulaPL = new FormulaPL();
            var formula   = new FormulaInfo
            {
                Descripcion = descripcionFormula,
                Activo      = EstatusEnum.Activo
            };
            ResultadoInfo <FormulaInfo> formulas = formulaPL.ObtenerPorPaseCalidadPaginado(pagina, formula);
            var resultado = new List <FormulaInfo>();

            if (formulas != null)
            {
                resultado.AddRange(formulas.Lista);
            }
            return(resultado);
        }
Beispiel #21
0
        public static int DeterminaNumeroBatch(int rotoMix)
        {
            int resultado = 0;

            try
            {
                int organizacionid = 0;
                var seguridad      = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;
                organizacionid = seguridad.Usuario.Organizacion.OrganizacionID;
                var formulaPl = new FormulaPL();
                resultado = formulaPl.CantidadBatch(organizacionid, rotoMix) + 1;
            }
            catch (ExcepcionDesconocida)
            {
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
            return(resultado);
        }
        /// <summary>
        /// Funcion que llena los datos de los combos de formulas
        /// </summary>
        private void CargarFormulas()
        {
            try
            {
                Logger.Info();
                FormulaPL           formulaPL     = new FormulaPL();
                IList <FormulaInfo> listaFormulas = formulaPL.ObtenerTodos();

                cmbFormulaManiana.DataSource     = listaFormulas;
                cmbFormulaManiana.DataTextField  = "Descripcion";
                cmbFormulaManiana.DataValueField = "FormulaId";
                cmbFormulaManiana.DataBind();

                cmbFormulaTarde.DataSource     = listaFormulas;
                cmbFormulaTarde.DataTextField  = "Descripcion";
                cmbFormulaTarde.DataValueField = "FormulaId";
                cmbFormulaTarde.DataBind();
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
Beispiel #23
0
        public void FormulaActualizar()
        {
            var         random       = new Random();
            int         randomNumber = random.Next(0, 100);
            var         pl           = new FormulaPL();
            FormulaInfo formula      = pl.ObtenerPorID(9);

            if (formula != null)
            {
                string descripcion;
                try
                {
                    descripcion                   = string.Format("Prueba Unitaria Actualizar {0:D10}", randomNumber);
                    formula.Descripcion           = descripcion;
                    formula.UsuarioModificacionID = 2;
                    pl.Guardar(formula);
                }
                catch (Exception)
                {
                    descripcion = string.Empty;
                }
                Assert.AreEqual(formula.Descripcion, descripcion);
            }
        }
        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);
        }
        public List <ProduccionFormulaDetalleInfo> CrearListaProduccionFormulaDetalle(List <ProcesarArchivoInfo> lista, string formula)
        {
            var seguridad = (SeguridadInfo)ObtenerSeguridad();
            var listaGlobalFormulaDetalle = new List <ProduccionFormulaDetalleInfo>();

            var ingredientePL = new IngredientePL();

            try
            {
                //sacamos los Productos
                var Prod = from w in lista
                           where w.Formula == formula && w.Marca != "2"
                           group w by w.Codigo into g
                           select new
                {
                    FirstLetter = g.Key,
                    Words       = g
                };

                var formulaPL = new FormulaPL();

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

                foreach (var produccion in Prod)
                {
                    var produccionFormulaDetalle            = new ProduccionFormulaDetalleInfo();
                    List <ProcesarArchivoInfo> listafltrada = lista.Where(k => k.Formula == formula && k.Codigo == produccion.FirstLetter).ToList();

                    decimal cantidad = (from prod in listafltrada select prod.Real).Sum();

                    produccionFormulaDetalle.Producto = new ProductoInfo
                    {
                        ProductoId = int.Parse(produccion.FirstLetter)
                    };
                    produccionFormulaDetalle.CantidadProducto = cantidad;
                    produccionFormulaDetalle.Activo           = EstatusEnum.Activo;

                    var formulaExiste =
                        formulasTodas.FirstOrDefault(
                            fo =>
                            fo.Descripcion.ToUpper().Trim().Equals(formula.ToUpper().Trim(),
                                                                   StringComparison.InvariantCultureIgnoreCase));

                    if (formulaExiste == null)
                    {
                        formulaExiste = new FormulaInfo();
                    }

                    IngredienteInfo ingredienteInfo = ingredientePL.ObtenerPorIdOrganizacionFormulaProducto(formulaExiste.FormulaId, int.Parse(produccion.FirstLetter), seguridad.Usuario.Organizacion.OrganizacionID);

                    if (ingredienteInfo == null)
                    {
                        return(null);
                    }
                    produccionFormulaDetalle.Ingrediente = ingredienteInfo;
                    listaGlobalFormulaDetalle.Add(produccionFormulaDetalle);
                }
            }
            catch (Exception er)
            {
                Logger.Error(er);
                return(null);
            }
            return(listaGlobalFormulaDetalle);
        }
        /// <summary>
        /// Método para guardar los valores del contexto
        /// </summary>
        private void Guardar()
        {
            bool guardar = ValidaGuardar();

            if (guardar)
            {
                try
                {
                    var ingredientePL = new IngredientePL();
                    var formulaPL     = new FormulaPL();
                    for (int i = 0; i < Contexto.ListaIngredientes.Count; i++)
                    {
                        Contexto.ListaIngredientes[i].Organizacion = Contexto.Organizacion;
                        Contexto.ListaIngredientes[i].TieneCambios = true;
                        if (Contexto.ListaIngredientes[i].UsuarioCreacionID == 0)
                        {
                            Contexto.ListaIngredientes[i].UsuarioCreacionID     = AuxConfiguracion.ObtenerUsuarioLogueado();
                            Contexto.ListaIngredientes[i].UsuarioModificacionID = AuxConfiguracion.ObtenerUsuarioLogueado();
                        }
                        else
                        {
                            Contexto.ListaIngredientes[i].UsuarioModificacionID = AuxConfiguracion.ObtenerUsuarioLogueado();
                        }

                        Contexto.ListaIngredientes[i].Formula = Contexto.Formula;
                    }
                    if (!EsEdicion)
                    {
                        ResultadoInfo <FormulaInfo> formulas = ingredientePL.ObtenerPorPaginaFormulaOrganizacion(new Base.Infos.PaginacionInfo {
                            Inicio = 1, Limite = 1
                        }, new IngredienteInfo {
                            Formula = Contexto.Formula, Organizacion = Contexto.Organizacion
                        });

                        if (formulas == null || formulas.Lista.Count == 0)
                        {
                            ingredientePL.GuardarIngredientesXML(Contexto.ListaIngredientes.Where(ing => ing.TieneCambios).ToList());
                            formulaPL.Guardar(Contexto.Formula);


                            SkMessageBox.Show(this, Properties.Resources.GuardadoConExito, MessageBoxButton.OK, MessageImage.Correct);
                            confirmaSalir = false;
                            Close();
                        }
                        else
                        {
                            SkMessageBox.Show(this, "Fórmula ya tiene configuración de ingredientes.", MessageBoxButton.OK, MessageImage.Error);
                            skAyudaFormula.LimpiarCampos();
                            skAyudaFormula.AsignarFoco();
                        }
                    }
                    else
                    {
                        ingredientePL.GuardarIngredientesXML(Contexto.ListaIngredientes.Where(ing => ing.TieneCambios).ToList());
                        formulaPL.Guardar(Contexto.Formula);


                        SkMessageBox.Show(this, Properties.Resources.GuardadoConExito, MessageBoxButton.OK, MessageImage.Correct);
                        confirmaSalir = false;
                        Close();
                    }
                }
                catch (ExcepcionGenerica)
                {
                    SkMessageBox.Show(this, Properties.Resources.Ingrediente_ErrorGuardar, MessageBoxButton.OK, MessageImage.Error);
                }
                catch (Exception ex)
                {
                    Logger.Error(ex);
                    SkMessageBox.Show(this, Properties.Resources.Ingrediente_ErrorGuardar, MessageBoxButton.OK, MessageImage.Error);
                }
            }
        }