我有 OpenERP 外部的代码,可用作现有的产品定价系统。我们的每种产品都有一个以某种复杂的方式确定的基本价格。
这个外部系统通过 RPC api 在 OpenERP 中管理和创建销售订单。
我们想从我们的外部定价系统中删除计算价格信息的代码,/之后/它已经确定了一个基本价格。也就是说,在 OpenERP 术语中,每个产品都会有(比如说)十个不同的标价。
从这里开始,我们想使用 OpenERP 的价目表系统对这个基础价格进行进一步的计算。
目前,我有向 OpenERP 询问产品价格的代码:
...
date_order = time.strftime(DEFAULT_SERVER_DATE_FORMAT) #Pricelists are seasonal
price = self.pool.get('product.pricelist').price_get(cr, uid, [pricelist_id], product.id, qty, partner.id, {
'uom': uom,
'date': date_order,
})[pricelist_id]
...
price_taxes = tax_obj.compute_all(cr, uid, tax_objs, price, qty, billing_addr.id, product.id, partner.id)
这可以正常工作,并为我提供特定产品的价格。
价格表树(因为价格表可以基于彼此等)最终调用product_product.price_get(self, cr, uid, ids, ptype='list_price', context=None)
读取 list_price via self.browse( ... )[ptype]
。
我认为修改它的最简单方法是在 product.list_price 上按请求覆盖。我的意思是创建一个在上下文中设置变量的 rpc 方法,并修改 price_get 以读取上下文变量而不是产品对象。
另一种选择是使用线程本地,但这仍然是对 price_get 函数的修改。
我正在考虑覆盖列定义并添加一个 getter 方法,但我不确定它是否会在 self.browse 调用中使用。
你会推荐什么?覆盖price_get
,覆盖列list_price
,还是别的什么?
谢谢您的帮助。