This question has been flagged
1 Reply
2942 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 

Avatar
Discard
Best Answer

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.

Avatar
Discard
Author

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

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

Author

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.

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