Я пытаюсь в Odoo v8 создать счет и его строки счета с помощью PHP.
Однако при создании строки счета-фактуры мне нужно заполнить invoice_line_tax_id, который является полем many2many.
Я пытался прочитать эту страницу, но я не могу понять это: 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 (последний вызов был последним):
Файл «/usr/lib/python2.7/dist-packages/openerp/service/wsgi_server.py», строка 75, в xmlrpc_return
result = openerp.http.dispatch_rpc (сервис, метод, параметры)
Файл «/usr/lib/python2.7/dist-packages/openerp/http.py», строка 114, в dispatch_rpc
результат = отправка (метод, параметры)
Файл «/usr/lib/python2.7/dist-packages/openerp/service/model.py», строка 37, в отправке
res = fn (дБ, 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 )
Это работает, но налог не включен.
Есть идеи, как заставить это работать?
Заранее спасибо.
Для меня это сработало так:
'invoice_line_tax_id'=>array(array(4, $tax_id,false))
Я использовал 4 варианта, потому что налог уже создан.
Я думаю, что другой массив необходим, потому что в документации сказано:
Этот формат представляет собой список триплетов, выполняемых последовательно
Для тех (как я), которые борются с odoo 10:
Предполагая, что ваш tax_id 1 существует в account_tax, правильный синтаксис — invoice_line_tax_ids (обратите внимание на последние s):
'invoice_line_tax_ids'=> [[4,[1],false]]