private FactSAP validarFactura(FactSAP oFact) { oEmpFactSAP = (EmpFactSAP)htEmpEnlaceSAP[oFact.cod_empresa]; //cod_empresa --> código externo if (oEmpFactSAP != null) { oFact.iCodEmpresa = oEmpFactSAP.t313_idempresa; //oFact.ute = oEmpFactSAP.t313_ute; } oCliFactSAP = (CliFactSAP)htCliEnlaceSAP[oFact.cod_cliente]; if (oCliFactSAP != null) { oFact.grupo = oCliFactSAP.t302_interno; oFact.iCodCliente = oCliFactSAP.t302_idcliente; } oProyFactSAP = (ProyFactSAP)htProyEnlaceSAP[int.Parse(oFact.num_proyecto)]; if (oProyFactSAP != null) { oFact.iNumProyecto = oProyFactSAP.t301_idproyecto; oFact.t305_idproyectosubnodo = oProyFactSAP.t305_idproyectosubnodo; } if (Utilidades.isNumeric(oFact.numero)) { oFact.iNumero = System.Convert.ToInt32(oFact.numero); } else { oFact.iNumero = -1; } if (Utilidades.isNumeric(oFact.num_proyecto)) { oFact.iNumProyecto = System.Convert.ToInt32(oFact.num_proyecto); } if (Utilidades.isNumeric(oFact.imp_fact)) { oFact.dImpFfact = System.Convert.ToDecimal(oFact.imp_fact); } if (Utilidades.isNumeric(oFact.fec_fact) && oFact.fec_fact.Length == 8) { sAux = oFact.fec_fact.Substring(0, 2) + "/" + oFact.fec_fact.Substring(2, 2) + "/" + oFact.fec_fact.Substring(4, 4); if (Utilidades.isDate(sAux)) { oFact.dtFecFact = System.Convert.ToDateTime(sAux); } } //if (oFact.serie.Length == 5) //{ // oFact.serie = oFact.serie.Substring(0, 1) + "." + oFact.serie.Substring(1, 2) + "." + oFact.serie.Substring(3, 2); //} return(oFact); }
private void Validar(HttpPostedFile selectedFile) { //StringBuilder sbF = new StringBuilder(); try { #region Obtenión de dataset con empresas, proyectos y clientes y creación de HASTABLES DataSet ds = INTERFACTSAP.EmpresasProyectos(); oEmpFactSAP = null; oProyFactSAP = null; oCliFactSAP = null; htEmpEnlaceSAP = new Hashtable(); foreach (DataRow oEmpresa in ds.Tables[0].Rows)//Recorro tabla de empresas { try { htEmpEnlaceSAP.Add(oEmpresa["t302_codigoexterno"].ToString(), new EmpFactSAP((int)oEmpresa["t313_idempresa"], oEmpresa["t313_denominacion"].ToString(), oEmpresa["t302_codigoexterno"].ToString() //,(bool)oEmpresa["t313_ute"] ) ); } catch (Exception ex) { sErrores = Errores.mostrarError("Error al existir en la tabla 'T313_EMPRESA' diferentes empresas con el mismo código externo ", ex); }; } //oEmpFactSAP = (EmpFactSAP)htEmpEnlaceSAP["IB01"]; htProyEnlaceSAP = new Hashtable(); foreach (DataRow oProy in ds.Tables[1].Rows)//Recorro tabla de proyectos { htProyEnlaceSAP.Add((int)oProy["t301_idproyecto"], new ProyFactSAP((int)oProy["t301_idproyecto"], (int)oProy["t305_idproyectosubnodo"])); } //oProyFactSAP = (ProyFactSAP)htProyEnlaceSAP[20801]; htCliEnlaceSAP = new Hashtable(); foreach (DataRow oCliente in ds.Tables[2].Rows)//Recorro tabla de clientes { try { htCliEnlaceSAP.Add(oCliente["t302_codigoexterno"], new CliFactSAP((int)oCliente["t302_idcliente"], oCliente["t302_codigoexterno"].ToString(), ((int)oCliente["Interno"] == 1)? true : false) ); } catch (Exception ex) { sErrores = Errores.mostrarError("Error al existir en la tabla 'T302_CLIENTE' diferentes clientes con el mismo código externo ", ex); }; } //oCliFactSAP = (CliFactSAP)htCliEnlaceSAP[45946]; ds.Dispose(); #endregion 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.FicheroFacturasSAP, "Fichero origen de INTERFACTSAP", 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); FactSAP oFact = null; while (r.Peek() > -1) { iCont++; //if (iCont==909) //{ // string sAux = "KK"; //} //lin = r.ReadLine(); //oFact = FactSAP.getFactura(lin); oFact = validarFactura(FactSAP.getFactura(r.ReadLine())); if (!validarCampos(oFact, this.txtAnioMes.Text, true)) { continue; } iNumOk++; } } this.divB.InnerHtml = cabErrores() + sbE + "</table>"; cldFacProc.InnerText = iCont.ToString("#,##0"); cldFacOK.InnerText = iNumOk.ToString("#,##0"); cldFacErr.InnerText = (iCont - iNumOk).ToString("#,##0"); this.hdnIniciado.Value = "T"; } catch (Exception ex) { sErrores = Errores.mostrarError("El fichero no tiene el formato requerido para el proceso.\nRevisa la línea " + iCont.ToString(), ex); } }
private void CargarFacturas() { StringBuilder sb = new StringBuilder(); sb.Append("<table id='tblErrores' style='WIDTH: 680px;'>"); sb.Append("<colgroup><col style='width:60px' /><col style='width:40px' /><col style='width:60px;' /><col style='width:520px;' /></colgroup>"); #region Obtenión de dataset con empresas, proyectos y clientes y creación de HASTABLES DataSet ds = INTERFACTSAP.EmpresasProyectos(); oEmpFactSAP = null; oProyFactSAP = null; oCliFactSAP = null; htEmpEnlaceSAP = new Hashtable(); foreach (DataRow oEmpresa in ds.Tables[0].Rows)//Recorro tabla de empresas { htEmpEnlaceSAP.Add(oEmpresa["t302_codigoexterno"].ToString(), new EmpFactSAP((int)oEmpresa["t313_idempresa"], oEmpresa["t313_denominacion"].ToString(), oEmpresa["t302_codigoexterno"].ToString() //,(bool)oEmpresa["t313_ute"] ) ); } //oEmpFactSAP = (EmpFactSAP)htEmpEnlaceSAP["IB01"]; htProyEnlaceSAP = new Hashtable(); foreach (DataRow oProy in ds.Tables[1].Rows)//Recorro tabla de empresas { htProyEnlaceSAP.Add((int)oProy["t301_idproyecto"], new ProyFactSAP((int)oProy["t301_idproyecto"], (int)oProy["t305_idproyectosubnodo"]) ); } //oProyFactSAP = (ProyFactSAP)htProyEnlaceSAP[20801]; htCliEnlaceSAP = new Hashtable(); foreach (DataRow oCliente in ds.Tables[2].Rows)//Recorro tabla de clientes { htCliEnlaceSAP.Add(oCliente["t302_codigoexterno"], new CliFactSAP((int)oCliente["t302_idcliente"], oCliente["t302_codigoexterno"].ToString(), ((int)oCliente["Interno"] == 1) ? true : false) ); } //oCliFactSAP = (CliFactSAP)htCliEnlaceSAP[45946]; ds.Dispose(); #endregion SqlDataReader dr = INTERFACTSAP.Catalogo(); while (dr.Read()) { if (iCont == 0) { sAnomes = Fechas.FechaAAnnomes((DateTime)dr["t445_fec_fact"]).ToString(); cldFecha.InnerText = Fechas.AnnomesAFechaDescLarga(int.Parse(sAnomes)); } iCont++; if (validarCampos(dr, sAnomes, true)) { iNumOk++; } if (sFechaFacIncorrecta == "true") { sbE.Length = 0; iCont = 0; iNumOk = 0; cldFecha.InnerText = "Fecha indefinida"; break; } } dr.Close(); dr.Dispose(); sb.Append("</table>"); this.divB.InnerHtml = cabErrores() + sbE + "</table>"; cldTotalFac.InnerText = INTERFACTSAP.numFacturas(null).ToString("#,##0"); cldFacOK.InnerText = iNumOk.ToString("#,##0"); cldFacErr.InnerText = (iCont - iNumOk).ToString("#,##0"); }