Skip to content

[18.0][FIX] l10n_es_vat_prorate: Antes de publicar la factura, verificar que la prorrata se ha aplicado#4765

Open
Andrii9090 wants to merge 1 commit intoOCA:18.0from
moduon:18.0-fix-l10n_es_vat_prorate
Open

[18.0][FIX] l10n_es_vat_prorate: Antes de publicar la factura, verificar que la prorrata se ha aplicado#4765
Andrii9090 wants to merge 1 commit intoOCA:18.0from
moduon:18.0-fix-l10n_es_vat_prorate

Conversation

@Andrii9090
Copy link
Contributor

En algunas instancias de nuestros clientes se ha detectado una situación rara en la que facturas de proveedor que deberían incluir líneas de prorrata no las generan.

El problema se ha resuelto manualmente volviendo la factura a borrador y confirmándola de nuevo (sin cambiar nada), lo que provoca que la prorrata se calcule correctamente.

Estas situaciones no han podido reproducirse ni en entorno local ni en Runbot.
Para evitar este problema, proponemos el siguiente fix:
Antes de publicar la factura, comprobar:

  • si la empresa tiene prorrata configurada,
  • si las líneas de factura están sujetas a prorrata,
  • y si no existe ninguna línea de apunte contable correspondiente a la prorrata.
    En caso de cumplirse estas condiciones, recalcular la prorrata llamando al método
    _apply_vat_prorate del modelo account.move.

@moduon
MT-13468

@OCA-git-bot
Copy link
Contributor

Hi @EmilioPascual, @rafaelbn,
some modules you are maintaining are being modified, check this out!

@Andrii9090 Andrii9090 force-pushed the 18.0-fix-l10n_es_vat_prorate branch from cecf30d to e52bf52 Compare January 27, 2026 10:26
@Andrii9090 Andrii9090 marked this pull request as ready for review January 27, 2026 10:26
Copy link
Member

@rafaelbn rafaelbn left a comment

Choose a reason for hiding this comment

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

Muy buena mejora. Resiliencia.

@christian-ramos-tecnativa
Copy link
Contributor

Estoy a favor de la comprobación, pero no me gusta nada hacer cosas que modifiquen la factura durante la validación. Ya que estás validando una factura que consideras correcta pero luego puede presentar datos distintos y esto puede confundir al usuario. ¿No podríamos transformarlo en un raise directamente? Indicando en el error que pasando la factura a cancelado y a borrador de nuevo debería generar el vat correctamente

@Andrii9090 Andrii9090 force-pushed the 18.0-fix-l10n_es_vat_prorate branch from e52bf52 to 12b97ea Compare January 28, 2026 09:41
@Andrii9090
Copy link
Contributor Author

He cambiado el código, ahora

  • si la empresa tiene prorrata configurada,
  • si las líneas de factura están sujetas a prorrata,
  • si los impuestos de la factura tienen with_vat_prorate=True
  • si no existe ninguna línea de apunte contable correspondiente a la prorrata.
    En caso de cumplirse estas condiciones, salta un raise

Además, he establecido el campo with_vat_prorate de account.move.line como readonly en el caso de prorrata general, para evitar que el ORM lo establezca a False por defecto durante el cálculo de las líneas de prorrata.

@EmilioPascual puedes revisar de nuevo?

Copy link
Contributor

@christian-ramos-tecnativa christian-ramos-tecnativa left a comment

Choose a reason for hiding this comment

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

Gracias por cambiarlo a un raise, un pequeño comentario

<field
name="with_vat_prorate"
string="Vat Prorate"
readonly="not parent.with_special_vat_prorate or parent.move_type not in ['in_invoice', 'in_refund']"
Copy link
Contributor

Choose a reason for hiding this comment

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

La condición del readonly es la misma que el column_invisible, por lo tanto se hace readonly cuando está invisible, no hace nada en realidad. Ya que el readonly en la vista aplica solo al usuario por la interfaz, no a las acciones por ORM

Suggested change
readonly="not parent.with_special_vat_prorate or parent.move_type not in ['in_invoice', 'in_refund']"

Copy link
Member

Choose a reason for hiding this comment

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

Este parche vuelve a ser lo mismo que en 16 con #4401, y los comentarios serían los mismos: ¿cuál es la razón/pasos para reproducirlo y por qué este hack es la solución?

@pedrobaeza pedrobaeza added this to the 18.0 milestone Jan 28, 2026
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.

6 participants