Purpose ======= For payroll purpose, we need to manage attendances. For instance, someone is working only mondays, tuesdays and fridays, but works exceptionally an other day. It must be recorded. Specification ============= The new models are used to represent attendances, extra hours and leaves (as `hr.benefit`s) in a new window called "Benefits". The schedule of employees for the full month is visible in that view (calendar view). First the benefits needs to be generated (via a button) based on the calendar attendances and leaves. The manager can then check benefits, delete or add some. Only the benefit name and type can be edited (not start and end dates). Once benefits are correct, they can be validated. Validation will fail if they are some leaves to approve or if some benefits overlap on the same day. Benefits cannot be deleted or edited once validated. When benefits are all validated, a button appears to generate payslips. Closes #28261
49 lines
2.2 KiB
XML
49 lines
2.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<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')), (4, ref('hr_contract.group_hr_contract_manager'))]"/>
|
|
</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')), (4, ref('base.user_admin'))]"/>
|
|
</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="hr_payroll_rule_officer" model="ir.rule">
|
|
<field name="name">Officer and subordinates Payslip</field>
|
|
<field name="model_id" ref="model_hr_payslip"/>
|
|
<field name="domain_force">['|','|', ('employee_id.user_id', '=', user.id), ('employee_id.department_id', '=', False), ('employee_id.department_id.manager_id.user_id', '=', user.id)]</field>
|
|
<field name="groups" eval="[(4, ref('hr_payroll.group_hr_payroll_user'))]"/>
|
|
</record>
|
|
|
|
<record id="hr_payslip_rule_manager" model="ir.rule">
|
|
<field name="name">All Payslip</field>
|
|
<field name="model_id" ref="model_hr_payslip"/>
|
|
<field name="domain_force">[(1,'=',1)]</field>
|
|
<field name="groups" eval="[(4, ref('hr_payroll.group_hr_payroll_manager'))]"/>
|
|
</record>
|
|
|
|
<record id="hr_benefit_validated" model="ir.rule">
|
|
<field name="name">hr.benefit: only non validated benefits updated</field>
|
|
<field name="model_id" ref="model_hr_benefit"/>
|
|
<field name="domain_force">[('state', '!=', 'validated')]</field>
|
|
<field name="groups" eval="[(4, ref('hr_payroll.group_hr_payroll_manager'))]"/>
|
|
<field name="perm_create" eval="0"/>
|
|
<field name="perm_write" eval="1"/>
|
|
<field name="perm_unlink" eval="0"/>
|
|
<field name="perm_read" eval="0"/>
|
|
</record>
|
|
|
|
</data>
|
|
</odoo>
|