From b6d098aeabd939a26ccef1e30c90b16ebb64c707 Mon Sep 17 00:00:00 2001 From: Xavi Hermoso Date: Tue, 12 May 2026 09:33:32 +0000 Subject: [PATCH] Update purchase request state when it is manually linked to a quotation Closes #14773 (grafted from a463be917f2576adb8f4333eb2ce19759456be0b) --HG-- branch : 8.0 --- .../purchase_request_quotation/purchase.py | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) 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()