Tutoriales

Creación de Facturas Electrónicas con OpenInvoicePeru

Hola!

El día de hoy haré un pequeño Tutorial de Facturas Electronicas con OpenInvoicePeru, enviarla a SUNAT y recibir el CDR.

He decidido colocar tres ejemplos de Facturas con las siguientes Operaciones:

  • Gravadas.
  • Exoneradas.
  • Gratuitas.

Ejecución del Proyecto OpenInvoicePeru

Para comenzar, debo asumir que ya has podido ejecutar el proyecto desde Visual Studio 2017, si aun no has podido, te invito a que leas la descripción del proyecto en la página de GitHub, hay que tener en cuenta que cuando se ejecuta por primera vez la API REST en el navegador, saldrá una pantalla como esta:

snap1

Iniciar en el navegador

Debido a que esta API REST no cuenta con una página de Inicio sale el error Forbidden (Prohibido), ya que no se tiene visibilidad del directorio físico a través del navegador, por lo cual se tiene que colocar la palabra swagger al final de la URL:

snap2

Y debería retornar la siguiente pantalla:

snap3

Swagger es un Framework que permite autodocumentar las API REST.

Creación de las Facturas

Hay que recalcar que los pasos son prácticamente los mismos en casi todos los casos, así que empecemos por los datos del contribuyente.

Para este ejemplo voy a usar el servidor de desarrollo de SUNAT, el cual es el beta, escogiéndolo desde el combo.

Colocamos un RUC válido, y en Usuario y Clave SOL colocamos en ambos casos MODDATOS, luego en el Grupo de Documentos escogemos el primero, después elegimos como Tipo de Documento: Factura.

Y para concluir debemos escoger un Certificado Digital, no importa si es uno real o de prueba, lo importante es que el formato del Certificado debe ser un PFX; si quieres crear un Certificado Digital Autofirmado te recomiendo que leas el post que hice hace algun tiempo; y luego llenamos el campo de Contraseña si así fuera el caso, debería quedar como la siguiente imagen:

Tutorial de Facturas Electronicas con OpenInvoicePeru

Creación de un XML Nuevo

Como en este caso vamos a crear un XML desde cero, presionamos el botón Generar, para luego llenar los datos del contribuyente Emisor, así como los datos del Receptor, debido a que es una Factura, el Receptor, siempre debe ser una persona jurídica o una empresa, por lo tanto el Tipo de Documento del Receptor debe ser el 6: Registro Unico de Contribuyentes (RUC). Debería quedar como la siguiente imagen:

Tutorial de Facturas Electronicas con OpenInvoicePeru

Luego, procedemos con los demás datos, para este ejemplo colocamos el ID del Documento, que se compone de la Serie y el Correlativo de la Factura, coloquemos FF11-1250, luego indiquemos que será en Soles, con la fecha de hoy, para luego indicar que el monto en letras no estará en blanco:

Tutorial de Facturas Electronicas con OpenInvoicePeru

Detalles de la Factura

Finalmente agregamos un detalle, presionando sobre el botón Agregar y luego llenamos los siguientes datos:

Tutorial de Facturas Electronicas con OpenInvoicePeru

La única diferencia entre cada caso es el tipo de Impuesto, sólo para el caso cuando sean operaciones gravadas, se presiona el botón Calcular IGV.

  • Para Gravadas, se usa el valor 10 (Gravado – Operación Onerosa)
  • Para Exoneradas, se usa el valor 20 (Exonerado – Operación Onerosa)
  • Y para Gratuitas, se usa el valor 21 (Exonerado – Transferencia Gratuita), solo que en este caso, el precio del valor unitario tendría que ser 0 y el precio referencial si debe incluir el monto que hubiera costado el ítem.

Resumen de Detalles

Una vez colocado todos esos detalles, procedemos a observar que cada grupo ha sido totalizado de manera automática, esto siempre dependerá del tipo de impuesto que se escoja.

Tutorial de Facturas Electronicas con OpenInvoicePeru

Finalmente, presionamos el botón Generar XML y nos retornará a la pantalla inicial del aplicativo, como podrás apreciar, tanto el nombre de la ruta del XML se ha autogenerado asi como el campo Serie-Correlativo con lo hecho en la pantalla anterior.

Tutorial de Facturas Electronicas con OpenInvoicePeru

Presionamos el botón Enviar y obtendremos la respuesta de SUNAT en el cuadro amarillo, si tienes configurado el asistente de Voz de Windows y el checkbox de Hablar en voz alta está activado, el contenido de la caja de texto se leerá de manera automática.

Tutorial de Facturas Electronicas con OpenInvoicePeru

Comprobación de los archivos generados

Para comprobar tanto el XML Firmado y enviado a SUNAT, así como el CDR (Constancia de Recepción) podremos navegar a través del Explorador de Windows que en la carpeta Artifacts, donde está corriendo el EXE. Existen dos carpetas para cada caso, y podremos visualizar dichos archivos con el editor que tengamos a la mano.

Tutorial de Facturas Electronicas con OpenInvoicePeru

Métodos de la API REST

Los métodos de la API REST que se han usado durante todo este proceso son los siguientes:

  1. GenerarFactura
  2. Firmar
  3. EnviarDocumento

Tú mismo puedes depurar línea a línea lo que hace el proyecto y puedes hasta obtener el JSON que se envia entre cada solicitud POST y así poder construir tu propio cliente RESTful.

Consideraciones

Recuerda que el aplicativo Windows que acompaña a OpenInvoicePeru es tan sólo un proyecto de prueba, no pretende ser un Facturador, ya que no valida campos obligatorios, ni tampoco hace cálculos complejos, tan sólo se limita a calcular el Precio por la Cantidad y luego hacer la sumatoria de las mismas.

Te invito a que explores todas las funcionalidades de la aplicación pero como siempre acompañado de la documentación oficial de SUNAT con sus respectivos catálogos, ya que de eso depende cada caso.

Saludos!

About Erick Orlando

Desarrollador de Software con más de 14 años de experiencia en tecnologías Microsoft .NET, Co-Fundador de la comunidad Perú .NET Development y CTO de Framework Perú.

Related Posts

14 thoughts on “Creación de Facturas Electrónicas con OpenInvoicePeru

  1. Nelson Dionicio N dice:

    Hola Erick
    Quisiera contactarme contigo para que me asesores en la implementacion de facturación electrónica.

    Saludos

    Nelson Dionicio
    Tf. 942973746

    1. Hola Nelson para asesorías escribe un correo electrónico a soporte@www.frameworkperu.com con todos los datos técnicos que necesitas, gracias.

  2. Richard Aguilar dice:

    Hola Erick quería consultarte este proyecto de facturación Electrónica se podría acoplar a un programa ERP que ya cuenta la empresa que tiene su base de datos en SQL muy agradecido por tu respuesta

  3. ALAN HERBERTH MARTIN HUANCA VILLAVERDE dice:

    Hola Erick felicitarte por todo lo bueno que vienes haciendo,tu aporte en grandioso

  4. Miguel Jaimes dice:

    Hola, el framework soporte anticipos?

    1. Si claro que sí, OpenInvoicePeru soporta todos los casos de Factura y Boleta.

  5. Lucho dice:

    Saben si hoy 17/04/2018 el servicio de pruebas de la sunat está normal. Me devuelve error 0200 para las facturas que envío.

    1. El error 200 es un problema del Servidor de SUNAT, algo que escapa de nuestras manos. Lamentablemente solo nos queda esperar y ser pacientes.

  6. Luis Ernesto dice:

    Hola Erick, mis felicitaciones por esta aplicación, por favor no entiendo porque al momento de ingresar los datos según indica este manual me salta el error: “string was not recognized as a valid datetime” hasta el moneto no he podido generar ninguna factura de prueba, me he saltado algún paso ya coloque todos los datos fecha totales, items, etc pero el error continua. Agradezco tu ayuda con este dilema.

    1. Hola Luis, eso te sale en la aplicacion de Windows que viene de ejemplo?

  7. Luis Ernesto dice:

    Hola Erick, efectivamente es usando el ejemplo de Windows, he seguido los pasos indicados pero no se porque me sale ese mensaje. Agradezco tu ayuda. Openinvoiceperu 1.5.0 desde Github

    1. Puedes enviar un pantallazo de ser necesario por favor, sería de gran ayuda 😉

  8. Paul Lagos dice:

    Gracias Erick por compartir esta aplicación que es muy interesante, una consulta por favor, al momento de enviar el resumen diario, usando la aplicación openinvoice lo envio como archivo XML o ZIP, y como segunda consulta que dato pongo en serie y correlativo del docuemnto al enviar resumen diario, Muchas gracias.

    1. El resumen se envía como ZIP, pero si usas la API de OpenInvoicePeru solo debes enviar la trama Base64 del XML para que con el metodo EnviarResumen se envie a la SUNAT, internamente OpenInvoicePeru se encargará de zipear el archivo y enviarlo. En el resumen diario, el dato de serie y correlativo va en el campo ‘IdDocumento’.

      Saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *