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; * } * * }*/ /*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") * { */ config_ws_fe(); string return_numdoc = ""; _formato_doc = Dat_Venta._leer_formato_electronico_PAPERLESS(_tipo_doc, _num_doc, ref _error, ref return_numdoc); string ruc_empresa = _ws_ruc; string ws_login = _ws_login; string ws_pass = _ws_password; Int32 tipofoliacion = 1; Int32 id_tipo_doc = 0; switch (_tipo_doc) { case "B": case "F": id_tipo_doc = (_num_doc.Substring(0, 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)*/ /* htt p://200.121.128.110:8080/axis2/services/Online?wsdl */ 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; } }
public static void ejecutar_factura_electronica_ws(string _tipo_doc, string _num_doc, ref string cod_hash, ref string _error, ref string url_pdf) { string _formato_doc = ""; try { config_ws_fe(); string return_numdoc = ""; _formato_doc = Dat_Venta._leer_formato_electronico_PAPERLESS(_tipo_doc, _num_doc, ref _error, ref return_numdoc); string ruc_empresa = _ws_ruc; string ws_login = _ws_login; string ws_pass = _ws_password; Int32 tipofoliacion = 1; ///*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.OnlineGeneration(ruc_empresa, ws_login, ws_pass, _formato_doc, tipofoliacion, 2); consulta = consulta.Replace("&", "amp;"); var resultpdf = from factura in doc.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; } /*******/ } } //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); //} //enviar_xml_webservice bata===>>> } catch (Exception exc) { _error = exc.Message; } }
public static string _retornar_codigo_hash(ref string _error, ref string _ruta_archivo, ref string ruta_archivo_externo, ref Int32 _ingreso, string _archivo, string _tipo_doc, string _carpeta_in) { string _valida_error = ""; string _codigo_hash_return = ""; //string _carpeta_in = ""; string _nombrearchivo_txt = ""; //string _archivo = ""; Int32 _valida = 0; FEBata.OnlinePortTypeClient gen_fe = null; EstadoGenera estado_gen = null; TcpClient clientSocket = null; try { //CAPTURAR DESDE LA RUTA EL ARCHIVO DEL FORMTO StreamReader sr = new StreamReader(@_archivo, Encoding.Default); string _formato_doc = sr.ReadToEnd(); sr.Close(); //_formato_doc = "111"; //CERRAR LA INSTNACIA _nombrearchivo_txt = Path.GetFileNameWithoutExtension(@_archivo); //instanciar la dll externa string _codigo_hash = ""; _codigo_hash_return = ""; _ingreso = 1;/*variable de inicializacion*/ #region <METODO WEB SERVICE> if (!metodo_epos) { //string ruc = ruc_empresa ; string login = "******"; string clave = "abc123"; string str = "xxx"; Int32 tipofoliacion = 1; /*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)*/ gen_fe = new FEBata.OnlinePortTypeClient(); string consulta = gen_fe.OnlineGeneration(ruc_empresa, ws_login, ws_pass, _formato_doc, tipofoliacion, 7); 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, }; estado_gen = new EstadoGenera(); foreach (var item in result) { estado_gen.codigo = item.Codigo; estado_gen.descripcion = item.Mensaje.Replace(',', ' '); estado_gen.descripcion = estado_gen.descripcion.Replace('\n', ' ').Trim().TrimEnd(); } /*si el retorno es cero entonces retorno ok*/ if (estado_gen.codigo == "0") { _codigo_hash = estado_gen.descripcion; } if (_codigo_hash.Length > 0) { _codigo_hash_return = _codigo_hash; _valida = 1; } else { _codigo_hash_return = estado_gen.descripcion; } } #endregion #region <METODO E-POS> if (metodo_epos) { string idtipo_doc = ""; //string ipsocket = host_socket; Int32 puerto = 5500; //socket_host = "10.10.10.161"; clientSocket = new TcpClient(); clientSocket.Connect(socket_host, socket_puerto); /*formatear formato de documento*/ _formato_doc = formato_e_pos(_formato_doc, _tipo_doc, ref idtipo_doc); /**/ byte[] outstream = Encoding.ASCII.GetBytes(_formato_doc); NetworkStream serverstream = clientSocket.GetStream(); serverstream.Write(outstream, 0, outstream.Length); serverstream.Flush(); byte[] instream = new byte[1024 * 1000]; serverstream.Read(instream, 0, (int)clientSocket.ReceiveBufferSize); string return_data = Encoding.ASCII.GetString(instream); string[] split = return_data.Trim().Split('\t'); estado_gen = new EstadoGenera(); /*errores de generacion*/ if (split.Length == 2) { estado_gen.codigo = split[0].ToString().TrimEnd().TrimStart().Trim(); estado_gen.descripcion = split[1].ToString().Trim().Replace('\0', ' ').TrimEnd().TrimStart().Trim(); estado_gen.descripcion = estado_gen.descripcion.Replace(',', ' ').TrimEnd().TrimStart().Trim(); } /*se genero exitosamente*/ if (split.Length == 5) { estado_gen.codigo = split[0].ToString().Trim().Replace('\u0002', ' ').TrimEnd().TrimStart().Trim(); estado_gen.descripcion = split[4].ToString().Trim().Replace('\0', ' ').TrimEnd().TrimStart().Trim(); estado_gen.descripcion = estado_gen.descripcion.Replace(',', ' '); estado_gen.descripcion = estado_gen.descripcion.Replace('\u0003', ' ').TrimEnd().TrimStart().Trim(); string num_doc = split[2].ToString(); #region <ENVIO DE CONFIRMACION> string str_confirmacion = "@**@3\t0\t" + ruc_empresa + "\t1\t" + idtipo_doc + "\t" + num_doc + "*@@*"; outstream = Encoding.ASCII.GetBytes(str_confirmacion); //NetworkStream serverstream1 = clientSocket.GetStream(); serverstream.Write(outstream, 0, outstream.Length); serverstream.Flush(); instream = new byte[1024 * 1000]; serverstream.Read(instream, 0, (int)clientSocket.ReceiveBufferSize); string return_confirmacion = Encoding.ASCII.GetString(instream); string[] confirmacion = return_confirmacion.Trim().Split('\t'); estado_gen.codigo = confirmacion[0].ToString().Trim().Replace('\u0002', ' ').TrimEnd().TrimStart().Trim(); if (estado_gen.codigo != "0") { estado_gen.descripcion = confirmacion[1].ToString().Trim().Replace('\0', ' ').TrimEnd().TrimStart().Trim(); estado_gen.descripcion = estado_gen.descripcion.Replace(',', ' '); estado_gen.descripcion = estado_gen.descripcion.Replace('\u0003', ' ').TrimEnd().TrimStart().Trim(); } #endregion } /*si el retorno es cero entonces retorno ok*/ if (estado_gen.codigo == "0") { _codigo_hash = estado_gen.descripcion; } if (_codigo_hash.Length > 0) { _codigo_hash_return = _codigo_hash; _valida = 1; } else { _codigo_hash_return = estado_gen.descripcion; } } #endregion } catch (Exception exc) { _valida_error = exc.Message; } if (_valida_error.Length == 0) { if (estado_gen != null) { if (estado_gen.codigo != "0") { _valida_error = estado_gen.descripcion; } } } ruta_archivo_externo = _carpeta_in; string _hash = _carpeta_in + "\\hash"; //verificar que la carpeta hash exista if (_ingreso == 1) { if (!Directory.Exists(@_hash)) { Directory.CreateDirectory(@_hash); } } string _ruta_archivo_txt = _hash + "\\" + _nombrearchivo_txt + ".txt"; _ruta_archivo = _ruta_archivo_txt; _error = _valida_error; ruta_archivo_externo = _archivo; return(_codigo_hash_return); }