details:   https://code.tryton.org/tryton/commit/a463be917f25
branch:    default
user:      Xavi Hermoso <[email protected]>
date:      Tue May 12 09:33:32 2026 +0000
description:
        Update purchase request state when it is manually linked to a quotation

        Closes #14773
diffstat:

 modules/purchase_request_quotation/purchase.py |  23 +++++++++++++++++++++++
 1 files changed, 23 insertions(+), 0 deletions(-)

diffs (33 lines):

diff -r 7e33b59a691f -r a463be917f25 
modules/purchase_request_quotation/purchase.py
--- a/modules/purchase_request_quotation/purchase.py    Fri May 08 12:38:14 
2026 +0200
+++ b/modules/purchase_request_quotation/purchase.py    Tue May 12 09:33:32 
2026 +0000
@@ -421,6 +421,29 @@
         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()
         Request = pool.get('purchase.request')

Reply via email to