Запрещает оплату оформленного заказа до перевода статуса заказа в "Подтвержден менеджером", после чего заказ можно оплатить из личного кабинета.
Является некоторым развитием модуля "отложенная оплата из личного кабинета".
В "Общих настройках" появится новый статус "Подтверждено менеджером".
Если этот статус совпадает со штатным статусом "Статус нового заказа", то все работает как и было, в штатном режиме.
Если не совпадает, то:
- при оформлении заказа нет выбора способа оплаты
- после оформления заказа нет перехода к оплате
- в личном аккаунте отложенная оплата этого заказа недоступна
- при смене статуса заказа на "Подтверждено менежджером" отсылается письмо с разрешением оплатить и ссылкой на личный аккаунт, где оплата этого заказа разрешена.
Спонсор: navff
Установка:
----------
1. копируем файлы
addon.php -> core/includes/admin/ (comment: этот файл при первом же заходе в админку сделает нужное и сам себя удалит. Если не удалился, то удалить вручную)
order_confirm.php -> core/includes/
order_confirm.tpl.html -> core/tpl/user/[шаблон]/
order_confirm_info.tpl.html -> core/tpl/email/
2. в файле order_history.tpl.html
2.1. в самое начало вставляем
{* BEGIN order_confirm *}
{php}
$data = db_query("SELECT PID, name FROM ".PAYMENT_TYPES_TABLE." WHERE enabled=1 AND module_id>0 ORDER BY sort_order");
while ($row = db_fetch_assoc($data)) $pay[] = $row;
$this->assign("pay",$pay);
{/php}
{* END order_confirm *}
2.2. строку
<td class="pad" align="left" valign="middle">{$user_orders[i].OrderStatus}</td>
заменяем на
{* BEGIN order_confirm *}
{*<td class="pad" align="left" valign="middle">{$user_orders[i].OrderStatus}</td>*}
<td class="pad" align="left" valign="middle">
{$user_orders[i].OrderStatus}
{if $user_orders[i].statusID == $smarty.const.CONF_ORDER_CONFIRM_YES}
<select onchange="eval(this.value);">
<option>Оплатить</option>
{section name=p loop=$pay}
<option value="location.href='index.php?order_confirm=yes&paymentMethodID={$pay[p].PID}&orderID={$user_orders[i].orderID}'">{$pay[p].name}</option>
{/section}
</select>
{/if}
</td>
{* END order_confirm *}
3. в файле order4_confirmation.tpl.html
вместо
{else}{$smarty.const.STRING_ORDER_PLACED}{if $smarty.const.CONF_DISP_ORDERNUM eq 1}
вставляем
{* BEGIN order_confirm *}
{*{else}{$smarty.const.STRING_ORDER_PLACED}{if $smarty.const.CONF_DISP_ORDERNUM eq 1}*}
{else}
{if $smarty.const.CONF_NEW_ORDER_STATUS == $smarty.const.CONF_ORDER_CONFIRM_YES}
{$smarty.const.STRING_ORDER_PLACED}
{elseif $after_processing_html}
{$smarty.const.STRING_ORDER_PLACED_POST}
{else}
{$smarty.const.STRING_ORDER_PLACED_PRED}
{/if}
{if $smarty.const.CONF_DISP_ORDERNUM eq 1}
{* END order_confirm *}
4. в файле order3_billing.php перед
$payment_methods = payGetAllPaymentMethods(true);
вставляем
# BEGIN order_confirm
if (CONF_NEW_ORDER_STATUS != CONF_ORDER_CONFIRM_YES) $payment_methods = array();
else
# END order_confirm
5. в файле order4_confirmation.php
5.1. вместо строк
if ( isset ( $_GET["orderID"] ) && isset ( $_SESSION["newoid"] ) && ( int ) $_SESSION["newoid"] == ( int ) $_GET["orderID"] ) {
$paymentMethod = payGetPaymentMethodById($_GET["paymentMethodID"]);
вставляем
# BEGIN order_confirm
#if ( isset ( $_GET["orderID"] ) && isset ( $_SESSION["newoid"] ) && ( int ) $_SESSION["newoid"] == ( int ) $_GET["orderID"] ) {
#$paymentMethod = payGetPaymentMethodById($_GET["paymentMethodID"]);
$data = db_query("SELECT orderID FROM ".ORDERS_TABLE." WHERE customerID=".regGetIdByLogin($_SESSION["log"]));
while ($row = db_fetch_assoc($data)) $orders[] = $row['orderID'];
if ( isset ( $_GET["orderID"] ) && (isset ( $_SESSION["newoid"] ) && ( int ) $_SESSION["newoid"] == ( int ) $_GET["orderID"] || in_array((int)$_GET["orderID"],$orders))) {
$paymentMethod = payGetPaymentMethodById($_GET["paymentMethodID"]);
db_query("UPDATE ".ORDERS_TABLE." SET payment_type='".$paymentMethod['name']."', paymethod=".$paymentMethod['PID']." WHERE orderID=".$_GET["orderID"]);
# END order_confirm
5.2. вместо строки
if ( $currentPaymentModule != null )
вставляем
# BEGIN order_confirm
#if ( $currentPaymentModule != null )
$row = db_fetch_assoc(db_query("select statusID from ".ORDERS_TABLE." where orderID=".(int)$_GET["orderID"]));
if ( $currentPaymentModule != null && $row['statusID'] == CONF_ORDER_CONFIRM_YES)
# END order_confirm
6. в файле language.php после
define('STRING_ORDER_PLACED', '<b>Спасибо за Ваш заказ!</b><br>В ближайшее время наш менеджер свяжется с Вами');
вставляем
# BEGIN order_confirm
define('STRING_ORDER_PLACED_PRED', '<b>Спасибо за Ваш заказ!</b><br>Ваш заказ оформлен и ждет подтверждения менеджером.<br>После подтверждения Вы получите извещение email-ом и сможете оплатить заказ в личном аккаунте.');
define('STRING_ORDER_PLACED_POST', '<b>Спасибо, что решили оплатить Ваш заказ!</b><br>После оплаты ожидайте изменения статуса заказа в личном аккаунте.');
define('USER_LOGIN','<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel=STYLESHEET href="data/admin/style.css" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel="icon" href="data/admin/favicon.ico" type="image/x-icon">
<link rel="shortcut icon" href="data/admin/favicon.ico" type="image/x-icon">
<title>Вход в личный кабинет</title>
<style type="text/css">html, body {background-color: white; height: 100%}</style>
</head>
<body>
<table class="adn" style="height: 100%;">
<tr>
<td style="text-align: center; vertical-align: middle; padding-bottom: 40px;">
<form action="" method=post id="aushform">
<table class="adw" align="center">
<tr>
<td align=center valign="top" style="background-image: url(\'data/admin/adminstart.gif\'); background-repeat: no-repeat; background-position: top left;" width="330" height="116">
<table class="adw" style="width: 330px; height: 116px">
<tr>
<td colspan="5" height="46"><input type="hidden" name="enter" value="1"></td>
</tr>
<tr>
<td width="40"> </td>
<td align=left width="100" style="color: #000000;">Логин:</td>
<td width="20"> </td><td align=left width="100" style="color: #000000;">Пароль: </td>
<td width="70"> </td>
</tr>
<tr>
<td colspan="5" height="2"></td>
</tr>
<tr>
<td width="40"> </td>
<td align="left" valign="middle"><input type="text" name="user_login" maxlength="30" style="width: 98px; font-size: 11px; border: 1px solid #7F9DB9; padding-left: 1px; padding-right: 1px;"></td>
<td width="20"> </td>
<td align="left" valign="middle"><input name="user_pw" type="password" maxlength="30" style="width: 98px; font-size: 11px; border: 1px solid #7F9DB9; padding-left: 1px; padding-right: 1px;"></td>
<td align="left" valign="middle" width="70"><input type="image" src="data/admin/ret.gif" onclick="document.getElementById(\'aushform\').submit(); return false" style="margin-left: 14px;"></td>
</tr>
<tr>
<td colspan="5" height="32"></td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</td>
</tr>
</table>
</body>
</html>');
# END order_confirm
7. в файле statistic_functions.php в функции stChangeOrderStatus
вместо строки
xMailTxt($Email, STRING_CHANGE_ORDER_STATUS, 'customer.order.change_status.tpl.html',
вставляем
#BEGIN order_confirm
#xMailTxt($Email, STRING_CHANGE_ORDER_STATUS, 'customer.order.change_status.tpl.html',
xMailTxt($Email, STRING_CHANGE_ORDER_STATUS, ($statusID == CONF_ORDER_CONFIRM_YES)?'order_confirm_info.tpl.html':'customer.order.change_status.tpl.html',
#END order_confirm
8. в файле order_history.php
перед строкой
if ( isset($order_detailed))
вставляем
#BEGIN order_confirm
elseif (isset($_GET['order_history']) && $_GET['order_history'] == 'yes') die(USER_LOGIN);
#BEGIN order_confirm
------------------