From cde49822f3c5e3b3d756b5bae704f9b8ecf8bee1 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Date: Thu, 11 Feb 2021 11:48:48 +0100 Subject: [PATCH 1/6] [13.0][fix][account_asset_management] display only accounts associated to the current company. --- .../models/account_asset.py | 4 ++++ .../models/account_asset_group.py | 3 +++ .../models/account_asset_line.py | 13 +++++++++-- .../models/account_asset_profile.py | 23 +++++++++++++------ .../wizard/account_asset_remove.py | 22 ++++++++++++++---- .../wizard/account_asset_remove.xml | 1 + 6 files changed, 53 insertions(+), 13 deletions(-) diff --git a/account_asset_management/models/account_asset.py b/account_asset_management/models/account_asset.py index 408519e9e..4428ad2f7 100644 --- a/account_asset_management/models/account_asset.py +++ b/account_asset_management/models/account_asset.py @@ -34,6 +34,7 @@ class AccountAsset(models.Model): _name = "account.asset" _description = "Asset" _order = "date_start desc, code, name" + _check_company_auto = True account_move_line_ids = fields.One2many( comodel_name="account.move.line", @@ -41,6 +42,7 @@ class AccountAsset(models.Model): string="Entries", readonly=True, copy=False, + check_company=True, ) move_line_check = fields.Boolean( compute="_compute_move_line_check", string="Has accounting entries" @@ -98,6 +100,7 @@ class AccountAsset(models.Model): change_default=True, required=True, states=READONLY_STATES, + check_company=True, ) group_ids = fields.Many2many( comodel_name="account.asset.group", @@ -252,6 +255,7 @@ class AccountAsset(models.Model): string="Depreciation Lines", copy=False, states=READONLY_STATES, + check_company=True, ) company_id = fields.Many2one( comodel_name="res.company", diff --git a/account_asset_management/models/account_asset_group.py b/account_asset_management/models/account_asset_group.py index ecd5155b0..56b96e37a 100644 --- a/account_asset_management/models/account_asset_group.py +++ b/account_asset_management/models/account_asset_group.py @@ -12,6 +12,7 @@ class AccountAssetGroup(models.Model): _description = "Asset Group" _order = "code, name" _parent_store = True + _check_company_auto = True name = fields.Char(string="Name", size=64, required=True, index=True) code = fields.Char(index=True) @@ -26,11 +27,13 @@ class AccountAssetGroup(models.Model): comodel_name="account.asset.group", string="Parent Asset Group", ondelete="restrict", + check_company=True, ) child_ids = fields.One2many( comodel_name="account.asset.group", inverse_name="parent_id", string="Child Asset Groups", + check_company=True, ) @api.model diff --git a/account_asset_management/models/account_asset_line.py b/account_asset_management/models/account_asset_line.py index 79b1a911b..29d47092d 100644 --- a/account_asset_management/models/account_asset_line.py +++ b/account_asset_management/models/account_asset_line.py @@ -10,10 +10,12 @@ class AccountAssetLine(models.Model): _name = "account.asset.line" _description = "Asset depreciation table line" _order = "type, line_date" + _check_company_auto = True name = fields.Char(string="Depreciation Name", size=64, readonly=True) asset_id = fields.Many2one( - comodel_name="account.asset", string="Asset", required=True, ondelete="cascade" + comodel_name="account.asset", string="Asset", required=True, ondelete="cascade", + check_company=True, ) previous_id = fields.Many2one( comodel_name="account.asset.line", @@ -42,7 +44,8 @@ class AccountAssetLine(models.Model): line_date = fields.Date(string="Date", required=True) line_days = fields.Integer(string="Days", readonly=True) move_id = fields.Many2one( - comodel_name="account.move", string="Depreciation Entry", readonly=True + comodel_name="account.move", string="Depreciation Entry", readonly=True, + check_company=True, ) move_check = fields.Boolean( compute="_compute_move_check", string="Posted", store=True @@ -61,6 +64,12 @@ class AccountAssetLine(models.Model): help="Set this flag for entries of previous fiscal years " "for which Odoo has not generated accounting entries.", ) + company_id = fields.Many2one( + 'res.company', + store=True, + readonly=True, + related='asset_id.company_id', + ) @api.depends("amount", "previous_id", "type") def _compute_values(self): diff --git a/account_asset_management/models/account_asset_profile.py b/account_asset_management/models/account_asset_profile.py index 1d43d2b00..11830f7dd 100644 --- a/account_asset_management/models/account_asset_profile.py +++ b/account_asset_management/models/account_asset_profile.py @@ -7,6 +7,7 @@ from odoo.exceptions import UserError class AccountAssetProfile(models.Model): _name = "account.asset.profile" + _check_company_auto = True _description = "Asset profile" _order = "name" @@ -20,41 +21,48 @@ class AccountAssetProfile(models.Model): ) account_asset_id = fields.Many2one( comodel_name="account.account", - domain=[("deprecated", "=", False)], + domain="[('deprecated', '=', False), ('company_id', '=', company_id)]", string="Asset Account", + check_company=True, required=True, ) account_depreciation_id = fields.Many2one( comodel_name="account.account", - domain=[("deprecated", "=", False)], + domain="[('deprecated', '=', False), ('company_id', '=', company_id)]", string="Depreciation Account", + check_company=True, required=True, ) account_expense_depreciation_id = fields.Many2one( comodel_name="account.account", - domain=[("deprecated", "=", False)], + domain="[('deprecated', '=', False), ('company_id', '=', company_id)]", string="Depr. Expense Account", + check_company=True, required=True, ) account_plus_value_id = fields.Many2one( comodel_name="account.account", - domain=[("deprecated", "=", False)], + domain="[('deprecated', '=', False), ('company_id', '=', company_id)]", + check_company=True, string="Plus-Value Account", ) account_min_value_id = fields.Many2one( comodel_name="account.account", - domain=[("deprecated", "=", False)], + domain="[('deprecated', '=', False), ('company_id', '=', company_id)]", + check_company=True, string="Min-Value Account", ) account_residual_value_id = fields.Many2one( comodel_name="account.account", - domain=[("deprecated", "=", False)], + domain="[('deprecated', '=', False), ('company_id', '=', company_id)]", + check_company=True, string="Residual Value Account", ) journal_id = fields.Many2one( comodel_name="account.journal", - domain=[("type", "=", "general")], + domain="[('type', '=', 'general'), ('company_id', '=', company_id)]", string="Journal", + check_company=True, required=True, ) company_id = fields.Many2one( @@ -68,6 +76,7 @@ class AccountAssetProfile(models.Model): relation="account_asset_profile_group_rel", column1="profile_id", column2="group_id", + check_company=True, string="Asset Groups", ) method = fields.Selection( diff --git a/account_asset_management/wizard/account_asset_remove.py b/account_asset_management/wizard/account_asset_remove.py index d73636447..c0796dfa7 100644 --- a/account_asset_management/wizard/account_asset_remove.py +++ b/account_asset_management/wizard/account_asset_remove.py @@ -15,7 +15,15 @@ _logger = logging.getLogger(__name__) class AccountAssetRemove(models.TransientModel): _name = "account.asset.remove" _description = "Remove Asset" + _check_company_auto = True + company_id = fields.Many2one( + comodel_name="res.company", + string="Company", + readonly=True, + required=True, + default=lambda self: self._default_company_id(), + ) date_remove = fields.Date( string="Asset Removal Date", required=True, @@ -30,25 +38,25 @@ class AccountAssetRemove(models.TransientModel): account_sale_id = fields.Many2one( comodel_name="account.account", string="Asset Sale Account", - domain=[("deprecated", "=", False)], + domain="[('deprecated', '=', False), ('company_id', '=', company_id)]", default=lambda self: self._default_account_sale_id(), ) account_plus_value_id = fields.Many2one( comodel_name="account.account", string="Plus-Value Account", - domain=[("deprecated", "=", False)], + domain="[('deprecated', '=', False), ('company_id', '=', company_id)]", default=lambda self: self._default_account_plus_value_id(), ) account_min_value_id = fields.Many2one( comodel_name="account.account", string="Min-Value Account", - domain=[("deprecated", "=", False)], + domain="[('deprecated', '=', False), ('company_id', '=', company_id)]", default=lambda self: self._default_account_min_value_id(), ) account_residual_value_id = fields.Many2one( comodel_name="account.account", string="Residual Value Account", - domain=[("deprecated", "=", False)], + domain="[('deprecated', '=', False), ('company_id', '=', company_id)]", default=lambda self: self._default_account_residual_value_id(), ) posting_regime = fields.Selection( @@ -69,6 +77,12 @@ class AccountAssetRemove(models.TransientModel): if self.sale_value < 0: raise ValidationError(_("The Sale Value must be positive!")) + @api.model + def _default_company_id(self): + asset_id = self.env.context.get("active_id") + asset = self.env['account.asset'].browse(asset_id) + return asset.company_id + @api.model def _default_sale_value(self): return self._get_sale()["sale_value"] diff --git a/account_asset_management/wizard/account_asset_remove.xml b/account_asset_management/wizard/account_asset_remove.xml index 23326f2d1..10a74e4b2 100644 --- a/account_asset_management/wizard/account_asset_remove.xml +++ b/account_asset_management/wizard/account_asset_remove.xml @@ -6,6 +6,7 @@
+ From af74e459e641f07576cd4763ffbe5245a762d652 Mon Sep 17 00:00:00 2001 From: Jordi Ballester Date: Thu, 11 Feb 2021 13:03:58 +0100 Subject: [PATCH 2/6] [13.0][account_asset_management] button to navigate from the vendor bill to the asset. --- .../models/account_move.py | 23 +++++++++++++++++++ .../views/account_asset.xml | 1 + .../views/account_move.xml | 12 ++++++++++ 3 files changed, 36 insertions(+) diff --git a/account_asset_management/models/account_move.py b/account_asset_management/models/account_move.py index 34a13a969..6b70210bc 100644 --- a/account_asset_management/models/account_move.py +++ b/account_asset_management/models/account_move.py @@ -30,6 +30,14 @@ FIELDS_AFFECTS_ASSET_MOVE_LINE = { class AccountMove(models.Model): _inherit = "account.move" + asset_count = fields.Integer(compute='_compute_asset_count') + + def _compute_asset_count(self): + for rec in self: + assets = self.env['account.asset.line'].search([ + ('move_id', '=', self.id)]).mapped('asset_id') + rec.asset_count = len(assets) + def unlink(self): # for move in self: deprs = self.env["account.asset.line"].search( @@ -116,6 +124,21 @@ class AccountMove(models.Model): line_vals.update(asset_profile_id=False, asset_id=False) return move_vals + def action_view_assets(self): + assets = self.env['account.asset.line'].search([ + ('move_id', '=', self.id)]).mapped('asset_id') + action = self.env.ref("account_asset_management.account_asset_action") + action_dict = action.read()[0] + if len(assets) == 1: + res = self.env.ref("account_asset_management.account_asset_view_form", False) + action_dict["views"] = [(res and res.id or False, "form")] + action_dict["res_id"] = assets.id + elif assets: + action_dict["domain"] = [("id", "in", assets.ids)] + else: + action_dict = {"type": "ir.actions.act_window_close"} + return action_dict + class AccountMoveLine(models.Model): _inherit = "account.move.line" diff --git a/account_asset_management/views/account_asset.xml b/account_asset_management/views/account_asset.xml index 136846719..a008823cf 100644 --- a/account_asset_management/views/account_asset.xml +++ b/account_asset_management/views/account_asset.xml @@ -378,6 +378,7 @@ Assets account.asset + tree,form diff --git a/account_asset_management/views/account_move.xml b/account_asset_management/views/account_move.xml index fb37bac13..6a5a5fcc5 100644 --- a/account_asset_management/views/account_move.xml +++ b/account_asset_management/views/account_move.xml @@ -5,6 +5,18 @@ account.move + + + Date: Thu, 11 Feb 2021 16:13:21 +0100 Subject: [PATCH 3/6] [13.0][account_asset_management] propose account when user chooses --- .../models/account_move.py | 24 ++++++++++++------- account_asset_management/readme/HISTORY.rst | 5 ++++ .../views/account_move.xml | 21 ++++++++++------ .../views/account_move_line.xml | 5 +++- 4 files changed, 39 insertions(+), 16 deletions(-) diff --git a/account_asset_management/models/account_move.py b/account_asset_management/models/account_move.py index 6b70210bc..38b26b6a8 100644 --- a/account_asset_management/models/account_move.py +++ b/account_asset_management/models/account_move.py @@ -30,12 +30,15 @@ FIELDS_AFFECTS_ASSET_MOVE_LINE = { class AccountMove(models.Model): _inherit = "account.move" - asset_count = fields.Integer(compute='_compute_asset_count') + asset_count = fields.Integer(compute="_compute_asset_count") def _compute_asset_count(self): for rec in self: - assets = self.env['account.asset.line'].search([ - ('move_id', '=', self.id)]).mapped('asset_id') + assets = ( + self.env["account.asset.line"] + .search([("move_id", "=", self.id)]) + .mapped("asset_id") + ) rec.asset_count = len(assets) def unlink(self): @@ -125,12 +128,17 @@ class AccountMove(models.Model): return move_vals def action_view_assets(self): - assets = self.env['account.asset.line'].search([ - ('move_id', '=', self.id)]).mapped('asset_id') + assets = ( + self.env["account.asset.line"] + .search([("move_id", "=", self.id)]) + .mapped("asset_id") + ) action = self.env.ref("account_asset_management.account_asset_action") action_dict = action.read()[0] if len(assets) == 1: - res = self.env.ref("account_asset_management.account_asset_view_form", False) + res = self.env.ref( + "account_asset_management.account_asset_view_form", False + ) action_dict["views"] = [(res and res.id or False, "form")] action_dict["res_id"] = assets.id elif assets: @@ -144,10 +152,10 @@ class AccountMoveLine(models.Model): _inherit = "account.move.line" asset_profile_id = fields.Many2one( - comodel_name="account.asset.profile", string="Asset Profile" + comodel_name="account.asset.profile", string="Asset Profile", ) asset_id = fields.Many2one( - comodel_name="account.asset", string="Asset", ondelete="restrict" + comodel_name="account.asset", string="Asset", ondelete="restrict", ) @api.onchange("account_id") diff --git a/account_asset_management/readme/HISTORY.rst b/account_asset_management/readme/HISTORY.rst index de8ef0eed..e15948e1e 100644 --- a/account_asset_management/readme/HISTORY.rst +++ b/account_asset_management/readme/HISTORY.rst @@ -3,6 +3,11 @@ * [BREAKING] Removed all functionality associated with `account.fiscal.year` +13.0.2.0.0 (2021-02-19) +~~~~~~~~~~~~~~~~~~~~~~~ + +* Add support for multi-company + 13.0.1.0.0 (2019-10-21) ~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/account_asset_management/views/account_move.xml b/account_asset_management/views/account_move.xml index 6a5a5fcc5..aa0769a7b 100644 --- a/account_asset_management/views/account_move.xml +++ b/account_asset_management/views/account_move.xml @@ -6,13 +6,17 @@ - @@ -37,7 +41,10 @@ expr="//notebook//field[@name='line_ids']/tree/field[@name='date_maturity']" position="after" > - + diff --git a/account_asset_management/views/account_move_line.xml b/account_asset_management/views/account_move_line.xml index 2f86d7d1d..73a2a1691 100644 --- a/account_asset_management/views/account_move_line.xml +++ b/account_asset_management/views/account_move_line.xml @@ -6,7 +6,10 @@ - + From 756d70b9719568f6ab62100cfad97770008cd0fa Mon Sep 17 00:00:00 2001 From: Mateu Griful Date: Tue, 23 Feb 2021 13:59:08 +0100 Subject: [PATCH 4/6] [13.0][account_asset_management] propose account when user chooses --- .../models/account_asset_line.py | 14 ++++++++------ .../wizard/account_asset_remove.py | 2 +- .../wizard/account_asset_remove.xml | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/account_asset_management/models/account_asset_line.py b/account_asset_management/models/account_asset_line.py index 29d47092d..e97bbc0a0 100644 --- a/account_asset_management/models/account_asset_line.py +++ b/account_asset_management/models/account_asset_line.py @@ -14,7 +14,10 @@ class AccountAssetLine(models.Model): name = fields.Char(string="Depreciation Name", size=64, readonly=True) asset_id = fields.Many2one( - comodel_name="account.asset", string="Asset", required=True, ondelete="cascade", + comodel_name="account.asset", + string="Asset", + required=True, + ondelete="cascade", check_company=True, ) previous_id = fields.Many2one( @@ -44,7 +47,9 @@ class AccountAssetLine(models.Model): line_date = fields.Date(string="Date", required=True) line_days = fields.Integer(string="Days", readonly=True) move_id = fields.Many2one( - comodel_name="account.move", string="Depreciation Entry", readonly=True, + comodel_name="account.move", + string="Depreciation Entry", + readonly=True, check_company=True, ) move_check = fields.Boolean( @@ -65,10 +70,7 @@ class AccountAssetLine(models.Model): "for which Odoo has not generated accounting entries.", ) company_id = fields.Many2one( - 'res.company', - store=True, - readonly=True, - related='asset_id.company_id', + "res.company", store=True, readonly=True, related="asset_id.company_id", ) @api.depends("amount", "previous_id", "type") diff --git a/account_asset_management/wizard/account_asset_remove.py b/account_asset_management/wizard/account_asset_remove.py index c0796dfa7..7a43fea7e 100644 --- a/account_asset_management/wizard/account_asset_remove.py +++ b/account_asset_management/wizard/account_asset_remove.py @@ -80,7 +80,7 @@ class AccountAssetRemove(models.TransientModel): @api.model def _default_company_id(self): asset_id = self.env.context.get("active_id") - asset = self.env['account.asset'].browse(asset_id) + asset = self.env["account.asset"].browse(asset_id) return asset.company_id @api.model diff --git a/account_asset_management/wizard/account_asset_remove.xml b/account_asset_management/wizard/account_asset_remove.xml index 10a74e4b2..4c885a208 100644 --- a/account_asset_management/wizard/account_asset_remove.xml +++ b/account_asset_management/wizard/account_asset_remove.xml @@ -6,7 +6,7 @@ - + From 35e8d092c21d2821dcae643ba0b0c9ffbfcb127a Mon Sep 17 00:00:00 2001 From: ps-tubtim Date: Wed, 21 Jul 2021 11:28:38 +0700 Subject: [PATCH 5/6] [14.0][FIX] account_asset_management: pre-commit --- account_asset_management/models/account_asset_line.py | 5 ++++- account_asset_management/models/account_move.py | 7 +++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/account_asset_management/models/account_asset_line.py b/account_asset_management/models/account_asset_line.py index e97bbc0a0..d7a93ad07 100644 --- a/account_asset_management/models/account_asset_line.py +++ b/account_asset_management/models/account_asset_line.py @@ -70,7 +70,10 @@ class AccountAssetLine(models.Model): "for which Odoo has not generated accounting entries.", ) company_id = fields.Many2one( - "res.company", store=True, readonly=True, related="asset_id.company_id", + "res.company", + store=True, + readonly=True, + related="asset_id.company_id", ) @api.depends("amount", "previous_id", "type") diff --git a/account_asset_management/models/account_move.py b/account_asset_management/models/account_move.py index 38b26b6a8..d1bccfd9f 100644 --- a/account_asset_management/models/account_move.py +++ b/account_asset_management/models/account_move.py @@ -152,10 +152,13 @@ class AccountMoveLine(models.Model): _inherit = "account.move.line" asset_profile_id = fields.Many2one( - comodel_name="account.asset.profile", string="Asset Profile", + comodel_name="account.asset.profile", + string="Asset Profile", ) asset_id = fields.Many2one( - comodel_name="account.asset", string="Asset", ondelete="restrict", + comodel_name="account.asset", + string="Asset", + ondelete="restrict", ) @api.onchange("account_id") From 8de035bcab0397c05a883dbf5f9b47152a12f0d2 Mon Sep 17 00:00:00 2001 From: ps-tubtim Date: Thu, 19 Aug 2021 02:25:08 +0700 Subject: [PATCH 6/6] [FIX] account_asset_management: fix _check_dates --- account_asset_management/models/account_asset.py | 1 + 1 file changed, 1 insertion(+) diff --git a/account_asset_management/models/account_asset.py b/account_asset_management/models/account_asset.py index 4428ad2f7..f5f20675c 100644 --- a/account_asset_management/models/account_asset.py +++ b/account_asset_management/models/account_asset.py @@ -406,6 +406,7 @@ class AccountAsset(models.Model): if self.filtered( lambda a: a.method_time == "year" and not a.method_number + and a.method_end and a.method_end <= a.date_start ): raise UserError(_("The Start Date must precede the Ending Date."))