既存の製品価格設定システムとして機能する OpenERP の外部コードがあります。各製品には、やや複雑な方法で決定される基本価格があります。
この外部システムは、RPC API を介して OpenERP で販売注文を管理および作成します。
価格情報を計算する外部価格設定システムからコードを削除したいと考えています。 /after/ 既に基本価格が決定されています。つまり、OpenERP の用語では、各製品には (たとえば) 10 の異なる定価があります。
ここから、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 を読み取りますself.browse( ... )[ptype]
。
これを変更する最も簡単な方法は、product.list_price をリクエストごとにオーバーライドすることだと思います。これは、コンテキストに変数を設定する rpc メソッドを作成し、price_get を変更して製品オブジェクトではなくコンテキスト var を読み取ることを意味します。
もう 1 つの方法は、スレッド ローカルを使用することですが、これは price_get 関数の変更です。
列の定義をオーバーライドして getter メソッドを追加することを考えていましたが、それが self.browse 呼び出しから使用されるかどうかはわかりません。
あなたは何をお勧めします?オーバーライドするかprice_get
、列をオーバーライドするlist_price
か、または何か他のものをオーバーライドしますか?
助けてくれてありがとう。