私はここでこれを尋ねるべきかどうかは分かりません(私は現在、モデレータがstackoverflowにそれを移動させると考えています)が、openerpまたはlaunchpadフォーラムでは回答が得られません。これは、請求書のライン価格単位と割引と言うことであるopenerpサーバーの動作 - Pythonコード
class account_invoice(osv.osv):
_inherit = "account.invoice"
""" Function to update all lines on invoice """
def update_invoice(self, cr, uid, ids, context=None):
if context is None:
context = {}
line_obj = self.pool.get('account.invoice.line')
invoice_ids = self.browse(cr, uid, ids, context)
for invoice in invoice_ids:
for line in invoice.invoice_line:
if line.product_id:
res = line_obj.product_id_change(cr, uid, [line.id], (line.product_id and line.product_id.id or False), uom=(line.uos_id and line.uos_id.id or False), qty=(line.quantity or 0),
name=(line.name or ''), type=(invoice.type or False), partner_id=invoice.partner_id.id, fposition_id=invoice.fiscal_position.id, price_unit=(line.price_unit or 0),
address_invoice_id=(invoice.address_invoice_id and invoice.address_invoice_id.id or False), currency_id=(invoice.currency_id and invoice.currency_id.id or False), context=context)
price_unit = res['value']['price_unit']
discount = res['value']['discount']
line_obj.write(cr, uid, [line.id], {'price_unit': price_unit})
line_obj.write(cr, uid, [line.id], {'discount': discount})
return True
account_invoice()
:OpenERP 6.0.1、次の関数で
は何のボタンが請求書フォームに配置されたときにそれを実行するために行うことになっていこのボタンがフォーム内でクリックされると更新されます。
私はメニュー項目からのすべての請求書に対してこの機能を実行する "python code"タイプのオブジェクト "Invoice"のサーバーアクションを作成しようとしています。 Pythonコードボックスで、私は書いた:
inv = self.pool.get('account.invoice')
line_obj = self.pool.get('account.invoice.line')
for invoice in inv.browse(cr, uid, ids):
for line in invoice.invoice_line:
res = line_obj.product_id_change(cr, uid, [line.id], (line.product_id and line.product_id.id or False), uom=(line.uos_id and line.uos_id.id or False), qty=(line.quantity or 0), name=(line.name or ''), type=(invoice.type or False), partner_id=invoice.partner_id.id, fposition_id=invoice.fiscal_position.id, price_unit=(line.price_unit or 0), address_invoice_id=(invoice.address_invoice_id and invoice.address_invoice_id.id or False), currency_id=(invoice.currency_id and invoice.currency_id.id or False), context=context)
price_unit = res['value']['price_unit']
discount = res['value']['discount']
line_obj.write(cr, uid, [line.id], {'price_unit': price_unit})
line_obj.write(cr, uid, [line.id], {'discount': discount})
しかし、それは動作しません。私は間違って何をしていますか?
EDIT: は誰も私が更新関数を書くことができます/account/wizard/account_invoice_state.pyと同様のすべての請求書行?
見当もつかない誰ですか? – 3a2roub
"それは動作しない"部分でより正確に記述できますか? –
もし私が文法を間違えてしまった場合は、メニュー項目をダブルクリックするとエラーが発生します。今はそれが原因でエラーが発生しないので、請求書のみが変更されることはありません。関数が間違った場所で実行されていて実際の請求書に適用されていないかのように扱われます。 – 3a2roub