调用open_session_cb在odoo 8.0中为pos创建一个新会话

时间:2019-04-25 19:02:45

标签: php odoo odoo-8

我正在尝试通过api服务在odoo 8.0中的pos中创建一个新会话,但是参数有错误

我使用php与odoo服务建立联系

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

tha给我下一个错误: TypeError:open_session_cb()至少接受4个参数(给定3个参数)

1 个答案:

答案 0 :(得分:0)

简短答案:尝试类似的方法

$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, cruid,但是您需要提供变量ids,该变量应为包含与模型id中的字段pos.session.opening对应的整数的数组 在您要打开的会话的记录上。