İçereği Atla
Menü
Bu soru işaretlendi
4420 Görünümler

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
Vazgeç
İlgili Gönderiler Cevaplar Görünümler Aktivite
2
Tem 24
13571
1
Tem 21
7684
1
May 18
2701
0
Nis 18
3202
4
Mar 25
3479