protected void Page_Load(object sender, EventArgs e) { if (!Page.IsCallback) { sErrores = ""; Master.nBotonera = 43; Master.bFuncionesLocales = true; Master.TituloPagina = "Importación de facturas de SAP"; if (!Page.IsPostBack) { try { //this.txtAnno.Text = DateTime.Now.Year.ToString(); //Obtengo el nº de registros de la tabla T445_INTERFACTSAP this.hdnNumfacts.Value = INTERFACTSAP.numFacturas(null).ToString(); } catch (Exception ex) { Master.sErrores = Errores.mostrarError("Error al cargar el número de filas en INTERFACTSAP.", ex); } } try{ cldFilasIFS.InnerText = int.Parse(this.hdnNumfacts.Value).ToString("#,##0"); } catch (Exception ex) { Master.sErrores = Errores.mostrarError("Error al recuperar el número de filas en INTERFACTSAP.", ex); } HttpPostedFile selectedFile = this.uplTheFile.PostedFile; if (selectedFile != null) { Validar(selectedFile); } string cbRespuesta = Page.ClientScript.GetCallbackEventReference(this, "arg", "RespuestaCallBack", "context", false); string cbLlamada = "function RealizarCallBack(arg, context)" + "{" + cbRespuesta + ";" + "}"; Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "RealizarCallBack", cbLlamada, true); } }
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"); }
private string Procesar(string sAnomes, string sCadena) {//En sCadena tenemos los nº de linea de facturas erróneas string sResul = "", lin = "", sLin = ""; int iNumLin = 1; byte[] linea = new byte[103]; try { #region Obtenión de dataset con empresas, proyectos y clientes y creación de HASTABLES DataSet ds = INTERFACTSAP.EmpresasProyectos(); 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 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 { 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 #region Abro transaccion 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.FicheroFacturasSAP); if (oFic.t447_fichero.Length > 0) { //Borrar contenido de T445_INTERFACTSAP INTERFACTSAP.Borrar(tr); #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); #endregion string[] aArgs = Regex.Split(lin, "\r\n"); FactSAP oFact = null; //int nInserts = 0; //Recorrer lista de facturas e insertar en T445_INTERFACTSAP las que cuyo nº de línea no está en la lista de errores for (int iLinea = 0; iLinea < aArgs.Length - 1; iLinea++) { if (aArgs[iLinea] != "") { sLin = aArgs[iLinea]; iNumLin = iLinea + 1; if (sCadena.IndexOf("##" + iNumLin.ToString() + "##") == -1) { //oFact = FactSAP.getFactura(sLin); oFact = validarFactura(FactSAP.getFactura(sLin)); if (!validarCampos(oFact, sAnomes, false)) { continue; } //, oFact.ute INTERFACTSAP.Insert(tr, oFact.iCodEmpresa, oFact.iCodCliente, oFact.t305_idproyectosubnodo, oFact.grupo, oFact.serie.Replace(".", ""), oFact.iNumero, oFact.dtFecFact, oFact.dImpFfact, oFact.moneda, oFact.descri, oFact.refCliente); //nInserts++; } } } } sResul = "OK@#@" + INTERFACTSAP.numFacturas(tr).ToString("#,##0"); Conexion.CommitTransaccion(tr); } catch (Exception ex) { //Errores.mostrarError("Error al tramitar el fichero", ex); sResul = "Error@#@" + Errores.mostrarError("Error al tramitar el fichero en la línea " + iNumLin.ToString() + " : " + sLin, ex); } finally { Conexion.CerrarTransaccion(tr); } return(sResul); }
protected string procesar(string sAnomesProceso, string sCadena) { string sResul = "OK@#@"; string sEstadoMes = ""; int iNumLin = 1, iAnomes; int it325_idsegmesproy, iClaseEco; #region abrir conexión y transacción try { oConn = Conexion.Abrir(); tr = Conexion.AbrirTransaccion(oConn); } catch (Exception ex) { if (oConn.State == ConnectionState.Open) { Conexion.Cerrar(oConn); } return("Error@#@" + Errores.mostrarError("Error al abrir la conexión", ex)); } #endregion try { SqlDataReader dr = INTERFACTSAP.Catalogo(); iAnomes = int.Parse(sAnomesProceso); ArrayList slProyPP = new ArrayList(); while (dr.Read()) { if (sCadena.IndexOf("##" + iNumLin.ToString() + "##") == -1) { it325_idsegmesproy = SEGMESPROYECTOSUBNODO.ExisteSegMesProy(tr, (int)dr["t305_idproyectosubnodo"], iAnomes); if (it325_idsegmesproy == 0) { sEstadoMes = SEGMESPROYECTOSUBNODO.EstadoMesACrear(tr, (int)dr["t305_idproyectosubnodo"], iAnomes); it325_idsegmesproy = SEGMESPROYECTOSUBNODO.Insert(tr, (int)dr["t305_idproyectosubnodo"], iAnomes, sEstadoMes, 0, 0, false, 0, 0); } if ((bool)dr["t445_grupo"]) { //if ((bool)dr["t445_ute"]) iClaseEco = Constantes.IngExtServProf; //else iClaseEco = Constantes.IngExtServProfGrupo; iClaseEco = Constantes.IngExtServProfGrupo; } else { iClaseEco = Constantes.IngExtServProf; } DATOECO.InsertFactura(tr, it325_idsegmesproy, iClaseEco, dr["t445_descri"].ToString(), decimal.Parse(dr["t445_imp_fact"].ToString()), null, null, DateTime.Parse(dr["t445_fec_fact"].ToString()), dr["t445_serie"].ToString(), int.Parse(dr["t445_numero"].ToString()), int.Parse(dr["t313_idempresa"].ToString()), int.Parse(dr["t302_idcliente"].ToString()), Constantes.FicheroFacturasSAP, dr["t445_refcliente"].ToString()); INTERFACTSAP.Delete(tr, (int)dr["t445_id"]); if (dr["t301_estado"].ToString() == "P") { ponerProyPP(int.Parse(dr["t301_idproyecto"].ToString()).ToString("#,###"), slProyPP); } } iNumLin++; } dr.Close(); dr.Dispose(); Conexion.CommitTransaccion(tr); //sResul = "OK@#@"; //sResul = ObtenerTiposAsunto("3", "0"); //genero cadena con los proyectos en estado Presupuestado foreach (string sProy in slProyPP) { sResul += sProy + "##"; } sResul += "@#@" + cabErrores() + "</table>@#@" + INTERFACTSAP.numFacturas(null).ToString("#,##0"); } catch (Exception ex) { Conexion.CerrarTransaccion(tr); sResul = "Error@#@" + Errores.mostrarError("Error al procesar", ex); } finally { Conexion.Cerrar(oConn); } return(sResul); }