Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 18 additions & 11 deletions purchase_stock_ux/models/purchase_order_line.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,14 @@ def button_cancel_remaining(self):
# la cancelación de kits no está bien resuelta ya que odoo
# solo computa la cantidad entregada cuando todo el kit se entregó.
# Cuestión que, por ahora, desactivamos la cancelación de kits.
if self.order_id.state == "done":
raise UserError(
_(
"Cancel remaining quantities can't be called for blocked purchase orders. "
"First unblock the purchase order"
)
)

# Manejar órdenes bloqueadas (done): desbloquear temporalmente sin tracking
orders_to_relock = self.env["purchase.order"]
for order in self.mapped("order_id").filtered(lambda o: o.state == "done"):
orders_to_relock |= order
# Desbloquear sin generar mensaje en el chatter
order.with_context(tracking_disable=True).write({"state": "purchase"})

bom_enable = "bom_ids" in self.env["product.template"]._fields
for rec in self:
old_product_qty = rec.product_qty
Expand Down Expand Up @@ -104,6 +105,10 @@ def button_cancel_remaining(self):
% (rec.name, rec.id, old_product_qty, rec.product_qty)
)

# Volver a bloquear las órdenes que estaban bloqueadas sin generar mensaje
if orders_to_relock:
orders_to_relock.with_context(tracking_disable=True).write({"state": "done"})

def _compute_vouchers(self):
# Cambiamos esta lógica ya que antes teníamos si o si voucher_ids por dependencias y ahora va a depender de que esté instalado stock_voucher
for rec in self:
Expand Down Expand Up @@ -174,10 +179,12 @@ def _compute_qty_returned(self):
for line in self:
qty = 0.0
for move in line.move_ids.filtered(
lambda m: m.state == "done"
and m.location_id.usage != "supplier"
and m.to_refund
and not m._is_exchange_move_helper()
lambda m: (
m.state == "done"
and m.location_id.usage != "supplier"
and m.to_refund
and not m._is_exchange_move_helper()
)
):
qty += move.product_uom._compute_quantity(move.product_uom_qty, line.product_uom)
line.qty_returned = qty
Expand Down