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);
        }
예제 #2
0
 public async Task <IActionResult> Put(string organization, int id, [FromBody] ComunicacionBaja model)
 {
     try
     {
         return(Ok(await _service.Put(organization, model)));
     }
     catch (Exception ex)
     {
         throw new SuperFactException(ex.Message, ex.InnerException);
     }
 }
예제 #3
0
        private async void CrearXmlBajas()
        {
            try
            {
                vFechaXml  = "RA-" + Convert.ToString(DtpFechaEnvioDoc.Value.Year);
                vFechaXml += ModFunc.Derecha("0" + Convert.ToString(DtpFechaEnvioDoc.Value.Month), 2);
                vFechaXml += ModFunc.Derecha("0" + Convert.ToString(DtpFechaEnvioDoc.Value.Day), 2);
                vFechaXml += "-012";

                ComunicacionBaja ComunicacionBaja = new ComunicacionBaja
                {
                    IdDocumento     = vFechaXml,
                    FechaEmision    = DtpFechaEnvioDoc.Value.ToString(FormatoFecha),
                    FechaReferencia = DtpFechaEnvioDoc.Value.ToString(FormatoFecha),
                    Emisor          = CrearEmisor(DtEmpresa),
                    Bajas           = new List <DocumentoBaja>()
                };

                for (int i3 = 0; i3 <= DtDocumentos.Rows.Count - 1; i3++)
                {
                    DocumentoBaja DocumentoBajasItem = new DocumentoBaja
                    {
                        Id            = i3 + 1,
                        Correlativo   = Convert.ToString(DtDocumentos.Rows[i3]["NumeroDocumento"]),
                        TipoDocumento = Convert.ToString(DtDocumentos.Rows[i3]["TipoDocumento"]),
                        Serie         = Convert.ToString(DtDocumentos.Rows[i3]["SerieDocumento"]),
                        MotivoBaja    = "Anulación por otro tipo de documento"
                    };

                    ComunicacionBaja.Bajas.Add(DocumentoBajasItem);
                }

                string _metodoApi = "api/GenerarComunicacionBaja";
                var    response   = await _client.PostAsJsonAsync(_metodoApi, ComunicacionBaja);

                var respuesta = await response.Content.ReadAsAsync <DocumentoResponse>();

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

                vArchivoXML = ComunicacionBaja.IdDocumento;
                vArchivoXML = Path.Combine(vRutaXml, $"{vArchivoXML}.xml");

                File.WriteAllBytes(vArchivoXML, Convert.FromBase64String(respuesta.TramaXmlSinFirma));
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
예제 #4
0
        public static EnviarDocumentoRequest ToSendVoidedDocument(ComunicacionBaja model, ParametroEmpresaModel parametro, FirmadoResponse responseFirma)
        {
            EnviarDocumentoRequest request = new EnviarDocumentoRequest();

            request.Ruc         = model.Emisor.NroDocumento;
            request.UsuarioSol  = parametro.UsuarioSol;
            request.ClaveSol    = parametro.ClaveSol;
            request.EndPointUrl = "";
            request.IdDocumento = model.IdDocumento;
            //request.TipoDocumento = model.TipoDocumento;
            request.TramaXmlFirmado = responseFirma.TramaXmlFirmado;

            return(request);
        }
예제 #5
0
        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 DocumentoResponse Post(ComunicacionBaja baja)
        {
            var response = new DocumentoResponse();

            try
            {
                var voidedDocument = _documentoXml.Generar(baja);
                response.TramaXmlSinFirma = _serializador.GenerarXml(voidedDocument, true);
                response.Exito            = true;
            }
            catch (Exception ex)
            {
                response.MensajeError = ex.Message;
                response.Pila         = ex.StackTrace;
                response.Exito        = false;
            }

            return(response);
        }
예제 #7
0
        private void btnEnviarFactura_Click(object sender, EventArgs e)
        {
            Factura documento = new Factura();

            documento.NroSerie     = "F001";
            documento.NroDocumento = "000001";

            Factura documento2 = new Factura();

            documento2          = documento;
            documento2.NroSerie = "F002";
            MessageBox.Show(documento2.EnviarDocumento());

            var boleta = new Boleta();

            boleta.NroSerie     = "B001";
            boleta.NroDocumento = "0000003";
            MessageBox.Show(boleta.EnviarDocumento());

            var baja = new ComunicacionBaja();

            baja.NroSerie     = "B001";
            baja.NroDocumento = "0000003";
            MessageBox.Show(baja.EnviarDocumento());

            IDocumento documentoGenerico = new Boleta();

            MessageBox.Show(documentoGenerico.EnviarDocumento());;

            IDocumento documentoGenerico2 = new ComunicacionBaja();

            MessageBox.Show(documentoGenerico2.EnviarDocumento());



            /*
             * documento.NroSerie es igual a F002--->
             *
             * documento2.NroSerie es igual a F002--->7
             *
             */
        }
        public DocumentoResponse Post([FromBody] ComunicacionBaja baja)
        {
            var response = new DocumentoResponse();

            try
            {
                var voidedDocument = Generador.GenerarVoidedDocuments(baja);

                var serializador = new Serializador();
                response.TramaXmlSinFirma = serializador.GenerarXml(voidedDocument);
                response.Exito            = true;
            }
            catch (Exception ex)
            {
                response.MensajeError = ex.Message;
                response.Pila         = ex.StackTrace;
                response.Exito        = false;
            }

            return(response);
        }
        public ComunicacionBaja data(List <Data_Documentos> data_Documentos)
        {
            Data_Contribuyente data_Emisor = new Data_Contribuyente(data_Documentos[0].IdEmisor);

            data_Emisor.Read_Contribuyente();
            ReadGeneralData readGeneralData = new ReadGeneralData();

            DateTime dateTime       = DateTime.Now;
            int      numeracion     = 0;
            string   mes            = dateTime.Month < 10 ? $"0{dateTime.Month}" : dateTime.Month.ToString();
            string   dia            = dateTime.Day < 10 ? $"0{dateTime.Day}"   : dateTime.Day.ToString();
            int      numeradorLinea = 1;

            numeracion = readGeneralData.GetScalarValueINT("[dbo].[Query_Scalar_GetValue_CantidadDocsDia]", "@IdDatosFox", data_Documentos[0].IdDatosFox);

            var comunicacionBaja = new ComunicacionBaja()
            {
                IdDocumento     = $"RA-{dateTime.Year}{mes}{dia}-{numeracion}",
                FechaEmision    = dateTime.ToString(),              // Cuando se da de baja
                FechaReferencia = data_Documentos[0].FechaEmision,  // Cuando se crea el documento
                Emisor          = data_Emisor,
                Bajas           = new List <DocumentoBaja>()
            };

            foreach (var data_Documento in data_Documentos)
            {
                string[] serieCorrelativo = data_Documento.SerieCorrelativo.Split('-');
                comunicacionBaja.Bajas.Add(new DocumentoBaja()
                {
                    Id            = numeradorLinea,
                    TipoDocumento = data_Documento.TipoDocumento,
                    Serie         = serieCorrelativo[0].ToString(),
                    Correlativo   = serieCorrelativo[1].ToString(),
                    MotivoBaja    = data_Documento.MotivoBaja
                });
                numeradorLinea++;
            }

            return(comunicacionBaja);
        }
예제 #10
0
        public void ArmarBaja(String motivoBaja)
        {
            DocumentoVentaGP docGP = new DocumentoVentaGP();

            docGP.GetDatosDocumentoVenta(this.Sopnumbe, this.Soptype);

            _documentoBaja = new ComunicacionBaja
            {
                IdDocumento     = string.Format("RA-{0:yyyyMMdd}-" + Utiles.Derecha(docGP.DocVenta.correlativo, 5), DateTime.Today),
                FechaEmision    = DateTime.Today.ToString(FormatoFecha),
                FechaReferencia = DateTime.Today.ToString(FormatoFecha),
                Emisor          = new Contribuyente()
                {
                    NroDocumento    = docGP.DocVenta.emisorNroDoc,
                    TipoDocumento   = docGP.DocVenta.emisorTipoDoc,
                    Direccion       = docGP.DocVenta.emisorDireccion,
                    Urbanizacion    = docGP.DocVenta.emisorUrbanizacion,
                    Departamento    = docGP.DocVenta.emisorDepartamento,
                    Provincia       = docGP.DocVenta.emisorProvincia,
                    Distrito        = docGP.DocVenta.emisorDistrito,
                    NombreComercial = docGP.DocVenta.emisorNombre,
                    NombreLegal     = docGP.DocVenta.emisorNombre,
                    Ubigeo          = docGP.DocVenta.emisorUbigeo
                },

                Bajas = new List <DocumentoBaja>()
            };

            _documentoBaja.Bajas.Add(new DocumentoBaja
            {
                Id            = 1,
                Correlativo   = docGP.DocVenta.numero,
                TipoDocumento = docGP.DocVenta.tipoDocumento,
                Serie         = docGP.DocVenta.serie,
                MotivoBaja    = motivoBaja
            });
        }
예제 #11
0
        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>()
                };

                // En las comunicaciones de Baja ya no se pueden colocar boletas, ya que la anulacion de las mismas
                // la realiza el resumen diario.
                documentoBaja.Bajas.Add(new DocumentoBaja
                {
                    Id = 1,
                    Correlativo = "33386",
                    TipoDocumento = "01",
                    Serie = "FA50",
                    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 documentoResponse = RestHelper<ComunicacionBaja, DocumentoResponse>.Execute("GenerarComunicacionBaja", documentoBaja);
                if (!documentoResponse.Exito)
                {
                    throw new InvalidOperationException(documentoResponse.MensajeError);
                }

                Console.WriteLine("Firmando XML...");
                // Firmado del Documento.
                var firmado = new FirmadoRequest
                {
                    TramaXmlSinFirma = documentoResponse.TramaXmlSinFirma,
                    CertificadoDigital = Convert.ToBase64String(File.ReadAllBytes("Certificado.pfx")),
                    PasswordCertificado = string.Empty,
                    UnSoloNodoExtension = true
                };

                var responseFirma = RestHelper<FirmadoRequest, FirmadoResponse>.Execute("Firmar", firmado);

                if (!responseFirma.Exito)
                {
                    throw new InvalidOperationException(responseFirma.MensajeError);
                }

                Console.WriteLine("Guardando XML de la Comunicacion de Baja....(Revisar carpeta del ejecutable)");

                File.WriteAllBytes("comunicacionbaja.xml", Convert.FromBase64String(responseFirma.TramaXmlFirmado));

                Console.WriteLine("Enviando a SUNAT....");

                var sendBill = new EnviarDocumentoRequest
                {
                    Ruc = documentoBaja.Emisor.NroDocumento,
                    UsuarioSol = "MODDATOS",
                    ClaveSol = "MODDATOS",
                    EndPointUrl = UrlSunat,
                    IdDocumento = documentoBaja.IdDocumento,
                    TramaXmlFirmado = responseFirma.TramaXmlFirmado
                };

                var enviarResumenResponse = RestHelper<EnviarDocumentoRequest, EnviarResumenResponse>.Execute("EnviarResumen", sendBill);

                if (!enviarResumenResponse.Exito)
                {
                    throw new InvalidOperationException(enviarResumenResponse.MensajeError);
                }

                Console.WriteLine("Nro de Ticket: {0}", enviarResumenResponse.NroTicket);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                Console.ReadLine();
            }
        }
예제 #12
0
        public string Post(List <Data_Documentos> data_Documentos)
        {
            string mensajeRespuesta = string.Empty;

            try
            {
                GenerarComunicacionBaja generarComunicacionBaja = new GenerarComunicacionBaja();
                ComunicacionBaja        documento = generarComunicacionBaja.data(data_Documentos);
                DocumentoResponse       response  = generarComunicacionBaja.Post(documento);

                if (!response.Exito)
                {
                    Data_Log data_Log = new Data_Log()
                    {
                        DetalleError   = response.MensajeError,
                        Comentario     = $"El XML con serie correlativo: {documento.IdDocumento} no se pudo generar",
                        IdUser_Empresa = data_Usuario.IdUser_Empresa
                    };
                    data_Log.Create_Log();
                }
                else
                {
                    string rutaArchivo = Path.Combine(data_Documentos[0].Ruta, $"{documento.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 = $"{documento.Emisor.NroDocumento}-{documento.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 = $"La comunicación de baja se ha realizado con éxito, detalle: {enviarDocumentoResponse.MensajeRespuesta}";
                            }
                            else
                            {
                                mensajeRespuesta = $"La comunicación de baja se ha realizado con éxito, pero hemos tenido" +
                                                   $"inconvenietes al obtener el CDR del documento: {documento.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 de la comunicación de baja: {documento.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                = "Comunicación de baja",
                                ComentarioDocumento = mensajeRespuesta,
                                Identificador       = documento.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 de la comunicación de baja",
                                    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 de la comunicación de baja, 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         = "De baja",
                                        ComentarioDocumento = $"El documento figura dentro de la comunicación de baja con código de identificación: {data_DocumentoFigurativo.Identificador}",
                                        ComunicacionBaja    = true,
                                    };
                                    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 se ha dado de baja",
                                            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 la comunicación de baja",
                                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();
            }
            return(mensajeRespuesta);
        }
예제 #13
0
        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();
            }
        }
 public async Task <ComunicacionBaja> Put(string organization, ComunicacionBaja model)
 {
     throw new NotImplementedException();
 }