From afdf215b2bb85bc2ae71a4c6bc5a893a497ce152 Mon Sep 17 00:00:00 2001 From: "Pedro M. Baeza" Date: Mon, 6 Feb 2017 19:27:13 +0100 Subject: [PATCH] [FIX] account_asset_disposal: Several fixes * Separate state * Don't close on last depreciation line * Refine interface * Full Spanish translation --- account_asset_disposal/i18n/es.po | 56 ++++++++++++++++--- account_asset_disposal/models/__init__.py | 2 - .../models/account_asset_asset.py | 8 ++- .../models/account_asset_depreciation_line.py | 36 ------------ .../models/account_move_line.py | 11 ++-- .../tests/test_account_asset_disposal.py | 10 ++-- .../views/account_asset_asset_view.xml | 26 ++++++--- .../wizards/account_asset_disposal_wizard.py | 2 +- 8 files changed, 87 insertions(+), 64 deletions(-) delete mode 100644 account_asset_disposal/models/account_asset_depreciation_line.py diff --git a/account_asset_disposal/i18n/es.po b/account_asset_disposal/i18n/es.po index aa215b18a..5fa313e11 100644 --- a/account_asset_disposal/i18n/es.po +++ b/account_asset_disposal/i18n/es.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-09 11:20+0000\n" -"PO-Revision-Date: 2016-06-09 11:20+0000\n" +"POT-Creation-Date: 2017-02-06 18:15+0000\n" +"PO-Revision-Date: 2017-02-06 18:15+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -15,26 +15,41 @@ msgstr "" "Content-Transfer-Encoding: \n" "Plural-Forms: \n" +#. module: account_asset_disposal +#: field:account.asset.asset,annual_percentage:0 +msgid "Annual depreciation percentage" +msgstr "Porcentajes anuales de depreciación" + #. module: account_asset_disposal #: model:ir.model,name:account_asset_disposal.model_account_asset_asset msgid "Asset" msgstr "Activo" #. module: account_asset_disposal -#: code:addons/account_asset_disposal/models/account_asset_asset.py:32 +#: model:ir.model,name:account_asset_disposal.model_account_asset_category +msgid "Asset category" +msgstr "Categoría de activo" + +#. module: account_asset_disposal +#: code:addons/account_asset_disposal/models/account_asset_asset.py:33 #, python-format msgid "Asset depreciation" msgstr "Depreciación del activo" +#. module: account_asset_disposal +#: model:ir.model,name:account_asset_disposal.model_account_asset_depreciation_line +msgid "Asset depreciation line" +msgstr "Línea de depreciación del activo" + #. module: account_asset_disposal #: view:account.asset.disposal.wizard:account_asset_disposal.account_asset_disposal_wizard_form -#: code:addons/account_asset_disposal/models/account_asset_asset.py:19 +#: code:addons/account_asset_disposal/models/account_asset_asset.py:20 #, python-format msgid "Asset disposal" msgstr "Baja del activo" #. module: account_asset_disposal -#: code:addons/account_asset_disposal/models/account_asset_asset.py:45 +#: code:addons/account_asset_disposal/models/account_asset_asset.py:46 #, python-format msgid "Asset loss" msgstr "Pérdida del activo" @@ -57,12 +72,12 @@ msgstr "Creado en" #. module: account_asset_disposal #: field:account.asset.disposal.wizard,display_name:0 msgid "Display Name" -msgstr "Nombre a mostrar" +msgstr "Nombre mostrado" #. module: account_asset_disposal #: view:account.asset.asset:account_asset_disposal.view_account_asset_asset_form msgid "Disposal" -msgstr "Baja" +msgstr "Dar de baja" #. module: account_asset_disposal #: view:account.asset.disposal.wizard:account_asset_disposal.account_asset_disposal_wizard_form @@ -80,11 +95,21 @@ msgstr "Fecha de baja" msgid "Disposal move" msgstr "Asiento de baja" +#. module: account_asset_disposal +#: selection:account.asset.asset,state:0 +msgid "Disposed" +msgstr "Dado de baja" + #. module: account_asset_disposal #: field:account.asset.disposal.wizard,id:0 msgid "ID" msgstr "ID" +#. module: account_asset_disposal +#: model:ir.model,name:account_asset_disposal.model_account_move_line +msgid "Journal Items" +msgstr "Apuntes contables" + #. module: account_asset_disposal #: field:account.asset.disposal.wizard,__last_update:0 msgid "Last Modified on" @@ -100,11 +125,22 @@ msgstr "Última modificación por" msgid "Last Updated on" msgstr "Última actualización en" +#. module: account_asset_disposal +#: field:account.asset.category,loss_account_id:0 +msgid "Loss Account" +msgstr "Cuenta de pérdidas" + #. module: account_asset_disposal #: field:account.asset.disposal.wizard,loss_account_id:0 msgid "Loss account" msgstr "Cuenta de pérdidas" +#. module: account_asset_disposal +#: code:addons/account_asset_disposal/models/account_move_line.py:20 +#, python-format +msgid "Move line '%s' is related with a disposed asset '%s'" +msgstr "El apunte '%s' está relacionado con el activo dado de baja '%s'" + #. module: account_asset_disposal #: view:account.asset.asset:account_asset_disposal.view_account_asset_asset_form msgid "Undo disposal" @@ -114,3 +150,9 @@ msgstr "Cancelar baja" #: view:account.asset.disposal.wizard:account_asset_disposal.account_asset_disposal_wizard_form msgid "or" msgstr "o" + +#. module: account_asset_disposal +#: view:account.asset.asset:account_asset_disposal.view_account_asset_asset_form +msgid "{'invisible':[('state', '!=', 'draft')]}" +msgstr "{'invisible':[('state', '!=', 'draft')]}" + diff --git a/account_asset_disposal/models/__init__.py b/account_asset_disposal/models/__init__.py index 07ee36c80..800089d02 100644 --- a/account_asset_disposal/models/__init__.py +++ b/account_asset_disposal/models/__init__.py @@ -1,8 +1,6 @@ # -*- coding: utf-8 -*- -# © 2016 Antonio Espinosa - # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from . import account_asset_category -from . import account_asset_depreciation_line from . import account_asset_asset from . import account_move_line diff --git a/account_asset_disposal/models/account_asset_asset.py b/account_asset_disposal/models/account_asset_asset.py index ea7022115..b8aef25f5 100644 --- a/account_asset_disposal/models/account_asset_asset.py +++ b/account_asset_disposal/models/account_asset_asset.py @@ -8,6 +8,9 @@ from openerp import models, fields, api, _ class AccountAssetAsset(models.Model): _inherit = "account.asset.asset" + state = fields.Selection( + selection_add=[('disposed', 'Disposed')], + ) disposal_date = fields.Date(string="Disposal date") disposal_move_id = fields.Many2one( comodel_name='account.move', string="Disposal move") @@ -104,8 +107,11 @@ class AccountAssetAsset(models.Model): if asset.disposal_move_id: asset.disposal_move_id.button_cancel() asset.disposal_move_id.unlink() + if asset.currency_id.is_zero(asset.value_residual): + asset.state = 'close' + else: + asset.state = 'open' return self.write({ 'disposal_date': False, 'disposal_move_id': False, - 'state': 'open', }) diff --git a/account_asset_disposal/models/account_asset_depreciation_line.py b/account_asset_disposal/models/account_asset_depreciation_line.py deleted file mode 100644 index bb81c3d26..000000000 --- a/account_asset_disposal/models/account_asset_depreciation_line.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -# © 2016 Antonio Espinosa - -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). - -from openerp import models, fields, api - - -class AccountAssetDepreciationLine(models.Model): - _inherit = "account.asset.depreciation.line" - - @api.multi - def create_move(self): - res = super(AccountAssetDepreciationLine, self).create_move() - for line in self: - asset = line.asset_id - if asset.state == 'close' and not asset.disposal_move_id: - # Asset is closed and no disposal move created, - # Create disposal move with date (using this priority): - # - Depreciation date via context - # - Last posted deprecition line - # - Current depreciated line - # - Today - last_posted_line = self.search([ - ('asset_id', '=', asset.id), - ('move_id', '!=', False), - ], order='depreciation_date DESC', limit=1) - depreciation_date = ( - self.env.context.get('depreciation_date') or - last_posted_line.depreciation_date or - line.depreciation_date or - fields.Date.context_today(line) - ) - asset.disposal_move_create( - depreciation_date, asset.category_id.loss_account_id) - asset.write({'disposal_date': depreciation_date}) - return res diff --git a/account_asset_disposal/models/account_move_line.py b/account_asset_disposal/models/account_move_line.py index 4582092ea..535536e4a 100644 --- a/account_asset_disposal/models/account_move_line.py +++ b/account_asset_disposal/models/account_move_line.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- -# © 2016 Antonio Espinosa - +# Copyright 2016 Antonio Espinosa +# Copyright 2017 Pedro M. Baeza # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). from openerp import models, api, _ @@ -10,12 +11,12 @@ class AccountMoveLine(models.Model): _inherit = "account.move.line" @api.multi - def unlink(self): + def unlink(self, check=True): for line in self: - if (line.asset_id.state == 'close' and + if (line.asset_id.state == 'disposed' and not self.env.context.get('asset_disposal_undo', False)): name = '%s:%s' % (line.move_id.name, line.name) raise UserError( - _("Move line '%s' is related with a closed asset '%s'") % + _("Move line '%s' is related with a disposed asset '%s'") % (name, line.asset_id.name)) - return super(AccountMoveLine, self).unlink() + return super(AccountMoveLine, self).unlink(check=check) diff --git a/account_asset_disposal/tests/test_account_asset_disposal.py b/account_asset_disposal/tests/test_account_asset_disposal.py index 8e1db7a69..fe82b9eca 100644 --- a/account_asset_disposal/tests/test_account_asset_disposal.py +++ b/account_asset_disposal/tests/test_account_asset_disposal.py @@ -11,7 +11,7 @@ class TestAccountAsset(TransactionCase): # Create a payable account for suppliers self.account_suppliers = self.env['account.account'].create({ 'name': 'Suppliers', - 'code': '410000', + 'code': '410x', 'type': 'other', 'user_type': self.env.ref('account.data_account_type_payable').id, 'reconcile': True, @@ -37,7 +37,7 @@ class TestAccountAsset(TransactionCase): # Create an account for assets self.account_asset = self.env['account.account'].create({ 'name': 'Asset', - 'code': '216000', + 'code': '216x', 'type': 'other', 'user_type': self.env.ref('account.data_account_type_asset').id, 'reconcile': False, @@ -45,7 +45,7 @@ class TestAccountAsset(TransactionCase): # Create an account for assets dereciation self.account_asset_depreciation = self.env['account.account'].create({ 'name': 'Asset depreciation', - 'code': '281600', + 'code': '2816x', 'type': 'other', 'user_type': self.env.ref('account.data_account_type_asset').id, 'reconcile': False, @@ -53,7 +53,7 @@ class TestAccountAsset(TransactionCase): # Create an account for assets expense self.account_asset_expense = self.env['account.account'].create({ 'name': 'Asset expense', - 'code': '681000', + 'code': '681x', 'type': 'other', 'user_type': self.env.ref('account.data_account_type_expense').id, 'reconcile': False, @@ -61,7 +61,7 @@ class TestAccountAsset(TransactionCase): # Create an account for assets loss self.account_asset_loss = self.env['account.account'].create({ 'name': 'Asset loss', - 'code': '671000', + 'code': '671x', 'type': 'other', 'user_type': self.env.ref('account.data_account_type_expense').id, 'reconcile': False, diff --git a/account_asset_disposal/views/account_asset_asset_view.xml b/account_asset_disposal/views/account_asset_asset_view.xml index ce7d8c40d..c8f709d4b 100644 --- a/account_asset_disposal/views/account_asset_asset_view.xml +++ b/account_asset_disposal/views/account_asset_asset_view.xml @@ -1,5 +1,6 @@ - @@ -12,17 +13,28 @@ + + attrs="{'invisible': [('state', '!=', 'disposed')]}"/> + attrs="{'invisible': [('state', '!=', 'disposed')]}"/> diff --git a/account_asset_disposal/wizards/account_asset_disposal_wizard.py b/account_asset_disposal/wizards/account_asset_disposal_wizard.py index 6c3d4f66c..eb890e53c 100644 --- a/account_asset_disposal/wizards/account_asset_disposal_wizard.py +++ b/account_asset_disposal/wizards/account_asset_disposal_wizard.py @@ -34,4 +34,4 @@ class AccountAssetDisposalWizard(models.TransientModel): asset.disposal_move_create( self.disposal_date, self.loss_account_id) self._disposal_date_set(assets) - return assets.set_to_close() + return assets.write({'state': 'disposed'})