diff options
Diffstat (limited to 'addons/website_sale/static/src/js/website_sale_validate.js')
| -rw-r--r-- | addons/website_sale/static/src/js/website_sale_validate.js | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/addons/website_sale/static/src/js/website_sale_validate.js b/addons/website_sale/static/src/js/website_sale_validate.js new file mode 100644 index 00000000..aaf48a20 --- /dev/null +++ b/addons/website_sale/static/src/js/website_sale_validate.js @@ -0,0 +1,51 @@ +odoo.define('website_sale.validate', function (require) { +'use strict'; + +var publicWidget = require('web.public.widget'); +var core = require('web.core'); +var _t = core._t; + +publicWidget.registry.websiteSaleValidate = publicWidget.Widget.extend({ + selector: 'div.oe_website_sale_tx_status[data-order-id]', + + /** + * @override + */ + start: function () { + var def = this._super.apply(this, arguments); + this._poll_nbr = 0; + this._paymentTransationPollStatus(); + return def; + }, + + //-------------------------------------------------------------------------- + // Private + //-------------------------------------------------------------------------- + + /** + * @private + */ + _paymentTransationPollStatus: function () { + var self = this; + this._rpc({ + route: '/shop/payment/get_status/' + parseInt(this.$el.data('order-id')), + }).then(function (result) { + self._poll_nbr += 1; + if (result.recall) { + if (self._poll_nbr < 20) { + setTimeout(function () { + self._paymentTransationPollStatus(); + }, Math.ceil(self._poll_nbr / 3) * 1000); + } else { + var $message = $(result.message); + var $warning = $("<i class='fa fa-warning' style='margin-right:10px;'>"); + $warning.attr("title", _t("We are waiting for confirmation from the bank or the payment provider")); + $message.find('span:first').prepend($warning); + result.message = $message.html(); + } + } + self.$el.html(result.message); + }); + }, +}); +}); |
