diff --git a/modules/purchase/purchase.py b/modules/purchase/purchase.py index 81a2b96cc3..ab26194686 100644 --- a/modules/purchase/purchase.py +++ b/modules/purchase/purchase.py @@ -860,22 +860,28 @@ class Purchase( 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): - pool = Pool() - Configuration = pool.get('purchase.configuration') 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') diff --git a/modules/sale/sale.py b/modules/sale/sale.py index 5c16a29598..de9c5a18e8 100644 --- a/modules/sale/sale.py +++ b/modules/sale/sale.py @@ -982,22 +982,28 @@ class Sale( 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): - pool = Pool() - Configuration = pool.get('sale.configuration') 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')