Odoo v8 PHP插入One2many或Many2many字段

时间:2015-09-17 16:42:25

标签: php odoo-8

我正在尝试在Odoo v8中使用PHP创建发票及其发票行。 但是,在创建发票行时,我需要填充invoice_line_tax_id,这是一个很多的字段。

我试过阅读此页面,但我无法弄明白:https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model.write

以下是我创建发票行的方式

$result = $models->execute_kw($db, $uid, $password,
    'account.invoice.line', 'create',
    array(array(
        'invoice_id'=> 15,
        'product_id'=> 2,
        'quantity'=> 1,
        'name'=> 'Abonnement standard' ,
        'price_unit' => 50 ,
        'invoice_line_tax_id' => array( 0 , false , array( 2 ) )
    )));

我有以下错误:

字符串'Traceback(最近一次调用最后一次):   在xmlrpc_return中输入文件“/usr/lib/python2.7/dist-packages/openerp/service/wsgi_server.py”,第75行     result = openerp.http.dispatch_rpc(service,method,params)   在dispatch_rpc中输入文件“/usr/lib/python2.7/dist-packages/openerp/http.py”,第114行     result = dispatch(method,params)   发送文件“/usr/lib/python2.7/dist-packages/openerp/service/model.py”,第37行     res = fn(db,uid,* params)   文件“/usr/lib/python2.7/dist-packages/openerp/service/model.py”,li'...(长度= 2004)

如果我只是这样放上invoice_line_tax_id:

'invoice_line_tax_id' => array( 0 , false , 2 )

它有效,但没有插入税。

知道如何使这项工作吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

对我来说,它就是这样的:

'invoice_line_tax_id'=>array(array(4, $tax_id,false))

我使用了4选项,因为已经创建了税。

我认为另一个数组是必要的,因为在文档中说:

  

此格式是按顺序执行的三元组列表

答案 1 :(得分:0)

对于那些与odoo 10斗争的人(比如我):

假设您的tax_id 1存在于account_tax中,正确的语法是invoice_line_tax_ids(请注意最后的s):

   'invoice_line_tax_ids'=> [[4,[1],false]]