Ejemplo n.º 1
0
        private async void Ejecutar_Click(object sender, RoutedEventArgs e)
        {
            System.Windows.Forms.Cursor.Current = Cursors.WaitCursor;

            //20186C16-C1DC-4717-8F46-407447D225BC  =   5
            //E6360E58-8BD6-4F80-B65B-8B2098760287  =   6

            var response = new DocumentoResponse();
            //try
            //{
            // Generar xml y serializar
            FacturaXml   facturaXml   = new FacturaXml();
            Serializador serializador = new Serializador();

            //var invoice = facturaXml.metodoTemp(documento);
            //response.TramaXmlSinFirma = serializador.GenerateSimpleXML(invoice);
            response.Exito = true;

            string xmlTextoPlano = Encoding.UTF8.GetString(Convert.FromBase64String(response.TramaXmlSinFirma));     // Para pruebas

            // Certificado
            rutaCertificado = "D:\\certificado\\Certificado-NuevoProveedor\\Wnl2U2wyVk01S2wyMzgzQQ%3d%3d.pfx";
            passCertificado = "53P4xfFC8sSeFRmt";

            var firmadoRequest = new FirmadoRequest
            {
                TramaXmlSinFirma    = response.TramaXmlSinFirma,
                CertificadoDigital  = Convert.ToBase64String(File.ReadAllBytes(rutaCertificado)),
                PasswordCertificado = passCertificado,
                UnSoloNodoExtension = false
            };



            EnviarDocumentoRequest enviarDocumentoRequest = new EnviarDocumentoRequest()
            {
                Ruc           = "1073580496",
                UsuarioSol    = "MODDATOS",
                ClaveSol      = "MODDATOS",
                EndPointUrl   = "https://e-beta.sunat.gob.pe/ol-ti-itcpfegem-beta/billService",
                IdDocumento   = "F001-00000001",
                TipoDocumento = "01",
                //TramaXmlFirmado = documentoFirmado.TramaXmlFirmado
            };

            var jsonEnvioDocumento = await PostSimple(enviarDocumentoRequest);


            string waiiiit = string.Empty;
            //}
            //catch (Exception ex)
            //{
            //    response.MensajeError = ex.Message;
            //    response.Pila = ex.StackTrace;
            //    response.Exito = false;
            //}
        }
Ejemplo n.º 2
0
        private async void ToolGenerar_Click(object sender, EventArgs e)
        {
            try
            {
                Cursor.Current = Cursors.WaitCursor;

                documentoElectronicoBindingSource.EndEdit();
                totalVentaTextBox.Focus();

                ISerializador     serializador = new Serializador();
                DocumentoResponse response     = new DocumentoResponse
                {
                    Exito = false
                };

                switch (_documento.TipoDocumento)
                {
                case "07":
                    response = await new GenerarNotaCredito(serializador).Post(_documento);
                    break;

                case "08":
                    response = await new GenerarNotaDedito(serializador).Post(_documento);
                    break;

                default:
                    response = await new GenerarFactura(serializador).Post(_documento);
                    break;
                }

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

                RutaArchivo = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                           $"{_documento.IdDocumento}.xml");

                File.WriteAllBytes(RutaArchivo, Convert.FromBase64String(response.TramaXmlSinFirma));

                IdDocumento = _documento.IdDocumento;

                DialogResult = DialogResult.OK;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                Cursor.Current = Cursors.Default;
            }
        }
Ejemplo n.º 3
0
        public async Task <DocumentoResponse> Generar([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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 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);
        }
Ejemplo n.º 7
0
        public async Task <DocumentoResponse> Post([FromBody] 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);
        }
Ejemplo n.º 8
0
        public DocumentoResponse Post([FromBody] ResumenDiario resumen)
        {
            var response = new DocumentoResponse();

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

            return(response);
        }
Ejemplo n.º 9
0
        private async void BtnNotaDebito_Click(object sender, EventArgs e)
        {
            DatosNDebito();
            ISerializador     serializador = new Serializador();
            DocumentoResponse response     = new DocumentoResponse
            {
                Exito = false
            };

            response = await new GenerarNotaDedito(serializador).Post(_documento);

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

            RutaArchivo = Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
                                       $"{_documento.IdDocumento}.xml");

            File.WriteAllBytes(RutaArchivo, Convert.FromBase64String(response.TramaXmlSinFirma));
        }
        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 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);
        }
        public DocumentoResponse Post([FromBody] DocumentoElectronico documento)
        {
            var response = new DocumentoResponse();

            try
            {
                var notaCredito = Generador.GenerarCreditNote(documento);

                var serializador = new Serializador();

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

            return(response);
        }
Ejemplo n.º 13
0
        public static HojaTramiteViewModel HojaTramite(DocumentoResponse response)
        {
            HojaTramiteViewModel item = new HojaTramiteViewModel
            {
                id_documento = response.id_documento,
                numero       = response.numero,
                nombre_tipo_documento_tramite = response.tipo_documento.nombre,
                numero_documento       = response.numero_documento,
                nom_doc                = response.nom_doc,
                persona_crea           = response.persona_crea,
                asunto                 = response.hoja_tramite.asunto,
                nombre_tipo_tramite    = response.hoja_tramite.nombre_tipo_tramite,
                nombre_oficina_tramite = response.hoja_tramite.nombre_oficina,
                numero_HT              = response.numero,
                referencia             = response.hoja_tramite.referencia,
                Hoja_Tramite           = response.hoja_tramite.hoja_tramite,
                id_expediente          = response.hoja_tramite.id_expediente,
                editar                 = response.hoja_tramite.editar
            };

            return(item);
        }
Ejemplo n.º 14
0
        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);
        }
        private void CrearFactura()
        {
            try
            {
                _documento = new DocumentoElectronico
                {
                    Emisor   = CrearEmisor(),
                    Receptor = new Contribuyente
                    {
                        NroDocumento  = "20100039207",
                        TipoDocumento = "6",
                        NombreLegal   = "RANSA COMERCIAL S.A."
                    },
                    IdDocumento       = "FF11-001",
                    FechaEmision      = DateTime.Today.AddDays(-5).ToString(FormatoFecha),
                    Moneda            = "PEN",
                    MontoEnLetras     = "SON CIENTO DIECIOCHO SOLES CON 0/100",
                    CalculoIgv        = 0.18m,
                    CalculoIsc        = 0.10m,
                    CalculoDetraccion = 0.04m,
                    TipoDocumento     = "01",
                    TotalIgv          = 18,
                    TotalVenta        = 118,
                    Gravadas          = 100,
                    Items             = new List <DetalleDocumento>
                    {
                        new DetalleDocumento
                        {
                            Id                = 1,
                            Cantidad          = 5,
                            PrecioReferencial = 20,
                            PrecioUnitario    = 20,
                            TipoPrecio        = "01",
                            CodigoItem        = "1234234",
                            Descripcion       = "Arroz Costeño",
                            UnidadMedida      = "KG",
                            Impuesto          = 18,
                            TipoImpuesto      = "10", // Gravada
                            TotalVenta        = 100,
                            Suma              = 100
                        }
                    }
                };

                TxtResultado.Text = "Generando XML....";

                var requestInvoice = new RestRequest("GenerarFactura", Method.POST)
                {
                    RequestFormat = DataFormat.Json
                };

                requestInvoice.AddBody(_documento);

                _client.ExecuteAsync <DocumentoResponse>(requestInvoice,
                                                         response =>
                {
                    _documentoResponse = response.Data;

                    Dispatcher.BeginInvoke(() =>
                    {
                        TxtResultado.Text = _documentoResponse.Exito
                                ? "XML Generado" : _documentoResponse.MensajeError;
                        BtnFirmar.IsEnabled = _documentoResponse.Exito;
                    });
                });
            }
            catch (Exception ex)
            {
                TxtResultado.Text = ex.Message;
            }
        }