From f4d98283f3d06524e34763e71a2bd292840b0e6b Mon Sep 17 00:00:00 2001 From: mafo-odoo Date: Fri, 3 Jun 2022 14:22:46 +0000 Subject: [PATCH] [FIX] website_sale_delivery_mondialrelay : delivery error for saleorder without delivery Steps to reproduce: - Install ecommerce and the website_sale_delivery_mondialrelay module - Publish the mondialrelay shipping method - Go to the website shop - Start a cart with an object that can be delivered (e.g. a table) - Process to checkout - Select mondial relay shipping method and a relay depot - Don't click on Pay Now but go back to your cart and make it empty - Add a non deliverable item to the cart (e.g. a warranty) - Process to checkout and try to pay Current behavior: There is an error message related to mondial relay Expected behavior: There is no error message Explanation: The sale order keeps the partner_shipping_id even if it does not contain any delivarable item. The mondial relay error message can be sent for any order without checking that the order is supposed is supposed to be delivered. To solve the issue we just add a condition so that only orders with delivery can receive this message. opw-2869883 closes odoo/odoo#93132 X-original-commit: 4cba0200f8915079e96284f215cbb97831e2d7d5 Signed-off-by: William Braeckman (wbr) --- .../controllers/controllers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website_sale_delivery_mondialrelay/controllers/controllers.py b/addons/website_sale_delivery_mondialrelay/controllers/controllers.py index 5f2178f7de4..4617ceb3629 100644 --- a/addons/website_sale_delivery_mondialrelay/controllers/controllers.py +++ b/addons/website_sale_delivery_mondialrelay/controllers/controllers.py @@ -79,7 +79,7 @@ class PaymentPortalMondialRelay(PaymentPortal): @http.route() def shop_payment_transaction(self, *args, **kwargs): order = request.website.sale_get_order() - if order.partner_shipping_id.is_mondialrelay and not order.carrier_id.is_mondialrelay: + if order.partner_shipping_id.is_mondialrelay and order.carrier_id and not order.carrier_id.is_mondialrelay and order.delivery_set: raise ValidationError(_('Point RelaisĀ® can only be used with the delivery method Mondial Relay.')) elif not order.partner_shipping_id.is_mondialrelay and order.carrier_id.is_mondialrelay: raise ValidationError(_('Delivery method Mondial Relay can only ship to Point RelaisĀ®.'))