trytond-patches/issue12116.diff

27 lines
1.1 KiB
Diff

diff --git a/tryton/modules/sale/sale.py b/tryton/modules/sale/sale.py
index cd9862dc6b..42db08a8d3 100644
--- a/tryton/modules/sale/sale.py
+++ b/tryton/modules/sale/sale.py
@@ -2148,14 +2148,13 @@ class ReturnSale(Wizard):
def do_return_(self, action):
sales = self.records
- return_sales = self.model.copy(sales)
- for return_sale, sale in zip(return_sales, sales):
- return_sale.origin = sale
- for line in return_sale.lines:
- if line.type == 'line':
- line.quantity *= -1
- return_sale.lines = return_sale.lines # Force saving
- self.model.save(return_sales)
+ return_sales = self.model.copy(sales, default={
+ 'origin': lambda data: (
+ '%s,%s' % (self.model.__name__, data['id'])),
+ 'lines.quantity': lambda data: (
+ data['quantity'] * -1 if data['type'] == 'line'
+ else data['quantity']),
+ })
data = {'res_id': [s.id for s in return_sales]}
if len(return_sales) == 1: