Минимальная сумма заказ
Для ограничения возможности оформления заказа в интернет-магазине задаваемой минимальной суммой обновите код типовой динамической страницы "Интернет-магазин корзина" на этот:
После этого для данной типовой динамической страницы необходимо добавить новый параметр с именем переменной min_sum_order. Затем в "Структуре сайта" нужно отредактировать узел, соответствующий корзине, и ввести в появившееся поле значение минимальной суммы заказа.
<?php
$shop = & singleton('shop');
if (class_exists("SiteUsers"))
{
/* Получаем id текущего пользователя сайта */
$SiteUsers = & singleton('SiteUsers');
$site_users_id = $SiteUsers->GetCurrentSiteUser();
}
else
{
$site_users_id = false;
}
######################################################
### Обработка принятия заказа от платежной системы ###
######################################################
// ------------------------------------------------
// Подготовка редиректа для PayPal
// ------------------------------------------------
if (isset($_POST['paymentType']))
{
// Получаем ID заказа
$order_id = to_int($_POST['order_id']);
$order_row = $shop->GetOrder($order_id);
if ($order_row)
{
// Вызов обработчика платежной системы
$shop->ExecSystemsOfPayHandler($order_row['shop_system_of_pay_id']);
}
}
// ------------------------------------------------
// Обработка уведомления об оплате от RBK Money
// ------------------------------------------------
if (isset($_POST['paymentStatus']) || isset($_GET['PayPalOrderConfirmation']))
{
// Получаем ID заказа
$order_id = to_int($_POST['orderId']);
$order_row = $shop->GetOrder($order_id);
if ($order_row)
{
// Вызов обработчика платежной системы
$shop->ExecSystemsOfPayHandler($order_row['shop_system_of_pay_id']);
}
}
// ------------------------------------------------
// Обработка уведомления об оплате от WebMoney
// ------------------------------------------------
if (isset($_POST['LMI_PAYEE_PURSE']))
{
// Получаем ID заказа
$order_id = to_int($_POST['LMI_PAYMENT_NO']);
$order_row = $shop->GetOrder($order_id);
if ($order_row)
{
// Вызов обработчика платежной системы
$shop->ExecSystemsOfPayHandler($order_row['shop_system_of_pay_id']);
}
}
// ------------------------------------------------
// Вывод информации о статусе платежа после его совершения и перенаправления с платежной системы
// ------------------------------------------------
if (isset($_REQUEST['payment']) && isset($_REQUEST['order_id']))
{
// Получаем ID заказа
$order_id = to_int($_REQUEST['order_id']);
$order_row = $shop->GetOrder($order_id);
// Если заказ принадлежит текущему авторизированному пользователю
if ($order_row['site_users_id'] == $site_users_id)
{
if (to_str($_REQUEST['payment']) == 'success')
{
?><h1>Подтверждение платежа</h1>
<p>Спасибо, информация об оплате заказа <strong>№ <?php echo $order_row['shop_order_account_number']?></strong>
получена.</p>
<?php
}
else
{
?><h1>Платеж не получен</h1>
<p>К сожалению при оплате заказа <strong>№ <?php echo $order_row['shop_order_account_number']?></strong>
произошла ошибка.</p>
<?php
}
}
// Для случаев, когда отключен модуль "Пользователи сайта"
elseif ($site_users_id === false)
{
?><h1>Подтверждение платежа</h1>
<p>Благодарим за посещение нашего магазина!</p>
<?php
}
else
{
?><h1>Ошибка</h1>
<p>Неверный номер заказа!</p>
<?php
}
// Прерываем выполнение типовой динамической страницы
return true;
}
// ------------------------------------------------
// Обработка уведомления об оплате от ROBOKASSA
// ------------------------------------------------
if (isset($_REQUEST['SignatureValue']))
{
// Получаем ID заказа
$order_id = to_int($_REQUEST['InvId']);
$order_row = $shop->GetOrder($order_id);
if ($order_row)
{
// Вызов обработчика платежной системы
$shop->ExecSystemsOfPayHandler($order_row['shop_system_of_pay_id']);
}
}
############################################################
### [END] Обработка принятия заказа от платежной системы ###
############################################################
/* Идентификатор интернет-магазина */
$shop_id = to_int($GLOBALS['LA']['shop_id']);
/* Проверяем наличие текущего пользователя */
/* Пользователь не авторизироаан */
if ($site_users_id == 0)
{
/* Быстрая регистрация пользователя */
if (isset($_POST['step1_2']))
{
/* пароль необязателен при обновлении данных о пользователе */
if (isset($_POST['site_users_login'])
&& isset($_POST['site_users_password'])
&& isset($_POST['site_users_email'])
&& isset($_POST['site_users_password_retry'])
&& strpos($_POST['site_users_login'], 'http://') === false // Логин не начинается с http://
)
{
if (to_str($_POST['site_users_password']) == to_str($_POST['site_users_password_retry']))
{
// В массив дополнительных параметров пишем адрес магазина
$shop_row = $shop->GetShop($shop_id);
// Получаем путь к магазину
$Structure = & singleton('Structure');
$shop_path = "/".$Structure->GetStructurePath($shop_row['structure_id'],0);
$param['location'] = $shop_path . "cart/";
$param['site_users_login'] = to_str($_POST['site_users_login']);
$param['site_users_password'] = to_str($_POST['site_users_password']);
$param['site_users_email'] = to_str($_POST['site_users_email']);
$param['site_users_name'] = to_str($_POST['site_users_name']);
$param['site_users_surname'] = to_str($_POST['site_users_surname']);
$param['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
$param['site_users_country'] = to_str($_POST['site_users_country']);
$param['site_users_company'] = to_str($_POST['site_users_company']);
$param['site_users_phone'] = to_str($_POST['site_users_phone']);
// Группа по умолчанию
$param['site_users_group_id'] = $SiteUsers->GetDefaultGroup();
$param['xslname'] = to_str($GLOBALS['LA']['xsl_registaration_letter']);
/* Не отправлять письмо о подтверждении регистрации,
необходим при автоматическом подтрвеждении регистрации (ниже подтверждение) */
/*
ДАННЫЙ ПАРАМЕТР НЕОБХОДИМО УСТАНОВИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ПОДТВЕРЖДЕНИЕ РЕГИСТРАЦИИ
ПОЛЬЗОВАТЕЛЯ ПОСЛЕ БЫСТРОГО ЗАКАЗА
*/
$param['not_send_mail_confirm'] = true;
// добавляем пользователя, отправляем уведомление о регистрации
$result = $SiteUsers->InsertSiteUser($param);
/* Если не отправляли подтверждение - */
if ($result > 0 && $param['not_send_mail_confirm'])
{
/* Подтверждаем регистрацию */
$SiteUsers->SetConfirmationID($result);
/* Авторизируем пользователя */
$SiteUsers->SetCurrentSiteUser($result);
$site_users_id = $result;
/* Перенсоим товары из cookies в корзину пользователя */
$shop->GetItemsFromCookiesToCart($site_users_id);
// Проверяем куки пользователя на предмет наличия в них логина аффилиата
if (isset($_COOKIE['affiliate_name']))
{
$affiliate = new affiliate();
$affiliate_login = quote_smart($_COOKIE['affiliate_name']);
$affiliate_row = $SiteUsers->GetSiteUserByLogin($affiliate_login);
if ($affiliate_row)
{
$affiliate_id = $affiliate_row['site_users_id'];
// Проводим вставку пользователя аффилиата
$affiliate->InsertAffiliate(array('site_users_id' => $result, 'affiliate_plans_id' => 0, 'affiliate_site_users_id' => $affiliate_id, 'affiliate_active' => 1));
}
}
}
/* Если пользователь зарегистрирован и необходимо подтверждать авторизацию */
if ($result > 0 && !$param['not_send_mail_confirm'])
{
?>
<h1>Спасибо за регистрацию</h1>
<p>Для продолжения работы необходимо подтвердить регистрацию Ваших
данных. В Ваш адрес отправлено письмо, содержащее ссылку для
подтверждения регистрации.</p>
<?php
}
// Проверяем наличие ошибки при регистрации
if ($result < 0)
{
// -3 - Пользователь с таким логином зарегистрирован ранее
// -2 - Пользователь с таким e-mail зарегистрирован ранее
// -1 - Введен некорректный e-mail
$GLOBALS['external_propertys']['error'] = $result;
}
}
else
{
$GLOBALS['external_propertys']['error'] = -7; /*Повторный пароль введен неверно*/
}
}
else
{
$GLOBALS['external_propertys']['error'] = -4; /* Пожалуйста, задайте все обязательные параметры */
}
}
}
/* Если отключен модуль пользователей сайта */
if (isset($_POST['step_1_1a']) && isset($_POST['step_1']))
{
if (strlen(to_str($_POST['site_users_name'])) < 1)
{
$message = 'Введите имя!';
}
if (strlen(to_str($_POST['site_users_surname'])) < 1)
{
$message = 'Введите фамилию!';
}
if (strlen(to_str($_POST['site_users_email'])) < 1
|| !valid_email(to_str($_POST['site_users_email'])))
{
$message = 'Введите e-mail!';
}
}
$sum_order = false;
if(isset($_POST['step_1']) || isset($_POST['step_2']) || isset($_POST['step_3']))
{
$mas_cart = $shop->GetItemsFromCart($site_users_id, $shop_id);
$total_sum = 0;
foreach($mas_cart as $key => $value)
{
if($mas_cart[$key]['shop_cart_flag_postpone'] != 1)
{
$ind = $mas_cart[$key]['shop_items_catalog_item_id'];
$count = $mas_cart[$key]['shop_cart_item_quantity'];
$mas_item = $shop->GetItem($ind);
$price = $mas_item['shop_items_catalog_price'];
$total_sum = $total_sum + $count*$price;
}
};
if(($total_sum >= to_int($GLOBALS['LA']['min_sum_order'])) && $sum_order == false) $sum_order=true;
else
{
$print_sum = to_str($GLOBALS['LA']['min_sum_order']);
?>
<div id="error">Минимальная сумма заказа <?php echo $print_sum?> рублей</div>
<?php
}
}
elseif(isset($_POST['step_4']))
{
$sum_order = true;
}
if (empty($message) && ($site_users_id > 0 || $site_users_id === false) && $sum_order === true)
{
/* Ввод адреса доставки */
if (isset($_POST['step_1']))
{
$external_propertys = array ();
/* Если отключен модуль пользователей сайта, то вызывается этот подэтап */
if (isset($_POST['step_1_1a']))
{
/* Данные о пользователе передаем через внешние параметры и сохраним в сессию */
$external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
$external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
$external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
$external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
$external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
$external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
$external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($_POST['site_users_address']);
$external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
}
else
{
$aInfoSiteUser = $SiteUsers->GetSiteUser($site_users_id);
$external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($aInfoSiteUser['site_users_name']);
$external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($aInfoSiteUser['site_users_surname']);
$external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($aInfoSiteUser['site_users_patronymic']);
$external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($aInfoSiteUser['site_users_email']);
$external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($aInfoSiteUser['site_users_phone']);
$external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($aInfoSiteUser['site_users_fax']);
$external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($aInfoSiteUser['site_users_address']);
$external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($aInfoSiteUser['site_users_company']);
$external_propertys['site_users_postcode'] = $_SESSION['index'] = to_str($aInfoSiteUser['site_users_postcode']);
}
/* Запоминаем купон */
$_SESSION['shop_coupon_text'] = to_str($_POST['shop_coupon_text']);
/* Отображаем форму ввода адреса */
// Не выбираем show_location, show_city и show_city_area, т.к. подгружаются через AJAX
$shop->ShowAddress(to_str($GLOBALS['LA']['xsl_delivery_address']), $shop_id, array('show_location' => false, 'show_city' => false, 'show_city_area' => false), $external_propertys);
}
/* Отображаем доступные доставки */
elseif (isset($_POST['step_2']))
{
/* Сохраняем данные, введенные на первом этапе */
$country = to_int($_POST['country']);
$location = to_int($_POST['location']);
$city = to_int($_POST['sel_city']);
$city_area = to_int($_POST['sel_city_area']);
// Сбрасываем информацию о последнем заказе
$_SESSION['last_order_id'] = 0;
/* Пишем информацию об адресе доставки в сессию */
$_SESSION['country'] = $country;
$_SESSION['location'] = $location;
$_SESSION['city'] = $city;
$_SESSION['city_area'] = $city_area;
$_SESSION['index'] = to_int($_POST['index']);
$_SESSION['full_address'] = to_str($_POST['full_address']);
$_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
$_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
$_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
$_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
$_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
$_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
$_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
$_SESSION['description'] = to_str($_POST['description']);
/* Индекс и полный адрес (в массив дополнительных параметров) */
$external_propertys['index'] = to_str($_POST['index']);
$external_propertys['full_address'] = to_str($_POST['full_address']);
/* Получаем количество элементов, их общую цену, вес, валюту для заданного пользователя */
$a_param = $shop->SelectAllItemsFromCartForUser($shop_id, $site_users_id);
/* Выбираем все доступные типы доставки (с группировкой по типу доставки) */
$param = array();
$param['shop_coupon_text'] = to_str($_SESSION['shop_coupon_text']);
// Передаем количество товара
$param['count'] = $a_param['quantity'];
$shop->ShowTypeOfDelivery($shop_id, $country, $location, $city, $city_area, $a_param['weight'], $a_param['price'],
to_str($GLOBALS['LA']['xsl_shop_delivery']), $param, $external_propertys);
}
/* Показываем страницу доступных платежных систем */
elseif (isset($_POST['step_3']))
{
/* Обрабатываем полученные данные о типе доставки */
$_SESSION['cond_of_delivery'] = to_int($_POST['cond_of_delivery']);
/* Расчитываем цену доставки */
/* Получаем данные о магазине */
$shop_row = $shop->GetShop($shop_id);
$row = $shop->GetCondOfDelivery($_SESSION['cond_of_delivery']);
/* идентификатор валюты магазина */
$shop_currency_id = to_int($shop_row['shop_currency_id']);
$coefficient = $shop->GetCurrencyCoefficientToShopCurrency($row['shop_currency_id'], $shop_currency_id);
$aPriceDelivery = $shop->GetPriceForCondOfDelivery($row['shop_cond_of_delivery_id']);
$price_delivery = sprintf("%.2f", $aPriceDelivery['price_tax'] * $coefficient);
$_SESSION['cond_of_delivery_price'] = $price_delivery;
if ($row && $row['shop_tax_id'] != 0)
{
$row_tax = $shop->GetTax($row['shop_tax_id']);
if ($row_tax)
{
$_SESSION['cond_of_delivery_price_tax'] = $row_tax['shop_tax_rate'];
}
else
{
$_SESSION['cond_of_delivery_price_tax'] = 0;
}
}
else
{
$_SESSION['cond_of_delivery_price_tax'] = 0;
}
/* Выводим платежные системы */
$external_propertys['cond_of_delivery'] = to_int($_POST['cond_of_delivery']);
$shop->ShowSystemOfPay(to_str($GLOBALS['LA']['xsl_system_of_pay']), $external_propertys, array('shop_shops_id' => $shop_id));
}
elseif (isset($_POST['step_4']))
{
/* Если выбрана (существует) платежная система */
if (to_int($_POST['system_of_pay_id']) != 0)
{
/* Вызываем обработчик платежной системы */
if (!$shop->ExecSystemsOfPayHandler(to_int($_POST['system_of_pay_id'])))
{
/* Не удалось найти обработчик */
show_error_message("Не найден обработчик платежной системы с номером ".to_int($_POST['system_of_pay_id']));
}
}
else
{
/* Ошибка, не указана платежная система! */
show_error_message('Ошибка! Не указана ни одна платежная система.');
}
}
else
{
/* Очищаем сессию */
if (isset($_SESSION['CART'][$shop_id]))
{
unset($_SESSION['CART'][$shop_id]);
}
/* Отображаем корзину */
$shop->ShowCart($shop_id, $site_users_id,
to_str($GLOBALS['LA']['xsl_cart']), array('shop_coupon_text' => to_str($_REQUEST['shop_coupon_text'])));
}
}
elseif ($site_users_id === 0 || !empty($message) || $sum_order === false)
{
/* Выводим корзину */
$external_propertys = array();
if (!empty($message))
{
$external_propertys['message'] = $message;
}
$external_propertys['site_users_name'] = to_str($_POST['site_users_name']);
$external_propertys['site_users_surname'] = to_str($_POST['site_users_surname']);
$external_propertys['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
$external_propertys['site_users_email'] = to_str($_POST['site_users_email']);
$external_propertys['site_users_phone'] = to_str($_POST['site_users_phone']);
$external_propertys['site_users_fax'] = to_str($_POST['site_users_fax']);
$external_propertys['site_users_address'] = to_str($_POST['site_users_address']);
$external_propertys['site_users_company'] = to_str($_POST['site_users_company']);
$shop->ShowCart($shop_id, $site_users_id, to_str($GLOBALS['LA']['xsl_cart']), array('shop_coupon_text' => to_str($_REQUEST['shop_coupon_text'])), $external_propertys);
if (class_exists("SiteUsers") && $site_users_id === 0)
{
/* Выводим форму быстрой регистрации (регистрация для пользователей) */
$GLOBALS['external_propertys']['ПоказатьАвторизацию'] = 'true';
$SiteUsers->ShowSiteUserRegistartion($site_users_id,
to_str($GLOBALS['LA']['xsl_quick_registration']), $GLOBALS['external_propertys']);
}
}
else
{
?>
Вам необходимо подтвердить регистрацию!
<?php
}
?>
$shop = & singleton('shop');
if (class_exists("SiteUsers"))
{
/* Получаем id текущего пользователя сайта */
$SiteUsers = & singleton('SiteUsers');
$site_users_id = $SiteUsers->GetCurrentSiteUser();
}
else
{
$site_users_id = false;
}
######################################################
### Обработка принятия заказа от платежной системы ###
######################################################
// ------------------------------------------------
// Подготовка редиректа для PayPal
// ------------------------------------------------
if (isset($_POST['paymentType']))
{
// Получаем ID заказа
$order_id = to_int($_POST['order_id']);
$order_row = $shop->GetOrder($order_id);
if ($order_row)
{
// Вызов обработчика платежной системы
$shop->ExecSystemsOfPayHandler($order_row['shop_system_of_pay_id']);
}
}
// ------------------------------------------------
// Обработка уведомления об оплате от RBK Money
// ------------------------------------------------
if (isset($_POST['paymentStatus']) || isset($_GET['PayPalOrderConfirmation']))
{
// Получаем ID заказа
$order_id = to_int($_POST['orderId']);
$order_row = $shop->GetOrder($order_id);
if ($order_row)
{
// Вызов обработчика платежной системы
$shop->ExecSystemsOfPayHandler($order_row['shop_system_of_pay_id']);
}
}
// ------------------------------------------------
// Обработка уведомления об оплате от WebMoney
// ------------------------------------------------
if (isset($_POST['LMI_PAYEE_PURSE']))
{
// Получаем ID заказа
$order_id = to_int($_POST['LMI_PAYMENT_NO']);
$order_row = $shop->GetOrder($order_id);
if ($order_row)
{
// Вызов обработчика платежной системы
$shop->ExecSystemsOfPayHandler($order_row['shop_system_of_pay_id']);
}
}
// ------------------------------------------------
// Вывод информации о статусе платежа после его совершения и перенаправления с платежной системы
// ------------------------------------------------
if (isset($_REQUEST['payment']) && isset($_REQUEST['order_id']))
{
// Получаем ID заказа
$order_id = to_int($_REQUEST['order_id']);
$order_row = $shop->GetOrder($order_id);
// Если заказ принадлежит текущему авторизированному пользователю
if ($order_row['site_users_id'] == $site_users_id)
{
if (to_str($_REQUEST['payment']) == 'success')
{
?><h1>Подтверждение платежа</h1>
<p>Спасибо, информация об оплате заказа <strong>№ <?php echo $order_row['shop_order_account_number']?></strong>
получена.</p>
<?php
}
else
{
?><h1>Платеж не получен</h1>
<p>К сожалению при оплате заказа <strong>№ <?php echo $order_row['shop_order_account_number']?></strong>
произошла ошибка.</p>
<?php
}
}
// Для случаев, когда отключен модуль "Пользователи сайта"
elseif ($site_users_id === false)
{
?><h1>Подтверждение платежа</h1>
<p>Благодарим за посещение нашего магазина!</p>
<?php
}
else
{
?><h1>Ошибка</h1>
<p>Неверный номер заказа!</p>
<?php
}
// Прерываем выполнение типовой динамической страницы
return true;
}
// ------------------------------------------------
// Обработка уведомления об оплате от ROBOKASSA
// ------------------------------------------------
if (isset($_REQUEST['SignatureValue']))
{
// Получаем ID заказа
$order_id = to_int($_REQUEST['InvId']);
$order_row = $shop->GetOrder($order_id);
if ($order_row)
{
// Вызов обработчика платежной системы
$shop->ExecSystemsOfPayHandler($order_row['shop_system_of_pay_id']);
}
}
############################################################
### [END] Обработка принятия заказа от платежной системы ###
############################################################
/* Идентификатор интернет-магазина */
$shop_id = to_int($GLOBALS['LA']['shop_id']);
/* Проверяем наличие текущего пользователя */
/* Пользователь не авторизироаан */
if ($site_users_id == 0)
{
/* Быстрая регистрация пользователя */
if (isset($_POST['step1_2']))
{
/* пароль необязателен при обновлении данных о пользователе */
if (isset($_POST['site_users_login'])
&& isset($_POST['site_users_password'])
&& isset($_POST['site_users_email'])
&& isset($_POST['site_users_password_retry'])
&& strpos($_POST['site_users_login'], 'http://') === false // Логин не начинается с http://
)
{
if (to_str($_POST['site_users_password']) == to_str($_POST['site_users_password_retry']))
{
// В массив дополнительных параметров пишем адрес магазина
$shop_row = $shop->GetShop($shop_id);
// Получаем путь к магазину
$Structure = & singleton('Structure');
$shop_path = "/".$Structure->GetStructurePath($shop_row['structure_id'],0);
$param['location'] = $shop_path . "cart/";
$param['site_users_login'] = to_str($_POST['site_users_login']);
$param['site_users_password'] = to_str($_POST['site_users_password']);
$param['site_users_email'] = to_str($_POST['site_users_email']);
$param['site_users_name'] = to_str($_POST['site_users_name']);
$param['site_users_surname'] = to_str($_POST['site_users_surname']);
$param['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
$param['site_users_country'] = to_str($_POST['site_users_country']);
$param['site_users_company'] = to_str($_POST['site_users_company']);
$param['site_users_phone'] = to_str($_POST['site_users_phone']);
// Группа по умолчанию
$param['site_users_group_id'] = $SiteUsers->GetDefaultGroup();
$param['xslname'] = to_str($GLOBALS['LA']['xsl_registaration_letter']);
/* Не отправлять письмо о подтверждении регистрации,
необходим при автоматическом подтрвеждении регистрации (ниже подтверждение) */
/*
ДАННЫЙ ПАРАМЕТР НЕОБХОДИМО УСТАНОВИТЬ, ЕСЛИ НЕ ТРЕБУЕТСЯ ПОДТВЕРЖДЕНИЕ РЕГИСТРАЦИИ
ПОЛЬЗОВАТЕЛЯ ПОСЛЕ БЫСТРОГО ЗАКАЗА
*/
$param['not_send_mail_confirm'] = true;
// добавляем пользователя, отправляем уведомление о регистрации
$result = $SiteUsers->InsertSiteUser($param);
/* Если не отправляли подтверждение - */
if ($result > 0 && $param['not_send_mail_confirm'])
{
/* Подтверждаем регистрацию */
$SiteUsers->SetConfirmationID($result);
/* Авторизируем пользователя */
$SiteUsers->SetCurrentSiteUser($result);
$site_users_id = $result;
/* Перенсоим товары из cookies в корзину пользователя */
$shop->GetItemsFromCookiesToCart($site_users_id);
// Проверяем куки пользователя на предмет наличия в них логина аффилиата
if (isset($_COOKIE['affiliate_name']))
{
$affiliate = new affiliate();
$affiliate_login = quote_smart($_COOKIE['affiliate_name']);
$affiliate_row = $SiteUsers->GetSiteUserByLogin($affiliate_login);
if ($affiliate_row)
{
$affiliate_id = $affiliate_row['site_users_id'];
// Проводим вставку пользователя аффилиата
$affiliate->InsertAffiliate(array('site_users_id' => $result, 'affiliate_plans_id' => 0, 'affiliate_site_users_id' => $affiliate_id, 'affiliate_active' => 1));
}
}
}
/* Если пользователь зарегистрирован и необходимо подтверждать авторизацию */
if ($result > 0 && !$param['not_send_mail_confirm'])
{
?>
<h1>Спасибо за регистрацию</h1>
<p>Для продолжения работы необходимо подтвердить регистрацию Ваших
данных. В Ваш адрес отправлено письмо, содержащее ссылку для
подтверждения регистрации.</p>
<?php
}
// Проверяем наличие ошибки при регистрации
if ($result < 0)
{
// -3 - Пользователь с таким логином зарегистрирован ранее
// -2 - Пользователь с таким e-mail зарегистрирован ранее
// -1 - Введен некорректный e-mail
$GLOBALS['external_propertys']['error'] = $result;
}
}
else
{
$GLOBALS['external_propertys']['error'] = -7; /*Повторный пароль введен неверно*/
}
}
else
{
$GLOBALS['external_propertys']['error'] = -4; /* Пожалуйста, задайте все обязательные параметры */
}
}
}
/* Если отключен модуль пользователей сайта */
if (isset($_POST['step_1_1a']) && isset($_POST['step_1']))
{
if (strlen(to_str($_POST['site_users_name'])) < 1)
{
$message = 'Введите имя!';
}
if (strlen(to_str($_POST['site_users_surname'])) < 1)
{
$message = 'Введите фамилию!';
}
if (strlen(to_str($_POST['site_users_email'])) < 1
|| !valid_email(to_str($_POST['site_users_email'])))
{
$message = 'Введите e-mail!';
}
}
$sum_order = false;
if(isset($_POST['step_1']) || isset($_POST['step_2']) || isset($_POST['step_3']))
{
$mas_cart = $shop->GetItemsFromCart($site_users_id, $shop_id);
$total_sum = 0;
foreach($mas_cart as $key => $value)
{
if($mas_cart[$key]['shop_cart_flag_postpone'] != 1)
{
$ind = $mas_cart[$key]['shop_items_catalog_item_id'];
$count = $mas_cart[$key]['shop_cart_item_quantity'];
$mas_item = $shop->GetItem($ind);
$price = $mas_item['shop_items_catalog_price'];
$total_sum = $total_sum + $count*$price;
}
};
if(($total_sum >= to_int($GLOBALS['LA']['min_sum_order'])) && $sum_order == false) $sum_order=true;
else
{
$print_sum = to_str($GLOBALS['LA']['min_sum_order']);
?>
<div id="error">Минимальная сумма заказа <?php echo $print_sum?> рублей</div>
<?php
}
}
elseif(isset($_POST['step_4']))
{
$sum_order = true;
}
if (empty($message) && ($site_users_id > 0 || $site_users_id === false) && $sum_order === true)
{
/* Ввод адреса доставки */
if (isset($_POST['step_1']))
{
$external_propertys = array ();
/* Если отключен модуль пользователей сайта, то вызывается этот подэтап */
if (isset($_POST['step_1_1a']))
{
/* Данные о пользователе передаем через внешние параметры и сохраним в сессию */
$external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
$external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
$external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
$external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
$external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
$external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
$external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($_POST['site_users_address']);
$external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
}
else
{
$aInfoSiteUser = $SiteUsers->GetSiteUser($site_users_id);
$external_propertys['site_users_name'] = $_SESSION['site_users_name'] = to_str($aInfoSiteUser['site_users_name']);
$external_propertys['site_users_surname'] = $_SESSION['site_users_surname'] = to_str($aInfoSiteUser['site_users_surname']);
$external_propertys['site_users_patronymic'] = $_SESSION['site_users_patronymic'] = to_str($aInfoSiteUser['site_users_patronymic']);
$external_propertys['site_users_email'] = $_SESSION['site_users_email'] = to_str($aInfoSiteUser['site_users_email']);
$external_propertys['site_users_phone'] = $_SESSION['site_users_phone'] = to_str($aInfoSiteUser['site_users_phone']);
$external_propertys['site_users_fax'] = $_SESSION['site_users_fax'] = to_str($aInfoSiteUser['site_users_fax']);
$external_propertys['site_users_address'] = $_SESSION['site_users_address'] = to_str($aInfoSiteUser['site_users_address']);
$external_propertys['site_users_company'] = $_SESSION['site_users_company'] = to_str($aInfoSiteUser['site_users_company']);
$external_propertys['site_users_postcode'] = $_SESSION['index'] = to_str($aInfoSiteUser['site_users_postcode']);
}
/* Запоминаем купон */
$_SESSION['shop_coupon_text'] = to_str($_POST['shop_coupon_text']);
/* Отображаем форму ввода адреса */
// Не выбираем show_location, show_city и show_city_area, т.к. подгружаются через AJAX
$shop->ShowAddress(to_str($GLOBALS['LA']['xsl_delivery_address']), $shop_id, array('show_location' => false, 'show_city' => false, 'show_city_area' => false), $external_propertys);
}
/* Отображаем доступные доставки */
elseif (isset($_POST['step_2']))
{
/* Сохраняем данные, введенные на первом этапе */
$country = to_int($_POST['country']);
$location = to_int($_POST['location']);
$city = to_int($_POST['sel_city']);
$city_area = to_int($_POST['sel_city_area']);
// Сбрасываем информацию о последнем заказе
$_SESSION['last_order_id'] = 0;
/* Пишем информацию об адресе доставки в сессию */
$_SESSION['country'] = $country;
$_SESSION['location'] = $location;
$_SESSION['city'] = $city;
$_SESSION['city_area'] = $city_area;
$_SESSION['index'] = to_int($_POST['index']);
$_SESSION['full_address'] = to_str($_POST['full_address']);
$_SESSION['site_users_name'] = to_str($_POST['site_users_name']);
$_SESSION['site_users_surname'] = to_str($_POST['site_users_surname']);
$_SESSION['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
$_SESSION['site_users_email'] = to_str($_POST['site_users_email']);
$_SESSION['site_users_phone'] = to_str($_POST['site_users_phone']);
$_SESSION['site_users_fax'] = to_str($_POST['site_users_fax']);
$_SESSION['site_users_company'] = to_str($_POST['site_users_company']);
$_SESSION['description'] = to_str($_POST['description']);
/* Индекс и полный адрес (в массив дополнительных параметров) */
$external_propertys['index'] = to_str($_POST['index']);
$external_propertys['full_address'] = to_str($_POST['full_address']);
/* Получаем количество элементов, их общую цену, вес, валюту для заданного пользователя */
$a_param = $shop->SelectAllItemsFromCartForUser($shop_id, $site_users_id);
/* Выбираем все доступные типы доставки (с группировкой по типу доставки) */
$param = array();
$param['shop_coupon_text'] = to_str($_SESSION['shop_coupon_text']);
// Передаем количество товара
$param['count'] = $a_param['quantity'];
$shop->ShowTypeOfDelivery($shop_id, $country, $location, $city, $city_area, $a_param['weight'], $a_param['price'],
to_str($GLOBALS['LA']['xsl_shop_delivery']), $param, $external_propertys);
}
/* Показываем страницу доступных платежных систем */
elseif (isset($_POST['step_3']))
{
/* Обрабатываем полученные данные о типе доставки */
$_SESSION['cond_of_delivery'] = to_int($_POST['cond_of_delivery']);
/* Расчитываем цену доставки */
/* Получаем данные о магазине */
$shop_row = $shop->GetShop($shop_id);
$row = $shop->GetCondOfDelivery($_SESSION['cond_of_delivery']);
/* идентификатор валюты магазина */
$shop_currency_id = to_int($shop_row['shop_currency_id']);
$coefficient = $shop->GetCurrencyCoefficientToShopCurrency($row['shop_currency_id'], $shop_currency_id);
$aPriceDelivery = $shop->GetPriceForCondOfDelivery($row['shop_cond_of_delivery_id']);
$price_delivery = sprintf("%.2f", $aPriceDelivery['price_tax'] * $coefficient);
$_SESSION['cond_of_delivery_price'] = $price_delivery;
if ($row && $row['shop_tax_id'] != 0)
{
$row_tax = $shop->GetTax($row['shop_tax_id']);
if ($row_tax)
{
$_SESSION['cond_of_delivery_price_tax'] = $row_tax['shop_tax_rate'];
}
else
{
$_SESSION['cond_of_delivery_price_tax'] = 0;
}
}
else
{
$_SESSION['cond_of_delivery_price_tax'] = 0;
}
/* Выводим платежные системы */
$external_propertys['cond_of_delivery'] = to_int($_POST['cond_of_delivery']);
$shop->ShowSystemOfPay(to_str($GLOBALS['LA']['xsl_system_of_pay']), $external_propertys, array('shop_shops_id' => $shop_id));
}
elseif (isset($_POST['step_4']))
{
/* Если выбрана (существует) платежная система */
if (to_int($_POST['system_of_pay_id']) != 0)
{
/* Вызываем обработчик платежной системы */
if (!$shop->ExecSystemsOfPayHandler(to_int($_POST['system_of_pay_id'])))
{
/* Не удалось найти обработчик */
show_error_message("Не найден обработчик платежной системы с номером ".to_int($_POST['system_of_pay_id']));
}
}
else
{
/* Ошибка, не указана платежная система! */
show_error_message('Ошибка! Не указана ни одна платежная система.');
}
}
else
{
/* Очищаем сессию */
if (isset($_SESSION['CART'][$shop_id]))
{
unset($_SESSION['CART'][$shop_id]);
}
/* Отображаем корзину */
$shop->ShowCart($shop_id, $site_users_id,
to_str($GLOBALS['LA']['xsl_cart']), array('shop_coupon_text' => to_str($_REQUEST['shop_coupon_text'])));
}
}
elseif ($site_users_id === 0 || !empty($message) || $sum_order === false)
{
/* Выводим корзину */
$external_propertys = array();
if (!empty($message))
{
$external_propertys['message'] = $message;
}
$external_propertys['site_users_name'] = to_str($_POST['site_users_name']);
$external_propertys['site_users_surname'] = to_str($_POST['site_users_surname']);
$external_propertys['site_users_patronymic'] = to_str($_POST['site_users_patronymic']);
$external_propertys['site_users_email'] = to_str($_POST['site_users_email']);
$external_propertys['site_users_phone'] = to_str($_POST['site_users_phone']);
$external_propertys['site_users_fax'] = to_str($_POST['site_users_fax']);
$external_propertys['site_users_address'] = to_str($_POST['site_users_address']);
$external_propertys['site_users_company'] = to_str($_POST['site_users_company']);
$shop->ShowCart($shop_id, $site_users_id, to_str($GLOBALS['LA']['xsl_cart']), array('shop_coupon_text' => to_str($_REQUEST['shop_coupon_text'])), $external_propertys);
if (class_exists("SiteUsers") && $site_users_id === 0)
{
/* Выводим форму быстрой регистрации (регистрация для пользователей) */
$GLOBALS['external_propertys']['ПоказатьАвторизацию'] = 'true';
$SiteUsers->ShowSiteUserRegistartion($site_users_id,
to_str($GLOBALS['LA']['xsl_quick_registration']), $GLOBALS['external_propertys']);
}
}
else
{
?>
Вам необходимо подтвердить регистрацию!
<?php
}
?>
После этого для данной типовой динамической страницы необходимо добавить новый параметр с именем переменной min_sum_order. Затем в "Структуре сайта" нужно отредактировать узел, соответствующий корзине, и ввести в появившееся поле значение минимальной суммы заказа.
Originally posted natalya:
Я можно конкретно подсказать, что именно поменять. или добавить?
Просто у меня там много чего уже добавлено... (к примеру: вычисление товара новинки в каталоге.) Боюсь не помню чего ещё, и если я поменяю... мало-ли что слетит...
обновите код типовой динамической страницы «Интернет-магазин корзина» на этот
Я можно конкретно подсказать, что именно поменять. или добавить?
Просто у меня там много чего уже добавлено... (к примеру: вычисление товара новинки в каталоге.) Боюсь не помню чего ещё, и если я поменяю... мало-ли что слетит...
Originally posted natalya:
если я правильно понимаю где-то тут задаётся минимальная сумма заказа, и во всех корзинах использующих этот код будет минимальная сумма заказа 10 000. (можно конечно поменять...)
Тогда параметр с именем переменной min_sum_order будет лишним..?
$print_sum = 10000;
если я правильно понимаю где-то тут задаётся минимальная сумма заказа, и во всех корзинах использующих этот код будет минимальная сумма заказа 10 000. (можно конечно поменять...)
Тогда параметр с именем переменной min_sum_order будет лишним..?
На самом деле, в двух местах ТДС где встречается число 10000 надо бы поставить какую-нибудь переменную $min_sum_order, которую перед этим вычислить как
Это будет гораздо правильнее чем такой жесткий хардкод в ТДС.
$min_sum_order = to_int($GLOBALS['LA']['min_sum_order'])
, а потом для каждого магазина задавать минимальную сумму заказа через редактирование соответствующего узла структуры.Это будет гораздо правильнее чем такой жесткий хардкод в ТДС.
Заказов не беру. Консультирую редко.
а можно сделать чтобы мин. сумма указывалась для определенного региона/страны?
после того как в "адрес доставки" покупатель укажет "китай" и на след этапе у него появится предупреждение о мин заказе, а для тех у кого не стоит ограничение то появится "способ доставки"
как такое реализовать?
после того как в "адрес доставки" покупатель укажет "китай" и на след этапе у него появится предупреждение о мин заказе, а для тех у кого не стоит ограничение то появится "способ доставки"
как такое реализовать?
Где-нибудь перед
$shop->ShowTypeOfDelivery($shop_id, $country, $location, $city, $city_area, $a_param['weight'], $a_param['price'],
to_str($GLOBALS['LA']['xsl_shop_delivery']), $param, $external_propertys);
вставить условие, которое проверяет код страны, переданный из формы "адрес доставки" и если он равен коду Китая, то проверить сумму заказа и если она меньше необходимой то вывести предупреждение, а если больше или равна то перейти как раз к процитированному мной фрагменту кода.to_str($GLOBALS['LA']['xsl_shop_delivery']), $param, $external_propertys);
Заказов не беру. Консультирую редко.
Вроде бы все правильно сделал, но с этим кодом корзина вообще не отображается. В параметрах страницы какой тип выбрать?
iNikSite - дизайн и фронтенд разработка
Предлагаю иной вариант, который я у себя реализовал.
Я просто спрятал кнопку "оформить заказ" и вывел сообщение о, том что сумма заказа менее минимальной.
Находим в шаблоне корзины:
<div class="gray_button">
<div>
<input name="step_1" value="Оформить заказ" type="submit" style="font-weight: bold"/>
</div>
</div>
и преобразовываем его до состояния:
<xsl:if test="total_sum_without_discount < 200">
<p><h2>Заказ не может быть обработан, так как сумма вашего заказа менее 200р. </h2></p>
</xsl:if>
<xsl:if test="total_sum_without_discount > 200">
<div class="gray_button">
<div>
<input name="step_1" value="Оформить заказ" type="submit" style="font-weight: bold"/>
</div>
</div>
</xsl:if>
Получается что при сумме заказа без скидки менее 200 рублей выводится надпись "Заказ не может быть обработан, так как сумма вашего заказа менее 200р.", а если сумма заказа больше то выводится кнопка "Оформить заказ".
Я просто спрятал кнопку "оформить заказ" и вывел сообщение о, том что сумма заказа менее минимальной.
Находим в шаблоне корзины:
<div class="gray_button">
<div>
<input name="step_1" value="Оформить заказ" type="submit" style="font-weight: bold"/>
</div>
</div>
и преобразовываем его до состояния:
<xsl:if test="total_sum_without_discount < 200">
<p><h2>Заказ не может быть обработан, так как сумма вашего заказа менее 200р. </h2></p>
</xsl:if>
<xsl:if test="total_sum_without_discount > 200">
<div class="gray_button">
<div>
<input name="step_1" value="Оформить заказ" type="submit" style="font-weight: bold"/>
</div>
</div>
</xsl:if>
Получается что при сумме заказа без скидки менее 200 рублей выводится надпись "Заказ не может быть обработан, так как сумма вашего заказа менее 200р.", а если сумма заказа больше то выводится кнопка "Оформить заказ".
Авторизация