/// <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); }
/// <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); }
/// <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); } }