From 333c02891ef4d4bf9e0e6e374f9596b203352db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Sun, 10 Dec 2017 14:55:58 +0100 Subject: [PATCH] Raise a warning when the warehouse of a purchase differs from its purchase request issue6132 review29861002 --- CHANGELOG | 2 ++ purchase.py | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 59df38ce8e..62c00e2429 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,5 @@ +* Warns when the warehouse of a purchase differs from its purchase requests + Version 4.6.0 - 2017-10-30 * Bug fixes (see mercurial logs for details) * Remove required on request origin diff --git a/purchase.py b/purchase.py index 2cb4e5118d..2177f895ad 100644 --- a/purchase.py +++ b/purchase.py @@ -32,6 +32,10 @@ class Purchase: 'delete_purchase_request': ('You can not delete the purchase' ' "%(purchase)s" because it is linked to at least one' ' purchase request.'), + 'warehouse_request_purchase_mismatch': ('The warehouse' + ' "%(purchase_warehouse)s" of purchase "%(purchase)s"' + ' is different of the warehouse "%(request_warehouse)s"' + ' of the linked purchase request.'), }) @classmethod @@ -50,6 +54,27 @@ class Purchase: 'purchase': purchase.rec_name, }) + @classmethod + @ModelView.button + @Workflow.transition('confirmed') + def confirm(cls, purchases): + for purchase in purchases: + purchase.check_request_warehouse() + super(Purchase, cls).confirm(purchases) + + def check_request_warehouse(self): + for line in self.lines: + for request in line.self_requests: + if request.warehouse != self.warehouse: + w_name = 'check_request_warehouse_%s_%s_%s' % ( + self.id, self.warehouse.id, request.warehouse.id) + self.raise_user_warning( + w_name, 'warehouse_request_self_mismatch', { + 'purchase': self.rec_name, + 'purchase_warehouse': self.warehouse.rec_name, + 'request_warehouse': request.warehouse.rec_name, + }) + @classmethod @ModelView.button @Workflow.transition('cancel')