diff --git a/website_sale_aplicoop/models/group_order.py b/website_sale_aplicoop/models/group_order.py index 8090f27..a4da72c 100644 --- a/website_sale_aplicoop/models/group_order.py +++ b/website_sale_aplicoop/models/group_order.py @@ -680,4 +680,44 @@ class GroupOrder(models.Model): order._compute_cutoff_date() order._compute_pickup_date() order._compute_delivery_date() + order._confirm_linked_sale_orders() _logger.info("Cron: Date update completed") + + def _confirm_linked_sale_orders(self): + """Confirm draft/sent sale orders linked to this group order. + + This is triggered by the daily cron so that weekly orders generated + from the website are confirmed automatically once dates are refreshed. + """ + self.ensure_one() + SaleOrder = self.env["sale.order"].sudo() + sale_orders = SaleOrder.search( + [ + ("group_order_id", "=", self.id), + ("state", "in", ["draft", "sent"]), + ] + ) + + if not sale_orders: + _logger.info( + "Cron: No sale orders to confirm for group order %s (%s)", + self.id, + self.name, + ) + return + + _logger.info( + "Cron: Confirming %d sale orders for group order %s (%s)", + len(sale_orders), + self.id, + self.name, + ) + + try: + sale_orders.action_confirm() + except Exception: + _logger.exception( + "Cron: Error confirming sale orders for group order %s (%s)", + self.id, + self.name, + )