private string ponerFilaError(DesdeFichero oDesdeFichero, string sMens) { try { sb.Length = 0; sb.Append("<tr style='cursor:default;height:16px' id=" + iCont.ToString() + "><td>"); sb.Append(oDesdeFichero.idnodo); sb.Append("</td><td>"); sb.Append(oDesdeFichero.idproyecto); sb.Append("</td><td>"); sb.Append(oDesdeFichero.annomes); sb.Append("</td><td>"); sb.Append(oDesdeFichero.idclaseeco); sb.Append("</td><td><nobr style='cursor:default; width:190px;' title='" + oDesdeFichero.t376_motivo + "' class='NBR'>"); sb.Append(oDesdeFichero.t376_motivo); sb.Append("</nobr></td><td>"); sb.Append(oDesdeFichero.codigoexterno); sb.Append("</td><td>"); sb.Append(oDesdeFichero.idnododestino); sb.Append("</td><td>"); sb.Append(oDesdeFichero.importe); sb.Append("</td><td>"); sb.Append(oDesdeFichero.t422_idmoneda); sb.Append("</td><td><nobr style='cursor:default; width:2750px;' title='" + sMens + "' class='NBR'>"); sb.Append(sMens); sb.Append("</nobr></td></tr>"); } catch (Exception ex) { sb.Append("Error@#@" + Errores.mostrarError("Error al ponerFilaError", ex)); } return(sb.ToString()); }
private void Validar(HttpPostedFile selectedFile) { //StringBuilder sbF = new StringBuilder(); try { CargarArrayHT(); iCont = 0; iNumOk = 0; if (selectedFile.ContentLength != 0) { string sFichero = selectedFile.FileName; //Grabo el archivo en base de datos byte[] ArchivoEnBinario = new Byte[0]; ArchivoEnBinario = new Byte[selectedFile.ContentLength]; //Crear el array de bytes con la longitud del archivo selectedFile.InputStream.Read(ArchivoEnBinario, 0, selectedFile.ContentLength); //Forzar al control del archivo a cargar los datos en el array int iRows = FICHEROSMANIOBRA.Update(null, Constantes.FicheroDatos, "Fichero origen de CARGA DE DATOS", ArchivoEnBinario); if (iRows == 0) { sErrores = "No existe entrada asociada a este proceso en el fichero de Maniobra"; return; } selectedFile.InputStream.Position = 0; StreamReader r = new StreamReader(selectedFile.InputStream, System.Text.Encoding.UTF7); //StreamReader r = new StreamReader(selectedFile.InputStream, System.Text.Encoding.Unicode); DesdeFichero oDesdeFichero = null; String strLinea = null; while ((strLinea = r.ReadLine()) != "") { if (strLinea == null) { break; } iCont++; oDesdeFichero = validarLinea(DesdeFichero.getFila(strLinea)); if (!validarCampos(oDesdeFichero, true)) { continue; } iNumOk++; } } this.divB.InnerHtml = cabErrores() + sbE + "</table>"; cldLinProc.InnerText = iCont.ToString("#,##0"); cldLinOK.InnerText = iNumOk.ToString("#,##0"); cldLinErr.InnerText = (iCont - iNumOk).ToString("#,##0"); this.hdnIniciado.Value = "T"; } catch (Exception) { sErrores = "El fichero no tiene el formato requerido para el proceso"; } }
private bool validarCampos(DesdeFichero oDesdeFichero, bool bEscribir) { if ((ProyectoSubNodo)htProyectoSubNodo[oDesdeFichero.idproyecto + "/" + oDesdeFichero.idnodo] == null) { //if (bEscribir) sbE.Append(ponerFilaError(oDesdeFichero, "Proyecto no existente (" + oDesdeFichero.t305_idproyectosubnodo + "/" + oDesdeFichero.idnodo + ")")); if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Proyecto no existente (" + oDesdeFichero.idproyecto + "/" + oDesdeFichero.idnodo + ")")); } return(false); } if ((oDesdeFichero.codigoexterno != "") && (oDesdeFichero.t329_necesidad == "P") && ((Proveedor)htProveedor[oDesdeFichero.codigoexterno] == null)) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "El código de proveedor no existe (" + oDesdeFichero.codigoexterno + ")")); } return(false); } if ((oDesdeFichero.idnododestino != "") && (oDesdeFichero.t329_necesidad == "N") && ((NodoDestino)htNodoDestino[(int.Parse(oDesdeFichero.idnododestino)).ToString()] == null)) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "El código de nodo destino no existe (" + oDesdeFichero.idnododestino + ")")); } return(false); } // if ((oDesdeFichero.t422_idmoneda != "") && ((Moneda)htMoneda[oDesdeFichero.t422_idmoneda] == null)) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "El código de moneda no existe (" + oDesdeFichero.t422_idmoneda + ")")); } return(false); } // if (oDesdeFichero.t329_necesidad == "P" && oDesdeFichero.codigoexterno == "") { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "La clase económica necesita proveedor y no se ha especificado")); } return(false); } if (oDesdeFichero.t329_necesidad == "N" && oDesdeFichero.idnododestino == "") { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "La clase económica especificada exige nodo y no se ha especificado")); } return(false); } if (oDesdeFichero.t329_necesidad != "P" && oDesdeFichero.t329_necesidad != "N" && oDesdeFichero.idProveedNodoDestino != "") { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "La clase económica debe ser de proveedor o de nodo pues se ha especificado un código")); } return(false); } if (oDesdeFichero.t303_idnodo == -1) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Número de nodo no numérico (" + oDesdeFichero.idnodo + ")")); } return(false); } if (oDesdeFichero.t301_idproyecto == -1) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Número de proyecto no numérico (" + oDesdeFichero.idproyecto + ")")); } return(false); } if (oDesdeFichero.t329_idclaseeco == 999999) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "La clase económica para este proceso no puede ser negativa (" + oDesdeFichero.idclaseeco + ")")); } return(false); } if (oDesdeFichero.t329_idclaseeco == 888888) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "La clase económica (" + oDesdeFichero.idclaseeco + ") para este proyecto/nodo (Contratante) no tiene visibilidad en el carrusel.")); } return(false); } if (oDesdeFichero.t329_idclaseeco == 777777) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "La clase económica (" + oDesdeFichero.idclaseeco + ") para este proyecto/nodo (Replicado sin gestión) no tiene visibilidad en el carrusel.")); } return(false); } if (oDesdeFichero.t329_idclaseeco == 666666) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "La clase económica (" + oDesdeFichero.idclaseeco + ") para este proyecto/nodo (Replicado con gestión propia) no tiene visibilidad en el carrusel.")); } return(false); } if (oDesdeFichero.t329_idclaseeco == -1) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Número de clase económica no numérico (" + oDesdeFichero.idclaseeco + ")")); } return(false); } if (oDesdeFichero.t376_importe == -999999999) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Importe de clase económica no numérico (" + oDesdeFichero.importe + ")")); } return(false); } if (oDesdeFichero.annomes.Length != 6) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Fecha no valida para el formato AAAAMM (" + oDesdeFichero.annomes + ")")); } return(false); } string sAno = oDesdeFichero.annomes.ToString().Substring(0, 4); if (!Utilidades.isNumeric(sAno)) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Año de la fecha no es numérico (" + sAno + ")")); } return(false); } if (Utilidades.isNumeric(sAno)) { if (System.Convert.ToInt32(sAno) < 1950 || System.Convert.ToInt32(sAno) > 2099) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Año de la fecha incorrecto (" + sAno + ")")); } return(false); } } if (!Utilidades.isNumeric(oDesdeFichero.annomes.Substring(4, 2))) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Mes de la fecha no es numérico (" + oDesdeFichero.annomes.Substring(4, 2) + ")")); } return(false); } string mes = oDesdeFichero.annomes.ToString().Substring(4, 2); if (Utilidades.isNumeric(mes)) { if (System.Convert.ToInt32(mes) < 1 || System.Convert.ToInt32(mes) > 12) { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Mes de la fecha incorrecto (" + oDesdeFichero.annomes.Substring(4, 2) + ")")); } return(false); } } if (oDesdeFichero.t303_idnododestino == -1 && oDesdeFichero.t329_necesidad == "N") { if (bEscribir) { sbE.Append(ponerFilaError(oDesdeFichero, "Número de nodo destino no numérico (" + oDesdeFichero.idnododestino + ")")); } return(false); } return(true); }
private DesdeFichero validarLinea(DesdeFichero oDesdeFichero) { oClaseEconomica = (ClaseEconomica)htClaseEconomica[(int.Parse(oDesdeFichero.idclaseeco)).ToString()]; if (oClaseEconomica != null) { oDesdeFichero.t329_necesidad = oClaseEconomica.t329_necesidad; oDesdeFichero.t329_visiblecarruselC = oClaseEconomica.t329_visiblecarruselC; oDesdeFichero.t329_visiblecarruselJ = oClaseEconomica.t329_visiblecarruselJ; oDesdeFichero.t329_visiblecarruselP = oClaseEconomica.t329_visiblecarruselP; } if (oDesdeFichero.t329_necesidad == "P") { oDesdeFichero.codigoexterno = oDesdeFichero.idProveedNodoDestino; oProveedor = (Proveedor)htProveedor[oDesdeFichero.codigoexterno]; // cod externo Proveedor if (oProveedor != null) { oDesdeFichero.t315_idproveedor = oProveedor.t315_idproveedor; } } else if (oDesdeFichero.t329_necesidad == "N") { if (Utilidades.isNumeric(oDesdeFichero.idProveedNodoDestino)) { oDesdeFichero.idnododestino = oDesdeFichero.idProveedNodoDestino; oNodoDestino = (NodoDestino)htNodoDestino[(int.Parse(oDesdeFichero.idnododestino)).ToString()]; // cod Nodo if (oNodoDestino != null) { oDesdeFichero.t303_idnododestino = int.Parse(oDesdeFichero.idnododestino); } } else { oDesdeFichero.t303_idnododestino = -1; } } oProyectoSubNodo = (ProyectoSubNodo)htProyectoSubNodo[oDesdeFichero.idproyecto + "/" + oDesdeFichero.idnodo]; if (oProyectoSubNodo != null) { oDesdeFichero.t301_idproyecto = oProyectoSubNodo.t301_idproyecto; oDesdeFichero.t305_idproyectosubnodo = oProyectoSubNodo.t305_idproyectosubnodo; oDesdeFichero.t303_idnodo = oProyectoSubNodo.t303_idnodo; oDesdeFichero.t305_cualidad = oProyectoSubNodo.t305_cualidad; } if (Utilidades.isNumeric(oDesdeFichero.idnodo)) { oDesdeFichero.t303_idnodo = System.Convert.ToInt32(oDesdeFichero.idnodo); } else { oDesdeFichero.t303_idnodo = -1; } if (Utilidades.isNumeric(oDesdeFichero.idproyecto)) { oDesdeFichero.t301_idproyecto = System.Convert.ToInt32(oDesdeFichero.idproyecto); } else { oDesdeFichero.t301_idproyecto = -1; } if (Utilidades.isNumeric(oDesdeFichero.annomes)) { oDesdeFichero.t325_annomes = System.Convert.ToInt32(oDesdeFichero.annomes); } else { oDesdeFichero.t325_annomes = -1; } if (Utilidades.isNumeric(oDesdeFichero.idclaseeco)) { oDesdeFichero.t329_idclaseeco = System.Convert.ToInt32(oDesdeFichero.idclaseeco); if (oDesdeFichero.t329_idclaseeco < 0) { oDesdeFichero.t329_idclaseeco = 999999; } } else { oDesdeFichero.t329_idclaseeco = -1; } if (oDesdeFichero.t305_cualidad == "C" && oDesdeFichero.t329_visiblecarruselC == false) { oDesdeFichero.t329_idclaseeco = 888888; } if (oDesdeFichero.t305_cualidad == "J" && oDesdeFichero.t329_visiblecarruselJ == false) { oDesdeFichero.t329_idclaseeco = 777777; } if (oDesdeFichero.t305_cualidad == "P" && oDesdeFichero.t329_visiblecarruselP == false) { oDesdeFichero.t329_idclaseeco = 666666; } if (Utilidades.isNumeric(oDesdeFichero.importe)) { oDesdeFichero.t376_importe = System.Convert.ToDecimal(oDesdeFichero.importe); } else { oDesdeFichero.t376_importe = -999999999; } //if (Utilidades.isNumeric(oDesdeFichero.idnododestino)) // oDesdeFichero.t303_idnododestino = System.Convert.ToInt32(oDesdeFichero.idnododestino); //else // oDesdeFichero.t303_idnododestino = -1; return(oDesdeFichero); }
private string Procesar() { string sResul = "", lin = "", sLin = ""; int iNumLin = 1; try { CargarArrayHT(); #region Apertura de conexión y transacción try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccion(oConn); } catch (Exception ex) { if (oConn.State == ConnectionState.Open) { Conexion.Cerrar(oConn); } sResul = "Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex); return(sResul); } #endregion //Leo el fichero de base de datos FICHEROSMANIOBRA oFic = FICHEROSMANIOBRA.Select(tr, Constantes.FicheroDatos); if (oFic.t447_fichero.Length > 0) { #region Leer fichero de BBDD MemoryStream mstr = new MemoryStream(oFic.t447_fichero); mstr.Seek(0, SeekOrigin.Begin); int count = 0; byte[] byteArray = new byte[mstr.Length]; while (count < mstr.Length) { byteArray[count++] = System.Convert.ToByte(mstr.ReadByte()); } lin = FromASCIIByteArray(byteArray); //lin = FromUnicodeByteArray(byteArray); #endregion string[] aArgs = Regex.Split(lin, "\r\n"); DesdeFichero oDesdeFichero = null; string sEstadoMes = ""; int nSegMesProy = 0; for (int iLinea = 0; iLinea < aArgs.Length - 1; iLinea++) { if (aArgs[iLinea] != "") { sLin = aArgs[iLinea]; iNumLin = iLinea + 1; oDesdeFichero = validarLinea(DesdeFichero.getFila(sLin)); int?iProveedor = null; if (oDesdeFichero.t315_idproveedor != 0) { iProveedor = oDesdeFichero.t315_idproveedor; } int?iNodoDestino = null; if (oDesdeFichero.t303_idnododestino != 0) { iNodoDestino = oDesdeFichero.t303_idnododestino; } nSegMesProy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, oDesdeFichero.t305_idproyectosubnodo, (int)oDesdeFichero.t325_annomes); if (nSegMesProy == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, oDesdeFichero.t305_idproyectosubnodo, (int)oDesdeFichero.t325_annomes); nSegMesProy = SEGMESPROYECTOSUBNODO.Insert(tr, oDesdeFichero.t305_idproyectosubnodo, (int)oDesdeFichero.t325_annomes, sEstadoMes, 0, 0, false, 0, 0); } DATOECO.Insert(tr, nSegMesProy, oDesdeFichero.t329_idclaseeco, oDesdeFichero.t376_motivo, (decimal)oDesdeFichero.t376_importe, (oDesdeFichero.t329_necesidad == "N") ? iNodoDestino : null, (oDesdeFichero.t329_necesidad == "P") ? iProveedor : null, Constantes.FicheroDatos, oDesdeFichero.t422_idmoneda); } } } sResul = "OK@#@"; Conexion.CommitTransaccion(tr); } catch (Exception ex) { //Errores.mostrarError("Error al tramitar el fichero", ex); sResul = "Error@#@" + Errores.mostrarError("Error al procesar el fichero en la línea " + iNumLin.ToString() + " : " + sLin, ex); Conexion.CerrarTransaccion(tr); } finally { Conexion.Cerrar(oConn); } return(sResul); }