Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
4363 Vizualizări

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.
Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
2
iul. 24
13550
1
iul. 21
7606
1
mai 18
2624
0
apr. 18
3066
4
mar. 25
3446