在client上面实现自动计算总值的功能
-
我看了这个模块里它里面有Puchase_order里面有个按钮就是Compute,他可以计算pruduct的总值。
然后我就看addon里面找到了关于他的代码
puchase.py[code]
class purchase_order(osv.osv):
def _calc_amount(self, cr, uid, ids, prop, unknow_none, unknow_dict):
res = {}
for order in self.browse(cr, uid, ids):
res[order.id] = 0
for oline in order.order_line:
res[order.id] += oline.price_unit * oline.product_qty
return res
[/code]puchase_view.xml<button name="button_dummy" states="draft" string="Compute" type="object"/>
但是并不明白他们到底参数是怎么传输,还有就是他们怎么关联呢?
[code]def _calc_amount(self, cr, uid, ids, prop, unknow_none, unknow_dict):
[/code]
具体就是这里的cr,uid,ids,prop,unknow_none,unknow_dict是代表什么意思呢我在“openobject-developer.pdf”里面看到了有关于这个的“10.7.1 On Change”里面提到了context,但是看不明白是怎么使用的
谢谢大家
[[i] 本帖最后由 popkar77 于 2009-7-8 11:22 编辑 [/i]]
-
我说的是 tiny_purchase 模块,不是 addon.purchase,tiny_purchase 要简单直观得多
一切都是在服务器端计算的,button 只是触发一个状态刷新,类似于 Web 页面你按下了 F5[code]
<field name="product_id" on_change="onchange_compute_price(product_id, quantity)"/>
[/code]传入参数是由 view.xml 传入的,前几个参数是固定的:[code]
def onchange_compute_price(self, cr, uid, ids, product_id, quantity):
if not product_id:
return {}
price = self.pool.get('tiny_purchase.product').read(cr, uid, [product_id], ['price'])[0]['price']
return {'value':{'price': price * quantity,}}[/code]