public EnviarResumenResponse Post_Figurativo(EnviarDocumentoRequest request, string nombreArchivo) { var response = new EnviarResumenResponse(); var tramaZip = _serializador.GenerarZip(request.TramaXmlFirmado, nombreArchivo, true); _servicioSunatDocumentos.Inicializar(new ParametrosConexion { Ruc = request.Ruc, UserName = request.UsuarioSol, Password = request.ClaveSol, EndPointUrl = request.EndPointUrl }); var resultado = _servicioSunatDocumentos.EnviarResumen(new DocumentoSunat { TramaXml = tramaZip, NombreArchivo = $"{nombreArchivo}.zip" }); if (resultado.Exito) { response.NroTicket = resultado.NumeroTicket; response.Exito = true; response.NombreArchivo = nombreArchivo; } else { response.Exito = false; response.MensajeError = resultado.MensajeError; } return(response); }
public async Task <EnviarResumenResponse> Generar(string organization, ComunicacionBaja model) { EmpresaModel empresa = await _repositoryempresa.Get(organization); model.IdDocumento = string.Format("RA-{0:yyyyMMdd}-001", DateTime.Today); model.FechaEmision = DateTime.Today.ToString(FormatoFecha); model.FechaReferencia = DateTime.Today.AddDays(-1).ToString(FormatoFecha); model.Emisor = HelperTo.ToEmisor(empresa); IEstructuraXml summary = _documentoXml.Generar(model); string XmlSinFirma = await _serializador.GenerarXml(summary); CertificadoDigitalModel certificado = await _repositorycert.GetCertificate(organization); FirmadoRequest firmado = HelperTo.ToSignedModel(certificado, XmlSinFirma, true); FirmadoResponse responseFirma = await _certificador.FirmarXml(firmado); ParametroEmpresaModel parametro = await _repositoryparam.GetConfiguration(certificado.Empresa); EnviarDocumentoRequest request = HelperTo.ToSendVoidedDocument(model, parametro, responseFirma); File.WriteAllBytes("voided.xml", Convert.FromBase64String(responseFirma.TramaXmlFirmado)); EnviarResumenResponse response = new EnviarResumenResponse(); var nombreArchivo = $"{request.Ruc}-{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 }); RespuestaAsincrono resultado = _servicioSunatDocumentos.EnviarResumen(new DocumentoSunat { NombreArchivo = $"{nombreArchivo}.zip", TramaXml = tramaZip }); if (resultado.Exito) { response.NroTicket = resultado.NumeroTicket; response.Exito = true; response.NombreArchivo = nombreArchivo; } else { response.MensajeError = resultado.MensajeError; response.Exito = false; } //guardar la respuesta return(response); }
public async Task <IActionResult> Post(string organization, [FromBody] ComunicacionBaja model) { EnviarResumenResponse response = new EnviarResumenResponse(); try { response = await _service.Generar(organization, model); response.Exito = true; return(Ok(response)); } catch (Exception ex) { throw new SuperFactException(ex.Message, ex.InnerException); } }
public async Task <EnviarResumenResponse> Post([FromBody] EnviarDocumentoRequest request) { var response = new EnviarResumenResponse(); var nombreArchivo = $"{request.Ruc}-{request.IdDocumento}"; try { 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.EnviarResumen(new DocumentoSunat { NombreArchivo = $"{nombreArchivo}.zip", TramaXml = tramaZip }); if (resultado.Exito) { response.NroTicket = resultado.NumeroTicket; response.Exito = true; response.NombreArchivo = nombreArchivo; } else { response.MensajeError = resultado.MensajeError; response.Exito = false; } } catch (Exception ex) { response.MensajeError = ex.Message; response.Pila = ex.StackTrace; response.Exito = false; } return(response); }
public EnviarResumenResponse Post([FromBody] EnviarDocumentoRequest request) { var response = new EnviarResumenResponse(); var serializador = new Serializador(); var nombreArchivo = $"{request.Ruc}-{request.IdDocumento}"; 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 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); }