diff --git a/modules/purchase_request_quotation/purchase.py b/modules/purchase_request_quotation/purchase.py index 5aa1a9267e..d516d4a736 100644 --- a/modules/purchase_request_quotation/purchase.py +++ b/modules/purchase_request_quotation/purchase.py @@ -420,6 +420,29 @@ class QuotationLine(ModelSQL, ModelView): domain.append(('id', '<', 0)) return domain + @classmethod + def on_modification(cls, mode, records, field_names=None): + pool = Pool() + Request = pool.get('purchase.request') + super().on_modification(mode, records, field_names=field_names) + if mode in {'create', 'write'}: + if field_names is None or 'request' in field_names: + requests = {r.request for r in records if r.request} + if requests: + Request.update_state(requests) + + @classmethod + def on_write(cls, lines, values): + pool = Pool() + Request = pool.get('purchase.request') + + callback = super().on_write(lines, values) + + if 'request' in values: + if requests := {l.request for l in lines if l.request}: + callback.append(lambda: Request.update_state(requests)) + return callback + @classmethod def on_delete(cls, lines): pool = Pool()