From f57a13f3f653ca1fe8fb5ae95fb447c12b24cf57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20De=20Caluw=C3=A9?= Date: Thu, 8 Apr 2021 11:32:08 +0000 Subject: [PATCH] [IMP] website: add the possibility to share coupon and promotion links MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Coupons and promotion programs can now be shared by creating a link that can directly be used by the customer. Using the link, the system will try to apply the coupon/promotion to the customer's order. If this can't be done, the error will be shown to the user, for instance "A minimum amount of 1000$ is required to get the free ipad". That coupon/promotion will then be stored in session and the system will try automatically reapply it when something is added to the cart. task-2489749 closes odoo/odoo#69053 Signed-off-by: Jérémy Kersten (jke) Co-authored-by: Romain Derie Co-authored-by: Jeremy Kersten Co-authored-by: Tom De Caluwé --- addons/coupon/models/coupon.py | 2 +- addons/coupon/views/coupon_views.xml | 4 +- addons/sale_coupon/models/coupon.py | 5 +- addons/sale_coupon/models/coupon_program.py | 2 +- addons/website/tools.py | 4 +- addons/website_sale_coupon/__init__.py | 1 + addons/website_sale_coupon/__manifest__.py | 10 +- .../website_sale_coupon/controllers/main.py | 25 ++++- .../website_sale_coupon/models/sale_coupon.py | 5 + .../models/sale_coupon_program.py | 5 + .../website_sale_coupon/models/sale_order.py | 21 ++++ addons/website_sale_coupon/models/website.py | 11 +++ .../security/ir.model.access.csv | 2 + .../static/src/js/coupon_toaster_widget.js | 34 +++++++ addons/website_sale_coupon/tests/__init__.py | 1 + .../tests/test_apply_pending_coupon.py | 61 ++++++++++++ .../views/coupon_share_views.xml | 32 ++++++ .../views/sale_coupon_coupon_views.xml | 13 +++ .../views/sale_coupon_program_views.xml | 2 + .../views/website_sale_templates.xml | 16 +++ addons/website_sale_coupon/wizard/__init__.py | 4 + .../wizard/sale_coupon_share.py | 99 +++++++++++++++++++ 22 files changed, 350 insertions(+), 9 deletions(-) create mode 100644 addons/website_sale_coupon/models/website.py create mode 100644 addons/website_sale_coupon/security/ir.model.access.csv create mode 100644 addons/website_sale_coupon/static/src/js/coupon_toaster_widget.js create mode 100644 addons/website_sale_coupon/tests/test_apply_pending_coupon.py create mode 100644 addons/website_sale_coupon/views/coupon_share_views.xml create mode 100644 addons/website_sale_coupon/views/sale_coupon_coupon_views.xml create mode 100644 addons/website_sale_coupon/wizard/__init__.py create mode 100644 addons/website_sale_coupon/wizard/sale_coupon_share.py diff --git a/addons/coupon/models/coupon.py b/addons/coupon/models/coupon.py index f2d7d704a92..54eadb0e842 100644 --- a/addons/coupon/models/coupon.py +++ b/addons/coupon/models/coupon.py @@ -52,7 +52,7 @@ class Coupon(models.Model): def _get_default_template(self): return False - def action_coupon_sent(self): + def action_coupon_send(self): """ Open a window to compose an email, with the edi invoice template message loaded by default """ diff --git a/addons/coupon/views/coupon_views.xml b/addons/coupon/views/coupon_views.xml index 67bdd3b3177..8b7cc3968aa 100644 --- a/addons/coupon/views/coupon_views.xml +++ b/addons/coupon/views/coupon_views.xml @@ -9,6 +9,8 @@ + + + + diff --git a/addons/website_sale_coupon/views/sale_coupon_program_views.xml b/addons/website_sale_coupon/views/sale_coupon_program_views.xml index 06ce21f546b..c122229149a 100644 --- a/addons/website_sale_coupon/views/sale_coupon_program_views.xml +++ b/addons/website_sale_coupon/views/sale_coupon_program_views.xml @@ -24,7 +24,9 @@ + +