2016-04-06 65 views
1

我在發票模塊中創建一個函數。你應該做的是讓這個功能的產品線是平等的發票,並返回每個產品的金額。這被下面的圖像中更好地解釋:Odoo錯誤:TypeError:'int'對象不可迭代

enter image description here

例如,產品「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 object is not iterable

非常感謝您的幫助和花費的時間。我很欣賞任何建議或建議,以獲得您想要做的事情。

+0

事情是,如果您將其存儲在整數字段中,則每個發票只有1個計數。它不會幫助你,你必須做的是爲報告製作一個功能。 無論如何,你不需要第二次迭代,第一次你已經在線。您必須做的是將產品保存在例如字典中,並且如果密鑰已經存在,則將該金額添加到該字典中。你仍然不能保存它作爲一個領域。 – dccdany

回答

0

其實你有for循環的問題。 你正在嘗試整數循環。 po.product_id.id是整數所以我覺得沒有必要使用該for循環甚至認爲,如果你想使用的循環使用是這樣的: 產品在[po.product_id.id]

感謝

1

似乎您試圖環路上一個整數。如果您想增加計數器,請嘗試在對象上循環。 對於防爆:

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內循環。