Я пытаюсь обновить существующий sale.order, привязав к нему существующий счет. Я пробовал несколько вещей, чтобы добавить идентификатор счета к invoice_ids массив заказа на продажу, но ничего не работает.
Вот мой код:
$link = $models->execute_kw($db, $uid, $password, 'sale.order', 'write',
array(array($order_id),
array('invoice_ids'=>$invoice_id)));
Это возвращает 1, но это ничего не меняет. Я также попробовал этот метод, но безуспешно: https://www.odoo.com/documentation/8.0/reference/orm.html#openerp.models.Model.write
Я думаю, что-то не так с моим синтаксисом.
Попробуйте с этим кодом:
#general syntax for many2many field
$many2many_field = array(
new xmlrpcval(
array(
new xmlrpcval(6,"int"),
new xmlrpcval(0,"int"),
new xmlrpcval(array(new xmlrpcval($order_id,"int")),"array")
), "array")
);
array('invoice_ids'=> new xmlrpcval($many2many_field, "array"))
Вообще нам нужно дать формат как [(6,0, [ID1, ID2 и др.])]
Ниже я публикую фрагмент кода для обновления Many2many с помощью ripcord
(библиотека php rpc).
$models->execute_kw($db, $uid, $password, 'sale.order', 'write',
array('order_id'=> $order_id,
'invoice_ids'=>array(array(6,0,array($invoice_ids)))
)
);
Я надеюсь, что это может помочь в вашем случае.