[FIX] TestConfirmEskaera_Integration: limpieza de decoradores @patch y corrección de bugs

- Convertir 4 tests de decorador @patch a context manager 'with patch(...)' para evitar RuntimeError en LocalProxy de Werkzeug
- Corregir patrón env(user=..., context=dict(...)) en Odoo 18 (sin .with_context())
- Agregar website real al mock para integración con helpers de pricing (_get_pricing_info)
- Añadir pickup_date en fixture de existing_order para que _find_recent_draft_order localice correctamente
- BUGFIX: Agregar (5,) a order_line para limpiar líneas previas al actualizar pedido existente

Resultado: 0 failed, 0 errors de 4 tests en Docker para TestConfirmEskaera_Integration

BREAKING: _create_or_update_sale_order ahora limpia las líneas anteriores con (5,) antes de asignar las nuevas cuando se actualiza un pedido existente. Comportamiento previo (duplicación de líneas) era un bug.
This commit is contained in:
snt 2026-04-08 17:26:57 +02:00
parent e9809b90e9
commit ce393b6034
13 changed files with 857 additions and 192 deletions

View file

@ -140,11 +140,20 @@ class StockPickingBatch(models.Model):
else:
batch.summary_line_ids = [fields.Command.clear()]
def _check_all_products_collected(self):
"""Ensure all product summary lines are marked as collected before done."""
def _check_all_products_collected(self, product_ids=None):
"""Ensure collected is checked for processed products only.
The product summary remains informative until Odoo knows which products
are actually being validated after the backorder decision.
"""
for batch in self:
not_collected_lines = batch.summary_line_ids.filtered(
lambda line: not line.is_collected
lambda line: (
line.qty_done > 0
and not line.is_collected
and (not product_ids or line.product_id.id in product_ids)
)
)
if not not_collected_lines:
continue
@ -161,10 +170,6 @@ class StockPickingBatch(models.Model):
)
raise UserError(message)
def action_done(self):
self._check_all_products_collected()
return super().action_done()
class StockPickingBatchSummaryLine(models.Model):
_name = "stock.picking.batch.summary.line"