[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.
This commit is contained in:
Thibault Delavallée
2017-06-06 11:04:34 +02:00
parent 8e733b22f8
commit dee9b5cf3c
6 changed files with 22 additions and 16 deletions
@@ -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;
@@ -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;
@@ -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",
@@ -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);
});
}
});
@@ -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",
+3 -1
View File
@@ -1424,7 +1424,9 @@
</div>
<div class="col-lg-5 col-sm-4 text-right">
<t t-foreach="acquirers or []" t-as="acquirer" id="acquirers_list">
<div t-att-data-id="acquirer.id" class="oe_sale_acquirer_button hidden pull-right">
<div class="o_payment_acquirer_button hidden pull-right"
t-att-data-id="acquirer.id"
t-att-data-call-url="'/shop/payment/transaction/%s' % (acquirer.id)">
<div t-raw="acquirer.button" />
<div class="token_hide">
<div t-if="acquirer.save_token == 'ask'">