Скрипт корзины

Готовый функционал оформления заказа на сайте.
Добавляет товары в заказ, считает скидки и доставку и отправляет на почту.

Настроить корзину Пример работы

Корзина для сайта
Корзина для сайта

Добавление расчета доставки СДЭК в корзину

Доступно на тарифах: Полный

Для начала потребуется разместить на странице код подключения виджета СДЭКа

<script type="text/javascript" src="https://widget.cdek.ru/widget/widjet.js" id="ISDEKscript"> </script>

Далее требуется его инициализация с начальными параметрами для расчета:

<script type="text/javascript">
	var widjet = new ISDEKWidjet({
		defaultCity: 'Москва', //какой город отображается по умолчанию
		cityFrom: 'Домодедово', // из какого города будет идти доставка
		country: 'Россия', // можно выбрать страну, для которой отображать список ПВЗ
		link: false,
		popup: true,
		onChoose: onChoose,
		onChooseProfile: onChooseProfile,
	});
	
	/* Добавить обработку событий для onChoose и onChooseProfile (описана ниже) */ 
	
	/* Добавить отображение кнопки Выбрать ПВЗ (описана ниже) */
	
</script>

При инициализации используются две функции: onChoose и onChooseProfile, которые вызываются когда в виджете СДЭКа выбран ПВЗ или выбран тип курьерской доставки. В нашем случае эти функции должны будут добавлять в корзину произвольный товар с надванием "Доставка СДЭК" и стоимостью, которую рассчитает виджет.

function onChoose(wat) {
	self_name = 'Доставка СДЭК'; 
	self_desc = 'Доставка в пункт выдачи ' + wat.PVZ.Name + ' / срок ' + wat.term + ' дн. '; 
	self_price = Math.round(Number.parseInt(wat.price));
	self_img = 'https://easynetshop.ru/assets/images/cdek_logo.jpg'
	easynetshop_self(self_name, self_price, self_desc, self_img);
	widjet.close();
}
		
function onChooseProfile(wat) {
	self_name = 'Доставка СДЭК';
	self_desc =  'Доставка курьером ';
	self_price = Math.round(Number.parseInt(wat.price));
	self_img = 'https://easynetshop.ru/assets/images/cdek_logo.jpg'
	easynetshop_self(self_name, self_price, self_desc, self_img);
	widjet.close();
}

Остается добавить в форму заказа кнопку, которая будет запускать отображения виджета СДЭКа. Причем это кнопка должна быть только в том случае, если доставку мы еще не добавляли в заказ. А также при остутствии выбранного ПВЗ можно заблокировать возможность оформления заказа.

document.addEventListener("EasyNetShopModalOpened", function(event) {
	var easynetshop_cdek_delivery_exists = false;
	ens_jQuery('.easynetshop-goodtitle-name').each(function(){
		if (ens_jQuery(this).html() == 'Доставка СДЭК') {
			ens_jQuery(this).parents('.easynetshop-row').addClass('easynetshop-cdek-delivery-item').find('.easynetshop-center input, .easynetshop-center button').hide();
			ens_jQuery('.easynetshop-doorder').removeAttr("disabled");
			easynetshop_cdek_delivery_exists = true;
		}
	});
	if (!easynetshop_cdek_delivery_exists) {
		ens_jQuery('.easynetshop-goods').find('.easynetshop-row:last').before('<a href="javascript:void(0);" class="btn-ens-style" onclick="widjet.open()">Добавить доставку СДЭК</a>');
		ens_jQuery('.easynetshop-doorder').attr("disabled", "true");
	}
});

При одновременном отображении двух активных виджетов (корзины и выбора пункта выдачи заказа) возможно, что один будет перекрывать второй, поэтому с помощью стилей устанавливаем значение z-index для приоритетного виджета СДЭКа

<style> .CDEK-widget__popup-mask {    z-index: 9999; } </style>