From f659eee4184cfd0233ae35f69edfbd4126b39114 Mon Sep 17 00:00:00 2001 From: KNVx Date: Tue, 20 Dec 2022 18:20:53 +0100 Subject: [PATCH 1/8] [ADD] account_asset_transfer_extension: New module --- account_asset_transfer_extension/README.rst | 27 ++ account_asset_transfer_extension/__init__.py | 2 + .../__manifest__.py | 19 ++ account_asset_transfer_extension/i18n/es.po | 258 ++++++++++++++++++ .../models/__init__.py | 2 + .../models/account_asset.py | 101 +++++++ .../models/account_move.py | 40 +++ .../security/ir.model.access.csv | 2 + .../static/description/icon.png | Bin 0 -> 6342 bytes .../views/account_asset.xml | 64 +++++ .../wizard/__init__.py | 2 + .../wizard/account_asset_transfer.py | 40 +++ .../wizard/account_asset_transfer_revert.py | 94 +++++++ .../wizard/account_asset_transfer_revert.xml | 40 +++ 14 files changed, 691 insertions(+) create mode 100644 account_asset_transfer_extension/README.rst create mode 100644 account_asset_transfer_extension/__init__.py create mode 100644 account_asset_transfer_extension/__manifest__.py create mode 100644 account_asset_transfer_extension/i18n/es.po create mode 100644 account_asset_transfer_extension/models/__init__.py create mode 100644 account_asset_transfer_extension/models/account_asset.py create mode 100644 account_asset_transfer_extension/models/account_move.py create mode 100644 account_asset_transfer_extension/security/ir.model.access.csv create mode 100644 account_asset_transfer_extension/static/description/icon.png create mode 100644 account_asset_transfer_extension/views/account_asset.xml create mode 100644 account_asset_transfer_extension/wizard/__init__.py create mode 100644 account_asset_transfer_extension/wizard/account_asset_transfer.py create mode 100644 account_asset_transfer_extension/wizard/account_asset_transfer_revert.py create mode 100644 account_asset_transfer_extension/wizard/account_asset_transfer_revert.xml diff --git a/account_asset_transfer_extension/README.rst b/account_asset_transfer_extension/README.rst new file mode 100644 index 000000000..7f3df1e64 --- /dev/null +++ b/account_asset_transfer_extension/README.rst @@ -0,0 +1,27 @@ +.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png + :target: https://www.gnu.org/licenses/agpl + :alt: License: AGPL-3 + +================================ +Account Asset Transfer Extension +================================ + +* This module uses the asset purchase value instead of the journal item value + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Contributors +------------ + +* Kilian Niubo +* Eric Antones diff --git a/account_asset_transfer_extension/__init__.py b/account_asset_transfer_extension/__init__.py new file mode 100644 index 000000000..9b4296142 --- /dev/null +++ b/account_asset_transfer_extension/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/account_asset_transfer_extension/__manifest__.py b/account_asset_transfer_extension/__manifest__.py new file mode 100644 index 000000000..79a8fe213 --- /dev/null +++ b/account_asset_transfer_extension/__manifest__.py @@ -0,0 +1,19 @@ +# Copyright NuoBiT - Kilian Niubo +# Copyright NuoBiT - Eric Antones +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) + +{ + "name": "Account Asset Transfer Extension", + "summary": "This module extends account_asset_transfer ", + "author": "NuoBiT Solutions, S.L.", + "category": "Accounting", + "version": "14.0.1.0.1", + "license": "AGPL-3", + "website": "https://github.com/nuobit/odoo-addons", + "depends": ["account_asset_transfer"], + "data": [ + "security/ir.model.access.csv", + "views/account_asset.xml", + "wizard/account_asset_transfer_revert.xml", + ], +} diff --git a/account_asset_transfer_extension/i18n/es.po b/account_asset_transfer_extension/i18n/es.po new file mode 100644 index 000000000..8e2f4955d --- /dev/null +++ b/account_asset_transfer_extension/i18n/es.po @@ -0,0 +1,258 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_asset_transfer_extension +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-12-23 16:15+0000\n" +"PO-Revision-Date: 2022-12-23 16:15+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: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "> Journal entries to remove: %s" +msgstr "> Apuntes contables a eliminar: %s" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "> New assets to remove: %s" +msgstr "> Nuevos activos a eliminar: %s" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "> Transferred assets to restore: %s" +msgstr "> Activos transferidos a restaurar: %s" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "Active Model not defined" +msgstr "El modelo activo no ha sido definido" + +#. module: account_asset_transfer_extension +#: model:ir.model,name:account_asset_transfer_extension.model_account_asset +msgid "Asset" +msgstr "Activo" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__date_transfer +msgid "Asset Transfer Date" +msgstr "Fecha de la transferencia del activo" + +#. module: account_asset_transfer_extension +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_transfer_revert_view_form +msgid "Cancel" +msgstr "Cancelar" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer_revert__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer_revert__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__display_name +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer__display_name +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer_revert__display_name +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_move__display_name +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_move_line__display_name +msgid "Display Name" +msgstr "Nombre mostrado" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__from_asset_ids +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_view_form +msgid "From Assets" +msgstr "Activos origen" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__id +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer__id +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer_revert__id +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_move__id +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_move_line__id +msgid "ID" +msgstr "ID" + +#. module: account_asset_transfer_extension +#: model:ir.model,name:account_asset_transfer_extension.model_account_move +msgid "Journal Entry" +msgstr "Asiento contable" + +#. module: account_asset_transfer_extension +#: model:ir.model,name:account_asset_transfer_extension.model_account_move_line +msgid "Journal Item" +msgstr "Apunte contable" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset____last_update +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer____last_update +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer_revert____last_update +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_move____last_update +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_move_line____last_update +msgid "Last Modified on" +msgstr "Última modificación" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer_revert__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer_revert__write_date +msgid "Last Updated on" +msgstr "" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_asset.py:0 +#, python-format +msgid "More than one move with the same to_asset found" +msgstr "Mas de un movimiento con el mismo activo de destino encontrado" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "No assets selected" +msgstr "No hay activos seleccionados" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "Nothing to revert" +msgstr "Nada a revertir" + +#. module: account_asset_transfer_extension +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_transfer_revert_view_form +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_view_form +msgid "Revert Transfer" +msgstr "Revertir transferencia" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_asset.py:0 +#, python-format +msgid "Revert Transfer AUC to Asset" +msgstr "Revertir transferencia AUC del activo" + +#. module: account_asset_transfer_extension +#: model:ir.actions.server,name:account_asset_transfer_extension.action_asset_transfer_revert_from_list +msgid "Revert Transfer Asset" +msgstr "Revertir transferencia de activo" + +#. module: account_asset_transfer_extension +#: model:ir.model,name:account_asset_transfer_extension.model_account_asset_transfer_revert +msgid "Revert Transferred Asset" +msgstr "Revertir activos transferidos" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__state +msgid "Status" +msgstr "Estado" + +#. module: account_asset_transfer_extension +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_transfer_revert_view_form +msgid "Tansfer Assets?" +msgstr "Transferir activos?" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "The journal entry %s has lines without asset" +msgstr "El asiento contable %s tiene líneas sin activos" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "The journal entry assets has inconsistencies with de from/to assets" +msgstr "Los activos del asiento contable tienen inconsistencias con el origen y destino de los activos" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "The next actions will be taken: " +msgstr "Se realizaran las siguientes acciones: " + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__to_asset_ids +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_view_form +msgid "To Assets" +msgstr "Activos nuevos" + +#. module: account_asset_transfer_extension +#: model:ir.model,name:account_asset_transfer_extension.model_account_asset_transfer +msgid "Transfer Asset" +msgstr "Transferir Activo" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__transfer_move_id +msgid "Transfer Move id" +msgstr "Movimiento de transferencia" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields.selection,name:account_asset_transfer_extension.selection__account_asset__state__transferred +msgid "Transferred" +msgstr "Transferido" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "Unexpected number of init entries found on deprecation line" +msgstr "Número inesperado de entradas init encontradas en la línea de desaprobación" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer_revert__warning_message +msgid "Warning Message" +msgstr "Mensaje de advertencia" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,help:account_asset_transfer_extension.field_account_asset__state +msgid "" +"When an asset is created, the status is 'Draft'.\n" +"If the asset is confirmed, the status goes in 'Running' and the depreciation lines can be posted to the accounting.\n" +"If the last depreciation line is posted, the asset goes into the 'Close' status.\n" +"When the removal entries are generated, the asset goes into the 'Removed' status." +msgstr "" +"Cuando se crea un activo, el estado es 'Borrador'.\n" +"Si el activo es confirmado, el estado pasa a 'En ejecución' y las líneas de amortización pueden ser creadas en la contabilizada.\n" +"Si se crea la última línea de amortización, el activo pasa a estado 'Cerrado'.\n" +"Cuando se generan los asientos de eliminación, el activo pasa a estado 'Eliminado'." + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_asset.py:0 +#, python-format +msgid "" +"When asset has from_asset_ids, state must be open, close or removed. Please," +" review asset: %s" +msgstr "Cuando los activos tienen activos de origen el estado debe ser en ejecucion, cerrar o eliminado." +"Por favor, revise el activo: %s" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_asset.py:0 +#, python-format +msgid "" +"When asset has to_asset_ids, state must be transferred. Please, review " +"asset: %s" +msgstr "Cuando un activo tiene activos nuevos, el estado debe ser transferido." +"Por favor, revise el activo: %s" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_move.py:0 +#, python-format +msgid "" +"You can't modify or delete a journal item on journal entries with " +"transferred assets" +msgstr "No se puede modificar o eliminar un asiento en los asientos con activos transferidos." diff --git a/account_asset_transfer_extension/models/__init__.py b/account_asset_transfer_extension/models/__init__.py new file mode 100644 index 000000000..5e6c81c12 --- /dev/null +++ b/account_asset_transfer_extension/models/__init__.py @@ -0,0 +1,2 @@ +from . import account_asset +from . import account_move diff --git a/account_asset_transfer_extension/models/account_asset.py b/account_asset_transfer_extension/models/account_asset.py new file mode 100644 index 000000000..191cfea84 --- /dev/null +++ b/account_asset_transfer_extension/models/account_asset.py @@ -0,0 +1,101 @@ +# Copyright NuoBiT - Kilian Niubo +# Copyright NuoBiT - Eric Antones +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, api, fields, models +from odoo.exceptions import ValidationError + + +class AccountAsset(models.Model): + _inherit = "account.asset" + + from_asset_ids = fields.Many2many( + string="From Assets", + comodel_name="account.asset", + compute="_compute_from_asset_ids", + ) + + def _compute_from_asset_ids(self): + for rec in self: + move_lines = rec.account_move_line_ids.filtered( + lambda x: x.move_id != rec.transfer_move_id + ) + move = move_lines.move_id.filtered( + lambda x: x in x.line_ids.asset_id.transfer_move_id + ) + if len(move) > 1: + raise ValidationError( + _("More than one move with the same to_asset found") + ) + rec.from_asset_ids = move.line_ids.asset_id.filtered( + lambda x: x.transfer_move_id == move + ) + + to_asset_ids = fields.Many2many( + string="To Assets", + comodel_name="account.asset", + compute="_compute_to_asset_ids", + ) + + def _compute_to_asset_ids(self): + for rec in self: + if rec.transfer_move_id: + rec.to_asset_ids = rec.transfer_move_id.line_ids.asset_id.filtered( + lambda x: not x.transfer_move_id + or x.transfer_move_id != rec.transfer_move_id + ) + else: + rec.to_asset_ids = False + + state = fields.Selection( + selection_add=[("transferred", "Transferred")], + ondelete={"transferred": "cascade"}, + ) + date_transfer = fields.Date( + string="Asset Transfer Date", + readonly=True, + ) + transfer_move_id = fields.Many2one( + comodel_name="account.move", + string="Transfer Move id", + readonly=True, + ) + + def revert_transfer(self): + wizard = self.env["account.asset.transfer.revert"].create({}) + wizard._generate_warning_message() + ctx = dict(self.env.context, active_ids=self.ids) + res = { + "name": _("Revert Transfer AUC to Asset"), + "view_mode": "form", + "res_model": "account.asset.transfer.revert", + "target": "new", + "res_id": wizard.id, + "type": "ir.actions.act_window", + "context": ctx, + } + return res + + @api.constrains("state", "to_asset_ids") + def _check_state_to_asset_ids(self): + for rec in self: + if rec.to_asset_ids and rec.state != "transferred": + raise ValidationError( + _( + "When asset has to_asset_ids, state must be transferred. " + "Please, review asset: %s" + ) + % rec.name + ) + + @api.constrains("state", "from_asset_ids") + def _check_state_from_asset_ids(self): + for rec in self: + if rec.from_asset_ids and rec.state not in ["open", "close", "removed"]: + raise ValidationError( + _( + "When asset has from_asset_ids, state must be open, close or removed. " + "Please, review asset: %s" + ) + % rec.name + ) diff --git a/account_asset_transfer_extension/models/account_move.py b/account_asset_transfer_extension/models/account_move.py new file mode 100644 index 000000000..ed288e2e1 --- /dev/null +++ b/account_asset_transfer_extension/models/account_move.py @@ -0,0 +1,40 @@ +# Copyright NuoBiT - Kilian Niubo +# Copyright NuoBiT - Eric Antones +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, api, models +from odoo.exceptions import ValidationError + + +class AccountMove(models.Model): + _inherit = "account.move" + + def _check_exists_asset_transfers(self): + if not self.env.context.get("force_delete", False): + for rec in self: + if rec.line_ids.asset_id.mapped("transfer_move_id"): + raise ValidationError( + _( + "You can't modify or delete a journal item " + "on journal entries with transferred assets" + ) + ) + + +class AccountMoveLine(models.Model): + _inherit = "account.move.line" + + def write(self, vals): + self.move_id._check_exists_asset_transfers() + return super().write(vals) + + @api.model_create_multi + def create(self, vals_list): + self.env["account.move"].browse( + [x["move_id"] for x in vals_list] + )._check_exists_asset_transfers() + return super().create(vals_list) + + def unlink(self): + self.move_id._check_exists_asset_transfers() + return super().unlink() diff --git a/account_asset_transfer_extension/security/ir.model.access.csv b/account_asset_transfer_extension/security/ir.model.access.csv new file mode 100644 index 000000000..6b9a5d987 --- /dev/null +++ b/account_asset_transfer_extension/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_account_asset_transfer_revert_user,account.asset.transfer.revert,model_account_asset_transfer_revert,account.group_account_user,1,1,1,1 diff --git a/account_asset_transfer_extension/static/description/icon.png b/account_asset_transfer_extension/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd641e792c30455187ca30940bc0f329ce8bbb0 GIT binary patch literal 6342 zcmd^^hf`C}*TzHWpfm-MZa|7OjYtjE(4`3pP0Eid3J8V{0s)mKJ<q zp^9|rp$mb~2}po9-@oIXJG(oxcjoS%d!O@s&d!Z9HP*e##KQyt0IurmK_64bp8pyH z9i^|ds>-JfbWVo4P{8GX*QeIfbjl2)kDfIG0ALvZuTgp2ZfK=U();NfY11z-vM>r= zo6RyI007+P`cO@apy}VqnaiVCLL`CEUGVGYE&5WpdhhbZv%|*-Y|2t(4~Cq|y`-Nmm-W zxaTf4+R69rVU1b%qjm?yu*PFgHFYd#J82-D8cpXqO&omwG2*Hd6ZIUiK@+ zNCo8Lg{1^vn^0ZQgz*~*ZR3wsULxnnSBN%7p()3EYs>sX9In)T{*nJ2q*qxXPNhFk z=z=+?4VOOdAF!ZYAVisYzF29g?udLQJtx@=HoAK_Kjx;4SO7>H_v*McB7(}RHMa> z+PNao{Hw&Mjo0P}CBR&l(k@iIeRI@PRH6R9^lR3e?TL?ZHra#GHvKmkeVBHG8nv4{ zz$nHGR7`D$ae@TrcXCSA=$~Yvp@J|bKul>6s-`yT7>JaM5?KcltZ)(ilt^74fqLA{ z1k!bKw(GMV*AOgI*glG_($h!cZgArkEAa1SkSG`0yF8JLWTq^J->2CRaqKH1ZSQt7 z29|+OBS3Rj91K1XL~_9&zn1p z)2Ez)&{9Of1X#b+mpgJ`{gurrlYqKrwrWXTOH{M%kEUhcgSp1J2FK4FF`JS|NfaAA6)?-&1}B`@lI2~kKWK) zhQ|}GQ$j(rNS}9?Yu9}MzWxz*HMwR=u8$RYY6sr2pu3x5Yx*P!Z&c|X zFZcC{+kqJV=XTZH=cMb6)MtgWo%C~XU8TEXDKx9;0hEV*74Z6i8vuzXp zw<8QvI~;n;3@<^G0C#HHf2{N6E~2DO3jw!?w}z?_vV6Q>?kJ>IF-kEc*TtP}k7cVd zvtdPgQ^jWhMXAL$Lqn!_A_IL+!hbY37)n@Sqc)6JwD4)3LP`up1cy^EXzh>B{$ce0 zgX~Iat{I@DM|zU|>9DuD?g}h7zCqV;o1*~3Hr=DYjDq;SG?3HS)(x+l@HAa-@>5wH zhw`oqg>hP$e41h5)>$#qFWq?LGX`dC8ph`RyR&_z&og>psSHzZ=_8<-M4yk+3HK-+ zxqe%Ntx88}49jJazM_Vov;)83cSeeLv@taHOL>zP>~bqdmEyfHl9M%`@ivb|7{I;N zzyHw9P7EH0$ww52RejJv>zvSr8v*iuX@X;(Z~NuUv$D0I_>OkcZWSulBUJjHUN=n| zSI$q@$)`(E;^(|}q|2utYl8}>IcXkPX#{6Z%JnhUBly1B@B}sECm2Y88-QrQZd2n2 zKL=1_&Z87xM=GaycA-Ac*R<^bJk>-^k%lt;DjswC+AM`71*2iG?;!3Bc)I>55v)^C zkt+Uzn&dhv|58XAY6{%ybSiVMl-sATTy=SUADQWD+(@-AVqg@Y+_fBV$LJnIEfujI4B5%4a@8S4M*50Lh7NqKSW>K=U5dW@)Hd{^oR4v% zCM2(rAq7Qe-)R0ko{l@iCHGsxhkCNWby zf&gByp!>=?r1ecWMqz5e-BmOED6n!_1V4<)R!!QNwM!AyGty8>p>ebEzdp*_(kAYA z5*F^g_K}%Rm;V}4Q46qJpU+&3bU10WYg{j`T>lv9{B)J}RHC}yzy9x)wm4ju23yQ& zUNm(i_(ChqD8d7AVUFMw zXmia0A{l#}Sfq!GmHjatiTk$f|OvS0iG>W{p<8cZu^6HX`rMuX?l8<+?WVAW6 z3!MLV*VOFpd&STaeN2qdwU* zk1ni(wdh{`{hLj-hCz&59jVIp~SmgtSQDf!FrPYKIF6_c_NJr zn<-BdXVU}OSE{-No~b(6tG)250`-S%YB9Si@&}{d@FUGqjcNE@SlSdG`}H-#!~M1& z;{E-SKUBb6)KwP1XB|S8MB=F>9k$#1$|^*t%%5zq#(35~S#+TgC^oj&COt~T>axhU0t zQff{8Jt+NH^_pqPzec@Iv#L^r?qs$jdiCY&xOU2pve78Pc{a8y+D;2N0aEJe5d#uL}ZkkYQ&XA;NK5v>r@NUaj=<_V$*Ll@&CF!{LWI zh@|EE!!M(B5qeQ40YHy86TVkX6Te=v4ytV_-JnKl93#Z9clghd^lywoBtgj)4%mxKR<#pH0*hxyHFQNJ zGW`7CtD9C6)ehKni=#!gKj#ZO7L$d_i4nJZhR!z$B(rX9j$$L8X1>~^2By%Dp*IJj z8QiI6*w*|IoF{UpFaD{!PWdOxja{DQq9?BK%2(Xuh#Tv2s_ELIvb@YAd{Af)Lph(9 z>DTXZ`|*!Jnw)?`BzPrdYx(?S2&<(1>1>-f=c}gi8^)=KW973rikh?!-B$fOy@x-Rd+?x= zM(0SbmCz!gY#)CqB9J_^v4K$urOnoj|E||~D>%ndVMwe)ef3BuZH0l!Z&M@fyN}{1 zD;n{juZF|*{lehy$NlM{B`Q0Z18O|&=wX!Nt*rLKfak}ww{ zJ$9BJA3Tq4n~%w3V$0UA(+PgZ#j-35$=_xzuk(w5o2f(WOCu%+h>cg3B*aqaQdfeQ zj@VutKTWtH8{S+}vR3Z`KIQl-h!4tFi1vG-Kuh^Lb0N=LN0+1ZP!WL39=Age)HS_E z8khUbE>xA^59Nmj`B0@u0IR<04wqF@ssF4AP6ZVhslN61xT#8o@ymhOWJ5zkUQN07 zyDEYVZ4#Z$(%wnd04Y_^B_4gjFoKPWgD&OUsj^ezcuXa}E4yjc@xi#az zyRy6>?#h2*VNdNO_jYQ1{@qaYoN7moT}cnd8cmK*&R@SeSYZgIBaJklh!n-3#3dyO z!@*@06=Y8#wl9|Bj3=C0Fi!SfzVz7$Stc4_Q`K2P?2|gT!JIBhc*P&-IkB?Mb5I&% z%BN*TF#vYzIW>)|=X`Chr};G5EZXg?_yvlDC|f%AP!ty{i{{pXQnHm<^|{P$D; z9ZAW#l9Cd2($R5@*5}FeUd#l;N11WwITb1nJSm8r@`#sXHPsuq!3S2&h>U)y=3MjV;j3oWLY>5EOvuruXC*WH2G){378-0tpcMF}1(^PSWUe>XEJN%5 zl|m59cX=GC{^$_E-4Wm1=5|!;Ek&{<4lIOt5M&GMq=+JQdyt?WI#6C!)i!s4;k9T0 z{;`B*>VQ%iU)>Zbhgb4|vd=Wy4>107#gyeqi^+-^2E~0Ja&rFpRb<)oirMj4-KuLg zSo1*y98TZlD<3^A&^bRESh~S*Lzqn0l;JfX-fdjA`M#a!@?b?zWdEr3mIiqS{m2J% z3nWGoQG6+FQ~&gQF-DLGWF}WfwHL(4$EUt(5Jcx#l79K-x~qdu!_gs;XaP0`8m(8a z2J#B{UvEhLT=w9*(6bFWp{9CI=Z&Hh)e}}1hnK6fPlSYqu4H|>g|Erg5fVWl5w&~Kdf{3+V{dCaNhFDg<~sELf1dC($hw|SmSkZ zKD6>nsj6Q+aHEZDHC9{UJxPZ9y{6)F5hg5bm*}ihsxQxj~`xNo%QnaTEJn)f#{CK-H5HYAM7kK zL!XvElM^Y!yC=uSu54Gj zTEgKhtTCOqx1EcIl=VA7`!xLiUj%p*eH??_??@gOJJxVX)#(G`=31lw3whFi2Y7Mq z1bXLvi+~U5E4R{v15H@yQI@=d!V9LD&P!p?0u7L&Rg=D<<*+ zouj?2?aYI{Ac%Gx!r&EkXmmvR`!Xl?06WsGs_Ts8ojW?id!X$>C}@~q>BMfGeGohw zkR}NImw2grp7>W(5s*(iPYn$1*t@i%(W7u#6m}l)%TmD-221>N?VBna!@FO-7!xjM z{`_^-yt<@e?fK$Sqzc7O%3&~A>HB|stQr64jx(U3y+}d}vp(r7c=iB8>t~T7HmYg1qJe4SLo$e62=EZUuFS7UqbSP}M^@%aI7g!ztzj{)_R0x*X6OMLAky)_Sv&%2DNGv zxH}pEr{gEYf&ZF&RJoII9*=yd^~fxKtFc@1f_3}Vqqi8_U?;lC`7etN$3$u0dW+-%7P zQ~iX&gr(5xd1M>3yrzZav9ZLIhbS&|=U$t!9iq*i5vy)(RsBw0TU#?~zdTKUXjyIl z%7Q)Vp}YoU$acz-9y_`%Oig!%TPyC=ie3*Qut3@4V`+A4d<*f%jOx>*bX%#Ao+@wM z;NW0DZKvmp%_oxvFw2#S9r8Sc?wXh}`3gVG`rBKr&jpxwTRQ7WtKY06QQVhs$u$!e zs;Y%~2xwpH*9vxfQ~q#gAwn+P+=YE(L>|P(Fl&H27@?);kUI4FW%LjHZKYGk#f~@3 zXW;a;3+{&c`g+uCR+``$V9)N#RBCk_#RQ(K-PxlQ7Ym;XdCqGn$j%JmAwgtkWKn1} z8^>3&)Q05VbBm+t`9B_${w9F7WfM{Jvawk;HDc*{Sa_Sla|zqX!vbKV%>gB|z6BCc z8_bdnPnzloGP1I)!^5hnC6CLZUU`;nO2NF2)FaAkYhQL$Z58+`p75dj7RKse#Z!uacCm z0@|m~U!QZOdb|V~`ktFK4;lg_ZOCjFXeV4`jGj&bh7Q6BEyN8~yGd*JyzwFbIRaAf z#KG$rvQxWFvqwn`i6jBQ?6o+k+oOC)Gj9ChlgabiScr};b5|opxUYjCZOwmhjTj6W zFzJt_htTuopW4IRiQ}r0L}`w=pE{HN<@(9Hl11P5cHmN6A1F^sg2OWXcw<+q2x>I5 zq9Bu>PBob6#^vrr<|IC)m+zJpFRRcCVsqbspNybriu&!R=H^@RcG#aBGz9RH}ZI=>4 zi(m?IA?Vr$Q7?wN6ZW7H`S?3}K8=$7J5MjWKri=_igw1%J?0~*6e_Ii*1&23dGcF} z&=vaMgF!^veGQ1f$3k?WK5Jaw%==+Bb!tI6zQ68&-dQ3Orl+Tqh#Nt?dBEV_w^wkjY+qJ+X*NCMs%J-Lc4%}pKryM#O)O&9 un*HHVB-AlUN`suyDkKONktc!@Ievk;6wT20MOSqhE{1gM*SZGeqiYU literal 0 HcmV?d00001 diff --git a/account_asset_transfer_extension/views/account_asset.xml b/account_asset_transfer_extension/views/account_asset.xml new file mode 100644 index 000000000..f3cfaff6a --- /dev/null +++ b/account_asset_transfer_extension/views/account_asset.xml @@ -0,0 +1,64 @@ + + + account.asset.form + account.asset + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + draft,open,close + + + + diff --git a/account_asset_transfer_extension/wizard/__init__.py b/account_asset_transfer_extension/wizard/__init__.py new file mode 100644 index 000000000..aa9b2d5f5 --- /dev/null +++ b/account_asset_transfer_extension/wizard/__init__.py @@ -0,0 +1,2 @@ +from . import account_asset_transfer +from . import account_asset_transfer_revert diff --git a/account_asset_transfer_extension/wizard/account_asset_transfer.py b/account_asset_transfer_extension/wizard/account_asset_transfer.py new file mode 100644 index 000000000..64cf33ed8 --- /dev/null +++ b/account_asset_transfer_extension/wizard/account_asset_transfer.py @@ -0,0 +1,40 @@ +# Copyright NuoBiT - Kilian Niubo +# Copyright NuoBiT - Eric Antones +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import models + + +class AccountAssetTransfer(models.TransientModel): + _inherit = "account.asset.transfer" + + def transfer(self): + res = super().transfer() + move = self.env["account.move"].browse(res["domain"][0][2]) + for line in move.line_ids: + if line.asset_id in self.from_asset_ids: + line.asset_id.write( + { + "transfer_move_id": move, + "state": "transferred", + "date_remove": False, + "date_transfer": self.date_transfer, + } + ) + return res + + def _get_move_line_from_asset(self, asset): + res = super()._get_move_line_from_asset(asset) + if asset.account_move_line_ids: + asset.account_move_line_ids.ensure_one() + move_line = asset.account_move_line_ids[0] + res.update( + { + "debit": -asset.purchase_value if move_line.balance < 0 else 0.0, + "credit": asset.purchase_value if move_line.balance >= 0 else 0.0, + } + ) + else: + if asset.purchase_value and asset.purchase_value < 0: + res.update({"debit": -asset.purchase_value, "credit": 0.0}) + return res diff --git a/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py b/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py new file mode 100644 index 000000000..09a237c84 --- /dev/null +++ b/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py @@ -0,0 +1,94 @@ +# Copyright NuoBiT - Kilian Niubo +# Copyright NuoBiT - Eric Antones +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from odoo import _, fields, models +from odoo.exceptions import UserError, ValidationError + + +class AccountAssetTransfer(models.TransientModel): + _name = "account.asset.transfer.revert" + _description = "Revert Transferred Asset" + + warning_message = fields.Text(readonly=True) + + def _get_to_asset_ids(self): + active_model = self.env.context.get("active_model") + if not active_model: + raise ValidationError(_("Active Model not defined")) + from_asset_ids = self.env.context.get("active_ids", []) + if not from_asset_ids: + raise UserError(_("No assets selected")) + from_assets = self.env[active_model].browse(from_asset_ids) + return from_assets.mapped("to_asset_ids") + + def _generate_warning_message(self): + self.ensure_one() + to_asset_moves = self._group_assets_by_move(self._get_to_asset_ids()) + if not to_asset_moves: + self.warning_message = _("Nothing to revert") + else: + message_l = [_("The next actions will be taken: ")] + moves = self.env["account.move"].browse( + map(lambda x: x.id, to_asset_moves.keys()) + ) + message_l.append( + _("> Journal entries to remove: %s") % ", ".join(moves.mapped("name")) + ) + to_assets = self.env["account.asset"] + for assets in to_asset_moves.values(): + to_assets |= assets[1] + if to_assets: + message_l.append( + _("> New assets to remove: %s") + % ", ".join(to_assets.mapped("name")) + ) + from_assets = self.env["account.asset"] + for assets in to_asset_moves.values(): + from_assets |= assets[0] + if from_assets: + message_l.append( + _("> Transferred assets to restore: %s") + % ", ".join(from_assets.mapped("name")) + ) + if message_l: + self.warning_message = "\n\n".join(message_l) + + def _group_assets_by_move(self, to_assets): + to_asset_moves = {} + for asset in to_assets: + dps = asset.depreciation_line_ids.filtered(lambda x: x.init_entry) + if len(dps) != 1: + raise ValidationError( + _("Unexpected number of init entries found on deprecation line") + ) + move = dps[0].move_id + if move: + if move in to_asset_moves: + to_asset_moves[move][1] |= asset + else: + to_asset_moves[move] = [asset.from_asset_ids, asset] + return to_asset_moves + + def revert_transfer(self): + to_assets = self._get_to_asset_ids() + if not to_assets: + raise ValidationError(_("Nothing to revert")) + to_asset_moves = self._group_assets_by_move(to_assets) + for move, (from_assets, to_assets) in to_asset_moves.items(): + lines_wo_assets = move.line_ids.filtered(lambda x: not x.asset_id) + if lines_wo_assets: + raise ValidationError( + _("The journal entry %s has lines without asset") % move.name + ) + if set(move.line_ids.asset_id.ids) != set((from_assets | to_assets).ids): + raise ValidationError( + _( + "The journal entry assets has inconsistencies with de from/to assets" + ) + ) + move.button_draft() + move.with_context(force_delete=True).unlink() + to_assets.set_to_draft() + to_assets.unlink() + from_assets.state = "open" diff --git a/account_asset_transfer_extension/wizard/account_asset_transfer_revert.xml b/account_asset_transfer_extension/wizard/account_asset_transfer_revert.xml new file mode 100644 index 000000000..1306d5652 --- /dev/null +++ b/account_asset_transfer_extension/wizard/account_asset_transfer_revert.xml @@ -0,0 +1,40 @@ + + + + account.asset.transfer.revert.form + account.asset.transfer.revert + +
+ + + +
+
+
+
+
+ + + Revert Transfer Asset + + + + list + code + + if records: + action = records.revert_transfer() + + + +
From 32d398348542e20203bf013dcb6a4516f901727a Mon Sep 17 00:00:00 2001 From: KNVx Date: Thu, 12 Jan 2023 08:23:44 +0100 Subject: [PATCH 2/8] [FIX] account_asset_transfer_extension: readonly computed fields on constrains throws warnings --- account_asset_transfer_extension/__manifest__.py | 2 +- account_asset_transfer_extension/models/account_asset.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/account_asset_transfer_extension/__manifest__.py b/account_asset_transfer_extension/__manifest__.py index 79a8fe213..711e4a62a 100644 --- a/account_asset_transfer_extension/__manifest__.py +++ b/account_asset_transfer_extension/__manifest__.py @@ -7,7 +7,7 @@ "summary": "This module extends account_asset_transfer ", "author": "NuoBiT Solutions, S.L.", "category": "Accounting", - "version": "14.0.1.0.1", + "version": "14.0.1.0.2", "license": "AGPL-3", "website": "https://github.com/nuobit/odoo-addons", "depends": ["account_asset_transfer"], diff --git a/account_asset_transfer_extension/models/account_asset.py b/account_asset_transfer_extension/models/account_asset.py index 191cfea84..3ce4b849c 100644 --- a/account_asset_transfer_extension/models/account_asset.py +++ b/account_asset_transfer_extension/models/account_asset.py @@ -76,7 +76,7 @@ def revert_transfer(self): } return res - @api.constrains("state", "to_asset_ids") + @api.constrains("state") def _check_state_to_asset_ids(self): for rec in self: if rec.to_asset_ids and rec.state != "transferred": @@ -88,7 +88,7 @@ def _check_state_to_asset_ids(self): % rec.name ) - @api.constrains("state", "from_asset_ids") + @api.constrains("state") def _check_state_from_asset_ids(self): for rec in self: if rec.from_asset_ids and rec.state not in ["open", "close", "removed"]: From f40e67cf28516be9a4ad335c74a97f7204100826 Mon Sep 17 00:00:00 2001 From: Eric Antones Date: Tue, 14 Mar 2023 18:47:24 +0100 Subject: [PATCH 3/8] [FIX] account_asset_transfer_extension: not possible to reconcile posted journal items linked to transferred assets --- account_asset_transfer_extension/__manifest__.py | 2 +- account_asset_transfer_extension/models/account_move.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/account_asset_transfer_extension/__manifest__.py b/account_asset_transfer_extension/__manifest__.py index 711e4a62a..516c5df75 100644 --- a/account_asset_transfer_extension/__manifest__.py +++ b/account_asset_transfer_extension/__manifest__.py @@ -7,7 +7,7 @@ "summary": "This module extends account_asset_transfer ", "author": "NuoBiT Solutions, S.L.", "category": "Accounting", - "version": "14.0.1.0.2", + "version": "14.0.1.0.3", "license": "AGPL-3", "website": "https://github.com/nuobit/odoo-addons", "depends": ["account_asset_transfer"], diff --git a/account_asset_transfer_extension/models/account_move.py b/account_asset_transfer_extension/models/account_move.py index ed288e2e1..e19e2f987 100644 --- a/account_asset_transfer_extension/models/account_move.py +++ b/account_asset_transfer_extension/models/account_move.py @@ -25,7 +25,9 @@ class AccountMoveLine(models.Model): _inherit = "account.move.line" def write(self, vals): - self.move_id._check_exists_asset_transfers() + self.move_id.filtered( + lambda x: x.state != "posted" + )._check_exists_asset_transfers() return super().write(vals) @api.model_create_multi From 9c039ba03558a073cea044d9e804f8107984e59a Mon Sep 17 00:00:00 2001 From: Eric Antones Date: Mon, 16 Mar 2026 15:17:31 +0100 Subject: [PATCH 4/8] [FIX] account_asset_transfer_extension: prevent deletion of AUC transfer moves When a user clicks "unpost" on the init_entry depreciation line of a to_asset, the unlink_move() method deletes the linked move. Since the init_entry points to the CURS transfer move, this causes the transfer move to be permanently deleted. The from_assets lose their transfer_move_id (set to NULL by ondelete), and the revert wizard shows "Nothing to revert" because it can no longer find the to_assets. Add an override of unlink_move() on account.asset.line that checks whether the move being deleted is referenced as transfer_move_id by any asset. If so, raise a UserError directing the user to use the "Revert Transfer" action instead. --- account_asset_transfer_extension/i18n/ca.po | 27 +++++++++++++++++++ account_asset_transfer_extension/i18n/es.po | 11 ++++++++ .../models/__init__.py | 1 + .../models/account_asset_line.py | 26 ++++++++++++++++++ 4 files changed, 65 insertions(+) create mode 100644 account_asset_transfer_extension/i18n/ca.po create mode 100644 account_asset_transfer_extension/models/account_asset_line.py diff --git a/account_asset_transfer_extension/i18n/ca.po b/account_asset_transfer_extension/i18n/ca.po new file mode 100644 index 000000000..7727d3e98 --- /dev/null +++ b/account_asset_transfer_extension/i18n/ca.po @@ -0,0 +1,27 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * account_asset_transfer_extension +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 14.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-03-16 12:00+0000\n" +"PO-Revision-Date: 2026-03-16 12:00+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: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_asset_line.py:0 +#, python-format +msgid "" +"You cannot unpost this entry because it is a transfer move (%s) linked to " +"transferred assets. Use the 'Revert Transfer' action instead." +msgstr "" +"No es pot desassentar aquest apunt perquè és un moviment de transferència " +"(%s) vinculat a actius transferits. Utilitzeu l'acció 'Revertir " +"transferència'." diff --git a/account_asset_transfer_extension/i18n/es.po b/account_asset_transfer_extension/i18n/es.po index 8e2f4955d..f9bf78341 100644 --- a/account_asset_transfer_extension/i18n/es.po +++ b/account_asset_transfer_extension/i18n/es.po @@ -249,6 +249,17 @@ msgid "" msgstr "Cuando un activo tiene activos nuevos, el estado debe ser transferido." "Por favor, revise el activo: %s" +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_move.py:0 +#, python-format +msgid "" +"You cannot unpost this entry because it is a transfer move (%s) linked to " +"transferred assets. Use the 'Revert Transfer' action instead." +msgstr "" +"No se puede desasentar este apunte porque es un movimiento de transferencia " +"(%s) vinculado a activos transferidos. Use la acción 'Revertir " +"transferencia' en su lugar." + #. module: account_asset_transfer_extension #: code:addons/account_asset_transfer_extension/models/account_move.py:0 #, python-format diff --git a/account_asset_transfer_extension/models/__init__.py b/account_asset_transfer_extension/models/__init__.py index 5e6c81c12..a087b4f62 100644 --- a/account_asset_transfer_extension/models/__init__.py +++ b/account_asset_transfer_extension/models/__init__.py @@ -1,2 +1,3 @@ from . import account_asset +from . import account_asset_line from . import account_move diff --git a/account_asset_transfer_extension/models/account_asset_line.py b/account_asset_transfer_extension/models/account_asset_line.py new file mode 100644 index 000000000..7653fd651 --- /dev/null +++ b/account_asset_transfer_extension/models/account_asset_line.py @@ -0,0 +1,26 @@ +# Copyright 2026 NuoBiT Solutions SL - Eric Antones +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import _, models +from odoo.exceptions import UserError + + +class AccountAssetLine(models.Model): + _inherit = "account.asset.line" + + def unlink_move(self): + for line in self: + if line.move_id: + transferred_assets = self.env["account.asset"].search( + [("transfer_move_id", "=", line.move_id.id)], limit=1 + ) + if transferred_assets: + raise UserError( + _( + "You cannot unpost this entry because it is a " + "transfer move (%s) linked to transferred assets." + " Use the 'Revert Transfer' action instead." + ) + % line.move_id.display_name + ) + return super().unlink_move() From af2c7bcc47b03de4c5cbf62d0a1bbb934dd4e67a Mon Sep 17 00:00:00 2001 From: Eric Antones Date: Mon, 16 Mar 2026 15:17:53 +0100 Subject: [PATCH 5/8] [IMP] account_asset_transfer_extension: add Catalan translations Add complete ca.po translation for all existing module strings. --- account_asset_transfer_extension/i18n/ca.po | 162 +++++++++++++++++++- 1 file changed, 160 insertions(+), 2 deletions(-) diff --git a/account_asset_transfer_extension/i18n/ca.po b/account_asset_transfer_extension/i18n/ca.po index 7727d3e98..cb99378e4 100644 --- a/account_asset_transfer_extension/i18n/ca.po +++ b/account_asset_transfer_extension/i18n/ca.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 14.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-16 12:00+0000\n" -"PO-Revision-Date: 2026-03-16 12:00+0000\n" +"POT-Creation-Date: 2022-12-23 16:15+0000\n" +"PO-Revision-Date: 2022-12-23 16:15+0000\n" "Last-Translator: \n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,6 +15,154 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "> Journal entries to remove: %s" +msgstr "> Assentaments comptables a eliminar: %s" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "> New assets to remove: %s" +msgstr "> Actius nous a eliminar: %s" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "> Transferred assets to restore: %s" +msgstr "> Actius transferits a restaurar: %s" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "Active Model not defined" +msgstr "El model actiu no ha estat definit" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__date_transfer +msgid "Asset Transfer Date" +msgstr "Data de la transferència de l'actiu" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__from_asset_ids +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_view_form +msgid "From Assets" +msgstr "Actius origen" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_asset.py:0 +#, python-format +msgid "More than one move with the same to_asset found" +msgstr "S'ha trobat més d'un moviment amb el mateix actiu de destinació" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "No assets selected" +msgstr "No hi ha actius seleccionats" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "Nothing to revert" +msgstr "Res a revertir" + +#. module: account_asset_transfer_extension +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_transfer_revert_view_form +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_view_form +msgid "Revert Transfer" +msgstr "Revertir transferència" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_asset.py:0 +#, python-format +msgid "Revert Transfer AUC to Asset" +msgstr "Revertir transferència AUC de l'actiu" + +#. module: account_asset_transfer_extension +#: model:ir.actions.server,name:account_asset_transfer_extension.action_asset_transfer_revert_from_list +msgid "Revert Transfer Asset" +msgstr "Revertir transferència d'actiu" + +#. module: account_asset_transfer_extension +#: model:ir.model,name:account_asset_transfer_extension.model_account_asset_transfer_revert +msgid "Revert Transferred Asset" +msgstr "Revertir actius transferits" + +#. module: account_asset_transfer_extension +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_transfer_revert_view_form +msgid "Tansfer Assets?" +msgstr "Transferir actius?" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "The journal entry %s has lines without asset" +msgstr "L'assentament comptable %s té línies sense actius" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "The journal entry assets has inconsistencies with de from/to assets" +msgstr "" +"Els actius de l'assentament comptable tenen inconsistències amb els actius " +"d'origen i destinació" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "The next actions will be taken: " +msgstr "Es realitzaran les accions següents: " + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__to_asset_ids +#: model_terms:ir.ui.view,arch_db:account_asset_transfer_extension.account_asset_view_form +msgid "To Assets" +msgstr "Actius nous" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset__transfer_move_id +msgid "Transfer Move id" +msgstr "Moviment de transferència" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields.selection,name:account_asset_transfer_extension.selection__account_asset__state__transferred +msgid "Transferred" +msgstr "Transferit" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/wizard/account_asset_transfer_revert.py:0 +#, python-format +msgid "Unexpected number of init entries found on deprecation line" +msgstr "Nombre inesperat d'entrades inicials trobades a la línia d'amortització" + +#. module: account_asset_transfer_extension +#: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer_revert__warning_message +msgid "Warning Message" +msgstr "Missatge d'avís" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_asset.py:0 +#, python-format +msgid "" +"When asset has from_asset_ids, state must be open, close or removed. Please," +" review asset: %s" +msgstr "" +"Quan l'actiu té actius d'origen, l'estat ha de ser en execució, tancat o " +"eliminat. Si us plau, reviseu l'actiu: %s" + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_asset.py:0 +#, python-format +msgid "" +"When asset has to_asset_ids, state must be transferred. Please, review " +"asset: %s" +msgstr "" +"Quan l'actiu té actius nous, l'estat ha de ser transferit. Si us plau, " +"reviseu l'actiu: %s" + #. module: account_asset_transfer_extension #: code:addons/account_asset_transfer_extension/models/account_asset_line.py:0 #, python-format @@ -25,3 +173,13 @@ msgstr "" "No es pot desassentar aquest apunt perquè és un moviment de transferència " "(%s) vinculat a actius transferits. Utilitzeu l'acció 'Revertir " "transferència'." + +#. module: account_asset_transfer_extension +#: code:addons/account_asset_transfer_extension/models/account_move.py:0 +#, python-format +msgid "" +"You can't modify or delete a journal item on journal entries with " +"transferred assets" +msgstr "" +"No es pot modificar o eliminar un apunt comptable en assentaments amb " +"actius transferits." From e36fa3f54f1baa296ec8ce70327b46d37459f5e8 Mon Sep 17 00:00:00 2001 From: Eric Antones Date: Mon, 16 Mar 2026 15:18:13 +0100 Subject: [PATCH 6/8] [IMP] account_asset_transfer_extension: add readme Add readme/DESCRIPTION.rst and readme/CONTRIBUTORS.rst with module description and contributor list. Regenerate README.rst. --- account_asset_transfer_extension/README.rst | 67 ++- .../readme/CONTRIBUTORS.rst | 4 + .../readme/DESCRIPTION.rst | 7 + .../static/description/index.html | 428 ++++++++++++++++++ 4 files changed, 494 insertions(+), 12 deletions(-) create mode 100644 account_asset_transfer_extension/readme/CONTRIBUTORS.rst create mode 100644 account_asset_transfer_extension/readme/DESCRIPTION.rst create mode 100644 account_asset_transfer_extension/static/description/index.html diff --git a/account_asset_transfer_extension/README.rst b/account_asset_transfer_extension/README.rst index 7f3df1e64..cd8b2e7b5 100644 --- a/account_asset_transfer_extension/README.rst +++ b/account_asset_transfer_extension/README.rst @@ -1,27 +1,70 @@ -.. image:: https://img.shields.io/badge/license-AGPL--3-blue.png - :target: https://www.gnu.org/licenses/agpl - :alt: License: AGPL-3 - ================================ Account Asset Transfer Extension ================================ -* This module uses the asset purchase value instead of the journal item value +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:6299fa0e96a82c79095d78f65bb11b03fd9e95517f45414bf2d7c9a8d6ff7b8d + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |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/14.0/account_asset_transfer_extension + :alt: NuoBiT/odoo-addons + +|badge1| |badge2| |badge3| + +This module extends the OCA ``account_asset_transfer`` module adding: +* A "Transferred" state on assets to track which assets have been transferred via the AUC (Assets Under Construction) transfer wizard. +* Fields ``transfer_move_id`` and ``date_transfer`` to link transferred assets to their transfer journal entry. +* Computed fields ``from_asset_ids`` and ``to_asset_ids`` to navigate between source and destination assets. +* A "Revert Transfer" wizard to undo AUC transfers, restoring assets to their original state. +* Protection against accidental deletion of transfer journal entries (CURS moves) when unposting depreciation lines. + +**Table of contents** + +.. contents:: + :local: Bug Tracker =========== -Bugs are tracked on `GitHub Issues -`_. In case of trouble, please -check there if your issue has already been reported. If you spotted it first, -help us smashing it by providing a detailed and welcomed feedback. +Bugs are tracked on `GitHub 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 `_. + +Do not contact contributors directly about support or help with technical issues. Credits ======= +Authors +~~~~~~~ + +* NuoBiT Solutions +* S.L. + Contributors ------------- +~~~~~~~~~~~~ + +* `NuoBiT `__: + + * Kilian Niubo + * Eric Antones + +Maintainers +~~~~~~~~~~~ + +This module is part of the `NuoBiT/odoo-addons `_ project on GitHub. -* Kilian Niubo -* Eric Antones +You are welcome to contribute. diff --git a/account_asset_transfer_extension/readme/CONTRIBUTORS.rst b/account_asset_transfer_extension/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..e468d95a0 --- /dev/null +++ b/account_asset_transfer_extension/readme/CONTRIBUTORS.rst @@ -0,0 +1,4 @@ +* `NuoBiT `__: + + * Kilian Niubo + * Eric Antones diff --git a/account_asset_transfer_extension/readme/DESCRIPTION.rst b/account_asset_transfer_extension/readme/DESCRIPTION.rst new file mode 100644 index 000000000..465c13206 --- /dev/null +++ b/account_asset_transfer_extension/readme/DESCRIPTION.rst @@ -0,0 +1,7 @@ +This module extends the OCA ``account_asset_transfer`` module adding: + +* A "Transferred" state on assets to track which assets have been transferred via the AUC (Assets Under Construction) transfer wizard. +* Fields ``transfer_move_id`` and ``date_transfer`` to link transferred assets to their transfer journal entry. +* Computed fields ``from_asset_ids`` and ``to_asset_ids`` to navigate between source and destination assets. +* A "Revert Transfer" wizard to undo AUC transfers, restoring assets to their original state. +* Protection against accidental deletion of transfer journal entries (CURS moves) when unposting depreciation lines. diff --git a/account_asset_transfer_extension/static/description/index.html b/account_asset_transfer_extension/static/description/index.html new file mode 100644 index 000000000..da5c71298 --- /dev/null +++ b/account_asset_transfer_extension/static/description/index.html @@ -0,0 +1,428 @@ + + + + + +Account Asset Transfer Extension + + + +
+

Account Asset Transfer Extension

+ + +

Beta License: AGPL-3 NuoBiT/odoo-addons

+

This module extends the OCA account_asset_transfer module adding:

+
    +
  • A “Transferred” state on assets to track which assets have been transferred via the AUC (Assets Under Construction) transfer wizard.
  • +
  • Fields transfer_move_id and date_transfer to link transferred assets to their transfer journal entry.
  • +
  • Computed fields from_asset_ids and to_asset_ids to navigate between source and destination assets.
  • +
  • A “Revert Transfer” wizard to undo AUC transfers, restoring assets to their original state.
  • +
  • Protection against accidental deletion of transfer journal entries (CURS moves) when unposting depreciation lines.
  • +
+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub 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.

+

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

+
+
+

Credits

+
+

Authors

+
    +
  • NuoBiT Solutions
  • +
  • S.L.
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is part of the NuoBiT/odoo-addons project on GitHub.

+

You are welcome to contribute.

+
+
+
+ + From f8ceb79e7a0bddd2787825463ad6579189b0c340 Mon Sep 17 00:00:00 2001 From: ??? Date: Tue, 17 Mar 2026 16:32:42 +0100 Subject: [PATCH 7/8] [IMP] account_asset_transfer_extension: pre-commit auto fixes --- account_asset_transfer_extension/README.rst | 33 +++++++++++-------- .../__manifest__.py | 2 +- .../pyproject.toml | 3 ++ .../readme/CONTRIBUTORS.md | 3 ++ .../readme/CONTRIBUTORS.rst | 4 --- .../readme/DESCRIPTION.md | 12 +++++++ .../readme/DESCRIPTION.rst | 7 ---- .../static/description/index.html | 21 +++++++----- .../views/account_asset.xml | 1 - .../wizard/account_asset_transfer_revert.xml | 2 -- 10 files changed, 51 insertions(+), 37 deletions(-) create mode 100644 account_asset_transfer_extension/pyproject.toml create mode 100644 account_asset_transfer_extension/readme/CONTRIBUTORS.md delete mode 100644 account_asset_transfer_extension/readme/CONTRIBUTORS.rst create mode 100644 account_asset_transfer_extension/readme/DESCRIPTION.md delete mode 100644 account_asset_transfer_extension/readme/DESCRIPTION.rst diff --git a/account_asset_transfer_extension/README.rst b/account_asset_transfer_extension/README.rst index cd8b2e7b5..45246c39a 100644 --- a/account_asset_transfer_extension/README.rst +++ b/account_asset_transfer_extension/README.rst @@ -17,18 +17,23 @@ Account Asset Transfer Extension :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/14.0/account_asset_transfer_extension + :target: https://github.com/NuoBiT/odoo-addons/tree/18.0/account_asset_transfer_extension :alt: NuoBiT/odoo-addons |badge1| |badge2| |badge3| This module extends the OCA ``account_asset_transfer`` module adding: -* A "Transferred" state on assets to track which assets have been transferred via the AUC (Assets Under Construction) transfer wizard. -* Fields ``transfer_move_id`` and ``date_transfer`` to link transferred assets to their transfer journal entry. -* Computed fields ``from_asset_ids`` and ``to_asset_ids`` to navigate between source and destination assets. -* A "Revert Transfer" wizard to undo AUC transfers, restoring assets to their original state. -* Protection against accidental deletion of transfer journal entries (CURS moves) when unposting depreciation lines. +- A "Transferred" state on assets to track which assets have been + transferred via the AUC (Assets Under Construction) transfer wizard. +- Fields ``transfer_move_id`` and ``date_transfer`` to link transferred + assets to their transfer journal entry. +- Computed fields ``from_asset_ids`` and ``to_asset_ids`` to navigate + between source and destination assets. +- A "Revert Transfer" wizard to undo AUC transfers, restoring assets to + their original state. +- Protection against accidental deletion of transfer journal entries + (CURS moves) when unposting depreciation lines. **Table of contents** @@ -41,7 +46,7 @@ Bug Tracker Bugs are tracked on `GitHub 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 `_. +`feedback `_. Do not contact contributors directly about support or help with technical issues. @@ -49,22 +54,22 @@ Credits ======= Authors -~~~~~~~ +------- * NuoBiT Solutions * S.L. Contributors -~~~~~~~~~~~~ +------------ -* `NuoBiT `__: +- `NuoBiT `__: - * Kilian Niubo - * Eric Antones + - Kilian Niubo + - Eric Antones Maintainers -~~~~~~~~~~~ +----------- -This module is part of the `NuoBiT/odoo-addons `_ project on GitHub. +This module is part of the `NuoBiT/odoo-addons `_ project on GitHub. You are welcome to contribute. diff --git a/account_asset_transfer_extension/__manifest__.py b/account_asset_transfer_extension/__manifest__.py index 516c5df75..f0dc59a8f 100644 --- a/account_asset_transfer_extension/__manifest__.py +++ b/account_asset_transfer_extension/__manifest__.py @@ -9,7 +9,7 @@ "category": "Accounting", "version": "14.0.1.0.3", "license": "AGPL-3", - "website": "https://github.com/nuobit/odoo-addons", + "website": "https://github.com/NuoBiT/odoo-addons", "depends": ["account_asset_transfer"], "data": [ "security/ir.model.access.csv", diff --git a/account_asset_transfer_extension/pyproject.toml b/account_asset_transfer_extension/pyproject.toml new file mode 100644 index 000000000..4231d0ccc --- /dev/null +++ b/account_asset_transfer_extension/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["whool"] +build-backend = "whool.buildapi" diff --git a/account_asset_transfer_extension/readme/CONTRIBUTORS.md b/account_asset_transfer_extension/readme/CONTRIBUTORS.md new file mode 100644 index 000000000..e861d9e77 --- /dev/null +++ b/account_asset_transfer_extension/readme/CONTRIBUTORS.md @@ -0,0 +1,3 @@ +- [NuoBiT](https://www.nuobit.com): + - Kilian Niubo \ + - Eric Antones \ diff --git a/account_asset_transfer_extension/readme/CONTRIBUTORS.rst b/account_asset_transfer_extension/readme/CONTRIBUTORS.rst deleted file mode 100644 index e468d95a0..000000000 --- a/account_asset_transfer_extension/readme/CONTRIBUTORS.rst +++ /dev/null @@ -1,4 +0,0 @@ -* `NuoBiT `__: - - * Kilian Niubo - * Eric Antones diff --git a/account_asset_transfer_extension/readme/DESCRIPTION.md b/account_asset_transfer_extension/readme/DESCRIPTION.md new file mode 100644 index 000000000..402537923 --- /dev/null +++ b/account_asset_transfer_extension/readme/DESCRIPTION.md @@ -0,0 +1,12 @@ +This module extends the OCA `account_asset_transfer` module adding: + +- A "Transferred" state on assets to track which assets have been + transferred via the AUC (Assets Under Construction) transfer wizard. +- Fields `transfer_move_id` and `date_transfer` to link transferred + assets to their transfer journal entry. +- Computed fields `from_asset_ids` and `to_asset_ids` to navigate + between source and destination assets. +- A "Revert Transfer" wizard to undo AUC transfers, restoring assets to + their original state. +- Protection against accidental deletion of transfer journal entries + (CURS moves) when unposting depreciation lines. diff --git a/account_asset_transfer_extension/readme/DESCRIPTION.rst b/account_asset_transfer_extension/readme/DESCRIPTION.rst deleted file mode 100644 index 465c13206..000000000 --- a/account_asset_transfer_extension/readme/DESCRIPTION.rst +++ /dev/null @@ -1,7 +0,0 @@ -This module extends the OCA ``account_asset_transfer`` module adding: - -* A "Transferred" state on assets to track which assets have been transferred via the AUC (Assets Under Construction) transfer wizard. -* Fields ``transfer_move_id`` and ``date_transfer`` to link transferred assets to their transfer journal entry. -* Computed fields ``from_asset_ids`` and ``to_asset_ids`` to navigate between source and destination assets. -* A "Revert Transfer" wizard to undo AUC transfers, restoring assets to their original state. -* Protection against accidental deletion of transfer journal entries (CURS moves) when unposting depreciation lines. diff --git a/account_asset_transfer_extension/static/description/index.html b/account_asset_transfer_extension/static/description/index.html index da5c71298..61b239c09 100644 --- a/account_asset_transfer_extension/static/description/index.html +++ b/account_asset_transfer_extension/static/description/index.html @@ -369,14 +369,19 @@

Account Asset Transfer Extension

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:6299fa0e96a82c79095d78f65bb11b03fd9e95517f45414bf2d7c9a8d6ff7b8d !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! --> -

Beta License: AGPL-3 NuoBiT/odoo-addons

+

Beta License: AGPL-3 NuoBiT/odoo-addons

This module extends the OCA account_asset_transfer module adding:

    -
  • A “Transferred” state on assets to track which assets have been transferred via the AUC (Assets Under Construction) transfer wizard.
  • -
  • Fields transfer_move_id and date_transfer to link transferred assets to their transfer journal entry.
  • -
  • Computed fields from_asset_ids and to_asset_ids to navigate between source and destination assets.
  • -
  • A “Revert Transfer” wizard to undo AUC transfers, restoring assets to their original state.
  • -
  • Protection against accidental deletion of transfer journal entries (CURS moves) when unposting depreciation lines.
  • +
  • A “Transferred” state on assets to track which assets have been +transferred via the AUC (Assets Under Construction) transfer wizard.
  • +
  • Fields transfer_move_id and date_transfer to link transferred +assets to their transfer journal entry.
  • +
  • Computed fields from_asset_ids and to_asset_ids to navigate +between source and destination assets.
  • +
  • A “Revert Transfer” wizard to undo AUC transfers, restoring assets to +their original state.
  • +
  • Protection against accidental deletion of transfer journal entries +(CURS moves) when unposting depreciation lines.

Table of contents

@@ -395,7 +400,7 @@

Bug Tracker

Bugs are tracked on GitHub 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.

+feedback.

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

@@ -419,7 +424,7 @@

Contributors

Maintainers

-

This module is part of the NuoBiT/odoo-addons project on GitHub.

+

This module is part of the NuoBiT/odoo-addons project on GitHub.

You are welcome to contribute.

diff --git a/account_asset_transfer_extension/views/account_asset.xml b/account_asset_transfer_extension/views/account_asset.xml index f3cfaff6a..ae4ff57f1 100644 --- a/account_asset_transfer_extension/views/account_asset.xml +++ b/account_asset_transfer_extension/views/account_asset.xml @@ -53,7 +53,6 @@ - diff --git a/account_asset_transfer_extension/wizard/account_asset_transfer_revert.xml b/account_asset_transfer_extension/wizard/account_asset_transfer_revert.xml index 1306d5652..cdbc6a1c9 100644 --- a/account_asset_transfer_extension/wizard/account_asset_transfer_revert.xml +++ b/account_asset_transfer_extension/wizard/account_asset_transfer_revert.xml @@ -1,5 +1,4 @@ - account.asset.transfer.revert.form account.asset.transfer.revert @@ -36,5 +35,4 @@ action = records.revert_transfer() - From 247bfa5a624962a5482e6162bb9b79c1f6a413f5 Mon Sep 17 00:00:00 2001 From: ??? Date: Tue, 17 Mar 2026 17:48:05 +0100 Subject: [PATCH 8/8] [MIG] account_asset_transfer_extension: Migration to 18.0 --- account_asset_transfer_extension/README.rst | 8 +++---- account_asset_transfer_extension/__init__.py | 2 +- .../__manifest__.py | 13 ++++++----- account_asset_transfer_extension/i18n/es.po | 4 ++-- .../models/account_asset.py | 16 ++++++++------ .../models/account_move.py | 6 ++--- .../readme/CONTRIBUTORS.md | 5 +++-- .../static/description/index.html | 8 +++---- ...ount_asset.xml => account_asset_views.xml} | 22 ++++++++----------- .../{wizard => wizards}/__init__.py | 0 .../account_asset_transfer.py | 6 ++--- .../account_asset_transfer_revert.py | 10 +++++---- .../account_asset_transfer_revert.xml | 2 +- 13 files changed, 52 insertions(+), 50 deletions(-) rename account_asset_transfer_extension/views/{account_asset.xml => account_asset_views.xml} (77%) rename account_asset_transfer_extension/{wizard => wizards}/__init__.py (100%) rename account_asset_transfer_extension/{wizard => wizards}/account_asset_transfer.py (87%) rename account_asset_transfer_extension/{wizard => wizards}/account_asset_transfer_revert.py (90%) rename account_asset_transfer_extension/{wizard => wizards}/account_asset_transfer_revert.xml (97%) diff --git a/account_asset_transfer_extension/README.rst b/account_asset_transfer_extension/README.rst index 45246c39a..b06133df5 100644 --- a/account_asset_transfer_extension/README.rst +++ b/account_asset_transfer_extension/README.rst @@ -56,16 +56,16 @@ Credits Authors ------- -* NuoBiT Solutions -* S.L. +* NuoBiT Solutions SL Contributors ------------ - `NuoBiT `__: - - Kilian Niubo - - Eric Antones + - Kilian Niubo kniubo@nuobit.com + - Eric Antones eantones@nuobit.com + - Deniz Gallo dgallo@nuobit.com Maintainers ----------- diff --git a/account_asset_transfer_extension/__init__.py b/account_asset_transfer_extension/__init__.py index 9b4296142..aee8895e7 100644 --- a/account_asset_transfer_extension/__init__.py +++ b/account_asset_transfer_extension/__init__.py @@ -1,2 +1,2 @@ from . import models -from . import wizard +from . import wizards diff --git a/account_asset_transfer_extension/__manifest__.py b/account_asset_transfer_extension/__manifest__.py index f0dc59a8f..452c6a25c 100644 --- a/account_asset_transfer_extension/__manifest__.py +++ b/account_asset_transfer_extension/__manifest__.py @@ -1,19 +1,20 @@ -# Copyright NuoBiT - Kilian Niubo -# Copyright NuoBiT - Eric Antones +# Copyright NuoBiT Solutions SL - Kilian Niubo +# Copyright NuoBiT Solutions SL - Eric Antones +# Copyright 2025 NuoBiT Solutions SL - Deniz Gallo # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) { "name": "Account Asset Transfer Extension", "summary": "This module extends account_asset_transfer ", - "author": "NuoBiT Solutions, S.L.", + "author": "NuoBiT Solutions SL", "category": "Accounting", - "version": "14.0.1.0.3", + "version": "18.0.1.0.0", "license": "AGPL-3", "website": "https://github.com/NuoBiT/odoo-addons", "depends": ["account_asset_transfer"], "data": [ "security/ir.model.access.csv", - "views/account_asset.xml", - "wizard/account_asset_transfer_revert.xml", + "views/account_asset_views.xml", + "wizards/account_asset_transfer_revert.xml", ], } diff --git a/account_asset_transfer_extension/i18n/es.po b/account_asset_transfer_extension/i18n/es.po index f9bf78341..8e8c41808 100644 --- a/account_asset_transfer_extension/i18n/es.po +++ b/account_asset_transfer_extension/i18n/es.po @@ -4,7 +4,7 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 14.0\n" +"Project-Id-Version: Odoo Server 18.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2022-12-23 16:15+0000\n" "PO-Revision-Date: 2022-12-23 16:15+0000\n" @@ -115,7 +115,7 @@ msgstr "" #. module: account_asset_transfer_extension #: model:ir.model.fields,field_description:account_asset_transfer_extension.field_account_asset_transfer_revert__write_date msgid "Last Updated on" -msgstr "" +msgstr "Última actualización el" #. module: account_asset_transfer_extension #: code:addons/account_asset_transfer_extension/models/account_asset.py:0 diff --git a/account_asset_transfer_extension/models/account_asset.py b/account_asset_transfer_extension/models/account_asset.py index 3ce4b849c..16ada2a85 100644 --- a/account_asset_transfer_extension/models/account_asset.py +++ b/account_asset_transfer_extension/models/account_asset.py @@ -1,6 +1,7 @@ -# Copyright NuoBiT - Kilian Niubo -# Copyright NuoBiT - Eric Antones -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# Copyright NuoBiT Solutions SL - Kilian Niubo +# Copyright NuoBiT Solutions SL - Eric Antones +# Copyright 2025 NuoBiT Solutions SL - Deniz Gallo +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) from odoo import _, api, fields, models from odoo.exceptions import ValidationError @@ -18,7 +19,7 @@ class AccountAsset(models.Model): def _compute_from_asset_ids(self): for rec in self: move_lines = rec.account_move_line_ids.filtered( - lambda x: x.move_id != rec.transfer_move_id + lambda x, rec=rec: x.move_id != rec.transfer_move_id ) move = move_lines.move_id.filtered( lambda x: x in x.line_ids.asset_id.transfer_move_id @@ -28,7 +29,7 @@ def _compute_from_asset_ids(self): _("More than one move with the same to_asset found") ) rec.from_asset_ids = move.line_ids.asset_id.filtered( - lambda x: x.transfer_move_id == move + lambda x, move=move: x.transfer_move_id == move ) to_asset_ids = fields.Many2many( @@ -41,7 +42,7 @@ def _compute_to_asset_ids(self): for rec in self: if rec.transfer_move_id: rec.to_asset_ids = rec.transfer_move_id.line_ids.asset_id.filtered( - lambda x: not x.transfer_move_id + lambda x, rec=rec: not x.transfer_move_id or x.transfer_move_id != rec.transfer_move_id ) else: @@ -94,7 +95,8 @@ def _check_state_from_asset_ids(self): if rec.from_asset_ids and rec.state not in ["open", "close", "removed"]: raise ValidationError( _( - "When asset has from_asset_ids, state must be open, close or removed. " + "When asset has from_asset_ids, " + "state must be open, close or removed. " "Please, review asset: %s" ) % rec.name diff --git a/account_asset_transfer_extension/models/account_move.py b/account_asset_transfer_extension/models/account_move.py index e19e2f987..587aceed4 100644 --- a/account_asset_transfer_extension/models/account_move.py +++ b/account_asset_transfer_extension/models/account_move.py @@ -1,6 +1,6 @@ -# Copyright NuoBiT - Kilian Niubo -# Copyright NuoBiT - Eric Antones -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). +# Copyright NuoBiT Solutions SL - Kilian Niubo +# Copyright NuoBiT Solutions SL - Eric Antones +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl) from odoo import _, api, models from odoo.exceptions import ValidationError diff --git a/account_asset_transfer_extension/readme/CONTRIBUTORS.md b/account_asset_transfer_extension/readme/CONTRIBUTORS.md index e861d9e77..0355cecbc 100644 --- a/account_asset_transfer_extension/readme/CONTRIBUTORS.md +++ b/account_asset_transfer_extension/readme/CONTRIBUTORS.md @@ -1,3 +1,4 @@ - [NuoBiT](https://www.nuobit.com): - - Kilian Niubo \ - - Eric Antones \ + - Kilian Niubo + - Eric Antones + - Deniz Gallo diff --git a/account_asset_transfer_extension/static/description/index.html b/account_asset_transfer_extension/static/description/index.html index 61b239c09..bc6310ac8 100644 --- a/account_asset_transfer_extension/static/description/index.html +++ b/account_asset_transfer_extension/static/description/index.html @@ -408,16 +408,16 @@

Credits

Authors

    -
  • NuoBiT Solutions
  • -
  • S.L.
  • +
  • NuoBiT Solutions SL

Contributors

diff --git a/account_asset_transfer_extension/views/account_asset.xml b/account_asset_transfer_extension/views/account_asset_views.xml similarity index 77% rename from account_asset_transfer_extension/views/account_asset.xml rename to account_asset_transfer_extension/views/account_asset_views.xml index ae4ff57f1..8be1d5fc5 100644 --- a/account_asset_transfer_extension/views/account_asset.xml +++ b/account_asset_transfer_extension/views/account_asset_views.xml @@ -1,6 +1,6 @@ - - account.asset.form + + account.asset.form.transfer.ext account.asset