【发布时间】:2016-04-06 14:52:50
【问题描述】:
我正在发票模块中创建一个函数。你应该做的是让这个功能产品线是相等的发票并返回每个产品的金额。下图更好地解释了这一点:
例如,产品“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 的消息:
for product in po.product_id.id:TypeError:
int对象不可迭代
非常感谢您的帮助和所花费的时间。我很感激任何建议或建议,以获得您想要做的事情。
【问题讨论】:
-
问题是,如果将其存储在整数字段中,则每张发票将只有 1 个计数。它不会帮助你,你要做的就是为报告创建一个函数。无论如何,你不需要第二次迭代,第一次迭代你已经在行了。您要做的是将产品保存在例如字典中,如果键已经存在,则将数量添加到该字典中。您仍然不能将其保存为字段。