kpoxas 0 Опубликовано 29 марта, 2008 Жалоба Share Опубликовано 29 марта, 2008 Модуль скидка в зависимости от количества товара. Попросили такой сделать. Кое-что получилось. В общем из архива копируем файлы в соответствующие директории. Потом идем в админку и включаем модуль в модулях_итого. В сортировке он должен идти после модуля ot_discount. Для того, чтобы скидка отображалась в корзине: 1) в файле /includes/modules/order_details_cart.php после $total_content = ''; $total =$_SESSION['cart']->show_total(); if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == '1' && $_SESSION['customers_status']['customers_status_ot_discount'] != '0.00') { if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) { $price = $total-$_SESSION['cart']->show_tax(false); } else { $price = $total; } $discount = $vamPrice->GetDC($price, $_SESSION['customers_status']['customers_status_ot_discount']); $total_content = $_SESSION['customers_status']['customers_status_ot_discount'].' % '.SUB_TITLE_OT_DISCOUNT.' -'.vam_format_price($discount, $price_special = 1, $calculate_currencies = false).'<br />'; } добавляем //apply the discounts MOD 24/03/2008 if(MODULE_ORDER_TOTAL_DISCOUNT_QUANT_STATUS == 'true'){ $table_quant = split("[:,]" , MODULE_ORDER_TOTAL_DISCOUNT_QUANT_PERCENT); $size = sizeof($table_quant); for ($i=0, $n=$size; $i<$n; $i+=2) { if ($_SESSION['cart']->count_contents() <= $table_quant[$i]) { $discount_quant_percent = $table_quant[$i+1]; break; } if ($i>=($n-2)) $discount_quant_percent = $table_quant[$i+1]; } if($_SESSION['cart']->count_contents() >= MODULE_ORDER_TOTAL_DISCOUNT_QUANT_ITEMS){ $discount_quant = $vamPrice->GetDC($price, $discount_quant_percent); $total_content .= $discount_quant_percent.' % '.SUB_TITLE_OT_DISCOUNT_QUANT.' -'.vam_format_price($discount_quant, $price_special = 1, $calculate_currencies = false).'<br />'; } } //apply the discounts MOD 24/03/2008 после if ($_SESSION['customers_status']['customers_status_show_price'] == '1') { if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 0) $total-=$discount; if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) $total-=$discount; if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 1) $total-=$discount; добавляем if(MODULE_ORDER_TOTAL_DISCOUNT_QUANT_STATUS == 'true') $total-=$discount_quant; 2) в /lang/russian/russian.php после define('SUB_TITLE_OT_DISCOUNT','Скидка:'); добавляем define('SUB_TITLE_OT_DISCOUNT_QUANT','Скидка от количества:'); 3) в /templates/шаблон/source/boxes/shopping_cart.php после if ($_SESSION['customers_status']['customers_status_ot_discount_flag'] == '1' && $_SESSION['customers_status']['customers_status_ot_discount'] != '0.00') { if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) { $price = $total-$_SESSION['cart']->show_tax(false); } else { $price = $total; } $discount = $vamPrice->GetDC($price, $_SESSION['customers_status']['customers_status_ot_discount']); $box->assign('DISCOUNT', $vamPrice->Format(($discount * (-1)), $price_special = 1, $calculate_currencies = false)); } добавляем //apply the discounts MOD 24/03/2008 if(MODULE_ORDER_TOTAL_DISCOUNT_QUANT_STATUS == 'true'){ $table_quant = split("[:,]" , MODULE_ORDER_TOTAL_DISCOUNT_QUANT_PERCENT); $size = sizeof($table_quant); for ($i=0, $n=$size; $i<$n; $i+=2) { if ($_SESSION['cart']->count_contents() <= $table_quant[$i]) { $discount_quant_percent = $table_quant[$i+1]; break; } if ($i>=($n-2)) $discount_quant_percent = $table_quant[$i+1]; } if($_SESSION['cart']->count_contents() >= MODULE_ORDER_TOTAL_DISCOUNT_QUANT_ITEMS){ $discount_quant = $vamPrice->GetDC($price, $discount_quant_percent); } } //apply the discounts MOD 24/03/2008 после if ($_SESSION['customers_status']['customers_status_show_price'] == '1') { if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 0) $total-=$discount; if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) $total-=$discount; if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 1) $total-=$discount; добавляем if(MODULE_ORDER_TOTAL_DISCOUNT_QUANT_STATUS == 'true') $total-=$discount_quant; Вроде ничего не забыл. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 30 марта, 2008 Жалоба Share Опубликовано 30 марта, 2008 kpoxas Спасибо огромное за модуль. и сразу вопрос, а стандартный модуль скидки от количества, что идёт с магазином он не подходит?! В админке когда создал товар, при редактировании в закладке Цены там можно указывать количество товара и цена для данного количества. Вобщем, вот так - http://vamshop.ru/manual/ch06s02.html Ссылка на сообщение Поделиться на другие сайты
kpoxas 0 Опубликовано 30 марта, 2008 Автор Жалоба Share Опубликовано 30 марта, 2008 Просто я использую его, когда надо для всего товара скидку сделать, а то для каждого выставлять трудновато. Да и показывается он сразу в корзине...покупатель видит, что у него скидка. У меня такой вопрос еще. Можно ли сделать, чтобы со всех скидок , подключенных к товару, учитывались не все, а только большая? Ссылка на сообщение Поделиться на другие сайты
kpoxas 0 Опубликовано 30 марта, 2008 Автор Жалоба Share Опубликовано 30 марта, 2008 ДА и еще этот модкль считает все количество товара в корзине, а стандартный по-моему только для одного товара Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 31 марта, 2008 Жалоба Share Опубликовано 31 марта, 2008 Во насчёт всех подключённых скидок даже не знаю, вроде бы они суммируются, а не выбирается большая. kpoxas А что с этим модулем делать?! Может выложить его в файлы и сделать в виде CIP модуля, т.е. что б можно было ставить через Админку - Модули - Установка модулей. Ссылка на сообщение Поделиться на другие сайты
kpoxas 0 Опубликовано 31 марта, 2008 Автор Жалоба Share Опубликовано 31 марта, 2008 да...можно. У тебя он работает без проблем? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 31 марта, 2008 Жалоба Share Опубликовано 31 марта, 2008 Да вот как раз попробовал, на странице корзины вроде текст выводит, что есть скидка, но не отнимает. Вот глянь скриншот. Ссылка на сообщение Поделиться на другие сайты
kpoxas 0 Опубликовано 31 марта, 2008 Автор Жалоба Share Опубликовано 31 марта, 2008 Странно, у меня все выводится. Вроде ж динамический процент высчитывается. Посмотри в файле /includes/modules/order_details_cart.php : $discount_quant = $vamPrice->GetDC($price, $discount_quant_percent); вот эта функция считает скидку. Так как у тебя выводит, что 5 % , то $discount_quant_percent посчитано правильно, а сама сумма считается по аналогии, как она посчитана чуть выше для групповой скидки: $discount = $vamPrice->GetDC($price, $_SESSION['customers_status']['customers_status_ot_discount']); Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 31 марта, 2008 Жалоба Share Опубликовано 31 марта, 2008 Да вроде правил как ты написал, сейчас ещё раз попробую. Ссылка на сообщение Поделиться на другие сайты
kpoxas 0 Опубликовано 31 марта, 2008 Автор Жалоба Share Опубликовано 31 марта, 2008 ну что получилось? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 31 марта, 2008 Жалоба Share Опубликовано 31 марта, 2008 Не знаю даже, вроде делаю всё как ты написал, всё равно не отнимает, пишет 0.00 Ссылка на сообщение Поделиться на другие сайты
kpoxas 0 Опубликовано 31 марта, 2008 Автор Жалоба Share Опубликовано 31 марта, 2008 Попробуй поставить в "группах клиентов" для твоей группы в Скидке от общей стоимости заказа какое-то число, и скидка начнет считаться. Смешно)) . Ссылка на сообщение Поделиться на другие сайты
kpoxas 0 Опубликовано 31 марта, 2008 Автор Жалоба Share Опубликовано 31 марта, 2008 Все, разобрался . Там надо в файлах /includes/modules/order_details_cart.php и в /templates/шаблон/source/boxes/shopping_cart.php вместо $discount_quant = $vamPrice->GetDC($price, $discount_quant_percent); поставить $discount_quant = $vamPrice->GetDC($total, $discount_quant_percent); Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 1 апреля, 2008 Жалоба Share Опубликовано 1 апреля, 2008 Вот теперь всё нормально, спасибо. Сегодня-завтра попробую соорудить CIP модуль. Напишу в теме в этой. Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 апреля, 2008 Жалоба Share Опубликовано 2 апреля, 2008 kpoxas Сделал cip пакет и создал отдельную тему для модуля - http://vamshop.ru/forum/index.php?topic=1180 Ещё раз спасибо за модуль. Ссылка на сообщение Поделиться на другие сайты
kpoxas 0 Опубликовано 2 апреля, 2008 Автор Жалоба Share Опубликовано 2 апреля, 2008 Не за что. Но все-таки остается вопрос, можно ли сделать, чтобы со всех скидок , подключенных к товару, учитывались не все, а только большая? Ссылка на сообщение Поделиться на другие сайты
support 447 Опубликовано 2 апреля, 2008 Жалоба Share Опубликовано 2 апреля, 2008 Вот насчёт этого я не знаю, знаю, что все скидки считаются в /includes/classes/vam_price.php Нужно как-то там копаться. Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения