Ir al contenido
Menú
Se marcó esta pregunta
4123 Vistas

I'm trying to update the 'sequence' value in model 'product.supplierinfo' with an Automated Action, so that when the supplier's price are updated from a purchase order, that supplier is prioritized to calculate the replenishment cost. To achieve that, the new/updated record must get the lowest 'sequence' value for that product.


Automated Action Settings:

  • Model: product.supplierinfo
  • Action: Execute Python code
  • Condition: Create and update

This part of the py resets the sequences starting from 2 successfully:

    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

And this other one gives the updated/new line the sequence value 1 successfully:

record.write({'sequence': 1})

However, when put all together, all the lines get sequence 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})

As I'm pretty noob, I even assumed that maybe the loop wouldn't end with the indent and tried this other one to proof I'm missing something (first setting sequence 1 to the aimed record and then dropping that record from the search method). It still gets 1 on all the register's sequence value:

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
Thanks for the help. The explanation is much appreciated.
Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
2
jul 24
13292
1
jul 21
7356
1
may 18
2514
0
abr 18
2953
4
mar 25
3288