mirror of
https://github.com/OCA/account-financial-tools.git
synced 2025-02-02 12:47:26 +02:00
@@ -1,2 +1,3 @@
|
||||
from . import models
|
||||
from . import report
|
||||
from . import wizard
|
||||
|
||||
@@ -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',
|
||||
|
||||
3
account_asset_management/report/__init__.py
Normal file
3
account_asset_management/report/__init__.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from . import account_asset_report
|
||||
91
account_asset_management/report/account_asset_report.py
Normal file
91
account_asset_management/report/account_asset_report.py
Normal 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
|
||||
)""")
|
||||
@@ -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>
|
||||
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user