[16.0] sale_order_batch: fix add followers bug

This commit is contained in:
Niels Göttsch 2026-05-12 15:16:54 +02:00 committed by madmooose
parent 89bb11becc
commit 12736d9972
3 changed files with 31 additions and 3 deletions

View file

@ -34,7 +34,7 @@ class SaleOrder(models.Model):
for sale_order in self: for sale_order in self:
company = sale_order.company_id company = sale_order.company_id
sale_order = sale_order.with_company(company) sale_order = sale_order.with_company(company)
if not sale_order.batch_id and sale_order.state in ["draft", "sent"]: if not sale_order.batch_id and sale_order.state in ["draft"]:
batch = sale_order._get_current_batch() batch = sale_order._get_current_batch()
if not batch: if not batch:
batch = sale_order.env["sale.order.batch"].create({}) batch = sale_order.env["sale.order.batch"].create({})
@ -50,6 +50,18 @@ class SaleOrder(models.Model):
"res_id": self.batch_id.id, "res_id": self.batch_id.id,
} }
def action_quotation_send(self):
invalid_orders = []
if not self.env.context.get("bypass_batch", False):
for order in self:
if order.batch_id:
invalid_orders.append(order.name)
if invalid_orders:
raise UserError(
_(f"Sale Order belongs to a Batch: {', '.join(invalid_orders)}")
)
return super().action_quotation_send()
def action_confirm(self): def action_confirm(self):
invalid_orders = [] invalid_orders = []
if not self.env.context.get("bypass_batch", False): if not self.env.context.get("bypass_batch", False):

View file

@ -172,8 +172,8 @@ class SaleOrderBatch(models.Model):
def action_in_progress(self): def action_in_progress(self):
for batch in self: for batch in self:
batch.sale_order_line_ids._validate_analytic_distribution() batch.sale_order_line_ids._validate_analytic_distribution()
orders = batch.sale_order_ids orders = batch.with_context(bypass_batch=True).sale_order_ids
orders.update({"state": "sent"}) orders.action_quotation_sent()
batch.update({"state": "in_progress"}) batch.update({"state": "in_progress"})
return True return True

View file

@ -30,6 +30,22 @@
</button> </button>
</xpath> </xpath>
<xpath <xpath
expr="//button[@name='action_quotation_send'][@states='draft']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': [('batch_id', '!=', False)]}</attribute>
</xpath>
<xpath
expr="//button[@name='action_quotation_send'][@states='sent,sale']"
position="attributes"
>
<attribute
name="attrs"
>{'invisible': [('batch_id', '!=', False)]}</attribute>
</xpath>
<xpath
expr="//button[@name='action_confirm']" expr="//button[@name='action_confirm']"
position="attributes" position="attributes"
> >