/// <summary>
        /// Valida que no exista la produccion de formula
        /// </summary>
        internal ProduccionFormulaBatchInfo ValidarProduccionFormulaBatch(ProcesarArchivoInfo produccionFormula)
        {
            ProduccionFormulaBatchInfo resultado = null;

            try
            {
                Logger.Info();
                var     parameters = AuxProduccionFormulaBatchDAL.ObtenerParametrosValidarProduccionFormulaBatch(produccionFormula);
                DataSet ds         = Retrieve("ProduccionFormulaBatch_ValidarBatch", parameters);
                if (ValidateDataSet(ds))
                {
                    resultado = MapProduccionFormulaBatchDAL.ValidarProduccionFormulaBatch(ds);
                }
            }
            catch (SqlException ex)
            {
                Logger.Error(ex);
                throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
            }
            catch (DataException ex)
            {
                Logger.Error(ex);
                throw new ExcepcionServicio(MethodBase.GetCurrentMethod(), ex);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
            }
            return(resultado);
        }
        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);
        }
        // Validar la Fecha de la fecha de produccion indicada en el archivo
        public string ValidarFechaYHora(ProcesarArchivoInfo renglonArchivo)
        {
            string resultado = GetLocalResourceObject("OK").ToString();

            string[] words  = renglonArchivo.Fecha.Split('/');
            string[] words2 = renglonArchivo.Hora.Split(':');

            string cadena = string.Format("{0}", fecha.Year);

            cadena = cadena.Substring(0, 2);
            string year = string.Format("{0}{1}", cadena, words[2]);

            DateTime dateValue = new DateTime(int.Parse(year), int.Parse(words[1]), int.Parse(words[0]), int.Parse(words2[0]), int.Parse(words2[1]), int.Parse(words2[0]));

            //DateTime unomenos = new DateTime(fecha.Year, fecha.Month, fecha.Day == 1 ? 1 : fecha.Day - 1, 0, 0, 0);
            DateTime unomenos = new DateTime(fecha.Year, fecha.Month, fecha.Day, 0, 0, 0);
            DateTime unomas   = new DateTime(fecha.Year, fecha.Month, fecha.Day, 23, 59, 59);

            if (dateValue < unomenos)
            {
                resultado = GetLocalResourceObject("fecha").ToString();
            }
            else
            {
                if (dateValue > unomas)
                {
                    resultado = GetLocalResourceObject("fecha").ToString();
                }
            }
            renglonArchivo.FechaProduccion = dateValue;
            return(resultado);
        }
        public ResultadoValidacion CrearArchivos(string archivo)
        {
            //string resultado;
            var resultado = new ResultadoValidacion();

            resultado.Mensaje = GetLocalResourceObject("OK").ToString();
            var    file       = new StreamReader(archivo);
            string lineActual = string.Empty;

            try
            {
                // Read the file and display it line by line.

                var procesarlo      = new ProcesarArchivoInfo();
                var listaprocesarlo = new List <ProcesarArchivoInfo>();

                string linea;
                while ((linea = file.ReadLine()) != null)
                {
                    //se validan las columnas del archivo
                    string[] words = linea.Split('\t');
                    lineActual = linea;
                    procesarlo = new ProcesarArchivoInfo
                    {
                        batch   = int.Parse(words[0]),
                        Formula = words[1].Trim(),
                        Codigo  = words[2].Trim(),
                        Meta    = int.Parse(words[3]),
                        Real    = int.Parse(words[4]),
                        Fecha   = words[5].Trim(),
                        Hora    = words[6].Trim(),
                        Marca   = words[7].Trim(),
                        Rotomix = words[8].Trim()
                    };
                    listaprocesarlo.Add(procesarlo);
                }
                file.Close();
                resultado = ValidacionesLista(listaprocesarlo);
            }
            catch (Exception er)
            {
                file.Close();
                Logger.Error(er);
                resultado.CodigoMensaje = 1;
                resultado.Mensaje       = string.Format("{0} {1}", "Ocurrio un error al procesar el archivo, linea",
                                                        lineActual);
            }
            return(resultado);
        }
        public string ValidarProduccionFormula(ProcesarArchivoInfo renglonArchivo)
        {
            var seguridad = (SeguridadInfo)ObtenerSeguridad();

            renglonArchivo.OrganizacionID = seguridad.Usuario.Organizacion.OrganizacionID;
            string resultado;

            resultado = GetLocalResourceObject("OK").ToString();
            var produccionFormulaBatchBL = new ProduccionFormulaBatchBL();

            ProduccionFormulaBatchInfo produccion = produccionFormulaBatchBL.ValidarProduccionFormulaBatch(renglonArchivo);

            if (produccion != null)
            {
                return(string.Format(GetLocalResourceObject("CodeBehind.ProduccionGenerada").ToString(), renglonArchivo.batch, renglonArchivo.ProductoID, renglonArchivo.Fecha, renglonArchivo.Rotomix));
            }
            return(resultado);
        }
        public string ValidarCodigoProducto(ProcesarArchivoInfo renglonArchivo)
        {
            var resultado = GetLocalResourceObject("OK").ToString();
            var productos = new ProductoPL();
            var prod      = new ProductoInfo();

            prod.ProductoId = int.Parse(renglonArchivo.Codigo);
            prod            = productos.ObtenerPorID(prod);

            if (prod == null)
            {
                resultado = GetLocalResourceObject("producto").ToString();
            }
            else
            {
                renglonArchivo.ProductoID = prod.ProductoId;
            }

            return(resultado);
        }
        public string ValidarColumnaCodigoLista(ProcesarArchivoInfo renglonArchivo)
        {
            string error;

            error = GetLocalResourceObject("OK").ToString();

            if (renglonArchivo.Codigo != GetLocalResourceObject("msjSeis").ToString())
            {
                if (renglonArchivo.Codigo != GetLocalResourceObject("msjNueve").ToString())
                {
                    error = GetLocalResourceObject("ColumnaCodigo").ToString();
                }
            }
            if (renglonArchivo.Codigo == GetLocalResourceObject("msjSeis").ToString())
            {
                error = ValidarContenidosLista(renglonArchivo);
            }

            return(error);
        }
        public string ValidarContenidosLista(ProcesarArchivoInfo r)
        {
            string resultado;

            resultado = GetLocalResourceObject("OK").ToString();

            if (!dic.ContainsKey(r.batch.ToString() + r.Rotomix + r.Fecha))
            {
                dic.Add(r.batch.ToString() + r.Rotomix + r.Fecha, r.Rotomix.ToString());
            }
            else
            {
                //if (!dic.ContainsKey(r.Rotomix.ToString()))
                //{ dic.Add(r.batch.ToString(), r.Rotomix.ToString()); }
                //else
                //{
                resultado = GetLocalResourceObject("batch").ToString();
                //}
            }

            return(resultado);
        }
        public string ValidarCodigoRotomix(ProcesarArchivoInfo renglonArchivo)
        {
            var resultado = GetLocalResourceObject("OK").ToString();
            var seguridad = HttpContext.Current.Session["Seguridad"] as SeguridadInfo;

            if (seguridad == null)
            {
                seguridad = new SeguridadInfo();
            }
            var         rotomixPl = new RotomixPL();
            RotoMixInfo rotoMix   = rotomixPl.ObtenerRotoMixXOrganizacionYDescripcion(seguridad.Usuario.Organizacion.OrganizacionID, renglonArchivo.Rotomix);

            if (rotoMix == null)
            {
                resultado = GetLocalResourceObject("rotomix").ToString();
            }
            else
            {
                renglonArchivo.RotoMixID = rotoMix.RotoMixId;
            }
            return(resultado);
        }
Exemple #10
0
        /// <summary>
        /// Valida que no exista la produccion de formula
        /// </summary>
        public ProduccionFormulaBatchInfo ValidarProduccionFormulaBatch(ProcesarArchivoInfo produccionFormula)
        {
            ProduccionFormulaBatchInfo resultado = null;

            try
            {
                Logger.Info();
                var produccionFormulaBatchDAL = new ProduccionFormulaBatchDAL();
                resultado = produccionFormulaBatchDAL.ValidarProduccionFormulaBatch(produccionFormula);
            }
            catch (ExcepcionDesconocida ex)
            {
                Logger.Error(ex);
                throw;
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
                throw;
            }
            return(resultado);
        }
        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);
        }
Exemple #12
0
 /// <summary>
 /// OBtiene los parametros para el Sp ProduccionFormulaBatch_ValidarBatch
 /// </summary>
 internal static Dictionary <string, object> ObtenerParametrosValidarProduccionFormulaBatch(ProcesarArchivoInfo produccionFormula)
 {
     try
     {
         var parametros =
             new Dictionary <string, object>
         {
             { "@OrganizacionID", produccionFormula.OrganizacionID },
             { "@FormulaID", produccionFormula.FormulaID },
             { "@RotomixID", produccionFormula.RotoMixID },
             { "@Batch", produccionFormula.batch },
             { "@Fecha", produccionFormula.FechaProduccion },
             { "@ProductoID", produccionFormula.ProductoID },
         };
         return(parametros);
     }
     catch (Exception ex)
     {
         Logger.Error(ex);
         throw new ExcepcionDesconocida(MethodBase.GetCurrentMethod(), ex);
     }
 }