2. Заказать доработку, чтобы перемещение в другую категорию учитывало товары в доп.категории.
Это очередная ошибка в ShopCMS.
Не проверял, просто написал код "с руки". Так что "где-то в запятой" может быть ошибка. Но умеющий поймет идею и без проблем исправит, а для не умеющих есть раздел "купить-продать-заказать".
Решение:
=============================
Штатная ошибка.
В таблице товаров и в настройке категории при переносе товаров в другую категорию перенос осуществляется перезаписью categoryID в таблице товаров, т.е. меняется только основная категория, а доп.категории остаются неизменными.
В результате получаем следующую картину: товар показывается в списке товаров доп.категории, но при попытке переноса в другую остается не перенесенным, ведь информация о доп.категории при этом не меняется.
Исправление:
1. для таблицы товаров:
в файле catalog_products_categories.php
вместо
elseif ( $_POST["add_command"]=="prod_move"){db_query( "UPDATE ".PRODUCTS_TABLE." SET categoryID = ".(int)$_POST["prod_categoryID"]." WHERE productID=".(int)$key);}
вставляем
# BEGIN исправляем перенос из добавочной категории
#elseif ( $_POST["add_command"]=="prod_move"){db_query( "UPDATE ".PRODUCTS_TABLE." SET categoryID = ".(int)$_POST["prod_categoryID"]." WHERE productID=".(int)$key);}
elseif ( $_POST["add_command"]=="prod_move")
{
$prd = db_fetch_assoc(db_query("SELECT categoryID FROM ".PRODUCTS_TABLE." WHERE productID=".(int)$key." LIMIT 1"));
if ($prd['categoryID']==(int)$_GET['categoryID']) // это основная категория товара
db_query( "UPDATE ".PRODUCTS_TABLE." SET categoryID = ".(int)$_POST["prod_categoryID"]." WHERE productID=".(int)$key);
else // это доп категория товара
db_query( "UPDATE ".CATEGORIY_PRODUCT_TABLE." SET categoryID = ".(int)$_POST["prod_categoryID"]." WHERE categoryID=".(int)$_GET['categoryID']." AND productID=".(int)$key);
}
# END исправляем перенос из добавочной категории
2. для редактирования категории (там есть пункт "Перенести все товары из этой категории в [...]"):
в файле admin.php
после
db_query("update ".PRODUCTS_TABLE." SET categoryID=".(int)$_POST["removeto"]." WHERE categoryID=".(int)$_POST["must_delete"]);
вставляем
# BEGIN исправляем перенос из добавочной категории
db_query("update ".CATEGORIY_PRODUCT_TABLE." SET categoryID=".(int)$_POST["removeto"]." WHERE categoryID=".(int)$_POST["must_delete"]);
# END исправляем перенос из добавочной категории