Опять ошибка. Когда ж они кончатся?

Штатная ошибка.
В таблице товаров и в настройке категории при переносе товаров в другую категорию перенос осуществляется перезаписью 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 (isset($_GET['search']) || !isset($_GET['categoryID']) || $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 исправляем перенос из добавочной категории