summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--addons/hr_timesheet/hr_timesheet_config_settings_views.xml2
-rw-r--r--addons/hr_timesheet/hr_timesheet_view.xml179
-rw-r--r--addons/hr_timesheet/report/hr_timesheet_report_view.xml11
-rw-r--r--addons/hr_timesheet/security/hr_timesheet_security.xml63
-rw-r--r--addons/hr_timesheet/security/ir.model.access.csv12
5 files changed, 220 insertions, 47 deletions
diff --git a/addons/hr_timesheet/hr_timesheet_config_settings_views.xml b/addons/hr_timesheet/hr_timesheet_config_settings_views.xml
index 98f88b484b3..0553cbfddca 100644
--- a/addons/hr_timesheet/hr_timesheet_config_settings_views.xml
+++ b/addons/hr_timesheet/hr_timesheet_config_settings_views.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<menuitem id="hr_timesheet_menu_configuration" name="Configuration" parent="timesheet_menu_root"
- groups="group_hr_timesheet_user" sequence="100"/>
+ groups="group_timesheet_manager" sequence="100"/>
<record id="hr_timesheet_config_settings_view_form" model="ir.ui.view">
<field name="name">hr.timesheet.config.settings.view.form</field>
diff --git a/addons/hr_timesheet/hr_timesheet_view.xml b/addons/hr_timesheet/hr_timesheet_view.xml
index ba1b9c54e4e..95f3d8617d0 100644
--- a/addons/hr_timesheet/hr_timesheet_view.xml
+++ b/addons/hr_timesheet/hr_timesheet_view.xml
@@ -1,23 +1,47 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
- <menuitem id="timesheet_menu_root" name="Timesheets" sequence="55" groups="base.group_user" web_icon="hr_timesheet,static/description/icon_timesheet.png"/>
- <menuitem id="menu_hr_time_tracking" name="My Timesheet" parent="timesheet_menu_root" sequence="5" />
+ <menuitem id="timesheet_menu_root"
+ name="Timesheets"
+ sequence="55"
+ groups="group_hr_timesheet_user"
+ web_icon="hr_timesheet,static/description/icon_timesheet.png"/>
+ <menuitem id="menu_hr_time_tracking"
+ name="Timesheet"
+ parent="timesheet_menu_root"
+ sequence="5"/>
+
+ <!--
+ Timesheet line Views
+ -->
<record id="hr_timesheet_line_tree" model="ir.ui.view">
<field name="name">account.analytic.line.tree.hr_timesheet</field>
<field name="model">account.analytic.line</field>
<field name="arch" type="xml">
- <tree editable="top" string="Timesheet Activities">
+ <tree editable="top" string="Timesheet Activities" import="false">
<field name="date"/>
- <field name="user_id" required="1" options='{"no_open": True}'/>
<field name="name"/>
<field name="project_id" required="1"/>
<field name="task_id" context="{'default_project_id': project_id}" domain="[('project_id', '=', project_id)]"/>
- <field name="unit_amount" string="Duration" sum="Total time" widget="float_time"/>
+ <field name="unit_amount" string="Time (Hours)" sum="Total time" widget="float_time"/>
</tree>
</field>
</record>
+
+ <record id="timesheet_view_tree_user" model="ir.ui.view">
+ <field name="name">account.analytic.line.view.tree.with.user</field>
+ <field name="model">account.analytic.line</field>
+ <field name="inherit_id" ref="hr_timesheet_line_tree"/>
+ <field name="mode">primary</field>
+ <field name="priority">10</field>
+ <field name="arch" type="xml">
+ <xpath expr="//field[@name='date']" position="after">
+ <field name="user_id" required="1" options='{"no_open": True}'/>
+ </xpath>
+ </field>
+ </record>
+
<record id="view_hr_timesheet_line_pivot" model="ir.ui.view">
<field name="name">account.analytic.line.pivot</field>
<field name="model">account.analytic.line</field>
@@ -29,18 +53,58 @@
</pivot>
</field>
</record>
+
<record id="hr_timesheet_line_form" model="ir.ui.view">
- <field name="name">account.analytic.line.form.inherit.hr_timesheet</field>
+ <field name="name">account.analytic.line.form</field>
<field name="model">account.analytic.line</field>
- <field name="inherit_id" ref="analytic.view_account_analytic_line_form"/>
+ <field name="priority">1</field>
+ <field name="inherit_id" eval="False"/>
+ <field name="arch" type="xml">
+ <form string="Analytic Entry">
+ <sheet string="Analytic Entry">
+ <group>
+ <group>
+ <field name="date"/>
+ <field name="name"/>
+ <field name="project_id" required="1"/>
+ <field name="task_id" domain="[('project_id', '=', project_id)]"/>
+ <field name="company_id" groups="base.group_multi_company"/>
+ </group>
+ <group>
+ <field name="amount"/>
+ <field name="unit_amount"/>
+ <field name="currency_id" invisible="1"/>
+ </group>
+ </group>
+ </sheet>
+ </form>
+ </field>
+ </record>
+
+ <record id="timesheet_view_form_user" model="ir.ui.view">
+ <field name="name">account.analytic.line.tree.with.user</field>
+ <field name="model">account.analytic.line</field>
+ <field name="inherit_id" ref="hr_timesheet.hr_timesheet_line_form"/>
<field name="mode">primary</field>
+ <field name="priority">10</field>
<field name="arch" type="xml">
- <field name="account_id" position="after">
- <field name="project_id" required="1"/>
- <field name="task_id" domain="[('project_id', '=', project_id)]"/>
- </field>
+ <xpath expr="//field[@name='company_id']" position="before">
+ <field name="user_id" required="1" options='{"no_open": True}'/>
+ </xpath>
+ </field>
+ </record>
+
+ <record id="timesheet_view_calendar" model="ir.ui.view">
+ <field name="name">account.analytic.line.calendar</field>
+ <field name="model">account.analytic.line</field>
+ <field name="arch" type="xml">
+ <calendar string="Timesheets" date_start="date" color="user_id">
+ <field name="name"/>
+ <field name="project_id"/>
+ </calendar>
</field>
</record>
+
<record id="hr_timesheet_line_search" model="ir.ui.view">
<field name="name">account.analytic.line.search</field>
<field name="model">account.analytic.line</field>
@@ -51,23 +115,39 @@
<field name="project_id"/>
<field name="task_id"/>
<field name="name"/>
- <field name="department_id"/>
+ <filter name="mine" string="My Timesheets" domain="[('user_id', '=', uid)]"/>
+ <separator/>
+ <filter name="week" string="This Week"
+ domain="[
+ '&amp;',
+ ('date', '>=', (context_today() + relativedelta(weeks=-1,days=1,weekday=0)).strftime('%Y-%m-%d')),
+ ('date', '&lt;=', (context_today() + relativedelta(weekday=6)).strftime('%Y-%m-%d')),
+ ]"/>
+ <filter name="month" string="This Month"
+ domain="[
+ '&amp;',
+ ('date', '>=', (context_today() + relativedelta(day=1)).strftime('%Y-%m-%d')),
+ ('date', '&lt;=', (context_today() + relativedelta(months=1, day=1, days=-1)).strftime('%Y-%m-%d')),
+ ]"/>
<group expand="0" string="Group By">
- <filter string="Users" domain="[]" context="{'group_by':'user_id'}"/>
- <filter string="Project" domain="[]" context="{'group_by':'project_id'}"/>
- <filter string="Task" domain="[]" context="{'group_by':'task_id'}"/>
- <filter string="Product" domain="[]" context="{'group_by':'product_id'}"/>
- <filter string="Timesheet Month" domain="[]" context="{'group_by':'date'}" help="Timesheet by Month"/>
+ <filter string="Users" name="groupby_user" domain="[]" context="{'group_by':'user_id'}"/>
+ <filter string="Project" name="groupby_project" domain="[]" context="{'group_by':'project_id'}"/>
+ <filter string="Task" name="groupby_task" domain="[]" context="{'group_by':'task_id'}"/>
+ <filter string="Timesheet Month" name="groupby_date" domain="[]" context="{'group_by':'date'}" help="Timesheet by Month"/>
</group>
</search>
</field>
</record>
+ <!--
+ Menus and Actions
+ -->
<record id="act_hr_timesheet_line" model="ir.actions.act_window">
- <field name="name">Activities</field>
+ <field name="name">My Timesheets</field>
<field name="res_model">account.analytic.line</field>
- <field name="domain">[('project_id', '!=', False)]</field>
- <field name="context">{"search_default_today":1}</field>
+ <field name="view_mode">tree,form</field>
+ <field name="domain">[('project_id', '!=', False), ('user_id', '=', uid)]</field>
+ <field name="context">{"search_default_week":1}</field>
<field name="search_view_id" ref="hr_timesheet_line_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
@@ -80,22 +160,65 @@
</field>
</record>
- <record model="ir.actions.act_window.view" id="act_hr_timesheet_line_view_tree">
+ <record id="act_hr_timesheet_line_view_tree" model="ir.actions.act_window.view">
<field name="view_mode">tree</field>
- <field name="sequence">1</field>
- <field name="view_id" ref="hr_timesheet.hr_timesheet_line_tree"/>
+ <field name="sequence" eval="4"/>
+ <field name="view_id" ref="hr_timesheet_line_tree"/>
<field name="act_window_id" ref="act_hr_timesheet_line"/>
</record>
- <record model="ir.actions.act_window.view" id="act_hr_timesheet_line_view_form">
+ <record id="act_hr_timesheet_line_view_form" model="ir.actions.act_window.view">
<field name="view_mode">form</field>
- <field name="sequence">2</field>
- <field name="view_id" ref="hr_timesheet.hr_timesheet_line_form"/>
+ <field name="sequence" eval="5"/>
+ <field name="view_id" ref="hr_timesheet_line_form"/>
<field name="act_window_id" ref="act_hr_timesheet_line"/>
</record>
- <menuitem id="menu_hr_working_hours" parent="menu_hr_time_tracking" action="act_hr_timesheet_line"
- name="Detailed Activities"/>
+ <record id="timesheet_action_view_calendar" model="ir.actions.act_window.view">
+ <field name="sequence" eval="8"/>
+ <field name="view_mode">calendar</field>
+ <field name="view_id" ref="timesheet_view_calendar"/>
+ <field name="act_window_id" ref="act_hr_timesheet_line"/>
+ </record>
+
+ <menuitem id="timesheet_menu_activity_mine"
+ name="My Timesheets"
+ parent="menu_hr_time_tracking"
+ action="act_hr_timesheet_line"/>
+
+ <record id="timesheet_action_all" model="ir.actions.act_window">
+ <field name="name">All Timesheets</field>
+ <field name="res_model">account.analytic.line</field>
+ <field name="search_view_id" ref="hr_timesheet_line_search"/>
+ <field name="domain">[('project_id', '!=', False)]</field>
+ <field name="context">{'search_default_week':1, 'search_default_groupby_user':1}</field>
+ </record>
+
+ <record id="timesheet_action_view_all_tree" model="ir.actions.act_window.view">
+ <field name="sequence" eval="4"/>
+ <field name="view_mode">tree</field>
+ <field name="view_id" ref="timesheet_view_tree_user"/>
+ <field name="act_window_id" ref="timesheet_action_all"/>
+ </record>
+
+ <record id="timesheet_action_view_all_form" model="ir.actions.act_window.view">
+ <field name="sequence" eval="5"/>
+ <field name="view_mode">form</field>
+ <field name="view_id" ref="timesheet_view_form_user"/>
+ <field name="act_window_id" ref="timesheet_action_all"/>
+ </record>
+
+ <record id="timesheet_action_view_all_calendar" model="ir.actions.act_window.view">
+ <field name="sequence" eval="8"/>
+ <field name="view_mode">calendar</field>
+ <field name="view_id" ref="timesheet_view_calendar"/>
+ <field name="act_window_id" ref="timesheet_action_all"/>
+ </record>
+
+ <menuitem id="timesheet_menu_activity_all"
+ name="All Timesheets"
+ parent="menu_hr_time_tracking"
+ action="timesheet_action_all"/>
</data>
</odoo>
diff --git a/addons/hr_timesheet/report/hr_timesheet_report_view.xml b/addons/hr_timesheet/report/hr_timesheet_report_view.xml
index 1764a44cc8c..66e20b6bfcd 100644
--- a/addons/hr_timesheet/report/hr_timesheet_report_view.xml
+++ b/addons/hr_timesheet/report/hr_timesheet_report_view.xml
@@ -38,10 +38,15 @@
<field name="act_window_id" ref="act_hr_timesheet_report"/>
</record>
+ <menuitem id="menu_timesheets_reports"
+ name="Reporting"
+ parent="timesheet_menu_root"
+ groups="hr_timesheet.group_timesheet_manager"
+ sequence="99"/>
- <menuitem id="menu_timesheets_reports" name="Reporting"
- parent="timesheet_menu_root" sequence="99" groups="hr_timesheet.group_hr_timesheet_user"/>
- <menuitem id="menu_hr_activity_analysis" parent="menu_timesheets_reports" action="act_hr_timesheet_report"
+ <menuitem id="menu_hr_activity_analysis"
+ parent="menu_timesheets_reports"
+ action="act_hr_timesheet_report"
name="Activity Analysis"/>
</data>
</odoo>
diff --git a/addons/hr_timesheet/security/hr_timesheet_security.xml b/addons/hr_timesheet/security/hr_timesheet_security.xml
index 1a95247cf0b..23d20ea4fd4 100644
--- a/addons/hr_timesheet/security/hr_timesheet_security.xml
+++ b/addons/hr_timesheet/security/hr_timesheet_security.xml
@@ -1,13 +1,56 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
- <record id="group_hr_timesheet_user" model="res.groups">
- <field name="name">Officer</field>
- <field name="category_id" ref="base.module_category_hr_timesheet"/>
- <field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/>
- <field name="users" eval="[(4, ref('base.user_root'))]"/>
- </record>
-
- <record id="base.default_user" model="res.users">
- <field name="groups_id" eval="[(4,ref('hr_timesheet.group_hr_timesheet_user'))]"/>
- </record>
+
+ <data noupdate="1">
+
+ <record id="group_hr_timesheet_user" model="res.groups">
+ <field name="name">User</field>
+ <field name="category_id" ref="base.module_category_hr_timesheet"/>
+ <field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/>
+ <field name="users" eval="[(4, ref('base.user_root'))]"/>
+ </record>
+
+ <record id="group_timesheet_manager" model="res.groups">
+ <field name="name">Manager</field>
+ <field name="category_id" ref="base.module_category_hr_timesheet"/>
+ <field name="implied_ids" eval="[(4, ref('group_hr_timesheet_user'))]"/>
+ <field name="users" eval="[(4, ref('base.user_root'))]"/>
+ </record>
+
+ <record id="base.default_user" model="res.users">
+ <field name="groups_id" eval="[(4,ref('group_hr_timesheet_user'))]"/>
+ </record>
+
+ </data>
+
+ <data noupdate="0">
+ <!-- This rule is in noupdate mode because it can be modify by other advanced modules -->
+ <record id="timesheet_line_rule_user" model="ir.rule">
+ <field name="name">account.analytic.line.timesheet.user</field>
+ <field name="model_id" ref="analytic.model_account_analytic_line"/>
+ <field name="domain_force">[('user_id', '=', user.id), ('project_id', '!=', False)]</field>
+ <field name="groups" eval="[(4, ref('group_hr_timesheet_user'))]"/>
+ <field name="perm_create" eval="1"/>
+ <field name="perm_write" eval="1"/>
+ <field name="perm_unlink" eval="1"/>
+ <field name="perm_read" eval="0"/>
+ </record>
+
+ </data>
+
+ <data noupdate="1">
+
+ <record id="timesheet_line_rule_manager" model="ir.rule">
+ <field name="name">account.analytic.line.timesheet.manager</field>
+ <field name="model_id" ref="analytic.model_account_analytic_line"/>
+ <field name="domain_force">[('project_id', '!=', False)]</field>
+ <field name="groups" eval="[(4, ref('group_timesheet_manager'))]"/>
+ <field name="perm_create" eval="1"/>
+ <field name="perm_write" eval="1"/>
+ <field name="perm_unlink" eval="1"/>
+ <field name="perm_read" eval="1"/>
+ </record>
+
+ </data>
+
</odoo> \ No newline at end of file
diff --git a/addons/hr_timesheet/security/ir.model.access.csv b/addons/hr_timesheet/security/ir.model.access.csv
index 61f85fb401e..e9f8ce09b30 100644
--- a/addons/hr_timesheet/security/ir.model.access.csv
+++ b/addons/hr_timesheet/security/ir.model.access.csv
@@ -1,6 +1,8 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
-access_hr_account_analytic_line,analytic.account.analytic.line,analytic.model_account_analytic_line,hr_timesheet.group_hr_timesheet_user,1,1,1,1
-access_hr_account_analytic_line_employee,analytic.account.analytic.line employee,analytic.model_account_analytic_line,base.group_user,1,1,1,1
-access_product_product_user,product.product user,product.model_product_product,hr_timesheet.group_hr_timesheet_user,1,1,1,1
-access_product_template_hr_timesheet,product.template.hr.timesheet,product.model_product_template,hr_timesheet.group_hr_timesheet_user,1,1,1,1
-access_product_uom_hr_timesheet,product.uom.hr.timesheet,product.model_product_uom,hr_timesheet.group_hr_timesheet_user,1,1,1,1
+access_account_analytic_line_user,analytic.account.analytic.line.timesheet.user,analytic.model_account_analytic_line,hr_timesheet.group_hr_timesheet_user,1,1,1,1
+access_account_analytic_user,analytic.account.analytic.timesheet.user,analytic.model_account_analytic_account,hr_timesheet.group_hr_timesheet_user,1,1,0,0
+access_product_product_user,product.product.timesheet.user,product.model_product_product,hr_timesheet.group_hr_timesheet_user,1,1,1,0
+access_product_template_timesheet_user,product.template.timesheet.user,product.model_product_template,hr_timesheet.group_hr_timesheet_user,1,1,1,0
+access_product_uom_hr_timesheet,product.uom.timesheet.user,product.model_product_uom,hr_timesheet.group_hr_timesheet_user,1,0,0,0
+access_project_project,project.project.timesheet.user,model_project_project,hr_timesheet.group_hr_timesheet_user,1,0,0,0
+access_project_task,project.task.timesheet.user,model_project_task,hr_timesheet.group_hr_timesheet_user,1,1,0,0 \ No newline at end of file