2016-11-21 11 views
0

私は別のテーブルを更新するためにこの関数を書いており、それはうまくいきません。デバッグモードでは、値を返します。Openerp - 機能はフィールドを更新しません

IはIピクチャを、以下に示しており、データは元の hr_holidaysテーブルから取得されるようなタイプを残すに対して葉を採取日の各及びすべての従業累積数と別のテーブル( leave_score_cardテーブル)を更新する必要が

休暇管理モジュールに

enter image description here

は、この権利を作るために私を助けてください。それは、私がこれまで基本的に

def populate_values(self, cr, uid, ids, context={}): 

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

      for r in emps: 

       print r 
       result['value']['employee_id'] =r 
       holiday_obj=self.pool.get('hr.holidays') 
       holiday_emps=holiday_obj.search(cr, uid, [('employee_id','=',r),('type','=','remove')], context=context) 
       print holiday_obj 
       global medi 
       global annu    
       global othr 


       print holiday_emps 
       if holiday_emps: 
        casu = 0 
        annu=0 
        medi=0 
        other=0 

        for n in holiday_obj.browse(cr, uid, holiday_emps): 


         holiday_status = n.holiday_status_id.id 
         holiday_days=n.number_of_days_temp 
         print n 
         print n.holiday_status_id.id 
         print "Number of days" 
         print n.number_of_days_temp 

         if holiday_status: 
          if holiday_status==2: 
           casu=casu+holiday_days 

          if holiday_status==4: 
           medi=medi+holiday_days 

          if holiday_status==10: 
           annu=annu+holiday_days 

          else: 
           other=other+holiday_days 

         else: 
          print "Un-identified leave Type" 


        result['value']['taken_medical'] =medi 
        result['value']['taken_casual'] =casu 
        result['value']['taken_anual'] =annu 
        result['value']['taken_other'] =other 


     return result  
+0

を変えてしまっていますか? – Zety

+0

申し訳ありません、私はそれを編集するのを忘れました、私はリターンとして '結果'を使用しましたが、それは1つのレコードを返しました。 Btw、私は質問を更新しました。 –

+0

ここで何を更新しようとしていますか?この関数はどのように呼び出されますか? – CZoellner

答えて

0

怒鳴る言及されて試してみましたが、私が作成し、以下のあるDBを移入する方法を記述し使用しているだけで、最後のレコードを示しています。あなたは `false`のを返すのはなぜ

def populate_values(self, cr, uid, ids, context={}): 

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

      for employees in emps: 

       result['value']['employee_id'] = employees 
       holiday_obj=self.pool.get('hr.holidays') 
       holiday_emps_allocate=holiday_obj.search(cr, uid, [('employee_id','=',employees),('type','=','add')], context=context) 
       holiday_emps_taken=holiday_obj.search(cr, uid, [('employee_id','=',employees),('type','=','remove')], context=context) 



       if holiday_emps_allocate: 
        casu_allo=0 
        annu_allo=0 
        medi_allo=0 
        other_allo=0 

        for a in holiday_obj.browse(cr, uid, holiday_emps_allocate): 
         holiday_status_allo = a.holiday_status_id.id 
         holiday_days_allo=a.number_of_days_temp 

         if holiday_status_allo: 
          if holiday_status_allo==2: 
           casu_allo=casu_allo+holiday_days_allo 

          if holiday_status_allo==4: 
           medi=medi_allo+holiday_days_allo 

          if holiday_status_allo==10: 
           annu=annu_allo+holiday_days_allo 

          else: 
           other_allo=other_allo+holiday_days_allo 

         else: 
          raise osv.except_osv(_('Warning!'),_('Un-Identified Leave Allocation')) 


       print holiday_emps_taken 
       if holiday_emps_taken: 
        casu = 0 
        annu=0 
        medi=0 
        other=0 

        for n in holiday_obj.browse(cr, uid, holiday_emps_taken): 


         holiday_status = n.holiday_status_id.id 
         holiday_days=n.number_of_days_temp 
         print n 
         print n.holiday_status_id.id 
         print "Number of days" 
         print n.number_of_days_temp 

         if holiday_status: 
          if holiday_status==2: 
           casu=casu+holiday_days 

          if holiday_status==4: 
           medi=medi+holiday_days 

          if holiday_status==10: 
           annu=annu+holiday_days 

          else: 
           other=other+holiday_days 

         else: 
          raise osv.except_osv(_('Warning!'),_('Un-Identified Leave.')) 

       casu_rem=casu_allo-casu 
       medi_rem=medi_allo-medi 
       annu_rem=annu_allo-annu 

       score_obj=self.pool.get('leave.score.card') 
       score_objs=score_obj.search(cr, uid, [('employee_id','=',employees)], context=context)     
       score_objss = score_obj.browse(cr, uid, score_objs, context=context) 

       if score_objs: 
        self.write(cr,uid,score_objs[0],{ 
               'taken_medical':medi, 
               'taken_casual':casu, 
               'taken_annual':annu, 
               'taken_other':other, 
               'available_medical':medi_rem, 
               'available_casual':casu_rem, 
               'available_annual':annu_rem}) 


       else: 
        self.create(cr, uid, {'employee_id':employees, 
               'taken_medical':medi, 
               'taken_casual':casu, 
               'taken_annual':annu, 
               'taken_other':other, 
               'available_medical':medi_rem, 
               'available_casual':casu_rem, 
               'available_annual':annu_rem}) 


     return result 

下のほとんどの部分は

関連する問題