2017-09-30 9 views
1

"hr_payroll_from_timesheet"모듈을 만들려면 직원을 토요일 또는 금요일에 근무하는 경우 시간을 계산할 수 있도록 필드를 추가하려고했습니다.함수 필드, 최대 재귀 깊이 초과

class hr_timsheet_sheet(osv.osv) 
_inherit = 'hr_timsheet_sheet.sheet' 

def _woked_days(self,cr,uid,ids,field_name,args=None,context=None) 
    sheet = self.browse(cr,uid,ids) 
    for record in sheet: 
     hr_sup= ["Saturday","Friday"] 
     count = 0.0 
     for line in record.period_ids: 
      day = line.name 
      year, month, day = (int(x) for x in day.split('-')) 
      days = datetime.date(year,month,day) 
      if days.strftime("%A") in hr_sup: 
        count += line.total_attendance 
        self.write(cr,uid,ids,{ 
          'weekend' : count, 
          }) 
    return True 

_columns = { 
    'weekend' : fields.function(_worked_days,method=True,type='float',store=True) 
} 

나는 새로운 버튼을 추가하고 'weekend' : float()에 내 필드를 변경하여이 메서드를 구현하려고 않았고, 아주 잘 작동 않았다 실제로 내가 원하는 것은 내가 저장 버튼을 클릭하면이 모든 계산 만하는 것입니다 ...

답변

2

내가 timsheet 에서이 당신이 할 묶는하는 아이디어, 급여 명세서처럼 사전에 덕분에이 시도 :

class hr_timsheet_sheet(osv.osv) 
    _inherit = 'hr_timsheet_sheet.sheet' 

    def _woked_days(self,cr,uid,ids,weekend,args=None,context=None) 
     sheet = self.browse(cr,uid,ids) 
     for record in sheet: 
      hr_sup= ["Saturday","Friday"] 
      count = 0.0 
      for line in record.period_ids: 
       day = line.name 
       year, month, day = (int(x) for x in day.split('-')) 
       days = datetime.date(year,month,day) 
       if days.strftime("%A") in hr_sup: 
         count += line.total_attendance 
       res[record.id] = count 
     return True 

가 작동됩니다 심지어 arg를 유지할 때에도

+0

내 인생을 구해 주셔서 고맙습니다. – imad

+0

당신이 가장 환영합니다. – user3676872