I tried to create a programmed action in one module. Declared this in my view.Run Personnel Actions Job 1 days -1
And then declared this on my .py file.
def run_personnel_actions(self, cr, uid, ids, context=None):
"""Runs a determined action on the date set in the field effective_date.
Returns None"""
#This variables holds the objects we are going to be using in each action.
hr_obj = self.pool.get('hr.employee')
hr_cont_obj = self.pool.get('hr.contract')
hr_cont_rate_obj = self.pool.get('hr.contract.rate')
hr_holiday = self.pool.get('hr.holidays')
hr_pay_obj = self.pool.get('hr.payslip')
hr_payslip_obj = self.pool.get('hr.payslip.input')
actions = self.browse(cr, uid, ids, context=None)
#Loop for traversing all records in the hr.personnel.action table and if the status is for approved and the date is today, run them.
for action in actions:
#These variables hold the ids of the contract and payroll associated to the employee.
hr_cont_id = hr_cont_obj.search(cr, uid, [('employee_id', '=', action.employee_id.id)],
order='id', context=None)
hr_pay_id = hr_pay_obj.search(cr, uid, [('employee_id', '=', action.employee_id.id)],
order='id', context=None)
hr_cont_record = hr_cont_obj.browse(cr, uid, hr_cont_id[-1], context=None)
if action.states == 'approved' and action.effective_date == datetime.date.today():
if action.action_requested == '1':
hr_payslip_obj.create(cr, uid, {'contract_id':hr_cont_id[-1],
'amount':action.proposed_bonus,
'name':"Bonus payment",
'code':1,
'payslip_id':hr_pay_id[0]}, context=None)
self.write(cr, uid, ids, {'states':'applied'}, context=None)
But so far it doesn't run when is supposed to, and doesn't raisee any error at all.
↧