Изменить код Javascript из Odoo в пользовательском модуле в Odoo 11 - PullRequest
0 голосов
/ 15 октября 2018

Мне нужно переписать этот фрагмент:

var _onCarrierUpdateAnswer = function(result) {
var $amount_delivery = $('#order_delivery span.oe_currency_value');
var $amount_untaxed = $('#order_total_untaxed span.oe_currency_value');
var $amount_tax = $('#order_total_taxes span.oe_currency_value');
var $amount_total = $('#order_total span.oe_currency_value');
var $carrier_badge = $('#delivery_carrier input[name="delivery_type"][value=' + result.carrier_id + '] ~ .badge.hidden');
var $compute_badge = $('#delivery_carrier input[name="delivery_type"][value=' + result.carrier_id + '] ~ .o_delivery_compute');
if (result.status === true) {
    $amount_delivery.text(result.new_amount_delivery);
    $amount_untaxed.text(result.new_amount_untaxed);
    $amount_tax.text(result.new_amount_tax);
    $amount_total.text(result.new_amount_total);
    $carrier_badge.children('span').text(result.new_amount_delivery);
    $carrier_badge.removeClass('hidden');
    $compute_badge.addClass('hidden');
    $pay_button.prop('disabled', false);
}
else {
    console.error(result.error_message);
    $compute_badge.text(result.error_message);
    $amount_delivery.text(result.new_amount_delivery);
    $amount_untaxed.text(result.new_amount_untaxed);
    $amount_tax.text(result.new_amount_tax);
    $amount_total.text(result.new_amount_total);
}
};

из website_sale_delivery.checkout, в Odoo 11.

Как изменить в пользовательском модуле этот код?

1 Ответ

0 голосов
/ 16 октября 2018

Вы можете сделать это, отключив текущее выполнение кода для события click и подключив свой пользовательский код для обработчика события click.Вот копия / вставка модифицированной версии кода на основе вашего предложения, которое должно работать.

var _onCarrierUpdateAnswer = function(result) {
    var $amount_delivery = $('#order_delivery span.oe_currency_value');
    var $amount_untaxed = $('#order_total_untaxed span.oe_currency_value');
    var $amount_tax = $('#order_total_taxes span.oe_currency_value');
    var $amount_total = $('#order_total span.oe_currency_value');
    var $carrier_badge = $('#delivery_carrier input[name="delivery_type"][value=' + result.carrier_id + '] ~ .badge.hidden');
    var $compute_badge = $('#delivery_carrier input[name="delivery_type"][value=' + result.carrier_id + '] ~ .o_delivery_compute');
    if (result.status === true) {
        $amount_delivery.text(result.new_amount_delivery);
        $amount_untaxed.text(result.new_amount_untaxed);
        $amount_tax.text(result.new_amount_tax);
        $amount_total.text(result.new_amount_total);
        $carrier_badge.children('span').text(result.new_amount_delivery);
        $carrier_badge.removeClass('hidden');
        $compute_badge.addClass('hidden');
        // your change
        $pay_button.prop('disabled', true);
    }
    else {
        console.error(result.error_message);
        $compute_badge.text(result.error_message);
    }
};

var _onCarrierClick = function(ev) {
    $pay_button.prop('disabled', true);
    var carrier_id = $(ev.currentTarget).val();
    var values = {'carrier_id': carrier_id};
    ajax.jsonRpc('/shop/update_carrier', 'call', values)
      .then(_onCarrierUpdateAnswer);
};

var $carriers = $("#delivery_carrier input[name='delivery_type']");
$carriers.off('click');
$carriers.click(_onCarrierClick);

Вы заметите использование $carriers.off('click'); для отключения кода Odoo и использование $carriers.click(_onCarrierClick); дляпоставить обработчик события click снова, запустив ваш пользовательский код с измененной версией исходного кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...