您的代码似乎是正确的,但我会更改一些内容。第一次使用
@api.one
让odoo自动循环所有订单,或为每个循环添加一个以上订单,以及
@api.multi
. 第二,不止一个类别呢?
@api.multi
@api.depends('order_line.product_id', 'order_line.product_qty')
def discount_warning(self):
msg = _("You can get discount if you add %s more %s\n")
for order in self:
categ_qtys = {}
for line in order.order_line:
if line.product_id.categ_id not in categ_qtys:
categ_qtys[line.product_id.categ_id] = 0.0
categ_qtys[line.product_id.categ_id] += line.product_qty
msgs = []
for categ, qty in categ_qtys.iteritems():
if qty < categ.qty_for_discount:
msgs.append(msg % (qty, categ.name))
if msgs:
order.discount_warning_message = "".join(msgs)
一般建议:总是尝试调试您的方法。他们都打过电话了吗?如果不是,方法就不是问题。