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

покупатель не переносится в нужную дисконтгруппу


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

При обновлении статуса заказа в ЗАКАЗАХ непосредственно (то есть не заходя в его редактирование) не проверяется накопительный предел и покупатель не переносится в нужную группу... У кого-то что-то такое было? И еще когда создается новая группа, то таблица personal_offers_by_customers_status добавляется в кодировке cp1251_general_ci , также как и таблица module_newsletter_temp.

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

kpoxas

Да, есть такое дело, проверка происходит именно на странице подробностей заказа.

А вот как проверить сразу в списке, я пока даже и не знаю если честно.

А вот по поводу кодировки таблиц, по идее, ничего страшного, т.е. в функции подключения к базе данных /inc/vam_db_connect.inc.php там принудительно задаётся кодировка соединения utf8 и вроде как все данные будут писать в utf8 в таблицы.

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

У меня кстати и в редактировании товара перестало переносится в нужную группу,

в admin/orders.php

исправил:

// 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");

на

// 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");

и все стало нормально.

Затем после   $order_updated = true; (у меня прмерно 121 строчка) вставил еще раз:

     // 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)$this_orderID );

              $customer = vam_db_fetch_array($customer_query);

             $customer_id1 = $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_id1 . " 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_id1);

              $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");

                                                                                                                                                                                                 

              // 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_id1);

                 $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_id1);

           $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 ($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/'.$_SESSION['language'].'/accumulated_discount_admin.html');

$txt_mail_admin = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/accumulated_discount_admin.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_admin, $txt_mail_admin);

            //email to customer

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

$txt_mail_customer = $vamTemplate->fetch(CURRENT_TEMPLATE.'/admin/mail/'.$_SESSION['language'].'/accumulated_discount_customer.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_customer, $txt_mail_customer);

           }

        }

       

        // eof denuz added accumulated discount

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

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

И еще, нормально не приходит письмо о переносе в группу

пишет

Warning: Smarty error: unable to read resource: "my_table/admin/mail//accumulated_discount_customer.html" in /home/parfums/public_html/includes/external/smarty/Smarty.class.php on line 1092

То есть не идентифицирует язык, а файла accumulated_discount_customer.html нет вообще.

Первую проблему решил, поменял $order->info['language'] на $_SESSION['language'] (вверху исправил), но надо еще создать соответствующие файлы. Кстати еще нет файла change_order_mail.html

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

kpoxas

Спасибо огромное, а ещё просьба, можешь сразу свой /admin/orders.php прицепить, что б я не ошибся внося изменения в магазин.

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

Вот файл, но это прямое решение, может создать какую-то функцию, чтобы такой большой код не дублировался...

А у тебя нет этих отсутствующих шаблонов писем?

orders.php

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

Ещё раз спасибо, сейчас буду прбовать.

Такие шаблоны есть в папке, просто что-то язык не подставляется.

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

kpoxas

Вроде нормально, проверил, работает как надо, я тогда добавлю пока как есть в код магазина, а там поглядим, может упростить как-то можно будет.

Ещё раз спасибо большое.

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

еще такой глюк стал происходить, после изменения статуса админу присылается сообщение о переходе в другую группу, которое должно присылаться клиенту.. Администраторское сообщение, о том, что "Такой  - то покупатель перешел в такую-то группу..." не приходит

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

проблема может тут:

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_admin, $txt_mail_admin);

если письмо шлется админу, то зачем стоит переменные $check_status['customers_email_address'] и  $check_status['customers_name']

аналогично и для письма клиенту

  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_customer, $txt_mail_customer);

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

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

да именно в этом и проблема. Саш, поменяй эти 2 строчки соответственно на:

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);

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);

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

kpoxas

Да, админские письма тоже добавлю, просто не доделал пока.

Если не сложно добавь на vamshop.ru/bugs это пожелание.

За исправление спасибо, внём исправение в магазин.

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