Odoo PoS 获取订单产品

Odoo PoS get orderline product

我正在更新 Point_Of_Sale 中的 update_payment_summary 函数,该函数是 PaymentScreenWidget[=22= 的一部分]. 现在我想从订单中检索产品。

我试过

var order = this.pos.get('selectedOrder');
var orderlines = order.get('orderLines').models;

但是当我打印订单时,我得到 [object Object]

知道如何获取每个订单行的产品对象吗?

使用 get_orderlines() 函数从特定订单中获取订单行。

var order = this.pos.get_order();
var products = _.map(order.get_orderlines(), function (line) {return line.product; });
console.log(products);

这里我用户 Underscore.js 创建了一个产品列表。

您可以使用产品列表进行迭代循环,例如,

for(var i =0; i < products.length; i++)
    console.log(products[i].id);

是的,它显示对象是有原因的。

OrderlineCollection 定义。

module.OrderlineCollection = Backbone.Collection.extend({
        model: module.Orderline,
});

订单模型中的订单行定义。

orderLines:     new module.OrderlineCollection()

因此,如果您观察上面的代码,它表明 orderline 是 OrderlineCollection 模型的对象,当您从订单模型获取 orderlines 时,它将为您提供 [=26= 的对象]OrderlineCollection.

为了确定对象内部有什么,您可以遍历它或者您可以打印该对象的键值。

alert(orderline.forEach(function(k,v){k + " => + v}));

或者您可以遍历订单行。

for (line in orderline){
    alert(line.product_id);
}