Trust-Code/odoo-brasil

View on GitHub
br_hr_payroll/data/br_hr_payroll_data.xml

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="utf-8"?>
<odoo>

        <!-- SALARY RULE CATEGORIES -->

        <record id="hr_payroll.COMP" model="hr.salary.rule.category">
            <field name="name">Contribuição da Companhia</field>
        </record>

        <record id="hr_payroll.NET" model="hr.salary.rule.category">
            <field name="name">Líquido</field>
            <field name="code">LIQ</field>
        </record>

        <record id="hr_payroll.DED" model="hr.salary.rule.category">
            <field name="name">Dedução</field>
        </record>

        <record id="hr_payroll.GROSS" model="hr.salary.rule.category">
            <field name="name">Bruto</field>
            <field name="code">BRUT</field>
        </record>

        <record id="hr_payroll.ALW" model="hr.salary.rule.category">
            <field name="name">Benefício</field>
            <field name="code">BEN</field>
        </record>

        <record id="hr_payroll.BASIC" model="hr.salary.rule.category">
            <field name="name">Base</field>
            <field name="code">BASE</field>
        </record>

        <!-- SALARY RULES -->

        <record id="hr_payroll.hr_rule_basic" model="hr.salary.rule">
            <field name="name">Base</field>
            <field name="code">BASE</field>
        </record>

        <record id="hr_payroll.hr_rule_taxable" model="hr.salary.rule">
            <field name="name">Bruto</field>
            <field name="code">BRUT</field>
            <field name="amount_python_compute">result = categories.BASE + categories.BEN</field>
        </record>

        <record id="hr_payroll.hr_rule_net" model="hr.salary.rule">
            <field name="name">Líquido</field>
            <field name="code">LIQ</field>
            <field name="amount_python_compute">result = categories.BASE + categories.BEN + categories.DED</field>
        </record>

        <!-- Registros de Contribuição -->

        <record id="hr_csd_contribution_register" model="hr.contribution.register">
            <field name="name">Desconto da Contribuição Sindical</field>
        </record>

        <record id="hr_vt_contribution_register" model="hr.contribution.register">
            <field name="name">Desconto do Vale Transporte</field>
        </record>

        <record id="hr_inss_contribution_register" model="hr.contribution.register">
            <field name="name">Desconto do INSS</field>
        </record>

        <record id="hr_fgts_contribution_register" model="hr.contribution.register">
            <field name="name">Desconto do FGTS</field>
        </record>

        <record id="hr_ir_contribution_register" model="hr.contribution.register">
            <field name="name">Desconto do IR</field>
        </record>

        <record id="hr_ps_contribution_register" model="hr.contribution.register">
            <field name="name">Desconto do Plano de Saúde</field>
        </record>

        <record id="hr_psd_contribution_register" model="hr.contribution.register">
            <field name="name">Desconto do Plano de Saúde de Dependente</field>
        </record>

        <record id="hr_vr_contribution_register" model="hr.contribution.register">
            <field name="name">Adicional do Vale Refeição</field>
        </record>

        <record id="hr_va_contribution_register" model="hr.contribution.register">
            <field name="name">Adicional do Vale Alimentação</field>
        </record>

        <record id="hr_psal_contribution_register" model="hr.contribution.register">
            <field name="name">Valor da Pensão Alimentícia</field>
        </record>

        <record id="hr_fgts_acumulado_register" model="hr.contribution.register">
            <field name="name">Valor do FGTS Acumulado</field>
        </record>

        <record id="hr_desconto_falta_register" model="hr.contribution.register">
            <field name="name">Falta Não Remunerada</field>
        </record>

        <record id="hr_13_prov_register" model="hr.contribution.register">
            <field name="name">Provisão de 13º</field>
        </record>

        <!-- Regras de Salário -->

        <record id="hr_salary_rule_inss" model="hr.salary.rule">
            <field name="code">INSS</field>
            <field name="name">INSS</field>
            <field name="category_id" ref="hr_payroll.DED"/>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">base = (categories.BASE + categories.BEN)
result = 570.88
if base &lt; 1556.95:
    result = base * 0.08
if base &gt; 1556.94 and base &lt; 2594.93:
    result = base * 0.09
if base &gt; 2594.92 and base &lt; 5189.83:
    result = base * 0.11
result *= -1
            </field>
            <field name="sequence" eval="101"/>
            <field name="register_id" ref="hr_inss_contribution_register"/>
            <field name="note">INSS</field>
        </record>

        <record id="hr_salary_rule_imp_renda" model="hr.salary.rule">
            <field name="code">IR</field>
            <field name="name">Imposto de Renda</field>
            <field name="category_id" ref="hr_payroll.DED"/>
            <field name="condition_select">python</field>
            <field name="condition_python">base = (categories.BASE + categories.BEN + INSS)
base -= employee.no_of_dependent * 189.59
result = (base &gt; 1903.98)
            </field>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">base = (categories.BASE + categories.BEN + INSS)
base -= employee.no_of_dependent * 189.59
if base &gt; 1903.98 and base &lt; 2822.66:
    result = (base * 0.075) - 142.80
if base &gt; 2826.65 and base &lt; 3751.06:
    result = (base * 0.15) - 354.80
if base &gt; 3751.05 and base &lt; 4664.69:
    result = (base * 0.225) - 636.13
if base &gt; 4664.69:
    result = (base * 0.275) - 869.36
if result &lt; 0:
    result = 0
result *= -1
            </field>
            <field name="sequence" eval="102" />
            <field name="register_id" ref="hr_ir_contribution_register"/>
            <field name="note">Imposto de Renda Salarial</field>
        </record>

        <record id="hr_salary_rule_fgts" model="hr.salary.rule">
            <field name="code">FGTS</field>
            <field name="name">FGTS</field>
            <field name="category_id" ref="hr_payroll.COMP"/>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">result = (categories.BASE + categories.BEN) * 0.08</field>
            <field name="sequence" eval="103"/>
            <field name="register_id" ref="hr_fgts_contribution_register"/>
            <field name="note">Empregado terá desconto de 8% de FGTS</field>
        </record>

        <record id="hr_salary_rule_plano_saude" model="hr.salary.rule">
            <field name="code">PS</field>
            <field name="name">Plano Saúde</field>
            <field name="category_id" ref="hr_payroll.DED"/>
            <field name="condition_select">python</field>
            <field name="condition_python">result = (contract.health_insurance > 0.0)</field>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">result = -contract.health_insurance</field>
            <field name="sequence" eval="107"/>
            <field name="register_id" ref="hr_ps_contribution_register"/>
            <field name="note">Valor do Plano de Saúde</field>
        </record>

        <record id="hr_salary_rule_plano_saude_dependente" model="hr.salary.rule">
            <field name="code">PSD</field>
            <field name="name">Plano Saúde Dependente</field>
            <field name="category_id" ref="hr_payroll.DED"/>
            <field name="condition_select">python</field>
            <field name="condition_python">result = (employee.no_of_dependent_health_plan > 0)</field>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">result = 0
for dependent in employee.dependent_ids:
    if dependent.use_health_plan:
        result -= contract.health_insurance_dependent
            </field>
            <field name="sequence" eval="110"/>
            <field name="register_id" ref="hr_psd_contribution_register"/>
            <field name="note">Empregado terá desconto sobre seu Plano de Saúde mediante a Dependente</field>
        </record>

        <record id="hr_salary_rule_csd" model="hr.salary.rule">
            <field name="code">CSD</field>
            <field name="name">Contribuição Sindical</field>
            <field name="category_id" ref="hr_payroll.DED"/>
            <field name="condition_select">python</field>
            <field name="condition_python">result = contract.calc_date == True</field>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">result = -0.035*contract.wage if contract.calc_date else 0</field>
            <field name="sequence" eval="104"/>
            <field name="register_id" ref="hr_csd_contribution_register"/>
            <field name="note">Empregado terá um desconto de 3.5% em um dia do ano.</field>
        </record>

        <record id="hr_salary_rule_vt" model="hr.salary.rule">
            <field name="code">VT</field>
            <field name="name">Vale Transporte</field>
            <field name="category_id" ref="hr_payroll.DED"/>
            <field name="condition_select">python</field>
            <field name="condition_python">result = (contract.transportation_voucher > 0.0)</field>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">result = -(categories.BASE * contract.percent_transportation / 100.0)</field>
            <field name="sequence" eval="105"/>
            <field name="register_id" ref="hr_vt_contribution_register"/>
            <field name="note"> Empregado terá um desconto de 6% do seu salário mediante ao Vale Transporte.</field>
        </record>

        <record id="hr_payroll_rules_vr" model="hr.salary.rule">
            <field name="name">Vale Refeição</field>
            <field name="sequence">70</field>
            <field name="code">VR</field>
            <field name="category_id" ref="hr_payroll.DED"/>
            <field name="condition_select">python</field>
            <field name="condition_python">result = (contract.value_vr > 0.0)</field>
            <field name="amount_select">code</field>
        <field name="amount_python_compute">result = 0
work_days = 22
if worked_days and worked_days.WORK100:
    work_days = worked_days.WORK100.number_of_days
result = -(contract.value_vr * work_days * contract.percent_vr / 100.0)
if result > contract.wage * 0.2: result = contract.wage * -0.2</field>
            <field name="register_id" ref="hr_vr_contribution_register"/>
            <field name="note">Vale Refeição</field>
        </record>

        <record id="hr_salary_rule_va" model="hr.salary.rule">
            <field name="name">Vale Alimentação</field>
            <field name="sequence" eval="80"/>
            <field name="code">VA</field>
            <field name="category_id" ref="hr_payroll.DED"/>
            <field name="condition_select">python</field>
            <field name="condition_python">result = (contract.value_va > 0.0)</field>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">result = 0
work_days = 22
if worked_days and worked_days.WORK100:
    work_days = worked_days.WORK100.number_of_days
result = -(contract.value_va * work_days * contract.percent_va / 100.0)
if result > contract.wage * 0.2: result = contract.wage * -0.2</field>
            <field name="register_id" ref="hr_va_contribution_register"/>
            <field name="note">Vale Alimentação</field>
        </record>

        <record id="hr_salary_rule_pension" model="hr.salary.rule">
            <field name="name">Pensão Alimentícia</field>
            <field name="sequence" eval="90"/>
            <field name="code">PSAL</field>
            <field name="category_id" ref="hr_payroll.DED"/>
            <field name="condition_select">python</field>
            <field name="condition_python">result = contract.employee_id.have_dependent</field>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">result = 0
for dependent in contract.employee_id.dependent_ids:
    result -= dependent.pension_benefits * categories.BASE / 100.0</field>
            <field name="register_id" ref="hr_psal_contribution_register"/>
            <field name="note">Pensão Alimentícia</field>
        </record>

        <record id="hr_salary_rule_falta" model="hr.salary.rule">
            <field name="name">Faltas Não Remuneradas</field>
            <field name="sequence" eval="68"/>
            <field name="code">FNR</field>
            <field name="category_id" ref="hr_payroll.DED"/>
            <field name="condition_select">python</field>
            <field name="condition_python">result = worked_days.Unpaid or worked_days.DSR</field>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">result = 0
if worked_days and worked_days.Unpaid:
    result -= worked_days.Unpaid.number_of_days * (categories.BASE / 30)
if worked_days and worked_days.DSR:
    result -= worked_days.DSR.number_of_days * (categories.BASE / 30)
</field>
            <field name="register_id" ref="hr_desconto_falta_register"/>
            <field name="note">Faltas Não Remuneradas</field>
        </record>

        <record id="hr_salary_rule_13_prov" model="hr.salary.rule">
            <field name="name">Provisão de #13</field>
            <field name="sequence" eval="87"/>
            <field name="code">P13</field>
            <field name="category_id" ref="hr_payroll.COMP"/>
            <field name="amount_select">code</field>
            <field name="amount_python_compute">result = categories.BASE / 12</field>
            <field name="register_id" ref="hr_13_prov_register"/>
            <field name="note">Provisão de #13</field>
        </record>


</odoo>