diff options
| author | dka-odoo <dka@openerp.com> | 2015-01-20 13:53:07 +0100 |
|---|---|---|
| committer | Jérome Maes <jem@openerp.com> | 2015-02-25 11:25:40 +0100 |
| commit | d27910a8f2f2b29810dfa8022ad748cce64df00a (patch) | |
| tree | 52776525b58ddb4d4c1b01ac63f2d0ac9e411b99 /addons/hr_expense | |
| parent | e5875acc6aa19ca0a41ea1b4be9081bfd674005e (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__.py | 1 | ||||
| -rw-r--r-- | addons/hr_expense/hr_department.py | 16 | ||||
| -rw-r--r-- | addons/hr_expense/hr_expense_data.xml | 2 | ||||
| -rw-r--r-- | addons/hr_expense/hr_expense_view.xml | 61 | ||||
| -rw-r--r-- | addons/hr_expense/report/hr_expense_report_view.xml | 4 |
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"/> |
