Exemple #1
0
        public async Task <EnviarDocumentoResponse> Post_Resumen(EnviarDocumentoRequest request)
        {
            var response = new EnviarDocumentoResponse();


            return(response);
        }
Exemple #2
0
        public async Task <EnviarDocumentoResponse> Post([FromBody] ConsultaTicketRequest request)
        {
            var response = new EnviarDocumentoResponse();

            try
            {
                _servicioSunatDocumentos.Inicializar(new ParametrosConexion
                {
                    Ruc         = request.Ruc,
                    UserName    = request.UsuarioSol,
                    Password    = request.ClaveSol,
                    EndPointUrl = request.EndPointUrl
                });

                var resultado = _servicioSunatDocumentos.ConsultarTicket(request.NroTicket);

                if (!resultado.Exito)
                {
                    response.Exito        = false;
                    response.MensajeError = resultado.MensajeError;
                }
                else
                {
                    response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion);
                }
            }
            catch (Exception ex)
            {
                response.MensajeError = ex.Source == "DotNetZip" ? "El Ticket no existe" : ex.Message;
                response.Pila         = ex.StackTrace;
                response.Exito        = false;
            }

            return(response);
        }
        /// <summary>
        /// Lee la Constancia de Recepción SUNAT y devuelve el contenido
        /// </summary>
        /// <param name="constanciaRecepcion">Trama ZIP del CDR</param>
        /// <returns>Devuelve una clase <see cref="EnviarDocumentoResponse"/></returns>
        public EnviarDocumentoResponse GenerarDocumentoRespuesta(string constanciaRecepcion, bool sincrono)
        {
            var response   = new EnviarDocumentoResponse();
            var returnByte = Convert.FromBase64String(constanciaRecepcion);

            using (var memRespuesta = new MemoryStream(returnByte))
            {
                if (memRespuesta.Length <= 0)
                {
                    response.MensajeError = "Respuesta SUNAT Vacio";
                    response.Exito        = false;
                }
                else
                {
                    using (var zipFile = ZipFile.Read(memRespuesta))
                    {
                        foreach (var entry   in  zipFile.Entries)
                        {
                            if (!entry.FileName.EndsWith(".xml"))
                            {
                                continue;
                            }
                            using (var ms = new MemoryStream())
                            {
                                entry.Extract(ms);
                                ms.Position = 0;
                                var responseReader = new StreamReader(ms);
                                var responseString = responseReader.ReadToEnd();
                                try
                                {
                                    var xmlDoc = new XmlDocument();
                                    xmlDoc.LoadXml(responseString);

                                    var xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable);

                                    xmlnsManager.AddNamespace("ar", EspacioNombres.ar);
                                    xmlnsManager.AddNamespace("cac", EspacioNombres.cac);
                                    xmlnsManager.AddNamespace("cbc", EspacioNombres.cbc);

                                    response.CodigoRespuesta  = xmlDoc.SelectSingleNode(EspacioNombres.nodoResponseCode, xmlnsManager)?.InnerText;
                                    response.MensajeRespuesta = xmlDoc.SelectSingleNode(EspacioNombres.nodoDescription, xmlnsManager)?.InnerText;
                                    response.NroTicketCdr     = xmlDoc.SelectSingleNode(EspacioNombres.nodoId, xmlnsManager)?.InnerText;

                                    response.TramaZipCdr   = constanciaRecepcion;
                                    response.NombreArchivo = entry.FileName;
                                    response.Exito         = true;
                                }
                                catch (Exception ex)
                                {
                                    response.MensajeError = ex.Message;
                                    response.Pila         = ex.StackTrace;
                                    response.Exito        = false;
                                }
                            }
                        }
                    }
                }
            }
            return(response);
        }
        public async Task <EnviarDocumentoResponse> Post([FromBody] EnviarDocumentoRequest request)
        {
            var response      = new EnviarDocumentoResponse();
            var nombreArchivo = $"{request.Ruc}-{request.TipoDocumento}-{request.IdDocumento}";
            var tramaZip      = await _serializador.GenerarZip(request.TramaXmlFirmado, nombreArchivo);

            _servicioSunatDocumentos.Inicializar(new ParametrosConexion
            {
                Ruc         = request.Ruc,
                UserName    = request.UsuarioSol,
                Password    = request.ClaveSol,
                EndPointUrl = request.EndPointUrl
            });

            var resultado = _servicioSunatDocumentos.EnviarDocumento(new DocumentoSunat
            {
                TramaXml      = tramaZip,
                NombreArchivo = $"{nombreArchivo}.zip"
            });

            if (!resultado.Exito)
            {
                response.Exito        = false;
                response.MensajeError = resultado.MensajeError;
            }
            else
            {
                response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion);

                // Quitamos la R y la extensión devueltas por el Servicio.
                response.NombreArchivo = nombreArchivo;
            }

            return(response);
        }
Exemple #5
0
        private async void BtnGetStatus_Click(object sender, EventArgs e)
        {
            try
            {
                Cursor = Cursors.WaitCursor;

                using (var frm = new FrmTicket())
                {
                    if (frm.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }
                    if (string.IsNullOrEmpty(frm.txtNroTicket.Text))
                    {
                        return;
                    }

                    var consultaTicketRequest = new ConsultaTicketRequest
                    {
                        Ruc         = txtNroRuc.Text,
                        UsuarioSol  = txtUsuarioSol.Text,
                        ClaveSol    = txtClaveSol.Text,
                        EndPointUrl = ValorSeleccionado(),
                        IdDocumento = txtSerieCorrelativo.Text,
                        NroTicket   = frm.txtNroTicket.Text
                    };

                    ISerializador            serializador            = new Serializador();
                    IServicioSunatDocumentos servicioSunatDocumentos = new ServicioSunatDocumentos();
                    EnviarDocumentoResponse  respuestaEnvio          = await new ConsultarTicket(servicioSunatDocumentos, serializador).Post(consultaTicketRequest);

                    if (!respuestaEnvio.Exito || !string.IsNullOrEmpty(respuestaEnvio.MensajeError))
                    {
                        throw new InvalidOperationException(respuestaEnvio.MensajeError);
                    }

                    File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{respuestaEnvio.NombreArchivo}.zip",
                                       Convert.FromBase64String(respuestaEnvio.TramaZipCdr));

                    txtResult.Text = $@"{Resources.procesoCorrecto}{Environment.NewLine}{respuestaEnvio.MensajeRespuesta}";

                    if (chkVoz.Checked)
                    {
                        Hablar();
                    }
                }
            }
            catch (Exception ex)
            {
                txtResult.Text = ex.Message;
            }
            finally
            {
                Cursor = Cursors.Default;
            }
        }
        public async Task <EnviarDocumentoResponse> Generar(string organization, DocumentoElectronico model)
        {
            EmpresaModel empresa = await _repositoryempresa.Get(organization);

            model.Emisor = HelperTo.ToEmisor(empresa);
            IEstructuraXml invoice     = _documentoXml.Generar(model);
            string         XmlSinFirma = await _serializador.GenerarXml(invoice);

            CertificadoDigitalModel certificado = await _repositorycert.GetCertificate(organization);

            FirmadoRequest  firmado       = HelperTo.ToSignedModel(certificado, XmlSinFirma, false);
            FirmadoResponse responseFirma = await _certificador.FirmarXml(firmado);

            ParametroEmpresaModel parametro = await _repositoryparam.GetConfiguration(certificado.Empresa);

            EnviarDocumentoRequest request = HelperTo.ToSendDocument(model, parametro, responseFirma);

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

            EnviarDocumentoResponse response = new EnviarDocumentoResponse();
            var nombreArchivo = $"{request.Ruc}-{request.TipoDocumento}-{request.IdDocumento}";
            var tramaZip      = await _serializador.GenerarZip(request.TramaXmlFirmado, nombreArchivo);

            _servicioSunatDocumentos.Inicializar(new ParametrosConexion
            {
                Ruc         = request.Ruc,
                UserName    = request.UsuarioSol,
                Password    = request.ClaveSol,
                EndPointUrl = request.EndPointUrl
            });

            RespuestaSincrono resultado = _servicioSunatDocumentos.EnviarDocumento(new DocumentoSunat
            {
                TramaXml      = tramaZip,
                NombreArchivo = $"{nombreArchivo}.zip"
            });

            if (!resultado.Exito)
            {
                response.Exito        = false;
                response.MensajeError = resultado.MensajeError;
            }
            else
            {
                response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion);

                File.WriteAllBytes("cdr_invoice.zip", Convert.FromBase64String(response.TramaZipCdr));
                // Quitamos la R y la extensión devueltas por el Servicio.
                response.NombreArchivo = nombreArchivo;
            }
            //guardar la respuesta
            return(response);
        }
Exemple #7
0
        /// <summary>
        /// Lee la Constancia de Recepción SUNAT y devuelve el contenido
        /// </summary>
        /// <param name="constanciaRecepcion">Trama ZIP del CDR</param>
        /// <returns>Devuelve una clase <see cref="EnviarDocumentoResponse"/></returns>
        public async Task <EnviarDocumentoResponse> GenerarDocumentoRespuesta(string constanciaRecepcion)
        {
            var response   = new EnviarDocumentoResponse();
            var returnByte = Convert.FromBase64String(constanciaRecepcion);

            using (var memRespuesta = new MemoryStream(returnByte))
            {
                using (var zipFile = new ZipArchive(memRespuesta))
                {
                    foreach (var entry in zipFile.Entries)
                    {
                        if (!entry.FullName.EndsWith(".xml"))
                        {
                            continue;
                        }
                        using (var stream = entry.Open())
                        {
                            using (var ms = new MemoryStream())
                            {
                                await stream.CopyToAsync(ms);

                                ms.Position = 0;
                                var responseReader = new StreamReader(ms);
                                var responseString = await responseReader.ReadToEndAsync();

                                try
                                {
                                    var xmlDoc = new XmlDocument();
                                    xmlDoc.LoadXml(responseString);
                                    var xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable);
                                    xmlnsManager.AddNamespace("ar", EspacioNombres.ar);
                                    xmlnsManager.AddNamespace("cac", EspacioNombres.cac);
                                    xmlnsManager.AddNamespace("cbc", EspacioNombres.cbc);
                                    response.CodigoRespuesta  = xmlDoc.SelectSingleNode(EspacioNombres.nodoResponseCode, xmlnsManager)?.InnerText;
                                    response.MensajeRespuesta = xmlDoc.SelectSingleNode(EspacioNombres.nodoDescription, xmlnsManager)?.InnerText;
                                    response.TramaZipCdr      = constanciaRecepcion;
                                    response.NombreArchivo    = entry.FullName;
                                    response.Exito            = true;
                                }
                                catch (Exception ex)
                                {
                                    response.MensajeError = ex.Message;
                                    response.Pila         = ex.StackTrace;
                                    response.Exito        = false;
                                }
                            }
                        }
                    }
                }
            }
            return(response);
        }
Exemple #8
0
        public async Task <IActionResult> Post(string organization, [FromBody] DocumentoElectronico model)
        {
            EnviarDocumentoResponse response = new EnviarDocumentoResponse();

            try
            {
                response = await _service.Generar(organization, model);

                response.Exito = true;
                return(Ok(response));
            }
            catch (Exception ex)
            {
                throw new SuperFactException(ex.Message, ex.InnerException);
            }
        }
Exemple #9
0
        private async void kryptonButton1_Click(object sender, EventArgs e)
        {
            ISerializador           serializador            = new Serializador();
            IServicioSunatConsultas servicioSunatDocumentos = new ServicioSunatConsultas();
            RespuestaSincrono       respuestaEnvio          = new RespuestaSincrono();

            var response = new EnviarDocumentoResponse();

            var request = new DatosDocumento
            {
                TipoComprobante = "01",
                Serie           = "F005",
                Numero          = 3,
                RucEmisor       = "20561278441"
            };

            servicioSunatDocumentos.Inicializar(new ParametrosConexion
            {
                Ruc         = "20561278441",
                UserName    = "******",
                Password    = "******",
                EndPointUrl = "https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService"
            });

            respuestaEnvio = servicioSunatDocumentos.ConsultarConstanciaDeRecepcion(request);

            if (respuestaEnvio.Exito)
            {
                response = await serializador.GenerarDocumentoRespuesta(respuestaEnvio.ConstanciaDeRecepcion);

                if (response.Exito)
                {
                    MessageBox.Show(response.MensajeRespuesta);

                    File.WriteAllBytes($"{Program.CarpetaCdr}\\R-{request.RucEmisor}-{request.TipoComprobante}-{request.Serie}-{request.Numero}.zip",
                                       Convert.FromBase64String(respuestaEnvio.ConstanciaDeRecepcion));
                }
                else
                {
                    MessageBox.Show(response.MensajeError);
                }
            }
            else
            {
                MessageBox.Show(respuestaEnvio.MensajeError);
            }
        }
Exemple #10
0
        public async Task <EnviarDocumentoResponse> Post([FromBody] ConsultaConstanciaRequest request)
        {
            var response = new EnviarDocumentoResponse();

            try
            {
                _servicioSunatConsultas.Inicializar(new ParametrosConexion
                {
                    Ruc         = request.Ruc,
                    UserName    = request.UsuarioSol,
                    Password    = request.ClaveSol,
                    EndPointUrl = request.EndPointUrl
                });

                var resultado = _servicioSunatConsultas.ConsultarConstanciaDeRecepcion(new DatosDocumento
                {
                    RucEmisor       = request.Ruc,
                    TipoComprobante = request.TipoDocumento,
                    Serie           = request.Serie,
                    Numero          = request.Numero
                });

                if (!resultado.Exito)
                {
                    response.Exito            = false;
                    response.MensajeRespuesta = resultado.MensajeError;
                }
                else
                {
                    response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion);
                }
            }
            catch (Exception ex)
            {
                response.MensajeError = ex.Message;
                response.Pila         = ex.StackTrace;
                response.Exito        = false;
            }

            return(response);
        }
        public async Task <EnviarDocumentoResponse> Post(EnviarDocumentoRequest request)
        {
            var response      = new EnviarDocumentoResponse();
            var nombreArchivo = $"{request.Ruc}-{request.TipoDocumento}-{request.IdDocumento}";
            var tramaZip      = await _serializador.GenerarZip(request.TramaXmlFirmado, nombreArchivo);

            _servicioSunatDocumentos.Inicializar(new ParametrosConexion
            {
                Ruc         = request.Ruc,
                UserName    = request.UsuarioSol,
                Password    = request.ClaveSol,
                EndPointUrl = request.EndPointUrl
            });

            var resultado = _servicioSunatDocumentos.EnviarDocumento(new DocumentoSunat
            {
                TramaXml      = tramaZip,
                NombreArchivo = $"{nombreArchivo}.zip"
            });

            if (!resultado.Exito)
            {
                response.Exito        = false;
                response.MensajeError = resultado.MensajeError;
                //response.TramaZipCdr = "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";
            }
            else
            {
                response = await _serializador.GenerarDocumentoRespuesta(resultado.ConstanciaDeRecepcion);

                // Quitamos la R y la extensión devueltas por el Servicio.
                response.NombreArchivo = nombreArchivo;
            }

            return(response);
        }
        public string PostResumen(List <Data_Documentos> data_Documentos)
        {
            string mensajeRespuesta = string.Empty;

            try
            {
                GenerarResumenDiario generarResumenDiario = new GenerarResumenDiario();
                ResumenDiario        resumenDiario        = generarResumenDiario.Data(data_Documentos);
                DocumentoResponse    response             = generarResumenDiario.Post(resumenDiario);

                if (!response.Exito)
                {
                    Data_Log data_Log = new Data_Log()
                    {
                        DetalleError   = response.MensajeError,
                        Comentario     = $"El XML con identificador: {resumenDiario.IdDocumento} no se pudo generar",
                        IdUser_Empresa = data_Usuario.IdUser_Empresa
                    };
                    data_Log.Create_Log();
                }
                else
                {
                    string rutaArchivo = Path.Combine(data_Documentos[0].Ruta, $"{resumenDiario.IdDocumento}.xml");

                    Firmar          firmar          = new Firmar();
                    FirmadoRequest  firmadoRequest  = firmar.Data(data_Usuario.IdAccesosSunat, response.TramaXmlSinFirma);
                    FirmadoResponse firmadoResponse = firmar.Post(firmadoRequest, true); //  Ya se obtuvo el documento firmado

                    if (firmadoResponse.Exito)                                           //  Comprobamos que se haya firmado de forma correcta
                    {
                        EnviarSunat            enviarSunat            = new EnviarSunat();
                        EnviarDocumentoRequest enviarDocumentoRequest = enviarSunat.Data(firmadoResponse.TramaXmlFirmado, data_Documentos[0], GetURL("03"));
                        string nombreZip = $"{resumenDiario.Emisor.NroDocumento}-{resumenDiario.IdDocumento}";
                        EnviarResumenResponse enviarResumenResponse = enviarSunat.Post_Figurativo(enviarDocumentoRequest, nombreZip);

                        if (enviarResumenResponse.Exito)    // Comprobar envío a sunat
                        {
                            ConsultaConstanciaRequest consultaConstanciaRequest = new ConsultaConstanciaRequest()
                            {
                                Ruc         = enviarDocumentoRequest.Ruc,
                                UsuarioSol  = enviarDocumentoRequest.UsuarioSol,
                                ClaveSol    = enviarDocumentoRequest.ClaveSol,
                                EndPointUrl = " https://e-factura.sunat.gob.pe/ol-it-wsconscpegem/billConsultService"
                            };
                            Consultar consultar = new Consultar();
                            EnviarDocumentoResponse enviarDocumentoResponse = consultar.Post_Constancia(consultaConstanciaRequest);
                            if (enviarDocumentoResponse.Exito)
                            {
                                mensajeRespuesta = $"El resumen diario ha realizado con éxito, detalle: {enviarDocumentoResponse.MensajeRespuesta}";
                            }
                            else
                            {
                                mensajeRespuesta = "El resumen diario ha realizado con éxito, pero hemos tenido inconvenietes al obtener" +
                                                   " el CDR del documento: " + resumenDiario.IdDocumento + ", probablemente se este empleado el usuario MODDATOS," +
                                                   "para obtener el CDR debes descargarlo de forma manual en la opción 'Consulta de CDR'";
                                data_Log = new Data_Log()
                                {
                                    DetalleError   = mensajeRespuesta,
                                    Comentario     = $"Ha ocurrido un error al generar el CDR del resumen diario: {resumenDiario.IdDocumento}, probablemente se este empleado MODDATOS",
                                    IdUser_Empresa = data_Usuario.IdUser_Empresa
                                };
                                data_Log.Create_Log();
                            }

                            Data_DocumentoFigurativo data_DocumentoFigurativo = new Data_DocumentoFigurativo()
                            {
                                XMLFirmado          = firmadoResponse.TramaXmlFirmado,
                                Tipo                = "Resumen diario",
                                ComentarioDocumento = mensajeRespuesta,
                                Identificador       = resumenDiario.IdDocumento,
                                NumeroTicket        = enviarResumenResponse.NroTicket,
                                CdrSunat            = enviarDocumentoResponse.TramaZipCdr ?? string.Empty
                            };

                            if (!data_DocumentoFigurativo.Create_DocumentoFigurativo())
                            {
                                data_Log = new Data_Log()
                                {
                                    DetalleError   = "Error inesperado en la base de datos",
                                    Comentario     = "Ha ocurrido un error al guardar el registro del resumen diario",
                                    IdUser_Empresa = data_Usuario.IdUser_Empresa
                                };
                                data_Log.Create_Log();
                            }
                            else
                            {
                                Data_DocumentoFigurativo dataUnion_DocumentoFigurativo;
                                Data_Documentos          updateDocumento;
                                foreach (var data_Documento in data_Documentos)
                                {
                                    dataUnion_DocumentoFigurativo = new Data_DocumentoFigurativo()
                                    {
                                        IdDocumentoFigurativo = data_DocumentoFigurativo.SCOPE_IDENTITY_VALUE,
                                        IdDocumento           = data_Documento.IdDocumento
                                    };
                                    if (!dataUnion_DocumentoFigurativo.Create_Figurativo_Documentos())
                                    {
                                        data_Log = new Data_Log()
                                        {
                                            DetalleError = $"Detalle de tablas: Documentos {data_Documento.IdDocumento},{data_Documento.SerieCorrelativo} con la " +
                                                           $"tabla Figurativo_Documentos {data_DocumentoFigurativo.SCOPE_IDENTITY_VALUE}, {data_DocumentoFigurativo.Identificador} ",
                                            Comentario     = "Ha ocurrido un error al guardar el registro del resumen diario, en la tabla de unión",
                                            IdUser_Empresa = data_Usuario.IdUser_Empresa
                                        };
                                        data_Log.Create_Log();
                                    }

                                    updateDocumento = new Data_Documentos()
                                    {
                                        IdDocumento         = data_Documento.IdDocumento,
                                        EnviadoSunat        = true,
                                        EstadoSunat         = "Aceptado",
                                        ComentarioDocumento = $"El documento figura dentro del resumen diario con el código de identificación: {data_DocumentoFigurativo.Identificador}",
                                        ComunicacionBaja    = false,
                                    };
                                    if (!updateDocumento.Update_Documento())
                                    {
                                        data_Log = new Data_Log()
                                        {
                                            DetalleError   = $"No se ha podido actualizar el documento{data_Documento.IdDocumento}, {data_Documento.SerieCorrelativo} para indicar que resumen diario",
                                            Comentario     = "Error en la base de datos",
                                            IdUser_Empresa = data_Usuario.IdUser_Empresa
                                        };
                                        data_Log.Create_Log();
                                    }
                                }
                            }
                        }
                        else
                        {
                            mensajeRespuesta = enviarResumenResponse.MensajeError;
                            data_Log         = new Data_Log()
                            {
                                DetalleError   = enviarResumenResponse.MensajeError,
                                Comentario     = "Error al crear resumen diario",
                                IdUser_Empresa = data_Usuario.IdUser_Empresa
                            };
                            data_Log.Create_Log();
                        }
                    }
                    else
                    {
                        data_Log = new Data_Log()
                        {
                            DetalleError = response.MensajeError, Comentario = "Error al firmar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa
                        };
                        data_Log.Create_Log();
                    }
                }
            }
            catch (Exception ex)
            {
                var msg = string.Concat(ex.InnerException?.Message, ex.Message);
                data_Log = new Data_Log()
                {
                    DetalleError   = $"Detalle del error: {msg}",
                    Comentario     = "Error al procesar el envío del documento",
                    IdUser_Empresa = data_Usuario.IdUser_Empresa
                };
                data_Log.Create_Log();
                mensajeRespuesta = $"Detalle del error: {msg}";
            }
            return(mensajeRespuesta);
        }
        public void Post(Data_Documentos IE_IdDocumento)    // Ejecución
        {
            try
            {
                string          IdDocumento    = IE_IdDocumento.IdDocumento;
                Data_Documentos data_Documento = new Data_Documentos(IdDocumento);      //  IdDocumento variable global
                data_Documento.Read_Documento();

                GenerarFactura     generarFactura     = new GenerarFactura();
                GenerarNotaCredito generarNotaCredito = new GenerarNotaCredito();
                GenerarNotaDebito  generarNotaDebito  = new GenerarNotaDebito();

                DocumentoElectronico documento;
                DocumentoResponse    response;

                switch (data_Documento.TipoDocumento)
                {
                case "01":      //  Factura y boletas
                    documento = generarFactura.Data(data_Documento);
                    response  = generarFactura.Post(documento, true);
                    break;

                case "07":      //  Nota de crédito
                    documento = generarNotaCredito.data(data_Documento);
                    response  = generarNotaCredito.Post(documento, true);
                    break;

                case "08":      //  Nota de Débito
                    documento = generarNotaDebito.data(data_Documento);
                    response  = generarNotaDebito.Post(documento, true);
                    break;

                default:
                    documento = generarFactura.Data(data_Documento);
                    response  = generarFactura.Post(documento, true);
                    break;
                }

                if (!response.Exito)
                {
                    Data_Log data_Log = new Data_Log()
                    {
                        DetalleError   = response.MensajeError,
                        Comentario     = $"El XML con serie correlativo: {documento.SerieCorrelativo} no se pudo generar",
                        IdUser_Empresa = data_Usuario.IdUser_Empresa
                    };
                    data_Log.Create_Log();
                }

                string rutaArchivo = Path.Combine(data_Documento.Ruta, $"{documento.SerieCorrelativo}.xml");

                Firmar firmar = new Firmar();

                FirmadoRequest firmadoRequest = firmar.Data(data_Usuario.IdAccesosSunat, response.TramaXmlSinFirma);
                //FirmadoResponse firmadoResponse =   await firmar.Post(firmadoRequest);      //  Ya se obtuvo el documento firmado
                FirmadoResponse firmadoResponse = firmar.Post(firmadoRequest, true); //  Ya se obtuvo el documento firmado

                if (firmadoResponse.Exito)                                           //  Comprobamos que se haya firmado de forma correcta
                {
                    Data_Documentos actualizacionXML = new Data_Documentos(IdDocumento)
                    {
                        XmlFirmado = firmadoResponse.TramaXmlFirmado
                    };
                    if (!actualizacionXML.Update_Documento_OneColumn("[dbo].[Update_Documento_SignedXML]"))
                    {
                        data_Log = new Data_Log()
                        {
                            DetalleError   = "Error al actualizar el xmlFirmado del documento",
                            Comentario     = "Error con la base de datos",
                            IdUser_Empresa = data_Usuario.IdUser_Empresa
                        };
                        data_Log.Create_Log();
                    }
                }
                else
                {
                    data_Log = new Data_Log()
                    {
                        DetalleError = response.MensajeError, Comentario = "Error al firmar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa
                    };
                    data_Log.Create_Log();
                }

                EnviarSunat enviarSunat = new EnviarSunat();

                EnviarDocumentoRequest enviarDocumentoRequest = enviarSunat.Data(firmadoResponse.TramaXmlFirmado, data_Documento,
                                                                                 GetURL(data_Documento.TipoDocumento)); // Obtenemos los datos para EnviarDocumentoRequest

                //EnviarDocumentoResponse enviarDocumentoResponse =   await enviarSunat.Post_Documento(enviarDocumentoRequest);
                EnviarDocumentoResponse enviarDocumentoResponse = enviarSunat.Post_Documento(enviarDocumentoRequest, true);

                if (enviarDocumentoResponse.Exito && !string.IsNullOrEmpty(enviarDocumentoResponse.TramaZipCdr))    // Comprobar envío a sunat
                {
                    Data_Documentos actualizacionCDR = new Data_Documentos()
                    {
                        IdDocumento = IdDocumento, CdrSunat = enviarDocumentoResponse.TramaZipCdr
                    };
                    if (!actualizacionCDR.Update_Documento_OneColumn("[dbo].[Update_Documento_CDR]"))
                    {
                        data_Log = new Data_Log()
                        {
                            DetalleError   = "Error al actualizar el CDR del documento",
                            Comentario     = "Error con la base de datos: [dbo].[Update_Documento_CDR]",
                            IdUser_Empresa = data_Usuario.IdUser_Empresa
                        };
                        data_Log.Create_Log();
                    }

                    Data_Documentos actualizacionComentario = new Data_Documentos()
                    {
                        IdDocumento = IdDocumento, ComentarioDocumento = enviarDocumentoResponse.MensajeRespuesta
                    };
                    if (!actualizacionComentario.Update_Documento_OneColumn("[dbo].[Update_Documento_Comentario]"))
                    {
                        data_Log = new Data_Log()
                        {
                            DetalleError   = "Error al guardar el comentario notificando la recepción del CDR del documento",
                            Comentario     = "No se pudo guardar el CDR",
                            IdUser_Empresa = data_Usuario.IdUser_Empresa
                        };
                        data_Log.Create_Log();
                    }

                    Data_Documentos actualizacionEstadoSunat = new Data_Documentos()
                    {
                        IdDocumento = IdDocumento, EstadoSunat = "Aceptado"
                    };
                    if (!actualizacionEstadoSunat.Update_Documento_OneColumn("[dbo].[Update_Documento_EstadoSunat]"))
                    {
                        data_Log = new Data_Log()
                        {
                            DetalleError   = "Error al guardar el comentario notificando el estado del documento",
                            Comentario     = "No se pudo guardar el estado del documento",
                            IdUser_Empresa = data_Usuario.IdUser_Empresa
                        };
                        data_Log.Create_Log();
                    }
                }
                else
                {
                    data_Log = new Data_Log()
                    {
                        DetalleError = enviarDocumentoResponse.MensajeError, Comentario = "Error al enviar el documento", IdUser_Empresa = data_Usuario.IdUser_Empresa
                    };
                    data_Log.Create_Log();

                    Data_Documentos actualizacionComentario = new Data_Documentos()
                    {
                        IdDocumento = IdDocumento, ComentarioDocumento = enviarDocumentoResponse.MensajeError
                    };
                    if (!actualizacionComentario.Update_Documento_OneColumn("[dbo].[Update_Documento_Comentario]"))
                    {
                        data_Log = new Data_Log()
                        {
                            DetalleError   = "Error al guardar el comentario notificando el error al no poder recibir  el CDR del documento",
                            Comentario     = "No se recibió el CDR",
                            IdUser_Empresa = data_Usuario.IdUser_Empresa
                        };
                        data_Log.Create_Log();
                    }

                    Data_Documentos actualizacionEstadoSunat = new Data_Documentos()
                    {
                        IdDocumento = IdDocumento, EstadoSunat = "Rechazado"
                    };
                    if (!actualizacionEstadoSunat.Update_Documento_OneColumn("[dbo].[Update_Documento_EstadoSunat]"))
                    {
                        data_Log = new Data_Log()
                        {
                            DetalleError   = "Error al guardar el comentario notificando el estado del documento",
                            Comentario     = "No se pudo guardar el estado del documento",
                            IdUser_Empresa = data_Usuario.IdUser_Empresa
                        };
                        data_Log.Create_Log();
                    }
                }
            }
            catch (Exception ex)
            {
                var msg = string.Concat(ex.InnerException?.Message, ex.Message);
                data_Log = new Data_Log()
                {
                    DetalleError   = $"Detalle del error: {msg}",
                    Comentario     = "Error al procesar el envío del documento",
                    IdUser_Empresa = data_Usuario.IdUser_Empresa
                };
                data_Log.Create_Log();
            }
        }
Exemple #14
0
        private async void btnEjecutar_ConInterfaces_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Data_Documentos data_Documento = new Data_Documentos("20186C16-C1DC-4717-8F46-407447D225BC");
                data_Documento.Read_Documento();

                GenerarFactura generarFactura = new GenerarFactura();

                DocumentoElectronico documento = generarFactura.data(data_Documento);       //  CAMBIAR A ASINCRONO AL FINALIZAR EL DESARROLLO
                var response = await generarFactura.Post(documento);

                if (!response.Exito)
                {
                    System.Windows.MessageBox.Show($"A ocurrido un error en la generación de XML: {response.MensajeError}");
                }

                string rutaArchivo = Path.Combine(data_Documento.Ruta, $"{documento.SerieCorrelativo}.xml");

                Firmar firmar = new Firmar();

                FirmadoRequest  firmadoRequest  = firmar.Data(data_Documento.IdEmisor, response.TramaXmlSinFirma);
                FirmadoResponse firmadoResponse = await firmar.Post(firmadoRequest); //  Ya se obtuvo el documento firmado

                if (firmadoResponse.Exito)                                           //  Comprobamos que se haya firmado de forma correcta
                {
                    File.WriteAllBytes(rutaArchivo, Convert.FromBase64String(firmadoResponse.TramaXmlFirmado));
                }
                else
                {
                    System.Windows.MessageBox.Show($"A ocurrido un error al firmar el XML: {response.MensajeError}");
                }

                EnviarSunat enviarSunat = new EnviarSunat();

                EnviarDocumentoRequest enviarDocumentoRequest = enviarSunat.Data(firmadoResponse.TramaXmlFirmado, data_Documento,
                                                                                 "urlsunat"); // Obtenemos los datos para EnviarDocumentoRequest

                EnviarDocumentoResponse enviarDocumentoResponse = await enviarSunat.Post_Documento(enviarDocumentoRequest);

                //  enviarDocumentoResponse =   jsonEnvioDocumento  ;   respuestaComunConArchivo    =   respuestaEnvio

                System.Windows.MessageBox.Show(enviarDocumentoResponse.MensajeRespuesta);                        //  Temporal para pruebas

                if (enviarDocumentoResponse.Exito && !string.IsNullOrEmpty(enviarDocumentoResponse.TramaZipCdr)) // Comprobar envío a sunat
                {
                    if (!Directory.Exists($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}"))
                    {
                        Directory.CreateDirectory($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}");
                    }

                    File.WriteAllBytes($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}\\{enviarDocumentoResponse.NombreArchivo}.xml",
                                       Convert.FromBase64String(firmadoResponse.TramaXmlFirmado));

                    if (!Directory.Exists($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}\\CDR"))
                    {
                        Directory.CreateDirectory($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}\\CDR");
                    }

                    File.WriteAllBytes($"{data_Documento.Ruta}\\{enviarDocumentoResponse.NombreArchivo}\\CDR\\R-{enviarDocumentoResponse.NombreArchivo}.zip",
                                       Convert.FromBase64String(enviarDocumentoResponse.TramaZipCdr));
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show($"A ocurrido un error: {ex}");
            }
        }
Exemple #15
0
        public void Envio()
        {
            try
            {
                //string firmaxml = "";
                string   rutacertificado = "";
                string   tipodocumento   = "";
                string   _iddocumento    = "";
                string[] iddocumento     = null;
                bool     todocorrecto    = false;

                if (lista_repositorio != null)
                {
                    if (lista_repositorio.Count > 0)
                    {
                        empresa         = admemp.CargaEmpresa3(1);
                        rutacertificado = @"C:\DOCUMENTOS-" + empresa.Ruc + "\\CERTIFIK\\" + empresa.Certificado;

                        foreach (clsRepositorio r in lista_repositorio)
                        {
                            var tramaXmlSinFirma = Convert.ToBase64String(r.Xml);

                            var firmadoRequest = new FirmadoRequest
                            {
                                TramaXmlSinFirma    = tramaXmlSinFirma,
                                CertificadoDigital  = Convert.ToBase64String(File.ReadAllBytes(rutacertificado)),
                                PasswordCertificado = empresa.Contrasena,
                                UnSoloNodoExtension = true
                            };

                            switch (r.Tipodoc)
                            {
                            case 1: tipodocumento = "03"; iddocumento = r.Nombredoc.Split('-'); _iddocumento = iddocumento[2] + "-" + r.Correlativo; break;    //boleta

                            case 2: tipodocumento = "01"; iddocumento = r.Nombredoc.Split('-'); _iddocumento = iddocumento[2] + "-" + r.Correlativo; break;    //factura

                            case 4: tipodocumento = "07"; iddocumento = r.Nombredoc.Split('-'); _iddocumento = iddocumento[2] + "-" + r.Correlativo; break;    //nota credito

                            case 6: tipodocumento = "08"; iddocumento = r.Nombredoc.Split('-'); _iddocumento = iddocumento[2] + "-" + r.Correlativo; break;    //nota debito
                            }
                            FirmarController enviar = new FirmarController();
                            var respuestaFirmado    = enviar.FirmadoResponse(firmadoRequest, Convert.ToInt32(tipodocumento));
                            if (!respuestaFirmado.Exito)
                            {
                                throw new ApplicationException(respuestaFirmado.MensajeError);
                            }

                            var enviarDocumentoRequest = new EnviarDocumentoRequest
                            {
                                Ruc        = empresa.Ruc,
                                UsuarioSol = empresa.UsuarioSunat,
                                ClaveSol   = empresa.ClaveSunat,
                                //EndPointUrl = "https://www.sunat.gob.pe/ol-ti-itcpgem-sqa/billService",
                                EndPointUrl     = "https://e-beta.sunat.gob.pe/ol-ti-itcpfegem-beta/billService",
                                IdDocumento     = _iddocumento,
                                TipoDocumento   = tipodocumento,
                                TramaXmlFirmado = respuestaFirmado.TramaXmlFirmado
                            };

                            var respuestaEnvio = new EnviarDocumentoResponse();
                            EnviarDocumentoController enviarDoc = new EnviarDocumentoController();
                            respuestaEnvio = enviarDoc.EnviarDocumentoResponse(enviarDocumentoRequest);
                            var rpta = (EnviarDocumentoResponse)respuestaEnvio;
                            if (rpta != null)
                            {
                                if (rpta.CodigoRespuesta == "0")
                                {
                                    r.Estadosunat  = "0";
                                    r.Mensajesunat = rpta.MensajeRespuesta;
                                    String ruta = @"C:\DOCUMENTOS-" + empresa.Ruc + "\\CDR\\" + "R-" + r.Nombredoc + ".zip";
                                    File.WriteAllBytes(ruta, Convert.FromBase64String(rpta.TramaZipCdr));
                                    r.CDR        = File.ReadAllBytes(ruta);
                                    todocorrecto = clsadmrepo.actualiza_repositorio(r);
                                }
                                else
                                {
                                    r.Estadosunat  = "-1";
                                    r.Mensajesunat = rpta.MensajeRespuesta;
                                    clsadmrepo.actualiza_repositorio(r);
                                }
                            }
                        }

                        if (todocorrecto)
                        {
                            MessageBox.Show("Los documentos fueron enviados de forma correcta");

                            listar_repositorio();
                            //Thread.Sleep(5000);
                            //this.Close();
                        }
                        else
                        {
                            MessageBox.Show("No todos los documentos fueron enviados de forma correcta");
                            listar_repositorio();
                        }
                    }
                }
            }
            catch (Exception a) { MessageBox.Show(a.Message); }
        }
        public EnviarDocumentoResponse Post([FromBody] ConsultaTicketRequest request)
        {
            var response = new EnviarDocumentoResponse();

            try
            {
                var conexionSunat = new ConexionSunat(new ConexionSunat.Parametros
                {
                    Ruc         = request.Ruc,
                    UserName    = request.UsuarioSol,
                    Password    = request.ClaveSol,
                    EndPointUrl = request.EndPointUrl
                });

                var resultado = conexionSunat.ObtenerEstado(request.NroTicket);

                if (resultado.Item2)
                {
                    var returnByte = Convert.FromBase64String(resultado.Item1);
                    using (var memRespuesta = new MemoryStream(returnByte))
                    {
                        using (var zipFile = ZipFile.Read(memRespuesta))
                        {
                            foreach (var entry in zipFile.Entries)
                            {
                                if (!entry.FileName.EndsWith(".xml"))
                                {
                                    continue;
                                }
                                using (var ms = new MemoryStream())
                                {
                                    entry.Extract(ms);
                                    ms.Position = 0;
                                    var responseReader = new StreamReader(ms);
                                    var responseString = responseReader.ReadToEnd();
                                    try
                                    {
                                        var xmlDoc = new XmlDocument();
                                        xmlDoc.LoadXml(responseString);

                                        var xmlnsManager = new XmlNamespaceManager(xmlDoc.NameTable);

                                        xmlnsManager.AddNamespace("ar", EspacioNombres.ar);
                                        xmlnsManager.AddNamespace("cac", EspacioNombres.cac);
                                        xmlnsManager.AddNamespace("cbc", EspacioNombres.cbc);

                                        response.CodigoRespuesta = xmlDoc.SelectSingleNode(EspacioNombres.nodoResponseCode,
                                                                                           xmlnsManager)?.InnerText;

                                        response.MensajeRespuesta = xmlDoc.SelectSingleNode(EspacioNombres.nodoDescription,
                                                                                            xmlnsManager)?.InnerText;
                                        response.TramaZipCdr = resultado.Item1;
                                        response.Exito       = true;
                                    }
                                    catch (Exception ex)
                                    {
                                        response.MensajeError = ex.Message;
                                        response.Pila         = ex.StackTrace;
                                        response.Exito        = false;
                                    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    response.Exito            = true;
                    response.MensajeRespuesta = resultado.Item1;
                }
            }
            catch (Exception ex)
            {
                response.MensajeError = ex.Message;
                response.Pila         = ex.StackTrace;
                response.Exito        = false;
            }

            return(response);
        }
Exemple #17
0
        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;
        }