Я пытаюсь обновить значение 'sequence' в модели 'product.supplierinfo' с помощью автоматического действия, чтобы при обновлении цены поставщика из заказа на поставку этот поставщик получал приоритет для расчета стоимости пополнения. Для этого новая / обновленная запись должна получить наименьшее значение «последовательности» для этого продукта.
Скриншот автоматического действия
Параметры автоматического действия: Модель: продукт. supplierinfo Действие: Выполнить Python код Условие: Создать и обновить
Эта часть py успешно сбрасывает последовательности, начинающиеся с 2:
val = 1
registers = model.search([('product_tmpl_id','=',record.product_tmpl_id.id)], order = "sequence asc")
for reg in registers:
val = val + 1
reg['sequence'] = val
А эта другая дает обновленный / новый Выровняйте значение последовательности 1 успешно:
record.write({'sequence': 1})
Однако, если сложить все вместе, все строки получат последовательность 1:
val = 1
registers = model.search([('product_tmpl_id','=',record.product_tmpl_id.id)], order = "sequence asc")
for reg in registers:
val = val + 1
reg['sequence'] = val
record.write({'sequence': 1})
Поскольку я довольно нуб, я даже предположил, что возможно, l oop не закончится с отступом и попробует этот другой, чтобы доказать, что я что-то упустил (сначала установите последовательность 1 для целевой записи, а затем отбросьте эту запись из метода поиска). Он по-прежнему получает 1 для всех значений последовательности регистра:
record.write({'sequence': 1})
val = 1
registers = model.search([('product_tmpl_id','=',record.product_tmpl_id.id),('id','!=', record.id)], order = "sequence asc")
for reg in registers:
val = val + 1
reg['sequence'] = val
Есть идеи, почему он не устанавливает последовательность записи триггера 1, а затем остаток от 2 и далее?