示例#1
0
        public async Task <DocumentoResponse> Post([FromBody] DocumentoElectronico documento)
        {
            var response = new DocumentoResponse();

            try {
                var invoice = _documentoXml.Generar(documento);
                response.TramaXmlSinFirma = await _serializador.GenerarXml(invoice);

                response.Exito = true;
            }
            catch (Exception ex) {
                response.MensajeError = ex.Message;
                response.Pila         = ex.StackTrace;
                response.Exito        = false;
            }

            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 <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);
        }
        public DocumentoResponse Post(DocumentoElectronico documento, bool sincrono)
        {
            var response = new DocumentoResponse();

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

            return(response);
        }
示例#5
0
        public DocumentoResponse Post(ResumenDiario resumen)
        {
            var response = new DocumentoResponse();

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

            return(response);
        }
        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
        public async Task <DocumentoResponse> Post(GuiaRemision documento)
        {
            var response = new DocumentoResponse();

            try
            {
                var notaCredito = _documentoXml.Generar(documento);
                response.TramaXmlSinFirma = await _serializador.GenerarXml(notaCredito);

                response.Exito = true;
            }
            catch (Exception ex)
            {
                response.MensajeError = ex.Message;
                response.Pila         = ex.StackTrace;
                response.Exito        = false;
            }

            return(response);
        }
        public async Task <DocumentoResponse> ResumenNuevo([FromBody] ResumenDiarioNuevo resumen)
        {
            var response = new DocumentoResponse();

            try
            {
                // Solucion temporal --> Issue #58
                _documentoXml = UnityConfig.GetConfiguredContainer().Resolve <IDocumentoXml>();
                var summary = _documentoXml.Generar(resumen);
                response.TramaXmlSinFirma = await _serializador.GenerarXml(summary);

                response.Exito = true;
            }
            catch (Exception ex)
            {
                response.Exito        = false;
                response.MensajeError = ex.Message;
                response.Pila         = ex.StackTrace;
            }

            return(response);
        }