summaryrefslogtreecommitdiff
path: root/addons/hr_expense
diff options
context:
space:
mode:
authordka-odoo <dka@openerp.com>2015-01-20 13:53:07 +0100
committerJérome Maes <jem@openerp.com>2015-02-25 11:25:40 +0100
commitd27910a8f2f2b29810dfa8022ad748cce64df00a (patch)
tree52776525b58ddb4d4c1b01ac63f2d0ac9e411b99 /addons/hr_expense
parente5875acc6aa19ca0a41ea1b4be9081bfd674005e (diff)
[IMP] hr_department: new kanban view for HR Departments.
hr add a simple kanban view that is updated by the various hr modules. Each module adds statistics and links in the kanban vignette, either in a to do or to approve column. The department kanban view can be seen as a small dashboard to have the main data about the department displayed. Links allow the HR manager to be redirected towards the various things to do or to approve in its department.
Diffstat (limited to 'addons/hr_expense')
-rw-r--r--addons/hr_expense/__init__.py1
-rw-r--r--addons/hr_expense/hr_department.py16
-rw-r--r--addons/hr_expense/hr_expense_data.xml2
-rw-r--r--addons/hr_expense/hr_expense_view.xml61
-rw-r--r--addons/hr_expense/report/hr_expense_report_view.xml4
5 files changed, 68 insertions, 16 deletions
diff --git a/addons/hr_expense/__init__.py b/addons/hr_expense/__init__.py
index 3cfbc6389fd..a14418afdc3 100644
--- a/addons/hr_expense/__init__.py
+++ b/addons/hr_expense/__init__.py
@@ -19,5 +19,6 @@
#
##############################################################################
+import hr_department
import hr_expense
import report
diff --git a/addons/hr_expense/hr_department.py b/addons/hr_expense/hr_department.py
new file mode 100644
index 00000000000..b4fa2a5668f
--- /dev/null
+++ b/addons/hr_expense/hr_department.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+from openerp import api, fields, models
+
+
+class hr_department(models.Model):
+ _inherit = 'hr.department'
+
+ @api.multi
+ def _compute_expense_to_approve(self):
+ expense_data = self.env['hr.expense.expense'].read_group([('department_id', 'in', self.ids), ('state', '=', 'confirm')], ['department_id'], ['department_id'])
+ result = dict((data['department_id'][0], data['department_id_count']) for data in expense_data)
+ for department in self:
+ department.expense_to_approve_count = result.get(department.id, 0)
+
+ expense_to_approve_count = fields.Integer(
+ compute='_compute_expense_to_approve', string='Expenses to Approve')
diff --git a/addons/hr_expense/hr_expense_data.xml b/addons/hr_expense/hr_expense_data.xml
index ac5df674885..c87aa55ceaf 100644
--- a/addons/hr_expense/hr_expense_data.xml
+++ b/addons/hr_expense/hr_expense_data.xml
@@ -41,7 +41,7 @@
<record id="mt_department_expense_confirmed" model="mail.message.subtype">
<field name="name">Expenses To Approve</field>
<field name="res_model">hr.department</field>
- <field name="default" eval="False"/>
+ <field name="default" eval="True"/>
<field name="parent_id" eval="ref('mt_expense_confirmed')"/>
<field name="relation_field">department_id</field>
<field name="sequence" eval="10"/>
diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml
index bb9d5d9ecd3..93ab55d4c75 100644
--- a/addons/hr_expense/hr_expense_view.xml
+++ b/addons/hr_expense/hr_expense_view.xml
@@ -46,7 +46,7 @@
<tree colors="blue:state == 'draft';black:state in ('confirm','accepted','done');gray:state == 'cancelled'" string="Expenses" editable="top">
<field name="employee_id"/>
<field name="date"/>
- <field name="department_id"/>
+ <field name="department_id" groups="hr.group_multi_departments"/>
<field name="name" string="Expense Sheet"/>
<field name="amount"/>
<field name="state"/>
@@ -76,7 +76,7 @@
<group>
<field name="employee_id" on_change="onchange_employee_id(employee_id)"/>
<field name="date"/>
- <field name="department_id"/>
+ <field name="department_id" groups="hr.group_multi_departments"/>
<field name="company_id" groups="base.group_multi_company"/>
</group>
<group>
@@ -107,7 +107,7 @@
<field name="unit_amount"/>
<label for="unit_quantity"/>
<div>
- <field name="unit_quantity" class="oe_inline"/>
+ <field name="unit_quantity" class="oe_inline"/>
<field name="uom_id" on_change="onchange_uom(product_id, uom_id, context)" class="oe_inline"/>
</div>
<field name="date_value" />
@@ -156,7 +156,7 @@
<field name="name" string="Expenses"/>
<field name="date"/>
<field name="employee_id"/>
- <field name="department_id" string="Department" context="{'invisible_department': False}"/>
+ <field name="department_id" groups="hr.group_multi_departments" string="Department" context="{'invisible_department': False}"/>
<filter domain="[('state','=','draft')]" string="New" help="New Expense"/>
<filter domain="[('state','=','confirm')]" string="To Approve" name="confirm" help="Confirmed Expenses"/>
<filter domain="[('state','=','accepted')]" string="To Pay" name="approved" help="Expenses to Invoice"/>
@@ -166,7 +166,7 @@
<filter string="New Mail" name="message_unread" domain="[('message_unread','=',True)]"/>
<group expand="0" string="Group By">
<filter string="Employee" domain="[]" context="{'group_by':'employee_id'}"/>
- <filter string="Department" domain="[]" context="{'group_by':'department_id'}"/>
+ <filter string="Department" domain="[]" context="{'group_by':'department_id'}" groups="hr.group_multi_departments"/>
<filter string="Expenses Month" domain="[]" context="{'group_by':'date'}" help="Expenses by Month"/>
</group>
</search>
@@ -181,7 +181,7 @@
<field name="view_id" ref="view_expenses_tree"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
- Click to register new expenses.
+ Click to register new expenses.
</p><p>
Odoo will ensure the whole process is followed; the expense
sheet is validated by manager(s), the employee is reimbursed
@@ -215,7 +215,7 @@
<field name="search_view_id" ref="product.product_search_form_view"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
- Click to create a new expense category.
+ Click to create a new expense category.
</p>
</field>
</record>
@@ -226,9 +226,9 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_expenses_tree"/>
- <field name="domain">[('state','=','accepted')]</field>
+ <field name="domain">[('state','=','accepted')]</field>
</record>
-
+
<record id="action_request_approve_expense" model="ir.actions.act_window">
<field name="name">Expenses to Approve</field>
<field name="res_model">hr.expense.expense</field>
@@ -238,7 +238,7 @@
<field name="view_id" ref="view_expenses_tree"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
- Click to register new expenses.
+ Click to register new expenses.
</p><p>
OpenERP will ensure the whole process is followed; the expense
sheet is validated by manager(s), the employee is reimbursed
@@ -247,12 +247,47 @@
</p>
</field>
</record>
-
- <menuitem id="menu_expense_approved" parent="account.menu_finance_payables" action="action_approved_expense" sequence="8"/>
+
+ <menuitem id="menu_expense_approved" parent="account.menu_finance_payables" action="action_approved_expense" sequence="8"/>
<menuitem id="menu_hr_product" name="Expense Products" parent="hr.menu_hr_configuration_expenses" action="hr_expense_product" groups="base.group_hr_manager"/>
<menuitem id="next_id_49" name="Expenses" sequence="15" parent="hr.menu_hr_root"/>
<menuitem action="expense_all" id="menu_expense_all" name="Expenses" parent="next_id_49"/>
<menuitem action="action_request_approve_expense" id="menu_expense_to_approve" name="Expenses to Approve" parent="next_id_49" groups="base.group_hr_user"/>
-
+
+ <record id="hr_expense_action_from_department" model="ir.actions.act_window">
+ <field name="name">Expenses To Approve</field>
+ <field name="res_model">hr.expense.expense</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ <field name="search_view_id" ref="view_hr_expense_filter"/>
+ <field name="context">{
+ 'search_default_confirm': 1,
+ 'search_default_department_id': [active_id],
+ 'default_department_id': active_id}
+ </field>
+ </record>
+
+ <!--Hr Department Inherit Kanban view-->
+ <record id="hr_department_view_kanban" model="ir.ui.view">
+ <field name="name">hr.department.kanban.inherit</field>
+ <field name="model">hr.department</field>
+ <field name="inherit_id" ref="hr.hr_department_view_kanban"/>
+ <field name="arch" type="xml">
+ <data>
+ <xpath expr="//templates" position="before">
+ <field name="expense_to_approve_count"/>
+ </xpath>
+ <xpath expr="//div[@name='to_approve']" position="attributes">
+ <attribute name="class">col-md-6 col-xs-6</attribute>
+ </xpath>
+ <xpath expr="//div[@name='to_approve']" position="inside">
+ <div>
+ <a name="%(hr_expense_action_from_department)d" type="action"><t t-esc="record.expense_to_approve_count.raw_value or 0"/> Expenses</a>
+ </div>
+ </xpath>
+ </data>
+ </field>
+ </record>
+
</data>
</openerp>
diff --git a/addons/hr_expense/report/hr_expense_report_view.xml b/addons/hr_expense/report/hr_expense_report_view.xml
index 14408d8c6ee..d61e90e46a6 100644
--- a/addons/hr_expense/report/hr_expense_report_view.xml
+++ b/addons/hr_expense/report/hr_expense_report_view.xml
@@ -36,7 +36,7 @@
<filter string="Approved" domain="[('state','=','accepted')]" help="Approved Expenses"/>
<filter string="Done" domain="[('state','=', 'done')]" help="Done Expenses"/>
<field name="employee_id"/>
- <field name="department_id"/>
+ <field name="department_id" groups="hr.group_multi_departments"/>
<group expand="0" string="Extended Filters...">
<field name="product_id"/>
<field name="user_id"/>
@@ -47,7 +47,7 @@
</group>
<group expand="1" string="Group By">
<filter string="Validation User" name="User" context="{'group_by':'user_id'}"/>
- <filter string="Department" context="{'group_by':'department_id'}"/>
+ <filter string="Department" groups="hr.group_multi_departments" context="{'group_by':'department_id'}"/>
<filter string="Product" context="{'group_by':'product_id'}"/>
<filter string="Status" context="{'group_by':'state'}"/>
<filter string="Company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>