Проверено на ShopCMS 3.1.2.
Доработка позволяет объединять текущий открытый в админке заказ с любым другим заказом, номер которого указывается вручную. После подтверждения, все товары переносятся в текущий заказ и присоединяемый заказ удаляется. Для удобства поиска заказов, добавлена возможность одним кликом показать в отдельном окне справочник заказов.
1) В файле core/functions/order_functions.php и добавляем новую функцию:
// ***************************************************************************** // Purpose join orders // Inputs // Remarks // Returns function ordJoinOrders($orderID, $joinedOrderID) { $q = db_query("select orderID FROM ".ORDERS_TABLE." WHERE orderID=".(int)$joinedOrderID); // if exists order with this ID and it's not the same as dest orderID if($row = db_fetch_row($q) && ($row[0] <> (int)$joinedOrderID)) { $q1 = db_query("select itemID from ".ORDERED_CARTS_TABLE." WHERE orderID=".(int)$joinedOrderID); // get items from joined order while ($row1 = db_fetch_row($q1)) { db_query("update ".ORDERED_CARTS_TABLE." set ". "orderID=".(int)$orderID." ". "WHERE itemID=".$row1[0]); } // delete joined order db_query( "delete from ".ORDERED_CARTS_TABLE." where orderID=".(int)$joinedOrderID); db_query( "delete from ".ORDERS_TABLE." where orderID=".(int)$joinedOrderID); db_query( "delete from ".ORDER_STATUS_CHANGE_LOG_TABLE." where orderID=".(int)$joinedOrderID); return 1; } return 0; }
2) В файле core/includes/admin/sub/custord_new_orders.php и перед строкой:
if ( isset($_POST["set_status"]) )вставляем:
if (isset($_POST["join_order"])){ $join_result = ordJoinOrders($_GET["orderID"], $_POST["join_order"]); if ((int)$pass_result == 1){ Redirect(ADMIN_FILE."?dpt=custord&sub=new_orders&orders_detailed=yes&orderID=".(int)$_GET["orderID"]."&urlToReturn=".$_GET["urlToReturn"] ); } else {$smarty->assign( "join_result", "Заказ не найден!" );} }
3) В файле core/tpl/admin/custord_new_orders.tpl.html перед строкой:
<form name="MainForm2" method="POST" id="MainForm2" action="">добавляем следующее:
<form action="" method=post> <table class="adn"> <tr class="lineb"> <td align="left">Объединить текущий заказ с другим заказом</td> </tr> <tr class="lins"> <td>Номер заказа: <input type="text" name="join_order" class="textp" size="15"><span style="padding-left:3px"><input type="submit"/></span><span style="padding-left:100px"><FORM><INPUT type="button" value="{$smarty.const.ADMIN_NEW_ORDERS}" onClick="openWin('{$smarty.const.ADMIN_FILE}?dpt=custord&sub=new_orders')"></FORM></span> </tr> <tr class="lins"> <td> {if $join_result}{$join_result}{/if} </td> </tr> </table> </form>
4) В файле core/tpl/admin/index.tpl.html внутри блока head добавляем javascript:
{literal} <script type="text/javascript"> function openWin(url) { var features, w = 960, h = 704; var top = (screen.height - h)/2, left = (screen.width - w)/2; if(top < 0) top = 0; if(left < 0) left = 0; features = 'top=' + top + ',left=' +left; features += ',height=' + h + ',width=' + w + ',status=no,toolbar=no,menubar=no,resizable=no'; window.open(url, 'newWindow', features); } </script> {/literal}
Готово!