コンテンツへスキップ
メニュー
この質問にフラグが付けられました
3 返信
10254 ビュー

Hello,

I need to add a new Salary rule in Base AS a data.xml file so it can compute the total allowances and deductions.

Here's my code:

<?xml version="1.0" encoding="utf-8"?>

<openerp>

<data noupdate="1">

<record id="ALLOWANCES" model="hr.salary.rule.category">

<field name="name">Allowances</field>

<field name="code">ALLOWANCES</field>

</record>

<record id="DEDUCTIONS" model="hr.salary.rule.category">

<field name="name">Deductions</field>

<field name="code">DEDUCTIONS</field>

</record>

<record id="hr_rule_allowances" model="hr.salary.rule">

<field name="name">Allowances</field>

<field name="sequence" eval="99"/>

<field name="code">ALLOWANCES</field>

<field name="category_id" ref="hr_payroll.ALLOWANCES"/>

<field name="condition_select">none</field>

<field name="amount_select">code</field>

<field name="amount_python_compute">result = categories.ALW</field>

</record>

<record id="hr_rule_deductions" model="hr.salary.rule">

<field name="name">Deductions</field>

<field name="sequence" eval="199"/>

<field name="code">DEDUCTIONS</field>

<field name="category_id" ref="hr_payroll.DEDUCTIONS"/>

<field name="condition_select">none</field>

<field name="amount_select">code</field>

<field name="amount_python_compute">result = categories.DED</field>

</record>

<!-- Salary Structure -->

<record id="structure_base_extend" model="hr.payroll.structure">

<field name="inherit_id" ref="hr_payroll.structure_base"/>

<field eval="[(6, 0, [ref('hr_rule_allowances'), ref('hr_rule_deductions')])]" name="rule_ids"/>

</record>

</data>

</openerp>


but I get this error: 

ParseError: "External ID not found in the system: hr_payroll.ALLOWANCES" while parsing /home/youta/odoo-8/my_addons/hr_wps/wps_data.xml:15, near

<record id="hr_rule_allowances" model="hr.salary.rule">


and when I tried to erase this line 

<field name="category_id" ref="hr_payroll.ALLOWANCES"/>

I got another error that category_id cannot be NULL


Any help will be appreciated

Thanks

アバター
破棄
最善の回答

Hello,

the ref works as :

module_name.record_id

So the ref="hr_payroll.ALLOWANCES" will not works because the hr_payroll module has no id with name ALLOWANCES

So you need to replace hr_payroll to your module name to be as:

<field name="category_id" ref="your_module_name.ALLOWANCES"/>

Update:

to override/modify already existing record you just need to make the record id as same as the targeting record.

E.g


<!-- Salary Structure -->

<record id="hr_payroll.structure_base" model="hr.payroll.structure">

<field name="code">BASE</field>

<field name="name">Base for new structures</field>

<field eval="[(6, 0, [ref('hr_rule_allowances'), ref('hr_rule_deductions')])]" name="rule_ids"/>

</record>

Hope this could helps

アバター
破棄
著作者

Ok it's worked.. thanks for the advice.. But now it created duplicated BASE salary rule with the new two rows instead of being added to the original BASE. how can I edit these line of codes to inherit the BASE structure instead of creating new one ` BASE Base for new structures `

著作者 最善の回答

Ok it worked.. thanks for the advice.. But now it created duplicated BASE salary rule with the new two rows instead of being added to the original BASE. how can I edit these line of codes to inherit the BASE structure instead of creating new one. Here's my code :

<!-- Salary Structure -->

<record id="structure_base_extend" model="hr.payroll.structure">

<field name="code">BASE</field>

<field name="name">Base for new structures</field>

<field name="inherit_id" ref="hr_payroll.structure_base"/>

<field eval="[(6, 0, [ref('hr_rule_allowances'), ref('hr_rule_deductions')])]" name="rule_ids"/>

</record>

アバター
破棄

I've updated my answer ....

関連投稿 返信 ビュー 活動
1
1月 23
2549
1
5月 22
25583
3
8月 20
5148
0
2月 18
2683
0
3月 17
4018