Почему при выборе чекбокс не по порядку сбивается формула расчета доставки

В корзине есть варианты доставки: Санкт Петербург, Транспортная компания, Самовывоз. все это в виде чекбокса и расчет исходя из того что выбрано. Странность в следующем: выбираю сверху-вниз по порядку от Санкт Петербурга, до Самовывоз, расчет идет хорошо, т.е. если самовывоз то за доставку 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) но где именно не могу понять


Ответы (0 шт):