diff --git a/rma_sale/models/sale.py b/rma_sale/models/sale.py index 7e341e9c..5d52a417 100644 --- a/rma_sale/models/sale.py +++ b/rma_sale/models/sale.py @@ -130,12 +130,19 @@ class SaleOrderLine(models.Model): qty = move.product_uom_qty qty_returned = 0 move_dest = destination_moves(move) + # With the return of the return of the return we could have an + # infinite loop, so we should avoid it dropping already explored + # move_dest_ids + visited_moves = move + move_dest while move_dest: qty_returned -= sum(move_dest.mapped("product_uom_qty")) - move_dest = destination_moves(move_dest) + move_dest = destination_moves(move_dest) - visited_moves if move_dest: + visited_moves += move_dest qty += sum(move_dest.mapped("product_uom_qty")) - move_dest = destination_moves(move_dest) + move_dest = ( + destination_moves(move_dest) - visited_moves + ) # If by chance we get a negative qty we should ignore it qty = max(0, sum((qty, qty_returned))) data.append(