使用API获取POS订单详情 - xiaohao0576/odoo-doc GitHub Wiki

源码文件

https://github.com/odoo/odoo/blob/a99d942887dc9db58b0ffb3797a705cb7ffe1537/addons/pos_self_order/controllers/orders.py#L108

    @http.route('/pos-self-order/get-orders', auth='public', type='json', website=True)
    def get_orders_by_access_token(self, access_token, order_access_tokens):
        pos_config = self._verify_pos_config(access_token)
        session = pos_config.current_session_id
        orders = session.order_ids.filtered_domain([
            ("access_token", "in", order_access_tokens),
            ("date_order", ">=", fields.Datetime.now() - timedelta(days=7)),
        ])

        if not orders:
            return {}

        return self._generate_return_values(orders, pos_config)

通过以上源码可以看出,通过pos.config的access_token和 order_access_tokens,可以查询出后台最近7天的订单详细信息

请求参数

请求URL: https://mydomain.odoo.com/pos-self-order/get-orders/ JSON请求体实例如下

{
    "id": 2,
    "jsonrpc": "2.0",
    "method": "call",
    "params": {
        "access_token": "aac5e277ee37455b",
        "order_access_tokens": [
            "f5f14a00-6261-4be4-97d0-46205fb829ed"
        ]
    }
}

注意,order_access_tokens是一个列表,可以放入多个订单token

返回的JSON对象

返回的对象包含以下对象

    def _generate_return_values(self, order, config_id):
        return {
            'pos.order': order.read(order._load_pos_data_fields(config_id.id), load=False),
            'pos.order.line': order.lines.read(order._load_pos_data_fields(config_id.id), load=False),
            'pos.payment': order.payment_ids.read(order.payment_ids._load_pos_data_fields(order.config_id.id), load=False),
            'pos.payment.method': order.payment_ids.mapped('payment_method_id').read(order.env['pos.payment.method']._load_pos_data_fields(order.config_id.id), load=False),
            'product.attribute.custom.value':  order.lines.custom_attribute_value_ids.read(order.lines.custom_attribute_value_ids._load_pos_data_fields(config_id.id), load=False),
        }