Virtuemart 2 — список ожидающих уведомления о поступлении товара

Продолжаю серию небольших доработок, которые помогают облегчить работу с Virtuemart 2. В прошлом посте я писал, как сделать отчет о продажах для Virtuemart 2. Сегодня мне понадобилось вывести в удобоваримом виде список ожидающих поступления товара на склад (waiting list).


Задача довольно несложная — почти все данные об ожидающих хранятся в таблице БД virtuemart_waitingusers, Надо просто вытащить из нее необходимую информацию. Мне дополнительно понадобились для удобства названия товаров, которых нет в таблице virtuemart_waitingusers, я их вытаскиваю из таблиц товаров — virtuemart_products и virtuemart_products_ru_ru.

Создаете PHP файл в корне сайта со следующим содержимым:

<?php
define('_JEXEC', 1);
 
define('JPATH_BASE', dirname(__FILE__));
 
define('DS', DIRECTORY_SEPARATOR);
require_once(JPATH_BASE.DS.'includes'.DS.'defines.php');
require_once(JPATH_BASE.DS.'includes'.DS.'framework.php');
 
JFactory::getApplication('site')->initialise();
$db = JFactory::getDBO();
$q = "SELECT * FROM `#__virtuemart_waitingusers` WHERE `notified`='0' ";
$db->setQuery($q);
$rows = $db->loadObjectList();
echo '<table border="1" cellpadding="2" cellspacing="2"><tr><td>Date</td><td>email</td><td>Registered user?</td><td>Product Sku</td><td>Product Name</td></tr>';
 
foreach ($rows as $row) {
 
	$db1 = JFactory::getDBO();
	$q1 = "SELECT  `name` FROM `#__virtuemart_userinfos` WHERE `virtuemart_user_id`='$row->virtuemart_user_id' ";
	$db1->setQuery($q1);
	$rows1 = $db1->loadObjectList();
        $username = '&nbsp;';
        foreach ($rows1 as $row1) {
        	$username = $row1->name;
        }
 
	$db2 = JFactory::getDBO();
	$q2 = "SELECT  `product_sku` FROM `#__virtuemart_products` WHERE `virtuemart_product_id`='$row->virtuemart_product_id' ";
	$db2->setQuery($q2);
	$rows2 = $db2->loadObjectList();
        foreach ($rows2 as $row2) {
        	$productsku = $row2->product_sku;
        }
 
	$db3 = JFactory::getDBO();
	$q3 = "SELECT  `product_name` FROM `#__virtuemart_products_ru_ru` WHERE `virtuemart_product_id`='$row->virtuemart_product_id' ";
	$db3->setQuery($q3);
	$rows3 = $db3->loadObjectList();
        foreach ($rows3 as $row3) {
        	$productname = $row3->product_name;
        }
 
	echo '<tr><td>'.$row->created_on.'</td><td>'.$row->notify_email.'</td><td>'.$username.'</td><td>'.$productsku.'</td><td><a href="http://ваш_сайт.com.ua/administrator/index.php?option=com_virtuemart&view=product&task=edit&virtuemart_product_id='.$row->virtuemart_product_id.'" target="_blank">'.$productname.'</td></tr>';
}
 
echo '</table>';
?>

В четвертой строке снизу необходимо заменить ваш_сайт на урл вашего магазина. Это ссылка на карточку товара в админке — можно сразу перейти в карточку соответствующего товара и уведомить пользователя.

Категория: Virtuemart 2

2 comments on “Virtuemart 2 — список ожидающих уведомления о поступлении товара

  1. Здравствуйте.
    Названия товаров на русском языке неправильно отображаются в таблице, кодировка не соответствует. Подскажите, что можно сделать.

    • Добрый день.
      Посмотрите в браузере, какая кодировка определяется автоматически.
      Попробуйте сохранить файл php в кодировке UTF-8.