Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }