Перейти к содержанию
Форум поддержки пользователей VamShop

Проблема при изменении статуса заказа


Рекомендуемые сообщения

Добрый день.

Прошу подсказать решение проблемы в следующем случае.

Движок 1-58. Перенесли магазин на новый хост. Приизменении статуса заказа (в админке) вываливается сообщение "Интернет-магазин закрыт на техническое обслуживание, заходите позже!". Это сообщение возникает только в случаях если выставляется статус заказа выполняется, доставляется, доставлен. При этом если вернутся обратно в админку - то статус показывает именно тот, на который я изменил, даже если он и вызвал ошибку.

рапорт БД привожу ниже:

MYSQL ERROR REPORT

- 19/06/2011 14:06:20

---------------------------------------

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and ot.class = 'ot_total' and ( o.orders_status = 6 or o.orders_status = 5 or o.' at line 1

select sum(ot.value) as total from orders_total as ot, orders as o where ot.orders_id = o.orders_id and o.customers_id = and ot.class = 'ot_total' and ( o.orders_status = 6 or o.orders_status = 5 or o.orders_status = 4);

---------------------------------------

Server Name : www.****.com.ua

Remote Address: 78.27.131.85

Referer : http://www.****.com.ua/admin/orders.php

Requested : /admin/orders.php

Trace Back : admin/orders.php:153(vam_db_queryarray(1) {; [0]=>; &string(221) "select sum(ot.value) as total from orders_total as ot, orders as o where ot.orders_id = o.orders_id and o.customers_id = and ot.class = 'ot_total' and ( o.orders_status = 6 or o.orders_status = 5 or o.orders_status = 4);"; }; ) => inc/vam_db_query.inc.php:34(vam_db_errorarray(3) {; [0]=>; &string(221) "select sum(ot.value) as total from orders_total as ot, orders as o where ot.orders_id = o.orders_id and o.customers_id = and ot.class = 'ot_total' and ( o.orders_status = 6 or o.orders_status = 5 or o.orders_status = 4);"; [1]=>; &int(1064); [2]=>; &string(226) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'and ot.class = 'ot_total' and ( o.orders_status = 6 or o.orders_status = 5 or o.' at line 1"; }; )

и второй момент - пропала каптча при восстановлении пароля и на странице задать вопрос о товаре. Где бы что поправить?)

Ссылка на сообщение
Поделиться на другие сайты

сайт полностью рабочий. был. последние патчи ставили год назад. сейчас перекинули на другой хост и вот тут оно и вылезло.

Ссылка на сообщение
Поделиться на другие сайты

Может накопительные скидки не так настроили, вроде бы это код проверки накопительной скидки.

Попробуйте в /admin/orders.php удалить:


// denuz added accumulated discount



$changed = false;



$check_group_query = vam_db_query("select customers_status_id from " . TABLE_CUSTOMERS_STATUS_ORDERS_STATUS . " where orders_status_id = " . $status);

if (vam_db_num_rows($check_group_query)) {

while ($groups = vam_db_fetch_array($check_group_query)) {

// calculating total customers purchase

// building query

$customer_query = vam_db_query("select c.* from " . TABLE_CUSTOMERS . " as c, " . TABLE_ORDERS . " as o where o.customers_id = c.customers_id and o.orders_id = " . (int)$oID);

$customer = vam_db_fetch_array($customer_query);

if ($customer['customers_status'] == '0') {

$customer_id2 = 0;

} else {

$customer_id2 = $customer['customers_id'];

}

$statuses_groups_query = vam_db_query("select orders_status_id from " . TABLE_CUSTOMERS_STATUS_ORDERS_STATUS . " where customers_status_id = " . $groups['customers_status_id']);

$purchase_query = "select sum(ot.value) as total from " . TABLE_ORDERS_TOTAL . " as ot, " . TABLE_ORDERS . " as o where ot.orders_id = o.orders_id and o.customers_id = " . $customer_id2 . " and ot.class = 'ot_total' and (";

$statuses = vam_db_fetch_array($statuses_groups_query);

$purchase_query .= " o.orders_status = " . $statuses['orders_status_id'];

while ($statuses = vam_db_fetch_array($statuses_groups_query)) {

$purchase_query .= " or o.orders_status = " . $statuses['orders_status_id'];

}

$purchase_query .=");";



$total_purchase_query = vam_db_query($purchase_query);

$total_purchase = vam_db_fetch_array($total_purchase_query);

$customers_total = $total_purchase['total'];



// looking for current accumulated limit & discount

$acc_query = vam_db_query("select cg.customers_status_accumulated_limit, cg.customers_status_name, cg.customers_status_discount from " . TABLE_CUSTOMERS_STATUS . " as cg, " . TABLE_CUSTOMERS . " as c where cg.customers_status_id = c.customers_status and c.customers_id = " . $customer_id2);

$current_limit = @mysql_result($acc_query, 0, "customers_status_accumulated_limit");

$current_discount = @mysql_result($acc_query, 0, "customers_status_discount");

$current_group = @mysql_result($acc_query, "customers_status_name");



if ($customer['customers_status'] > '0') {



// ok, looking for available group

$groups_query = vam_db_query("select customers_status_discount, customers_status_id, customers_status_name, customers_status_accumulated_limit from " . TABLE_CUSTOMERS_STATUS . " where customers_status_accumulated_limit < " . $customers_total . " and customers_status_discount >= " . $current_discount . " and customers_status_accumulated_limit >= " . $current_limit . " and customers_status_id = " . $groups['customers_status_id'] . " order by customers_status_accumulated_limit DESC");



}



if (vam_db_num_rows($groups_query)) {

// new group found

$customers_groups_id = @mysql_result($groups_query, 0, "customers_status_id");

$customers_groups_name = @mysql_result($groups_query, 0, "customers_status_name");

$limit = @mysql_result($groups_query, 0, "customers_status_accumulated_limit");

$current_discount = @mysql_result($groups_query, 0, "customers_status_discount");



// updating customers group

vam_db_query("update " . TABLE_CUSTOMERS . " set customers_status = " . $customers_groups_id . " where customers_id = " . $customer_id2);

$changed = true;

}

}

$groups_query = vam_db_query("select cg.* from " . TABLE_CUSTOMERS_STATUS . " as cg, " . TABLE_CUSTOMERS . " as c where c.customers_status = cg.customers_status_id and c.customers_id = " . $customer_id2);

$customers_groups_id = @mysql_result($groups_query, 0, "customers_status_id");

$customers_groups_name = @mysql_result($groups_query, 0, "customers_status_name");

$limit = @mysql_result($groups_query, 0, "customers_status_accumulated_limit");

$current_discount = @mysql_result($groups_query, 0, "customers_status_discount");


if ($customer['customers_status'] != $customers_groups_id) {

if ($changed) {



// send emails



// assign language to template for caching



$vamTemplate->assign('language', $_SESSION['language']);

$vamTemplate->caching = false;



// set dirs manual



$vamTemplate->assign('tpl_path', 'templates/'.CURRENT_TEMPLATE.'/');

$vamTemplate->assign('logo_path', HTTP_SERVER.DIR_WS_CATALOG.'templates/'.CURRENT_TEMPLATE.'/img/');



$vamTemplate->assign('CUSTOMERNAME', $check_status['customers_name']);

$vamTemplate->assign('EMAIL', $check_status['customers_email_address']);

$vamTemplate->assign('GROUPNAME', $customers_groups_name);

$vamTemplate->assign('GROUPDISCOUNT', $current_discount);

$vamTemplate->assign('ACCUMULATED_LIMIT', $currencies->display_price($limit, 0));





//email to admin



$html_mail_admin = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$order->info['language'].'/accumulated_discount_admin.html');

$txt_mail_admin = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$order->info['language'].'/accumulated_discount_admin.txt');



vam_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, STORE_OWNER_EMAIL_ADDRESS, STORE_OWNER, '', EMAIL_BILLING_REPLY_ADDRESS, EMAIL_BILLING_REPLY_ADDRESS_NAME, '', '', EMAIL_ACC_SUBJECT, $html_mail_admin, $txt_mail_admin);



//email to customer



$html_mail_customer = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$order->info['language'].'/accumulated_discount_customer.html');

$txt_mail_customer = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$order->info['language'].'/accumulated_discount_customer.txt');



vam_php_mail(EMAIL_BILLING_ADDRESS, EMAIL_BILLING_NAME, $check_status['customers_email_address'], $check_status['customers_name'], '', EMAIL_BILLING_REPLY_ADDRESS, EMAIL_BILLING_REPLY_ADDRESS_NAME, '', '', EMAIL_ACC_SUBJECT, $html_mail_customer, $txt_mail_customer);



}
}

}



// eof denuz added accumulated discount

[/code]

Ссылка на сообщение
Поделиться на другие сайты

таки да. удлил часть указанного кода. изменяю статусы заказов ,всё проходит как по маслу....

чтобы проверить всё точно, перевёл сайт на прежний хост. кусок кода приведенный вами выше на старом хосте не удалял. там ошибки не наблюдается. т.е. что-то не так на новом хосте (((

куда смотреть и где копать?

Ссылка на сообщение
Поделиться на другие сайты

Александр, так всё таки, в чём может быть проблема? Часть кода по вашей рекомендации я удалял. Но это обрезание функционала, или я не прав? Хотелось бы, чтобы магазин работал в "полной комплектации". Подскажите где и что нужно искать для исправления.

Ссылка на сообщение
Поделиться на другие сайты

Не знаю, может в настройках групп покупателей не указан лимит накопительной скидки или статусы заказа.

Если не испльзуете накопительные скидки, то не должно быть как раз ни лимита, ни отмеченных статусов.

Ссылка на сообщение
Поделиться на другие сайты

Разобрались в чём была проблема. Может кому-то в будещем пригодиться мой вариант проблемы и "решения". Был зарегестрирован новый покупателль (виртуальный, только для проверки). Он оформил заказ. А потом самого покупателя из списков Клиенты" удалили (когда и как это получилось так и не поняли :) ). Но в "Заказах" его заказ остался. И вот когда в "Заказах" изменяли состояние его заказа вываливалась ошибка. Ибо заказ есть - а клиента в списках нету. По сути сами себе создали проблему на ровном месте.

Александр, спасибо за наводку на мысль, где проверять и искать.

Ссылка на сообщение
Поделиться на другие сайты
×
×
  • Создать...