private string GetQRtextPipeSeparated(string tipodoc, String str)
        {
            try
            {
                /*depende del tipo de documento extrae los datos del formato string*/
                List <string> lines = new List <string>();
                string        line;
                switch (tipodoc)
                {
                case "01":
                case "03":
                    using (StringReader sr = new StringReader(str))
                    {
                        /*en este caso vamos a leer linea por linea y agregar al list<string>*/
                        while ((line = sr.ReadLine()) != null)
                        {
                            lines.Add(line);
                        }
                    }
                    /*ahora recorremos lines de string array*/
                    if (lines != null)
                    {
                        string[] campos = lines[1].ToString().Split('+');
                        RUCEmisor          = campos[9].ToString();
                        TipoComprobante    = campos[5].ToString();
                        Numero_serie       = Basico.Left(campos[6].ToString(), 4);
                        Numero_correlativo = Basico.Right(campos[6].ToString(), 8);
                        IGV                     = campos[25].ToString();
                        Total                   = campos[29].ToString();
                        FechaEmision            = campos[7].ToString();
                        TipoDocumentoReceptor   = campos[21].ToString();
                        numeroDocumentoReceptor = campos[20].ToString();
                    }
                    break;

                case "07":

                    using (StringReader sr = new StringReader(str))
                    {
                        /*en este caso vamos a leer linea por linea y agregar al list<string>*/
                        while ((line = sr.ReadLine()) != null)
                        {
                            lines.Add(line);
                        }
                    }
                    /*ahora recorremos lines de string array*/
                    if (lines != null)
                    {
                        string[] campos = lines[1].ToString().Split('+');
                        RUCEmisor          = campos[8].ToString();
                        TipoComprobante    = campos[4].ToString();
                        Numero_serie       = Basico.Left(campos[5].ToString(), 4);
                        Numero_correlativo = Basico.Right(campos[5].ToString(), 8);
                        IGV                     = campos[23].ToString();
                        Total                   = campos[26].ToString();
                        FechaEmision            = campos[6].ToString();
                        TipoDocumentoReceptor   = campos[20].ToString();
                        numeroDocumentoReceptor = campos[19].ToString();
                    }
                    break;
                }
            }
            catch
            {
                throw;
            }
            return(string.Format("{0}|{1}|{2}|{3}|{4}|{5}|{6}|{7}|{8}|", (object)this.RUCEmisor, (object)this.TipoComprobante, (object)this.Numero_serie, (object)this.Numero_correlativo, (object)this.IGV, (object)this.Total, (object)this.FechaEmision, (object)this.TipoDocumentoReceptor, (object)this.numeroDocumentoReceptor));;
        }
        public static void ejecutar_factura_electronica(string _tipo_doc, string _num_doc, ref string cod_hash, ref string _error, ref string url_pdf)
        {
            string _formato_doc = "";

            try
            {
                if (Ent_Global._canal_venta == "AQ")
                {
                    if (Ent_Conexion._Base_Datos != "BdAquarella")
                    {
                        cod_hash = "prueba";
                        return;
                    }
                }
                if (Ent_Global._canal_venta == "BA")
                {
                    if (Ent_Conexion._Base_Datos != "BD_ECOMMERCE")
                    {
                        cod_hash = "prueba";
                        return;
                    }
                }

                /*CUANDO SE PASE A PRODUCCION HAY QUE PONER LA BD ORIGINAL*/
                if (Ent_Global._canal_venta == "MV")
                {
                    if (Ent_Conexion._Base_Datos != "BD_MULTIVENDE")
                    {
                        cod_hash = "prueba";
                        return;
                    }
                }

                /*QUIERE DECIR QUE QUE SE USA LA FACTURACION ELECTRONICA DE CARVAJAL*/
                if (Ent_Global.pr_facturador == "C")
                {
                    _formato_doc = Dat_Venta._leer_formato_electronico(_tipo_doc, _num_doc, ref _error);
                    GeneratorCdp generatorCdp = new GeneratorCdp();
                    //XmlDocument xmlDoc = new XmlDocument();
                    //xmlDoc.Load("C:\\carvajal\\xml\\20101951872_07_F030_22.xml");

                    //byte[] _valor=generatorCdp.GetImageBarCodeForNoteCdp(_formato_doc);

                    if (_tipo_doc == "B" || _tipo_doc == "F")
                    {
                        cod_hash = generatorCdp.GetHashForInvoiceCdp(_formato_doc);
                    }
                    else
                    {
                        cod_hash = generatorCdp.GetHashForNoteCdp(_formato_doc);
                    }
                }
                /*ESTA CONDICION ES EL PROVEEDOR PAPERLESS*/
                if (Ent_Global.pr_facturador == "P")
                {
                    string return_numdoc = "";

                    _formato_doc = Dat_Venta._leer_formato_electronico_PAPERLESS(_tipo_doc, _num_doc, ref _error, ref return_numdoc);
                    string ruc_empresa = Ent_Global._ws_ruc; string ws_login = Ent_Global._ws_login; string ws_pass = Ent_Global._ws_password; Int32 tipofoliacion = 1;
                    Int32  id_tipo_doc = 0;
                    switch (_tipo_doc)
                    {
                    case "B":
                    case "F":
                        id_tipo_doc = (Basico.Left(_num_doc, 1) == "B" ? 3 : 1);
                        break;

                    case "N":
                        id_tipo_doc = 7;
                        break;
                    }
                    ///*0 = ID asignado
                    //1 = URL del XML
                    //2 = URL del PDF
                    //3 = Estado en la SUNAT
                    //4 = Folio Asignado(Serie - Correlativo)
                    //5 = Bytes del PDF en Base64
                    //6 = PDF417(Cadena de texto a imprimir en el PDF 417)
                    //7 = HASH(Cadena de texto)*/

                    FEBata.OnlinePortTypeClient gen_fe = new FEBata.OnlinePortTypeClient();
                    string consulta = gen_fe.OnlineGeneration(ruc_empresa, ws_login, ws_pass, _formato_doc, tipofoliacion, 7);

                    consulta = consulta.Replace("&", "amp;");

                    var doc    = XDocument.Parse(consulta);
                    var result = from factura in doc.Descendants("Respuesta")
                                 select new
                    {
                        Codigo  = factura.Element("Codigo").Value,
                        Mensaje = factura.Element("Mensaje").Value.Replace("amp;", "&"),
                    };

                    foreach (var item in result)
                    {
                        if (item.Codigo != "0")
                        {
                            _error = item.Mensaje;
                            break;
                        }
                        else
                        {
                            cod_hash = item.Mensaje;

                            /*SI LA GENERACION ES EXITOSA ENTONCES EXTRAEMOS EL PDF URL*/
                            consulta = gen_fe.OnlineRecovery(ruc_empresa, ws_login, ws_pass, id_tipo_doc, return_numdoc, 2);
                            consulta = consulta.Replace("&", "amp;");
                            var docpdf    = XDocument.Parse(consulta);
                            var resultpdf = from factura in docpdf.Descendants("Respuesta")
                                            select new
                            {
                                Codigo  = factura.Element("Codigo").Value,
                                Mensaje = factura.Element("Mensaje").Value.Replace("amp;", "&"),
                            };
                            foreach (var itempdf in resultpdf)
                            {
                                url_pdf = itempdf.Mensaje;
                            }
                            /*******/
                        }
                    }
                }
                //enviar_xml_webservice bata===>>>
            }
            catch (Exception exc)
            {
                _error = exc.Message;
            }
        }