回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我不知道我是否应该在这里问这个问题(我现在想也许主持人会把它移到stackoverflow),但我在openerp或launchpad论坛上没有得到答案。<br/>
在OpenERP 6.0.1中,当在发票窗体中放置一个按钮来执行它时,以下函数将执行它应该执行的操作:</p>
<pre><code>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()
</code></pre>
<p>这意味着在表单中单击此按钮时,发票行的价格单位和折扣将更新。在</p>
<p>我正在尝试为“python code”类型的对象“Invoice”创建一个服务器操作,该操作对菜单项中的所有发票执行此功能。在python代码框中,我写道:</p>
^{pr2}$
<p>但它不起作用。我做错什么了?在</p>
<p><strong>编辑:</strong>
有人能帮我写一个更新所有发票行的函数吗?类似于/account/wizard/account_invoice中的行_状态.py? 在</p>