From 1b2113addc3630db3ddf182eedb5c76dcd013760 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 12 Mar 2023 22:48:27 +0100 Subject: [PATCH] Return purchase with a single copy call --- modules/purchase/purchase.py | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/modules/purchase/purchase.py b/modules/purchase/purchase.py index b73acaf8fc..e74f8d1c79 100644 --- a/modules/purchase/purchase.py +++ b/modules/purchase/purchase.py @@ -2210,14 +2210,13 @@ class ReturnPurchase(Wizard): def do_return_(self, action): purchases = self.records - return_purchases = self.model.copy(purchases) - for return_purchase, purchase in zip(return_purchases, purchases): - return_purchase.origin = purchase - for line in return_purchase.lines: - if line.type == 'line': - line.quantity *= -1 - return_purchase.lines = return_purchase.lines # Force saving - self.model.save(return_purchases) + return_purchases = self.model.copy(purchases, 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_purchases]} if len(return_purchases) == 1: