Exemplo n.º 1
0
        private void btnGetStatus_Click_1(object sender, EventArgs e)
        {
            try
            {
                Cursor = Cursors.WaitCursor;

                using (var frm = new FrmTicket())
                {
                    if (frm.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }
                    if (string.IsNullOrEmpty(frm.txtNroTicket.Text))
                    {
                        return;
                    }


                    var consultaTicketRequest = new ConsultaTicketRequest
                    {
                        Ruc         = txtNroRuc.Text,
                        UsuarioSol  = txtUsuarioSol.Text,
                        ClaveSol    = txtClaveSol.Text,
                        EndPointUrl = ValorSeleccionado(),//"https://www.sunat.gob.pe/ol-ti-itcpgem-sqa/billService",
                        IdDocumento = txtSerieCorrelativo.Text,
                        NroTicket   = frm.txtNroTicket.Text
                    };
                    var             respuestaEnvio = new EnviarDocumentoResponse();
                    ConsultarTicket ConsultaTiket  = new ConsultarTicket();
                    respuestaEnvio = ConsultaTiket.EnviarDocumentoResponse(consultaTicketRequest);

                    if (!respuestaEnvio.Exito)
                    {
                        throw new ApplicationException(respuestaEnvio.MensajeError);
                    }

                    txtResult.Text = $"{Resources.procesoCorrecto}{Environment.NewLine}{respuestaEnvio.MensajeRespuesta}";
                }
            }
            catch (Exception ex)
            {
                txtResult.Text = ex.Message;
            }
            finally
            {
                Cursor = Cursors.Default;
            }
        }
Exemplo n.º 2
0
        public EnviarDocumentoResponse EnviarResumenResponse(EnviarDocumentoRequest request)
        {
            var response     = new EnviarDocumentoResponse();
            var serializador = new Serializador();
            //var nombreArchivo = $"{request.Ruc}-{request.TipoDocumento}-{request.IdDocumento}";
            var nombreArchivo = $"{request.Ruc}-{request.IdDocumento}"; // Ver si se reemplza luego

            try
            {
                var tramaZip = serializador.GenerarZip(request.TramaXmlFirmado, nombreArchivo);

                var conexionSunat = new ConexionSunat(new ConexionSunat.Parametros
                {
                    Ruc         = request.Ruc,
                    UserName    = request.UsuarioSol,
                    Password    = request.ClaveSol,
                    EndPointUrl = request.EndPointUrl
                });

                var resultado = conexionSunat.EnviarResumenBaja(tramaZip, $"{nombreArchivo}.zip");

                if (resultado.Item2)
                {
                    response.NroTicket     = resultado.Item1;
                    response.Exito         = true;
                    response.NombreArchivo = nombreArchivo;
                }
                else
                {
                    response.MensajeError = resultado.Item1;
                    response.Exito        = false;
                }
            }
            catch (Exception ex)
            {
                response.MensajeError = ex.Message;
                response.Pila         = ex.StackTrace;
                response.Exito        = false;
            }

            return(response);
        }
Exemplo n.º 3
0
        public EnviarDocumentoResponse EnviarDocumentoResponse(EnviarDocumentoRequest request)
        {
            var response = new EnviarDocumentoResponse();

            var serializador  = new Serializador();
            var nombreArchivo = $"{request.Ruc}-{request.TipoDocumento}-{request.IdDocumento}";

            var tramaZip = serializador.GenerarZip(request.TramaXmlFirmado, nombreArchivo);

            var conexionSunat = new ConexionSunat(new ConexionSunat.Parametros
            {
                Ruc         = request.Ruc,
                UserName    = request.UsuarioSol,
                Password    = request.ClaveSol,
                EndPointUrl = request.EndPointUrl
            });

            var resultado = conexionSunat.EnviarDocumento(tramaZip, $"{nombreArchivo}.zip");

            if (resultado.Item2)
            {
                var returnByte = Convert.FromBase64String(resultado.Item1);
                using (var memRespuesta = new MemoryStream(returnByte))
                {
                    using (var zipFile = ZipFile.Read(memRespuesta))
                    {
                        foreach (var entry in zipFile.Entries)
                        {
                            if (!entry.FileName.EndsWith(".xml"))
                            {
                                continue;
                            }
                            using (var ms = new MemoryStream())
                            {
                                entry.Extract(ms);
                                ms.Position = 0;
                                var responseReader = new StreamReader(ms);
                                var responseString = responseReader.ReadToEnd();
                                try
                                {
                                    var xmlDoc = new XmlDocument();
                                    xmlDoc.LoadXml(responseString);

                                    var xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable);

                                    xmlnsManager.AddNamespace("ar", EspacioNombres.ar);
                                    xmlnsManager.AddNamespace("cac", EspacioNombres.cac);
                                    xmlnsManager.AddNamespace("cbc", EspacioNombres.cbc);

                                    response.CodigoRespuesta = xmlDoc.SelectSingleNode(EspacioNombres.nodoResponseCode,
                                                                                       xmlnsManager)?.InnerText;

                                    response.MensajeRespuesta = xmlDoc.SelectSingleNode(EspacioNombres.nodoDescription,
                                                                                        xmlnsManager)?.InnerText;
                                    response.TramaZipCdr   = resultado.Item1;
                                    response.Exito         = true;
                                    response.NombreArchivo = nombreArchivo;
                                }
                                catch (Exception ex)
                                {
                                    response.MensajeError = ex.Message;
                                    response.Pila         = ex.StackTrace;
                                    response.Exito        = false;
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                response.Exito            = true;
                response.MensajeRespuesta = resultado.Item1;
            }

            return(response);
        }
Exemplo n.º 4
0
        private void kryptonButton3_Click(object sender, EventArgs e)
        {
            try
            {
                Cursor = Cursors.WaitCursor;
                string codigoTipoDoc;
                switch (cboTipoDoc.SelectedIndex)
                {
                case 0:
                    codigoTipoDoc = "01";
                    break;

                case 1:
                    codigoTipoDoc = "03";
                    break;

                case 2:
                    codigoTipoDoc = "07";
                    break;

                case 3:
                    codigoTipoDoc = "08";
                    break;

                case 4:
                    codigoTipoDoc = "20";
                    break;

                case 5:
                    codigoTipoDoc = "40";
                    break;

                case 6:
                    codigoTipoDoc = "RC";
                    break;

                case 7:
                    codigoTipoDoc = "RA";
                    break;

                default:
                    codigoTipoDoc = "01";
                    break;
                }
                if (cboTipoDoc.SelectedIndex == -1)
                {
                    MessageBox.Show("Seleccione Tipo de documento");
                    throw new InvalidOperationException("Seleccione Tipo de documento");
                }

                /* if (_documento.TipoDocumento != codigoTipoDoc) {
                 *   MessageBox.Show("Seleccione Tipo de Documento Igual al Documento Generado..!");
                 *   throw new InvalidOperationException("Seleccione Tipo de Documento Igual al Documento Generado..!");
                 * }*/
                if (string.IsNullOrEmpty(txtSerieCorrelativo.Text))
                {
                    throw new InvalidOperationException("La Serie y el Correlativo no pueden estar vacíos");
                }

                var tramaXmlSinFirma = Convert.ToBase64String(File.ReadAllBytes(txtSource.Text));

                var firmadoRequest = new FirmadoRequest
                {
                    TramaXmlSinFirma    = tramaXmlSinFirma,
                    CertificadoDigital  = Convert.ToBase64String(File.ReadAllBytes(txtRutaCertificado.Text)),
                    PasswordCertificado = txtPassCertificado.Text,
                    UnSoloNodoExtension = rbRetenciones.Checked || rbResumen.Checked
                };


                FirmarController enviar = new FirmarController();

                var respuestaFirmado = enviar.FirmadoResponse(firmadoRequest);

                if (!respuestaFirmado.Exito)
                {
                    throw new ApplicationException(respuestaFirmado.MensajeError);
                }



                var enviarDocumentoRequest = new EnviarDocumentoRequest
                {
                    Ruc         = txtNroRuc.Text,
                    UsuarioSol  = txtUsuarioSol.Text,
                    ClaveSol    = txtClaveSol.Text,
                    EndPointUrl = ValorSeleccionado(),
                    //https://www.sunat.gob.pe/ol-ti-itcpgem-sqa/billService //RETENCION
                    IdDocumento     = txtSerieCorrelativo.Text,
                    TipoDocumento   = codigoTipoDoc,
                    TramaXmlFirmado = respuestaFirmado.TramaXmlFirmado
                };



                // RespuestaComun respuestaEnvio;
                var respuestaEnvio = new EnviarDocumentoResponse();
                var apiMetodo      = rbResumen.Checked ? "EnviarResumen" : "EnviarDocumento";

                if (!rbResumen.Checked)
                {
                    if (apiMetodo == "EnviarDocumento")
                    {
                        EnviarDocumentoController enviarDoc = new EnviarDocumentoController();
                        respuestaEnvio = enviarDoc.EnviarDocumentoResponse(enviarDocumentoRequest);
                    }
                    // var rpta =new EnviarDocumentoResponse() ;//(EnviarDocumentoResponse)respuestaEnvio;
                    var rpta = (EnviarDocumentoResponse)respuestaEnvio;
                    txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{rpta.MensajeRespuesta} siendo las {DateTime.Now}";
                    try
                    {
                        //ACTUALIZA CORRELATIVO SI EL DOCUMENTO FUE ACEPTADO
                        if (_documento.Items != null && _documento.Receptor.NroDocumento != "")
                        {
                            clsNumeracion busnum = new clsNumeracion();
                            busnum = AdmNumeracion.BuscaNumeracion(_documento.TipoDocumento);
                            Numeracion.TipoDocumento = Convert.ToString(_documento.TipoDocumento);
                            Numeracion.Numeracion    = busnum.Numeracion + 1;
                            if (!AdmNumeracion.ActualizaNumeracion(Numeracion))
                            {
                                MessageBox.Show("Ocurrió un Error al Actualizar la Numeración");
                            }
                        }
                        if (rpta.Exito && !string.IsNullOrEmpty(rpta.TramaZipCdr))
                        {
                            File.WriteAllBytes($"{Program.CarpetaXml}\\{rpta.NombreArchivo}.xml",
                                               Convert.FromBase64String(respuestaFirmado.TramaXmlFirmado));

                            File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{rpta.NombreArchivo}.zip",
                                               Convert.FromBase64String(rpta.TramaZipCdr));
                            _documento.FirmaDigital = respuestaFirmado.ValorFirma;
                        }
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }
                }
                else
                {
                    if (apiMetodo == "EnviarResumen")
                    {
                        EnviarResumenController enviaResumen = new EnviarResumenController();
                        respuestaEnvio = enviaResumen.EnviarResumenResponse(enviarDocumentoRequest);
                    }

                    var rpta = (EnviarDocumentoResponse)respuestaEnvio;
                    txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{rpta.NroTicket}";
                    if (rpta.Exito)
                    {
                        if (codigoTipoDoc == "RA")
                        {
                            clsNumeracion busnum = new clsNumeracion();
                            busnum = AdmNumeracion.BuscaNumeracion(codigoTipoDoc);
                            Numeracion.TipoDocumento = Convert.ToString(codigoTipoDoc);
                            Numeracion.Numeracion    = busnum.Numeracion + 1;
                            if (!AdmNumeracion.ActualizaNumeracion(Numeracion))
                            {
                                MessageBox.Show("Ocurrió un Error al Actualizar la Numeración");
                            }
                        }
                    }
                }

                if (!respuestaEnvio.Exito)
                {
                    throw new ApplicationException(respuestaEnvio.MensajeError);
                }
            }
            catch (Exception ex)
            {
                txtResult.Text = ex.Message;
            }
            finally
            {
                Cursor = Cursors.Default;
            }
        }