我有以下OpenERP 7方法:
# Function to get the vat number (CIF/NIF) and then show it on invoice form view
def _get_vat_num(self, cr, uid, ids, field_name, args=None, context=None):
partner_pool = self.pool.get('res.partner')
invoice_pool = self.pool.get('account.invoice')
res = {}
for inv in self.browse(cr, uid, ids, context=context):
invoice = invoice_pool.browse(cr,uid, inv.id, context=None)
partner = partner_pool.browse(cr, uid, invoice.partner_id.id, context=None)
res[inv.id] = partner.vat
return res
inv_vat = fields.Char(compute='_get_vat_num', string="CIF/NIF")我需要将它重写为Odoo v8语法。我试过了,但没有用:
def _get_vat_num(self):
partner_pool = self.env['res.partner']
invoice_pool = self.env['account.invoice']
res = {}
for inv in self.browse(self.id):
invoice = invoice_pool.browse(inv.id)
partner = partner_pool.browse(invoice.partner_id.id)
res[inv.id] = partner.vat
return res正确的代码应该是什么?
发布于 2016-10-10 16:33:33
看起来你在设置一个功能域。相反,您应该能够将该字段定义为如下所示的相关领域:
inv_vat = fields.Char(string="VAT", related="partner_id.vat")如果你真的想把它作为一个功能域,你就会这样做。
inv_vat = fields.Char(string="VAT", compute="_get_vat_num")
def _get_vat_num(self):
# self is a recordset of account.invoice records
for invoice in self:
# to set a functional field, you just assign it
invoice.inv_vat = invoice.partner_id.vat查看记录集文档:https://www.odoo.com/documentation/8.0/reference/orm.html#recordsets
和计算字段文档:https://www.odoo.com/documentation/8.0/reference/orm.html#computed-fields
https://stackoverflow.com/questions/39962598
复制相似问题