private static void CrearFactura() { try { Console.WriteLine("Ejemplo Factura"); var documento = new DocumentoElectronico { Emisor = CrearEmisor(), Receptor = new Contribuyente { NroDocumento = "20100039207", TipoDocumento = "6", NombreLegal = "RANSA COMERCIAL S.A." }, IdDocumento = "FF11-001", FechaEmision = DateTime.Today.AddDays(-5).ToString(FormatoFecha), Moneda = "PEN", MontoEnLetras = "SON CIENTO DIECIOCHO SOLES CON 0/100", CalculoIgv = 0.18m, CalculoIsc = 0.10m, CalculoDetraccion = 0.04m, TipoDocumento = "01", TotalIgv = 18, TotalVenta = 118, Gravadas = 100, Items = new List <DetalleDocumento> { new DetalleDocumento { Id = 1, Cantidad = 5, PrecioReferencial = 20, PrecioUnitario = 20, TipoPrecio = "01", CodigoItem = "1234234", Descripcion = "Arroz Costeño", UnidadMedida = "KG", Impuesto = 18, TipoImpuesto = "10", // Gravada TotalVenta = 100, Suma = 100 } } }; Console.WriteLine("Generando XML...."); var client = new RestClient(BaseUrl); var requestInvoice = new RestRequest("GenerarFactura", Method.POST) { RequestFormat = DataFormat.Json }; requestInvoice.AddBody(documento); var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice); if (!documentoResponse.Data.Exito) { throw new ApplicationException(documentoResponse.Data.MensajeError); } Console.WriteLine("Firmando XML..."); // Firmado del Documento. var firmado = new FirmadoRequest { TramaXmlSinFirma = documentoResponse.Data.TramaXmlSinFirma, CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes("certificado.pfx")), PasswordCertificado = string.Empty, UnSoloNodoExtension = false }; var requestFirma = new RestRequest("Firmar", Method.POST) { RequestFormat = DataFormat.Json }; requestFirma.AddBody(firmado); var responseFirma = client.Execute <FirmadoResponse>(requestFirma); if (!responseFirma.Data.Exito) { throw new ApplicationException(responseFirma.Data.MensajeError); } Console.WriteLine("Enviando a SUNAT...."); var sendBill = new EnviarDocumentoRequest { Ruc = documento.Emisor.NroDocumento, UsuarioSol = "MODDATOS", ClaveSol = "MODDATOS", EndPointUrl = UrlSunat, IdDocumento = documento.IdDocumento, TipoDocumento = documento.TipoDocumento, TramaXmlFirmado = responseFirma.Data.TramaXmlFirmado }; var requestSendBill = new RestRequest("EnviarDocumento", Method.POST) { RequestFormat = DataFormat.Json }; requestSendBill.AddBody(sendBill); var responseSendBill = client.Execute <EnviarDocumentoResponse>(requestSendBill); if (!responseSendBill.Data.Exito) { throw new ApplicationException(responseSendBill.Data.MensajeError); } Console.WriteLine("Respuesta de SUNAT:"); Console.WriteLine(responseSendBill.Data.MensajeRespuesta); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.ReadLine(); } }
private static void CrearComunicacionBaja() { try { Console.WriteLine("Ejemplo de Comunicación de Baja"); var documentoBaja = new ComunicacionBaja { IdDocumento = string.Format("RA-{0:yyyyMMdd}-001", DateTime.Today), FechaEmision = DateTime.Today.ToString(FormatoFecha), FechaReferencia = DateTime.Today.AddDays(-1).ToString(FormatoFecha), Emisor = CrearEmisor(), Bajas = new List <DocumentoBaja>() }; documentoBaja.Bajas.Add(new DocumentoBaja { Id = 1, Correlativo = "33386", TipoDocumento = "03", Serie = "BB50", MotivoBaja = "Anulación por otro tipo de documento" }); documentoBaja.Bajas.Add(new DocumentoBaja { Id = 2, Correlativo = "86486", TipoDocumento = "01", Serie = "FF14", MotivoBaja = "Anulación por otro datos erroneos" }); Console.WriteLine("Generando XML...."); var client = new RestClient(BaseUrl); var requestInvoice = new RestRequest("GenerarComunicacionBaja", Method.POST) { RequestFormat = DataFormat.Json }; requestInvoice.AddBody(documentoBaja); var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice); if (!documentoResponse.Data.Exito) { throw new ApplicationException(documentoResponse.Data.MensajeError); } Console.WriteLine("Firmando XML..."); // Firmado del Documento. var firmado = new FirmadoRequest { TramaXmlSinFirma = documentoResponse.Data.TramaXmlSinFirma, CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes("Certificado.pfx")), PasswordCertificado = string.Empty, UnSoloNodoExtension = true }; var requestFirma = new RestRequest("Firmar", Method.POST) { RequestFormat = DataFormat.Json }; requestFirma.AddBody(firmado); var responseFirma = client.Execute <FirmadoResponse>(requestFirma); if (!responseFirma.Data.Exito) { throw new ApplicationException(responseFirma.Data.MensajeError); } Console.WriteLine("Enviando a SUNAT...."); var sendBill = new EnviarDocumentoRequest { Ruc = documentoBaja.Emisor.NroDocumento, UsuarioSol = "MODDATOS", ClaveSol = "MODDATOS", EndPointUrl = UrlSunat, IdDocumento = documentoBaja.IdDocumento, TramaXmlFirmado = responseFirma.Data.TramaXmlFirmado }; var restRequest = new RestRequest("EnviarResumen", Method.POST) { RequestFormat = DataFormat.Json }; restRequest.AddBody(sendBill); var restResponse = client.Execute <EnviarResumenResponse>(restRequest); if (!restResponse.Data.Exito) { throw new ApplicationException(restResponse.Data.MensajeError); } Console.WriteLine("Nro de Ticket: {0}", restResponse.Data.NroTicket); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.ReadLine(); } }
private static void CrearDocumentoRetencion() { try { Console.WriteLine("Ejemplo de Retención"); var documento = new DocumentoRetencion { Emisor = CrearEmisor(), Receptor = new Contribuyente { NroDocumento = "20100039207", TipoDocumento = "6", NombreLegal = "RANSA COMERCIAL S.A.", Ubigeo = "150101", Direccion = "Av. Argentina 2833", Urbanizacion = "-", Departamento = "CALLAO", Provincia = "CALLAO", Distrito = "CALLAO" }, IdDocumento = "R001-123", FechaEmision = DateTime.Today.ToString(FormatoFecha), Moneda = "PEN", RegimenRetencion = "01", TasaRetencion = 3, ImporteTotalRetenido = 300, ImporteTotalPagado = 10000, Observaciones = "Emision de Facturas del periodo Dic. 2016", DocumentosRelacionados = new List <ItemRetencion> { new ItemRetencion { NroDocumento = "E001-457", TipoDocumento = "01", MonedaDocumentoRelacionado = "USD", FechaEmision = DateTime.Today.AddDays(-3).ToString(FormatoFecha), ImporteTotal = 10000, FechaPago = DateTime.Today.ToString(FormatoFecha), NumeroPago = 153, ImporteSinRetencion = 9700, ImporteRetenido = 300, FechaRetencion = DateTime.Today.ToString(FormatoFecha), ImporteTotalNeto = 10000, TipoCambio = 3.41m, FechaTipoCambio = DateTime.Today.ToString(FormatoFecha) } } }; Console.WriteLine("Generando XML...."); var client = new RestClient(BaseUrl); var requestRetencion = new RestRequest("GenerarRetencion", Method.POST) { RequestFormat = DataFormat.Json }; requestRetencion.AddBody(documento); var documentoResponse = client.Execute <DocumentoResponse>(requestRetencion); if (!documentoResponse.Data.Exito) { throw new ApplicationException(documentoResponse.Data.MensajeError); } Console.WriteLine("Firmando XML..."); // Firmado del Documento. var firmado = new FirmadoRequest { TramaXmlSinFirma = documentoResponse.Data.TramaXmlSinFirma, CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes("certificado.pfx")), PasswordCertificado = string.Empty, UnSoloNodoExtension = true }; var requestFirma = new RestRequest("Firmar", Method.POST) { RequestFormat = DataFormat.Json }; requestFirma.AddBody(firmado); var responseFirma = client.Execute <FirmadoResponse>(requestFirma); if (!responseFirma.Data.Exito) { throw new ApplicationException(responseFirma.Data.MensajeError); } Console.WriteLine("Enviando Retención a SUNAT...."); var sendBill = new EnviarDocumentoRequest { Ruc = documento.Emisor.NroDocumento, UsuarioSol = "MODDATOS", ClaveSol = "MODDATOS", EndPointUrl = "https://e-beta.sunat.gob.pe/ol-ti-itemision-otroscpe-gem-beta/billService", IdDocumento = documento.IdDocumento, TipoDocumento = "20", TramaXmlFirmado = responseFirma.Data.TramaXmlFirmado }; var requestSendBill = new RestRequest("EnviarDocumento", Method.POST) { RequestFormat = DataFormat.Json }; requestSendBill.AddBody(sendBill); var responseSendBill = client.Execute <EnviarDocumentoResponse>(requestSendBill); if (!responseSendBill.Data.Exito) { throw new ApplicationException(responseSendBill.Data.MensajeError); } Console.WriteLine("Respuesta de SUNAT:"); Console.WriteLine(responseSendBill.Data.MensajeRespuesta); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.ReadLine(); } }
private async void btnGen_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; } 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 }; var jsonFirmado = await _client.PostAsJsonAsync("api/Firmar", firmadoRequest); var respuestaFirmado = await jsonFirmado.Content.ReadAsAsync <FirmadoResponse>(); if (!respuestaFirmado.Exito) { throw new ApplicationException(respuestaFirmado.MensajeError); } var enviarDocumentoRequest = new EnviarDocumentoRequest { Ruc = txtNroRuc.Text, UsuarioSol = txtUsuarioSol.Text, ClaveSol = txtClaveSol.Text, EndPointUrl = ValorSeleccionado(), IdDocumento = txtSerieCorrelativo.Text, TipoDocumento = codigoTipoDoc, TramaXmlFirmado = respuestaFirmado.TramaXmlFirmado }; var apiMetodo = rbResumen.Checked ? "api/EnviarResumen" : "api/EnviarDocumento"; var jsonEnvioDocumento = await _client.PostAsJsonAsync(apiMetodo, enviarDocumentoRequest); var respuestaEnvio = await jsonEnvioDocumento.Content.ReadAsAsync <EnviarDocumentoResponse>(); if (!respuestaEnvio.Exito) { throw new ApplicationException(respuestaEnvio.MensajeError); } txtResult.Text = $"{Resources.procesoCorrecto}{Environment.NewLine}{respuestaEnvio.MensajeRespuesta}"; try { File.WriteAllBytes($"{Program.CarpetaXml}\\{respuestaEnvio.NombreArchivo}.xml", Convert.FromBase64String(respuestaFirmado.TramaXmlFirmado)); File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{respuestaEnvio.NombreArchivo}.zip", Convert.FromBase64String(respuestaEnvio.TramaZipCdr)); } catch (Exception ex) { MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } if (chkVoz.Checked) { Hablar(); } } catch (Exception ex) { txtResult.Text = ex.Message; } finally { Cursor = Cursors.Default; } }
private static void CrearResumenDiario() { try { Console.WriteLine("Ejemplo de Resumen Diario"); var documentoResumenDiario = new ResumenDiarioNuevo { IdDocumento = string.Format("RC-{0:yyyyMMdd}-001", DateTime.Today), FechaEmision = DateTime.Today.ToString(FormatoFecha), FechaReferencia = DateTime.Today.AddDays(-1).ToString(FormatoFecha), Emisor = CrearEmisor(), Resumenes = new List <GrupoResumenNuevo>() }; documentoResumenDiario.Resumenes.Add(new GrupoResumenNuevo { Id = 1, TipoDocumento = "03", IdDocumento = "BB14-33386", NroDocumentoReceptor = "41614074", TipoDocumentoReceptor = "1", CodigoEstadoItem = 1, Moneda = "PEN", TotalVenta = 190.9m, TotalIgv = 29.12m, Gravadas = 161.78m, }); documentoResumenDiario.Resumenes.Add(new GrupoResumenNuevo { Id = 2, TipoDocumento = "03", IdDocumento = "BB30-33384", NroDocumentoReceptor = "08506678", TipoDocumentoReceptor = "1", CodigoEstadoItem = 1, Moneda = "USD", TotalVenta = 9580m, TotalIgv = 1411.36m, Gravadas = 8168.64m, }); Console.WriteLine("Generando XML...."); var client = new RestClient(BaseUrl); var requestInvoice = new RestRequest("GenerarResumenDiario/v2", Method.POST) { RequestFormat = DataFormat.Json }; requestInvoice.AddBody(documentoResumenDiario); var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice); if (!documentoResponse.Data.Exito) { throw new ApplicationException(documentoResponse.Data.MensajeError); } File.WriteAllBytes("resumendiario.xml", Convert.FromBase64String(documentoResponse.Data.TramaXmlSinFirma)); Console.WriteLine("Firmando XML..."); // Firmado del Documento. var firmado = new FirmadoRequest { TramaXmlSinFirma = documentoResponse.Data.TramaXmlSinFirma, CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes("Certificado.pfx")), PasswordCertificado = string.Empty, UnSoloNodoExtension = true }; var requestFirma = new RestRequest("Firmar", Method.POST) { RequestFormat = DataFormat.Json }; requestFirma.AddBody(firmado); var responseFirma = client.Execute <FirmadoResponse>(requestFirma); if (!responseFirma.Data.Exito) { throw new ApplicationException(responseFirma.Data.MensajeError); } Console.WriteLine("Enviando a SUNAT...."); var sendBill = new EnviarDocumentoRequest { Ruc = documentoResumenDiario.Emisor.NroDocumento, UsuarioSol = "MODDATOS", ClaveSol = "MODDATOS", EndPointUrl = UrlSunat, IdDocumento = documentoResumenDiario.IdDocumento, TramaXmlFirmado = responseFirma.Data.TramaXmlFirmado }; var restRequest = new RestRequest("EnviarResumen", Method.POST) { RequestFormat = DataFormat.Json }; restRequest.AddBody(sendBill); var restResponse = client.Execute <EnviarResumenResponse>(restRequest); if (!restResponse.Data.Exito) { throw new ApplicationException(restResponse.Data.MensajeError); } Console.WriteLine("Nro de Ticket: {0}", restResponse.Data.NroTicket); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.ReadLine(); } }
public void EnvioSunat() { try { var estadoProceso = Negocio.Helper.ObtenerValorParametro("ESTADO_SERVICIO_WINDOWS").ToString(); if (estadoProceso.Equals("P")) { return; } if (estadoProceso.Equals("N")) { Negocio.Helper.ActualizarColumnasTabla("ParametrosGlobales", new string[] { "ValorParametro" }, new string[] { "P" }, new string[] { "NombreParametro" }, new string[] { "ESTADO_SERVICIO_WINDOWS" }); var ventaPendienteListaInfo = new Venta().Listar(0).Where(v => v.Exito.Equals(0)).ToList(); foreach (var v in ventaPendienteListaInfo) { //var ventaId = 1; var ventaId = v.VentaId; var mensaje = String.Empty; //var usuarioInfo = ObtenerUsuarioInfo(); var usuarioInfo = new Usuario().Listar(1, "", "", "", 0, 0).FirstOrDefault(); var ventaInfo = new Venta().Listar(ventaId).FirstOrDefault(); var ventaDetalleInfo = new Venta().ListarDetalle(ventaId, 0); var empresaInfo = new Empresa().Listar(usuarioInfo.EmpresaId).FirstOrDefault(); var clienteInfo = new Cliente().Listar(ventaInfo.ClienteId).FirstOrDefault(); _documento = new DocumentoElectronico(); #region Documento _documento.CalculoDetraccion = 0; _documento.CalculoIgv = Decimal.Divide(18, 100); _documento.CalculoIsc = 0; _documento.DescuentoGlobal = ventaInfo.Descuento; // _documento.DocAnticipo = String.Empty; #region Emisor var emisor = new DocumentoElectronico().Emisor; emisor.Departamento = empresaInfo.Departamento; //emisor.Departamento = "LIMA"; emisor.Direccion = empresaInfo.Direccion; //emisor.Direccion = "LADERAS DE CHILLON"; emisor.Distrito = empresaInfo.Distrito; //emisor.Distrito = "PUENTE PIEDRA"; emisor.NombreComercial = empresaInfo.RazonSocial; emisor.NombreLegal = empresaInfo.RazonSocial; //emisor.NombreComercial = "ABARCA URBANO"; //emisor.NombreLegal = "MIGUEL ABARCA URBANO"; //emisor.NroDocumento = empresaInfo.NumeroDocumento; emisor.NroDocumento = "10421895452"; emisor.Provincia = empresaInfo.Provincia; //emisor.Provincia = "LIMA"; emisor.TipoDocumento = empresaInfo.TipoDocumentoId.ToString(); emisor.Ubigeo = empresaInfo.Departamento; emisor.Urbanizacion = empresaInfo.Direccion; //emisor.Urbanizacion = "LADERAS DE CHILLON"; _documento.Emisor = emisor; #endregion _documento.Exoneradas = 0; _documento.FechaEmision = ventaInfo.FechaEmision.ToString("dd/MM/yyyy"); //_documento.FechaEmision = "2017-11-27"; _documento.Gratuitas = 0; _documento.Gravadas = ventaInfo.MontoVenta; //_documento.Gravadas = 1000; _documento.IdDocumento = ventaInfo.NumeroSerie + "-" + ventaInfo.NumeroComprobante; _documento.Inafectas = 0; #region Items var itemId = 1; foreach (var vd in ventaDetalleInfo) { var item = new DetalleDocumento(); item.Cantidad = vd.Cantidad; // item.CodigoItem = vd.Codigo; item.Descripcion = vd.Producto; //item.Descuento = vd.Descuento; item.Id = itemId; itemId++; item.Impuesto = vd.Igv; //item.ImpuestoSelectivo = 0; //item.OtroImpuesto = 0; //item.PrecioReferencial = 0; item.PrecioUnitario = vd.PrecioUnitario; item.Suma = vd.SubTotal; //item.TipoImpuesto = "10"; //item.TipoPrecio = "01"; item.TotalVenta = vd.MontoTotal; item.UnidadMedida = vd.UnidadMedida; //item.CodigoItem = "A0001"; item.Descuento = 0; //item.Id = 1; item.ImpuestoSelectivo = 0; item.OtroImpuesto = 0; item.PrecioReferencial = 0; // item.PrecioUnitario = 50; item.TipoImpuesto = "10"; item.TipoPrecio = "01"; // item.UnidadMedida = "NIU"; _documento.Items.Add(item); } #endregion _documento.Moneda = ventaInfo.MonedaId.Equals(Constantes.MonedaSoles) ? Constantes.MonedaSolesSunat : Constantes.MonedaDolaresSunat; // _documento.MonedaAnticipo = 0.18; _documento.MontoAnticipo = 0; _documento.MontoDetraccion = 0; _documento.MontoEnLetras = Herramientas.NumeroALetras.numeroAletras(ventaInfo.MontoVenta); //_documento.MontoEnLetras = "MIL"; _documento.MontoPercepcion = 0; // _documento.PlacaVehiculo = ventaInfo.Placa; #region Receptor var receptor = new DocumentoElectronico().Receptor; receptor.Departamento = clienteInfo.Departamento; receptor.Direccion = clienteInfo.Direccion; receptor.Distrito = clienteInfo.Distrito; receptor.NombreComercial = clienteInfo.RazonSocial; receptor.NombreLegal = clienteInfo.RazonSocial; //receptor.NombreComercial = "RENE ABARCA URBANO"; //receptor.NombreLegal = "RENE ABARCA URBANO"; //receptor.NroDocumento = clienteInfo.NumeroDocumento; receptor.NroDocumento = "10415787796"; receptor.Provincia = clienteInfo.Provincia; receptor.TipoDocumento = clienteInfo.TipoDocumentoId.ToString(); receptor.Ubigeo = clienteInfo.Departamento; receptor.Urbanizacion = clienteInfo.Direccion; _documento.Receptor = receptor; #endregion // _documento.TipoDocAnticipo = 0; _documento.TipoDocumento = ventaInfo.TipoComprobanteId; // _documento.TipoOperacion = ventaInfo.TipoOperacionId; _documento.TotalIgv = ventaInfo.MontoImpuesto; //_documento.TotalIgv = 180; _documento.TotalIsc = 0; _documento.TotalOtrosTributos = 0; _documento.TotalVenta = ventaInfo.MontoTotal; //_documento.TotalVenta = 1180; #endregion //var proxy = new HttpClient { BaseAddress = new Uri(ConfigurationManager.AppSettings["UrlOpenInvoicePeruApi"]) }; string metodoApi; switch (_documento.TipoDocumento) { case "07": metodoApi = "api/GenerarNotaCredito"; break; case "08": metodoApi = "api/GenerarNotaDebito"; break; default: metodoApi = "api/GenerarFactura"; break; } //var response = await proxy.PostAsJsonAsync(metodoApi, _documento); //var respuesta = await response.Content.ReadAsAsync<DocumentoResponse>(); #region Generando XML var client = new RestClient(BaseUrl); var requestInvoice = new RestRequest("GenerarFactura", Method.POST) { RequestFormat = DataFormat.Json }; requestInvoice.AddBody(_documento); var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice); if (!documentoResponse.Data.Exito) { throw new ApplicationException(documentoResponse.Data.MensajeError); } //string rutaXml = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + ".xml"); string rutaXml = @"D:\ASOLUTIONS\APU\APU.Presentacion\Archivos\Facturacion\XML\" + _documento.IdDocumento + ".xml"; File.WriteAllBytes(rutaXml, Convert.FromBase64String(documentoResponse.Data.TramaXmlSinFirma)); #endregion #region Firma //string rutaCertificado = HostingEnvironment.MapPath("~/Archivos/Facturacion/certificado.pfx"); var rutaCertificado = @"D:\ASOLUTIONS\APU\APU.Presentacion\certificado.pfx"; var firmado = new FirmadoRequest { TramaXmlSinFirma = documentoResponse.Data.TramaXmlSinFirma, //CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes("certificado.pfx")), CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes(rutaCertificado)), PasswordCertificado = string.Empty, UnSoloNodoExtension = false }; var requestFirma = new RestRequest("Firmar", Method.POST) { RequestFormat = DataFormat.Json }; requestFirma.AddBody(firmado); var responseFirma = client.Execute <FirmadoResponse>(requestFirma); if (!responseFirma.Data.Exito) { throw new ApplicationException(responseFirma.Data.MensajeError); } //string rutaXmlFirmado = HostingEnvironment.MapPath("~/Archivos/Facturacion/XML/" + _documento.IdDocumento + "_Firmado.xml"); string rutaXmlFirmado = @"D:\ASOLUTIONS\APU\APU.Presentacion\Archivos\Facturacion\XML\" + _documento.IdDocumento + "_Firmado.xml"; File.WriteAllBytes(rutaXmlFirmado, Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado)); #endregion #region Envio SUNAT var sendBill = new EnviarDocumentoRequest { //Ruc = _documento.Emisor.NroDocumento, Ruc = "10421895452", //UsuarioSol = "MODDATOS", UsuarioSol = "MMINSIOT", //ClaveSol = "MODDATOS", ClaveSol = "saywalcod", EndPointUrl = UrlSunat, IdDocumento = _documento.IdDocumento, TipoDocumento = _documento.TipoDocumento, TramaXmlFirmado = responseFirma.Data.TramaXmlFirmado }; var requestSendBill = new RestRequest("EnviarDocumento", Method.POST) { RequestFormat = DataFormat.Json }; requestSendBill.AddBody(sendBill); var responseSendBill = client.Execute <EnviarDocumentoResponse>(requestSendBill); if (!responseSendBill.Data.Exito) { // throw new ApplicationException(responseSendBill.Data.MensajeError); } else { //string rutaCdr = HostingEnvironment.MapPath("~/Archivos/Facturacion/CDR/" + responseSendBill.Data.NombreArchivo + ".zip"); string rutaCdr = @"D:\ASOLUTIONS\APU\APU.Presentacion\Archivos\Facturacion\CDR\" + responseSendBill.Data.NombreArchivo + ".zip"; File.WriteAllBytes(rutaCdr, Convert.FromBase64String(responseSendBill.Data.TramaZipCdr)); } //Console.WriteLine("Respuesta de SUNAT:"); //Console.WriteLine(responseSendBill.Data.MensajeRespuesta); var data = responseSendBill.Data; mensaje = data.Exito ? data.MensajeRespuesta : data.MensajeError; var ventaSunatInfo = new VentaSunatInfo(); ventaSunatInfo.VentaId = ventaId; ventaSunatInfo.CodigoRespuesta = (data.CodigoRespuesta == null) ? String.Empty : data.CodigoRespuesta; ventaSunatInfo.Exito = data.Exito ? 1 : 0; ventaSunatInfo.MensajeError = (data.MensajeError == null) ? String.Empty : data.MensajeError; ventaSunatInfo.MensajeRespuesta = (data.MensajeRespuesta == null) ? String.Empty : data.MensajeRespuesta; ventaSunatInfo.NombreArchivo = (data.NombreArchivo == null) ? String.Empty : data.NombreArchivo; ventaSunatInfo.Pila = (data.Pila == null) ? String.Empty : data.Pila; ventaSunatInfo.TramaZipCdr = (data.TramaZipCdr == null) ? String.Empty : data.TramaZipCdr; ventaSunatInfo.UsuarioCreacionId = usuarioInfo.UsuarioId; new VentaSunat().Insertar(ventaSunatInfo); #endregion } } } catch (Exception ex) { // Console.WriteLine(e); System.Diagnostics.EventLog.WriteEntry("MyEventSource", ex.StackTrace, System.Diagnostics.EventLogEntryType.Warning); } }
private async void BtnGen_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; case 8: codigoTipoDoc = "09"; break; default: codigoTipoDoc = "01"; break; } 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 }; ICertificador certificador = new Certificador(); var respuestaFirmado = await new Firmar(certificador).Post(firmadoRequest); if (!respuestaFirmado.Exito) { throw new ApplicationException(respuestaFirmado.MensajeError); } var enviarDocumentoRequest = new EnviarDocumentoRequest { Ruc = txtNroRuc.Text, UsuarioSol = txtUsuarioSol.Text, ClaveSol = txtClaveSol.Text, EndPointUrl = ValorSeleccionado(), IdDocumento = txtSerieCorrelativo.Text, TipoDocumento = codigoTipoDoc, TramaXmlFirmado = respuestaFirmado.TramaXmlFirmado }; ISerializador serializador = new Serializador(); IServicioSunatDocumentos servicioSunatDocumentos = new ServicioSunatDocumentos(); RespuestaComunConArchivo respuestaEnvio; if (rbResumen.Checked && codigoTipoDoc != "09") { respuestaEnvio = await new EnviarResumen(serializador, servicioSunatDocumentos).Post(enviarDocumentoRequest); } else { respuestaEnvio = await new EnviarDocumento(serializador, servicioSunatDocumentos).Post(enviarDocumentoRequest); } if (!rbResumen.Checked) { var rpta = (EnviarDocumentoResponse)respuestaEnvio; txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{rpta.MensajeRespuesta} siendo las {DateTime.Now}"; try { if (rpta.Exito && !string.IsNullOrEmpty(rpta.TramaZipCdr)) { File.WriteAllBytes($"{Program.CarpetaXml}\\{respuestaEnvio.NombreArchivo}.xml", Convert.FromBase64String(respuestaFirmado.TramaXmlFirmado)); File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{respuestaEnvio.NombreArchivo}.zip", Convert.FromBase64String(rpta.TramaZipCdr)); } } catch (Exception ex) { MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { var rpta = (EnviarResumenResponse)respuestaEnvio; txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{rpta.NroTicket}"; } if (!respuestaEnvio.Exito) { throw new ApplicationException(respuestaEnvio.MensajeError); } if (chkVoz.Checked) { Hablar(); } } catch (Exception ex) { txtResult.Text = ex.Message; } finally { Cursor = Cursors.Default; } }
private static void CrearResumenDiario() { try { Console.WriteLine("Ejemplo de Resumen Diario"); var documentoResumenDiario = new ResumenDiario { IdDocumento = string.Format("RC-{0:yyyyMMdd}-001", DateTime.Today), FechaEmision = DateTime.Today.ToString("yyyy-MM-dd"), FechaReferencia = DateTime.Today.AddDays(-1).ToString("yyyy-MM-dd"), Emisor = CrearEmisor(), Resumenes = new List <GrupoResumen>() }; documentoResumenDiario.Resumenes.Add(new GrupoResumen { Id = 1, CorrelativoInicio = 33386, CorrelativoFin = 33390, Moneda = "PEN", TotalVenta = 190.9m, TotalIgv = 29.12m, Gravadas = 161.78m, Exoneradas = 0, Exportacion = 0, TipoDocumento = "03", Serie = "BB50" }); documentoResumenDiario.Resumenes.Add(new GrupoResumen { Id = 2, CorrelativoInicio = 40000, CorrelativoFin = 40500, Moneda = "PEN", TotalVenta = 9580m, TotalIgv = 1411.36m, Gravadas = 8168.64m, Exoneradas = 0, Exportacion = 0, TipoDocumento = "03", Serie = "BB30" }); Console.WriteLine("Generando XML...."); var client = new RestClient(BaseUrl); var requestInvoice = new RestRequest("GenerarResumenDiario", Method.POST) { RequestFormat = DataFormat.Json }; requestInvoice.AddBody(documentoResumenDiario); var documentoResponse = client.Execute <DocumentoResponse>(requestInvoice); if (!documentoResponse.Data.Exito) { throw new ApplicationException(documentoResponse.Data.MensajeError); } Console.WriteLine("Firmando XML..."); // Firmado del Documento. var firmado = new FirmadoRequest { TramaXmlSinFirma = documentoResponse.Data.TramaXmlSinFirma, CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes("Certificado.pfx")), PasswordCertificado = string.Empty, UnSoloNodoExtension = true }; var requestFirma = new RestRequest("Firmar", Method.POST) { RequestFormat = DataFormat.Json }; requestFirma.AddBody(firmado); var responseFirma = client.Execute <FirmadoResponse>(requestFirma); if (!responseFirma.Data.Exito) { throw new ApplicationException(responseFirma.Data.MensajeError); } Console.WriteLine("Enviando a SUNAT...."); var sendBill = new EnviarDocumentoRequest { Ruc = documentoResumenDiario.Emisor.NroDocumento, UsuarioSol = "MODDATOS", ClaveSol = "MODDATOS", EndPointUrl = UrlSunat, IdDocumento = documentoResumenDiario.IdDocumento, TramaXmlFirmado = responseFirma.Data.TramaXmlFirmado }; var requestSendBill = new RestRequest("EnviarResumen", Method.POST) { RequestFormat = DataFormat.Json }; requestSendBill.AddBody(sendBill); var responseSendBill = client.Execute <EnviarDocumentoResponse>(requestSendBill); if (!responseSendBill.Data.Exito) { throw new ApplicationException(responseSendBill.Data.MensajeError); } File.WriteAllBytes(string.Format(".\\{0}.xml", responseSendBill.Data.NombreArchivo), Convert.FromBase64String(responseFirma.Data.TramaXmlFirmado)); File.WriteAllBytes(string.Format(".\\R-{0}.zip", responseSendBill.Data.NombreArchivo), Convert.FromBase64String(responseSendBill.Data.TramaZipCdr)); Console.WriteLine("Respuesta de SUNAT:"); Console.WriteLine(responseSendBill.Data.MensajeRespuesta); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.ReadLine(); } }
/// <summary> /// Firma y envia el documento xml a la SUNAT /// </summary> /// <param name="xmlSinFirma"></param> /// <param name="tipoDoc"></param> /// <param name="IdDocumento"></param> /// <param name="emisorNroDocumento"></param> /// <param name="rbResumen">Indicar si el documento a enviar es un resumen de boletas</param> /// <param name="RetencPercepGRem">Indicar si el documento a enviar es de retenciones</param> /// <returns></returns> async Task FirmaYEnviaASunat(String tramaXmlSinFirma, String codigoTipoDoc, String IdDocumento, String emisorNroDocumento, bool rbResumen, bool RetencPercepGRem, bool baja) { if (string.IsNullOrEmpty(IdDocumento)) { throw new InvalidOperationException("La Serie y el Correlativo no pueden estar vacíos"); } var firmadoRequest = new FirmadoRequest { TramaXmlSinFirma = tramaXmlSinFirma, //CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes(_txtRutaCertificado)), CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes(trxVenta.Ruta_clave)), PasswordCertificado = trxVenta.Contrasenia_clave, // txtPassCertificado.Text, UnSoloNodoExtension = RetencPercepGRem || rbResumen || baja }; var jsonFirmado = await _client.PostAsJsonAsync("api/Firmar", firmadoRequest); jsonFirmado.EnsureSuccessStatusCode(); var respuestaFirmado = await jsonFirmado.Content.ReadAsAsync <FirmadoResponse>(); if (!respuestaFirmado.Exito) { throw new ApplicationException(string.Concat("Excepción al firmar antes de enviar a la Sunat. ", respuestaFirmado.MensajeError)); } if (!_Param.seguridadIntegrada) { String RutaArchivo = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"{trxVenta.DocElectronico.IdDocumento}frmdo.xml"); byte[] bTramaXmlSinFirma = Convert.FromBase64String(respuestaFirmado.TramaXmlFirmado); File.WriteAllBytes(RutaArchivo, bTramaXmlSinFirma); } var enviarDocumentoRequest = new EnviarDocumentoRequest { Ruc = emisorNroDocumento, // txtNroRuc.Text, UsuarioSol = trxVenta.Ruta_certificadoPac, //txtUsuarioSol.Text, ClaveSol = trxVenta.Contrasenia_clavePac, EndPointUrl = _Param.URLwebServPAC, IdDocumento = IdDocumento, TipoDocumento = codigoTipoDoc, TramaXmlFirmado = respuestaFirmado.TramaXmlFirmado }; var apiMetodo = (rbResumen || baja) && codigoTipoDoc != "09" ? "api/EnviarResumen" : "api/EnviarDocumento"; var jsonEnvioDocumento = await _client.PostAsJsonAsync(apiMetodo, enviarDocumentoRequest); jsonEnvioDocumento.EnsureSuccessStatusCode(); RespuestaComunConArchivo respuestaEnvio; if (rbResumen || baja) { tramaXmlFirmado = respuestaFirmado.TramaXmlFirmado; respuestaEnvio = await jsonEnvioDocumento.Content.ReadAsAsync <EnviarResumenResponse>(); var rpta = (EnviarResumenResponse)respuestaEnvio; nroTicket = string.IsNullOrEmpty(rpta.NroTicket) ? String.Empty : rpta.NroTicket; //txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{rpta.NroTicket}"; if (!respuestaEnvio.Exito) { throw new ApplicationException(string.Concat("La respuesta de la Sunat es negativa para el resumen o baja. ", respuestaEnvio.MensajeError)); } } else { respuestaEnvio = await jsonEnvioDocumento.Content.ReadAsAsync <EnviarDocumentoResponse>(); var rpta = (EnviarDocumentoResponse)respuestaEnvio; //txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{rpta.MensajeRespuesta} siendo las {DateTime.Now}"; if (rpta.Exito) { if (!string.IsNullOrEmpty(rpta.TramaZipCdr)) { tramaXmlFirmado = respuestaFirmado.TramaXmlFirmado; tramaZipCdr = rpta.TramaZipCdr; nombreArchivoCdr = $"R-{respuestaEnvio.NombreArchivo}.zip"; _codigoRespuesta = rpta.CodigoRespuesta; int iCodRespuesta = 0; if (Int32.TryParse(rpta.CodigoRespuesta, out iCodRespuesta)) { if (iCodRespuesta >= 100 && iCodRespuesta < 2000) { throw new ApplicationException(string.Concat("La SUNAT no procesó el comprobante. Codigo: ", rpta.CodigoRespuesta, " ", rpta.MensajeError, Environment.NewLine, rpta.MensajeRespuesta, " Corrija el problema e intente nuevamente.")); } } else { throw new ApplicationException(string.Concat("Código de respuesta desconocido. ", rpta.CodigoRespuesta, " ", rpta.MensajeError, Environment.NewLine, rpta.MensajeRespuesta)); } } else { throw new ApplicationException("La SUNAT no devolvió correctamente el comprobante de recepción. Verifique en el sitio web de la SUNAT."); } } else { throw new ApplicationException(string.Concat("La SUNAT no pudo procesar el comprobante. Intente más tarde. ", rpta.CodigoRespuesta, " ", rpta.MensajeError, Environment.NewLine, rpta.MensajeRespuesta)); } } }
private async void CrearBajas() { try { if (string.IsNullOrEmpty(vFechaXml)) { throw new InvalidOperationException("La Serie y el Correlativo no pueden estar vacíos"); } var tramaXmlSinFirma = Convert.ToBase64String(File.ReadAllBytes(vArchivoXML)); String vRutaCertificado = Convert.ToString(DtEmpresa.Rows[0]["CarpetaCertificadoDigital"]) + Convert.ToString(DtEmpresa.Rows[0]["NombreCertificadoDigital"]); var firmadoRequest = new FirmadoRequest { TramaXmlSinFirma = tramaXmlSinFirma, CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes(vRutaCertificado)), PasswordCertificado = Convert.ToString(DtEmpresa.Rows[0]["PasswCertificadoDigital"]), UnSoloNodoExtension = true }; var jsonFirmado = await _client.PostAsJsonAsync("api/Firmar", firmadoRequest); var respuestaFirmado = await jsonFirmado.Content.ReadAsAsync <FirmadoResponse>(); File.WriteAllBytes(vArchivoXML, Convert.FromBase64String(respuestaFirmado.TramaXmlFirmado)); ReemplaCaracteres(Convert.ToString(vArchivoXML)); if (!respuestaFirmado.Exito) { throw new ApplicationException(respuestaFirmado.MensajeError); } var TramaXML = Convert.ToBase64String(File.ReadAllBytes(vArchivoXML)); var enviarDocumentoRequest = new EnviarDocumentoRequest { UsuarioSol = Convert.ToString(DtEmpresa.Rows[0]["EmpresaUsuarioSol"]), ClaveSol = Convert.ToString(DtEmpresa.Rows[0]["EmpresaClaveSol"]), EndPointUrl = vUrlSunat, IdDocumento = vFechaXml, TipoDocumento = vTipoDoc, TramaXmlFirmado = TramaXML }; var apiMetodo = "api/EnviarResumen"; var jsonEnvioDocumento = await _client.PostAsJsonAsync(apiMetodo, enviarDocumentoRequest); RespuestaComunConArchivo respuestaEnvio; respuestaEnvio = await jsonEnvioDocumento.Content.ReadAsAsync <EnviarResumenResponse>(); var rpta = (EnviarResumenResponse)respuestaEnvio; txtResult.Text = txtResult.Text + "\n" + $@"{Resources.procesoCorrecto}{Environment.NewLine}{rpta.NroTicket}{Environment.NewLine}"; if (!respuestaEnvio.Exito) { throw new ApplicationException(respuestaEnvio.MensajeError); } if (!string.IsNullOrEmpty(rpta.NroTicket)) { ActualizaNroTicket(); } if (chkVoz.Checked) { Hablar(); } } catch (Exception ex) { txtResult.Text = txtResult.Text + Environment.NewLine + ex.Message; if (chkVoz.Checked) { Hablar(); } } }
private async void CrearFacturas(DataTable DtDocumentos, int ii) { string idDoc = Convert.ToString(DtDocumentos.Rows[ii]["Seriedocumento"] + "-" + DtDocumentos.Rows[ii]["NumeroDocumento"]); vTipoDoc = Convert.ToString(DtDocumentos.Rows[ii]["DocumentoID"]); vArchivoXML1 = TxtRuc.Text + "-" + vTipoDoc + "-" + idDoc; vArchivoXML1 = Path.Combine(vRutaXml, $"{vArchivoXML1}"); vArchivoXML1 = vArchivoXML1 + ".xml"; try { var TramaXML = Convert.ToBase64String(File.ReadAllBytes(vArchivoXML1)); var enviarDocumentoRequest = new EnviarDocumentoRequest(); enviarDocumentoRequest.Ruc = TxtRuc.Text; enviarDocumentoRequest.UsuarioSol = Convert.ToString(DtEmpresa.Rows[0]["EmpresaUsuarioSol"]); enviarDocumentoRequest.ClaveSol = Convert.ToString(DtEmpresa.Rows[0]["EmpresaClaveSol"]); enviarDocumentoRequest.EndPointUrl = vUrlSunat; enviarDocumentoRequest.IdDocumento = idDoc; enviarDocumentoRequest.TipoDocumento = vTipoDoc; // TramaXmlFirmado = respuestaFirmado.TramaXmlFirmado enviarDocumentoRequest.TramaXmlFirmado = TramaXML; var apiMetodo = "api/EnviarDocumento"; var jsonEnvioDocumento = await _client.PostAsJsonAsync(apiMetodo, enviarDocumentoRequest); RespuestaComunConArchivo respuestaEnvio; if (!rbResumen.Checked) { respuestaEnvio = await jsonEnvioDocumento.Content.ReadAsAsync <EnviarDocumentoResponse>(); var rpta = (EnviarDocumentoResponse)respuestaEnvio; txtResult.Text = txtResult.Text + idDoc + " " + $@"{Resources.procesoCorrecto}{Environment.NewLine}{rpta.MensajeRespuesta} siendo las {DateTime.Now}{Environment.NewLine}"; try { if (rpta.Exito && !string.IsNullOrEmpty(rpta.TramaZipCdr)) { vArchivoCDR1 = "R-" + $"{respuestaEnvio.NombreArchivo}"; vArchivoCDR1 = Path.Combine(vRutaCdr, $"{vArchivoCDR1}.zip"); File.WriteAllBytes(vArchivoCDR1, Convert.FromBase64String(rpta.TramaZipCdr)); } } catch (Exception ex) { MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } } else { respuestaEnvio = await jsonEnvioDocumento.Content.ReadAsAsync <EnviarResumenResponse>(); var rpta = (EnviarResumenResponse)respuestaEnvio; txtResult.Text += $@"{Resources.procesoCorrecto}{Environment.NewLine}{rpta.NroTicket}{Environment.NewLine}"; } if (!respuestaEnvio.Exito) { throw new ApplicationException(respuestaEnvio.MensajeError); } // if (chkVoz.Checked) // Hablar(); } catch (Exception ex) { txtResult.Text = txtResult.Text + ex.Message + Environment.NewLine; // if (chkVoz.Checked) // Hablar(); } }
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; }