Define process delay per sale and purchase

Closes #12209
This commit is contained in:
Cédric Krier
2023-04-12 13:42:18 +02:00
parent 672e9c1a7b
commit dc3afbd016
2 changed files with 26 additions and 14 deletions
+13 -7
View File
@@ -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')
+13 -7
View File
@@ -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')