Задание поставлено в TODO Developing Team.
Задание поставлено в TODO Developing Team.
До выхода версии 3.7 в разработках ViArts будет небольшая пауза.
Если для кого либо данная проблема все еще актуальна, могу предложить решение данный проблемы. Я дописал функцию в код, которая освобождает серийники, если статус заказа изменился на неудачу. В настоящий момент у меня эта проблема решена. Теперь размышляю над тем, как автоматически удалять заказы, если не поступила оплата в течении определенного времени. Думаю тоже актуальная проблема для тех кто торгует пин кодами.
в код файла includes/order_items.php дописал функцию (точнее скопировал там же убрав ненужные элементы)
далее, в том же файле находим функциюPHP код:
function serials_unlock($order_id)
{
global $db, $table_prefix;
$serials = array();
$sql = " SELECT ois.item_id, ois.serial_number ";
$sql .= " FROM " . $table_prefix . "orders_items_serials ois, " . $table_prefix . "items i ";
$sql .= " WHERE ois.item_id=i.item_id ";
$sql .= " AND i.generate_serial=2 ";
$sql .= " AND ois.order_id IN (" . $db->tosql($order_id, INTEGERS_LIST) . ")";
$sql .= " GROUP BY ois.item_id, ois.serial_number ";
$db->query($sql);
while ($db->next_record())
{
$item_id = $db->f("item_id");
$serial_number = $db->f("serial_number");
if (isset($serials[$item_id]))
{
$serials[$item_id] .= "," . $db->tosql($serial_number, TEXT);
}
else
{
$serials[$item_id] = $db->tosql($serial_number, TEXT);
}
}
foreach ($serials as $item_id => $serial_numbers)
{
$sql = " UPDATE " . $table_prefix . "items_serials SET ";
$sql .= " used=0 ";
$sql .= " WHERE item_id=" . $db->tosql($item_id, INTEGER);
$sql .= " AND serial_number IN (" . $serial_numbers . ") ";
$db->query($sql);
}
}
находим там следующий кодPHP код:
function update_order_status($order_id, $status_id, ........
и сразу под ним дописываемPHP код:
// admin sms settings
$admin_sms_notify = $db->f("admin_sms_notify");
$admin_sms_recipient = $db->f("admin_sms_recipient");
$admin_sms_originator = $db->f("admin_sms_originator");
$admin_sms_message = $db->f("admin_sms_message");
и все. При изменении статуса заказа на "Failed" коды освобождаются. Так же по желанию можно освобождать коды при других статусах. Достаточно указать ID статусов при которых хотим освобождать пин коды. ТипаPHP код:
if($status_id == 10)
{
serials_unlock($order_id)
}
и т.д. Идентификаторы статусов можно просмотреть в таблице va_order_statusesPHP код:
if($status_id == 10 || $status_id == 8 || $status_id == 12 )
Совсем забыл, есть один не маловажный момент. Если вы удаляете заказы потерпевшие неудачу, это очень важно! Допустим такая ситуация, покупатель сделал заказ оплата которого потерпела неудачу, далее тот же покупатель повторил заказ и оплатил его. После того как вы удалите заказ потерпевший неудачу, будет освобожден проданный серийник, и возможно будет продан еще раз другому покупателю. Так вот, прежде чем удалить заказы потерпевшие неудачу, необходимо удалить проданные серийники.
Последний раз редактировалось mastaadon; 04.05.2010 в 22:38. Причина: добавил комментарий
Тоже размышлял на эту тему, так как собираюсь заниматься именно цифровыми товарами. Хорошо придуманно.
Последний раз редактировалось Илья; 01.12.2010 в 20:00. Причина: не внимательность
В связи с неудобством бронирования цифровых товаров, решил у себя на сайте сделать следующим образом:
Цифровые товары можно приобрести только внутренним балансом (в системе это называется кредитный баланс) для этого приписал пару функций (сравнивающих артикул товара и кредитный баланс) на javascript к файлу block_order_info.html
Для удобства еще мне хотелось бы написать автоматическую очистку корзины при определенных событиях (например при нулевом балансе).
Товарищи как находясь в order_info.php получить либо номер корзины либо ссылку очистки корзины {remove_all_href}
Это как??? Как корзина узнает о нулевом балансе?написать автоматическую очистку корзины при определенных событиях (например при нулевом балансе).
Вы немного не поняли, корзина не должна знать какой баланс(хотя скорей всего и это как то можно дописать), я спрашиваю как находясь браузером на файле order_info.php узнать номер корзины пользователя или ссылку {remove_all_href} - динамиеская ссылка зависящая от переменной. Что нужно включить в файл order_info.php, вообще где водится эта переменная {remove_all_href} какой то includ ее знает же.
То что мне нужно, было перед глазами вот basket.php?cart=CLR&rnd при редиректе корзина чистится.
Последний раз редактировалось Илья; 22.01.2011 в 21:54. Причина: сам узнал
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)
Социальные закладки