diff --git a/account_asset_management/models/account_asset.py b/account_asset_management/models/account_asset.py index 408519e9e..f5f20675c 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", @@ -402,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.")) 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..d7a93ad07 100644 --- a/account_asset_management/models/account_asset_line.py +++ b/account_asset_management/models/account_asset_line.py @@ -10,10 +10,15 @@ 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 +47,10 @@ 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 +69,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/models/account_move.py b/account_asset_management/models/account_move.py index 34a13a969..d1bccfd9f 100644 --- a/account_asset_management/models/account_move.py +++ b/account_asset_management/models/account_move.py @@ -30,6 +30,17 @@ 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,15 +127,38 @@ 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" 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_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..aa0769a7b 100644 --- a/account_asset_management/views/account_move.xml +++ b/account_asset_management/views/account_move.xml @@ -5,6 +5,22 @@ account.move + + + - + 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 @@ - + diff --git a/account_asset_management/wizard/account_asset_remove.py b/account_asset_management/wizard/account_asset_remove.py index d73636447..7a43fea7e 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..4c885a208 100644 --- a/account_asset_management/wizard/account_asset_remove.xml +++ b/account_asset_management/wizard/account_asset_remove.xml @@ -6,6 +6,7 @@
+