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;
            }
        }
Example #3
0
        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);
        }