From dee9b5cf3c5deb977b33a48c695a1bac07257927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 24 May 2017 14:45:35 +0200 Subject: [PATCH] [REF] payment, website_sale: make payment_transaction js code generic JS code managing transaction creation through acquirer 'Pay Now' form button is improved in order to be less website-sale dependant. It now takes parameters for access token and URL to call in Json. Class used to bind JS is now o_payment_acquirer_button in order to be more generic. eCommerce module is updated accordingly. Future commits will probably make Online Quote (website_quote) use it. --- .../static/src/js/payment_transaction.js | 26 +++++++++++-------- addons/payment_stripe/static/src/js/stripe.js | 2 +- .../static/src/js/website.tour.event_sale.js | 2 +- .../static/src/js/website_sale_payment.js | 2 +- .../static/src/js/website_sale_tour_buy.js | 2 +- addons/website_sale/views/templates.xml | 4 ++- 6 files changed, 22 insertions(+), 16 deletions(-) diff --git a/addons/payment/static/src/js/payment_transaction.js b/addons/payment/static/src/js/payment_transaction.js index e63f2a6c91f..eb945f7a220 100644 --- a/addons/payment/static/src/js/payment_transaction.js +++ b/addons/payment/static/src/js/payment_transaction.js @@ -13,20 +13,20 @@ $(document).ready(function () { 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.o_payment_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.token_hide").hide(); + $("div.o_payment_acquirer_button div.token_hide").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.token_hide").show(); + $("div.o_payment_acquirer_button div.token_hide").show(); } - $("div.oe_sale_acquirer_button[data-id]", $payment).addClass("hidden"); - $("div.oe_sale_acquirer_button[data-id='"+payment_id+"']", $payment).removeClass("hidden"); + $("div.o_payment_acquirer_button[data-id]", $payment).addClass("hidden"); + $("div.o_payment_acquirer_button[data-id='"+payment_id+"']", $payment).removeClass("hidden"); }) .find("input[name='acquirer']:checked").click(); @@ -36,18 +36,22 @@ $(document).ready(function () { ev.preventDefault(); ev.stopPropagation(); var $form = $(ev.currentTarget).parents('form'); - var acquirer = $(ev.currentTarget).parents('div.oe_sale_acquirer_button').first(); - var acquirer_id = acquirer.data('id'); - var acquirer_token = acquirer.attr('data-token'); // !=data - var params = {'tx_type': acquirer.find('input[name="odoo_save_token"]').is(':checked')?'form_save':'form'}; - if (! acquirer_id) { + var acquirer = $(ev.currentTarget).parents('div.o_payment_acquirer_button').first(); + var tx_data = acquirer.data(); + if (! tx_data.id || ! tx_data.callUrl) { return false; } + + var params = {"tx_type": tx_data.txType || acquirer.find('input[name="odoo_save_token"]').is(':checked') ? 'form_save': 'form'}; + var acquirer_token = acquirer.attr('data-token'); // !=data if (acquirer_token) { params.token = acquirer_token; } + if (tx_data.access_token) { + params.access_token = tx_data.access_token; + } $form.off('submit'); - ajax.jsonRpc('/shop/payment/transaction/' + acquirer_id, 'call', params).then(function (data) { + ajax.jsonRpc(tx_data.callUrl, 'call', params).then(function (data) { $(data).appendTo('body').submit(); }); return false; diff --git a/addons/payment_stripe/static/src/js/stripe.js b/addons/payment_stripe/static/src/js/stripe.js index 6952366f133..159bdc14214 100644 --- a/addons/payment_stripe/static/src/js/stripe.js +++ b/addons/payment_stripe/static/src/js/stripe.js @@ -36,7 +36,7 @@ odoo.define('payment_stripe.stripe', function(require) { $(this).attr('disabled','disabled'); var $form = $(e.currentTarget).parents('form'); - var acquirer_id = $(e.currentTarget).closest('div.oe_sale_acquirer_button,div.oe_quote_acquirer_button,div.o_website_payment_new_payment'); + var acquirer_id = $(e.currentTarget).closest('div.o_payment_acquirer_button,div.oe_quote_acquirer_button,div.o_website_payment_new_payment'); acquirer_id = acquirer_id.data('id') || acquirer_id.data('acquirer_id'); if (! acquirer_id) { return false; diff --git a/addons/website_event_sale/static/src/js/website.tour.event_sale.js b/addons/website_event_sale/static/src/js/website.tour.event_sale.js index f6638573256..8a29796dab4 100644 --- a/addons/website_event_sale/static/src/js/website.tour.event_sale.js +++ b/addons/website_event_sale/static/src/js/website.tour.event_sale.js @@ -86,7 +86,7 @@ tour.register('event_buy_tickets', { { content: "Pay", extra_trigger: '#payment_method label:contains(Wire Transfer) input:checked', - trigger: '.oe_sale_acquirer_button .btn[type="submit"]:visible', + trigger: '.o_payment_acquirer_button .btn[type="submit"]:visible', }, { content: "Last step", 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 aa23a7583d9..55e0d186b23 100644 --- a/addons/website_sale/static/src/js/website_sale_payment.js +++ b/addons/website_sale/static/src/js/website_sale_payment.js @@ -5,7 +5,7 @@ $(document).ready(function () { // If option is enable if ($("#checkbox_cgv").length) { $("#checkbox_cgv").click(function() { - $("div.oe_sale_acquirer_button").find('input, button').prop("disabled", !this.checked); + $("div.o_payment_acquirer_button").find('input, button').prop("disabled", !this.checked); }); } }); diff --git a/addons/website_sale/static/src/js/website_sale_tour_buy.js b/addons/website_sale/static/src/js/website_sale_tour_buy.js index 18db42a1270..e21525a3c01 100644 --- a/addons/website_sale/static/src/js/website_sale_tour_buy.js +++ b/addons/website_sale/static/src/js/website_sale_tour_buy.js @@ -71,7 +71,7 @@ tour.register('shop_buy_product', { { content: "Pay Now", extra_trigger: '#payment_method label:contains("Wire Transfer") input:checked', - trigger: '.oe_sale_acquirer_button .btn[type="submit"]:visible', + trigger: '.o_payment_acquirer_button .btn[type="submit"]:visible', }, { content: "finish", diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml index d2ad1a05550..df2f4b6c518 100644 --- a/addons/website_sale/views/templates.xml +++ b/addons/website_sale/views/templates.xml @@ -1424,7 +1424,9 @@
-