Fatura modülünde bir işlev yapıyorum. Yapmanız gereken, bu işlev satırlarının eşit fatura olması ve ürün başına miktarı iade etmektir. Bu daha iyi aşağıdaki resimde açıklanmıştır:Odoo Hata: TypeError: 'int' nesnesi yinelenebilir değil
Örneğin, ürün "Aceite Hidráulico" faturada 3 kez görünür. Daha sonra işlev bu ürün için 3 döndürmelidir.
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
işlevi ayırt etmek tek ürün ile diğeri arasında, ben kimliği alan product.product modeli kullanmak için:
Eh, bu benim account.invoice.py var fonksiyonudur. Ama faturayı oluşturmaya çalıştığımda, Odoo bana mesaj int tipi alanların iterables olamayacağını gösteriyor. Bu bir problem çünkü ürünleri ayırt etmek için kimlik alanı bir tamsayıdır.
Ne yapmalıyım?
Bu Odoo gösteren mesajdır:
for product in po.product_id.id:
TypeError:
int
object is not iterable
geçirdi Yardımlarınız ve zaman için size çok teşekkür ederim. Ne yapmak istediğinizi öğrenmek için önerilerinizi veya tavsiyelerinizi takdir ediyorum.
Bu, bir tamsayı alanında saklarsanız, fatura başına yalnızca 1 adete sahip olursunuz. Size yardımcı olmayacak, yapmanız gereken rapor için bir işlev yapmaktır. Her neyse, ikinci yinelemeye ihtiyacın yok, ilk satırda zaten var. Yapmanız gereken şey, örneğin bir sözlükte ürünü kaydetmek ve zaten var olan anahtarın miktarı sözlüğe eklemektir. Hala bunu bir alan olarak kaydedemezsiniz. – dccdany