Cédric Krier pushed to branch branch/default at Tryton / Tryton


Commits:
7e2b83f7 by Cédric Krier at 2023-04-12T13:42:18+02:00
Define process delay per sale and purchase

Closes #12209
- - - - -


2 changed files:

- modules/purchase/purchase.py
- modules/sale/sale.py


Changes:

=====================================
modules/purchase/purchase.py
=====================================
@@ -860,8 +860,15 @@
             purchase.check_for_quotation()
         cls.set_number(purchases)
 
+    @property
+    def process_after(self):
+        pool = Pool()
+        Configuration = pool.get('purchase.configuration')
+        config = Configuration(1)
+        return config.purchase_process_after
+
     @classmethod
     @ModelView.button
     @Workflow.transition('confirmed')
     @set_employee('confirmed_by')
     def confirm(cls, purchases):
@@ -863,11 +870,9 @@
     @classmethod
     @ModelView.button
     @Workflow.transition('confirmed')
     @set_employee('confirmed_by')
     def confirm(cls, purchases):
-        pool = Pool()
-        Configuration = pool.get('purchase.configuration')
         transaction = Transaction()
         context = transaction.context
         cls.set_purchase_date(purchases)
         cls.store_cache(purchases)
@@ -870,12 +875,13 @@
         transaction = Transaction()
         context = transaction.context
         cls.set_purchase_date(purchases)
         cls.store_cache(purchases)
-        config = Configuration(1)
-        with transaction.set_context(
-                queue_scheduled_at=config.purchase_process_after,
-                queue_batch=context.get('queue_batch', True)):
-            cls.__queue__.process(purchases)
+        for process_after, sub_purchases in groupby(
+                purchases, lambda p: p.process_after):
+            with transaction.set_context(
+                    queue_scheduled_at=process_after,
+                    queue_batch=context.get('queue_batch', True)):
+                cls.__queue__.process(sub_purchases)
 
     @classmethod
     @Workflow.transition('processing')


=====================================
modules/sale/sale.py
=====================================
@@ -982,8 +982,15 @@
             sale.check_for_quotation()
         cls.set_number(sales)
 
+    @property
+    def process_after(self):
+        pool = Pool()
+        Configuration = pool.get('sale.configuration')
+        config = Configuration(1)
+        return config.sale_process_after
+
     @classmethod
     @ModelView.button
     @Workflow.transition('confirmed')
     @set_employee('confirmed_by')
     def confirm(cls, sales):
@@ -985,11 +992,9 @@
     @classmethod
     @ModelView.button
     @Workflow.transition('confirmed')
     @set_employee('confirmed_by')
     def confirm(cls, sales):
-        pool = Pool()
-        Configuration = pool.get('sale.configuration')
         transaction = Transaction()
         context = transaction.context
         cls.set_sale_date(sales)
         cls.store_cache(sales)
@@ -992,12 +997,13 @@
         transaction = Transaction()
         context = transaction.context
         cls.set_sale_date(sales)
         cls.store_cache(sales)
-        config = Configuration(1)
-        with transaction.set_context(
-                queue_scheduled_at=config.sale_process_after,
-                queue_batch=context.get('queue_batch', True)):
-            cls.__queue__.process(sales)
+        for process_after, sub_sales in groupby(
+                sales, lambda s: s.process_after):
+            with transaction.set_context(
+                    queue_scheduled_at=process_after,
+                    queue_batch=context.get('queue_batch', True)):
+                cls.__queue__.process(sub_sales)
 
     @classmethod
     @ModelView.button_action('sale.wizard_invoice_handle_exception')



View it on Heptapod: 
https://foss.heptapod.net/tryton/tryton/-/commit/7e2b83f77861c118de0c4270d19593b2a938dabd

-- 
View it on Heptapod: 
https://foss.heptapod.net/tryton/tryton/-/commit/7e2b83f77861c118de0c4270d19593b2a938dabd
You're receiving this email because of your account on foss.heptapod.net.


Reply via email to