public async Task <EnviarDocumentoResponse> Post_Resumen(EnviarDocumentoRequest request) { var response = new EnviarDocumentoResponse(); return(response); }
public async Task <EnviarDocumentoResponse> Post([FromBody] ConsultaTicketRequest request) { var response = new EnviarDocumentoResponse(); try { _servicioSunatDocumentos.Inicializar(new ParametrosConexion { Ruc = request.Ruc, UserName = request.UsuarioSol, Password = request.ClaveSol, EndPointUrl = request.EndPointUrl }); var resultado = _servicioSunatDocumentos.ConsultarTicket(request.NroTicket); if (!resultado.Exito) { response.Exito = false; response.MensajeError = resultado.MensajeError; } else { response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion); } } catch (Exception ex) { response.MensajeError = ex.Source == "DotNetZip" ? "El Ticket no existe" : ex.Message; response.Pila = ex.StackTrace; response.Exito = false; } return(response); }
/// <summary> /// Lee la Constancia de Recepción SUNAT y devuelve el contenido /// </summary> /// <param name="constanciaRecepcion">Trama ZIP del CDR</param> /// <returns>Devuelve una clase <see cref="EnviarDocumentoResponse"/></returns> public EnviarDocumentoResponse GenerarDocumentoRespuesta(string constanciaRecepcion, bool sincrono) { var response = new EnviarDocumentoResponse(); var returnByte = Convert.FromBase64String(constanciaRecepcion); using (var memRespuesta = new MemoryStream(returnByte)) { if (memRespuesta.Length <= 0) { response.MensajeError = "Respuesta SUNAT Vacio"; response.Exito = false; } else { 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.NroTicketCdr = xmlDoc.SelectSingleNode(EspacioNombres.nodoId, xmlnsManager)?.InnerText; response.TramaZipCdr = constanciaRecepcion; response.NombreArchivo = entry.FileName; response.Exito = true; } catch (Exception ex) { response.MensajeError = ex.Message; response.Pila = ex.StackTrace; response.Exito = false; } } } } } } return(response); }
public async Task <EnviarDocumentoResponse> Post([FromBody] EnviarDocumentoRequest request) { var response = new EnviarDocumentoResponse(); var nombreArchivo = $"{request.Ruc}-{request.TipoDocumento}-{request.IdDocumento}"; var tramaZip = await _serializador.GenerarZip(request.TramaXmlFirmado, nombreArchivo); _servicioSunatDocumentos.Inicializar(new ParametrosConexion { Ruc = request.Ruc, UserName = request.UsuarioSol, Password = request.ClaveSol, EndPointUrl = request.EndPointUrl }); var resultado = _servicioSunatDocumentos.EnviarDocumento(new DocumentoSunat { TramaXml = tramaZip, NombreArchivo = $"{nombreArchivo}.zip" }); if (!resultado.Exito) { response.Exito = false; response.MensajeError = resultado.MensajeError; } else { response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion); // Quitamos la R y la extensión devueltas por el Servicio. response.NombreArchivo = nombreArchivo; } return(response); }
private async void BtnGetStatus_Click(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(), IdDocumento = txtSerieCorrelativo.Text, NroTicket = frm.txtNroTicket.Text }; ISerializador serializador = new Serializador(); IServicioSunatDocumentos servicioSunatDocumentos = new ServicioSunatDocumentos(); EnviarDocumentoResponse respuestaEnvio = await new ConsultarTicket(servicioSunatDocumentos, serializador).Post(consultaTicketRequest); if (!respuestaEnvio.Exito || !string.IsNullOrEmpty(respuestaEnvio.MensajeError)) { throw new InvalidOperationException(respuestaEnvio.MensajeError); } File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{respuestaEnvio.NombreArchivo}.zip", Convert.FromBase64String(respuestaEnvio.TramaZipCdr)); txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{respuestaEnvio.MensajeRespuesta}"; if (chkVoz.Checked) { Hablar(); } } } catch (Exception ex) { txtResult.Text = ex.Message; } finally { Cursor = Cursors.Default; } }
public async Task <EnviarDocumentoResponse> Generar(string organization, DocumentoElectronico model) { EmpresaModel empresa = await _repositoryempresa.Get(organization); model.Emisor = HelperTo.ToEmisor(empresa); IEstructuraXml invoice = _documentoXml.Generar(model); string XmlSinFirma = await _serializador.GenerarXml(invoice); CertificadoDigitalModel certificado = await _repositorycert.GetCertificate(organization); FirmadoRequest firmado = HelperTo.ToSignedModel(certificado, XmlSinFirma, false); FirmadoResponse responseFirma = await _certificador.FirmarXml(firmado); ParametroEmpresaModel parametro = await _repositoryparam.GetConfiguration(certificado.Empresa); EnviarDocumentoRequest request = HelperTo.ToSendDocument(model, parametro, responseFirma); File.WriteAllBytes("invoice.xml", Convert.FromBase64String(responseFirma.TramaXmlFirmado)); EnviarDocumentoResponse response = new EnviarDocumentoResponse(); var nombreArchivo = $"{request.Ruc}-{request.TipoDocumento}-{request.IdDocumento}"; var tramaZip = await _serializador.GenerarZip(request.TramaXmlFirmado, nombreArchivo); _servicioSunatDocumentos.Inicializar(new ParametrosConexion { Ruc = request.Ruc, UserName = request.UsuarioSol, Password = request.ClaveSol, EndPointUrl = request.EndPointUrl }); RespuestaSincrono resultado = _servicioSunatDocumentos.EnviarDocumento(new DocumentoSunat { TramaXml = tramaZip, NombreArchivo = $"{nombreArchivo}.zip" }); if (!resultado.Exito) { response.Exito = false; response.MensajeError = resultado.MensajeError; } else { response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion); File.WriteAllBytes("cdr_invoice.zip", Convert.FromBase64String(response.TramaZipCdr)); // Quitamos la R y la extensión devueltas por el Servicio. response.NombreArchivo = nombreArchivo; } //guardar la respuesta return(response); }
/// <summary> /// Lee la Constancia de Recepción SUNAT y devuelve el contenido /// </summary> /// <param name="constanciaRecepcion">Trama ZIP del CDR</param> /// <returns>Devuelve una clase <see cref="EnviarDocumentoResponse"/></returns> public async Task <EnviarDocumentoResponse> GenerarDocumentoRespuesta(string constanciaRecepcion) { var response = new EnviarDocumentoResponse(); var returnByte = Convert.FromBase64String(constanciaRecepcion); using (var memRespuesta = new MemoryStream(returnByte)) { using (var zipFile = new ZipArchive(memRespuesta)) { foreach (var entry in zipFile.Entries) { if (!entry.FullName.EndsWith(".xml")) { continue; } using (var stream = entry.Open()) { using (var ms = new MemoryStream()) { await stream.CopyToAsync(ms); ms.Position = 0; var responseReader = new StreamReader(ms); var responseString = await responseReader.ReadToEndAsync(); 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 = constanciaRecepcion; response.NombreArchivo = entry.FullName; response.Exito = true; } catch (Exception ex) { response.MensajeError = ex.Message; response.Pila = ex.StackTrace; response.Exito = false; } } } } } } return(response); }
public async Task <IActionResult> Post(string organization, [FromBody] DocumentoElectronico model) { EnviarDocumentoResponse response = new EnviarDocumentoResponse(); try { response = await _service.Generar(organization, model); response.Exito = true; return(Ok(response)); } catch (Exception ex) { throw new SuperFactException(ex.Message, ex.InnerException); } }
private async void kryptonButton1_Click(object sender, EventArgs e) { ISerializador serializador = new Serializador(); IServicioSunatConsultas servicioSunatDocumentos = new ServicioSunatConsultas(); RespuestaSincrono respuestaEnvio = new RespuestaSincrono(); var response = new EnviarDocumentoResponse(); var request = new DatosDocumento { TipoComprobante = "01", Serie = "F005", Numero = 3, RucEmisor = "20561278441" }; servicioSunatDocumentos.Inicializar(new ParametrosConexion { Ruc = "20561278441", UserName = "******", Password = "******", EndPointUrl = "https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService" }); respuestaEnvio = servicioSunatDocumentos.ConsultarConstanciaDeRecepcion(request); if (respuestaEnvio.Exito) { response = await serializador.GenerarDocumentoRespuesta(respuestaEnvio.ConstanciaDeRecepcion); if (response.Exito) { MessageBox.Show(response.MensajeRespuesta); File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{request.RucEmisor}-{request.TipoComprobante}-{request.Serie}-{request.Numero}.zip", Convert.FromBase64String(respuestaEnvio.ConstanciaDeRecepcion)); } else { MessageBox.Show(response.MensajeError); } } else { MessageBox.Show(respuestaEnvio.MensajeError); } }
public async Task <EnviarDocumentoResponse> Post([FromBody] ConsultaConstanciaRequest request) { var response = new EnviarDocumentoResponse(); try { _servicioSunatConsultas.Inicializar(new ParametrosConexion { Ruc = request.Ruc, UserName = request.UsuarioSol, Password = request.ClaveSol, EndPointUrl = request.EndPointUrl }); var resultado = _servicioSunatConsultas.ConsultarConstanciaDeRecepcion(new DatosDocumento { RucEmisor = request.Ruc, TipoComprobante = request.TipoDocumento, Serie = request.Serie, Numero = request.Numero }); if (!resultado.Exito) { response.Exito = false; response.MensajeRespuesta = resultado.MensajeError; } else { response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion); } } catch (Exception ex) { response.MensajeError = ex.Message; response.Pila = ex.StackTrace; response.Exito = false; } return(response); }
public async Task <EnviarDocumentoResponse> Post(EnviarDocumentoRequest request) { var response = new EnviarDocumentoResponse(); var nombreArchivo = $"{request.Ruc}-{request.TipoDocumento}-{request.IdDocumento}"; var tramaZip = await _serializador.GenerarZip(request.TramaXmlFirmado, nombreArchivo); _servicioSunatDocumentos.Inicializar(new ParametrosConexion { Ruc = request.Ruc, UserName = request.UsuarioSol, Password = request.ClaveSol, EndPointUrl = request.EndPointUrl }); var resultado = _servicioSunatDocumentos.EnviarDocumento(new DocumentoSunat { TramaXml = tramaZip, NombreArchivo = $"{nombreArchivo}.zip" }); if (!resultado.Exito) { response.Exito = false; response.MensajeError = resultado.MensajeError; //response.TramaZipCdr = "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"; } else { response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion); // Quitamos la R y la extensión devueltas por el Servicio. response.NombreArchivo = nombreArchivo; } return(response); }
public string PostResumen(List <Data_Documentos> data_Documentos) { string mensajeRespuesta = string.Empty; try { GenerarResumenDiario generarResumenDiario = new GenerarResumenDiario(); ResumenDiario resumenDiario = generarResumenDiario.Data(data_Documentos); DocumentoResponse response = generarResumenDiario.Post(resumenDiario); if (!response.Exito) { Data_Log data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = $"El XML con identificador: {resumenDiario.IdDocumento} no se pudo generar", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } else { string rutaArchivo = Path.Combine(data_Documentos[0].Ruta, $"{resumenDiario.IdDocumento}.xml"); Firmar firmar = new Firmar(); FirmadoRequest firmadoRequest = firmar.Data(data_Usuario.IdAccesosSunat, response.TramaXmlSinFirma); FirmadoResponse firmadoResponse = firmar.Post(firmadoRequest, true); // Ya se obtuvo el documento firmado if (firmadoResponse.Exito) // Comprobamos que se haya firmado de forma correcta { EnviarSunat enviarSunat = new EnviarSunat(); EnviarDocumentoRequest enviarDocumentoRequest = enviarSunat.Data(firmadoResponse.TramaXmlFirmado, data_Documentos[0], GetURL("03")); string nombreZip = $"{resumenDiario.Emisor.NroDocumento}-{resumenDiario.IdDocumento}"; EnviarResumenResponse enviarResumenResponse = enviarSunat.Post_Figurativo(enviarDocumentoRequest, nombreZip); if (enviarResumenResponse.Exito) // Comprobar envío a sunat { ConsultaConstanciaRequest consultaConstanciaRequest = new ConsultaConstanciaRequest() { Ruc = enviarDocumentoRequest.Ruc, UsuarioSol = enviarDocumentoRequest.UsuarioSol, ClaveSol = enviarDocumentoRequest.ClaveSol, EndPointUrl = " https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService" }; Consultar consultar = new Consultar(); EnviarDocumentoResponse enviarDocumentoResponse = consultar.Post_Constancia(consultaConstanciaRequest); if (enviarDocumentoResponse.Exito) { mensajeRespuesta = $"El resumen diario ha realizado con éxito, detalle: {enviarDocumentoResponse.MensajeRespuesta}"; } else { mensajeRespuesta = "El resumen diario ha realizado con éxito, pero hemos tenido inconvenietes al obtener" + " el CDR del documento: " + resumenDiario.IdDocumento + ", probablemente se este empleado el usuario MODDATOS," + "para obtener el CDR debes descargarlo de forma manual en la opción 'Consulta de CDR'"; data_Log = new Data_Log() { DetalleError = mensajeRespuesta, Comentario = $"Ha ocurrido un error al generar el CDR del resumen diario: {resumenDiario.IdDocumento}, probablemente se este empleado MODDATOS", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_DocumentoFigurativo data_DocumentoFigurativo = new Data_DocumentoFigurativo() { XMLFirmado = firmadoResponse.TramaXmlFirmado, Tipo = "Resumen diario", ComentarioDocumento = mensajeRespuesta, Identificador = resumenDiario.IdDocumento, NumeroTicket = enviarResumenResponse.NroTicket, CdrSunat = enviarDocumentoResponse.TramaZipCdr ?? string.Empty }; if (!data_DocumentoFigurativo.Create_DocumentoFigurativo()) { data_Log = new Data_Log() { DetalleError = "Error inesperado en la base de datos", Comentario = "Ha ocurrido un error al guardar el registro del resumen diario", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } else { Data_DocumentoFigurativo dataUnion_DocumentoFigurativo; Data_Documentos updateDocumento; foreach (var data_Documento in data_Documentos) { dataUnion_DocumentoFigurativo = new Data_DocumentoFigurativo() { IdDocumentoFigurativo = data_DocumentoFigurativo.SCOPE_IDENTITY_VALUE, IdDocumento = data_Documento.IdDocumento }; if (!dataUnion_DocumentoFigurativo.Create_Figurativo_Documentos()) { data_Log = new Data_Log() { DetalleError = $"Detalle de tablas: Documentos {data_Documento.IdDocumento},{data_Documento.SerieCorrelativo} con la " + $"tabla Figurativo_Documentos {data_DocumentoFigurativo.SCOPE_IDENTITY_VALUE}, {data_DocumentoFigurativo.Identificador} ", Comentario = "Ha ocurrido un error al guardar el registro del resumen diario, en la tabla de unión", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } updateDocumento = new Data_Documentos() { IdDocumento = data_Documento.IdDocumento, EnviadoSunat = true, EstadoSunat = "Aceptado", ComentarioDocumento = $"El documento figura dentro del resumen diario con el código de identificación: {data_DocumentoFigurativo.Identificador}", ComunicacionBaja = false, }; if (!updateDocumento.Update_Documento()) { data_Log = new Data_Log() { DetalleError = $"No se ha podido actualizar el documento{data_Documento.IdDocumento}, {data_Documento.SerieCorrelativo} para indicar que resumen diario", Comentario = "Error en la base de datos", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } } } else { mensajeRespuesta = enviarResumenResponse.MensajeError; data_Log = new Data_Log() { DetalleError = enviarResumenResponse.MensajeError, Comentario = "Error al crear resumen diario", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } else { data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = "Error al firmar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al procesar el envío del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); mensajeRespuesta = $"Detalle del error: {msg}"; } return(mensajeRespuesta); }
public void Post(Data_Documentos IE_IdDocumento) // Ejecución { try { string IdDocumento = IE_IdDocumento.IdDocumento; Data_Documentos data_Documento = new Data_Documentos(IdDocumento); // IdDocumento variable global data_Documento.Read_Documento(); GenerarFactura generarFactura = new GenerarFactura(); GenerarNotaCredito generarNotaCredito = new GenerarNotaCredito(); GenerarNotaDebito generarNotaDebito = new GenerarNotaDebito(); DocumentoElectronico documento; DocumentoResponse response; switch (data_Documento.TipoDocumento) { case "01": // Factura y boletas documento = generarFactura.Data(data_Documento); response = generarFactura.Post(documento, true); break; case "07": // Nota de crédito documento = generarNotaCredito.data(data_Documento); response = generarNotaCredito.Post(documento, true); break; case "08": // Nota de Débito documento = generarNotaDebito.data(data_Documento); response = generarNotaDebito.Post(documento, true); break; default: documento = generarFactura.Data(data_Documento); response = generarFactura.Post(documento, true); break; } if (!response.Exito) { Data_Log data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = $"El XML con serie correlativo: {documento.SerieCorrelativo} no se pudo generar", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } string rutaArchivo = Path.Combine(data_Documento.Ruta, $"{documento.SerieCorrelativo}.xml"); Firmar firmar = new Firmar(); FirmadoRequest firmadoRequest = firmar.Data(data_Usuario.IdAccesosSunat, response.TramaXmlSinFirma); //FirmadoResponse firmadoResponse = await firmar.Post(firmadoRequest); // Ya se obtuvo el documento firmado FirmadoResponse firmadoResponse = firmar.Post(firmadoRequest, true); // Ya se obtuvo el documento firmado if (firmadoResponse.Exito) // Comprobamos que se haya firmado de forma correcta { Data_Documentos actualizacionXML = new Data_Documentos(IdDocumento) { XmlFirmado = firmadoResponse.TramaXmlFirmado }; if (!actualizacionXML.Update_Documento_OneColumn("[dbo].[Update_Documento_SignedXML]")) { data_Log = new Data_Log() { DetalleError = "Error al actualizar el xmlFirmado del documento", Comentario = "Error con la base de datos", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } else { data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = "Error al firmar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } EnviarSunat enviarSunat = new EnviarSunat(); EnviarDocumentoRequest enviarDocumentoRequest = enviarSunat.Data(firmadoResponse.TramaXmlFirmado, data_Documento, GetURL(data_Documento.TipoDocumento)); // Obtenemos los datos para EnviarDocumentoRequest //EnviarDocumentoResponse enviarDocumentoResponse = await enviarSunat.Post_Documento(enviarDocumentoRequest); EnviarDocumentoResponse enviarDocumentoResponse = enviarSunat.Post_Documento(enviarDocumentoRequest, true); if (enviarDocumentoResponse.Exito && !string.IsNullOrEmpty(enviarDocumentoResponse.TramaZipCdr)) // Comprobar envío a sunat { Data_Documentos actualizacionCDR = new Data_Documentos() { IdDocumento = IdDocumento, CdrSunat = enviarDocumentoResponse.TramaZipCdr }; if (!actualizacionCDR.Update_Documento_OneColumn("[dbo].[Update_Documento_CDR]")) { data_Log = new Data_Log() { DetalleError = "Error al actualizar el CDR del documento", Comentario = "Error con la base de datos: [dbo].[Update_Documento_CDR]", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionComentario = new Data_Documentos() { IdDocumento = IdDocumento, ComentarioDocumento = enviarDocumentoResponse.MensajeRespuesta }; if (!actualizacionComentario.Update_Documento_OneColumn("[dbo].[Update_Documento_Comentario]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando la recepción del CDR del documento", Comentario = "No se pudo guardar el CDR", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionEstadoSunat = new Data_Documentos() { IdDocumento = IdDocumento, EstadoSunat = "Aceptado" }; if (!actualizacionEstadoSunat.Update_Documento_OneColumn("[dbo].[Update_Documento_EstadoSunat]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el estado del documento", Comentario = "No se pudo guardar el estado del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } else { data_Log = new Data_Log() { DetalleError = enviarDocumentoResponse.MensajeError, Comentario = "Error al enviar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); Data_Documentos actualizacionComentario = new Data_Documentos() { IdDocumento = IdDocumento, ComentarioDocumento = enviarDocumentoResponse.MensajeError }; if (!actualizacionComentario.Update_Documento_OneColumn("[dbo].[Update_Documento_Comentario]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el error al no poder recibir el CDR del documento", Comentario = "No se recibió el CDR", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionEstadoSunat = new Data_Documentos() { IdDocumento = IdDocumento, EstadoSunat = "Rechazado" }; if (!actualizacionEstadoSunat.Update_Documento_OneColumn("[dbo].[Update_Documento_EstadoSunat]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el estado del documento", Comentario = "No se pudo guardar el estado del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al procesar el envío del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } }
private async void btnEjecutar_ConInterfaces_Click(object sender, RoutedEventArgs e) { try { Data_Documentos data_Documento = new Data_Documentos("20186C16-C1DC-4717-8F46-407447D225BC"); data_Documento.Read_Documento(); GenerarFactura generarFactura = new GenerarFactura(); DocumentoElectronico documento = generarFactura.data(data_Documento); // CAMBIAR A ASINCRONO AL FINALIZAR EL DESARROLLO var response = await generarFactura.Post(documento); if (!response.Exito) { System.Windows.MessageBox.Show($"A ocurrido un error en la generación de XML: {response.MensajeError}"); } string rutaArchivo = Path.Combine(data_Documento.Ruta, $"{documento.SerieCorrelativo}.xml"); Firmar firmar = new Firmar(); FirmadoRequest firmadoRequest = firmar.Data(data_Documento.IdEmisor, response.TramaXmlSinFirma); FirmadoResponse firmadoResponse = await firmar.Post(firmadoRequest); // Ya se obtuvo el documento firmado if (firmadoResponse.Exito) // Comprobamos que se haya firmado de forma correcta { File.WriteAllBytes(rutaArchivo, Convert.FromBase64String(firmadoResponse.TramaXmlFirmado)); } else { System.Windows.MessageBox.Show($"A ocurrido un error al firmar el XML: {response.MensajeError}"); } EnviarSunat enviarSunat = new EnviarSunat(); EnviarDocumentoRequest enviarDocumentoRequest = enviarSunat.Data(firmadoResponse.TramaXmlFirmado, data_Documento, "urlsunat"); // Obtenemos los datos para EnviarDocumentoRequest EnviarDocumentoResponse enviarDocumentoResponse = await enviarSunat.Post_Documento(enviarDocumentoRequest); // enviarDocumentoResponse = jsonEnvioDocumento ; respuestaComunConArchivo = respuestaEnvio System.Windows.MessageBox.Show(enviarDocumentoResponse.MensajeRespuesta); // Temporal para pruebas if (enviarDocumentoResponse.Exito && !string.IsNullOrEmpty(enviarDocumentoResponse.TramaZipCdr)) // Comprobar envío a sunat { if (!Directory.Exists($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}")) { Directory.CreateDirectory($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}"); } File.WriteAllBytes($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}\\{enviarDocumentoResponse.NombreArchivo}.xml", Convert.FromBase64String(firmadoResponse.TramaXmlFirmado)); if (!Directory.Exists($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}\\CDR")) { Directory.CreateDirectory($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}\\CDR"); } File.WriteAllBytes($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}\\CDR\\R-{enviarDocumentoResponse.NombreArchivo}.zip", Convert.FromBase64String(enviarDocumentoResponse.TramaZipCdr)); } } catch (Exception ex) { System.Windows.MessageBox.Show($"A ocurrido un error: {ex}"); } }
public void Envio() { try { //string firmaxml = ""; string rutacertificado = ""; string tipodocumento = ""; string _iddocumento = ""; string[] iddocumento = null; bool todocorrecto = false; if (lista_repositorio != null) { if (lista_repositorio.Count > 0) { empresa = admemp.CargaEmpresa3(1); rutacertificado = @"C:\DOCUMENTOS-" + empresa.Ruc + "\\CERTIFIK\\" + empresa.Certificado; foreach (clsRepositorio r in lista_repositorio) { var tramaXmlSinFirma = Convert.ToBase64String(r.Xml); var firmadoRequest = new FirmadoRequest { TramaXmlSinFirma = tramaXmlSinFirma, CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes(rutacertificado)), PasswordCertificado = empresa.Contrasena, UnSoloNodoExtension = true }; switch (r.Tipodoc) { case 1: tipodocumento = "03"; iddocumento = r.Nombredoc.Split('-'); _iddocumento = iddocumento[2] + "-" + r.Correlativo; break; //boleta case 2: tipodocumento = "01"; iddocumento = r.Nombredoc.Split('-'); _iddocumento = iddocumento[2] + "-" + r.Correlativo; break; //factura case 4: tipodocumento = "07"; iddocumento = r.Nombredoc.Split('-'); _iddocumento = iddocumento[2] + "-" + r.Correlativo; break; //nota credito case 6: tipodocumento = "08"; iddocumento = r.Nombredoc.Split('-'); _iddocumento = iddocumento[2] + "-" + r.Correlativo; break; //nota debito } FirmarController enviar = new FirmarController(); var respuestaFirmado = enviar.FirmadoResponse(firmadoRequest, Convert.ToInt32(tipodocumento)); if (!respuestaFirmado.Exito) { throw new ApplicationException(respuestaFirmado.MensajeError); } var enviarDocumentoRequest = new EnviarDocumentoRequest { Ruc = empresa.Ruc, UsuarioSol = empresa.UsuarioSunat, ClaveSol = empresa.ClaveSunat, //EndPointUrl = "https://www.sunat.gob.pe/ol-ti-itcpgem-sqa/billService", EndPointUrl = "https://e-beta.sunat.gob.pe/ol-ti-itcpfegem-beta/billService", IdDocumento = _iddocumento, TipoDocumento = tipodocumento, TramaXmlFirmado = respuestaFirmado.TramaXmlFirmado }; var respuestaEnvio = new EnviarDocumentoResponse(); EnviarDocumentoController enviarDoc = new EnviarDocumentoController(); respuestaEnvio = enviarDoc.EnviarDocumentoResponse(enviarDocumentoRequest); var rpta = (EnviarDocumentoResponse)respuestaEnvio; if (rpta != null) { if (rpta.CodigoRespuesta == "0") { r.Estadosunat = "0"; r.Mensajesunat = rpta.MensajeRespuesta; String ruta = @"C:\DOCUMENTOS-" + empresa.Ruc + "\\CDR\\" + "R-" + r.Nombredoc + ".zip"; File.WriteAllBytes(ruta, Convert.FromBase64String(rpta.TramaZipCdr)); r.CDR = File.ReadAllBytes(ruta); todocorrecto = clsadmrepo.actualiza_repositorio(r); } else { r.Estadosunat = "-1"; r.Mensajesunat = rpta.MensajeRespuesta; clsadmrepo.actualiza_repositorio(r); } } } if (todocorrecto) { MessageBox.Show("Los documentos fueron enviados de forma correcta"); listar_repositorio(); //Thread.Sleep(5000); //this.Close(); } else { MessageBox.Show("No todos los documentos fueron enviados de forma correcta"); listar_repositorio(); } } } } catch (Exception a) { MessageBox.Show(a.Message); } }
public EnviarDocumentoResponse Post([FromBody] ConsultaTicketRequest request) { var response = new EnviarDocumentoResponse(); try { var conexionSunat = new ConexionSunat(new ConexionSunat.Parametros { Ruc = request.Ruc, UserName = request.UsuarioSol, Password = request.ClaveSol, EndPointUrl = request.EndPointUrl }); var resultado = conexionSunat.ObtenerEstado(request.NroTicket); 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; } catch (Exception ex) { response.MensajeError = ex.Message; response.Pila = ex.StackTrace; response.Exito = false; } } } } } } else { response.Exito = true; response.MensajeRespuesta = resultado.Item1; } } catch (Exception ex) { response.MensajeError = ex.Message; response.Pila = ex.StackTrace; response.Exito = false; } return(response); }
public async void Post(Data_Documentos IE_IdDocumento) { //var task = Task.Factory.StartNew(async () => //{ try { string IdDocumento = IE_IdDocumento.IdDocumento; // var taskfactory etc etc pero para despues "20186C16-C1DC-4717-8F46-407447D225BC" Data_Documentos data_Documento = new Data_Documentos(IdDocumento); // IdDocumento variable global data_Documento.Read_Documento(); GenerarFactura generarFactura = new GenerarFactura(); DocumentoElectronico documento = generarFactura.data(data_Documento); // CAMBIAR A ASINCRONO AL FINALIZAR EL DESARROLLO\ var response = await generarFactura.Post(documento); //await if (!response.Exito) { Data_Log data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = $"El XML con serie correlativo: {documento.SerieCorrelativo} no se pudo generar", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } string rutaArchivo = Path.Combine(data_Documento.Ruta, $"{documento.SerieCorrelativo}.xml"); Firmar firmar = new Firmar(); FirmadoRequest firmadoRequest = firmar.Data(data_Documento.IdEmisor, response.TramaXmlSinFirma); FirmadoResponse firmadoResponse = await firmar.Post(firmadoRequest); // Ya se obtuvo el documento firmado if (firmadoResponse.Exito) // Comprobamos que se haya firmado de forma correcta { Data_Documentos actualizacionXML = new Data_Documentos(IdDocumento) { XmlFirmado = firmadoResponse.TramaXmlFirmado }; if (!actualizacionXML.Update_Documento_OneColumn("[dbo].[Update_Documento_SignedXML]")) { data_Log = new Data_Log() { DetalleError = "Error al actualizar el xmlFirmado del documento", Comentario = "Error con la base de datos", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } else { data_Log = new Data_Log() { DetalleError = response.MensajeError, Comentario = "Error al firmar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } EnviarSunat enviarSunat = new EnviarSunat(); EnviarDocumentoRequest enviarDocumentoRequest = enviarSunat.Data(firmadoResponse.TramaXmlFirmado, data_Documento, GetURL(data_Documento.TipoDocumento)); // Obtenemos los datos para EnviarDocumentoRequest EnviarDocumentoResponse enviarDocumentoResponse = await enviarSunat.Post_Documento(enviarDocumentoRequest); if (enviarDocumentoResponse.Exito && !string.IsNullOrEmpty(enviarDocumentoResponse.TramaZipCdr)) // Comprobar envío a sunat { Data_Documentos actualizacionCDR = new Data_Documentos() { IdDocumento = IdDocumento, CdrSunat = enviarDocumentoResponse.TramaZipCdr }; if (!actualizacionCDR.Update_Documento_OneColumn("[dbo].[Update_Documento_CDR]")) { data_Log = new Data_Log() { DetalleError = "Error al actualizar el CDR del documento", Comentario = "Error con la base de datos: [dbo].[Update_Documento_CDR]", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionComentario = new Data_Documentos() { IdDocumento = IdDocumento, ComentarioDocumento = enviarDocumentoResponse.MensajeRespuesta }; if (!actualizacionComentario.Update_Documento_OneColumn("[dbo].[Update_Documento_Comentario]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando la recepción del CDR del documento", Comentario = "No se pudo guardar el CDR", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionEstadoSunat = new Data_Documentos() { IdDocumento = IdDocumento, EstadoSunat = "Aceptado" }; if (!actualizacionEstadoSunat.Update_Documento_OneColumn("[dbo].[Update_Documento_EstadoSunat]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el estado del documento", Comentario = "No se pudo guardar el estado del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } else { data_Log = new Data_Log() { DetalleError = enviarDocumentoResponse.MensajeError, Comentario = "Error al enviar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); Data_Documentos actualizacionComentario = new Data_Documentos() { IdDocumento = IdDocumento, ComentarioDocumento = enviarDocumentoResponse.MensajeError }; if (!actualizacionComentario.Update_Documento_OneColumn("[dbo].[Update_Documento_Comentario]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el error al no poder recibir el CDR del documento", Comentario = "No se recibió el CDR", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } Data_Documentos actualizacionEstadoSunat = new Data_Documentos() { IdDocumento = IdDocumento, EstadoSunat = "Rechazado" }; if (!actualizacionEstadoSunat.Update_Documento_OneColumn("[dbo].[Update_Documento_EstadoSunat]")) { data_Log = new Data_Log() { DetalleError = "Error al guardar el comentario notificando el estado del documento", Comentario = "No se pudo guardar el estado del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } } } catch (Exception ex) { var msg = string.Concat(ex.InnerException?.Message, ex.Message); data_Log = new Data_Log() { DetalleError = $"Detalle del error: {msg}", Comentario = "Error al procesar el envío del documento", IdUser_Empresa = data_Usuario.IdUser_Empresa }; data_Log.Create_Log(); } //}); //return task; }