Merge PR #1127 into 13.0

Signed-off-by JordiBForgeFlow
This commit is contained in:
OCA-git-bot
2021-02-23 14:40:19 +00:00
11 changed files with 125 additions and 17 deletions

View File

@@ -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",

View File

@@ -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

View File

@@ -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):

View File

@@ -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(

View File

@@ -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:

View File

@@ -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)
~~~~~~~~~~~~~~~~~~~~~~~

View File

@@ -373,6 +373,7 @@
<record id="account_asset_action" model="ir.actions.act_window">
<field name="name">Assets</field>
<field name="res_model">account.asset</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="account_asset_view_tree" />
<field name="search_view_id" ref="account_asset_view_search" />
</record>

View File

@@ -5,12 +5,29 @@
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<xpath expr="//div[hasclass('oe_button_box')]" position="inside">
<button
name="action_view_assets"
type="object"
class="oe_stat_button"
icon="fa-cube"
attrs="{'invisible': [('asset_count', '=', 0)]}"
>
<div class="o_field_widget o_stat_info">
<span class="o_stat_value">
<field name="asset_count" />
</span>
<span class="o_stat_text"> Asset(s)</span>
</div>
</button>
</xpath>
<xpath
expr="//field[@name='invoice_line_ids']/tree/field[@name='quantity']"
position="before"
>
<field
name="asset_profile_id"
domain="[('company_id','=', parent.company_id)]"
attrs="{'invisible': [('parent.type', 'not in', ('in_invoice', 'in_refund'))]}"
/>
<field
@@ -23,7 +40,10 @@
expr="//notebook//field[@name='line_ids']/tree/field[@name='date_maturity']"
position="after"
>
<field name="asset_profile_id" />
<field
name="asset_profile_id"
domain="[('company_id','=', parent.company_id)]"
/>
<field name="asset_id" groups="account.group_account_manager" />
</xpath>
</field>

View File

@@ -6,7 +6,10 @@
<field name="inherit_id" ref="account.view_move_line_form" />
<field name="arch" type="xml">
<field name="statement_id" position="after">
<field name="asset_profile_id" />
<field
name="asset_profile_id"
domain="[('company_id','=', parent.company_id)]"
/>
<field name="asset_id" />
</field>
</field>

View File

@@ -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"]

View File

@@ -6,6 +6,7 @@
<field name="arch" type="xml">
<form string="Remove Asset">
<group colspan="4" col="4">
<field name="company_id" groups="base.group_multi_company" />
<field name="date_remove" />
<field name="force_date" />
<field name="sale_value" />