Odoo Help


How can I add another on_change on a inherited view?

on 9/8/14, 3:57 AM 1,221 views
  1. <record id="view_hr_payslip_form" model="ir.ui.view">
  2.             <field name="name">hr.payslip.form</field>
  3.             <field name="model">hr.payslip</field>
  4.             <field name="arch" type="xml">
  5.                 <form string="Payslip">
  6.                 <header>
  7.                     <button string="Confirm" name="hr_verify_sheet" states="draft" class="oe_highlight"/>
  8.                     <button string="Refund" name="refund_sheet" states="confirm,done" type='object' />
  9.                     <button string="Set to Draft" name="draft" states="cancel"/>
  10.                     <button string="Compute Sheet" name="compute_sheet" type="object" states="draft" class="oe_highlight"/>
  11.                     <button string="Cancel Payslip" name="cancel_sheet" states="draft,hr_check,confirm,verify"/>
  12.                     <field name="state" widget="statusbar" statusbar_visible="draft,confirm"/>
  13.                 </header>
  14.                 <sheet>
  15.                     <div class="oe_right oe_button_box">
  16.                         <button name="%(act_payslip_lines)d" 
  17.                             class="oe_stat_button" 
  18.                             icon="fa-money" 
  19.                             type="action">
  20.                             <field name="payslip_count" widget="statinfo" string="Payslip" help="Payslip Computation Details"/>
  21.                         </button>
  22.                     </div>
  23.                     <div class="oe_title">
  24.                         <label for="employee_id" class="oe_edit_only"/>
  25.                         <h1><field name="employee_id" on_change="onchange_employee_id(date_from, date_to, employee_id, contract_id)"/></h1>
  26.                     </div>

The code above is a part of hr.payroll, which is responsible in the on_change function in payslip, whenever the employee_id is changed, other fields will be filled up.

Now, I created a function that i wanted to be insert/add here in this part, <h1><field name="employee_id" on_change="onchange_employee_id(date_from, date_to, employee_id, contract_id)"/></h1>.

so that everytime the employee_id is changed, it will not only fill up the fields 




| 5 3 6
Jakarta, Indonesia
On 9/8/14, 7:04 AM

Paolo, you cannot apply 2 on_change-s on the same field in the same view.  So, you need to choose one.  It is best that you check the original on_change and make sure that you are not "shuting-off" logics that are necessary for further processing of the Payroll.

Once you confirm on the on_change that you are going to use, you can inherit the view (view_hr_payslip_form), then redefine the field with the new on_change.

i thought it is possible to do call to functions in an on_change by using delimeter, example:

on 9/8/14, 9:46 PM

AFAIK you can only define one on_change method per field although you can define multiple arguments for that method.

on 9/8/14, 11:43 PM

yes, it can't be done. :( Do you have any idea or suggestion on what more can i do with my code?, basically i just want to add inputs in "Other inputs". Other Inputs, can be found in payslip. I would like to use this function to compute for Late, Overtime, and undertime of and employee and use it in the salary rule for computations.

on 9/8/14, 11:49 PM

Paolo, you can still inherit and change the current on_change method and add your logic into the inheritance.

on 9/9/14, 12:14 AM

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)


Asked: 9/8/14, 3:57 AM
Seen: 1221 times
Last updated: 3/16/15, 8:10 AM