【问题标题】:Odoo PoS get orderline productOdoo PoS 获取有序产品
【发布时间】:2016-06-16 09:12:34
【问题描述】:
我正在更新 Point_Of_Sale 中的 update_payment_summary 函数,该函数是 PaymentScreenWidget 的一部分。
现在我想从订单中检索产品。
我试过了
var order = this.pos.get('selectedOrder');
var orderlines = order.get('orderLines').models;
但是当我打印订单时,我得到 [object Object]
任何想法如何获取每个订单行的产品对象?
【问题讨论】:
标签:
javascript
python
openerp
product
point-of-sale
【解决方案1】:
是的,它显示对象是有原因的。
OrderlineCollection 定义。
module.OrderlineCollection = Backbone.Collection.extend({
model: module.Orderline,
});
订单模型中的订单线定义。
orderLines: new module.OrderlineCollection()
因此,如果您观察上面的代码,它表明 orderline 是 OrderlineCollection 模型的对象,当您从 order 模型中获取 orderlines 时,它会为您提供 OrderlineCollection 的对象。
为了识别对象内部的内容,您可以遍历它,或者您可以从该对象打印键值。
alert(orderline.forEach(function(k,v){k + " => + v}));
或者你可以遍历订单线。
for (line in orderline){
alert(line.product_id);
}
【解决方案2】:
使用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);