19.0 vanilla

This commit is contained in:
Ernad Husremovic 2026-03-09 09:31:00 +01:00
parent a1137a1456
commit e1d89e11e3
2789 changed files with 1093187 additions and 605897 deletions

View file

@ -1,30 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record model="ir.module.category" id="base.module_category_human_resources_expenses">
<field name="description">Helps you manage your expenses.</field>
<record model="res.groups.privilege" id="res_groups_privilege_expenses">
<field name="name">Expenses</field>
<field name="sequence">12</field>
<field name="category_id" ref="base.module_category_human_resources"/>
</record>
<record id="group_hr_expense_team_approver" model="res.groups">
<field name="name">Team Approver</field>
<field name="category_id" ref="base.module_category_human_resources_expenses"/>
<field name="sequence">10</field>
<field name="privilege_id" ref="res_groups_privilege_expenses"/>
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="group_hr_expense_user" model="res.groups">
<field name="name">All Approver</field>
<field name="category_id" ref="base.module_category_human_resources_expenses"/>
<field name="sequence">20</field>
<field name="privilege_id" ref="res_groups_privilege_expenses"/>
<field name="implied_ids" eval="[(4, ref('hr_expense.group_hr_expense_team_approver'))]"/>
</record>
<record id="group_hr_expense_manager" model="res.groups">
<field name="name">Administrator</field>
<field name="category_id" ref="base.module_category_human_resources_expenses"/>
<field name="sequence">30</field>
<field name="privilege_id" ref="res_groups_privilege_expenses"/>
<field name="implied_ids" eval="[(4, ref('hr_expense.group_hr_expense_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_expense.group_hr_expense_manager'))]"/>
<field name="user_ids" eval="[(4, ref('base.user_root')), (4, ref('base.user_admin'))]"/>
</record>
</odoo>

View file

@ -1,20 +1,15 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_expense_employee,hr.expense.employee,model_hr_expense,base.group_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_hr_expense_user,hr.expense.user,model_hr_expense,hr_expense.group_hr_expense_team_approver,1,1,1,1
access_hr_expense_sheet_user,hr.expense.sheet.user,model_hr_expense_sheet,hr_expense.group_hr_expense_team_approver,1,1,1,1
access_hr_expense_manager,hr.expense.manager,model_hr_expense,hr_expense.group_hr_expense_manager,1,1,1,1
access_hr_expense_sheet_manager,hr.expense.sheet.manager,model_hr_expense_sheet,hr_expense.group_hr_expense_manager,1,1,1,1
access_product_product_hr_expense_user,product.product.hr.expense.user,product.model_product_product,hr_expense.group_hr_expense_manager,1,1,1,1
access_product_template_hr_expense_user,product.template.hr.expense.user,product.model_product_template,hr_expense.group_hr_expense_manager,1,1,1,1
access_uom_uom_hr_expense_user,uom.uom.hr.expense.user,uom.model_uom_uom,hr_expense.group_hr_expense_team_approver,1,1,1,1
access_account_journal_user,account.journal.user,account.model_account_journal,hr_expense.group_hr_expense_team_approver,1,0,0,0
access_account_journal_employee,account.journal.employee,account.model_account_journal,base.group_user,1,0,0,0
access_account_move_user,account.move.hr.expense.approver,account.model_account_move,hr_expense.group_hr_expense_team_approver,1,0,0,0
access_account_move_line_user,account.move.line.hr.expense.approver,account.model_account_move_line,hr_expense.group_hr_expense_team_approver,1,0,0,0
access_account_analytic_line_user,account.analytic.line.user,account.model_account_analytic_line,hr_expense.group_hr_expense_team_approver,1,1,1,1
access_mail_activity_type_expense_user,mail.activity.type.expense.user,mail.model_mail_activity_type,hr_expense.group_hr_expense_manager,1,1,1,1
access_hr_expense_refuse_wizard,access.hr.expense.refuse.wizard,model_hr_expense_refuse_wizard,hr_expense.group_hr_expense_team_approver,1,1,1,0
access_hr_expense_approve_duplicate,access.hr.expense.approve.duplicate,model_hr_expense_approve_duplicate,hr_expense.group_hr_expense_team_approver,1,1,1,0
access_hr_expense_split_wizard_manager,access.hr.expense.split.wizard.manager,model_hr_expense_split_wizard,base.group_user,1,1,1,0
access_hr_expense_split_manager,access.hr.expense.split.manager,model_hr_expense_split,base.group_user,1,1,1,1
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_expense_employee,hr.expense.employee,model_hr_expense,base.group_user,1,1,1,1
access_hr_expense_user,hr.expense.user,model_hr_expense,hr_expense.group_hr_expense_team_approver,1,1,1,1
access_hr_expense_manager,hr.expense.manager,model_hr_expense,hr_expense.group_hr_expense_manager,1,1,1,1
access_hr_expense_accountant,hr.expense.accountant,model_hr_expense,account.group_account_invoice,1,1,1,0
access_account_journal_user,account.journal.user,account.model_account_journal,hr_expense.group_hr_expense_team_approver,1,0,0,0
access_account_move_user,account.move.hr.expense.approver,account.model_account_move,hr_expense.group_hr_expense_team_approver,1,0,0,0
access_account_move_line_user,account.move.line.hr.expense.approver,account.model_account_move_line,hr_expense.group_hr_expense_team_approver,1,0,0,0
access_account_analytic_line_user,account.analytic.line.user,account.model_account_analytic_line,hr_expense.group_hr_expense_team_approver,1,1,1,1
access_mail_activity_type_expense_user,mail.activity.type.expense.user,mail.model_mail_activity_type,hr_expense.group_hr_expense_manager,1,1,1,1
access_hr_expense_refuse_wizard,access.hr.expense.refuse.wizard,model_hr_expense_refuse_wizard,hr_expense.group_hr_expense_team_approver,1,1,1,0
access_hr_expense_approve_duplicate,access.hr.expense.approve.duplicate,model_hr_expense_approve_duplicate,hr_expense.group_hr_expense_team_approver,1,1,1,0
access_hr_expense_split_wizard_manager,access.hr.expense.split.wizard.manager,model_hr_expense_split_wizard,base.group_user,1,1,1,0
access_hr_expense_split_manager,access.hr.expense.split.manager,model_hr_expense_split,base.group_user,1,1,1,1
access_hr_expense_post,access.hr.expense.post.wizard,model_hr_expense_post_wizard,account.group_account_invoice,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_employee hr.expense.employee model_hr_expense base.group_user 1 1 1 1
3 access_hr_expense_sheet_employee access_hr_expense_user hr.expense.sheet.employee hr.expense.user model_hr_expense_sheet model_hr_expense base.group_user hr_expense.group_hr_expense_team_approver 1 1 1 1
4 access_hr_expense_user access_hr_expense_manager hr.expense.user hr.expense.manager model_hr_expense hr_expense.group_hr_expense_team_approver hr_expense.group_hr_expense_manager 1 1 1 1
5 access_hr_expense_sheet_user access_hr_expense_accountant hr.expense.sheet.user hr.expense.accountant model_hr_expense_sheet model_hr_expense hr_expense.group_hr_expense_team_approver account.group_account_invoice 1 1 1 1 0
6 access_hr_expense_manager access_account_journal_user hr.expense.manager account.journal.user model_hr_expense account.model_account_journal hr_expense.group_hr_expense_manager hr_expense.group_hr_expense_team_approver 1 1 0 1 0 1 0
7 access_hr_expense_sheet_manager access_account_move_user hr.expense.sheet.manager account.move.hr.expense.approver model_hr_expense_sheet account.model_account_move hr_expense.group_hr_expense_manager hr_expense.group_hr_expense_team_approver 1 1 0 1 0 1 0
8 access_product_product_hr_expense_user access_account_move_line_user product.product.hr.expense.user account.move.line.hr.expense.approver product.model_product_product account.model_account_move_line hr_expense.group_hr_expense_manager hr_expense.group_hr_expense_team_approver 1 1 0 1 0 1 0
9 access_product_template_hr_expense_user access_account_analytic_line_user product.template.hr.expense.user account.analytic.line.user product.model_product_template account.model_account_analytic_line hr_expense.group_hr_expense_manager hr_expense.group_hr_expense_team_approver 1 1 1 1
10 access_uom_uom_hr_expense_user access_mail_activity_type_expense_user uom.uom.hr.expense.user mail.activity.type.expense.user uom.model_uom_uom mail.model_mail_activity_type hr_expense.group_hr_expense_team_approver hr_expense.group_hr_expense_manager 1 1 1 1
11 access_account_journal_user access_hr_expense_refuse_wizard account.journal.user access.hr.expense.refuse.wizard account.model_account_journal model_hr_expense_refuse_wizard hr_expense.group_hr_expense_team_approver 1 0 1 0 1 0
12 access_account_journal_employee access_hr_expense_approve_duplicate account.journal.employee access.hr.expense.approve.duplicate account.model_account_journal model_hr_expense_approve_duplicate base.group_user hr_expense.group_hr_expense_team_approver 1 0 1 0 1 0
13 access_account_move_user access_hr_expense_split_wizard_manager account.move.hr.expense.approver access.hr.expense.split.wizard.manager account.model_account_move model_hr_expense_split_wizard hr_expense.group_hr_expense_team_approver base.group_user 1 0 1 0 1 0
14 access_account_move_line_user access_hr_expense_split_manager account.move.line.hr.expense.approver access.hr.expense.split.manager account.model_account_move_line model_hr_expense_split hr_expense.group_hr_expense_team_approver base.group_user 1 0 1 0 1 0 1
15 access_account_analytic_line_user access_hr_expense_post account.analytic.line.user access.hr.expense.post.wizard account.model_account_analytic_line model_hr_expense_post_wizard hr_expense.group_hr_expense_team_approver account.group_account_invoice 1 1 1 1
access_mail_activity_type_expense_user mail.activity.type.expense.user mail.model_mail_activity_type hr_expense.group_hr_expense_manager 1 1 1 1
access_hr_expense_refuse_wizard access.hr.expense.refuse.wizard model_hr_expense_refuse_wizard hr_expense.group_hr_expense_team_approver 1 1 1 0
access_hr_expense_approve_duplicate access.hr.expense.approve.duplicate model_hr_expense_approve_duplicate hr_expense.group_hr_expense_team_approver 1 1 1 0
access_hr_expense_split_wizard_manager access.hr.expense.split.wizard.manager model_hr_expense_split_wizard base.group_user 1 1 1 0
access_hr_expense_split_manager access.hr.expense.split.manager model_hr_expense_split base.group_user 1 1 1 1

View file

@ -9,62 +9,35 @@
(4, ref('account.group_account_user')),
(4, ref('hr_expense.group_hr_expense_user'))]"/>
</record>
<record id="ir_rule_hr_expense_approver" model="ir.rule">
<field name="name">Team Approver Expense</field>
<field name="model_id" ref="model_hr_expense"/>
<field name="domain_force">['|', '|', '|', '|',
('employee_id.user_id', '=', user.id),
('employee_id.department_id.manager_id.user_id', '=', user.id),
('employee_id.parent_id.user_id', '=', user.id),
('employee_id', 'child_of', user.employee_ids.ids),
('employee_id.expense_manager_id', '=', user.id),
('sheet_id.user_id', '=', user.id)]</field>
('manager_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('hr_expense.group_hr_expense_team_approver'))]"/>
</record>
<record id="ir_rule_hr_expense_employee" model="ir.rule">
<field name="name">Employee Expense</field>
<field name="model_id" ref="model_hr_expense"/>
<field name="domain_force">[('employee_id.user_id', '=', user.id), ('state', '=', 'draft')]</field>
<field name="domain_force">[
'|', '&amp;', ('employee_id.expense_manager_id', '=', user.id), ('state', 'in', ['draft', 'submitted', 'approved', 'refused']),
'&amp;', ('employee_id.user_id', '=', user.id), ('state', '=', 'draft')
]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="ir_rule_hr_expense_employee_not_draft" model="ir.rule">
<field name="name">Employee can't modify expense that is not in draft state</field>
<field name="model_id" ref="model_hr_expense"/>
<field name="domain_force">[('employee_id.user_id', '=', user.id), ('state', '!=', 'draft')]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
<field name="perm_create" eval="False"/>
<field name="perm_write" eval="False"/>
<field name="perm_unlink" eval="False"/>
</record>
<record id="ir_rule_hr_expense_sheet_manager" model="ir.rule">
<field name="name">Manager Expense Sheet</field>
<field name="model_id" ref="model_hr_expense_sheet"/>
<field name="domain_force">[(1, '=', 1)]</field>
<field name="groups" eval="[
(4, ref('account.group_account_user')),
(4, ref('hr_expense.group_hr_expense_user'))]"/>
</record>
<record id="ir_rule_hr_expense_sheet_approver" model="ir.rule">
<field name="name">Approver Expense Sheet</field>
<field name="model_id" ref="model_hr_expense_sheet"/>
<field name="domain_force">['|', '|', '|', '|',
('employee_id.user_id', '=', user.id),
('employee_id.department_id.manager_id.user_id', '=', user.id),
('employee_id.parent_id.user_id', '=', user.id),
('employee_id.expense_manager_id', '=', user.id),
('user_id', '=', user.id)]</field>
<field name="groups" eval="[(4, ref('hr_expense.group_hr_expense_team_approver'))]"/>
</record>
<record id="ir_rule_hr_expense_sheet_employee" model="ir.rule">
<field name="name">Employee Expense Sheet</field>
<field name="model_id" ref="model_hr_expense_sheet"/>
<field name="domain_force">[('employee_id.user_id', '=', user.id), ('state', '=', 'draft')]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="ir_rule_hr_expense_sheet_employee_not_draft" model="ir.rule">
<field name="name">Employee can't modify expense sheet that is not in draft state</field>
<field name="model_id" ref="model_hr_expense_sheet"/>
<field name="domain_force">[('employee_id.user_id', '=', user.id), ('state', '!=', 'draft')]</field>
<record id="ir_rule_hr_expense_employee_not_draft" model="ir.rule">
<field name="name">Employees can't modify an expense that is not in draft state</field>
<field name="model_id" ref="model_hr_expense"/>
<field name="domain_force">[
'|', '&amp;', ('employee_id.user_id', '=', user.id), ('state', '!=', 'draft'),
'&amp;', ('employee_id.expense_manager_id', '=', user.id), ('state', 'in', ['submitted', 'approved', 'refused'])
]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
<field name="perm_create" eval="False"/>
<field name="perm_write" eval="False"/>
@ -77,19 +50,14 @@
<field eval="True" name="global"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="hr_expense_report_comp_rule" model="ir.rule">
<field name="name">Expense Report multi company rule</field>
<field name="model_id" ref="model_hr_expense_sheet"/>
<field eval="True" name="global"/>
<field name="domain_force">[('company_id', 'in', company_ids)]</field>
</record>
<record id="hr_expense_team_approver_account_move_rule" model="ir.rule">
<field name="name">Expense Team Approver Account Move</field>
<field name="model_id" ref="account.model_account_move"/>
<field name="domain_force">[('line_ids.expense_id', '!=', False)]</field>
<field name="domain_force">[('expense_ids', '!=', False)]</field>
<field name="groups" eval="[(4, ref('hr_expense.group_hr_expense_team_approver'))]"/>
</record>
<record id="hr_expense_team_approver_account_move_line_rule" model="ir.rule">
<field name="name">Expense Team Approver Account Move Line</field>
<field name="model_id" ref="account.model_account_move_line"/>
@ -97,4 +65,43 @@
<field name="groups" eval="[(4, ref('hr_expense.group_hr_expense_team_approver'))]"/>
</record>
<record id="ir_rule_hr_expense_split_employee" model="ir.rule">
<field name="name">Employee Expense Split</field>
<field name="model_id" ref="model_hr_expense_split_wizard"/>
<field name="domain_force">[
('expense_id.state', '=', 'draft'),
'|', ('expense_id.employee_id.user_id', '=', user.id), ('expense_id.manager_id', '=', user.id),
]</field>
<field name="groups" eval="[(4, ref('base.group_user'))]"/>
</record>
<record id="ir_rule_hr_expense_split_approver" model="ir.rule">
<field name="name">Approver Expense Split</field>
<field name="model_id" ref="model_hr_expense_split_wizard"/>
<field name="domain_force">[
('expense_id.state', 'in', ['draft', 'submitted']),
('expense_id.manager_id', 'in', [user.id, False])
]</field>
<field name="groups" eval="[(4, ref('hr_expense.group_hr_expense_team_approver'))]"/>
</record>
<record id="ir_rule_hr_expense_split_user" model="ir.rule">
<field name="name">All approver Expense Split</field>
<field name="model_id" ref="model_hr_expense_split_wizard"/>
<field name="domain_force">[
('expense_id.state', 'in', ['draft', 'submitted']),
'|', ('expense_id.employee_id.user_id', '!=', user.id), ('expense_id.manager_id', 'in', [user.id, False])
]</field>
<field name="groups" eval="[(4, ref('hr_expense.group_hr_expense_user'))]"/>
</record>
<record id="ir_rule_hr_expense_split_manager" model="ir.rule">
<field name="name">Manager Expense Split</field>
<field name="model_id" ref="model_hr_expense_split_wizard"/>
<field name="domain_force">[('expense_id.state', 'in', ['draft', 'submitted'])]</field>
<field name="groups" eval="[(4, ref('hr_expense.group_hr_expense_manager'))]"/>
</record>
<record id="ir_rule_hr_expense_split_accountant" model="ir.rule">
<field name="name">Accountant Expense Split</field>
<field name="model_id" ref="model_hr_expense_split_wizard"/>
<field name="domain_force">[('expense_id.state', 'in', ('draft', 'submitted', 'approved'))]</field>
<field name="groups" eval="[(4, ref('account.group_account_invoice'))]"/>
</record>
</odoo>