public static void EnviarArchivos(string pathXml, string ContraseñaCertificado, string RutaXML1, string NombreXML, string LinkSRIrecepcion, string LinkSRIautorizacion, string nombreEmpresa, string EmailEmpresa, string passEmail, ref int contadorRecibida, ref int contadorAutorizado, ref int contadorNoautorizados, ref int contadorDevuelta) { try { Consultas Objconsul = new Consultas(); int estadoautorizacion = 0; string Recibida = "D", AUT = "NO"; //Firmar Documento Firma.Firmalo(pathXml, ContraseñaCertificado, RutaXML1 + @"\Generados\" + NombreXML + ".xml", RutaXML1 + @"\Firmados\" + NombreXML + ".xml", RutaXML1); SRIRecepcionComprobante sriRecepcion = new SRIRecepcionComprobante(); string respuestaRecepcion = sriRecepcion.RecepcionArchivos(RutaXML1 + @"\Firmados" + @"\" + NombreXML + ".xml", LinkSRIrecepcion, NombreXML, RutaXML1); //Fin RecepcionSRI //RECIBIDA if (respuestaRecepcion == "RECIBIDA") { contadorRecibida++; Recibida = "R"; SRIAutorizacionComprobante sriAutori = new SRIAutorizacionComprobante(LinkSRIautorizacion, nombreEmpresa, EmailEmpresa, passEmail); string estado = sriAutori.AutorizacionArchivos(NombreXML, RutaXML1); if (estado != "") { if (estado == "AUTORIZADO") { contadorAutorizado++; estadoautorizacion = 1; AUT = "SI"; } else { contadorNoautorizados++; estadoautorizacion = 0; AUT = "NO"; } Objconsul.EjecutarSQL("UPDATE [dbo].[TbDocumentosGeneradosFact] SET [EstadoAutorizacion] = '" + estadoautorizacion + "',[RecepcionSRI] ='" + Recibida + "',[AutorizadoSRI]='" + AUT + "' WHERE NombreXML = '" + NombreXML + "'"); } } else { contadorDevuelta++; Recibida = "D"; estadoautorizacion = 0; AUT = "NO"; Objconsul.EjecutarSQL("UPDATE [dbo].[TbDocumentosGeneradosFact] SET [EstadoAutorizacion] = '" + estadoautorizacion + "',[RecepcionSRI] ='" + Recibida + "',[AutorizadoSRI]='" + AUT + "' WHERE NombreXML = '" + NombreXML + "'"); } } catch (Exception ex) { //throw; } }
public string RecepcionArchivos(string pathDocumento, string urlDocumeto, string nombreArchivo, string PathServer) { //string PathServer = @"C:\Users\Public\Documents\ArchivosXml"; _URLWS = urlDocumeto; byte[] bytes = File.ReadAllBytes(pathDocumento); object RESULTADO = ""; //convertir el archivo en formato 64 bytes RESULTADO = Convert.ToBase64String(bytes); HttpWebRequest request = CreateWebRequest(); XmlDocument soapEnvelopeXml = new XmlDocument(); soapEnvelopeXml.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?> <soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:ec=""http://ec.gob.sri.ws.recepcion""> <soapenv:Header/> <soapenv:Body> <ec:validarComprobante> <!--Optional:--> <xml>" + RESULTADO + "</xml>" + "</ec:validarComprobante>" + "</soapenv:Body>" + "</soapenv:Envelope>"); string soapResult = ""; try { using (Stream stream = request.GetRequestStream()) { soapEnvelopeXml.Save(stream); } try { using (WebResponse response = request.GetResponse()) { using (StreamReader rd = new StreamReader(response.GetResponseStream())) { _xmlResutado = rd.ReadToEnd(); } } } catch (Exception ex) { soapResult = "Error en enviar al SRI" + ex.Message; RecepcionArchivos(pathDocumento, urlDocumeto, nombreArchivo, PathServer); } } catch (Exception x) { soapResult = "Error en enviar al SRI" + x.Message; } string estado = ""; try { XmlDocument docxml = new XmlDocument(); docxml.Load(pathDocumento); XmlDocument docxml1 = new XmlDocument(); docxml1.LoadXml(_xmlResutado); estado = docxml1.GetElementsByTagName("estado")[0].InnerText; //Preguntar sobre el directorio if (estado == "RECIBIDA") { if (!Directory.Exists(PathServer + @"\Recibidos\")) { Directory.CreateDirectory(PathServer + @"\Recibidos\"); } docxml.Save(@PathServer + @"\Recibidos\" + nombreArchivo + ".xml"); } else { //string CodigoError = docxml1.GetElementsByTagName("identificador")[0].InnerText; // string mensaje = docxml1.GetElementsByTagName("mensaje")[0].InnerText + "-" + docxml1.GetElementsByTagName("informacionAdicional")[0].InnerText; if (!Directory.Exists(PathServer + @"\Devueltos\")) { Directory.CreateDirectory(PathServer + @"\Devueltos\"); } docxml1.Save(PathServer + @"\Devueltos\" + nombreArchivo + ".xml"); string rutaNAT = @PathServer + @"\Devueltos\"; string fechafinal = Funcion.reemplazarcaracterFecha(DateTime.Now.Date.ToShortDateString()); String CODIERROR = docxml1.GetElementsByTagName("identificador")[0].InnerText; string mensajeerror = docxml1.GetElementsByTagName("mensaje")[1].InnerText; objConsultas.EjecutarSQL("INSERT INTO [dbo].[TbErroresDocEnviados]([NombreXML],[Ruta],[FechaEmision] ,[EstadoError],[CodigoError],[MensajeError])" + "VALUES ('" + nombreArchivo + "','" + rutaNAT + "','" + fechafinal + "','" + 1 + "','" + CODIERROR + "','" + mensajeerror + "')"); //MessageBox.Show("Estado: " + estado + "\nClave Acceso: " + nombreArchivo + "\nError: " + mensaje); } if (!Directory.Exists(PathServer + @"\Enviados\")) { Directory.CreateDirectory(PathServer + @"\Enviados\"); } docxml.Save(@PathServer + @"\Enviados\" + @"\" + nombreArchivo + ".xml"); } catch (Exception) { //throw; } return(estado); }
public string AutorizacionArchivos(string sClaveAcceso, string PathServer) { string sResult = ""; StringBuilder sSoap = new StringBuilder(); XmlDocument oXmlDoc = new XmlDocument(); HttpWebRequest oHttpRequest = null; StreamReader oReader = null; string estado = ""; sSoap.Append("<soapenv:Envelope xmlns:soapenv=" + Convert.ToChar(34) + "http://schemas.xmlsoap.org/soap/envelope/" + Convert.ToChar(34) + " xmlns:ec=" + Convert.ToChar(34) + "http://ec.gob.sri.ws.autorizacion" + ((char)34) + "><soapenv:Header/>"); sSoap.Append("\n <soapenv:Body>"); sSoap.Append("\n <ec:autorizacionComprobante>"); sSoap.Append("\n <claveAccesoComprobante>"+ sClaveAcceso.Trim() + "</claveAccesoComprobante>"); sSoap.Append("\n </ec:autorizacionComprobante>"); sSoap.Append("\n </soapenv:Body>"); sSoap.Append("\n</soapenv:Envelope>"); try { oHttpRequest = (HttpWebRequest)WebRequest.Create(this.sUrl); oHttpRequest.ContentType = "text/xml;action=\"" + this.sSoapAction; oHttpRequest.Method = "POST"; oXmlDoc.LoadXml(sSoap.ToString()); oXmlDoc.Save(oHttpRequest.GetRequestStream()); oReader = new StreamReader(oHttpRequest.GetResponse().GetResponseStream()); xmlResultado = oReader.ReadToEnd(); XmlDocument docxmlSRI = new XmlDocument(); docxmlSRI.LoadXml(xmlResultado); xmlResultado = WebUtility.HtmlDecode(xmlResultado); //Cargo a un XML XmlDocument docxml = new XmlDocument(); var caracterPrincipal = xmlResultado.IndexOf('?') - 1; var caracterSecundario = xmlResultado.LastIndexOf('?') + 2; xmlResultado = xmlResultado.Remove(caracterPrincipal, (caracterSecundario - caracterPrincipal)); xmlResultado = "<?xml version=" + "\"1.0\"" + " encoding=" + "\"UTF-8\"" + "?>" + xmlResultado; docxml.LoadXml(xmlResultado); //Preguntar sobre el directorio string FechaAutorizacion = "", mensaje = "", infoadicional = "", tipo = "", claveconsultada = "", numeroAutorizacion = "", claveAcceso = ""; estado = docxml.GetElementsByTagName("estado")[0].InnerText; string ambiente = docxml.GetElementsByTagName("ambiente")[0].InnerText; claveconsultada = docxml.GetElementsByTagName("claveAccesoConsultada")[0].InnerText; if (estado == "AUTORIZADO") { numeroAutorizacion = docxml.GetElementsByTagName("numeroAutorizacion")[0].InnerText; claveAcceso = docxml.GetElementsByTagName("claveAcceso")[0].InnerText; numeroAutorizacion = docxml.GetElementsByTagName("numeroAutorizacion")[0].InnerText; FechaAutorizacion = Convert.ToDateTime(docxml.GetElementsByTagName("fechaAutorizacion")[0].InnerText).ToString(); //formar ride si no es consumidor final List <Factura> objFactura = llenarDatosEmcabezadoyPie(PathServer + @"\Generados\" + sClaveAcceso + ".xml", FechaAutorizacion, ambiente); if (FormarRide) { List <DetalleFactura> listaDetalle = llenarDetalleFactura(PathServer + @"\Generados\" + sClaveAcceso + ".xml"); List <PieFactura> listaPie = llenarPieFactura(PathServer + @"\Generados\" + sClaveAcceso + ".xml"); ReportViewer objreportview = new ReportViewer(); objreportview.ProcessingMode = ProcessingMode.Local; objreportview.LocalReport.ReportPath = PathArchivoRide; String ruta = PathLogo; ReportParameter param = new ReportParameter("RutaImg", ruta, true); objreportview.LocalReport.EnableExternalImages = true; objreportview.LocalReport.SetParameters(param); objreportview.RefreshReport(); BarcodeLib.Barcode Codigo = new BarcodeLib.Barcode(); Codigo.IncludeLabel = true; Panel obp = new Panel(); obp.BackgroundImage = Codigo.Encode(BarcodeLib.TYPE.CODE128, sClaveAcceso, Color.Black, Color.White, 1000, 300); Image imgFinal = (Image)obp.BackgroundImage.Clone(); imgFinal.Save("p.png", ImageFormat.Png); imgFinal.Dispose(); //file:\C:\Users\MaxDJ\Desktop\ModuloFacturacionElectronica\ModuloFacturacionElectronica\bin\Debug\p.png String ruta1 = PathCodigoBarra; ReportParameter param2 = new ReportParameter("CodigoBarra", ruta1, true); objreportview.LocalReport.EnableExternalImages = true; objreportview.LocalReport.SetParameters(param2); objreportview.RefreshReport(); objreportview.LocalReport.DataSources.Clear(); objreportview.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", objFactura)); objreportview.LocalReport.DataSources.Add(new ReportDataSource("DetalleFactura", listaDetalle)); objreportview.LocalReport.DataSources.Add(new ReportDataSource("PieFactura", listaPie)); objreportview.RefreshReport(); string reportType = "PDF"; string mimeType; string encoding; string fileNameExtension; Warning[] warnings; string[] streams; byte[] bytes = objreportview.LocalReport.Render(reportType, //deviceInfo, null, out mimeType, out encoding, out fileNameExtension, out streams, out warnings); string año = sClaveAcceso.Substring(4, 4); if (!Directory.Exists(PathServer + @"\Ride\Factura\" + año + @"\")) { Directory.CreateDirectory(PathServer + @"\Ride\Factura\" + año + @"\"); } FileStream fs = new FileStream(PathServer + @"\Ride\Factura\" + año + @"\" + sClaveAcceso + ".pdf", FileMode.Create); fs.Write(bytes, 0, bytes.Length); fs.Close(); } //fin ride if (!Directory.Exists(PathServer + @"\Autorizados\")) { Directory.CreateDirectory(PathServer + @"\Autorizados\"); } docxmlSRI.Save(@PathServer + @"\Autorizados\" + @"\" + sClaveAcceso + ".xml"); //enviar correo cliente if (FormarRide) { if (correoCliente != "" && correoCliente != "S/N") { enviarCorreo(@PathServer, sClaveAcceso); } } } else { tipo = docxml.GetElementsByTagName("tipo")[0].InnerText; //mensaje = docxml.GetElementsByTagName("mensaje")[0].InnerText; infoadicional = docxml.GetElementsByTagName("informacionAdicional")[0].InnerText; string fechaEmision = docxml.GetElementsByTagName("fechaEmision")[0].InnerText; if (!Directory.Exists(PathServer + @"\No Autorizados\")) { Directory.CreateDirectory(PathServer + @"\No Autorizados\"); } docxmlSRI.Save(@PathServer + @"\No Autorizados\" + @"\" + sClaveAcceso + ".xml"); string rutaNAT = @PathServer + @"\No Autorizados\"; string fechafinal = Funcion.reemplazarcaracterFecha(fechaEmision); //variable a guardar en la BD string tipo2 = docxmlSRI.GetElementsByTagName("identificador")[0].InnerText; string msg = docxmlSRI.GetElementsByTagName("mensaje")[1].InnerText; string infoAdicional = docxmlSRI.GetElementsByTagName("informacionAdicional")[0].InnerText; infoAdicional = Funcion.verificarMensaje(infoAdicional); objConsultas.EjecutarSQL("INSERT INTO [dbo].[TbErroresDocEnviados]([NombreXML],[Ruta],[FechaEmision] ,[EstadoError] ,[MensajeError] ,[CodigoError] ,[InformacionAdicional] )" + "VALUES ('" + sClaveAcceso + "','" + rutaNAT + "','" + fechafinal + "','" + 1 + "','" + msg + "','" + tipo2 + "','" + infoAdicional + "')"); } } catch (Exception ex) { sResult = ex.Message; } if (estado == "") { estado = SegundoIntento(sClaveAcceso, PathServer); } return(estado); }