Данный код нужно разместить в header.html
файле, после подключения всех js файлов.
<script type="text/javascript">
function getCartData(){
return JSON.parse(localStorage.getItem('cart'));
}
function setCartData(o){
localStorage.setItem('cart', JSON.stringify(o));
return false;
}
</script>
На странице корзины товаров (basket.html
) нужно разместить следующий код:
<script type="text/javascript">
{% set pageBasketID = random(999999) %}
jsApplication.pageLoad(function(){
{% set variable = 'var_'~random(999999) %}
var {{variable}} = 0;
var param = '';
var load = [];
load = load.concat(ioGetModuleUrls({module: 'noty-packaged', push: 1}));
load = load.concat(ioGetModuleUrls({module: 'sweetalert', push: 1}));
load = load.concat(ioGetModuleUrls({module: 'autosize', push: 1}));
load = load.concat(ioGetModuleUrls({module: 'jquery-inputmask', push: 1}));
if(jsApplication.busy && load.length > 0) {jsApplication.busy(true); {{variable}} = 1;}
if(load.length > 0){
yepnope({
load: load,
complete: function(){
if(jsApplication.busy && {{variable}}) jsApplication.busy(false);
//onBootstrapEditable();
if($.fn.mask){
$('input.phonenumber').mask('+9 (999) 999-99-99', {placeholder: ' '});
}
setTimeout('pageBasket{{pageBasketID}}()', 10);
},
});
} else {
if(jsApplication.busy && {{variable}}) jsApplication.busy(false);
setTimeout('pageBasket{{pageBasketID}}()', 10);
}
});
function pageBasket{{pageBasketID}}(){
autosize($('.order-comment'));
// выбрать все товары
$(document).on('ifChanged', '.goodsitems-check-all', function(){
var checked = $(this).prop('checked');
$('.goodsitems-check').prop('checked', checked);
$('.goodsitem-check').prop('checked', checked);
$('.i-check, .i-radio').iCheck('update');
calcSelectedOffers();
});
// выбрать все товары продавца
$(document).on('ifChanged', '.goodsitems-check', function(){
var checked = $(this).prop('checked');
if(!checked) $('.goodsitems-check-all').prop('checked', checked);
$.each($(this).parent().parent().parent().parent().parent().parent().find('.goodsitem-check'), function(i, el){
$(el).prop('checked', checked);
});
// проверка всех галочек
var flag_check2 = true;
$('.goodsitems-check').each(function(i, el){
if(flag_check2 && !$(el).prop('checked')) flag_check2 = false;
});
if(flag_check2) $('.goodsitems-check-all').prop('checked', true);
$('.i-check, .i-radio').iCheck('update');
calcSelectedOffers();
});
// выбрать товар
$(document).on('ifChanged', '.goodsitem-check', function(){
var pkid = $(this).attr('data-pkid');
var checked = $(this).prop('checked');
if(!checked){
$('.goodsitems-check-all').prop('checked', checked);
$(this).parent().parent().parent().parent().parent().parent().parent().parent().parent().find('.goodsitems-check').prop('checked', checked);
}
// проверка всех галочек в компании
var flag_check1 = true;
$.each($(this).parent().parent().parent().parent().parent().parent().parent().parent().find('.goodsitem-check'), function(i, el){
if(flag_check1 && !$(el).prop('checked')) flag_check1 = false;
});
if(flag_check1) $(this).parent().parent().parent().parent().parent().parent().parent().parent().parent().find('.goodsitems-check').prop('checked', true);
// проверка всех галочек
var flag_check2 = true;
$('.goodsitems-check').each(function(i, el){
if(flag_check2 && !$(el).prop('checked')) flag_check2 = false;
});
if(flag_check2) $('.goodsitems-check-all').prop('checked', true);
$('.i-check, .i-radio').iCheck('update');
calcSelectedOffers();
});
{% if not user.isGuest %}
// удалить товар
$(document).on('click', '.goodsitem-delete-btn', function(){
if(confirm('Вы уверены?')){
var pkid = $(this).attr('data-pkid');
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersBasket.delete',
resultType: 'json',
params: {
pkid: pkid,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
$('.goodsitem.goodsitem-'+pkid).remove();
$('.goodsitems-list').each(function(i, el){
if($(el).find('.goodsitem').length <= 0){
$(el).parent().parent().remove();
}
});
if($('.basket-list .basket-item').length > 0){
calcSelectedOffers();
} else {
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
$('.basket-offers-count').html($('.basket-list .basket-item .goodsitem').length <= 99 ? $('.basket-list .basket-item .goodsitem').length : '99+');
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
}
});
}
});
// удалить выбранные товары
$(document).on('click', '.goodsitems-selected-delete-btn', function(){
var flag_checked = false, checked_pkids = [];
$.each($('.goodsitem-check'), function(i, el){
if($(el).prop('checked')){
flag_checked = true;
var pkid = $(el).attr('data-pkid');
checked_pkids.push(pkid);
}
});
if(flag_checked){
if(confirm('Вы уверены?')){
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersBasket.delete',
resultType: 'json',
params: {
pkid: checked_pkids,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
$.each(checked_pkids, function(i, pkid){
$('.goodsitem.goodsitem-'+pkid).remove();
});
$('.goodsitems-list').each(function(i, el){
if($(el).find('.goodsitem').length <= 0){
$(el).parent().parent().remove();
}
});
if($('.basket-list .basket-item').length > 0){
calcSelectedOffers();
} else {
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
$('.basket-offers-count').html($('.basket-list .basket-item .goodsitem').length <= 99 ? $('.basket-list .basket-item .goodsitem').length : '99+');
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
}
});
}
} else {
var n = noty({
text: 'Выберите товары для удаления',
type: 'information',
layout: 'bottomRight',
timeout: 2000,
});
}
});
// изменение метода доставки
$(document).on('click', '.goodsitem-amount-delivery', function(){
var $objb = $(this);
if(!$objb.hasClass('process')){
var company_pkid = $objb.attr('data-company-pkid');
var pkid = $objb.attr('data-pkid');
if(company_pkid && pkid){
var oldhtml = $objb.find('.value').html();
$objb.addClass('process');
$objb.find('.value').html('<i class="fa fa-spinner fa-spin"></i>');
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.warehouses.getDeliveryMethods',
resultType: 'json',
params: {
company_pkid: company_pkid,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
var delivery_methods = obj.res.data;
var delivery_methods_html = '';
$.each(delivery_methods, function(i, el){
delivery_methods_html += (
'<a href="javascript://" data-method="0" data-warehouse-pkid="'+el.pkid+'" class="list-group-item delivery-method-item">'+
'<div class="row">'+
'<div class="col-md-4">'+
'Самовывоз (0 KZT)'+
'</div>'+
'<div class="col-md-8 text-center">'+
(el.name || '')+
(el.location ?
(el.location.address ?
' ('+el.location.address+')'
:'')
:'')+
'</div>'+
'</div>'+
'</a>'
);
});
/*
type: BootstrapDialog.TYPE_DEFAULT,
type: BootstrapDialog.TYPE_INFO,
type: BootstrapDialog.TYPE_PRIMARY,
type: BootstrapDialog.TYPE_SUCCESS,
type: BootstrapDialog.TYPE_WARNING,
type: BootstrapDialog.TYPE_DANGER,
size: BootstrapDialog.SIZE_NORMAL, // normal
size: BootstrapDialog.SIZE_SMALL, // small
size: BootstrapDialog.SIZE_WIDE, // large
size: BootstrapDialog.SIZE_LARGE, // big font
*/
BootstrapDialog.show({
closable: true,
type: BootstrapDialog.TYPE_PRIMARY,
//size: BootstrapDialog.SIZE_SMALL, // small
title: 'Выберите метод доставки',
message: (
'<div class="list-group">'+
delivery_methods_html+
'</div>'
),
buttons: [
{
label: 'Отмена',
cssClass: 'btn-default',
action: function(dialog, event){
dialog.close();
},
}
],
onshown: function(dialog){
// выбор метода доставки
dialog.getModalBody().find('.delivery-method-item').off('click');
dialog.getModalBody().find('.delivery-method-item').on('click', function(){
var $objel = $(this);
var delivery_method = $objel.attr('data-method');
var delivery_warehouse_pkid = $objel.attr('data-warehouse-pkid');
$objb.addClass('process');
$objb.find('.value').html('<i class="fa fa-spinner fa-spin"></i>');
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersBasket.changeDeliveryMethod',
resultType: 'json',
params: {
pkid: pkid,
delivery_method: delivery_method,
delivery_warehouse_pkid: delivery_warehouse_pkid,
},
success: function(data, tag){
//console.log(data);
var obj2;try{obj2 = $.parseJSON(data);}catch(ex){obj2 = null;}
if(obj2 != null && typeof(obj2.res) != 'undefined' && obj2.res != null && obj2.res.error_code == '1'){
$objb.find('.value')
.attr('data-method', delivery_method)
.attr('data-warehouse-pkid', delivery_warehouse_pkid)
.html(
'<div>'+(obj2.res.delivery_method_name||'')+'</div>'+
(delivery_method == 0 ?
'<div class="text-sm">Точка самовывоза: '+(obj2.res.delivery_warehouse_name||'не выбрана')+'</div>'
:'')
);
if($objb.parent().parent().find('.goodsitem-check').prop('checked')){
calcSelectedOffers();
}
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj2 != null && obj2.res.error_str != '' ? ' Полный текст ошибки: '+obj2.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
$objb.find('.value').html(oldhtml);
}
$objb.removeClass('process');
}
});
dialog.close();
});
},
});
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
$objb.find('.value').html(oldhtml);
$objb.removeClass('process');
}
});
} else {
if(!company_pkid){
var n = noty({
text: 'Не указан pkid компании',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
} else if(!pkid){
var n = noty({
text: 'Не указан pkid записи',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
}
}
}
});
// изменение количества товара
$(document).on('change', '.goodsitem-count', function(){
var $objb = $(this);
var basketitem_pkid = $objb.attr('data-pkid');
var min_count = parseInt($objb.attr('min'));
var max_count = parseInt($objb.attr('max'));
var new_count = parseInt($objb.val()) || 1;
if(new_count < min_count) new_count = min_count;
if(new_count > max_count) new_count = max_count;
$objb.attr('disabled', 'disabled');
$objb.val(new_count);
$objb.parent().parent().find('.goodsitem-itog').html('<i class="fa fa-spinner fa-spin m-r-small"></i>');
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersBasket.changeCount',
resultType: 'json',
params: {
pkid: basketitem_pkid,
count: new_count,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
//console.log(obj);
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
$objb.parent().parent().find('.goodsitem-itog').html(format_money(obj.res.full_amount, false));
if($objb.parent().parent().find('.goodsitem-check').prop('checked')){
calcSelectedOffers();
}
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
$objb.removeAttr('disabled');
}
});
});
// калькуляция выбранных товаров
function calcSelectedOffers(){
$('.goodsitem-buy-btn').addClass('process disabled');
var checked_pkids = [], flag_delivery_method_not0 = false;
$.each($('.goodsitem-check'), function(i, el){
if($(el).prop('checked')){
var pkid = $(el).attr('data-pkid');
checked_pkids.push(pkid);
if(!flag_delivery_method_not0){
var delivery_method = $(el).parent().parent().parent().parent().parent().parent().parent().find('.goodsitem-amount-delivery .value').attr('data-method');
//console.log(delivery_method);
flag_delivery_method_not0 = (delivery_method != 0);
}
}
});
$('.goodsitems-selected-info .total-count').html(checked_pkids.length);
$('.goodsitems-selected-info .total-amount').html('<i class="fa fa-spinner fa-spin m-r-small"></i>');
$('.goodsitems-selected-info .total-amount-delivery').html('<i class="fa fa-spinner fa-spin m-r-small"></i>');
$('.goodsitems-selected-info .total-itog').html('<i class="fa fa-spinner fa-spin m-r-small"></i>');
$('.order-country').attr('disabled', 'disabled');
$('.order-city').attr('disabled', 'disabled');
$('.order-address').attr('disabled', 'disabled');
$('.order-zipcode').attr('disabled', 'disabled');
if(checked_pkids.length > 0){
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersBasket.getSelectedAmount',
resultType: 'json',
params: {
pkids: checked_pkids,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
var checked_pkids = [];
$.each($('.goodsitem-check'), function(i, el){
if($(el).prop('checked')){
var pkid = $(el).attr('data-pkid');
checked_pkids.push(pkid);
}
});
if(checked_pkids.length > 0){
$('.goodsitems-selected-info .total-amount').html(format_money(obj.res.amount, false));
$('.goodsitems-selected-info .total-amount-delivery').html(format_money(obj.res.amount_delivery, false));
$('.goodsitems-selected-info .total-itog').html(format_money(obj.res.full_amount, false));
//$('.goodsitems-itog').html(format_money(obj.res.full_amount, false));
} else {
$('.goodsitems-selected-info .total-amount').html(format_money({value: 0, currency: 'KZT'}, false));
$('.goodsitems-selected-info .total-amount-delivery').html(format_money({value: 0, currency: 'KZT'}, false));
$('.goodsitems-selected-info .total-itog').html(format_money({value: 0, currency: 'KZT'}, false));
//$('.goodsitems-itog').html(format_money({value: 0, currency: 'KZT'}, false));
}
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
$('.goodsitem-buy-btn').removeClass('process disabled');
}
});
if(flag_delivery_method_not0){
$('.order-country').removeAttr('disabled');
$('.order-city').removeAttr('disabled');
$('.order-address').removeAttr('disabled');
$('.order-zipcode').removeAttr('disabled');
}
} else {
$('.goodsitems-selected-info .total-amount').html(format_money({value: 0, currency: 'KZT'}, false));
$('.goodsitems-selected-info .total-amount-delivery').html(format_money({value: 0, currency: 'KZT'}, false));
$('.goodsitems-selected-info .total-itog').html(format_money({value: 0, currency: 'KZT'}, false));
//$('.goodsitems-itog').html(format_money({value: 0, currency: 'KZT'}, false));
$('.goodsitem-buy-btn').removeClass('process disabled');
}
}
// заказ выбранных товаров
$(document).on('click', '.order-send-btn', function(){
var $objb = $(this);
if(!$objb.hasClass('process')){
var checked_pkids = [], flag_delivery_method_not0 = false;
$.each($('.goodsitem-check'), function(i, el){
if($(el).prop('checked')){
var pkid = $(el).attr('data-pkid');
checked_pkids.push(pkid);
if(!flag_delivery_method_not0){
var delivery_method = $(el).parent().parent().parent().parent().parent().parent().parent().find('.goodsitem-amount-delivery .value').attr('data-method');
flag_delivery_method_not0 = (delivery_method != 0);
}
}
});
if(checked_pkids.length > 0){
var order_country = $('.order-country').val() || '';
var order_city = $('.order-city').val() || '';
var order_address = $('.order-address').val() || '';
var order_zipcode = $('.order-zipcode').val() || '';
if(!flag_delivery_method_not0
|| (flag_delivery_method_not0
&& order_country != ''
&& order_city != ''
&& order_address != ''
&& order_zipcode != '')){
if(confirm('Вы собираетесь оформить заказ. Продолжить?')){
$objb
.addClass('process disabled')
.html('<i class="fa fa-spinner fa-spin m-r-small"></i> Оформление заказа');
var payment_method = parseInt($('.order-payment-method').val()) || 0;
var comment = (
(flag_delivery_method_not0 ?
'Страна: '+order_country+"\n"+
'Город: '+order_city+"\n"+
'Адрес: '+order_address+"\n"+
'Почтовый индекс: '+order_zipcode+"\n"+
"\n"
:'')+
'Способ оплаты: '+$('.order-payment-method :selected').text()
);
if($('.order-comment').val() != ''){
comment += "\n\n"+'Комментарий к заказу: '+$('.order-comment').val();
}
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.invoices2.addFromBasket',
resultType: 'json',
params: {
pkids: checked_pkids,
payment_method: payment_method,
comment: comment,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
swal({
title: 'Заказ успешно оформлен!',
text: 'Ожидайте обработки вашего заказа',
type: 'success',
showConfirmButton: false,
});
setTimeout(function(){
if(typeof(obj.res.pkids) != 'undefined'){
if(obj.res.pkids.length == 1){
document.location.href = urlGetAdd('/orders', 'pkid', obj.res.pkids[0], 'account', '{{user.account}}');
} else {
document.location.href = urlGetAdd('/orders', 'account', '{{user.account}}');
}
} else {
document.location.href = urlGetAdd('/orders', 'account', '{{user.account}}');
}
}, 2000);
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
$objb
.removeClass('process disabled')
.html('Оформить заказ');
}
});
}
} else {
if(order_country == ''){
var n = noty({
text: 'Укажите Вашу страну',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.order-country').focus();
} else if(order_city == ''){
var n = noty({
text: 'Укажите Ваш город',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.order-city').focus();
} else if(order_address == ''){
var n = noty({
text: 'Укажите Ваш адрес',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.order-address').focus();
} else if(order_zipcode == ''){
var n = noty({
text: 'Укажите Ваш почтовый индекс',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.order-zipcode').focus();
}
}
} else {
var n = noty({
text: 'Выберите товары для заказа',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
}
}
});
// первоначальная загрузка корзины
function loadingOffersBasket(){
// если что-то в корзине уже есть, начинаем формировать данные для вывода
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersBasket.getData2',
resultType: 'json',
params: {
filter: {
offer_type: 2, // розничные
},
limit: 1000,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
var offersBasket = obj.res.data || [];
$('.basket .basket-list').html('');
if(offersBasket.length > 0){
$.each(offersBasket, function(i, offer){
var basketofferitems = '';
$.each(offer.offers, function(j, offeritem){
var offer_poster = '{{template.path}}/img/bmcsales-logo.svg';
if(offeritem.images && offeritem.images.length > 0){
if(offeritem.images[0].urlSmall){
offer_poster = '{{ioProjects.trade}}/'+offeritem.images[0].urlSmall;
} else {
if(offeritem.images[0].url){
offer_poster = '{{ioProjects.trade}}/'+offeritem.images[0].url;
}
}
} else {
if(offeritem.offer_images && offeritem.offer_images.length > 0){
if(offeritem.offer_images[0].urlSmall){
offer_poster = '{{ioProjects.trade}}/'+offeritem.offer_images[0].urlSmall;
} else {
{% if offeritem.offer_images.0.url %}
offer_poster = '{{ioProjects.trade}}/'+offeritem.offer_images[0].url;
{% endif %}
}
}
}
if(countObj(offeritem.offer_sel_parameter) > 0){
var offerparams_txt = '';
if(offeritem.color_pkid){
offerparams_txt += (offerparams_txt != '' ? ', ' : '')+'цвет: '+offeritem.color_name['{{currentlang}}'];
}
if(offeritem.size_pkid){
offerparams_txt += (offerparams_txt != '' ? ', ' : '')+'размер: '+offeritem.size_name;
}
if(offeritem.gender_pkid){
offerparams_txt += (offerparams_txt != '' ? ', ' : '')+'пол: '+offeritem.gender_name;
}
if(offerparams_txt != ''){
offerparams_txt = '<div class="text-sm text-muted">Характеристики: '+offerparams_txt+'</div>';
}
basketofferitems += (
'<div class="row goodsitem goodsitem-'+offeritem.offerbasket_pkid+'">'+
'<div class="col-md-4 col-xs-12">'+
'<div class="row">'+
'<div class="col-xs-2 col-sm-1 text-center">'+
'<div class="checkbox">'+
'<label>'+
'<input class="i-check goodsitem-check" data-pkid="'+offeritem.offerbasket_pkid+'" type="checkbox" />'+
'</label>'+
'</div>'+
'<div>'+
'<a href="javascript://" class="goodsitem-delete-btn" data-pkid="'+offeritem.offerbasket_pkid+'" title="Удалить"><i class="fa fa-lg fa-trash"></i></a>'+
'</div>'+
'</div>'+
'<div class="col-xs-3 col-sm-3">'+
'<a href="'+urlGetAdd('{{link('/catalog')}}', 'tid', offeritem.tid, 'offernum', offeritem.offer_number)+'">'+
'<img src="'+offer_poster+'" />'+
'</a>'+
'</div>'+
'<div class="col-xs-7 col-sm-8">'+
'<a href="'+urlGetAdd('{{link('/catalog')}}', 'tid', offeritem.tid, 'offernum', offeritem.offer_number)+'">'+
'<div class="text-sm">'+offeritem.tid+'</div>'+
'<div>'+(offeritem.goods_name['{{currentlang}}']||(offeritem.offer_name||''))+'</div>'+
'</a>'+
offerparams_txt+
'</div>'+
'</div>'+
'</div>'+
'<div class="col-md-2 col-xs-4 text-center">'+
'<h5 class="text-sm">Цена за ед.</h5>'+
(offeritem.offer_discount && offeritem.offer_discount > 0 ?
'<div class="text-sm"><s>'+number_format(offeritem.offer_sel_parameter.cost_per_unit.value, 2, '.', ' ')+' '+offeritem.offer_sel_parameter.cost_per_unit.currency+'</s></div>'+
'<div>'+number_format(offeritem.offer_sel_parameter.cost_per_unit.value - ((offeritem.offer_sel_parameter.cost_per_unit.value / 100) * offeritem.offer_discount), 2, '.', ' ')+' '+offeritem.offer_sel_parameter.cost_per_unit.currency+'</div>'
:
'<div>'+number_format(offeritem.offer_sel_parameter.cost_per_unit.value, 2, '.', ' ')+' '+offeritem.offer_sel_parameter.cost_per_unit.currency+'</div>'
)+
(offeritem.offer_discount && offeritem.offer_discount > 0 ?
'<div class="text-sm">'+
'Скидка: <span>-'+offeritem.offer_discount+'%</span>'+
'</div>'
:'')+
'</div>'+
'<div class="col-md-1 col-xs-4 text-center">'+
'<h5 class="text-sm">Кол-во</h5>'+
'<input class="form-control text-center goodsitem-count" type="number" min="'+offeritem.offer_minimum_lot+'" max="'+offeritem.offer_sel_parameter.count+'" data-pkid="'+offeritem.offerbasket_pkid+'" value="'+offeritem.count+'" />'+
'</div>'+
'<div class="col-md-2 col-xs-4 text-center">'+
'<h5 class="text-sm">Сумма</h5>'+
'<div class="goodsitem-itog">'+
(offeritem.offer_discount && offeritem.offer_discount > 0 ?
number_format((offeritem.offer_sel_parameter.cost_per_unit.value - ((offeritem.offer_sel_parameter.cost_per_unit.value / 100) * offeritem.offer_discount) * offeritem.count), 2, '.', ' ')+' '+offeritem.offer_sel_parameter.cost_per_unit.currency
:
number_format(offeritem.offer_sel_parameter.cost_per_unit.value * offeritem.count, 2, '.', ' ')+' '+offeritem.offer_sel_parameter.cost_per_unit.currency
)+
'</div>'+
'</div>'+
'<div class="col-md-3 col-xs-12">'+
'<h5 class="text-sm">Доставка</h5>'+
'<a href="javascript://" class="goodsitem-amount-delivery" data-company-pkid="'+offeritem.company_pkid+'" data-pkid="'+offeritem.offerbasket_pkid+'">'+
'<div class="value" data-method="'+offeritem.delivery_method+'" data-warehouse-pkid="'+offeritem.delivery_warehouse_pkid+'">'+
'<div>'+offeritem.delivery_method_name+'</div>'+
(offeritem.delivery_method == 0 ?
'<div class="text-sm">Точка самовывоза: '+(offeritem.delivery_warehouse_name||'не выбрана')+'</div>'
:'')+
'</div>'+
'</a>'+
'</div>'+
'</div>'
);
} else {
basketofferitems += (
'<div class="row goodsitem goodsitem-'+offeritem.offerbasket_pkid+'">'+
'<div class="col-md-4 col-xs-12">'+
'<div class="row">'+
'<div class="col-xs-2 col-sm-1 text-center">'+
'<div class="checkbox">'+
'<label>'+
'<input class="i-check goodsitem-check" data-pkid="'+offeritem.offerbasket_pkid+'" type="checkbox" />'+
'</label>'+
'</div>'+
'<div>'+
'<a href="javascript://" class="goodsitem-delete-btn" data-pkid="'+offeritem.offerbasket_pkid+'" title="Удалить"><i class="fa fa-lg fa-trash"></i></a>'+
'</div>'+
'</div>'+
'<div class="col-xs-3 col-sm-3">'+
'<a href="'+urlGetAdd('{{link('/catalog')}}', 'tid', offeritem.tid, 'offernum', offeritem.offer_number)+'">'+
'<img src="'+offer_poster+'" />'+
'</a>'+
'</div>'+
'<div class="col-xs-7 col-sm-8">'+
'<a href="'+urlGetAdd('{{link('/catalog')}}', 'tid', offeritem.tid, 'offernum', offeritem.offer_number)+'">'+
'<div class="text-sm">'+offeritem.tid+'</div>'+
'<div>'+(offeritem.goods_name['{{currentlang}}']||(offeritem.offer_name||'товар недоступен'))+'</div>'+
'</a>'+
'<div>Товар недоступен</div>'+
'</div>'+
'</div>'+
'</div>'+
'</div>'
);
}
});
$('.basket .basket-list').append(
'<section class="panel basket-item">'+
'<div class="panel-body">'+
'<div>'+
'<div class="checkbox">'+
'<label>'+
'<input class="i-check goodsitems-check" type="checkbox" />'+
'<h5>Продавец: '+offer.company_name+'</h5>'+
'</label>'+
'</div>'+
'</div>'+
'<div class="goodsitems-list">'+
basketofferitems+
'</div>'+
'</div>'+
'</section>'
);
});
$('.i-check, .i-radio').iCheck({
checkboxClass: 'i-check',
radioClass: 'i-radio'
});
if(offersBasket.length > 0){
$('.basket-loading').css('display', 'none');
$('.basket-empty').css('display', 'none');
$('.basket').css('display', '');
} else {
// если в корзине пусто, то сигнализируем об этом
$('.basket-loading').css('display', 'none');
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
} else {
// если в корзине пусто, то сигнализируем об этом
$('.basket-loading').css('display', 'none');
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
} else {
var n = noty({
text: 'Произошла ошибка при загрузке корзины. Попробуйте загрузить её еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
}
});
}
loadingOffersBasket();
{% else %}
// удалить товар
$(document).on('click', '.goodsitem-delete-btn', function(){
if(confirm('Вы уверены?')){
var pkid = $(this).attr('data-pkid');
var cartData = getCartData() || []; // вытаскиваем все данные корзины
var cartData2 = [];
$.each(cartData, function(i, el){
if(el.tmp_pkid != pkid){
cartData2.push(el);
}
});
localStorage.removeItem('cart');
setCartData(cartData2);
$('.goodsitem.goodsitem-'+pkid).remove();
$('.goodsitems-list').each(function(i, el){
if($(el).find('.goodsitem').length <= 0){
$(el).parent().parent().remove();
}
});
if($('.basket-list .basket-item').length > 0){
calcSelectedOffers();
} else {
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
$('.basket-offers-count').html(cartData2.length <= 99 ? cartData2.length : '99+');
}
});
// удалить выбранные товары
$(document).on('click', '.goodsitems-selected-delete-btn', function(){
var flag_checked = false, checked_pkids = [];
$.each($('.goodsitem-check'), function(i, el){
if($(el).prop('checked')){
flag_checked = true;
var pkid = $(el).attr('data-pkid');
checked_pkids.push(pkid);
}
});
if(flag_checked){
if(confirm('Вы уверены?')){
var cartData = getCartData() || []; // вытаскиваем все данные корзины
var cartData2 = [];
$.each(cartData, function(j, el){
if(!in_array(el.tmp_pkid, checked_pkids)){
cartData2.push(el);
}
});
localStorage.removeItem('cart');
setCartData(cartData2);
$.each(checked_pkids, function(i, pkid){
$('.goodsitem.goodsitem-'+pkid).remove();
});
$('.goodsitems-list').each(function(i, el){
if($(el).find('.goodsitem').length <= 0){
$(el).parent().parent().remove();
}
});
if($('.basket-list .basket-item').length > 0){
calcSelectedOffers();
} else {
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
$('.basket-offers-count').html(cartData2.length <= 99 ? cartData2.length : '99+');
}
} else {
var n = noty({
text: 'Выберите товары для удаления',
type: 'information',
layout: 'bottomRight',
timeout: 2000,
});
}
});
// изменение метода доставки
$(document).on('click', '.goodsitem-amount-delivery', function(){
var $objb = $(this);
if(!$objb.hasClass('process')){
var company_pkid = $objb.attr('data-company-pkid');
var pkid = $objb.attr('data-pkid');
if(company_pkid && pkid){
var oldhtml = $objb.find('.value').html();
$objb.addClass('process');
$objb.find('.value').html('<i class="fa fa-spinner fa-spin"></i>');
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.warehouses.getDeliveryMethods',
resultType: 'json',
params: {
company_pkid: company_pkid,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
var delivery_methods = obj.res.data;
var delivery_methods_html = '';
$.each(delivery_methods, function(i, el){
delivery_methods_html += (
'<a href="javascript://" data-method="0" data-warehouse-pkid="'+el.pkid+'" class="list-group-item delivery-method-item">'+
'<div class="row">'+
'<div class="col-md-4">'+
'Самовывоз (0 KZT)'+
'</div>'+
'<div class="col-md-8 text-center">'+
(el.name || '')+
(el.location ?
(el.location.address ?
' ('+el.location.address+')'
:'')
:'')+
'</div>'+
'</div>'+
'</a>'
);
});
/*
type: BootstrapDialog.TYPE_DEFAULT,
type: BootstrapDialog.TYPE_INFO,
type: BootstrapDialog.TYPE_PRIMARY,
type: BootstrapDialog.TYPE_SUCCESS,
type: BootstrapDialog.TYPE_WARNING,
type: BootstrapDialog.TYPE_DANGER,
size: BootstrapDialog.SIZE_NORMAL, // normal
size: BootstrapDialog.SIZE_SMALL, // small
size: BootstrapDialog.SIZE_WIDE, // large
size: BootstrapDialog.SIZE_LARGE, // big font
*/
BootstrapDialog.show({
closable: true,
type: BootstrapDialog.TYPE_PRIMARY,
//size: BootstrapDialog.SIZE_SMALL, // small
title: 'Выберите метод доставки',
message: (
'<div class="list-group">'+
delivery_methods_html+
'</div>'
),
buttons: [
{
label: 'Отмена',
cssClass: 'btn-default',
action: function(dialog, event){
dialog.close();
},
}
],
onshown: function(dialog){
dialog.getModalBody().find('.reg-captcha').focus();
// выбор метода доставки
dialog.getModalBody().find('.delivery-method-item').off('click');
dialog.getModalBody().find('.delivery-method-item').on('click', function(){
var $objel = $(this);
var delivery_method = $objel.attr('data-method');
var delivery_warehouse_pkid = $objel.attr('data-warehouse-pkid');
$objb.addClass('process');
$objb.find('.value').html('<i class="fa fa-spinner fa-spin"></i>');
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersBasket.changeDeliveryMethod',
resultType: 'json',
params: {
delivery_method: delivery_method,
delivery_warehouse_pkid: delivery_warehouse_pkid,
},
success: function(data, tag){
//console.log(data);
var obj2;try{obj2 = $.parseJSON(data);}catch(ex){obj2 = null;}
if(obj2 != null && typeof(obj2.res) != 'undefined' && obj2.res != null && obj2.res.error_code == '1'){
var cartData = getCartData() || [], cartData2 = [];
$.each(cartData, function(i, el){
if(el.tmp_pkid == pkid){
el.delivery_method = delivery_method;
el.delivery_warehouse_pkid = delivery_warehouse_pkid;
}
cartData2.push(el);
});
localStorage.removeItem('cart');
setCartData(cartData2);
$objb.find('.value')
.attr('data-method', delivery_method)
.attr('data-warehouse-pkid', delivery_warehouse_pkid)
.html(
'<div>'+(obj2.res.delivery_method_name||'')+'</div>'+
(delivery_method == 0 ?
'<div class="text-sm">Точка самовывоза: '+(obj2.res.delivery_warehouse_name||'не выбрана')+'</div>'
:'')
);
if($objb.parent().parent().find('.goodsitem-check').prop('checked')){
calcSelectedOffers();
}
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj2 != null && obj2.res.error_str != '' ? ' Полный текст ошибки: '+obj2.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
$objb.find('.value').html(oldhtml);
}
$objb.removeClass('process');
}
});
dialog.close();
});
},
});
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
$objb.find('.value').html(oldhtml);
$objb.removeClass('process');
}
});
} else {
if(!company_pkid){
var n = noty({
text: 'Не указан pkid компании',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
} else if(!pkid){
var n = noty({
text: 'Не указан pkid записи',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
}
}
}
});
// изменение количества товара
$(document).on('change', '.goodsitem-count', function(){
var $objb = $(this);
var pkid = $objb.attr('data-pkid');
var min_count = parseInt($objb.attr('min'));
var max_count = parseInt($objb.attr('max'));
var new_count = parseInt($objb.val()) || 1;
if(new_count < min_count) new_count = min_count;
if(new_count > max_count) new_count = max_count;
$objb.attr('disabled', 'disabled');
$objb.val(new_count);
var old_itog = $objb.parent().parent().find('.goodsitem-itog').html();
$objb.parent().parent().find('.goodsitem-itog').html('<i class="fa fa-spinner fa-spin m-r-small"></i>');
var cartData = getCartData() || [], cartData2 = [], offerBasket_item = [], old_count = 1;
$.each(cartData, function(i, el){
if(el.tmp_pkid == pkid){
old_count = el.count;
offerBasket_item = el;
}
});
if(new_count != old_count){
if(offerBasket_item){
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersBasket.changeCount',
resultType: 'json',
params: {
obj: offerBasket_item,
count: new_count,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
//console.log(obj);
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
$.each(cartData, function(i, el){
if(el.tmp_pkid == pkid){
el.count = new_count;
}
cartData2.push(el);
});
localStorage.removeItem('cart');
setCartData(cartData2);
$objb.parent().parent().find('.goodsitem-itog').html(format_money(obj.res.full_amount, false));
if($objb.parent().parent().find('.goodsitem-check').prop('checked')){
calcSelectedOffers();
}
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
// возвращаем старое значение
$objb.val(old_count);
$objb.parent().parent().find('.goodsitem-itog').html(old_itog);
}
$objb.removeAttr('disabled');
}
});
} else {
// почему-то товар не найден в корзине...
}
} else {
$objb.val(old_count);
$objb.parent().parent().find('.goodsitem-itog').html(old_itog);
$objb.removeAttr('disabled');
}
});
// калькуляция выбранных товаров
function calcSelectedOffers(){
$('.goodsitem-buy-btn').addClass('process disabled');
var cartData = getCartData() || [], checked_offersBasket = [], flag_delivery_method_not0 = false;
$.each($('.goodsitem-check'), function(i, el){
if($(el).prop('checked')){
var pkid = $(el).attr('data-pkid');
$.each(cartData, function(j, el2){
if(el2.tmp_pkid == pkid){
checked_offersBasket.push(el2);
}
});
if(!flag_delivery_method_not0){
var delivery_method = $(el).parent().parent().parent().parent().parent().parent().parent().find('.goodsitem-amount-delivery .value').attr('data-method');
//console.log(delivery_method);
flag_delivery_method_not0 = (delivery_method != 0);
}
}
});
$('.goodsitems-selected-info .total-count').html(checked_offersBasket.length);
$('.goodsitems-selected-info .total-amount').html('<i class="fa fa-spinner fa-spin m-r-small"></i>');
$('.goodsitems-selected-info .total-amount-delivery').html('<i class="fa fa-spinner fa-spin m-r-small"></i>');
$('.goodsitems-selected-info .total-itog').html('<i class="fa fa-spinner fa-spin m-r-small"></i>');
$('.order-country').attr('disabled', 'disabled');
$('.order-city').attr('disabled', 'disabled');
$('.order-address').attr('disabled', 'disabled');
$('.order-zipcode').attr('disabled', 'disabled');
if(checked_offersBasket.length > 0){
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersBasket.getSelectedAmount',
resultType: 'json',
params: {
offersBasket: checked_offersBasket,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
var checked_pkids = [];
$.each($('.goodsitem-check'), function(i, el){
if($(el).prop('checked')){
var pkid = $(el).attr('data-pkid');
checked_pkids.push(pkid);
}
});
if(checked_pkids.length > 0){
$('.goodsitems-selected-info .total-amount').html(format_money(obj.res.amount, false));
$('.goodsitems-selected-info .total-amount-delivery').html(format_money(obj.res.amount_delivery, false));
$('.goodsitems-selected-info .total-itog').html(format_money(obj.res.full_amount, false));
//$('.goodsitems-itog').html(format_money(obj.res.full_amount, false));
} else {
$('.goodsitems-selected-info .total-amount').html(format_money({value: 0, currency: 'KZT'}, false));
$('.goodsitems-selected-info .total-amount-delivery').html(format_money({value: 0, currency: 'KZT'}, false));
$('.goodsitems-selected-info .total-itog').html(format_money({value: 0, currency: 'KZT'}, false));
//$('.goodsitems-itog').html(format_money({value: 0, currency: 'KZT'}, false));
}
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
$('.goodsitem-buy-btn').removeClass('process disabled');
}
});
if(flag_delivery_method_not0){
$('.order-country').removeAttr('disabled');
$('.order-city').removeAttr('disabled');
$('.order-address').removeAttr('disabled');
$('.order-zipcode').removeAttr('disabled');
}
} else {
$('.goodsitems-selected-info .total-amount').html(format_money({value: 0, currency: 'KZT'}, false));
$('.goodsitems-selected-info .total-amount-delivery').html(format_money({value: 0, currency: 'KZT'}, false));
$('.goodsitems-selected-info .total-itog').html(format_money({value: 0, currency: 'KZT'}, false));
//$('.goodsitems-itog').html(format_money({value: 0, currency: 'KZT'}, false));
$('.goodsitem-buy-btn').removeClass('process disabled');
}
}
// заказ выбранных товаров
$(document).on('click', '.order-send-btn', function(){
var $objb = $(this);
if(!$objb.hasClass('process')){
var cartData = getCartData() || [], checked_offersBasket = [], flag_delivery_method_not0 = false;
$.each($('.goodsitem-check'), function(i, el){
if($(el).prop('checked')){
var pkid = $(el).attr('data-pkid');
$.each(cartData, function(j, el2){
if(el2.tmp_pkid == pkid){
checked_offersBasket.push(el2);
}
});
if(!flag_delivery_method_not0){
var delivery_method = $(el).parent().parent().parent().parent().parent().parent().parent().find('.goodsitem-amount-delivery .value').attr('data-method');
//console.log(delivery_method);
flag_delivery_method_not0 = (delivery_method != 0);
}
}
});
if(checked_offersBasket.length > 0){
var user_sname = $('.user-sname').val() || '';
var user_fname = $('.user-fname').val() || '';
var user_tel = $('.user-tel').val().replace(/[^\d;]/g, '');
var user_email = $('.user-email').val().toLowerCase().replace(/\s+/g, '');
var regexp_email = /^[0-9a-z-\.]+\@[0-9a-z-]{2,}\.[a-z]{2,}$/i;
var order_country = $('.order-country').val() || '';
var order_city = $('.order-city').val() || '';
var order_address = $('.order-address').val() || '';
var order_zipcode = $('.order-zipcode').val() || '';
if(user_sname != ''
&& user_fname != ''
&& user_tel != ''
&& user_email != ''
&& regexp_email.test(user_email)
&& user_tel.length == 11){
if(!flag_delivery_method_not0
|| (flag_delivery_method_not0
&& order_country != ''
&& order_city != ''
&& order_address != ''
&& order_zipcode != '')){
if(confirm('Вы собираетесь оформить заказ. Продолжить?')){
/*
type: BootstrapDialog.TYPE_DEFAULT,
type: BootstrapDialog.TYPE_INFO,
type: BootstrapDialog.TYPE_PRIMARY,
type: BootstrapDialog.TYPE_SUCCESS,
type: BootstrapDialog.TYPE_WARNING,
type: BootstrapDialog.TYPE_DANGER,
size: BootstrapDialog.SIZE_NORMAL, // normal
size: BootstrapDialog.SIZE_SMALL, // small
size: BootstrapDialog.SIZE_WIDE, // large
size: BootstrapDialog.SIZE_LARGE, // big font
*/
BootstrapDialog.show({
closable: true,
type: BootstrapDialog.TYPE_PRIMARY,
size: BootstrapDialog.SIZE_SMALL, // small
title: 'Подтверждение',
message: (
'<div class="text-center">'+
'Введите код с картинки:<br/>'+
'<div><img src="/entity/io.model.captcha.draw" class="form-control reg-captcha-img" title="Обновить картинку" /></div>'+
'<div><input type="text" class="form-control text-center reg-captcha" placeholder="Текст с картинки" /></div>'+
'</div>'
),
buttons: [
{
label: 'Продолжить',
cssClass: 'btn-info',
action: function(dialog, event){
var $btnReg = this;
var $btnCancel = dialog.getButton('cancel-btn');
var reg_captcha = dialog.getModalBody().find('.reg-captcha').val();
if(reg_captcha != ''){
$btnReg.spin();
$btnReg.disable();
$btnCancel.disable();
dialog.setClosable(false);
$objb
.addClass('process disabled')
.html('<i class="fa fa-spinner fa-spin m-r-small"></i> Оформление заказа');
var payment_method = parseInt($('.order-payment-method').val()) || 0;
var comment = (
(flag_delivery_method_not0 ?
'Страна: '+order_country+"\n"+
'Город: '+order_city+"\n"+
'Адрес: '+order_address+"\n"+
'Почтовый индекс: '+order_zipcode+"\n"+
"\n"
:'')+
'Способ оплаты: '+$('.order-payment-method :selected').text()
);
if($('.order-comment').val() != ''){
comment += "\n\n"+'Комментарий к заказу: '+$('.order-comment').val();
}
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.invoices2.addFromBasket',
resultType: 'json',
params: {
user_sname: user_sname,
user_fname: user_fname,
user_tel: user_tel,
user_email: user_email,
captcha: reg_captcha,
offersBasket: checked_offersBasket,
payment_method: payment_method,
comment: comment,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
ioCallEntity({
entity: 'io.model.session.updateJWT',
resultType: 'json',
params: {
token: obj.res.jwt_string,
},
success: function(data, tag){
swal({
title: 'Заказ успешно оформлен!',
text: 'Ожидайте обработки вашего заказа',
type: 'success',
showConfirmButton: false,
});
setTimeout(function(){
if(typeof(obj.res.pkids) != 'undefined'){
if(obj.res.pkids.length == 1){
document.location.href = urlGetAdd('/orders', 'pkid', obj.res.pkids[0], 'account', '{{user.account}}');
} else {
document.location.href = urlGetAdd('/orders', 'account', '{{user.account}}');
}
} else {
document.location.href = urlGetAdd('/orders', 'account', '{{user.account}}');
}
}, 2000);
}
});
} else {
if(obj.res.error_code == -1000020){
var n = noty({
text: 'Неверно введен код с картинки',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
} else {
var n = noty({
text: 'Произошла ошибка. Попробуйте еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
}
$objb
.removeClass('process disabled')
.html('Оформить заказ');
dialog.getModalBody().find('.reg-captcha-img').attr('src', '/entity/io.model.captcha.draw');
dialog.getModalBody().find('.reg-captcha').val('').focus();
$btnReg.stopSpin();
$btnReg.enable();
$btnCancel.enable();
dialog.setClosable(true);
}
});
} else {
var n = noty({
text: 'Вы не указали код с картинки',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
dialog.getModalBody().find('.reg-captcha').focus();
}
},
},
{
id: 'cancel-btn',
label: 'Отмена',
cssClass: 'btn-default',
action: function(dialog, event){
dialog.close();
},
}
],
onshown: function(dialog){
dialog.getModalBody().find('.reg-captcha').focus();
dialog.getModalBody().find('.reg-captcha-img').off('click');
dialog.getModalBody().find('.reg-captcha-img').on('click', function(){
$(this).attr('src', '/entity/io.model.captcha.draw');
dialog.getModalBody().find('.reg-captcha').val('').focus();
});
},
});
}
} else {
if(order_country == ''){
var n = noty({
text: 'Укажите Вашу страну',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.order-country').focus();
} else if(order_city == ''){
var n = noty({
text: 'Укажите Ваш город',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.order-city').focus();
} else if(order_address == ''){
var n = noty({
text: 'Укажите Ваш адрес',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.order-address').focus();
} else if(order_zipcode == ''){
var n = noty({
text: 'Укажите Ваш почтовый индекс',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.order-zipcode').focus();
}
}
} else {
if(user_sname == ''){
var n = noty({
text: 'Вы не указали свою Фамилию',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.user-sname').focus();
} else if(user_fname == ''){
var n = noty({
text: 'Вы не указали свое Имя',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.user-fname').focus();
} else if(user_tel == ''){
var n = noty({
text: 'Вы не указали свой номер телефона',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.user-tel').focus();
} else if(user_tel.length != 11){
var n = noty({
text: 'Номер телефона должен состоять из 11 цифр',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.user-tel').focus();
} else if(user_email == ''){
var n = noty({
text: 'Вы не указали свой Email',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.user-email').focus();
} else if(!regexp_email.test(user_email)){
var n = noty({
text: 'Указан некорректный email (адрес электронной почты)',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
$('.user-email').focus();
}
}
} else {
var n = noty({
text: 'Выберите товары для заказа',
type: 'warning',
layout: 'bottomRight',
timeout: 2000,
});
}
}
});
// первоначальная загрузка корзины
function loadingOffersBasket(){
var cartData = getCartData() || []; // вытаскиваем все данные корзины
//console.log(cartData);
/*{
tmp_pkid: ioGenPkid(), // pkid записи
company_pkid: 0, // pkid компании
goods_pkid: 0, // pkid товара
offer_number: 0, // номер предложения товара, уникальный во всей системе
tid: '', // ИНТ товара
color_pkid: 0, // цвет
size_pkid: 0, // размер
gender_pkid: 0, // пол
count: 0, // количество товара
delivery_method: 0, // метод доставки (0 - самовывоз, ... - компании)
delivery_warehouse_pkid: 0, // pkid точки выдачи товара (розничная точка либо склад) (если выбран метод доставки самовывоз)
}*/
// если что-то в корзине уже есть, начинаем формировать данные для вывода
if(cartData !== null){
$('.basket .basket-list').html('');
// обработка запроса
ioCallEntity({
entity: 'bmc.trade2.model.offersBasket.getData2Guest',
resultType: 'json',
params: {
offersBasket: cartData,
},
success: function(data, tag){
//console.log(data);
var obj;try{obj = $.parseJSON(data);}catch(ex){obj = null;}
if(obj != null && typeof(obj.res) != 'undefined' && obj.res != null && obj.res.error_code == '1'){
var offersBasket = obj.res.data || [];
$.each(offersBasket, function(i, offer){
var basketofferitems = '';
$.each(offer.offers, function(j, offeritem){
var offer_poster = '{{template.path}}/img/bmcsales-logo.svg';
if(offeritem.images && offeritem.images.length > 0){
if(offeritem.images[0].urlSmall){
offer_poster = '{{ioProjects.trade}}/'+offeritem.images[0].urlSmall;
} else {
if(offeritem.images[0].url){
offer_poster = '{{ioProjects.trade}}/'+offeritem.images[0].url;
}
}
} else {
if(offeritem.offer_images && offeritem.offer_images.length > 0){
if(offeritem.offer_images[0].urlSmall){
offer_poster = '{{ioProjects.trade}}/'+offeritem.offer_images[0].urlSmall;
} else {
{% if offeritem.offer_images.0.url %}
offer_poster = '{{ioProjects.trade}}/'+offeritem.offer_images[0].url;
{% endif %}
}
}
}
var offerparams_txt = '';
if(offeritem.color_pkid){
offerparams_txt += (offerparams_txt != '' ? ', ' : '')+'цвет: '+offeritem.color_name['{{currentlang}}'];
}
if(offeritem.size_pkid){
offerparams_txt += (offerparams_txt != '' ? ', ' : '')+'размер: '+offeritem.size_name;
}
if(offeritem.gender_pkid){
offerparams_txt += (offerparams_txt != '' ? ', ' : '')+'пол: '+offeritem.gender_name;
}
if(offerparams_txt != ''){
offerparams_txt = '<div class="text-sm text-muted">Характеристики: '+offerparams_txt+'</div>';
}
basketofferitems += (
'<div class="row goodsitem goodsitem-'+offeritem.tmp_pkid+'">'+
'<div class="col-md-4 col-xs-12">'+
'<div class="row">'+
'<div class="col-xs-2 col-sm-1 text-center">'+
'<div class="checkbox">'+
'<label>'+
'<input class="i-check goodsitem-check" data-pkid="'+offeritem.tmp_pkid+'" type="checkbox" />'+
'</label>'+
'</div>'+
'<div>'+
'<a href="javascript://" class="goodsitem-delete-btn" data-pkid="'+offeritem.tmp_pkid+'" title="Удалить"><i class="fa fa-lg fa-trash"></i></a>'+
'</div>'+
'</div>'+
'<div class="col-xs-3 col-sm-3">'+
'<a href="'+urlGetAdd('{{link('/catalog')}}', 'tid', offeritem.tid, 'offernum', offeritem.offer_number)+'">'+
'<img src="'+offer_poster+'" />'+
'</a>'+
'</div>'+
'<div class="col-xs-7 col-sm-8">'+
'<a href="'+urlGetAdd('{{link('/catalog')}}', 'tid', offeritem.tid, 'offernum', offeritem.offer_number)+'">'+
'<div class="text-sm">'+offeritem.tid+'</div>'+
'<div>'+(offeritem.goods_name['{{currentlang}}']||(offeritem.offer_name||''))+'</div>'+
'</a>'+
offerparams_txt+
'</div>'+
'</div>'+
'</div>'+
'<div class="col-md-2 col-xs-4 text-center">'+
'<h5 class="text-sm">Цена за ед.</h5>'+
(offeritem.offer_discount && offeritem.offer_discount > 0 ?
'<div class="text-sm"><s>'+number_format(offeritem.offer_sel_parameter.cost_per_unit.value, 2, '.', ' ')+' '+offeritem.offer_sel_parameter.cost_per_unit.currency+'</s></div>'+
'<div>'+number_format(offeritem.offer_sel_parameter.cost_per_unit.value - ((offeritem.offer_sel_parameter.cost_per_unit.value / 100) * offeritem.offer_discount), 2, '.', ' ')+' '+offeritem.offer_sel_parameter.cost_per_unit.currency+'</div>'
:
'<div>'+number_format(offeritem.offer_sel_parameter.cost_per_unit.value, 2, '.', ' ')+' '+offeritem.offer_sel_parameter.cost_per_unit.currency+'</div>'
)+
(offeritem.offer_discount && offeritem.offer_discount > 0 ?
'<div class="text-sm">'+
'Скидка: <span>-'+offeritem.offer_discount+'%</span>'+
'</div>'
:'')+
'</div>'+
'<div class="col-md-1 col-xs-4 text-center">'+
'<h5 class="text-sm">Кол-во</h5>'+
'<input class="form-control text-center goodsitem-count" type="number" min="'+offeritem.offer_minimum_lot+'" max="'+offeritem.offer_sel_parameter.count+'" data-pkid="'+offeritem.tmp_pkid+'" value="'+offeritem.count+'" />'+
'</div>'+
'<div class="col-md-2 col-xs-4 text-center">'+
'<h5 class="text-sm">Сумма</h5>'+
'<div class="goodsitem-itog">'+
(offeritem.offer_discount && offeritem.offer_discount > 0 ?
number_format((offeritem.offer_sel_parameter.cost_per_unit.value - ((offeritem.offer_sel_parameter.cost_per_unit.value / 100) * offeritem.offer_discount) * offeritem.count), 2, '.', ' ')+' '+offeritem.offer_sel_parameter.cost_per_unit.currency
:
number_format(offeritem.offer_sel_parameter.cost_per_unit.value * offeritem.count, 2, '.', ' ')+' '+offeritem.offer_sel_parameter.cost_per_unit.currency
)+
'</div>'+
'</div>'+
'<div class="col-md-3 col-xs-12">'+
'<h5 class="text-sm">Доставка</h5>'+
'<a href="javascript://" class="goodsitem-amount-delivery" data-company-pkid="'+offeritem.company_pkid+'" data-pkid="'+offeritem.tmp_pkid+'">'+
'<div class="value" data-method="'+offeritem.delivery_method+'" data-warehouse-pkid="'+offeritem.delivery_warehouse_pkid+'">'+
'<div>'+offeritem.delivery_method_name+'</div>'+
(offeritem.delivery_method == 0 ?
'<div class="text-sm">Точка самовывоза: '+(offeritem.delivery_warehouse_name||'не выбрана')+'</div>'
:'')+
'</div>'+
'</a>'+
'</div>'+
'</div>'
);
});
$('.basket .basket-list').append(
'<section class="panel basket-item">'+
'<div class="panel-body">'+
'<div>'+
'<div class="checkbox">'+
'<label>'+
'<input class="i-check goodsitems-check" type="checkbox" />'+
'<h5>Продавец: '+offer.company_name+'</h5>'+
'</label>'+
'</div>'+
'</div>'+
'<div class="goodsitems-list">'+
basketofferitems+
'</div>'+
'</div>'+
'</section>'
);
});
$('.i-check, .i-radio').iCheck({
checkboxClass: 'i-check',
radioClass: 'i-radio'
});
if(offersBasket.length > 0){
$('.basket-loading').css('display', 'none');
$('.basket-empty').css('display', 'none');
$('.basket').css('display', '');
} else {
// если в корзине пусто, то сигнализируем об этом
$('.basket-loading').css('display', 'none');
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
} else {
var n = noty({
text: 'Произошла ошибка при загрузке корзины. Попробуйте загрузить её еще раз.'+(obj != null && obj.res.error_str != '' ? ' Полный текст ошибки: '+obj.res.error_str : ''),
type: 'warning',
layout: 'bottomRight',
timeout: 4000,
});
}
}
});
} else {
// если в корзине пусто, то сигнализируем об этом
$('.basket-loading').css('display', 'none');
$('.basket').css('display', 'none');
$('.basket-empty').css('display', '');
}
}
loadingOffersBasket();
{% endif %}
}
</script>
<div class="global-wrapper clearfix" id="global-wrapper">
<div class="basket-loading">
<div class="lds-css">
<div class="lds-spinner">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
</div>
<div class="text-center">
<p class="lead">Загрузка корзины...</p>
</div>
</div>
<div class="basket-empty" style="display: none;">
<div class="text-center">
<i class="fa fa-cart-arrow-down empty-cart-icon"></i>
<p class="lead">Ваша корзина пока еще пуста</p>
<a class="btn btn-primary btn-lg" href="{{link('/catalog')}}">Начать покупки <i class="fa fa-long-arrow-right"></i></a>
</div>
</div>
<div class="basket" style="display: none;">
<section class="panel">
<div class="panel-body">
<div class="row">
<div class="col-md-3">
<div style="margin-top: 5px;">
<div class="checkbox" style="margin: 0;">
<label style="width: 100%;">
<input class="i-check goodsitems-check-all" type="checkbox" />
<h5>Выбрать все товары</h5>
</label>
</div>
</div>
</div>
<div class="col-md-9 text-right">
<a class="btn btn-default" style="margin: 0 3px; white-space: normal;" href="{{link('/catalog')}}">Продолжить покупки</a>
<div class="btn btn-danger goodsitems-selected-delete-btn" style="margin: 0 3px; white-space: normal;" title="Удалить выбранные товары">
<i class="fa fa-trash"></i>
</div>
</div>
</div>
</div>
</section>
<div class="basket-list"></div>
<section class="panel goodsitems-selected-info">
<div class="panel-body">
<div class="row">
<div class="col-md-8 col-md-offset-4 col-xs-12 text-right">
<div class="row">
<div class="col-md-3 text-center">
<div>Выбрано товаров:</div>
<h5 class="total-count">0</h5>
</div>
<div class="col-md-3 text-center">
<div>Стоимость товаров:</div>
<h5 class="total-amount" style="color: #c00;">{{format_money({currency: 'KZT', value: 0}, false)}}</h5>
</div>
<div class="col-md-3 text-center">
<div>Стоимость доставки:</div>
<div class="total-amount-delivery" style="color: #c00;">{{format_money({currency: 'KZT', value: 0}, false)}}</div>
</div>
<div class="col-md-3 text-center">
<div>Общая сумма:</div>
<div class="total-itog" style="color: #c00;">{{format_money({currency: 'KZT', value: 0}, false)}}</div>
</div>
</div>
</div>
</div>
</div>
</section>
{% if not user.isGuest %}
<section class="panel panel-default">
<div class="panel-heading">Информация о доставке, адрес:</div>
<div class="panel-body">
<div class="row">
<div class="col-md-6" style="border-right: 1px solid #ccc;">
<div class="row">
<div class="col-md-12">
<label class="control-label">
<b>Контактное лицо:</b>
</label>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control user-sname" placeholder="Ваша Фамилия" value="{{user['user-info'].sname}}" disabled="disabled" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control user-fname" placeholder="Ваше Имя" value="{{user['user-info'].fname}}" disabled="disabled" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label"><b>Контактный телефон:</b></label>
<input type="tel" class="form-control phonenumber user-tel" placeholder="+7 (701) 987-65-43" value="{{user['user-info'].tel}}" disabled="disabled" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label"><b>Контактный email:</b></label>
<input type="email" class="form-control user-email" placeholder="user@mail.ru" value="{{user['user-info'].email}}" disabled="disabled" />
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label"><b>Страна:</b></label>
<input type="text" class="form-control order-country" placeholder="Напр.: Казахстан" disabled="disabled" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label"><b>Город:</b></label>
<input type="text" class="form-control order-city" placeholder="Напр.: Астана" disabled="disabled" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="form-group">
<label class="control-label"><b>Адрес:</b></label>
<input type="text" class="form-control order-address" placeholder="Напр.: улица Абая, дом 8, офис 303" disabled="disabled" />
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label class="control-label"><b>Почтовый индекс:</b></label>
<input type="text" class="form-control order-zipcode" placeholder="Напр.: 010000" disabled="disabled" />
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<textarea class="form-control order-comment" style="resize: none;" rows="2" placeholder="Комментарий к заказу (не обязательно)"></textarea>
</div>
</div>
</div>
</section>
{% else %}
<section class="panel panel-default">
<div class="panel-heading">Информация о доставке, адрес:</div>
<div class="panel-body">
<div class="row">
<div class="col-md-6">
<div class="row" style="border-bottom: 1px solid #ccc; padding-bottom: 15px; margin-bottom: 15px;">
<div class="col-md-12">
Для оформления заказа <a href="{{UrlGetAdd(link('/login'), 'back', 'http://'~site.domain~page.uri)}}">авторизуйтесь</a> либо заполните форму ниже:
</div>
</div>
<div class="row">
<div class="col-md-12">
<label class="control-label">
<b>Контактное лицо:</b>
</label>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control user-sname" placeholder="Ваша Фамилия" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<input type="text" class="form-control user-fname" placeholder="Ваше Имя" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label"><b>Контактный телефон:</b></label>
<input type="tel" class="form-control phonenumber user-tel" placeholder="+7 (701) 987-65-43" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label"><b>Контактный email:</b></label>
<input type="email" class="form-control user-email" placeholder="user@mail.ru" />
</div>
</div>
</div>
</div>
<div class="col-md-6" style="border-left: 1px solid #ccc;">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<label class="control-label"><b>Страна:</b></label>
<input type="text" class="form-control order-country" placeholder="Напр.: Казахстан" disabled="disabled" />
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="control-label"><b>Город:</b></label>
<input type="text" class="form-control order-city" placeholder="Напр.: Астана" disabled="disabled" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-8">
<div class="form-group">
<label class="control-label"><b>Адрес:</b></label>
<input type="text" class="form-control order-address" placeholder="Напр.: улица Абая, дом 8, офис 303" disabled="disabled" />
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label class="control-label"><b>Почтовый индекс:</b></label>
<input type="text" class="form-control order-zipcode" placeholder="Напр.: 010000" disabled="disabled" />
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<textarea class="form-control order-comment" style="resize: none;" rows="2" placeholder="Комментарий к заказу (не обязательно)"></textarea>
</div>
</div>
</div>
</div>
</div>
</section>
{% endif %}
<div class="row">
<div class="col-md-4 col-md-offset-4">
<section class="panel panel-default">
<div class="panel-body text-center">
<div class="form-group" style="margin-bottom: 0;">
<label class="control-label"><b>Способ оплаты:</b></label>
<select class="form-control order-payment-method">
<option value="0">Наличными при получении</option>
<option value="1">Банковская карта (Visa/MasterCard)</option>
</select>
</div>
</div>
</section>
</div>
</div>
<div class="row">
<div class="col-md-4 col-md-offset-4">
<section class="panel panel-default">
<div class="panel-body text-center">
<div class="btn btn-block btn-lg btn-primary order-send-btn" style="margin: 0 3px; white-space: normal;">Оформить заказ</div>
{% if user.isGuest %}
<div class="text-sm" style="margin-top: 15px;">Нажимая на кнопку "Оформить заказ", я соглашаюсь с <a href="{{ioProjects.kdt}}/privacy" target="_blank">Политикой конфиденциальности</a> и условиями Публичной оферты.</div>
{% endif %}
</div>
</section>
</div>
</div>
</div>
<div class="gap"></div>
</div>
</div>