diff --git a/sale.py b/sale.py index d07781c915..a80137e805 100644 --- a/sale.py +++ b/sale.py @@ -595,7 +595,7 @@ class Sale(Workflow, ModelSQL, ModelView, TaxableMixin): @classmethod def _get_origin(cls): 'Return list of Model names for origin Reference' - return [] + return ['sale.sale'] @classmethod def get_origin(cls): @@ -1677,11 +1677,14 @@ class ReturnSale(Wizard): sales = Sale.browse(Transaction().context['active_ids']) return_sales = Sale.copy(sales) - for sale in return_sales: - for line in sale.lines: + 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 - line.save() + return_sale.lines = return_sale.lines # Force saving + Sale.save(return_sales) + data = {'res_id': [s.id for s in return_sales]} if len(return_sales) == 1: action['views'].reverse() diff --git a/tests/scenario_sale.rst b/tests/scenario_sale.rst index 3409a85a76..711b9edd41 100644 --- a/tests/scenario_sale.rst +++ b/tests/scenario_sale.rst @@ -649,6 +649,8 @@ Return sales using the wizard:: >>> returned_sale, = Sale.find([ ... ('state', '=', 'draft'), ... ]) + >>> returned_sale.origin == sale_to_return + True >>> sorted([x.quantity for x in returned_sale.lines]) [None, -1.0]