diff --git a/controllers/main.py b/controllers/main.py
index c818db4640f..0def9e81217 100644
--- a/controllers/main.py
+++ b/controllers/main.py
@@ -10,8 +10,10 @@ class WebsiteSale(WebsiteSale):
def pricelist(self, promo, **post):
order = request.website.sale_get_order()
coupon_status = request.env['sale.coupon.apply.code'].sudo().apply_coupon(order, promo)
- if coupon_status.get('error', False):
+ if coupon_status.get('not_found'):
return super(WebsiteSale, self).pricelist(promo, **post)
+ elif coupon_status.get('error'):
+ request.session['error_promo_code'] = coupon_status['error']
return request.redirect(post.get('r', '/shop/cart'))
@http.route(['/shop/payment'], type='http', auth="public", website=True)
diff --git a/models/sale_order.py b/models/sale_order.py
index 7bc53960d0a..3effee6a17c 100644
--- a/models/sale_order.py
+++ b/models/sale_order.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
+from odoo.http import request
class SaleOrder(models.Model):
@@ -10,3 +11,9 @@ class SaleOrder(models.Model):
for order in self:
reward_lines = order.website_order_line.filtered(lambda line: line.is_reward_line)
order.cart_quantity -= int(sum(reward_lines.mapped('product_uom_qty')))
+
+ def get_promo_code_error(self, delete=True):
+ error = request.session.get('error_promo_code')
+ if error and delete:
+ request.session.pop('error_promo_code')
+ return error
diff --git a/views/website_sale_templates.xml b/views/website_sale_templates.xml
index e1d3b65e4c2..e3909b3be36 100644
--- a/views/website_sale_templates.xml
+++ b/views/website_sale_templates.xml
@@ -47,6 +47,13 @@
+
+
+