summaryrefslogtreecommitdiff
path: root/addons/payment/static/src
diff options
context:
space:
mode:
authortbe-odoo <tbe@odoo.com>2017-08-23 15:51:39 +0200
committertbe-odoo <tbe@odoo.com>2017-08-29 17:11:23 +0200
commit194d52e8fda35f7a6fd9a9e5c2e1af265e25ce4b (patch)
tree925cb915000cdc0be69848d81a1864e1446ead4a /addons/payment/static/src
parent3c062d934553bc4693bde6bd831fd2a3d6e9423c (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.js38
-rw-r--r--addons/payment/static/src/js/payment_transaction.js81
-rw-r--r--addons/payment/static/src/less/payment_form.less8
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;
}