Я создаю функцию в модуле счета-фактуры. Что вы должны сделать, так это то, что эта линия продуктов функций равна счету и возвращает сумму за продукт. Это лучше объяснить на следующем рисунке:Ошибка Odoo: TypeError: объект 'int' не является итерабельным
Например, продукт «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
Для функции различать одного продукта и другой, я использую модель product.product идентификатор поля. Но когда я пытаюсь создать счет-фактуру, Оду показывает мне, что поля типа сообщения не могут быть итерабельными. Это проблема, потому что поле id для дифференцирования продуктов является целым числом.
Что мне делать?
Это сообщение, показывающее Odoo:
for product in po.product_id.id:
TypeError:
int
object is not iterable
Большое спасибо за вашу помощь и затраченного времени. Я ценю любые предложения или советы, чтобы получить то, что вы хотите сделать.
Вещь, если вы храните ее в целочисленном поле, у вас будет только 1 счет на счет. Это не поможет вам, вам нужно сделать функцию для отчета. В любом случае вам не нужна вторая итерация, с первой вы уже находитесь в очереди. Что вам нужно сделать, так это сохранить продукт, например, в словаре, и если ключ уже существует, добавьте его в этот словарь. Тем не менее вы не можете сохранить его как поле. – dccdany