2013-04-11 50 views
2

仍然使用血腥的OpenOffice Writer來自定義我的sale_order.rml報告。什麼是使用max函數的corret語法

在我的銷售訂單中,我有6個訂單行,提供6種不同交貨時間。我需要顯示六個值中的最大值。

經過多次嘗試之後,我放棄了使用reduce函數,因爲它在大多數情況下工作不正常或不工作。我從來沒有見過這樣的事情。

所以我想我會用最大封裝環如給出一個嘗試:

[[ max(repeatIn(so.order_line.delay,'d')) ]] 

我最大的交貨時間是20,我希望看到20(是很好,這將是太容易了,不是!)。

它返回

{'d': 20.0} 

至少它包含了我後的值。 但是;如果我試圖操縱這個結果,它就會完全消失。 我曾嘗試:

int(re.findall(r'[0-9]+', max(repeatIn(so.order_line.delay,'d')))[0]) 

從Python窗口的偉大工程,但返回的OpenERP絕對沒有。

我導入再從我sale_order.py文件,我已經重新編譯成sale_order.pyo:

import time 
    import re 
    from datetime import datetime, timedelta 
    from report import report_sxw 

    class order(report_sxw.rml_parse): 
     def __init__(self, cr, uid, name, context=None): 
      super(order, self).__init__(cr, uid, name, context=context) 
      self.localcontext.update({ 
       'time': time, 
       'datetime': datetime, 
       'timedelta': timedelta, 
       're': re, 
      }) 

我當然有重新啓動服務器多次。我的測試安裝坐在窗戶上。

所以任何人都可以告訴我我做錯了什麼,因爲我可以使它從Python工作,但不能從OpenOffice Writer中使用!

感謝您的幫助!

EDIT 1:

格式

{'d': 20.0} 

,根據蟒,字典。不過在Python中,提取從字典就可以做到這一點,像這樣的整數:

>>> dict={'d': 20.0} 
    >>> print(dict['d']) 
    20.0 

但我怎麼能轉這OpenERP的作家???

回答

0

我已經設法通過導入functools並在sale_order.py文件的參數中聲明reduce函數來獲得我想要的結果。

然後,我簡單地使用了reduce和max函數的組合,它的工作原理與預期完全一樣。

正確的語法如下:

repeatIn(objects,'o') 
    reduce(lambda x, y: max(x, y.delay), o.order_line, 0) 

沒有別的要求。

享受!