2014-01-31 5 views
0

내가 코드를 아래에있어 내가 onchange를 기능 openerp에 from_dateto_date 사이 일 싶어 급여 명세서 화면이 분야에서라는 caldays 코드 좀 도와주십시오 사용자 정의 필드를 만든하지만 어떻게 내가 onchange functionopenerp에서 onchange 함수를 사용하여 두 날짜 사이의 일 수를 계산하는 방법은 무엇입니까?

넣어
datej = str(payslip.date_to) 

datek = str(payslip.date_from) 

dj = datej[-2:] 

x=0 

new = 0 

while (x<=31): 

x= x+1 

if str(x) == dj or "0"+str(x) == dj: 

new= x 

dk = datek[-2:] 

y=0 

old = 0 

while (y<=31): 

y= y+1 

if str(y) == dk or "0"+str(y) == dk: 

old= y 

caldays = new-old + 1 

result = caldays 

답변

1

시도해보십시오. 며칠 동안이 경우 두 개의 인수 (예 : date_from 및 date_to)를 제공해야합니다. 수입 (수입 날짜 및 가져 오기 수학을) 잊지 마세요 당신은 XML이 당신을 도울 것입니다

<field name="date_from" on_change="get_number_of_days(date_from,date_to)"/> 
<field name="date_to" on_change="get_number_of_days(date_from,date_to)"/> 
<field name="number_of_days_temp"/> 

하고 평 파일

,

def get_number_of_days(self, date_from, date_to): 
    """Returns a float equals to the timedelta between two dates given as string.""" 
    if (date_to and date_from) and (date_from <= date_to): 
     DATETIME_FORMAT = "%Y-%m-%d %H:%M:%S" 
     from_dt = datetime.datetime.strptime(date_from, DATETIME_FORMAT) 
     to_dt = datetime.datetime.strptime(date_to, DATETIME_FORMAT) 
     timedelta = to_dt - from_dt 
     diff_day = timedelta.days + float(timedelta.seconds)/86400 
     result['value']['number_of_days_temp'] = round(math.floor(diff_day))+1 
    else: 
     result['value']['number_of_days_temp'] = 0 

    return result 

희망을 당신의 필드를 넣을 수 있습니다.

+0

감사합니다. 다시 해 주셔서 감사합니다. 개발자 모드에서 프런트 엔드 (GUI)에서 추가 할 수있는 방법을 말씀해 주시겠습니까?이 글에 대한 새로운 내용은 – keshav

+0

입니다. http://openerp-server.readthedocs.org /en/latest/03_module_dev_03.html – Mansi

+0

개발자 모드를 사용하는 경우보기 상단에서 디버그보기 옵션을 선택하고 "edit formview"옵션을 선택하면보기가 정의 된 창을 얻을 수 있습니다. 필드를 거기에 추가하고 저장하십시오. 이제 탭을 다시로드하십시오. 당신은 그 들판을 볼 수있을 것입니다. 참조 용으로 xml에 대한 해당 필드를 입력했습니다. – Mansi

관련 문제