Почему при выборе чекбокс не по порядку сбивается формула расчета доставки
В корзине есть варианты доставки: Санкт Петербург, Транспортная компания, Самовывоз. все это в виде чекбокса и расчет исходя из того что выбрано. Странность в следующем: выбираю сверху-вниз по порядку от Санкт Петербурга, до Самовывоз, расчет идет хорошо, т.е. если самовывоз то за доставку 0, а вот если идти не по порядку например прыгнуть с Санкт петербурга сразу на самовывоз, то сумма за доставку с Санкт петербурга плюсуется к самовывозу, никак не могу понять в чем дело адрес сайта: https://apkterranova.ru/musliilakomstva
let INT_SP, INT_MSK, COST_MSK = 25, // Стоимость за километр за МКАД
DISTANCE, SOURCE, RUN_MSK = false, $address, $addressBackup, $addressBackup2, $delivery, $passporttk,
$passporttkBackup = '-', $submit, ADDRESS;
function spDelivery() {
let COST_SP = 200, // Стоимость доставки мешка 20 или 30 кг в СПБ
COST_DELIVERY_SP = 0;
for (const key of window.tcart.products) {
let sku = key.sku.split("/");
if (sku.length > 1 && +sku[1][0] === 1) COST_DELIVERY_SP += COST_SP * key.quantity;
}
window.tcart.delivery = {
name: "Санкт-Петербург", price: COST_DELIVERY_SP,
};
window.tcart.amount = tcart.prodamount + COST_DELIVERY_SP;
tcart__saveLocalObj();
tcart__reDrawTotal();
}
function mskDelivery() {
if (DISTANCE === undefined) {
$submit.attr("disabled", true);
return false;
}
let COST_MSK = 25, // Стоимость доставки мешка 20 или 30 кг в СПБ
COLVO_DELIVERY_MSK = 0, PRICE;
RUN_MSK = true;
for (const key of window.tcart.products) {
let sku = key.sku.split("/");
if (sku.length > 1 && +sku[1][0] === 1) COLVO_DELIVERY_MSK += key.quantity;
}
if (!COLVO_DELIVERY_MSK) {
$submit.attr("disabled", true);
return false;
}
function calcOuter(price, outer) {
if (outer) {
PRICE = COST_MSK * DISTANCE;
} else {
if (price) PRICE = price; else PRICE = 0;
}
}
if (+DISTANCE) {
calcOuter(undefined, true);
} else {
switch (COLVO_DELIVERY_MSK) {
case 1:
case 2:
calcOuter(1000);
break;
case 3:
calcOuter(500);
break;
default:
calcOuter(undefined);
break;
}
}
$delivery.eq("0").attr("data-delivery-price", PRICE);
tcart.delivery = {name: ADDRESS ? "Москва: " + ADDRESS : "Москва", price: PRICE};
tcart.amount = tcart.prodamount + PRICE;
tcart__saveLocalObj();
tcart__reDrawTotal();
}
$(function () {
let $tcart = $(".t706__cartwin-content");
if ($tcart.length) {
let $linkmap = $tcart.find('input[name="linkmap"]'), $nametk = $tcart
.find('input[name="nametk"]')
.closest(".t-input-group")
.hide();
$address = $tcart.find('input[name="address"]');
$delivery = $tcart.find(".t-input-group_dl input").each(function () {
let a = $(this).val().split("=");
$(this).val(a[0]);
});
$passporttk = $tcart.find('input[name="passporttk"]').closest('.t-input-group').hide();
$submit = $tcart.find("button");
let myMap, myRoute, routeObjects, $sp = $tcart.find('input[value="Санкт-Петербург"]');
setTimeout(function () {
$submit.attr("disabled", true);
}, 2e3);
$tcart
.find('input[value="Москва"]')
.closest("label")
.after('<div id="map"></div>');
ymaps.ready(init);
let $map = $tcart.find("#map");
$delivery.each(function (i, e) {
switch (i) {
case 0:
$(this).on("click", function () {
$map.show();
$nametk.add($passporttk).hide();
$passporttkBackup = $passporttk.find('input').val();
$passporttk.find('input').val('-');
if ($address.val()) $addressBackup2 = $address.val();
$address.attr('disabled', true).val($addressBackup ? $addressBackup : '');
clearInterval(INT_SP);
INT_MSK = setInterval(mskDelivery, 500);
tcart__saveLocalObj();
tcart__reDrawTotal();
});
break;
case 1:
$(this).on("click", function () {
$map.add($nametk).add($passporttk).hide();
$passporttkBackup = $passporttk.find('input').val();
$passporttk.find('input').val('-');
$submit.add($address).attr("disabled", false);
if ($address.val()) $addressBackup = $address.val();
if ($addressBackup2) $address.val($addressBackup2);
clearInterval(INT_MSK);
spDelivery();
INT_SP = setInterval(spDelivery, 500);
});
break;
case 2:
$(this).on("click", function () {
$map.hide();
$nametk.add($passporttk).show();
$passporttk.find('input').val($passporttkBackup !== '-' ? $passporttkBackup : '');
$submit.add($address).attr("disabled", false);
if ($address.val()) $addressBackup = $address.val();
if ($addressBackup2) $address.val($addressBackup2);
clearInterval(INT_SP);
clearInterval(INT_MSK);
window.tcart.delivery = {
name: $(this).val(), price: $(this).data("delivery-price"),
};
window.tcart.amount = window.tcart.prodamount + window.tcart.delivery.price;
tcart__saveLocalObj();
tcart__reDrawTotal();
});
break;
}
});
у меня подозрения, что ошибка в $delivery.each(function (i, e) но где именно не могу понять