我不知道我是否應該問這裏(即時通訊現在想也許一個版主會將它移動到stackoverflow),但即時通訊沒有得到在openerp或launchpad論壇上的答案。
在OpenERP的6.0.1,下面的函數做什麼它應該做的,當一個按鈕被放置在發票的形式來執行它:openerp服務器動作 - 蟒蛇代碼
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()
這是說,發票行價格單位和折扣在表單中單擊此按鈕時更新。
即時嘗試創建一個類型爲「python代碼」的對象「發票」的服務器操作,該操作在菜單項的所有發票上執行此功能。在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})
但它不起作用。我究竟做錯了什麼?
編輯: 誰能幫我寫一個更新功能的所有發票行類似於/account/wizard/account_invoice_state.py?
沒有任何線索的人? – 3a2roub 2012-03-19 11:58:38
你能更精確地描述「它不工作」的部分嗎? – 2012-03-19 13:56:52
好吧,如果我在語法上犯了錯誤,當雙擊菜單項時,我會得到相應的錯誤。現在它不會導致錯誤,所以它只被執行發票不會改變。就好像該功能在錯誤的地方執行並且不適用於任何實際的發票一樣。希望我明白了 – 3a2roub 2012-03-19 14:17:40