首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将OpenERP 7方法重写为Odoo 8语法?

将OpenERP 7方法重写为Odoo 8语法?
EN

Stack Overflow用户
提问于 2016-10-10 16:21:17
回答 1查看 107关注 0票数 0

我有以下OpenERP 7方法:

代码语言:javascript
复制
#   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语法。我试过了,但没有用:

代码语言:javascript
复制
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

正确的代码应该是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-10 16:33:33

看起来你在设置一个功能域。相反,您应该能够将该字段定义为如下所示的相关领域

代码语言:javascript
复制
inv_vat = fields.Char(string="VAT", related="partner_id.vat")

如果你真的想把它作为一个功能域,你就会这样做。

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39962598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档