Odoo 按类别id和计数数量过滤行

Odoo 按类别id和计数数量过滤行,odoo,odoo-8,odoo-9,Odoo,Odoo 8,Odoo 9,我的目标是循环遍历所有具有相同类别id的行,并计算它们的总数量和如果qty\u categ\u total

我的目标是循环遍历所有具有相同类别id的行,并计算它们的总数量和
如果qty\u categ\u total
(我将此字段添加到“product.category”中,而不需要在文本字段中发布消息。问题是我的代码无法按我的意愿工作

例如

如果我有两行具有相同的
categu id
数量2和5,并且我的
categu id。用于折扣的数量是10。消息应该说我需要添加3个具有相同
categu id
的产品以获得折扣

更新

如果有不同类别的产品,我应该得到每个类别的信息

类采购订单(models.Model):
_继承='purchase.order'
折扣警告消息=fields.Text(string='折扣警告',compute='折扣警告')
@api.dependens('订单行.产品id','订单行.产品数量')
def折扣警告(自我):
数量类别合计=0.0
对于self.order\u行中的行:
数量类别总数+=行产品数量
如果数量类别合计<行产品类别id.类别id.数量折扣:
消息=((“如果您再添加%s%s\n,您可以获得折扣”)%(数量类别总计,行.产品id.类别id.名称)
self.discount\u warning\u message=消息

您的代码似乎是正确的,但我会做一些更改。首先,使用
@api.one
让odoo自动循环所有订单,或者为每个循环和
@api.multi
添加一个。其次,多个类别如何

@api.multi
@api.dependens('订单行.产品id','订单行.产品数量')
def折扣警告(自我):
msg=(“如果您再添加%s%s,您可以获得折扣\n”)
对于自我秩序:
类别_qtys={}
对于order.order\U行中的行:
如果line.product\u id.categ\u id不在categ\u qtys中:
类别数量[line.product\u id.categ\u id]=0.0
类别数量[line.product\u id.categ\u id]+=line.product\u数量
msgs=[]
对于类别,以类别为单位的数量。iteritems()
如果数量

一般建议:始终尝试调试您的方法。是否调用了这些方法?如果没有,则这些方法不是问题。

您当前的结果是什么?可能不是您唯一的问题,而是:-#1分配给self.discount#u警告消息应该不在循环中。-#2您不必费心检查Categu#u id,尽管提到它们是relevant.@T.Nel是的,你的观点都非常正确!是的,我调试了它,该方法有效。如果有多个类别,我可能会为每个类别收到两条消息。我是说每个类别收到两条消息。我更新了我的问题。@Chaban33你应该已经为每个类别有一条消息行和这个答案。msgs是一个消息列表。一条消息是按类别添加(如果类别中至少有一个订单且折扣数量不足),则所有消息都加入折扣\u警告\u消息我很抱歉这是我的测试错误。我回答末尾的调试只是一个一般性建议,请编辑它。