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; } }