2015-11-20 4 views
2

Я пытаюсь обновить существующий sale.order, связав существующий счет-фактуру с ним. Я попробовал несколько вещей, чтобы добавить номер счета-фактуры в invoice_ids массив заказа клиента, но ничего не работает.Правильный синтаксис для записи в Odoo many2many с php API

Вот мой код:

$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

Я думаю, что с моим синтаксисом что-то не так.

ответ

1

Попробуйте с этим кодом:

#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")) 

Как правило, мы должны дать формат как

+0

Спасибо. Это сработало для меня отлично. –

0

Ниже я отправляю кнопку [(6,0, [ID1, ID2, и т.д.].)] фрагмент кода для обновления Many2many с использованием ripcord (php rpc library).

$models->execute_kw($db, $uid, $password, 'sale.order', 'write', 
             array('order_id'=> $order_id, 
               'invoice_ids'=>array(array(6,0,array($invoice_ids))) 
              ) 
             ); 

Надеюсь, это поможет в вашем случае.