我正在发票模块中创建一个函数。您应该做的是让这个功能产品线是相等的发票,并退还每件产品的金额。下面的图片更好地解释了这一点:

例如,产品"Aceite Hidraulico“在发票上出现了3次。然后,函数应该返回一个3为该产品。
好吧,这是我的account.invoice.py中的函数:
total_quantity = fields.Integer(compute='count_invoice_invoice', string = 'Cantidad Productos', readonly = True, store=True)
@api.one
@api.depends('invoice_line_ids.product_id')
def count_invoice_invoice(self):
res = {}
counter = 0
for po in self.invoice_line_ids:
for product in po.product_id.id:
counter += 1
res [self.total_quantity] = counter
return res对于区分一个产品和另一个产品的函数,我使用id字段product.product模型。但是,当我尝试创建发票时,Odoo向我展示了一个消息int类型字段不能是可迭代的。这是一个问题,因为区分产品的id字段是整数。
我该怎么办?
这是向Odoo显示的信息:
对于po.product_id.id中的产品: TypeError:
int对象不可迭代
非常感谢您的帮助和花费的时间。我感谢你的任何建议或建议,以得到你想做的事情。
发布于 2016-04-07 13:15:07
好像你想在整数上循环。如果要增加计数器,请尝试在对象上循环它。代表:
for po in self.invoice_line_ids:
for product in po.product_id:
counter += 1
res [self.total_quantity] = counter
return res通过这种方式,您可以遍历对象,如果需要获取每个产品id,则可以通过循环中的product.id获得它。
发布于 2016-04-07 09:10:16
实际上,您对for循环有问题。您正在尝试对整数进行循环。po.product_id.id 是整数,所以我认为没有必要使用这个for循环,即使您想要使用for循环,如:对于po.product_id.id中的产品
谢谢
https://stackoverflow.com/questions/36454763
复制相似问题