2016-10-10 3 views
0

У меня есть следующий OpenERP 7 метод:Переписать метод OpenERP 7 на синтаксис Odoo 8?

# 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 

Какой должен быть правильный код?

+0

Что вы е для? Какую ошибку вы получаете? – alexbclay

+0

Как назвать эту функцию в вашей стороне? зависит от звонка, нам нужно добавить другого декоратора в odoo v8 –

ответ

1

Похоже, вы устанавливаете функциональное поле. Вместо этого вы должны быть в состоянии определить поле как related field так:

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

+0

Спасибо @alexbclay. Я не пытаюсь сохранить это поле, потому что это только дополнительная ссылка для некоторых людей. По этой причине я создал вычисленное поле 'inv_vat = fields.Char (compute = '_ get_vat_num', string =" CIF/NIF ")'. Моя проблема состоит в том, чтобы переписать функцию. Я иду попробовать ваше решение. –

+1

Я пробовал со связанным полем с 'store = False', и он работает! Спасибо за пример функции, это тоже очень полезно. –

+0

Без проблем, рад, что я мог бы помочь! – alexbclay