Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
be0f290
[ADD] l10n_es_aeat_vat_special_prorrate: new module
eantones Oct 28, 2019
3fe82e0
[IMP] l10n_es_aeat_vat_special_prorrate: using company from invoice f…
eantones Oct 28, 2019
7c8d0c8
[TRL] l10n_es_aeat_vat_special_prorrate: translations
eantones Oct 28, 2019
d4882f3
[IMP] l10n_es_aeat_vat_special_prorrate: added method to get the non-…
eantones Dec 27, 2019
3fe7a8c
[FIX] l10n_es_aeat_vat_special_prorrate: wrong permission group
eantones May 12, 2020
5228fd1
[IMP] l10n_es_aeat_vat_special_prorrate: added final percentage and h…
eantones Dec 22, 2020
2160978
[REF+FIX] l10n_es_aeat_vat_special_prorrate: make methods externally …
eantones Dec 28, 2020
795b7bf
[IMP] l10n_es_aeat_vat_special_prorrate: added final prorrate computa…
eantones Jan 4, 2021
ef45ac4
[FIX] l10n_es_aeat_vat_special_prorrate: allow null values on next ye…
eantones Jan 4, 2021
ccfbdab
[IMP] l10n_es_aeat_vat_special_prorrate: black, isort, prettier
MiquelRForgeFlow Sep 7, 2021
b5cea5f
[MIG] l10n_es_aeat_vat_special_prorrate: Migration to 14.0
eantones Mar 9, 2022
bc3c5eb
[FIX] l10n_es_aeat_vat_special_prorrate: recompute lines correctly
MiquelRForgeFlow May 26, 2022
e0c3926
[FIX] l10n_es_aeat_vat_special_prorrate: adapt method to an odoo update
MiquelRForgeFlow Jul 15, 2022
7e14edc
[IMP] l10n_es_aeat_vat_special_prorrate: write the tax percentage whe…
KNVx Nov 16, 2022
982cada
[FIX] l10n_es_aeat_vat_special_prorrate: prorate vat error creating n…
eantones Jan 2, 2023
87830d0
[FIX] l10n_es_aeat_vat_special_prorrate: prorate null date should not…
eantones Jan 5, 2023
6767904
[FIX] l10n_es_aeat_vat_special_prorrate: incorrect prorate tax in lin…
KNVx Jan 17, 2023
7d9e381
[IMP] l10n_es_aeat_vat_special_prorrate: new field to mark companies …
KNVx Jan 20, 2023
39f3685
[FIX] l10n_es_aeat_vat_special_prorrate: prorate invoice lines comput…
eantones Jan 23, 2023
5bc9590
[REF] l10n_es_aeat_vat_special_prorrate: Update copier template
eantones Oct 27, 2023
c2a36ca
[FIX] l10n_es_vat_special_prorate: Add missing tax
etobella Nov 13, 2023
27b73d5
[FIX] l10n_es_aeat_vat_special_prorrate: factor not computed on some …
eantones Sep 19, 2025
15fb40f
[REF+FIX] l10n_es_aeat_vat_special_prorrate: more generic and reusabl…
eantones Oct 15, 2025
1ea3387
[REF] l10n_es_aeat_vat_special_prorrate: wrong filename, it should be…
eantones Nov 6, 2025
3d66ae5
[FIX] l10n_es_aeat_vat_special_prorrate: wrong rounding computing pro…
eantones Nov 6, 2025
f764f03
[IMP] l10n_es_aeat_vat_special_prorrate: consider prorate repartition…
eantones Nov 7, 2025
6c9b493
[IMP] l10n_es_aeat_vat_special_prorrate: added readme folder
eantones Nov 7, 2025
83e8555
[FIX] l10n_es_aeat_vat_special_prorrate: error adding purchase order …
eantones Nov 13, 2025
3c4e555
[IMP] l10n_es_aeat_vat_special_prorrate: pre-commit auto fixes
deeniiz Feb 11, 2026
e0f6542
[MIG] l10n_es_aeat_vat_special_prorrate: Migration to 18.0
deeniiz Feb 11, 2026
bebb849
[DO NOT MERGE] test-requirements.txt
deeniiz Feb 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
64 changes: 64 additions & 0 deletions l10n_es_aeat_vat_special_prorrate/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
===============================
AEAT - Prorrata especial de IVA
===============================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:ca80aae12d33d2f1db6d6660cfa349770386cbcf591c27f04c6610f447414223
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-NuoBiT%2Fodoo--addons-lightgray.png?logo=github
:target: https://github.com/NuoBiT/odoo-addons/tree/18.0/l10n_es_aeat_vat_special_prorrate
:alt: NuoBiT/odoo-addons

|badge1| |badge2| |badge3|

Módulo para gestionar la prorrata especial del IVA en las facturas de
la AEAT

**Table of contents**

.. contents::
:local:

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/NuoBiT/odoo-addons/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/NuoBiT/odoo-addons/issues/new?body=module:%20l10n_es_aeat_vat_special_prorrate%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* NuoBiT Solutions SL

Contributors
------------

- `NuoBiT <https://www.nuobit.com>`__:

- Eric Antones [email protected]
- Deniz Gallo [email protected]

Maintainers
-----------

This module is part of the `NuoBiT/odoo-addons <https://github.com/NuoBiT/odoo-addons/tree/18.0/l10n_es_aeat_vat_special_prorrate>`_ project on GitHub.

You are welcome to contribute.
1 change: 1 addition & 0 deletions l10n_es_aeat_vat_special_prorrate/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
24 changes: 24 additions & 0 deletions l10n_es_aeat_vat_special_prorrate/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright NuoBiT Solutions SL - Eric Antones <[email protected]>
# Copyright 2026 NuoBiT Solutions SL - Deniz Gallo <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

{
"name": "AEAT - Prorrata especial de IVA",
"summary": "Módulo para gestionar la prorrata especial del IVA "
"en las facturas de la AEAT",
"version": "18.0.1.0.0",
"category": "Accounting",
"author": "NuoBiT Solutions SL",
"website": "https://github.com/NuoBiT/odoo-addons",
"license": "AGPL-3",
"depends": [
"l10n_es_aeat_mod303",
"l10n_es_special_prorate",
],
"data": [
"security/ir.model.access.csv",
"security/aeat_map_special_prorrate_year.xml",
"views/aeat_map_special_prorrate_year_views.xml",
"views/res_company_view.xml",
],
}
265 changes: 265 additions & 0 deletions l10n_es_aeat_vat_special_prorrate/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,265 @@
# This file contains the translation of the following modules:
# * l10n_es_aeat_vat_special_prorrate
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-02-04 09:38+0000\n"
"PO-Revision-Date: 2022-02-04 09:38+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: l10n_es_aeat_vat_special_prorrate
#: sql_constraint:aeat.map.special.prorrate.year:0
msgid "AEAT year must be unique"
msgstr "AEAT year must be unique"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.actions.act_window,name:l10n_es_aeat_vat_special_prorrate.action_aeat_map_special_prorrate_year
#: model:ir.ui.menu,name:l10n_es_aeat_vat_special_prorrate.menu_aeat_map_special_prorrate_year
#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_vat_special_prorrate.aeat_map_special_prorrate_year_view_form
#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_vat_special_prorrate.aeat_map_special_prorrate_year_view_tree
msgid "Aeat VAT special prorate map"
msgstr "AEAT prorrata especial IVA - Mapeo anual"

#. module: l10n_es_aeat_vat_special_prorrate
#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_vat_special_prorrate.aeat_map_special_prorrate_year_view_form
msgid "Close"
msgstr "Cerrar"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/aeat_map_special_prorrate_year.py:35
#: selection:aeat.map.special.prorrate.year,state:0
#, python-format
msgid "Closed"
msgstr "Cerrado"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__company_id
msgid "Company"
msgstr "Compañía"

#. module: l10n_es_aeat_vat_special_prorrate
#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_vat_special_prorrate.aeat_map_special_prorrate_year_view_form
msgid "Compute"
msgstr "Calcular"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__create_uid
msgid "Created by"
msgstr "Creado por"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__create_date
msgid "Created on"
msgstr "Creado el"

#. module: l10n_es_aeat_vat_special_prorrate
#: selection:account.tax,prorrate_type:0
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/account_tax.py:14
#, python-format
msgid "Deductible"
msgstr "Deducible"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__display_name
msgid "Display Name"
msgstr "Nombre mostrado"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__tax_final_percentage
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__tax_final_percentage_aux
msgid "Final tax %"
msgstr "Impuesto definitivo %"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/aeat_map_special_prorrate_year.py:34
#: selection:aeat.map.special.prorrate.year,state:0
#, python-format
msgid "Finale"
msgstr "Final"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__id
msgid "ID"
msgstr "ID"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/account_tax.py:26
#, python-format
msgid "If a tax has prorate the year should exist on vat mapping"
msgstr "If a tax has prorate the year should exist on vat mapping"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/account_tax.py:59
#, python-format
msgid "If a tax has prorate, it's only suported 'percent' type with price not included"
msgstr "If a tax has prorate, it's only suported 'percent' type with price not included"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model,name:l10n_es_aeat_vat_special_prorrate.model_account_invoice
msgid "Invoice"
msgstr "Factura"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/aeat_map_special_prorrate_year.py:85
#, python-format
msgid "It's not possible to delete a closed prorate map"
msgstr "It's not possible to delete a closed prorate map"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/aeat_map_special_prorrate_year.py:196
#, python-format
msgid "It's not possible to recompute a closed prorate"
msgstr "It's not possible to recompute a closed prorate"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_res_company__l10n_es_prorate_enabled
msgid "L10n ES Prorate Enabled"
msgstr "L10n ES prorrata activada"

#. module: l10n_es_aeat_vat_special_prorrate
#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_vat_special_prorrate.view_company_aeat_form
msgid "Prorate"
msgstr "Prorrata"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year____last_update
msgid "Last Modified on"
msgstr "Última modificación en"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__write_uid
msgid "Last Updated by"
msgstr "Última actualización por"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__write_date
msgid "Last Updated on"
msgstr "Última actualización el"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__map_prorrate_next_year_id
msgid "Map Prorate Next Year"
msgstr "Map Prorate Next Year"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/account_tax.py:68
#, python-format
msgid "Multiple taxes with the same prorate type under same parent is not suported"
msgstr "Multiple taxes with the same prorate type under same parent is not suported"

#. module: l10n_es_aeat_vat_special_prorrate
#: selection:account.tax,prorrate_type:0
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/account_tax.py:14
#, python-format
msgid "Non-deductible"
msgstr "No deducible"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/account_invoice.py:33
#, python-format
msgid "Only suported 'percent' type with price not included"
msgstr "Only suported 'percent' type with price not included"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_account_tax__prorrate_type
msgid "Prorate type"
msgstr "Tipo de prorrata"

#. module: l10n_es_aeat_vat_special_prorrate
#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_vat_special_prorrate.aeat_map_special_prorrate_year_view_form
msgid "Recompute"
msgstr "Recalcular"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/account_tax.py:0
#, python-format
msgid ""
"Runtime error: Prorate tax '%s' has %i %s repartition lines instead of "
"expected 2. This may indicate data corruption or constraint bypass."
msgstr "Error de ejecución: El impuesto de prorrata '%s' tiene %i líneas de reparto de %s en "
"lugar de las 2 esperadas. Esto puede indicar corrupción de datos o elusión de "
"restricciones."

#. module: l10n_es_aeat_vat_special_prorrate
#: model_terms:ir.ui.view,arch_db:l10n_es_aeat_vat_special_prorrate.aeat_map_special_prorrate_year_view_form
msgid "Set to Temporary"
msgstr "Establecer a provisional"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__state
msgid "State"
msgstr "Estado"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model,name:l10n_es_aeat_vat_special_prorrate.model_account_tax
msgid "Tax"
msgstr "Impuesto"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__tax_percentage
msgid "Tax %"
msgstr "Impuesto %"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/aeat_map_special_prorrate_year.py:33
#: selection:aeat.map.special.prorrate.year,state:0
#, python-format
msgid "Temporary"
msgstr "Provisional"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/aeat_map_special_prorrate_year.py:223
#, python-format
msgid "The final prorrate computed should be greater than zero"
msgstr "The final prorrate computed should be greater than zero"

#. module: l10n_es_aeat_vat_special_prorrate
#: sql_constraint:aeat.map.special.prorrate.year:0
msgid "The map prorrate must have one next prorrate only"
msgstr "The map prorrate must have one next prorrate only"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/aeat_map_special_prorrate_year.py:209
#, python-format
msgid "The previous state to be able to close a prorrate should be 'Finale', not '%s'"
msgstr "The previous state to be able to close a prorrate should be 'Finale', not '%s'"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/aeat_map_special_prorrate_year.py:200
#, python-format
msgid "The prorrate of previous year must be closed before compute the new one"
msgstr "The prorrate of previous year must be closed before compute the new one"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/aeat_map_special_prorrate_year.py:73
#, python-format
msgid "The year of the next linked map prorrata must be the next chronological year"
msgstr "The year of the next linked map prorrata must be the next chronological year"

#. module: l10n_es_aeat_vat_special_prorrate
#: code:addons/l10n_es_aeat_vat_special_prorrate/models/aeat_map_special_prorrate_year.py:79
#, python-format
msgid "The year of the previous linked map prorrata must be the previous chronological year"
msgstr "The year of the previous linked map prorrata must be the previous chronological year"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model.fields,field_description:l10n_es_aeat_vat_special_prorrate.field_aeat_map_special_prorrate_year__year
msgid "Year"
msgstr "Año"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model,name:l10n_es_aeat_vat_special_prorrate.model_aeat_map_special_prorrate_year
msgid "aeat.map.special.prorrate.year"
msgstr "aeat.map.special.prorrate.year"

#. module: l10n_es_aeat_vat_special_prorrate
#: model:ir.model,name:l10n_es_aeat_vat_special_prorrate.model_l10n_es_aeat_report_tax_mapping_transient
msgid "l10n.es.aeat.report.tax.mapping.transient"
msgstr "l10n.es.aeat.report.tax.mapping.transient"
5 changes: 5 additions & 0 deletions l10n_es_aeat_vat_special_prorrate/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from . import aeat_map_special_prorrate_year
from . import account_tax
from . import account_tax_repartition_line
from . import account_move
from . import res_company
27 changes: 27 additions & 0 deletions l10n_es_aeat_vat_special_prorrate/models/account_move.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Copyright NuoBiT Solutions SL - Eric Antones <[email protected]>
# Copyright 2026 NuoBiT Solutions SL - Deniz Gallo <[email protected]>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl)

from odoo import models


class AccountMove(models.Model):
_inherit = "account.move"

def _get_rounded_base_and_tax_lines(self, round_from_tax_lines=True):
if self.company_id.l10n_es_prorate_enabled and not self.env.context.get(
"prorate"
):
prorate_ctx = self.env["account.tax"].prorate_context(
self,
self.date,
self.company_id,
)
return super(
AccountMove, self.with_context(**prorate_ctx)
)._get_rounded_base_and_tax_lines(
round_from_tax_lines=round_from_tax_lines,
)
return super()._get_rounded_base_and_tax_lines(
round_from_tax_lines=round_from_tax_lines,
)
Loading
Loading