Odoo_17.0_community/addons/payroll/views/hr_salary_rule_views.xml
Tokiniaina 97d61d3076
All checks were successful
ci / main (push) Successful in 3m55s
send payroll OCA module
2024-11-13 14:54:26 +03:00

384 lines
20 KiB
XML

<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="hr_salary_rule_view_tree_children" model="ir.ui.view">
<field name="name">hr.salary.rule.list</field>
<field name="model">hr.salary.rule</field>
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="code" decoration-bf="1" />
<field name="category_id" widget="badge" />
<field name="sequence" column_invisible="1" />
<field name="register_id" />
</tree>
</field>
</record>
<record id="hr_salary_rule_view_kanban" model="ir.ui.view">
<field name="name">hr.salary.rule.kanban</field>
<field name="model">hr.salary.rule</field>
<field name="arch" type="xml">
<kanban class="o_kanban_mobile">
<templates>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_content oe_kanban_global_click">
<div class="row">
<div class="col-8">
<strong>
<field name="name" />
</strong>
</div>
<div class="col-4">
<span class="float-right">
<field name="category_id" widget="badge" />
</span>
</div>
</div>
<div class="row">
<div class="col-12">
<span>
Code:
<field name="code" />
</span>
</div>
</div>
</div>
</t>
</templates>
</kanban>
</field>
</record>
<record id="hr_salary_rule_view_tree" model="ir.ui.view">
<field name="name">hr.salary.rule.tree</field>
<field name="model">hr.salary.rule</field>
<field eval="20" name="priority" />
<field name="arch" type="xml">
<tree>
<field name="name" />
<field name="code" />
<field name="category_id" column_invisible="True" />
<field
name="company_id"
groups="base.group_multi_company"
options="{'no_create': True}"
/>
</tree>
</field>
</record>
<record id="hr_salary_rule_view_form" model="ir.ui.view">
<field name="name">hr.salary.rule.form</field>
<field name="model">hr.salary.rule</field>
<field name="arch" type="xml">
<form string="Salary Rules">
<field name="require_code_and_category" invisible="1" />
<div
class="alert alert-info oe_edit_only"
role="alert"
invisible="amount_select != 'code'"
>
<p>
If you have doubts about coding salary rules, check the "Help" tab in this form.
</p>
</div>
<sheet>
<label for="name" class="oe_edit_only" />
<h1>
<field name="name" />
</h1>
<label for="category_id" class="oe_edit_only" />
<h2>
<field
name="category_id"
required="require_code_and_category"
/>
</h2>
<group name="principal">
<group>
<field name="code" required="require_code_and_category" />
<field name="sequence" />
<field name="register_id" />
<field
name="company_id"
options="{'no_create': True}"
groups="base.group_multi_company"
/>
</group>
<group>
<field name="active" widget="boolean_toggle" />
<field name="appears_on_payslip" widget="boolean_toggle" />
</group>
</group>
<notebook>
<page string="Rule Configuration">
<separator string="Notes" />
<field
name="note"
placeholder="Write salary rule notes or observations here..."
/>
<group>
<group string="Conditions" name="conditions">
<field
name="condition_select"
widget="selection_badge"
decoration-info="1"
decoration-bf="1"
nolabel="1"
colspan="2"
/>
<field
name="condition_python"
invisible="condition_select != 'python'"
required="condition_select == 'python'"
colspan="2"
widget="ace"
options="{'mode': 'python'}"
id="condition_python"
nolabel="1"
/>
<field
name="condition_range"
invisible="condition_select != 'range'"
required="condition_select == 'range'"
/>
<label
string="Condition Range"
invisible="condition_select != 'range'"
required="condition_select == 'range'"
for="condition_range_min"
/>
<div
invisible="condition_select != 'range'"
required="condition_select == 'range'"
>
<strong>Between </strong>
<field
name="condition_range_min"
class="oe_inline"
invisible="condition_select != 'range'"
required="condition_select == 'range'"
/>
<strong> and </strong>
<field
name="condition_range_max"
class="oe_inline"
invisible="condition_select != 'range'"
required="condition_select == 'range'"
/>
</div>
</group>
<group string="Computation" name="computation">
<field
name="amount_select"
widget="selection_badge"
decoration-info="1"
decoration-bf="1"
nolabel="1"
colspan="2"
/>
<field
name="amount_percentage_base"
invisible="amount_select != 'percentage'"
required="amount_select == 'percentage'"
/>
<field
name="quantity"
invisible="amount_select != 'code'"
required="amount_select == 'code'"
/>
<field
name="amount_fix"
invisible="amount_select != 'fix'"
required="amount_select == 'fix'"
/>
<field
colspan="2"
name="amount_python_compute"
invisible="amount_select != 'code'"
required="amount_select == 'code'"
widget="ace"
options="{'mode': 'python'}"
id="amount_python_compute"
nolabel="1"
/>
<field
name="amount_percentage"
invisible="amount_select != 'percentage'"
required="amount_select == 'percentage'"
/>
</group>
</group>
</page>
<page name="rules" string="Child Rules">
<div class="alert alert-info" role="alert">
<p>
Child rule functionality is useful when you need other rules to be computed before the parent one. <br
/>
This means that all salary rules declared as childs (parent of one rule) will be added to the computation
if its parent rule is included in the salary structure. So child rules will only be computed if it's parent is
computed. <br />
This functionality is useful for doing auxiliar calculations that are used as dependencies for the parent
salary rule (e.x. rules required for complex tax computation that needs data from several modules).
</p>
</div>
<field name="parent_rule_id" />
<separator string="Children Definition" />
<field name="child_ids" />
</page>
<page name="inputs" string="Inputs">
<field name="input_ids" mode="tree">
<tree editable="bottom">
<field name="code" />
<field name="name" />
</tree>
</field>
</page>
<page name="help" string="Help">
<div style="margin-top: 4px;">
<h3>Salary Rules formula definition (Python)</h3>
<p>
In python definition in salary rules, you can write any code like you will do
in python. Any methematical operation or python function is supported.
</p>
<p>
The following objects and variables are available to you to use it in salary rules calculations.
</p>
<ul>
<li>
<code
>payslip:</code> contains current payslip object data (hr.payslip)
</li>
<li>
<code
>payslips:</code> contains payslips data (Payslips - Browsable Object)
</li>
<li>
<code
>employee:</code> contains current employee object data (hr.employee)
</li>
<li>
<code
>contract:</code> contains current contract object data (hr.contract)
</li>
<li>
<code
>rules:</code> contains the rules code (previusly computed)
</li>
<li>
<code
>categories:</code> contains the sum of amount of all rules belonging to that category
</li>
<li>
<code
>worked_days:</code> contains the computed worked days data
</li>
<li>
<code
>inputs:</code> contains the computed input data
</li>
<li>
<code
>payroll:</code> contains miscellaneous values related to payroll
</li>
<li>
<code
>current_contract:</code> contains values related/calculated for current contract
</li>
<li>
<code
>result_rules:</code> contains the values of previusly computed lines (qty, rate, amount, total)
</li>
<li>
<code
>tools:</code> contains tools and libraries which help with mathematical operations
</li>
</ul>
<p>
The calculations should be performed using the objects and variables below.
Then, you have to use specific compute variables which will store the data
for salary rule computation.
</p>
<ul>
<li>
<code
>result:</code> the returned value should be in this variable. It matches with "amount" column.
</li>
<li>
<code
>result_rate:</code> the rate that should be applied to "result"
</li>
<li>
<code
>result_qty:</code> the quantity of units that will be multiplied to "result"
</li>
<li>
<code
>result_name:</code> overrides the current name of the rule and allows to make dynamic names
</li>
</ul>
<h3>Examples</h3>
<ul>
<li>
<code>result = contract.wage * 0.10</code>
</li>
<li>
<code>
result = contract.wage
result_qty = worked_days.WORK100.number_of_days
</code>
</li>
<li>
<code>
result = contract.wage
result_rate = 10.0
</code>
</li>
</ul>
</div>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="hr_salary_rule_view_search" model="ir.ui.view">
<field name="name">hr.salary.rule.select</field>
<field name="model">hr.salary.rule</field>
<field name="arch" type="xml">
<search string="Search Salary Rule">
<field
name="name"
string="Salary Rules"
filter_domain="['|',('name','ilike',self),('code','ilike',self)]"
/>
<field name="category_id" />
<field name="condition_range_min" />
<group col="8" colspan="4" expand="0" string="Group By">
<filter
string="Category"
name="head"
context="{'group_by':'category_id'}"
/>
</group>
</search>
</field>
</record>
<record id="action_salary_rule_form" model="ir.actions.act_window">
<field name="name">Salary Rules</field>
<field name="res_model">hr.salary.rule</field>
<field name="view_mode">tree,kanban,form</field>
<field name="domain">[('parent_rule_id','=',False)]</field>
<field name="search_view_id" ref="hr_salary_rule_view_search" />
</record>
<menuitem
id="menu_action_hr_salary_rule_form"
action="action_salary_rule_form"
parent="payroll_menu_configuration"
sequence="12"
/>
<record id="act_children_salary_rules" model="ir.actions.act_window">
<field name="name">All Children Rules</field>
<field name="res_model">hr.salary.rule</field>
<field name="domain">[('parent_rule_id', '=', active_id)]</field>
<field name="view_id" ref="hr_salary_rule_view_tree_children" />
</record>
</odoo>