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