Поиск / фильтр по номеру заказа.

#
Поиск / фильтр по номеру заказа.
Возможно ли сделать поиск (или фильтр) по номеру заказа? Клиент хочет в отдельном месте в макете выводить форму поиска по номеру заказа.
Я так понимаю, что список заказов выводится методом ShowUserOrders, а в API у нет возможности передавать этому методу id заказа
http://www.colibre.ru - Создание и продвижение сайтов
Модератор
#
Re: Поиск / фильтр по номеру заказа.
libertine,
Вы заказы хотите отображать в клиентской части? Надеюсь в личном кабинете?
#
Re: Поиск / фильтр по номеру заказа.
Ну да, конечно )
Я себе это представляю как-то примерно так, немного переделать страницу с заказами, чтобы шла проверка на переменную (допустим order) в массиве POST и буде таковая имеется, то мы выводим только тот заказ, который соответствует ее значению, а если таковой нет, то все по старому остается. В теории это все достаточно просто, а на практике в API у ShowUserOrders нет возможности указывать параметры для фильтра по конкретному заказу Может они, конечно, недокументированные, ну или как вариант я не там смотрю )
http://www.colibre.ru - Создание и продвижение сайтов
#
Re: Поиск / фильтр по номеру заказа.
Ну так как, таки есть какая-либо возможность осуществлять фильтрацию по номеру заказа?
http://www.colibre.ru - Создание и продвижение сайтов
#
Re: Поиск / фильтр по номеру заказа.
Ау
http://www.colibre.ru - Создание и продвижение сайтов
Модератор
#
Re: Поиск / фильтр по номеру заказа.
Извините за задержку с ответом.
1. Нужно получить информацию о заказе и проверить, принадлежит ли он пользователю.
Проверку принадлежности пользователю см. на странице печати заказа в стандартной поставке системы.
Получаем информацию о заказе с помощью http://hostcms.ru/api/HostCMS_5/shop.html#methodGetOrder

2. Посмотрите в обработчиках платежных систем вывод версии для печати:
      // Формируем XML.
      $xmlData = '<?xml version="1.0" encoding="'.SITE_CODING.'"?>'."\n";
      $xmlData .= "<print_version>\n";
      $xmlData .= "<payment_for>".str_for_xml($this->GetOrderName($order_id))."</payment_for>\n";
      $xmlData .= $shop->GenXml4Company($shop_row['shop_company_id']);
      $xmlData .= $shop->GetXmlForOrder(0, $order_row, true);
      $xmlData .= "</print_version>\n";

      $xsl = new xsl();
      $blank = $xsl->build($xmlData, 'КвитанцияПД4');

      echo $blank;

и переработатйте на нужный XML/XSL
#
Re: Поиск / фильтр по номеру заказа.
Спасибо, все получилось!
Если кому-то понадобится, то сделала так:
В типовой динамический Заказы заменила

$param = array();
// ограничение списка заказов по магазину, необходимо также для того, чтобы отобразить список платежных систем для смены у заказа
$param['shop_shops_id'] = 1;
$shop->ShowUserOrders($site_user_id, $xsl_order, $param);

на

if(isset($_REQUEST['order_id_num']) and $_REQUEST['order_id_num'] != ''){
    $shop_order_id = $_REQUEST['order_id_num'];
    $arOrderInfo = $shop->GetOrder($shop_order_id );
    // Если заказ принадлежит пользователю
    if ($site_user_id == $arOrderInfo['site_users_id']){
        $order1_row = $shop->GetOrder($shop_order_id);
        $resource = $shop->GetOrderItems($shop_order_id);
        $xmlData = '<?xml version="1.0" encoding="'.SITE_CODING.'"?>'."\n";
        $xmlData .= $shop->GetXmlForOrder($shop_order_id);
        
        $xsl = new xsl();
        $blank = $xsl->build($xmlData, 'ПоискЗаказа');
    
        echo $blank;            
    }
    else{
        echo '<p>У вас нет такого заказа.</p>';
    }
}
else{
$param = array();

// ограничение списка заказов по магазину, необходимо также для того, чтобы отобразить список платежных систем для смены у заказа
$param['shop_shops_id'] = 1;

$shop->ShowUserOrders($site_user_id, $xsl_order, $param);

}
http://www.colibre.ru - Создание и продвижение сайтов
Авторизация