Zum Inhalt springen
Menü
Sie müssen registriert sein, um mit der Community zu interagieren.
Diese Frage wurde gekennzeichnet
2 Antworten
894 Ansichten

Dear All,


I am trying to add a field in purchases to display all the Partners from the Sale Orders that are linked to the Purchase.


I have the following code, and I am facing an issue:


When I do not use “store=True“ the function works correctly and displays the partners. However, in order to save the Partners in Purchases that are not linked to any sale order (since I have a compute method in my field), I set “store=True“ but then the first case does not work.


In other words, when I do not use store, the function works correctly and the customer is displayed. However, when I set store, the function does not work, and the related partners do not appear, although the new partners are saved correctly in the Purchase.


What am I missing, and how can I fix this?

class PurchaseOrder(models.Model):
_inherit = 'purchase.order'

name_ids = fields.Many2many(comodel_name='res.partner',compute='_compute_customer_names',
string="Customers",store=True)

def _compute_customer_names(self):
for purchase in self:
sale_order_ids = purchase._get_sale_orders()
for sale_order in sale_order_ids:
purchase.name_ids = sale_order.partner_id
Avatar
Verwerfen
Beste Antwort

Hello,

if you want to store the field in DB with store =True result you must to to specify the dependencies on the compute method with the decorator depends()

Thanks.

Avatar
Verwerfen
Autor

I had tried using 'depends()' as well, but it still didn't work.

The value of a computed field usually depends on the values of other fields so you need to specify these fields in @api.depends() so if any of these fields in changed then the computed field will be recomputed again.

If you added the property store=True to the field which already created, It will not be recomputed. Try to test it with creating a new purchase order after adding @api.depends()

Beste Antwort

Hi,


If you want to store a computed field in the database, the field must depend on one or more other fields (via @api.depends).

Try the following code


class PurchaseOrder(models.Model):
_inherit = 'purchase.order'

name_ids = fields.Many2many(comodel_name='res.partner',compute='_compute_customer_names',
string="Customers",store=True)

@api.depends('order_line.sale_order_id')
def _compute_customer_names(self):
for purchase in self:
sale_order_ids = purchase._get_sale_orders()
if sale_order_ids:
for sale_order in sale_order_ids:
purchase.name_ids = sale_order.partner_id
else:
purchase.name_ids = None

Hope it helps

Avatar
Verwerfen
Verknüpfte Beiträge Antworten Ansichten Aktivität
0
Aug. 19
5531
1
Mai 21
3781
2
Juni 20
6415
1
Nov. 24
1144
2
Aug. 22
5333