2017-09-11 9 views
-2

저는 total_attendance에 기초하여 그를 위해 급여를 만들 수 있도록 각 직원에 대해 time_sheet_sheet.sheet에서 총 출석을 얻으려고 (def get_worked_day_lines) 시도했습니다.time_sheet에서 전체 출석을 얻습니다.

class hr_payslip(osv.osv): 
_inherit = 'hr.payslip' 


_columns = { 

} 


def get_worked_day_lines(self, cr, uid, ids, employee_id, date_to, context=None): 

      res = [] 
    working_days = self.pool.get('hr_timesheet_sheet.sheet') 
    for record in self.browse(cr, uid, ids, context = context): 
     search_sheet = working_days.search(cr, uid, [('state','=','draft')]) 
     for rec in working_days.browse(cr, uid, search_sheet, context=None): 

      attendances = { 
      'name': _("Normal Working Days paid at 100%"), 
      'sequence': 1, 
      'code': 'WORK100', 
      'number_of_days': 0.0, 
      'number_of_hours': 0.0, 
      #'contract_id': , 
     } 
      if rec.day == record.numero : 

       attendances['code'] = rec.day 
      leaves = {} 
      leaves = [value for key,value in leaves.items()] 
      res += [attendances] + leaves 
    return res 

PS : 나는 둘 때 search_sheet = working_days.search(cr, uid,[('state','=','draft')]) 나는 모든 초안 시간 시트

output for search_sheet = working_days.search(cr, uid,[('state','=','draft')])에서 total_attendance을 얻을 수있을 것입니다

+0

스택 오버플로에 오신 것을 환영합니다! 코드를 게시 할 때 [MCVE]로 단순화하십시오. 질문은 간단하지만 도움이되는 사람은 관련 부분을 찾기 위해 코드를 읽는 데 몇 분의 시간을 소비해야합니다. 당신이 이미 당신의 코드와 그것이 어떻게 작동 하는지를 알고 있기 때문에, 당신은 가장 중요한 물건을 꺼내 당신이 시간을 돕고 싶어하는 사람들을 구할 수 있습니다. –

+0

감사합니다. 파이썬과 odoo를 조금이라도 잘 아는 사람이라면 누구나 이해할 수 있도록 가능한 한 간단하게 코드를 작성하려고 노력했습니다. 여기서는 탐색 및 검색 만해도 결과를 얻을 수 없습니다. ... –

+1

코드는 간단 할 수도 있지만 예제 데이터를 제공하지 않으면 문제가 재현되지 않습니다. 또한 문제가 무엇인지 명확하지 않습니다.이 함수의 출력이 지금과 같이 보이고 어떻게 보이게할까요? – cmaher

답변

0
실제로 OpenERP v7의 작업, 그래서 무슨 일이 일어나고 있는지 알고

이리. [('employee_id', '=', employee_id)] ​​검색 기준으로 아무것도 얻지 못하면 employee_id 인수의 값이 데이터베이스의 employee_id와 같지 않기 때문에 해당 조건을 만족하지 못합니다.

당신이해야 할 일은 함수의 인수로 전달 된 employee_id의 값을 확인하는 것입니다. 값이 정수인 경우 해당 ID가 데이터베이스에 있는지 확인하십시오. 해당 테이블에 해당 ID가 있으면 데이터가 표시되어야합니다. employee_id의 값이 False 또는 None이면 검색에서 어떤 데이터도 반환하지 않습니다.