示例#1
0
        public void FormulaObtenerTodosActivos()
        {
            var pl = new FormulaPL();
            IList <FormulaInfo> lista = pl.ObtenerTodos(EstatusEnum.Activo);

            Assert.AreNotEqual(lista, null);
        }
        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);
        }
        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);
        }
示例#4
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;
        }
        /* 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();
            }
        }
        /// <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);
            }
        }
        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);
        }
        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);
        }