2014-01-31 73 views
0

我創建了一個自定義字段在工資單屏和在該領域稱爲caldays我想from_dateto_date之間獲得天的OpenERP與平變化的功能,請幫助我的代碼 我得到了下面的代碼,但我怎麼可以把它onchange function如何使用openerp中的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。不要忘了進口(進口datetime和進口數學) 你可以把你的領域在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"/> 

,併爲您的PY文件,

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

如果您使用的是開發人員模式,那麼您可以在視圖頂部看到調試視圖選項,在選擇「編輯窗體視圖」選項中,您會看到一個窗口,其中定義了視圖,添加你的領域並保存。現在重新加載選項卡。你將能夠看到這些領域。作爲參考,我已經把這些字段放在我對xml的答案中。 – Mansi

相關問題