diff --git a/account_asset_management/models/account_asset.py b/account_asset_management/models/account_asset.py
index ec96ba438..6994b49ce 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"
@@ -90,6 +92,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",
@@ -240,6 +243,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 77b1d134f..a706e7ba4 100644
--- a/account_asset_management/models/account_asset_group.py
+++ b/account_asset_management/models/account_asset_group.py
@@ -11,6 +11,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)
@@ -25,11 +26,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 1d6a5c4a2..561cf0095 100644
--- a/account_asset_management/models/account_asset_line.py
+++ b/account_asset_management/models/account_asset_line.py
@@ -9,10 +9,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",
@@ -41,7 +46,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
@@ -60,6 +68,9 @@ 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 9f353b4ae..a4883183d 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"
@@ -17,41 +18,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(
@@ -65,6 +73,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 48e62ac24..4b1f0f9b8 100644
--- a/account_asset_management/models/account_move.py
+++ b/account_asset_management/models/account_move.py
@@ -27,6 +27,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(
@@ -107,15 +118,35 @@ 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")
@@ -123,6 +154,11 @@ class AccountMoveLine(models.Model):
self.asset_profile_id = self.account_id.asset_profile_id
super()._onchange_account_id()
+ @api.onchange("asset_profile_id")
+ def _onchange_asset_profile_id(self):
+ self.account_id = self.asset_profile_id.account_asset_id
+ super()._onchange_account_id()
+
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
diff --git a/account_asset_management/readme/HISTORY.rst b/account_asset_management/readme/HISTORY.rst
index 85492f514..e35ac96cb 100644
--- a/account_asset_management/readme/HISTORY.rst
+++ b/account_asset_management/readme/HISTORY.rst
@@ -1,3 +1,9 @@
+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 38743e353..0525978aa 100644
--- a/account_asset_management/views/account_asset.xml
+++ b/account_asset_management/views/account_asset.xml
@@ -373,6 +373,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 53ee5f22a..30eb8a00a 100644
--- a/account_asset_management/views/account_move.xml
+++ b/account_asset_management/views/account_move.xml
@@ -5,12 +5,29 @@
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 6e9aa5187..ae1c24ce0 100644
--- a/account_asset_management/wizard/account_asset_remove.py
+++ b/account_asset_management/wizard/account_asset_remove.py
@@ -14,7 +14,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,
@@ -29,25 +37,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(
@@ -68,6 +76,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 @@