2016-11-21 2 views
0

Я написал эту функцию для обновления отдельной таблицы, и она не работает. В режиме отладки он возвращает значения.Openerp - Функция не обновляет поля

мне нужно обновить отдельную таблицу (leave_score_card таблицы) с каждыми сотрудниками накопившихся количества дней, взятыми листьев против того, чтобы оставить тип, как я показал в следующей картине и данные будут взяты из оригинальных hr_holidays таблицы в модуле управления Отпуска

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

Почему вы возвращаетесь 'false'? – Zety

+0

Извините, что я забыл изменить это, я использовал «результат» в качестве возврата, но он только вернул одну запись. Кстати, я обновил вопрос. –

+0

Что вы пытаетесь обновить здесь? Как называется эта функция? – CZoellner

ответ

0

В основном я использовал создавать и писать методы для заполнения БД, который следует;

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 

Дно большинство деталей были изменены

Смежные вопросы