Скажите пожалуйста, есть ли возможность в Virtuemart сделать несколько видов скидок, в зависимости от суммы заказа? Например, при заказе на 100 рублей - скидка 5%, при заказе на 200 рублей - 10% и т.д.
да стандартно никак нужно в basket.php править - там сессия корзины. делал когдато такую модификацию.
Вот мануал как сделать скидку "от суммы заказа". Но тут на одну скидку. На несколько сумм надо немного переделать математическую часть. Шаг 1. Добавляем это в russian.php после class vmLanguage extends vmAbstractLanguage { /** GLOBAL DISCOUNT **/ var $_PHPSHOP_GLOBAL_DISCOUNT = 'Скидка'; var $_PHPSHOP_GLOBAL_DISCOUNT_INFO = 'Введите скидку на товар (только цифры). Т.е. если скидка 10% введите 10.'; var $_PHPSHOP_GLOBAL_DISCOUNTABOVE = 'Минимальная сумма для действия скидки'; var $_PHPSHOP_GLOBAL_DISCOUNT_ABOVEINFO = 'Введите минимальную сумму для действия скидки (только цифры).'; /**End of GLOBAL DISCOUNT **/ Шаг 2. В файле ps_config.php после строки $my_config_array = array( добавляем: /** GLOBAL DISCOUNT **/ "GLOBAL_DISCOUNT" => "conf_GLOBAL_DISCOUNT", "GLOBAL_DISCOUNTABOVE" => "conf_GLOBAL_DISCOUNTABOVE", /** End of GLOBAL DISCOUNT **/ Шаг 3. В admin.show_cfg.php в конце между $tabs->endTab(); и $tabs->endPane(); добавляем: (таким образом в глобальной конфигурации виртуемарта добавится ещё одна вкладка, в которой будет задана скидка) /** GLOBAL DISCOUNT **/ $tabs->startTab( "Скидка \"от суммы заказа\"", "globaldiscount-page"); ?> <table class="adminform"> <?php ?> <tr> <td class="labelcell"><label for="_VM_GLOBAL_DISCOUNT"><?php echo $VM_LANG->_PHPSHOP_GLOBAL_DISCOUNT ?> </label></td> <td style="width:100px;"><input style="width:60px;" type="text" name="conf_GLOBAL_DISCOUNT" class="inputbox" value="<?php echo GLOBAL_DISCOUNT ?>" />%</td> <td><?php echo mm_ToolTip( $VM_LANG->_PHPSHOP_GLOBAL_DISCOUNT_INFO ) ?></td> </tr> <tr> <td class="labelcell"><label for="_VM_GLOBAL_DISCOUNTABOVE"><?php echo $VM_LANG->_PHPSHOP_GLOBAL_DISCOUNTABOVE ?> </label></td> <td style="width:100px;"><input style="width:60px;" type="text" name="conf_GLOBAL_DISCOUNTABOVE" class="inputbox" value="<?php echo GLOBAL_DISCOUNTABOVE ?>" /></td> <td><?php echo mm_ToolTip( $VM_LANG->_PHPSHOP_GLOBAL_DISCOUNT_ABOVEINFO ) ?></td> </tr> <?php ?> </table> <?php $tabs->endTab(); /** End of GLOBAL DISCOUNT **/ Шаг 4. В basket.php после $product_rows = Array(); добавляем: /** GLOBAL DISCOUNT **/ $disc = GLOBAL_DISCOUNT; $disc_2 = $disc/100; $disc_1 = 1-$disc_2; $discabove = GLOBAL_DISCOUNTABOVE; $discadded=0; $discstate=""; /** End of GLOBAL DISCOUNT **/ а после } // End of for loop through the Cart добавляем: /** GLOBAL DISCOUNT **/ if ($total>=$discabove) { $total = $total*$disc_1; $discadded=1; $discstate = "ВЫ ПОЛУЧИЛИ СКИДКУ " . $disc . "%!!"; } /** End of GLOBAL DISCOUNT **/ перед строкой $tax_total += $shipping_tax; добавляем: /** GLOBAL DISCOUNT **/ if ($discadded = 1) { $tax_total = $tax_total*$disc_1; } /** End of GLOBAL DISCOUNT **/ такие же изменения надо сделать с файлом ro_basket.php Шаг 5. В basket_b2c.html.php после условия <?php if($discount_after) { } ?> добавляем: <?php /** GLOBAL DISCOUNT **/ ?> <tr> <td colspan="7" align="center" valign="middle"><h3><strong><?php echo $discstate; ?> </strong></h3></td> </tr> <?php /** End of GLOBAL DISCOUNT **/ ?> такие же изменения надо сделать с файлом ro_basket_b2c.html.php Мой Дополнительный 6й Шаг. Для того, чтобы в заказах (в админке) сумма была со скидкой. В файле ps_checkout.php перед строкой $order_tax *= $discount_factor; добавляем: /** GLOBAL DISCOUNT **/ if ( $order_total >= GLOBAL_DISCOUNTABOVE ) $order_total -= ($order_total*GLOBAL_DISCOUNT)/100; /** End of GLOBAL DISCOUNT **/
Вот ссылка где я выложил мануал как сделать скидку "от суммы заказа". Но тут на одну скидку. На несколько сумм надо немного переделать математическую часть. http://joomla-support.ru/showthread.php?p=65688#post65688
есть вариант расчета доставки в зависимости от веса)))).меняем вес на сумму заказа в этом варианте и подменяем вес на сумму в checkout.index...должно работать)) и несколько вариантов на "от и до".
А не в курсе что нужно дописать, чтобы эта скидка распространялась на покупателей которые отнесены ТОЛЬКО к группе -default-???
Уважаемые форумчане! Я сделала скидку в зависимости от суммы заказа через правку файла basket.php, и для первых 3х этапов оформления заказа итоговая сумма замечательно считается с учетом скидки. Однако на самом последнем шаге, который называется "Завершить заказ", сумма вновь становится прежней, без скидки!!! Понимаю, что это где-то в отдельном файле php правится, не в basket.php и не в basket_b2c.html.php (там лежат только табличные "шаблоны"). Вопрос: где это может находиться? Может кто-то уже сталкивался... Вопрос снимается - оказывается, надо было исправить файл ro_basket.php тоже - невнимательно прочла инструкцию.