From 7346eeb5900496f52f012e39bf8b7eb5ed659f99 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Wed, 31 Aug 2016 01:09:39 +0200 Subject: [PATCH] [REF] website_sale: tokenization - improve desgin Update design for registered cards @courtesy of @fhe-odoo --- addons/website_payment/controllers/main.py | 5 +- addons/website_sale/controllers/main.py | 3 +- .../static/src/js/website_sale_payment.js | 30 ++++++---- addons/website_sale/views/templates.xml | 55 +++++++++++-------- 4 files changed, 58 insertions(+), 35 deletions(-) diff --git a/addons/website_payment/controllers/main.py b/addons/website_payment/controllers/main.py index fc3441f0b5f..ed7c0ade11d 100644 --- a/addons/website_payment/controllers/main.py +++ b/addons/website_payment/controllers/main.py @@ -7,7 +7,7 @@ from odoo.http import request class WebsitePayment(http.Controller): @http.route(['/my/payment_method'], type='http', auth="user", website=True) - def payment_method(self): + def payment_method(self, **kwargs): acquirers = list(request.env['payment.acquirer'].search([('website_published', '=', True), ('registration_view_template_id', '!=', False)])) partner = request.env.user.partner_id payment_tokens = partner.payment_token_ids @@ -16,8 +16,9 @@ class WebsitePayment(http.Controller): 'pms': payment_tokens, 'acquirers': acquirers } + return_url = request.params.get('redirect', '/my/payment_method') for acquirer in acquirers: - acquirer.form = acquirer.sudo()._registration_render(request.env.user.partner_id.id, {'error': {}, 'error_message': [], 'return_url': '/my/payment_method', 'json': False, 'bootstrap_formatting': True}) + acquirer.form = acquirer.sudo()._registration_render(request.env.user.partner_id.id, {'error': {}, 'error_message': [], 'return_url': return_url, 'json': False, 'bootstrap_formatting': True}) return request.render("website_payment.pay_methods", values) @http.route(['/website_payment/delete/'], methods=['POST'], type='http', auth="user", website=True) diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py index c06ce9e4cdc..cc7249a056d 100644 --- a/addons/website_sale/controllers/main.py +++ b/addons/website_sale/controllers/main.py @@ -729,9 +729,10 @@ class WebsiteSale(http.Controller): } ) acquirer.button = acquirer_button - acquirer.tokens = request.env['payment.token'].search([('acquirer_id', '=', acquirer.id)]) values['acquirers'].append(acquirer) + values['tokens'] = request.env['payment.token'].search([('partner_id', '=', order.partner_id.id), ('acquirer_id', 'in', acquirers.ids)]) + return request.render("website_sale.payment", values) @http.route(['/shop/payment/transaction_token/confirm'], type='json', auth="public", website=True) diff --git a/addons/website_sale/static/src/js/website_sale_payment.js b/addons/website_sale/static/src/js/website_sale_payment.js index 5652ae3af76..d04dfc77774 100644 --- a/addons/website_sale/static/src/js/website_sale_payment.js +++ b/addons/website_sale/static/src/js/website_sale_payment.js @@ -13,20 +13,30 @@ $(document).ready(function () { // When choosing an acquirer, display its Pay Now button var $payment = $("#payment_method"); - $payment.on("click", "input[name='acquirer'], button.btn_payment_token", function (ev) { + $payment.on("click", "input[name='acquirer'], a.btn_payment_token", function (ev) { + var ico_off = 'fa-circle-o'; + var ico_on = 'fa-dot-circle-o'; + var payment_id = $(ev.currentTarget).val() || $(this).data('acquirer'); + var token = $(ev.currentTarget).data('token') || ''; + + $("div.oe_sale_acquirer_button[data-id='"+payment_id+"']", $payment).attr('data-token', token); + $("div.js_payment a.list-group-item").removeClass("list-group-item-info"); + $('span.js_radio').switchClass(ico_on, ico_off, 0); + if (token) { + $("div.oe_sale_acquirer_button div.pre_msg").hide(); + $(ev.currentTarget).find('span.js_radio').switchClass(ico_off, ico_on, 0); + $(ev.currentTarget).parents('li').find('input').prop("checked", true); + $(ev.currentTarget).addClass("list-group-item-info"); + } + else{ + $("div.oe_sale_acquirer_button div.pre_msg").show(); + } $("div.oe_sale_acquirer_button[data-id]", $payment).addClass("hidden"); $("div.oe_sale_acquirer_button[data-id='"+payment_id+"']", $payment).removeClass("hidden"); - // show token - $("div.list-group[data-acquirer!='"+payment_id+"']", $payment).hide(); - $("div.list-group[data-acquirer='"+payment_id+"']", $payment).show(); - - var token = $(ev.currentTarget).data('token') || ''; - $("div.oe_sale_acquirer_button[data-id='"+payment_id+"']", $payment).attr('data-token', token); - - }) - .find("input[name='acquirer']:checked").click(); + }) + .find("input[name='acquirer']:checked").click(); // When clicking on payment button: create the tx using json then continue to the acquirer $payment.on("click", 'button[type="submit"], button[name="submit"]', function (ev) { diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index 75e7190055b..7588a4a5789 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -1323,35 +1323,45 @@

Payment Method: