Merge PR #1055 into 12.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2020-09-16 11:19:33 +00:00
6 changed files with 166 additions and 0 deletions

View File

@@ -1,2 +1,3 @@
from . import models
from . import report
from . import wizard

View File

@@ -16,6 +16,7 @@
'data': [
'security/account_asset_security.xml',
'security/ir.model.access.csv',
'report/account_asset_report_views.xml',
'wizard/account_asset_compute.xml',
'wizard/account_asset_remove.xml',
'views/account_account.xml',

View File

@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import account_asset_report

View File

@@ -0,0 +1,91 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
# Copyright 2020 Tecnativa - Pedro M. Baeza
from odoo import api, fields, models, tools
class AssetAssetReport(models.Model):
_name = "account.asset.report"
_description = "Assets Analysis"
_auto = False
def _selection_state(self):
return self.env["account.asset"].fields_get(
allfields=["state"]
)["state"]["selection"]
date = fields.Date(readonly=True)
depreciation_date = fields.Date(string='Depreciation Date', readonly=True)
asset_id = fields.Many2one(
comodel_name="account.asset", string="Asset", readonly=True,
)
asset_profile_id = fields.Many2one(
comodel_name="account.asset.profile",
string="Asset profile",
readonly=True,
)
partner_id = fields.Many2one(
comodel_name="res.partner", string="Partner", readonly=True)
state = fields.Selection(
selection=lambda self: self._selection_state(),
string="Status",
readonly=True,
)
depreciation_value = fields.Float(
string="Amount of Depreciation Lines", readonly=True
)
move_check = fields.Boolean(string="Posted", readonly=True)
depreciation_count = fields.Integer(
string="# of Depreciation Lines", readonly=True,
)
gross_value = fields.Float(string="Gross Amount", readonly=True)
posted_value = fields.Float(string="Posted Amount", readonly=True)
unposted_value = fields.Float(string="Unposted Amount", readonly=True)
company_id = fields.Many2one(
comodel_name="res.company", string="Company", readonly=True
)
@api.model_cr
def init(self):
tools.drop_view_if_exists(self._cr, 'account_asset_report')
self._cr.execute("""
CREATE OR REPLACE VIEW account_asset_report AS (
select
min(aal.id) as id,
aal.line_date as depreciation_date,
aa.date_start as date,
(CASE WHEN dlmin.id = min(aal.id)
THEN aa.purchase_value
ELSE 0
END) as gross_value,
SUM(aal.amount) as depreciation_value,
SUM(CASE WHEN aal.move_check
THEN aal.amount
ELSE 0
END) as posted_value,
SUM(CASE WHEN NOT aal.move_check
THEN aal.amount
ELSE 0
END) as unposted_value,
aal.asset_id as asset_id,
aal.move_check as move_check,
aa.profile_id as asset_profile_id,
aa.partner_id as partner_id,
aa.state as state,
count(aal.*) as depreciation_count,
aa.company_id as company_id
FROM account_asset_line aal
LEFT JOIN account_asset aa on aal.asset_id=aa.id
LEFT JOIN (
SELECT min(d.id) as id, ac.id as ac_id
FROM account_asset_line as d
INNER JOIN account_asset as ac
ON ac.id = d.asset_id AND d.type = 'depreciate'
GROUP BY ac_id
) AS dlmin on dlmin.ac_id = aa.id
WHERE aal.type = 'depreciate'
GROUP BY
aal.asset_id, aal.line_date, aa.date_start,
aal.move_check, aa.state, aa.profile_id,
aa.partner_id, aa.company_id, aa.id, dlmin.id
)""")

View File

@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.ui.view" id="action_account_asset_report_pivot">
<field name="model">account.asset.report</field>
<field name="arch" type="xml">
<pivot string="Assets Analysis" disable_linking="True">
<field name="asset_profile_id" type="row"/>
<field name="gross_value" type="measure"/>
<field name="unposted_value" type="measure"/>
</pivot>
</field>
</record>
<record model="ir.ui.view" id="action_account_asset_report_graph">
<field name="model">account.asset.report</field>
<field name="arch" type="xml">
<graph string="Assets Analysis">
<field name="asset_profile_id" type="row"/>
<field name="gross_value" type="measure"/>
<field name="unposted_value" type="measure"/>
</graph>
</field>
</record>
<record id="view_account_asset_report_search" model="ir.ui.view">
<field name="model">account.asset.report</field>
<field name="arch" type="xml">
<search string="Assets Analysis">
<field name="date"/>
<field name="depreciation_date"/>
<filter string="Draft" name="draft" domain="[('state','=','draft')]" help="Assets in draft state"/>
<filter string="Running" name="running" domain="[('state','=','open')]" help="Assets in running state"/>
<filter string="Not archived" name="only_active" domain="[('asset_id.active', '=', True)]"/>
<separator/>
<filter string="Posted" name="posted" domain="[('move_check', '=', True)]" help="Posted depreciation lines" context="{'unposted_value_visible': 0}"/>
<field name="asset_id"/>
<field name="asset_profile_id"/>
<field name="partner_id" filter_domain="[('partner_id','child_of', self)]"/>
<field name="company_id" groups="base.group_multi_company"/>
<group expand="1" string="Group By">
<filter string="Asset" name="asset" context="{'group_by':'asset_id'}"/>
<filter string="Asset Profile" name="asset_profile" context="{'group_by': 'asset_profile_id'}"/>
<filter string="Company" name="company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<separator/>
<filter string="Purchase Month" name="purchase_month" help="Date of asset purchase"
context="{'group_by':'date:month'}"/>
<filter string="Depreciation Month" name="deprecation_month" help="Date of depreciation"
context="{'group_by':'depreciation_date:month'}"/>
</group>
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_account_asset_report">
<field name="name">Assets Analysis</field>
<field name="res_model">account.asset.report</field>
<field name="view_type">form</field>
<field name="view_mode">pivot,graph</field>
<field name="search_view_id" ref="view_account_asset_report_search"/>
<field name="context">{'search_default_only_active': 1}</field>
<field name="help" type="html">
<p>
From this report, you can have an overview on all depreciations. The
search bar can also be used to personalize your assets depreciation reporting.
</p>
</field>
</record>
<menuitem name="Assets" action="action_account_asset_report"
id="menu_action_account_asset_report"
parent="account.menu_finance_reports" sequence="21"/>
</odoo>

View File

@@ -13,3 +13,4 @@ access_account_asset_recompute_trigger_manager,account.asset.recompute.trigger,m
access_account_asset_group_invoice,account.asset.group,model_account_asset_group,account.group_account_invoice,1,0,0,0
access_account_asset_group_user,account.asset.group,model_account_asset_group,account.group_account_user,1,0,0,0
access_account_asset_group_manager,account.asset.group,model_account_asset_group,account.group_account_manager,1,1,1,1
access_account_asset_report,account.asset.report,model_account_asset_report,account.group_account_user,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
13 access_account_asset_group_invoice account.asset.group model_account_asset_group account.group_account_invoice 1 0 0 0
14 access_account_asset_group_user account.asset.group model_account_asset_group account.group_account_user 1 0 0 0
15 access_account_asset_group_manager account.asset.group model_account_asset_group account.group_account_manager 1 1 1 1
16 access_account_asset_report account.asset.report model_account_asset_report account.group_account_user 1 0 0 0