Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[16.0][ADD] l10n_es_aeat_verifactu #3579

Open
wants to merge 5 commits into
base: 16.0
Choose a base branch
from

Conversation

zamberjo
Copy link
Member

@zamberjo zamberjo commented May 10, 2024

Movemos a este PR el nuevo módulo l10n_es_aeat_verifactu

Depends on:

@zamberjo zamberjo marked this pull request as ready for review May 10, 2024 06:09
@almumu
Copy link
Member

almumu commented Jun 28, 2024

Añadido la lógica que generará el hash de las facturas. Basado en la documentación de la aeat
https://www.agenciatributaria.es/static_files/AEAT_Desarrolladores/EEDD/IVA/VERI-FACTU/Veri-Factu_especificaciones_huella_hash_registros.pdf
De momento son campos compute y sin store True para poder ir avanzando.

  • Pendiente decidir de qué modo se va a saber cuál es la factura anterior enviada, ya que el hash de una factura a su vez está compuesto por el hash de la anterior factura enviada.

  • Pendiente decidir en qué momento generaremos el hash y que se guarde en la factura.

  • El tipo de documento de verifactu, de momento es un selection, si esos son los tipos definitivos podríamos convertirlo a un modelo y un data

@pedrobaeza pedrobaeza added this to the 16.0 milestone Sep 3, 2024
@pedrobaeza
Copy link
Member

Se puede ya hacer rebase.

@zamberjo
Copy link
Member Author

zamberjo commented Sep 3, 2024

Se puede ya hacer rebase.

Hecho y he añadido los últimos cambios para setear el campo aeat_sending_enabled

return self.amount_total

def _get_verifactu_previous_hash(self):
# TODO store it? search it by some kind of sequence?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, but the problem in this case is that the previous record is not the previous one from the same journal. A possible solution is to implement a unique sequence for all invoices, but we also need to know if they have been sent and received by the AEAT.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Lo que se me ocurre es una especie de cola, así se elimina el problema de la concurrencia (y se puede tener tantas secuencias como diarios). La cola FIFO guarda la referencia o hash de la última factura en un campo global por orden de inserción.

Faltaría decidir cuando meter la factura en la cola que generará el hash y la enviará a AEAT. No sé si por la ley hay obligatoriedad de hacerlo cuando se le da a enviar factura o solamente al guardar, o pasa como el SII que puede ser manual. En cualquier caso sería meterlo en la cola desde cualquier diario y encadenar facturas de diferentes diarios, validadas por diferentes usuarios, o demás concurrencias, gracias a la cola no supondrían un problema.

es por dar ideas.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Me resulta muy extraño que esa factura anterior tenga que ser global en lugar de por diario. La AEAT es muy consciente de las cuestiones técnicas asociadas a tener más de una secuencia de numeración (como múltiples canales de venta).

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Según mi interpretación de la documentación, el encadenamiento es por SIF (Sistema Informático de Facturación).

imagen

Caso 2: registro de facturación –en este caso de alta–
con registro de facturación anterior existente en el SIF
(siendo, por tanto, el segundo registro o sucesivo)

Lo interpreto de ese modo porque dice factura anterior existente en el SIF.

En caso de ser mi interpretación correcta, entiendo que habría que crear un SIF para la facturación de Odoo y uno por TPV, si no recuerdo mal así es como funciona en TicketBAI.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Si por eso interpretamos que el encadenamiento era con el anterior enviado y eso excluye el orden por diario pero realmente tampoco habla de series en ningun lado que yo haya visto...

@SoniaViciana
Copy link

Hola @zamberjo @almumu

Veo que falta la parte del hash:

image

La documentación técnica de la AEAT está disponible (en "Borrador"), y en cuanto al tema de controlar la factura anterior enviada a Verifactu, si no me equivoco, es algo que ya requiere y está disponible dentro de TicketBai, así que seguramente lo podremos aprovechar.

¿Os parece bien si trabajamos de nuestro lado en la parte del Hash? ¿Veis necesario reunirnos antes? lo comento por no trabajar en paralelo en lo mismo y que nos repartamos la carga de trabajo.

Quedo a la espera de vuestros comentarios.
Gracias!


Fuente: https://www.agenciatributaria.es/AEAT.desarrolladores/Desarrolladores/_menu_/Documentacion/IVA/Sistemas_Informaticos_de_Facturacion_y_Sistemas_VERI_FACTU/Sistemas_Informaticos_de_Facturacion_y_Sistemas_VERI_FACTU.html

@anmarmo1
Copy link

anmarmo1 commented Oct 1, 2024

Hola @zamberjo @almumu

Veo que falta la parte del hash:

image

La documentación técnica de la AEAT está disponible (en "Borrador"), y en cuanto al tema de controlar la factura anterior enviada a Verifactu, si no me equivoco, es algo que ya requiere y está disponible dentro de TicketBai, así que seguramente lo podremos aprovechar.

¿Os parece bien si trabajamos de nuestro lado en la parte del Hash? ¿Veis necesario reunirnos antes? lo comento por no trabajar en paralelo en lo mismo y que nos repartamos la carga de trabajo.

Quedo a la espera de vuestros comentarios. Gracias!

Fuente: https://www.agenciatributaria.es/AEAT.desarrolladores/Desarrolladores/_menu_/Documentacion/IVA/Sistemas_Informaticos_de_Facturacion_y_Sistemas_VERI_FACTU/Sistemas_Informaticos_de_Facturacion_y_Sistemas_VERI_FACTU.html

Hola Sonia
Perfecto, si quereis encargaros vosotros de la parte del HASH no hay problema, si quereis una reunión tampoco hay problema.
El tema del hash es que, el que implementa Odoo no vale, por que los valores para construirlo para el verifactu son distintos y además la complejidad reside en saber cual es el último registro que ha sido enviado a la AEAT por el tema del encadenamiento. Con respecto a utilizar la parte de ticketbai para esto, podéis revisar como se implemento como inspiración, pero no vale para la implementación del verifactu ya que esta implementado con una librería de python externa y en los OCA Days los PSC nos indicaron que de esta manera no se fusionaría. Por nuestro lado, si queréis podemos empezar con las llamadas al wsdl de la AEAT y así avanzamos.

@ljsalvatierra-factorlibre
Copy link
Contributor

Hola @zamberjo @almumu
Veo que falta la parte del hash:
image
La documentación técnica de la AEAT está disponible (en "Borrador"), y en cuanto al tema de controlar la factura anterior enviada a Verifactu, si no me equivoco, es algo que ya requiere y está disponible dentro de TicketBai, así que seguramente lo podremos aprovechar.
¿Os parece bien si trabajamos de nuestro lado en la parte del Hash? ¿Veis necesario reunirnos antes? lo comento por no trabajar en paralelo en lo mismo y que nos repartamos la carga de trabajo.
Quedo a la espera de vuestros comentarios. Gracias!
Fuente: https://www.agenciatributaria.es/AEAT.desarrolladores/Desarrolladores/_menu_/Documentacion/IVA/Sistemas_Informaticos_de_Facturacion_y_Sistemas_VERI_FACTU/Sistemas_Informaticos_de_Facturacion_y_Sistemas_VERI_FACTU.html

Hola Sonia Perfecto, si quereis encargaros vosotros de la parte del HASH no hay problema, si quereis una reunión tampoco hay problema. El tema del hash es que, el que implementa Odoo no vale, por que los valores para construirlo para el verifactu son distintos y además la complejidad reside en saber cual es el último registro que ha sido enviado a la AEAT por el tema del encadenamiento. Con respecto a utilizar la parte de ticketbai para esto, podéis revisar como se implemento como inspiración, pero no vale para la implementación del verifactu ya que esta implementado con una librería de python externa y en los OCA Days los PSC nos indicaron que de esta manera no se fusionaría. Por nuestro lado, si queréis podemos empezar con las llamadas al wsdl de la AEAT y así avanzamos.

Hola @anmarmo1, ¿con librería de python externa te refieres a la librería de Javascript tbai.js?

@anmarmo1
Copy link

anmarmo1 commented Oct 8, 2024

Hola @zamberjo @almumu
Veo que falta la parte del hash:
image
La documentación técnica de la AEAT está disponible (en "Borrador"), y en cuanto al tema de controlar la factura anterior enviada a Verifactu, si no me equivoco, es algo que ya requiere y está disponible dentro de TicketBai, así que seguramente lo podremos aprovechar.
¿Os parece bien si trabajamos de nuestro lado en la parte del Hash? ¿Veis necesario reunirnos antes? lo comento por no trabajar en paralelo en lo mismo y que nos repartamos la carga de trabajo.
Quedo a la espera de vuestros comentarios. Gracias!
Fuente: https://www.agenciatributaria.es/AEAT.desarrolladores/Desarrolladores/_menu_/Documentacion/IVA/Sistemas_Informaticos_de_Facturacion_y_Sistemas_VERI_FACTU/Sistemas_Informaticos_de_Facturacion_y_Sistemas_VERI_FACTU.html

Hola Sonia Perfecto, si quereis encargaros vosotros de la parte del HASH no hay problema, si quereis una reunión tampoco hay problema. El tema del hash es que, el que implementa Odoo no vale, por que los valores para construirlo para el verifactu son distintos y además la complejidad reside en saber cual es el último registro que ha sido enviado a la AEAT por el tema del encadenamiento. Con respecto a utilizar la parte de ticketbai para esto, podéis revisar como se implemento como inspiración, pero no vale para la implementación del verifactu ya que esta implementado con una librería de python externa y en los OCA Days los PSC nos indicaron que de esta manera no se fusionaría. Por nuestro lado, si queréis podemos empezar con las llamadas al wsdl de la AEAT y así avanzamos.

Hola @anmarmo1, ¿con librería de python externa te refieres a la librería de Javascript tbai.js?

Hola @ljsalvatierra-factorlibre realmente me referia a este PR #3547

@almumu
Copy link
Member

almumu commented Nov 7, 2024

Hemos hecho una primera versión funcional de envío de facturas a verifactu.

El desarrollo está hecho de la forma más parecida posible al módulo del sii, para que en caso de que haya que unificar o modificar procesos, sea los más entendible posible para todos los que toquemos código.

Falta mucho por hacer pero ya es un paso, cualquier aportación es bienvenida.

Para poder probarlo:

  • Tener certificado
  • Activar verifactu en la compañía y establecer que es entorno de pruebas.
  • Configurar en la posición fiscal la clave de impuesto (Verifactu Tax Key): IVA y clave de registro verifactu: Operación de Régimen General, para que al crear la factura se rellenen los datos.
  • Hay un mapeo de impuestos como en el sii, algunos están ya rellenados pero faltará revisarlo.
  • De momento el envío se hace desde el botón manual en la factura, una vez validada. Todavía no está implementado el envío con queue job.
  • Sólo se han hecho pruebas de envío con facturas normales de régimen nacional o recargo de equivalencia sin impuestos especiales. Como la parte del encadenamiento con el registro anterior en el hash sigue sin estar clara, de momento se envía siempre como si fuera el primer registro para poder enviarlo.
  • No están contemplados aún casos como facturas simplificadas, terceros, no sujetas.., tampoco modificaciones y anulaciones de facturas.
  • Los datos del desarrollador: IdSistemaInformatico, NumeroInstalacion, .. nos los hemos inventado un poco, esto habrá que verlo.

@almumu almumu force-pushed the ADD/l10n_es_aeat_verifactu branch 2 times, most recently from 9b91782 to 192593e Compare November 7, 2024 11:39
* Primera versión funcional de envío de facturas a verifactu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants