From aa61ea846537dd8adb148f22698f1eff6fe21134 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 9 Jan 2014 18:42:28 +0100 Subject: [PATCH] delivery_address must be required if customer set If customer is set on purchase than it is always a drop shipment and so the delivery address must be required. issue3573 review2531002 --- purchase.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/purchase.py b/purchase.py index a2b63c7d31..0cf65e59be 100644 --- a/purchase.py +++ b/purchase.py @@ -49,6 +49,14 @@ class Purchase: depends=['customer']), 'get_drop_shipments') + @classmethod + def __setup__(cls): + super(Purchase, cls).__setup__() + cls._error_messages.update({ + 'delivery_address_required': ('A delivery address must be ' + 'defined for quotation of purchase "%s".'), + }) + def on_change_customer(self): result = { 'delivery_address': None, @@ -66,14 +74,18 @@ class Purchase: return list(set(m.shipment.id for l in self.lines for m in l.moves if isinstance(m.shipment, DropShipment))) + def check_for_quotation(self): + super(Purchase, self).check_for_quotation() + if self.customer and not self.delivery_address: + self.raise_user_error('delivery_address_required', self.rec_name) + class PurchaseLine: __name__ = 'purchase.line' def get_to_location(self, name): result = super(PurchaseLine, self).get_to_location(name) - # If delivery_address is empty, it is no more a drop shipment - if self.purchase.customer and self.purchase.delivery_address: + if self.purchase.customer: return self.purchase.customer.customer_location.id return result