На самом деле решение простое, но почему-то нигде не нашел на него ответа. Смысл в том, что модуль ЧПУ (скорее всего любой какой бы у вас не стоял) подхватывает ссылку которая содержит параметр с ID продукта (выглядит так - &product_id=ХХХ) и преобразует ее в ЧПУ. Проблема в том, что ссылка на возврат товара содержит именно такой параметр. Чтобы не было конфликта нужно его всего-лишь передавать с другим названием, например, &return_product_id=ХХХ
Чтобы решить проблему с кнопкой возврата товара для OpenCart 2.x нужно:
В файле \catalog\controller\account\order.php (и, возможно, у некоторых в \system\storage\modification\catalog\controller\account\order.php)
Найти (строка 372):
'return' => $this->url->link('account/return/add', 'order_id=' . $order_info['order_id'] . '&product_id=' . $product['product_id'], true)
Заменить на:
'return' => $this->url->link('account/return/add', 'order_id=' . $order_info['order_id'] . '&return_product_id=' . $product['product_id'], true)
Затем в файле \catalog\controller\account\return.php
Найти (строки 421-423):
if (isset($this->request->get['product_id'])) {
$product_info = $this->model_catalog_product->getProduct($this->request->get['product_id']);
}
Заменить на:
if (isset($this->request->get['return_product_id'])) {
$product_info = $this->model_catalog_product->getProduct($this->request->get['return_product_id']);
}
Что интересно, для кнопки "перезаказа" товара разработчики завели отдельный параметр &order_product_id, а для возврата почему-то прощелкали этот момент.