diff options
| author | tbe-odoo <tbe@odoo.com> | 2017-08-23 15:51:39 +0200 |
|---|---|---|
| committer | tbe-odoo <tbe@odoo.com> | 2017-08-29 17:11:23 +0200 |
| commit | 194d52e8fda35f7a6fd9a9e5c2e1af265e25ce4b (patch) | |
| tree | 925cb915000cdc0be69848d81a1864e1446ead4a /addons/payment/static/src | |
| parent | 3c062d934553bc4693bde6bd831fd2a3d6e9423c (diff) | |
[IMP] website_quote/sale,payment: Support of the new payment form
- Online quotation and e-commerce now use the new payment form.
- Added the ability to chose on an acquirer if it uses only form/s2s or both.
(Still need some code cleaning)
Diffstat (limited to 'addons/payment/static/src')
| -rw-r--r-- | addons/payment/static/src/js/payment_form.js | 38 | ||||
| -rw-r--r-- | addons/payment/static/src/js/payment_transaction.js | 81 | ||||
| -rw-r--r-- | addons/payment/static/src/less/payment_form.less | 8 |
3 files changed, 41 insertions, 86 deletions
diff --git a/addons/payment/static/src/js/payment_form.js b/addons/payment/static/src/js/payment_form.js index bf8f490a493..5da7cfbe2ea 100644 --- a/addons/payment/static/src/js/payment_form.js +++ b/addons/payment/static/src/js/payment_form.js @@ -77,23 +77,55 @@ odoo.define('payment.payment_form', function (require){ // if the user is going to pay with a form payment, then else if(this.isFormPaymentRadio(checked_radio)) { + var self = this; // we retrieve the acquirer id and its form var acquirer_id = this.getAcquirerIdFromRadio(checked_radio); var acquirer_form = this.$('#o_payment_form_acq_' + acquirer_id); var inputs_form = $('input', acquirer_form); var ds = $('input[name="data_set"]', acquirer_form)[0]; + var form_save_token = false; + var $tx_url = this.$el.find('input[name="prepare_tx_url"]'); // Here we take the values we need to send to the acquirer and generate a form with them var html_form = '<form method="post" action="' + ds.dataset.actionUrl + '" class="hidden">'; + var ignored_inputs = ['data_set', 'o_payment_form_save_token']; for(var i = 0; i < inputs_form.length; i ++) { - if(inputs_form[i].name != "data_set") { + if(ignored_inputs.indexOf(inputs_form[i].name) == -1) { html_form +='<input name="' + inputs_form[i].name + '" value="' + inputs_form[i].value + '"/>'; } + else if(inputs_form[i].name == 'o_payment_form_save_token') { + form_save_token = inputs_form[i].checked; + } } html_form += '</form>'; - // we append the form to the body and send it. - $(html_form).appendTo("body").submit(); + + // if there's a prepare tx url set + if($tx_url.length == 1) + { + // then we call the route to prepare the transaction + ajax.jsonRpc($tx_url[0].value, 'call', { + 'acquirer_id': parseInt(acquirer_id), + 'save_token': form_save_token + }).then(function(result){ + if(result) { + // we append the form to the body and send it. + $(html_form).appendTo("body").submit(); + } + else { + self.error(_t('Server Error'), + _t("<p>We are not able to redirect you to the payment form.</p>")); + } + }).fail(function(message, data){ + self.error(_t('Server Error'), + _t("<p>We are not able to redirect you to the payment form.</p>") + (core.debug ? data.data.message : '')); + }); + } + else + { + // we append the form to the body and send it. + $(html_form).appendTo("body").submit(); + } } // if the user is using an old payment else { diff --git a/addons/payment/static/src/js/payment_transaction.js b/addons/payment/static/src/js/payment_transaction.js deleted file mode 100644 index eb945f7a220..00000000000 --- a/addons/payment/static/src/js/payment_transaction.js +++ /dev/null @@ -1,81 +0,0 @@ -odoo.define('payment.transaction', function (require) { -"use strict"; - -var ajax = require('web.ajax'); - -$(document).ready(function () { - // When choosing an acquirer, display its Pay Now button - var $payment = $("#payment_method"); - $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.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.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.o_payment_acquirer_button div.token_hide").show(); - } - $("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(); - - // 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) { - ev.preventDefault(); - ev.stopPropagation(); - var $form = $(ev.currentTarget).parents('form'); - 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(tx_data.callUrl, 'call', params).then(function (data) { - $(data).appendTo('body').submit(); - }); - return false; - }); - - $('div.oe_pay_token').on('click', 'a.js_btn_valid_tx', function() { - $('div.js_token_load').toggle(); - - var $form = $(this).parents('form'); - ajax.jsonRpc($form.attr('action'), 'call', $.deparam($form.serialize())).then(function (data) { - if (data.url) { - window.location = data.url; - } - else { - $('div.js_token_load').toggle(); - if (!data.success && data.error) { - $('div.oe_pay_token div.panel-body p').html(data.error + "<br/><br/>" + _('Retry ? ')); - $('div.oe_pay_token div.panel-body').parents('div').removeClass('panel-info').addClass('panel-danger'); - } - } - }); - - }); - -}); - -}); diff --git a/addons/payment/static/src/less/payment_form.less b/addons/payment/static/src/less/payment_form.less index ce6b2aeab6e..14bb9ef8559 100644 --- a/addons/payment/static/src/less/payment_form.less +++ b/addons/payment/static/src/less/payment_form.less @@ -1,10 +1,10 @@ .o_payment_form { - label > input[type="radio"]{ + label > input[type="radio"], input[type="checkbox"]{ vertical-align: bottom; margin-right: 5px; } - label { + .payment_option_name { font-size: 14px; font-weight: normal !important; font-family: Helvetica Neue, sans-serif; @@ -12,6 +12,10 @@ color: #4d4d4d; } + label { + font-weight: normal; + } + .panel-body:first-child { border-top: 0px; } |
