使用API获取POS订单详情 - xiaohao0576/odoo-doc GitHub Wiki
源码文件
@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),
}