تخطي للذهاب إلى المحتوى
القائمة
لقد تم الإبلاغ عن هذا السؤال
4161 أدوات العرض

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.
الصورة الرمزية
إهمال
المنشورات ذات الصلة الردود أدوات العرض النشاط
2
يوليو 24
13327
1
يوليو 21
7367
1
مايو 18
2544
0
أبريل 18
2979
4
مارس 25
3325