Краткий ответ: Попробуйте что-то вроде:
$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
в записи для сеанса, который вы хотите открыть.