-
-
Notifications
You must be signed in to change notification settings - Fork 534
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
base: 16.0
Are you sure you want to change the base?
Conversation
Añadido la lógica que generará el hash de las facturas. Basado en la documentación de la aeat
|
Se puede ya hacer rebase. |
46637e3
to
db76bac
Compare
Hecho y he añadido los últimos cambios para setear el campo |
4a39d23
to
8652e53
Compare
return self.amount_total | ||
|
||
def _get_verifactu_previous_hash(self): | ||
# TODO store it? search it by some kind of sequence? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Indeed Odoo chose to create a sequence when creating the journal and uses the sequence to find the previous entry.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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).
There was a problem hiding this comment.
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).
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.
There was a problem hiding this comment.
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...
Veo que falta la parte del hash: 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. |
Hola Sonia |
Hola @anmarmo1, ¿con librería de python externa te refieres a la librería de Javascript |
Hola @ljsalvatierra-factorlibre realmente me referia a este PR #3547 |
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:
|
192593e
to
0a8205b
Compare
Hola, por mi parte empezaré a revisar/probar y demás para poder desarrollar la parte necesaria para la ATC en Canarias. |
He enviado un PR aurestic#62 a los compañeros de Aurestic como punto de partida para el QR en las facturas. Es una implementación funcional, aunque hay detalles por discutir y revisar. Aprovecho para dar las gracias a todos por el trabajo realizado. |
@pedrobaeza veo que en los mapeos los impuestos del IGIC no están en https://github.com/aurestic/l10n-spain/tree/ADD/l10n_es_aeat_verifactu/l10n_es_aeat_verifactu/data , ¿Dónde se implementaría en el módulo del igic, en uno nuevo verifactu_igic ...... ? |
Eso es, @syci. Habrá que hacer un módulo puente. |
f26de9e
to
61fb366
Compare
@SoniaViciana @ljsalvatierra-factorlibre ¿Vais a implementar la parte del Encadenamiento? Es por seguir nosotros. |
Hola @anmarmo1 estamos realizando el desarrollo para tener un SIF para el backend de Odoo y un SIF por cada TPV ( |
@ljsalvatierra-factorlibre ok entonces esperamos. ¡Gracias! |
Podéis revisar los cambios aquí #3973 |
Estoy ahora con el desarrollo de |
Ok! Revisamos |
Muchas gracias por vuestra aportación @ljsalvatierra-factorlibre , en el pr #3973 Aunque la parte de anulación de facturas aún no está hecha, ahí también se envía el encadenamiento, habrá que tener cuidado a futuro de no invocar a _get_chaining_invoice_dict ya que se machacaría el valor del encadenamiento. O bien añadir una comprobación de que si ya está establecido el verifactu_last_invoice_id en la factura, no lo modifique ni en la factura ni en la compañía. Aun así siguen habiendo varias dudas que aún no sabemos como se van a implementar y que tendremos que llegar a un consenso entre todos... Tampoco tenemos claro cuál es la fecha-hora que deberíamos enviar en la huella (FechaHoraHusoGenRegistro), ahora mismo es la de creación (_get_verifactu_registration_date), pero eso no es viable porque si pasan más de 120 segundos de esa fecha-hora de creación hasta que se envía a verifactu (lo cual es muy probable que pase), la aeat la rechaza con el error "2004 El valor del campo FechaHoraHusoGenRegistro debe ser la fecha actual del sistema de la AEAT, admitiéndose un margen de error de: 120 segundos". Quizá lo correcto sería crear un nuevo campo de fecha envío verifactu que sea cuando realmente se envía a verifactu y que se guarde en la factura y sea ese el que se use para obtener el hash. En cualquier caso, de momento podéis hacernos un pr a nuestra rama con estos cambios 03f46ef y así los mergeamos mientras se decide todo lo demás. |
Hola @almumu, muchas gracias por revisarlo, sobre el envío:
|
record.restrict_mode_hash_table = True | ||
record.restrict_mode_hash_table_readonly = True |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
He detectado que esto no está llamando al write de account.journal
, y está dando problemas al activar Verifactu en una compañía. Podríais actualizar esos dos campos mediante un write?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hola @aritzolea , no sé muy bien qué problemas os estará dando esta parte pero si tienes el caso controlado, podéis hacer cualquier modificación necesaria en vuestra rama y añadirlo al pr que nos hagáis. Quizá sería buena idea que nos hagáis el pr a esta rama para poder mergearlo cuanto antes y que todos hagamos las pruebas y aportaciones sobre el mismo código, como hicimos con el de @ozono , y seguir avanzando.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Buenas @almumu
Estoy con pruebas en mi local, intento abriros el PR entre hoy y mañana.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
genial! muchas gracias @aritzolea
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Buenas! Os he abierto PR
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
He abierto otro PR para corregir pre-commit y tests
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
He abierto otro PR para corregir pre-commit y tests
merged. He hecho otro commit porque todavía daba error el precommit
# no vamos autilizar el hash de odoo porque la estructura no nos sirve | ||
# para verifactu, por lo que este código no nos terminaría de valer. | ||
# De momento lo dejamos hasta saber cómo vamos a controlar | ||
# el tema de la factura anterior enviada a verifactu para el cálculo |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No entiendo del todo por que se ha hecho esto de esta forma. pero sigue siendo necesario después de la implementación del encadenamiento en #3973?
Sí que habrá que controlar la modificación de las facturas ya enviadas, pero la primera parte no me queda clara.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
se hizo en su momento para utilizar la parte de odoo que mediante el restrict_mode_hash_table del account.move (que es un related al journal) controla la modificación de facturas, no permite pasarlas a borrador, controla qué campos se pueden modificar, etc. Lo que no se usa es ese ese propio hash para enviarlo a verifactu como hash puesto que no tiene nada que ver el formato de ese hash con el que pide verifactu.
Agencia Tributaria en el momento de su producción
* Add verifactu hash code
* Primera versión funcional de envío de facturas a verifactu
…ice post and refactor (#66)
7ee354c
to
62e0169
Compare
Movemos a este PR el nuevo módulo
l10n_es_aeat_verifactu
Depends on: