2016-08-15 5 views
0

Openerpスケジューラを使用して機能を実行しようとしましたが、何も変更されませんでした。私は関数を実行する場合、それは完全にうまく動作しますが、スケジューラでは動作しません。これで私を助けてください。 hr_holidays.xmlファイル内Openerpスケジューラが動作していますが、接続されている機能が実行されていません

私は

<record id="ir_cron_scheduler" model="ir.cron"> 
    <field name="name">Casual Leave Allocation</field> 
    <field name="interval_number">1</field> 
    <field name="interval_type">minutes</field> 
    <field name="numbercall">-1</field> 
    <field eval="False" name="doall"/> 
    <field eval="'hr.holidays'" name="hr.holidays"/> 
    <field eval="'allocate_on_probations'" name="allocate_on_probations"/> 
    <field eval="'()'" name="args"/> 
</record> 

とUIは次のようになり少し調整して、これを追加。 enter image description here

enter image description here

enter image description here

機能

def allocate_on_probations(self, cr, uid, ids,tl, context=None): 
    allo=0 
    state='active' 
    result = {} 

    emps=self.pool.get('hr.employee').search(cr, uid, [('current_status','=','active')], context=context) 
    if emps:  
     for r in emps: 
      hol_state=2 
      gt_dt=cr.execute("""SELECT appointed_date FROM hr_employee WHERE id= %d order by id"""%(r)) 
      gt_dd=cr.fetchone()[0] 

      #getting today details 
      today = datetime.datetime.now() 
      tt=today.date() 
      td=tt.day 
      tm=tt.month 
      ty=tt.year 

      #getting appointment date details 
      app=datetime.datetime.strptime(gt_dd, "%Y-%m-%d").date() 
      #print app 
      ay=app.year 
      am=app.month 
      ad=app.day 

      if ay==ty: 
       #compairing today and appointed date 
       comp=(tt-app) 
       chat=int(comp.days) 
       chat_mod=chat%30 
       print chat_mod 
       print r 

       if chat_mod==29: 
        hol_obj=self.pool.get('hr.holidays') 
        print hol_obj 
        condition_1=[('employee_id','=',r),('type','=','add'),('holiday_status_id','=',hol_state)] 
        hol_emp=hol_obj.search(cr, uid,condition_1, context=context) 

        if hol_emp:     
         for n in hol_emp: 
          hol_dt=cr.execute("""SELECT number_of_days_temp FROM hr_holidays WHERE id= %d order by id"""%(n)) 
          hol_dd=cr.fetchone()[0] 
          hol_inc=(hol_dd+0.5) 

          print hol_inc 
          cr.execute("""UPDATE hr_holidays SET number_of_days_temp= %d WHERE id= %d"""%(hol_inc,n)) 
          cr.execute("""UPDATE hr_holidays SET number_of_days= %d WHERE id= %d"""%(hol_inc,n)) 

    return True 
+0

でのcronからT1値を渡す必要が実行しているcronsていますか? – CZoellner

+0

私たちにその機能を教えてもらえますか?また、cronが実行されている間にログにエラーがないことを確認してください。 –

+0

が関数をアップロードしました –

答えて

1

あなたは、そのパラメータとcronを経由して、それを渡す必要はありませんのためにデフォルト値を設定する必要があり、それが中に必要とされる場合cronから渡して機能させる。

def allocate_on_probations(self, cr, uid, ids,tl=False, context=None): 

     allo=0 
     state='active' 
     result = {} 


     emps=self.pool.get('hr.employee').search(cr, uid, [('current_status','=','active')], context=context) 
     if emps: 

      for r in emps: 
       hol_state=2 
       gt_dt=cr.execute("""SELECT appointed_date FROM hr_employee WHERE id= %d order by id"""%(r)) 
       gt_dd=cr.fetchone()[0] 

       #getting today details 
       today = datetime.datetime.now() 
       tt=today.date() 
       td=tt.day 
       tm=tt.month 
       ty=tt.year 

       #getting appointment date details 
       app=datetime.datetime.strptime(gt_dd, "%Y-%m-%d").date() 
       #print app 
       ay=app.year 
       am=app.month 
       ad=app.day 

       if ay==ty: 
        #compairing today and appointed date 
        comp=(tt-app) 
        chat=int(comp.days) 
        chat_mod=chat%30 
        print chat_mod 
        print r 

        if chat_mod==29: 
         hol_obj=self.pool.get('hr.holidays') 
         print hol_obj 
         condition_1=[('employee_id','=',r),('type','=','add'),('holiday_status_id','=',hol_state)] 
         hol_emp=hol_obj.search(cr, uid,condition_1, context=context) 

         if hol_emp: 

          for n in hol_emp: 
           hol_dt=cr.execute("""SELECT number_of_days_temp FROM hr_holidays WHERE id= %d order by id"""%(n)) 
           hol_dd=cr.fetchone()[0] 
           hol_inc=(hol_dd+0.5) 

           print hol_inc 
           cr.execute("""UPDATE hr_holidays SET number_of_days_temp= %d WHERE id= %d"""%(hol_inc,n)) 
           cr.execute("""UPDATE hr_holidays SET number_of_days= %d WHERE id= %d"""%(hol_inc,n)) 




     return True 

そして、それは必須であるならば、あなたは引数

enter image description here

+0

いいえまだ動作していません –

+0

上記の手順でスケジューラが実行されても、時間は変わりますが、スケジューラで定義されたメソッドは実行されません。 –

+0

メソッドにブレークポイントを設定し、1分後にスケジューラを設定し、コントロールがメソッドに入っているかどうかを確認してください。 –

関連する問題