在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]