[IMP] hr_*: Split the HR access rights by application

PURPOSE
=======

For each and every Hr application there should be one user category (One app = one category).

SPECIFICATION
=============

HR remains as it is : Employee, Officer, Manager

Each Application should have 2 access rights: User and Manager. Example for Recruitment:
- The user has access to the recruitment process
- The manager has access to the job position configuration

Each Application should grant the employee user access right (Namely the 'HR Officer')
This commit is contained in:
Yannick Tivisse
2016-09-06 14:35:09 +02:00
parent 93cc51a10b
commit 7fa2691175
55 changed files with 317 additions and 153 deletions
+2 -2
View File
@@ -20,8 +20,8 @@ class HrEmployee(models.Model):
barcode = "".join(choice(digits) for i in range(8))
return barcode
barcode = fields.Char(string="Badge ID", help="ID used for employee identification.", default=_default_random_barcode, copy=False, groups='hr.group_hr_user')
pin = fields.Char(string="PIN", default=_default_random_pin, help="PIN used for Check In/Out in Attendance.", copy=False, groups='hr.group_hr_user')
barcode = fields.Char(string="Badge ID", help="ID used for employee identification.", default=_default_random_barcode, copy=False, groups='hr_attendance.group_hr_attendance_user')
pin = fields.Char(string="PIN", default=_default_random_pin, help="PIN used for Check In/Out in Attendance.", copy=False, groups='hr_attendance.group_hr_attendance_user')
attendance_ids = fields.One2many('hr.attendance', 'employee_id', help='list of attendances for the employee')
last_attendance_id = fields.Many2one('hr.attendance', compute='_compute_last_attendance_id')
@@ -1,11 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="hr.group_hr_manager" model="res.groups">
<record id="group_hr_attendance_user" model="res.groups">
<field name="name">Officer</field>
<field name="category_id" ref="base.module_category_hr_attendance"/>
<field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/>
</record>
<record id="group_hr_attendance_manager" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="base.module_category_hr_attendance"/>
<field name="implied_ids" eval="[(4, ref('hr_attendance.group_hr_attendance_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_attendance.group_hr_attendance_manager'))]"/>
</record>
<record id="hr_attendance.group_hr_attendance_manager" model="res.groups">
<field name="implied_ids" eval="[(4, ref('hr.group_hr_attendance'))]"/>
</record>
<record id="hr.group_hr_user" model="res.groups">
<record id="hr_attendance.group_hr_attendance_user" model="res.groups">
<field name="implied_ids" eval="[(4, ref('hr.group_hr_attendance'))]"/>
</record>
@@ -26,7 +43,7 @@
<field name="name">attendance officer: full access</field>
<field name="model_id" ref="model_hr_attendance"/>
<field name="domain_force">[(1,'=',1)]</field>
<field name="groups" eval="[(4,ref('hr.group_hr_user'))]"/>
<field name="groups" eval="[(4,ref('hr_attendance.group_hr_attendance_user'))]"/>
</record>
<record id="hr_attendance_rule_attendance_employee" model="ir.rule">
@@ -1,3 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_attendance_user,hr.attendance.user,model_hr_attendance,hr.group_hr_user,1,1,1,1
access_hr_attendance_user,hr.attendance.user,model_hr_attendance,hr_attendance.group_hr_attendance_user,1,1,1,1
access_hr_attendance_system_user,hr.attendance.system.user,model_hr_attendance,base.group_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_attendance_user hr.attendance.user model_hr_attendance hr.group_hr_user hr_attendance.group_hr_attendance_user 1 1 1 1
3 access_hr_attendance_system_user hr.attendance.system.user model_hr_attendance base.group_user 1 1 1 0
@@ -20,7 +20,7 @@ var Message = Widget.extend({
var self = this;
var default_action = { type: "ir.actions.client", name: 'Attendances', tag: 'hr_attendance_my_main_menu', params: {} };
if(!action.attendance){
self.session.user_has_group('hr.group_hr_user').then(function(has_group){
self.session.user_has_group('hr_attendance.group_hr_attendance_user').then(function(has_group){
if(has_group){
self.next_action = { type: "ir.actions.client", name: 'Attendances', tag: 'hr_attendance_main_menu', target: 'fullscreen', params: {} };
}
@@ -132,13 +132,13 @@
<menuitem id="menu_hr_attendance_my_attendances" name="My Attendances" parent="menu_hr_attendance_root" sequence="10" groups="hr.group_hr_attendance" action="hr_attendance_action_my_main_menu"/>
<menuitem id="menu_hr_attendance_manage_attendances" name="Manage Attendances" parent="menu_hr_attendance_root" sequence="20" groups="hr.group_hr_user"/>
<menuitem id="menu_hr_attendance_manage_attendances" name="Manage Attendances" parent="menu_hr_attendance_root" sequence="20" groups="hr_attendance.group_hr_attendance_user"/>
<menuitem id="menu_hr_attendance_view_attendances" name="Attendances" parent="menu_hr_attendance_manage_attendances" sequence="10" groups="hr.group_hr_user" action="hr_attendance_action"/>
<menuitem id="menu_hr_attendance_view_attendances" name="Attendances" parent="menu_hr_attendance_manage_attendances" sequence="10" groups="hr_attendance.group_hr_attendance_user" action="hr_attendance_action"/>
<menuitem id="menu_hr_attendance_view_employees_kanban" name="Employees" parent="menu_hr_attendance_manage_attendances" sequence="15" groups="hr.group_hr_user" action="hr.open_view_employee_list_my"/>
<menuitem id="menu_hr_attendance_view_employees_kanban" name="Employees" parent="menu_hr_attendance_manage_attendances" sequence="15" groups="hr_attendance.group_hr_attendance_user" action="hr.open_view_employee_list_my"/>
<menuitem id="menu_hr_attendance_Kiosk_mode" name="Kiosk Mode" parent="menu_hr_attendance_manage_attendances" sequence="20" groups="hr.group_hr_user" action="hr_attendance_action_main_menu"/>
<menuitem id="menu_hr_attendance_Kiosk_mode" name="Kiosk Mode" parent="menu_hr_attendance_manage_attendances" sequence="20" groups="hr_attendance.group_hr_attendance_user" action="hr_attendance_action_main_menu"/>
<menuitem id="menu_hr_attendance_report" name="Reports" parent="menu_hr_attendance_root" sequence="30" groups="hr.group_hr_user" action="hr_attendance_action_graph"/>
<menuitem id="menu_hr_attendance_report" name="Reports" parent="menu_hr_attendance_root" sequence="30" groups="hr_attendance.group_hr_attendance_user" action="hr_attendance_action_graph"/>
</odoo>
@@ -5,6 +5,7 @@
<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="groups_id" eval="[(4,ref('hr_attendance.group_hr_attendance_user'))]"/>
<field name="arch" type="xml">
<data>
@@ -13,9 +13,9 @@
</div>
</field>
<field name="user_id" position="after">
<field name="barcode" groups="hr.group_hr_user"/>
<field name="pin" groups="hr.group_hr_user,hr_attendance.group_hr_attendance_use_pin"/>
<field name="manual_attendance" groups="hr.group_hr_user"/>
<field name="barcode" groups="hr_attendance.group_hr_attendance_user"/>
<field name="pin" groups="hr_attendance.group_hr_attendance_user,hr_attendance.group_hr_attendance_use_pin"/>
<field name="manual_attendance" groups="hr_attendance.group_hr_attendance_user"/>
</field>
</field>
</record>
@@ -26,5 +26,5 @@
</record>
<menuitem id="hr_attendance.menu_hr_attendance_settings" name="Configuration" parent="menu_hr_attendance_root"
sequence="99" action="action_hr_attendance_settings" groups="hr.group_hr_manager"/>
sequence="99" action="action_hr_attendance_settings" groups="hr_attendance.group_hr_attendance_manager"/>
</odoo>
+1
View File
@@ -28,6 +28,7 @@ This module also uses analytic accounting and is compatible with the invoice on
'website': 'https://www.odoo.com/page/expenses',
'depends': ['hr_contract', 'account_accountant', 'report', 'web_tour'],
'data': [
'security/hr_expense_security.xml',
'security/ir.model.access.csv',
'data/hr_expense_data.xml',
'data/hr_expense_sequence.xml',
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="group_hr_expense_user" model="res.groups">
<field name="name">Officer</field>
<field name="category_id" ref="base.module_category_hr_expense"/>
<field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/>
</record>
<record id="group_hr_expense_manager" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="base.module_category_hr_expense"/>
<field name="implied_ids" eval="[(4, ref('hr_expense.group_hr_expense_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_expense.group_hr_expense_manager'))]"/>
</record>
</odoo>
+12 -12
View File
@@ -1,17 +1,17 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_expense_user,hr.expense.user,model_hr_expense,hr.group_hr_user,1,1,1,1
access_hr_expense_user,hr.expense.user,model_hr_expense,hr_expense.group_hr_expense_user,1,1,1,1
access_hr_expense_employee,hr.expense.employee,model_hr_expense,base.group_user,1,1,1,1
access_hr_expense_sheet_user,hr.expense.sheet.user,model_hr_expense_sheet,hr.group_hr_user,1,1,1,1
access_hr_expense_sheet_user,hr.expense.sheet.user,model_hr_expense_sheet,hr_expense.group_hr_expense_user,1,1,1,1
access_hr_expense_sheet_employee,hr.expense.sheet.employee,model_hr_expense_sheet,base.group_user,1,1,1,1
access_product_product_hr_expense_user,product.product.hr.expense.user,product.model_product_product,hr.group_hr_user,1,1,1,1
access_product_template_hr_expense_user,product.template.hr.expense.user,product.model_product_template,hr.group_hr_user,1,1,1,1
access_product_uom_hr_expense_user,product.uom.hr.expense.user,product.model_product_uom,hr.group_hr_user,1,1,1,1
access_account_journal_user,account.journal.user,account.model_account_journal,hr.group_hr_user,1,1,1,1
access_product_product_hr_expense_user,product.product.hr.expense.user,product.model_product_product,hr_expense.group_hr_expense_user,1,1,1,1
access_product_template_hr_expense_user,product.template.hr.expense.user,product.model_product_template,hr_expense.group_hr_expense_user,1,1,1,1
access_product_uom_hr_expense_user,product.uom.hr.expense.user,product.model_product_uom,hr_expense.group_hr_expense_user,1,1,1,1
access_account_journal_user,account.journal.user,account.model_account_journal,hr_expense.group_hr_expense_user,1,1,1,1
access_account_journal_employee,account.journal.employee,account.model_account_journal,base.group_user,1,0,0,0
access_account_invoice_user,account.invoice.user,account.model_account_invoice,hr.group_hr_user,1,1,1,1
access_account_invoice_line_user,account.invoice.line.user,account.model_account_invoice_line,hr.group_hr_user,1,1,1,1
access_account_invoice_tax_user,account.invoice.tax.user,account.model_account_invoice_tax,hr.group_hr_user,1,0,0,0
access_account_move_user,account.move.user,account.model_account_move,hr.group_hr_user,1,0,0,0
access_account_move_line_user,account.move.line.user,account.model_account_move_line,hr.group_hr_user,1,0,0,0
access_account_analytic_line_user,account.analytic.line.user,account.model_account_analytic_line,hr.group_hr_user,1,1,1,1
access_account_invoice_user,account.invoice.user,account.model_account_invoice,hr_expense.group_hr_expense_user,1,1,1,1
access_account_invoice_line_user,account.invoice.line.user,account.model_account_invoice_line,hr_expense.group_hr_expense_user,1,1,1,1
access_account_invoice_tax_user,account.invoice.tax.user,account.model_account_invoice_tax,hr_expense.group_hr_expense_user,1,0,0,0
access_account_move_user,account.move.user,account.model_account_move,hr_expense.group_hr_expense_user,1,0,0,0
access_account_move_line_user,account.move.line.user,account.model_account_move_line,hr_expense.group_hr_expense_user,1,0,0,0
access_account_analytic_line_user,account.analytic.line.user,account.model_account_analytic_line,hr_expense.group_hr_expense_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_expense_user hr.expense.user model_hr_expense hr.group_hr_user hr_expense.group_hr_expense_user 1 1 1 1
3 access_hr_expense_employee hr.expense.employee model_hr_expense base.group_user 1 1 1 1
4 access_hr_expense_sheet_user hr.expense.sheet.user model_hr_expense_sheet hr.group_hr_user hr_expense.group_hr_expense_user 1 1 1 1
5 access_hr_expense_sheet_employee hr.expense.sheet.employee model_hr_expense_sheet base.group_user 1 1 1 1
6 access_product_product_hr_expense_user product.product.hr.expense.user product.model_product_product hr.group_hr_user hr_expense.group_hr_expense_user 1 1 1 1
7 access_product_template_hr_expense_user product.template.hr.expense.user product.model_product_template hr.group_hr_user hr_expense.group_hr_expense_user 1 1 1 1
8 access_product_uom_hr_expense_user product.uom.hr.expense.user product.model_product_uom hr.group_hr_user hr_expense.group_hr_expense_user 1 1 1 1
9 access_account_journal_user account.journal.user account.model_account_journal hr.group_hr_user hr_expense.group_hr_expense_user 1 1 1 1
10 access_account_journal_employee account.journal.employee account.model_account_journal base.group_user 1 0 0 0
11 access_account_invoice_user account.invoice.user account.model_account_invoice hr.group_hr_user hr_expense.group_hr_expense_user 1 1 1 1
12 access_account_invoice_line_user account.invoice.line.user account.model_account_invoice_line hr.group_hr_user hr_expense.group_hr_expense_user 1 1 1 1
13 access_account_invoice_tax_user account.invoice.tax.user account.model_account_invoice_tax hr.group_hr_user hr_expense.group_hr_expense_user 1 0 0 0
14 access_account_move_user account.move.user account.model_account_move hr.group_hr_user hr_expense.group_hr_expense_user 1 0 0 0
15 access_account_move_line_user account.move.line.user account.model_account_move_line hr.group_hr_user hr_expense.group_hr_expense_user 1 0 0 0
16 access_account_analytic_line_user account.analytic.line.user account.model_account_analytic_line hr.group_hr_user hr_expense.group_hr_expense_user 1 1 1 1
17
+1 -1
View File
@@ -6,7 +6,7 @@
<field name="name">Manager Expense</field>
<field name="model_id" ref="model_hr_expense"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('account.group_account_user')), (4, ref('hr.group_hr_manager')), (4, ref('hr.group_hr_user'))]"/>
<field name="groups" eval="[(4, ref('account.group_account_user')), (4, ref('hr_expense.group_hr_expense_manager')), (4, ref('hr_expense.group_hr_expense_user'))]"/>
</record>
<record id="property_rule_expense_employee" model="ir.rule">
<field name="name">Employee Expense</field>
+1
View File
@@ -4,6 +4,7 @@
<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="groups_id" eval="[(4,ref('hr_expense.group_hr_expense_user'))]"/>
<field name="arch" type="xml">
<data>
<xpath expr="//templates" position="before">
+11 -11
View File
@@ -166,7 +166,7 @@
<filter domain="[('state', '=', 'refused')]" string="Refused" name="refused" help="Refused Expenses"/>
<filter domain="[('state', '!=', 'cancel')]" string="Not Refused" name="uncancelled" help="Actual expense sheets, not the refused ones"/>
<separator />
<filter string="My Team Expenses" domain="[('employee_id.parent_id.user_id', '=', uid)]" groups="hr.group_hr_manager" help="Expenses of Your Team Member"/>
<filter string="My Team Expenses" domain="[('employee_id.parent_id.user_id', '=', uid)]" groups="hr_expense.group_hr_expense_manager" help="Expenses of Your Team Member"/>
<filter string="My Expenses" domain="[('employee_id.user_id', '=', uid)]"/>
<separator />
<filter string="New Mail" name="message_unread" domain="[('message_unread', '=', True)]"/>
@@ -180,7 +180,7 @@
<filter string="Status" domain="[]" context="{'group_by': 'state'}"/>
</group>
<separator />
<filter domain="[('employee_id.active', '=', False)]" string="Former Employees" name="inactive" groups="hr.group_hr_user,hr.group_hr_manager"/>
<filter domain="[('employee_id.active', '=', False)]" string="Former Employees" name="inactive" groups="hr_expense.group_hr_expense_user,hr_expense.group_hr_expense_manager"/>
</search>
</field>
</record>
@@ -406,11 +406,11 @@
<field name="arch" type="xml">
<form string="Expense Reports" class="o_expense_sheet">
<header>
<button name="approve_expense_sheets" states="submit" string="Approve" type="object" groups="hr.group_hr_user" class="oe_highlight o_expense_sheet_approve"/>
<button name="approve_expense_sheets" states="submit" string="Approve" type="object" groups="hr_expense.group_hr_expense_user" class="oe_highlight o_expense_sheet_approve"/>
<button name="action_sheet_move_create" states="approve" string="Post Journal Entries" type="object" groups="account.group_account_user" class="oe_highlight o_expense_sheet_post"/>
<button name="%(hr_expense.hr_expense_register_payment_wizard_action)d" type="action" string="Register Payment" class="oe_highlight o_expense_sheet_pay" attrs="{'invisible': [('state', '!=', 'post')]}" context="{'default_amount': total_amount, 'partner_id': address_id}" groups="account.group_account_user"/>
<button name="reset_expense_sheets" states="cancel" string="Resubmit" type="object"/>
<button name="%(hr_expense.hr_expense_refuse_wizard_action)d" states="submit" string="Refuse" type="action" groups="hr.group_hr_user" />
<button name="%(hr_expense.hr_expense_refuse_wizard_action)d" states="submit" string="Refuse" type="action" groups="hr_expense.group_hr_expense_user" />
<button name="%(hr_expense.hr_expense_refuse_wizard_action)d" states="approve" string="Refuse" type="action" groups="account.group_account_user"/>
<field name="state" widget="statusbar" statusbar_visible="draft,submit,approve,post,done"/>
</header>
@@ -549,7 +549,7 @@
<filter domain="[('state', '=', 'approve')]" string="To Post" name="to_post" help="Approved Expenses"/>
<filter domain="['|', ('state', '=', 'approve'), ('state', '=', 'post')]" string="To Pay" name="approved" help="Expenses to Invoice"/>
<separator/>
<filter string="My Team Reports" domain="[('employee_id.parent_id.user_id', '=', uid)]" groups="hr.group_hr_manager" help="Expenses of Your Team Member"/>
<filter string="My Team Reports" domain="[('employee_id.parent_id.user_id', '=', uid)]" groups="hr_expense.group_hr_expense_manager" help="Expenses of Your Team Member"/>
<filter string="My Reports" domain="[('employee_id.user_id', '=', uid)]"/>
<separator />
<filter string="New Mail" name="message_unread" domain="[('message_unread', '=', True)]"/>
@@ -561,7 +561,7 @@
<filter string="State" domain="[]" context="{'group_by': 'state'}" name="state"/>
</group>
<separator />
<filter domain="[('employee_id.active', '=', False)]" string="Former Employees" name="inactive" groups="hr.group_hr_user,hr.group_hr_manager"/>
<filter domain="[('employee_id.active', '=', False)]" string="Former Employees" name="inactive" groups="hr_expense.group_hr_expense_user,hr_expense.group_hr_expense_manager"/>
</search>
</field>
</record>
@@ -748,23 +748,23 @@
<menuitem id="menu_hr_expense_my_expenses_refused" name="Refused Expenses" sequence="2" parent="menu_hr_expense_my_expenses" action="action_hr_expense_refused_expenses"/>
<menuitem id="menu_hr_expense_sheet_my_reports" name="Expense Reports" sequence="3" parent="menu_hr_expense_my_expenses" action="action_hr_expense_sheet_my_all" load_xmlid="True"/>
<menuitem id="menu_hr_expense_to_approve" name="To Approve" sequence="2" parent="menu_hr_expense_root" groups="hr.group_hr_user"/>
<menuitem id="menu_hr_expense_to_approve" name="To Approve" sequence="2" parent="menu_hr_expense_root" groups="hr_expense.group_hr_expense_user"/>
<menuitem id="menu_hr_expense_sheet_all_to_approve" name="Expense Reports To Approve" sequence="1" parent="menu_hr_expense_to_approve"
action="action_hr_expense_sheet_all_to_approve"/>
<menuitem id="menu_hr_expense_accountant" name="Accountant" sequence="3" parent="menu_hr_expense_root" groups="hr.group_hr_manager"/>
<menuitem id="menu_hr_expense_accountant" name="Accountant" sequence="3" parent="menu_hr_expense_root" groups="hr_expense.group_hr_expense_manager"/>
<menuitem id="menu_hr_expense_sheet_all_to_post" name="Expense Reports To Post" sequence="2" parent="menu_hr_expense_accountant"
action="action_hr_expense_sheet_all_to_post"/>
<menuitem id="menu_hr_expense_sheet_all_to_pay" name="Expense Reports To Pay" sequence="3" parent="menu_hr_expense_accountant"
action="action_hr_expense_sheet_all_to_pay"/>
<menuitem id="menu_hr_expense_reports" name="Reports" sequence="4" parent="menu_hr_expense_root" groups="hr.group_hr_manager"/>
<menuitem id="menu_hr_expense_reports" name="Reports" sequence="4" parent="menu_hr_expense_root" groups="hr_expense.group_hr_expense_manager"/>
<menuitem id="menu_hr_expense_all_expenses" name="All Expenses" sequence="0" parent="menu_hr_expense_reports" action="hr_expense_actions_all"/>
<menuitem id="menu_hr_expense_sheet_all_all" name="All Expense Reports" sequence="4" parent="menu_hr_expense_reports"
action="action_hr_expense_sheet_all_all" groups="hr.group_hr_manager"/>
action="action_hr_expense_sheet_all_all" groups="hr_expense.group_hr_expense_manager"/>
<menuitem id="menu_hr_expense_configuration" name="Configuration" parent="menu_hr_expense_root"
sequence="100"/>
<menuitem id="menu_hr_product" name="Expense Products" parent="menu_hr_expense_configuration"
action="hr_expense_product" groups="hr.group_hr_manager" sequence="10"/>
action="hr_expense_product" groups="hr_expense.group_hr_expense_manager" sequence="10"/>
</odoo>
+1 -1
View File
@@ -13,8 +13,8 @@ This allow the user to send badges to employees instead of simple users.
Badge received are displayed on the user profile.
""",
'data': [
'security/ir.model.access.csv',
'security/gamification_security.xml',
'security/ir.model.access.csv',
'wizard/gamification_badge_user_wizard_views.xml',
'views/gamification_views.xml',
'views/hr_employee_views.xml',
@@ -2,4 +2,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
challenge_officer,"Challenge Officer",gamification.model_gamification_challenge,hr.group_hr_user,1,1,1,1
challenge_line_officer,"Challenge Line Officer",gamification.model_gamification_challenge_line,hr.group_hr_user,1,1,1,1
badge_officer,"Badge Officer",gamification.model_gamification_badge,hr.group_hr_user,1,1,1,1
badge_user_officer,"Badge-user Officer",gamification.model_gamification_badge_user,hr.group_hr_user,1,1,1,1
badge_user_officer,"Badge-user Officer",gamification.model_gamification_badge_user,hr.group_hr_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 challenge_officer Challenge Officer gamification.model_gamification_challenge hr.group_hr_user 1 1 1 1
3 challenge_line_officer Challenge Line Officer gamification.model_gamification_challenge_line hr.group_hr_user 1 1 1 1
4 badge_officer Badge Officer gamification.model_gamification_badge hr.group_hr_user 1 1 1 1
5 badge_user_officer Badge-user Officer gamification.model_gamification_badge_user hr.group_hr_user 1 1 1 1 1
+1 -1
View File
@@ -29,8 +29,8 @@ A synchronization with an internal agenda (Meetings of the CRM module) is also p
'data/report_paperformat.xml',
'data/hr_holidays_data.xml',
'security/ir.model.access.csv',
'security/hr_holidays_security.xml',
'security/ir.model.access.csv',
'views/resource_views.xml',
'views/hr_holidays_views.xml',
+1 -1
View File
@@ -176,7 +176,7 @@ class Employee(models.Model):
@api.multi
def _compute_show_leaves(self):
show_leaves = self.env['res.users'].has_group('hr.group_hr_user')
show_leaves = self.env['res.users'].has_group('hr_holidays.group_hr_holidays_user')
for employee in self:
if show_leaves or employee.user_id == self.env.user:
employee.show_leaves = True
+10 -10
View File
@@ -224,7 +224,7 @@ class Holidays(models.Model):
or if he is an Hr Manager.
"""
user = self.env.user
group_hr_manager = self.env.ref('hr.group_hr_manager')
group_hr_manager = self.env.ref('hr_holidays.group_hr_holidays_manager')
for holiday in self:
if group_hr_manager in user.groups_id or holiday.employee_id and holiday.employee_id.user_id == user:
holiday.can_reset = True
@@ -332,7 +332,7 @@ class Holidays(models.Model):
return res
def _check_state_access_right(self, vals):
if vals.get('state') and vals['state'] not in ['draft', 'confirm', 'cancel'] and not self.env['res.users'].has_group('hr.group_hr_user'):
if vals.get('state') and vals['state'] not in ['draft', 'confirm', 'cancel'] and not self.env['res.users'].has_group('hr_holidays.group_hr_holidays_user'):
return False
return True
@@ -436,7 +436,7 @@ class Holidays(models.Model):
def action_approve(self):
# if double_validation: this method is the first approval approval
# if not double_validation: this method calls action_validate() below
if not self.env.user.has_group('hr.group_hr_user'):
if not self.env.user.has_group('hr_holidays.group_hr_holidays_user'):
raise UserError(_('Only an HR Officer or Manager can approve leave requests.'))
manager = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
@@ -451,14 +451,14 @@ class Holidays(models.Model):
@api.multi
def action_validate(self):
if not self.env.user.has_group('hr.group_hr_user'):
if not self.env.user.has_group('hr_holidays.group_hr_holidays_user'):
raise UserError(_('Only an HR Officer or Manager can approve leave requests.'))
manager = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
for holiday in self:
if holiday.state not in ['confirm', 'validate1']:
raise UserError(_('Leave request must be confirmed in order to approve it.'))
if holiday.state == 'validate1' and not holiday.env.user.has_group('hr.group_hr_manager'):
if holiday.state == 'validate1' and not holiday.env.user.has_group('hr_holidays.group_hr_holidays_manager'):
raise UserError(_('Only an HR Manager can apply the second approval on leave requests.'))
holiday.write({'state': 'validate'})
@@ -510,7 +510,7 @@ class Holidays(models.Model):
@api.multi
def action_refuse(self):
if not self.env.user.has_group('hr.group_hr_user'):
if not self.env.user.has_group('hr_holidays.group_hr_holidays_user'):
raise UserError(_('Only an HR Officer or Manager can refuse leave requests.'))
manager = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1)
@@ -556,12 +556,12 @@ class Holidays(models.Model):
recipients. Indeed those will have specific action in their notification
emails.
"""
group_hr_user = self.env.ref('hr.group_hr_user')
group_hr_holidays_user = self.env.ref('hr_holidays.group_hr_holidays_user')
for recipient in recipients:
if recipient.id in done_ids:
continue
if recipient.user_ids and group_hr_user in recipient.user_ids[0].groups_id:
group_data['group_hr_user'] |= recipient
if recipient.user_ids and group_hr_holidays_user in recipient.user_ids[0].groups_id:
group_data['group_hr_holidays_user'] |= recipient
done_ids.add(recipient.id)
return super(Holidays, self)._notification_group_recipients(message, recipients, done_ids, group_data)
@@ -578,7 +578,7 @@ class Holidays(models.Model):
if self.state in ['confirm', 'validate', 'validate1']:
actions.append({'url': ref_action, 'title': 'Refuse'})
result['group_hr_user'] = {
result['group_hr_holidays_user'] = {
'actions': actions
}
return result
@@ -1,5 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="group_hr_holidays_user" model="res.groups">
<field name="name">Officer</field>
<field name="category_id" ref="base.module_category_hr_holidays"/>
<field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/>
</record>
<record id="group_hr_holidays_manager" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="base.module_category_hr_holidays"/>
<field name="implied_ids" eval="[(4, ref('hr_holidays.group_hr_holidays_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_holidays.group_hr_holidays_manager'))]"/>
</record>
<record id="property_rule_holidays_employee" model="ir.rule">
<field name="name">Employee Holidays</field>
<field name="model_id" ref="model_hr_holidays"/>
@@ -22,14 +39,14 @@
<field name="name">Holidays Officer</field>
<field name="model_id" ref="model_hr_holidays"/>
<field name="domain_force">[(1,'=',1)]</field>
<field name="groups" eval="[(4,ref('hr.group_hr_user'))]"/>
<field name="groups" eval="[(4,ref('hr_holidays.group_hr_holidays_user'))]"/>
</record>
<record id="resource_leaves_officer" model="ir.rule">
<field name="name">Leaves Officer</field>
<field name="model_id" ref="model_resource_calendar_leaves"/>
<field name="domain_force">[(1,'=',1)]</field>
<field name="groups" eval="[(4,ref('hr.group_hr_user'))]"/>
<field name="groups" eval="[(4,ref('hr_holidays.group_hr_holidays_user'))]"/>
</record>
<record id="hr_holidays_status_rule_multi_company" model="ir.rule">
@@ -1,10 +1,10 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_holidays_user,hr.holidays.user,model_hr_holidays,hr.group_hr_user,1,1,1,1
access_hr_holidays_user,hr.holidays.user,model_hr_holidays,hr_holidays.group_hr_holidays_user,1,1,1,1
access_hr_holidays_employee,hr.holidays.employee,model_hr_holidays,base.group_user,1,1,1,1
access_hr_holydays_status_employee,hr.holidays.status employee,model_hr_holidays_status,base.group_user,1,0,0,0
access_hr_holydays_status_manager,hr.holidays.status manager,model_hr_holidays_status,hr.group_hr_manager,1,1,1,1
access_hr_holidays_remain_user,hr.holidays.ramain.user,model_hr_holidays_remaining_leaves_user,hr.group_hr_user,1,1,1,1
access_resource_calendar_leaves_user,resource_calendar_leaves_user,resource.model_resource_calendar_leaves,hr.group_hr_user,1,1,1,1
access_calendar_event_hr_user,calendar.event.hr.user,calendar.model_calendar_event,hr.group_hr_user,1,1,1,1
access_calendar_event_type_manager,calendar.event.type.manager,calendar.model_calendar_event_type,hr.group_hr_manager,1,1,1,1
access_calendar_attendee_hr_user,calendar.attendee.hr.user,calendar.model_calendar_attendee,hr.group_hr_user,1,1,1,1
access_hr_holydays_status_manager,hr.holidays.status manager,model_hr_holidays_status,hr_holidays.group_hr_holidays_manager,1,1,1,1
access_hr_holidays_remain_user,hr.holidays.ramain.user,model_hr_holidays_remaining_leaves_user,hr_holidays.group_hr_holidays_user,1,1,1,1
access_resource_calendar_leaves_user,resource_calendar_leaves_user,resource.model_resource_calendar_leaves,hr_holidays.group_hr_holidays_user,1,1,1,1
access_calendar_event_hr_user,calendar.event.hr.user,calendar.model_calendar_event,hr_holidays.group_hr_holidays_user,1,1,1,1
access_calendar_event_type_manager,calendar.event.type.manager,calendar.model_calendar_event_type,hr_holidays.group_hr_holidays_manager,1,1,1,1
access_calendar_attendee_hr_user,calendar.attendee.hr.user,calendar.model_calendar_attendee,hr_holidays.group_hr_holidays_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_holidays_user hr.holidays.user model_hr_holidays hr.group_hr_user hr_holidays.group_hr_holidays_user 1 1 1 1
3 access_hr_holidays_employee hr.holidays.employee model_hr_holidays base.group_user 1 1 1 1
4 access_hr_holydays_status_employee hr.holidays.status employee model_hr_holidays_status base.group_user 1 0 0 0
5 access_hr_holydays_status_manager hr.holidays.status manager model_hr_holidays_status hr.group_hr_manager hr_holidays.group_hr_holidays_manager 1 1 1 1
6 access_hr_holidays_remain_user hr.holidays.ramain.user model_hr_holidays_remaining_leaves_user hr.group_hr_user hr_holidays.group_hr_holidays_user 1 1 1 1
7 access_resource_calendar_leaves_user resource_calendar_leaves_user resource.model_resource_calendar_leaves hr.group_hr_user hr_holidays.group_hr_holidays_user 1 1 1 1
8 access_calendar_event_hr_user calendar.event.hr.user calendar.model_calendar_event hr.group_hr_user hr_holidays.group_hr_holidays_user 1 1 1 1
9 access_calendar_event_type_manager calendar.event.type.manager calendar.model_calendar_event_type hr.group_hr_manager hr_holidays.group_hr_holidays_manager 1 1 1 1
10 access_calendar_attendee_hr_user calendar.attendee.hr.user calendar.model_calendar_attendee hr.group_hr_user hr_holidays.group_hr_holidays_user 1 1 1 1
+2 -2
View File
@@ -19,13 +19,13 @@ class TestHrHolidaysBase(common.TransactionCase):
'name': 'Armande HrUser',
'login': 'Armande',
'email': 'armande.hruser@example.com',
'groups_id': [(6, 0, [group_employee_id, self.ref('hr.group_hr_user')])]
'groups_id': [(6, 0, [group_employee_id, self.ref('hr_holidays.group_hr_holidays_user')])]
}).id
self.user_hrmanager_id = Users.create({
'name': 'Bastien HrManager',
'login': 'bastien',
'email': 'bastien.hrmanager@example.com',
'groups_id': [(6, 0, [group_employee_id, self.ref('hr.group_hr_manager')])]
'groups_id': [(6, 0, [group_employee_id, self.ref('hr_holidays.group_hr_holidays_manager')])]
}).id
self.user_employee_id = Users.create({
'name': 'David Employee',
+21 -21
View File
@@ -29,9 +29,9 @@
<filter string="Unread Messages" name="message_needaction" domain="[('message_needaction','=',True)]"/>
<separator/>
<filter string="My Department Leaves" name="department" domain="[('department_id.manager_id.user_id', '=', uid)]" help="My Department Leaves"/>
<filter string="My Team Leaves" domain="[('employee_id.parent_id.user_id', '=', uid)]" groups="hr.group_hr_manager" help="Leaves of Your Team Member"/>
<filter string="My Team Leaves" domain="[('employee_id.parent_id.user_id', '=', uid)]" groups="hr_holidays.group_hr_holidays_manager" help="Leaves of Your Team Member"/>
<separator/>
<filter string="To Report in Payslip" name="gray" domain="[('payslip_status', '=', False)]" groups="hr.group_hr_manager"/>
<filter string="To Report in Payslip" name="gray" domain="[('payslip_status', '=', False)]" groups="hr_holidays.group_hr_holidays_manager"/>
<separator/>
<filter string="To Do" name="todo" domain="[('payslip_status', '=', False), ('holiday_status_id.active', '=', True)]"/>
<separator/>
@@ -83,9 +83,9 @@
<field name="type" invisible="1"/>
<header>
<button string="Confirm" name="action_confirm" states="draft" type="object" class="oe_highlight"/>
<button string="Approve" name="action_approve" states="confirm" type="object" groups="hr.group_hr_user" class="oe_highlight"/>
<button string="Validate" name="action_validate" states="validate1" type="object" groups="hr.group_hr_manager" class="oe_highlight"/>
<button string="Refuse" name="action_refuse" states="confirm,validate,validate1" type="object" groups="hr.group_hr_user"/>
<button string="Approve" name="action_approve" states="confirm" type="object" groups="hr_holidays.group_hr_holidays_user" class="oe_highlight"/>
<button string="Validate" name="action_validate" states="validate1" type="object" groups="hr_holidays.group_hr_holidays_manager" class="oe_highlight"/>
<button string="Refuse" name="action_refuse" states="confirm,validate,validate1" type="object" groups="hr_holidays.group_hr_holidays_user"/>
<button string="Reset to Draft" name="action_draft" type="object"
attrs="{'invisible': ['|', ('can_reset', '=', False), ('state', 'not in', ['confirm', 'refuse'])]}"/>
<field name="state" widget="statusbar" statusbar_visible="draft,confirm,validate"/>
@@ -111,14 +111,14 @@
</div>
</group>
<group>
<field name="holiday_type" attrs="{'readonly':[('type', '=', 'remove'),('state','!=','draft')]}" string="Mode" groups="hr.group_hr_user" context="{'employee_id':employee_id}" />
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')],'invisible':[('holiday_type','=','category')]}" groups="hr.group_hr_user"/>
<field name="holiday_type" attrs="{'readonly':[('type', '=', 'remove'),('state','!=','draft')]}" string="Mode" groups="hr_holidays.group_hr_holidays_user" context="{'employee_id':employee_id}" />
<field name="employee_id" attrs="{'required':[('holiday_type','=','employee')],'invisible':[('holiday_type','=','category')]}" groups="hr_holidays.group_hr_holidays_user"/>
<field name="category_id" attrs="{'required':[('holiday_type','=','category')], 'readonly': [('type', '=', 'remove'),('state','!=','draft'), ('state','!=','confirm')], 'invisible':[('holiday_type','=','employee')]}"/>
<field name="department_id" groups="hr.group_hr_user" attrs="{'readonly':['|','|' ,('type','=','add'),('holiday_type','=','category'),('state','=', 'validate')],'invisible':[('holiday_type','=','category')]}"/>
<field name="payslip_status" groups="hr.group_hr_manager" attrs="{'invisible':[('type','=','add')]}" widget="toggle_button"/>
<field name="department_id" groups="hr_holidays.group_hr_holidays_user" attrs="{'readonly':['|','|' ,('type','=','add'),('holiday_type','=','category'),('state','=', 'validate')],'invisible':[('holiday_type','=','category')]}"/>
<field name="payslip_status" groups="hr_holidays.group_hr_holidays_manager" attrs="{'invisible':[('type','=','add')]}" widget="toggle_button"/>
</group>
<field name="notes" nolabel="1" colspan="4" placeholder="Add a reason..." attrs="{'invisible': [('type', '=', 'remove')]}"/>
<div groups="hr.group_hr_manager" attrs="{'invisible':[('type','=','add')]}">
<div groups="hr_holidays.group_hr_holidays_manager" attrs="{'invisible':[('type','=','add')]}">
<separator string="Comment by Manager"/>
<field name="report_note" placeholder="e.g. Report to the next month..."/>
</div>
@@ -169,8 +169,8 @@
<field name="number_of_days_temp" string="Allocated Days" sum="Remaining Days"/>
<field name="state"/>
<button name="toggle_payslip_status" field_name="payslip_status" type="object"
widget="toggle_button" options='{"active": "Reported in last payslips", "inactive": "To Report in Payslip"}' groups="hr.group_hr_manager"/>
<field name="report_note" groups="hr.group_hr_manager"/>
widget="toggle_button" options='{"active": "Reported in last payslips", "inactive": "To Report in Payslip"}' groups="hr_holidays.group_hr_holidays_manager"/>
<field name="report_note" groups="hr_holidays.group_hr_holidays_manager"/>
<field name="payslip_status" invisible="1"/>
</tree>
</field>
@@ -213,7 +213,7 @@
<field name="holiday_status_id"/>
<field name="state"/>
<button name="toggle_payslip_status" field_name="payslip_status" type="object"
widget="toggle_button" options='{"active": "Reported in last payslips", "inactive": "To Report in Payslip"}' groups="hr.group_hr_manager"/>
widget="toggle_button" options='{"active": "Reported in last payslips", "inactive": "To Report in Payslip"}' groups="hr_holidays.group_hr_holidays_manager"/>
<field name="report_note"/>
<field name="payslip_status" invisible="1"/>
</tree>
@@ -236,7 +236,7 @@
<field name="state"/>
<field name="payslip_status" invisible="1"/>
<button name="toggle_payslip_status" field_name="payslip_status" type="object"
widget="toggle_button" options='{"active": "Reported in last payslips", "inactive": "To Report in Payslip"}' groups="hr.group_hr_manager"/>
widget="toggle_button" options='{"active": "Reported in last payslips", "inactive": "To Report in Payslip"}' groups="hr_holidays.group_hr_holidays_manager"/>
<field name="category_id" invisible="1"/>
<field name="department_id" invisible="not context.get('set_visible',False)"/>
<field name="manager_id" invisible="1"/>
@@ -269,7 +269,7 @@
parent="menu_hr_holidays_root"
sequence="1"
action="action_hr_holidays_dashboard"
groups="hr.group_hr_manager"/>
groups="hr_holidays.group_hr_holidays_manager"/>
<menuitem
id="menu_hr_holidays_my_leaves"
@@ -282,14 +282,14 @@
name="Leaves to Approve"
parent="menu_hr_holidays_root"
sequence="3"
groups="hr.group_hr_manager,hr.group_hr_user"/>
groups="hr_holidays.group_hr_holidays_manager,hr_holidays.group_hr_holidays_user"/>
<menuitem
id="menu_hr_holidays_report"
name="Reports"
parent="menu_hr_holidays_root"
sequence="99"
groups="hr.group_hr_manager,hr.group_hr_user"/>
groups="hr_holidays.group_hr_holidays_manager,hr_holidays.group_hr_holidays_user"/>
<record id="open_ask_holidays" model="ir.actions.act_window">
<field name="name">Leaves Request</field>
@@ -518,7 +518,7 @@
id="menu_open_department_leave_approve"
name="Leaves"
parent="menu_hr_holidays_approvals"
groups="hr.group_hr_manager,hr.group_hr_user"
groups="hr_holidays.group_hr_holidays_manager,hr_holidays.group_hr_holidays_user"
action="open_department_holidays_approve"
sequence="1"/>
@@ -538,7 +538,7 @@
</record>
<menuitem
id="menu_open_department_leave_allocation_approve" groups="hr.group_hr_manager,hr.group_hr_user"
id="menu_open_department_leave_allocation_approve" groups="hr_holidays.group_hr_holidays_manager,hr_holidays.group_hr_holidays_user"
name="Leaves Allocation"
parent="menu_hr_holidays_approvals"
action="open_department_holidays_allocation_approve"
@@ -548,7 +548,7 @@
id="menu_open_employee_leave"
name="Leave Details"
parent="menu_hr_holidays_report"
groups="hr.group_hr_manager,hr.group_hr_user"
groups="hr_holidays.group_hr_holidays_manager,hr_holidays.group_hr_holidays_user"
action="open_employee_leaves"
sequence="4"/>
@@ -637,7 +637,7 @@
name="Configuration"
parent="menu_hr_holidays_root"
sequence="100"
groups="hr.group_hr_manager"
groups="hr_holidays.group_hr_holidays_manager"
action="open_view_holiday_status"/>
<!-- Shortcuts -->
+1
View File
@@ -5,6 +5,7 @@
<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="groups_id" eval="[(4,ref('hr_holidays.group_hr_holidays_user'))]"/>
<field name="arch" type="xml">
<data>
<xpath expr="//templates" position="before">
+1 -1
View File
@@ -843,7 +843,7 @@ class HrEmployee(models.Model):
_description = 'Employee'
slip_ids = fields.One2many('hr.payslip', 'employee_id', string='Payslips', readonly=True)
payslip_count = fields.Integer(compute='_compute_payslip_count', string='Payslips', groups="hr.group_hr_user")
payslip_count = fields.Integer(compute='_compute_payslip_count', string='Payslips', groups="hr_payroll.group_hr_payroll_user")
@api.multi
def _compute_payslip_count(self):
@@ -2,11 +2,28 @@
<odoo>
<data noupdate="1">
<record id="group_hr_payroll_user" model="res.groups">
<field name="name">Officer</field>
<field name="category_id" ref="base.module_category_hr_payroll"/>
<field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/>
</record>
<record id="group_hr_payroll_manager" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="base.module_category_hr_payroll"/>
<field name="implied_ids" eval="[(4, ref('hr_payroll.group_hr_payroll_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_payroll.group_hr_payroll_manager'))]"/>
</record>
<record id="property_rule_employee_payslip" model="ir.rule">
<field name="name">Employee Payslip</field>
<field name="model_id" ref="model_hr_payslip"/>
<field name="domain_force">['|', ('employee_id.user_id', '=', user.id), ('employee_id.department_id.manager_id.user_id', '=', user.id)]</field>
<field name="groups" eval="[(4,ref('hr.group_hr_user'))]"/>
<field name="groups" eval="[(4,ref('hr_payroll.group_hr_payroll_user'))]"/>
</record>
</data>
+10 -10
View File
@@ -1,11 +1,11 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_payroll_structure,hr.payroll.structure,model_hr_payroll_structure,hr.group_hr_user,1,1,1,1
access_hr_contribution_register,hr.contribution.register,model_hr_contribution_register,hr.group_hr_user,1,1,1,1
access_hr_salary_rule_category,hr.salary.rule.category,model_hr_salary_rule_category,hr.group_hr_user,1,1,1,1
access_hr_payslip,hr.payslip,model_hr_payslip,hr.group_hr_user,1,1,1,1
access_hr_payslip_line,hr.payslip.line,model_hr_payslip_line,hr.group_hr_user,1,1,1,1
access_hr_payslip_input_user,hr.payslip.input.user,model_hr_payslip_input,hr.group_hr_user,1,1,1,1
access_hr_payslip_worked_days ,hr.payslip.worked_days,model_hr_payslip_worked_days,hr.group_hr_manager,1,1,1,1
access_hr_payslip_run,hr.payslip.run,model_hr_payslip_run,hr.group_hr_manager,1,1,1,1
access_hr_rule_input,hr.rule.input,model_hr_rule_input,hr.group_hr_manager,1,1,1,1
access_hr_salary_rule_user,hr.salary.rule.user,model_hr_salary_rule,hr.group_hr_user,1,1,1,1
access_hr_payroll_structure,hr.payroll.structure,model_hr_payroll_structure,hr_payroll.group_hr_payroll_user,1,1,1,1
access_hr_contribution_register,hr.contribution.register,model_hr_contribution_register,hr_payroll.group_hr_payroll_user,1,1,1,1
access_hr_salary_rule_category,hr.salary.rule.category,model_hr_salary_rule_category,hr_payroll.group_hr_payroll_user,1,1,1,1
access_hr_payslip,hr.payslip,model_hr_payslip,hr_payroll.group_hr_payroll_user,1,1,1,1
access_hr_payslip_line,hr.payslip.line,model_hr_payslip_line,hr_payroll.group_hr_payroll_user,1,1,1,1
access_hr_payslip_input_user,hr.payslip.input.user,model_hr_payslip_input,hr_payroll.group_hr_payroll_user,1,1,1,1
access_hr_payslip_worked_days ,hr.payslip.worked_days,model_hr_payslip_worked_days,hr_payroll.group_hr_payroll_manager,1,1,1,1
access_hr_payslip_run,hr.payslip.run,model_hr_payslip_run,hr_payroll.group_hr_payroll_manager,1,1,1,1
access_hr_rule_input,hr.rule.input,model_hr_rule_input,hr_payroll.group_hr_payroll_manager,1,1,1,1
access_hr_salary_rule_user,hr.salary.rule.user,model_hr_salary_rule,hr_payroll.group_hr_payroll_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_payroll_structure hr.payroll.structure model_hr_payroll_structure hr.group_hr_user hr_payroll.group_hr_payroll_user 1 1 1 1
3 access_hr_contribution_register hr.contribution.register model_hr_contribution_register hr.group_hr_user hr_payroll.group_hr_payroll_user 1 1 1 1
4 access_hr_salary_rule_category hr.salary.rule.category model_hr_salary_rule_category hr.group_hr_user hr_payroll.group_hr_payroll_user 1 1 1 1
5 access_hr_payslip hr.payslip model_hr_payslip hr.group_hr_user hr_payroll.group_hr_payroll_user 1 1 1 1
6 access_hr_payslip_line hr.payslip.line model_hr_payslip_line hr.group_hr_user hr_payroll.group_hr_payroll_user 1 1 1 1
7 access_hr_payslip_input_user hr.payslip.input.user model_hr_payslip_input hr.group_hr_user hr_payroll.group_hr_payroll_user 1 1 1 1
8 access_hr_payslip_worked_days hr.payslip.worked_days model_hr_payslip_worked_days hr.group_hr_manager hr_payroll.group_hr_payroll_manager 1 1 1 1
9 access_hr_payslip_run hr.payslip.run model_hr_payslip_run hr.group_hr_manager hr_payroll.group_hr_payroll_manager 1 1 1 1
10 access_hr_rule_input hr.rule.input model_hr_rule_input hr.group_hr_manager hr_payroll.group_hr_payroll_manager 1 1 1 1
11 access_hr_salary_rule_user hr.salary.rule.user model_hr_salary_rule hr.group_hr_user hr_payroll.group_hr_payroll_user 1 1 1 1
+2 -2
View File
@@ -4,7 +4,7 @@
<menuitem id="menu_hr_payroll_root" name="Payroll" sequence="45" web_icon="hr_payroll,static/description/icon.png"/>
<menuitem id="menu_hr_payroll_configuration" name="Configuration" parent="menu_hr_payroll_root"
sequence="100" groups="hr.group_hr_manager"/>
sequence="100" groups="hr_payroll.group_hr_payroll_manager"/>
<!-- Contract View -->
<record id="hr_contract_form_inherit" model="ir.ui.view">
@@ -369,7 +369,7 @@
<field name="search_view_id" ref="view_hr_payslip_filter"/>
</record>
<menuitem action="action_view_hr_payslip_form" id="menu_department_tree" parent="menu_hr_payroll_root" groups="hr.group_hr_user"/>
<menuitem action="action_view_hr_payslip_form" id="menu_department_tree" parent="menu_hr_payroll_root" groups="hr_payroll.group_hr_payroll_user"/>
<record id="act_hr_employee_payslip_list" model="ir.actions.act_window">
<field name="res_model">hr.payslip</field>
@@ -9,5 +9,23 @@
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
</record>
<record id="group_hr_recruitment_user" model="res.groups">
<field name="name">Officer</field>
<field name="category_id" ref="base.module_category_hr_recruitment"/>
<field name="implied_ids" eval="[(4, ref('hr.group_hr_user'))]"/>
</record>
<record id="group_hr_recruitment_manager" model="res.groups">
<field name="name">Manager</field>
<field name="category_id" ref="base.module_category_hr_recruitment"/>
<field name="implied_ids" eval="[(4, ref('group_hr_recruitment_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_recruitment.group_hr_recruitment_manager'))]"/>
</record>
</data>
</odoo>
@@ -1,13 +1,13 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_applicant_user,hr.applicant.user,model_hr_applicant,hr.group_hr_user,1,1,1,1
access_hr_recruitment_report,hr.recruitment.report,model_hr_recruitment_report,hr.group_hr_manager,1,1,1,1
access_hr_recruitment_stage_user,hr.recruitment.stage.user,model_hr_recruitment_stage,hr.group_hr_user,1,0,0,0
access_hr_recruitment_stage_manager,hr.recruitment.stage.manager,model_hr_recruitment_stage,hr.group_hr_manager,1,1,1,1
access_hr_recruitment_degree,hr.recruitment.degree,model_hr_recruitment_degree,hr.group_hr_user,1,1,1,1
access_res_partner_hr_user,res.partner.user,base.model_res_partner,hr.group_hr_user,1,1,1,1
access_calendar_event_hruser,calendar.event.hruser,calendar.model_calendar_event,hr.group_hr_user,1,1,1,1
access_hr_recruitment_source_hr_officer,hr.recruitment.source,model_hr_recruitment_source,hr.group_hr_user,1,1,1,1
access_hr_applicant_user,hr.applicant.user,model_hr_applicant,group_hr_recruitment_user,1,1,1,1
access_hr_recruitment_report,hr.recruitment.report,model_hr_recruitment_report,group_hr_recruitment_user,1,1,1,1
access_hr_recruitment_stage_user,hr.recruitment.stage.user,model_hr_recruitment_stage,group_hr_recruitment_user,1,0,0,0
access_hr_recruitment_stage_manager,hr.recruitment.stage.manager,model_hr_recruitment_stage,group_hr_recruitment_user,1,1,1,1
access_hr_recruitment_degree,hr.recruitment.degree,model_hr_recruitment_degree,group_hr_recruitment_user,1,1,1,1
access_res_partner_hr_user,res.partner.user,base.model_res_partner,group_hr_recruitment_user,1,1,1,1
access_calendar_event_hruser,calendar.event.hruser,calendar.model_calendar_event,group_hr_recruitment_user,1,1,1,1
access_hr_recruitment_source_hr_officer,hr.recruitment.source,model_hr_recruitment_source,group_hr_recruitment_user,1,1,1,1
access_hr_recruitment_source_all,hr.recruitment.source,model_hr_recruitment_source,,1,0,0,0
access_hr_applicant_category,hr.applicant_category,model_hr_applicant_category,,1,1,1,0
access_hr_applicant_category_manager,hr.applicant_category,model_hr_applicant_category,hr.group_hr_manager,1,1,1,1
access_calendar_event_type_hr_officer,calendar.event.type.officer,calendar.model_calendar_event_type,hr.group_hr_user,1,1,1,0
access_hr_applicant_category_manager,hr.applicant_category,model_hr_applicant_category,group_hr_recruitment_user,1,1,1,1
access_calendar_event_type_hr_officer,calendar.event.type.officer,calendar.model_calendar_event_type,group_hr_recruitment_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_applicant_user hr.applicant.user model_hr_applicant hr.group_hr_user group_hr_recruitment_user 1 1 1 1
3 access_hr_recruitment_report hr.recruitment.report model_hr_recruitment_report hr.group_hr_manager group_hr_recruitment_user 1 1 1 1
4 access_hr_recruitment_stage_user hr.recruitment.stage.user model_hr_recruitment_stage hr.group_hr_user group_hr_recruitment_user 1 0 0 0
5 access_hr_recruitment_stage_manager hr.recruitment.stage.manager model_hr_recruitment_stage hr.group_hr_manager group_hr_recruitment_user 1 1 1 1
6 access_hr_recruitment_degree hr.recruitment.degree model_hr_recruitment_degree hr.group_hr_user group_hr_recruitment_user 1 1 1 1
7 access_res_partner_hr_user res.partner.user base.model_res_partner hr.group_hr_user group_hr_recruitment_user 1 1 1 1
8 access_calendar_event_hruser calendar.event.hruser calendar.model_calendar_event hr.group_hr_user group_hr_recruitment_user 1 1 1 1
9 access_hr_recruitment_source_hr_officer hr.recruitment.source model_hr_recruitment_source hr.group_hr_user group_hr_recruitment_user 1 1 1 1
10 access_hr_recruitment_source_all hr.recruitment.source model_hr_recruitment_source 1 0 0 0
11 access_hr_applicant_category hr.applicant_category model_hr_applicant_category 1 1 1 0
12 access_hr_applicant_category_manager hr.applicant_category model_hr_applicant_category hr.group_hr_manager group_hr_recruitment_user 1 1 1 1
13 access_calendar_event_type_hr_officer calendar.event.type.officer calendar.model_calendar_event_type hr.group_hr_user group_hr_recruitment_user 1 1 1 0
@@ -11,7 +11,7 @@
-
!record {model: res.users, id: res_users_hr_recruitment_officer}:
groups_id:
- hr.group_hr_user
- hr_recruitment.group_hr_recruitment_user
-
In Order to test process of Recruitment so giving HR officer's rights,
-
@@ -4,6 +4,7 @@
<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="groups_id" eval="[(4,ref('hr_recruitment.group_hr_recruitment_user'))]"/>
<field name="arch" type="xml">
<data>
<xpath expr="//templates" position="before">
@@ -537,7 +537,7 @@
name="Recruitment"
id="menu_hr_recruitment_root"
web_icon="hr_recruitment,static/description/icon.png"
groups="hr.group_hr_user"
groups="hr_recruitment.group_hr_recruitment_user"
sequence="80"/>
<menuitem id="menu_hr_recruitment_configuration" name="Configuration" parent="menu_hr_recruitment_root"
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="hr.group_hr_user" model="res.groups">
<record id="hr_recruitment.group_hr_recruitment_user" model="res.groups">
<field name="implied_ids" eval="[(4, ref('survey.group_survey_user'))]"/>
</record>
</data>
@@ -1,2 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_survey_hr_user,survey.hr.user,survey.model_survey_survey,hr.group_hr_user,1,1,1,0
access_survey_hr_user,survey.hr.user,survey.model_survey_survey,hr_recruitment.group_hr_recruitment_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_survey_hr_user survey.hr.user survey.model_survey_survey hr.group_hr_user hr_recruitment.group_hr_recruitment_user 1 1 1 0
+1
View File
@@ -21,6 +21,7 @@ up a management by affair.
'website': 'https://www.odoo.com/page/employees',
'depends': ['account', 'hr', 'project'],
'data': [
'security/hr_timesheet_security.xml',
'security/ir.model.access.csv',
'hr_timesheet_view.xml',
'project_timesheet_view.xml',
+1
View File
@@ -4,6 +4,7 @@
<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="groups_id" eval="[(4,ref('hr_timesheet.group_hr_timesheet_user'))]"/>
<field name="arch" type="xml">
<data>
@@ -40,7 +40,7 @@
<menuitem id="menu_timesheets_reports" name="Reports"
parent="timesheet_menu_root" sequence="99" groups="hr.group_hr_manager"/>
parent="timesheet_menu_root" sequence="99" groups="hr_timesheet.group_hr_timesheet_manager"/>
<menuitem id="menu_hr_activity_analysis" parent="menu_timesheets_reports" action="act_hr_timesheet_report"
name="Activity Analysis"/>
</data>
@@ -0,0 +1,19 @@
<?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'))]"/>
</record>
<record id="group_hr_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('hr_timesheet.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('hr_timesheet.group_hr_timesheet_manager'))]"/>
</record>
</odoo>
@@ -1,7 +1,7 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_account_analytic_line,account.account.analytic.line,account.model_account_analytic_line,hr.group_hr_user,1,1,1,1
access_hr_account_analytic_line,account.account.analytic.line,account.model_account_analytic_line,hr_timesheet.group_hr_timesheet_user,1,1,1,1
access_hr_account_analytic_line_employee,account.account.analytic.line employee,account.model_account_analytic_line,base.group_user,1,1,1,1
access_product_product_user,product.product user,product.model_product_product,hr.group_hr_user,1,1,1,1
access_product_template_hr_timesheet,product.template.hr.timesheet,product.model_product_template,hr.group_hr_user,1,1,1,1
access_product_uom_hr_timesheet,product.uom.hr.timesheet,product.model_product_uom,hr.group_hr_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,account.analytic.line.user,model_account_analytic_line,base.group_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_account_analytic_line account.account.analytic.line account.model_account_analytic_line hr.group_hr_user hr_timesheet.group_hr_timesheet_user 1 1 1 1
3 access_hr_account_analytic_line_employee account.account.analytic.line employee account.model_account_analytic_line base.group_user 1 1 1 1
4 access_product_product_user product.product user product.model_product_product hr.group_hr_user hr_timesheet.group_hr_timesheet_user 1 1 1 1
5 access_product_template_hr_timesheet product.template.hr.timesheet product.model_product_template hr.group_hr_user hr_timesheet.group_hr_timesheet_user 1 1 1 1
6 access_product_uom_hr_timesheet product.uom.hr.timesheet product.model_product_uom hr.group_hr_user hr_timesheet.group_hr_timesheet_user 1 1 1 1
7 access_account_analytic_line_user account.analytic.line.user model_account_analytic_line base.group_user 1 1 1 0
@@ -10,7 +10,7 @@
-
!record {model: res.users, id: res_hr_timesheet_manager}:
groups_id:
- hr.group_hr_manager
- hr_timesheet.group_hr_timesheet_manager
-
Create a user as 'HR timesheet Officer'
-
@@ -23,7 +23,7 @@
-
!record {model: res.users, id: res_hr_timesheet_officer}:
groups_id:
- hr.group_hr_user
- hr_timesheet.group_hr_timesheet_user
-
Create a user as 'Timesheet Employee'
-
@@ -6,7 +6,7 @@
name: HR Manager
login: hr
groups_id:
- hr.group_hr_manager
- hr_timesheet.group_hr_timesheet_manager
-
Create a product with type service used to specify employees designation
-
@@ -1,4 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_timesheet_sheet_sheet_day,hr_timesheet_sheet.sheet.day,model_hr_timesheet_sheet_sheet_day,hr.group_hr_user,1,1,1,1
access_hr_timesheet_sheet_sheet_day,hr_timesheet_sheet.sheet.day,model_hr_timesheet_sheet_sheet_day,hr_timesheet.group_hr_timesheet_user,1,1,1,1
access_hr_timesheet_sheet_sheet_day_user,hr.timesheet.sheet.sheet.day.user,model_hr_timesheet_sheet_sheet_day,base.group_user,1,1,1,0
access_hr_timesheet_attendance_report,access_hr_timesheet_attendance_report,model_hr_timesheet_attendance_report,hr.group_hr_manager,1,0,0,0
access_hr_timesheet_attendance_report,access_hr_timesheet_attendance_report,model_hr_timesheet_attendance_report,hr_timesheet.group_hr_timesheet_manager,1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_timesheet_sheet_sheet_day hr_timesheet_sheet.sheet.day model_hr_timesheet_sheet_sheet_day hr.group_hr_user hr_timesheet.group_hr_timesheet_user 1 1 1 1
3 access_hr_timesheet_sheet_sheet_day_user hr.timesheet.sheet.sheet.day.user model_hr_timesheet_sheet_sheet_day base.group_user 1 1 1 0
4 access_hr_timesheet_attendance_report access_hr_timesheet_attendance_report model_hr_timesheet_attendance_report hr.group_hr_manager hr_timesheet.group_hr_timesheet_manager 1 0 0 0
@@ -119,7 +119,7 @@ class HrTimesheetSheet(models.Model):
@api.multi
def action_timesheet_draft(self):
if not self.env.user.has_group('hr.group_hr_user'):
if not self.env.user.has_group('hr_timesheet.group_hr_timesheet_user'):
raise UserError(_('Only an HR Officer or Manager can refuse timesheets or reset them to draft.'))
self.write({'state': 'draft'})
return True
@@ -134,7 +134,7 @@ class HrTimesheetSheet(models.Model):
@api.multi
def action_timesheet_done(self):
if not self.env.user.has_group('hr.group_hr_user'):
if not self.env.user.has_group('hr_timesheet.group_hr_timesheet_user'):
raise UserError(_('Only an HR Officer or Manager can approve timesheets.'))
if self.filtered(lambda sheet: sheet.state != 'confirm'):
raise UserError(_("Cannot approve a non-submitted timesheet."))
@@ -1,4 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_timesheet_sheet_sheet_user,hr_timesheet_sheet.sheet.user,model_hr_timesheet_sheet_sheet,base.group_user,1,1,1,1
access_hr_timesheet_sheet_sheet_system_employee,hr_timesheet_sheet.sheet.system.employee,model_hr_timesheet_sheet_sheet,base.group_user,1,1,1,0
access_hr_timesheet_sheet_sheet_account,hr_timesheet_sheet.sheet.account,model_hr_timesheet_sheet_sheet_account,hr.group_hr_user,1,1,1,1
access_hr_timesheet_sheet_sheet_account,hr_timesheet_sheet.sheet.account,model_hr_timesheet_sheet_sheet_account,hr_timesheet.group_hr_timesheet_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_timesheet_sheet_sheet_user hr_timesheet_sheet.sheet.user model_hr_timesheet_sheet_sheet base.group_user 1 1 1 1
3 access_hr_timesheet_sheet_sheet_system_employee hr_timesheet_sheet.sheet.system.employee model_hr_timesheet_sheet_sheet base.group_user 1 1 1 0
4 access_hr_timesheet_sheet_sheet_account hr_timesheet_sheet.sheet.account model_hr_timesheet_sheet_sheet_account hr.group_hr_user hr_timesheet.group_hr_timesheet_user 1 1 1 1
@@ -5,6 +5,7 @@
<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="groups_id" eval="[(4,ref('hr_timesheet.group_hr_timesheet_user'))]"/>
<field name="arch" type="xml">
<data>
<xpath expr="//templates" position="before">
@@ -58,9 +58,9 @@
<form string="Timesheet">
<header>
<button name="action_timesheet_confirm" states="draft" string="Submit to Manager" type="object" class="oe_highlight"/>
<button name="action_timesheet_done" states="confirm" string="Approve" type="object" groups="hr.group_hr_user" class="oe_highlight"/>
<button name="action_timesheet_draft" states="done" string="Set to Draft" type="object" groups="hr.group_hr_user"/>
<button name="action_timesheet_draft" states="confirm" string="Refuse" type="object" groups="hr.group_hr_user"/>
<button name="action_timesheet_done" states="confirm" string="Approve" type="object" groups="hr_timesheet.group_hr_timesheet_user" class="oe_highlight"/>
<button name="action_timesheet_draft" states="done" string="Set to Draft" type="object" groups="hr_timesheet.group_hr_timesheet_user"/>
<button name="action_timesheet_draft" states="confirm" string="Refuse" type="object" groups="hr_timesheet.group_hr_timesheet_user"/>
<field name="state" widget="statusbar" statusbar_visible="new,confirm,done"/>
</header>
<sheet>
@@ -190,7 +190,7 @@
<menuitem id="menu_hr_to_approve" name="To Approve" parent="hr_timesheet.timesheet_menu_root" sequence="7"/>
<menuitem action="act_hr_timesheet_sheet_form" id="menu_act_hr_timesheet_sheet_form" parent="menu_hr_to_approve"
sequence="11" groups="hr.group_hr_user"/>
sequence="11" groups="hr_timesheet.group_hr_timesheet_user"/>
<!--
account.analytic.line inheritancy
@@ -238,7 +238,7 @@
type="action"
class="oe_stat_button"
icon="fa-clock-o"
groups="hr.group_hr_manager">
groups="hr_timesheet.group_hr_timesheet_manager">
<field name="timesheet_count" widget="statinfo" string="Timesheets"/>
</button>
</div>
@@ -76,6 +76,6 @@
<field name="help">This report performs analysis on Payment Advices</field>
</record>
<menuitem name="Reports" id="menu_l10n_in_hr_payroll_report" parent="hr_payroll.menu_hr_payroll_root" sequence="99" groups="hr.group_hr_manager"/>
<menuitem name="Reports" id="menu_l10n_in_hr_payroll_report" parent="hr_payroll.menu_hr_payroll_root" sequence="99" groups="hr_payroll.group_hr_payroll_manager"/>
<menuitem action="action_payment_advice_report_all" id="menu_reporting_payment_advice" parent="menu_l10n_in_hr_payroll_report" sequence="5" />
</odoo>
@@ -74,13 +74,14 @@
<field name="help">This report performs analysis on Payslip</field>
</record>
<menuitem name="Reports" id="menu_l10n_in_hr_payroll_report" parent="hr_payroll.menu_hr_payroll_root" sequence="99" groups="hr.group_hr_manager"/>
<menuitem action="action_payslip_report_all" id="menu_reporting_payslip" parent="menu_l10n_in_hr_payroll_report" sequence="5" groups="hr.group_hr_manager"/>
<menuitem name="Reports" id="menu_l10n_in_hr_payroll_report" parent="hr_payroll.menu_hr_payroll_root" sequence="99" groups="hr_payroll.group_hr_payroll_manager"/>
<menuitem action="action_payslip_report_all" id="menu_reporting_payslip" parent="menu_l10n_in_hr_payroll_report" sequence="5" groups="hr_payroll.group_hr_payroll_manager"/>
<!--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="groups_id" eval="[(4,ref('hr_payroll.group_hr_payroll_user'))]"/>
<field name="arch" type="xml">
<data>
<xpath expr="//div[contains(@class, 'manage_reports')]" position="inside">
@@ -1,5 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_hr_payroll_advice_user","hr.payroll.advice","model_hr_payroll_advice","hr.group_hr_user",1,1,1,1
"access_hr_payroll_advice_line_user","hr.payroll.advice.line","model_hr_payroll_advice_line","hr.group_hr_user",1,1,1,1
"access_hr_payroll_advice_report_user","payment.advice.report","model_payment_advice_report","hr.group_hr_manager",1,1,1,1
"access_hr_payroll_payslip_report_user","payslip.report","model_payslip_report","hr.group_hr_manager",1,1,1,1
"access_hr_payroll_advice_user","hr.payroll.advice","model_hr_payroll_advice","hr_payroll.group_hr_payroll_user",1,1,1,1
"access_hr_payroll_advice_line_user","hr.payroll.advice.line","model_hr_payroll_advice_line","hr_payroll.group_hr_payroll_user",1,1,1,1
"access_hr_payroll_advice_report_user","payment.advice.report","model_payment_advice_report","hr_payroll.group_hr_payroll_manager",1,1,1,1
"access_hr_payroll_payslip_report_user","payslip.report","model_payslip_report","hr_payroll.group_hr_payroll_manager",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_hr_payroll_advice_user hr.payroll.advice model_hr_payroll_advice hr.group_hr_user hr_payroll.group_hr_payroll_user 1 1 1 1
3 access_hr_payroll_advice_line_user hr.payroll.advice.line model_hr_payroll_advice_line hr.group_hr_user hr_payroll.group_hr_payroll_user 1 1 1 1
4 access_hr_payroll_advice_report_user payment.advice.report model_payment_advice_report hr.group_hr_manager hr_payroll.group_hr_payroll_manager 1 1 1 1
5 access_hr_payroll_payslip_report_user payslip.report model_payslip_report hr.group_hr_manager hr_payroll.group_hr_payroll_manager 1 1 1 1
@@ -36,6 +36,6 @@
sequence="200"
action="action_salary_employee_month"
id="menu_salary_employee_month"
groups="hr.group_hr_manager,hr.group_hr_user"
groups="hr_payroll.group_hr_payroll_manager,hr_payroll.group_hr_payroll_user"
/>
</odoo>
@@ -35,6 +35,6 @@
action="action_yearly_salary_detail"
sequence="250"
id="menu_yearly_salary_detail"
groups="hr.group_hr_manager,hr.group_hr_user"
groups="hr_payroll.group_hr_payroll_manager,hr_payroll.group_hr_payroll_user"
/>
</odoo>
@@ -25,7 +25,7 @@
<field name="name">Job Positions: HR Officer</field>
<field name="model_id" ref="hr.model_hr_job"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[(4, ref('hr.group_hr_user'))]"/>
<field name="groups" eval="[(4, ref('hr_recruitment.group_hr_recruitment_user'))]"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="False"/>
<field name="perm_create" eval="False"/>
@@ -40,7 +40,7 @@
<div class="text-center text-muted">
<h3 class="css_editable_hidden"><a t-attf-href="/page/website.contactus">Contact us</a> for job opportunities.</h3>
<t groups="website.group_website_publisher">
<h4 groups="hr.group_hr_manager">
<h4 groups="hr_recruitment.group_hr_recruitment_manager">
Create new job pages from the <strong><i>+New</i></strong> top-right button.
</h4>
</t>
@@ -467,7 +467,7 @@
<!-- User Navbar -->
<template id="content_new_job_offer" inherit_id="website.user_navbar">
<xpath expr="//div[@id='o_website_add_page_modal']//ul" position="inside">
<li groups="hr.group_hr_manager"><a href="/jobs/add" class="js_link2post"><i class="fa fa-briefcase"/><p>New Job Offer</p></a></li>
<li groups="hr_recruitment.group_hr_recruitment_manager"><a href="/jobs/add" class="js_link2post"><i class="fa fa-briefcase"/><p>New Job Offer</p></a></li>
</xpath>
</template>
+57 -9
View File
@@ -67,20 +67,68 @@
</record>
<record model="ir.module.category" id="module_category_human_resources">
<field name="name">Human Resources</field>
<field name="description">Helps you manage your human resources by encoding your employees structure, generating work sheets, tracking attendance and more.</field>
<field name="name">Employees</field>
<field name="description">Helps you manage your employees.</field>
<field name="sequence">9</field>
</record>
<record model="ir.module.category" id="module_category_hr_holidays">
<field name="name">Holidays</field>
<field name="description">Helps you manage your holidays.</field>
<field name="sequence">10</field>
</record>
<record model="ir.module.category" id="module_category_hr_recruitment">
<field name="name">Recruitment</field>
<field name="description">Helps you manage your recruitments.</field>
<field name="sequence">11</field>
</record>
<record model="ir.module.category" id="module_category_hr_expense">
<field name="name">Expenses</field>
<field name="description">Helps you manage your expenses.</field>
<field name="sequence">12</field>
</record>
<record model="ir.module.category" id="module_category_hr_timesheet">
<field name="name">Timesheets</field>
<field name="description">Helps you manage the timesheets.</field>
<field name="sequence">13</field>
</record>
<record model="ir.module.category" id="module_category_hr_attendance">
<field name="name">Attendance</field>
<field name="description">Helps you manage the attendances.</field>
<field name="sequence">14</field>
</record>
<record model="ir.module.category" id="module_category_hr_appraisal">
<field name="name">Appraisals</field>
<field name="description">Helps you manage your appraisals.</field>
<field name="sequence">15</field>
</record>
<record model="ir.module.category" id="module_category_hr_payroll">
<field name="name">Payroll</field>
<field name="description">Helps you manage your payrolls.</field>
<field name="sequence">16</field>
</record>
<record model="ir.module.category" id="module_category_hr_gamification">
<field name="name">Gamification</field>
<field name="description">Helps you manage the gamification process.</field>
<field name="sequence">17</field>
</record>
<record model="ir.module.category" id="module_category_event_management">
<field name="name">Events</field>
<field name="description">Helps you manage your Events.</field>
<field name="sequence">10</field>
<field name="sequence">18</field>
</record>
<record id="module_category_mass_mailing" model="ir.module.category">
<field name="name">Mass Mailing</field>
<field name="sequence">11</field>
<field name="sequence">19</field>
<field name="description">Helps you manage your mass mailing for design
professional emails and reuse templates.</field>
</record>
@@ -88,28 +136,28 @@
<record id="module_category_survey" model="ir.module.category">
<field name="name">Survey</field>
<field name="description">Helps you manage your survey for review of different-different users.</field>
<field name="sequence">12</field>
<field name="sequence">20</field>
</record>
<record model="ir.module.category" id="module_category_point_of_sale">
<field name="name">Point of Sale</field>
<field name="description">Helps you get the most out of your points of sales with fast sale encoding, simplified payment mode encoding, automatic picking lists generation and more.</field>
<field name="sequence">13</field>
<field name="sequence">21</field>
</record>
<record model="ir.module.category" id="module_category_specific_industry_applications">
<field name="name">Specific Industry Applications</field>
<field name="sequence">14</field>
<field name="sequence">22</field>
</record>
<record model="ir.module.category" id="module_category_website">
<field name="name">Website</field>
<field name="sequence">15</field>
<field name="sequence">23</field>
</record>
<record model="ir.module.category" id="module_category_theme">
<field name="name">Theme</field>
<field name="sequence">16</field>
<field name="sequence">50</field>
</record>
<record model="ir.module.category" id="module_category_administration">