Вызовите open_session_cb, чтобы создать новый сеанс для pos в odoo 8.0 - PullRequest
1 голос
/ 25 апреля 2019

Я пытаюсь создать новый сеанс в pos в odoo 8.0 службой API, но у меня есть ошибка с аргументами

Я использую php для соединения со службами odoo

    $models->execute_kw(
        $db,
       $uid,
       $password,
       'pos.session.opening',
       'open_session_cb',
       array(),
       array()
    );

Это дает мне следующую ошибку: TypeError: open_session_cb () принимает как минимум 4 аргумента (3 дано)

1 Ответ

0 голосов
/ 01 мая 2019

Краткий ответ: Попробуйте что-то вроде:

$models->execute_kw(
   $db,
   $uid,
   $password,
   'pos.session.opening',
   'open_session_cb',
   array(array($pos_session_id)),
   array()
);

Длинный ответ: функция open_session_cb определена в <path_to_v8>/addons/point_of_sale/wizard/pos_session_opening.py строке 41 следующим образом:

41 def open_session_cb(self, cr, uid, ids, context=None):
       ...
44     wizard = self.browse(cr, uid, ids[0], context=context)

На один уровень выше в стеке вызовов это <path_to_v8>/openerp/service/model.py строка 164 (цитируется ниже)

160 def execute_cr(cr, uid, obj, method, *args, **kw):
161     object = openerp.registry(cr.dbname).get(obj)
162     if object is None:
163         raise except_orm('Object Error', "Object %s doesn't exist" % obj)
164     return getattr(object, method)(cr, uid, *args, **kw)

Итак, при вызове open_session_cb аргументы self, cr и uid передаются вызывающей функцией, но вам необходимо указать переменную ids, которая, как ожидается, будет массивом, содержащим целое число, соответствующее полю id от модели pos.session.opening в записи для сеанса, который вы хотите открыть.

...