1С-Битрикс. Применение только одной, самой большой скидки на товар. Скидки битрикс


Купоны для скидки и промокоды 1С-Битрикс (1c-bitrix.ru) за июль – август 2018

Мы используем cookies для вашего удобства. Пользуясь сайтом, вы соглашаетесь с политикой использования файлов cookies и схожих технологий. Узнать больше ×
  1. Главная
  2. Магазины и сервисы
  3. Услуги
  4. Купоны «1С-Битрикс»

«1С-Битрикс» (1c-bitrix.ru) – это компания, которая разрабатывает программные продукты для эффективного управления интернет-проектами и корпоративными порталами. Организация постоянно совершенствует качество разработок и выпускает обновления с дополнительными функциями, которые значительно упрощают деятельность клиентов.

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

Желаете воспользоваться предложением популярной компании без больших финансовых вложений? Активируйте промокоды и купоны для скидки «1С-Битрикс» за июль – август 2018 года, и вы получите интересующие вас продукты на максимально выгодных условиях. Экономить всегда приятно, поэтому не пропустите новые купоны 1c-bitrix.ru!

Где вводить промокод?

Поле для ввода промокода расположено во вкладке «Купить», а также в «Корзине» под общей суммой заказа.

Предложение действует до 31 июля 2018, 23:59

promokodus.com

Создание скидки на общую сумму покупки в Битрикс корзине

Функционал интернет-магазина, работающего под управлением 1С Битрикс, позволяет задавать множество условий скидок в корзине покупателя. Эти условия можно гибко настраивать и адаптировать под конкретный вид бизнеса.

Основные виды манипуляций которые приходится настраивать достаточно часто:

Функционал достаточно обширен и позволяет реализовать любые фантазии и условия. Я расскажу на примере "Скидка 15% если товаров в корзине на сумму от 15001 до 20000 рублей"

Скидка на общую сумму покупки

Идем в админпанель, раздел "Магазин", подраздел "Скидки", пункт "Правила работы с корзиной":

Нажимаем "Добавить правило":

Откроется мастер настройки правила. Здесь минимально необходимо указать понятое название, так как, если таких условий будет много, Вы легко запутаетесь. Я назвал скидку как есть и не выставлял период активности, то есть данное правило навсегда с текущего момента:

Переходим на вкладку "Действия условия" и задаем действие которое должно произойти, в моем случае должно произойти "Изменение стоимости товаров в корзине"

И заполняем действие как на скриншоте. То есть мы пошагово составили "применить скидку 15% ко всем товарам соответствующим условиям"

А теперь необходимо создать условие при котором это действие будет срабатывать. Для этого переходим в поле ниже "Дополнительные условия". И выбираем из заготовок "Общая стоимость товаров":

Создаем два таких условия как на скриншоте. То есть мы ограничили суммы в рамки 15001 рубль и 20000 рублей. Если говорить человеческим языком, то получается следующее "Если в корзине набрано товаров от 15001 рубля до 20000 рублей, должна сработать скидка 15% на все товары":

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

Все готово. Но держите за правило: всегда все проверять. Для этого переходим на сайт и кидаем в корзину товаров на сумму в рамках 15000/20000 рублей. Переходим в корзину и видим, что наша скидка применилась.

На всякий случай докладываем в корзину товаров на сумму превышающее наше условие, и видим, что скидка не сработала.

Все отлично, наша работа принесла результат. Если Вы не хотите ограничивать скидку в неких рамках. Например, нужно сделать так, чтобы скидка срабатывала от 15000 рублей и в бесконечность, просто не задаете второе условие, не нужно создавать еще одну скидку от 20000 и выше (конечно если она не отличается)

Автору на кофе и печеньки!

camouf.ru

1С-Битрикс. Применение только одной, самой большой скидки на товар

Как известно, в 1С-Битрикс множество разновидностей скидок. Есть и «скидки на товары», и «скидки на заказ», и «купоны скидок», и даже «накопительные скидки». Но вместе они иногда работают не так, как нам нужно.

Рассмотрим пример

В интернет-магазине есть 2 типа скидок:

При оформлении заказа необходимо учитывать бОльшую скидку. Как это сделать? Приоритеты и галочка «Прекратить дальнейшее применение скидок» здесь решением не являются. Например, скидка на товар 10%, а скидки по дисконтным картам от 5% до 20%.

То есть, если клиент кладет в корзину товар с 10% скидкой, вводит номер дисконтной карты (по ней скидка 20%) и карта не считается. Получается, применяется меньшая скидка.

Решим досадное недоразумение парочкой обработчиков событий.

CModule::IncludeModule('catalog'); AddEventHandler("catalog", "OnGetDiscount", array("WeProductDiscountHandler", "OnGetDiscount")); AddEventHandler("catalog", "OnGetDiscountResult", array("WeProductDiscountHandler", "OnGetDiscountResult")); class WeProductDiscountHandler{ protected static $productPrice = null; @return public function OnGetDiscount($intProductID, $intIBlockID, $arCatalogGroups, $arUserGroups, $strRenewal, $siteID, $arDiscountCoupons, $boolSKU, $boolGetIDS){ $curProductPrice = CPrice::GetBasePrice($intProductID, false, false, false); if($curProductPrice != false){ self::$productPrice = $curProductPrice; } return true; } @return public function OnGetDiscountResult(&$arResult){ if(is_array(self::$productPrice) && isset(self::$productPrice['PRICE']) && self::$productPrice['PRICE'] > 0){ $discounts = array(); foreach($arResult as $key_discount => $discount){ switch($discount['VALUE_TYPE']){ case CCatalogDiscount::TYPE_PERCENT: $discounts[$key_discount] = self::$productPrice['PRICE'] * ($discount['VALUE'] / 100); break; case CCatalogDiscount::TYPE_SALE: $discounts[$key_discount] = self::$productPrice['PRICE'] - $discount['VALUE']; break; case CCatalogDiscount::TYPE_FIX: $discounts[$key_discount] = $discount['VALUE']; break; default: break; } } if(!empty($discounts)){ $maxs_discounts = array_keys($discounts, max($discounts)); if(isset($maxs_discounts[0], $arResult[$maxs_discounts[0]]) && is_array($arResult[$maxs_discounts[0]])){ $neededDiscount = $arResult[$maxs_discounts[0]]; $arResult = array($neededDiscount); } } } self::$productPrice = null; } }

На момент написания статьи, версия модуля «Торговый каталог» (catalog) была 14.0.5. Возможно, в поздних версиях это будет решено «из коробки». А пока довольствуемся тем, что есть.

www.olegpro.ru

Организация собственных скидок в Битрикс

Допустим, мы хотим разработать свою систему скидок, которая не укладывается в рамки Битрикса. Например, добавить региональную скидку, которая зависит от места доставки (для каждого места - своя скидка в процентах).

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

В этом случае есть смысл хранить свои скидки в отдельно созданных таблицах, а часть бизнес-логики - переписать, делегируя функции скидок классу MyDiscount:

Прежнюю систему скидок Битрикс необходимо удалить (иначе в некоторых местах скидки будут считаться дважды):

TRUNCATE b_catalog_discount; TRUNCATE b_catalog_discount_cond;

Скидки в каталоге товаров

Создаем класс MyDiscount и программируем в нем бизнес-логику, которая выбирает скидки из отдельной таблицы. Новые цены и скидки перед выводом в каталоге можно изменить так:

$arResult["ITEMS"] = MyDiscount::setDiscount($arResult["ITEMS"]);

Добавление скидки в корзину

Обработчик скидок корзины

Для корректной обработки заказа со своей схемой скидок в месте добавления в корзину следует назначить обработчик скидок.

Add2BasketByProductID($iProductID, $iQuantity, array('PRODUCT_PROVIDER_CLASS'=>'CCatalogProductProviderCustom'), $arProductParams);

CCatalogProductProviderCustom - это унаследованный от CCatalogProductProvider класс-обработчик корзины:

class CCatalogProductProviderCustom extends CCatalogProductProvider {   public static function GetProductData($arParams) {   $arResult = CCatalogProductProvider::GetProductData($arParams); // получаем данные из родительского класса   $product = CPrice::GetByID($arResult['PRODUCT_PRICE_ID']); // получаем данные о товаре $MyDiscount = new MyDiscount(); // наш класс для обработки скидок $arResult = $MyDiscount->setDiscountCartItem($arResult, $product['PRODUCT_ID']); // модифицируем данные   return $arResult; // отдаем модифицированные результаты }   public static function OrderProduct($arParams) {   $arResult = CCatalogProductProvider::OrderProduct($arParams);   $product = CPrice::GetByID($arResult['PRODUCT_PRICE_ID']); $MyDiscount = new MyDiscount(); $arResult = $MyDiscount->setDiscountCartItem($arResult, $product['PRODUCT_ID']);   return $arResult; } }

Исправляем баг "пересчета" скидок

Существует проблема «пересчета» скидки: в корзине она рассчитывается на основе цены «до» и «после», а не передается. Поэтому на уровне сотых, иногда - десятых, скидка отличается от «начальной».

Чтобы решить проблему «пересчета» скидок, скидки следует хранить в отдельной таблице:

CREATE TABLE `external_basket_discount` ( `basket_id` int(11) unsigned NOT NULL, `product_id` int(11) unsigned NOT NULL, `my_discount` decimal(5,2) NOT NULL, PRIMARY KEY (`basket_id`,`product_id`) ) ENGINE=InnoDB;

Добавим в класс MyDiscount три метода:

public function storeDiscount($PRODUCT_ID, $MY_DISCOUNT) { // установить скидку на товар в корзине $basket_id = (int) CSaleBasket::GetBasketUserID(); $product_id = (int) $PRODUCT_ID; $my_discount = (float) $MY_DISCOUNT;   $query = "INSERT INTO `external_basket_discount` (`basket_id`, `product_id`, `my_discount`) VALUES ($basket_id, $product_id, '$my_discount') ON DUPLICATE KEY UPDATE `my_discount` = '$my_discount' "; $this->db->Query($query); }   public static function extractCartItemDiscount($item) { // получить скидку на товар global $DB; $basket_id = (int) CSaleBasket::GetBasketUserID(); $product_id = (int) $item['PRODUCT_ID']; $query = "SELECT `my_discount` FROM `external_basket_discount` WHERE `basket_id` = $basket_id AND `product_id` = $product_id"; $results = $DB->Query($query); $results = $results->Fetch(); $ret = isset($results['my_discount']) ? $results['my_discount'] : ''; return $ret; }   public static function clearDiscount() { // очистить скидки на товары в корзине global $DB; $basket_id = (int) CSaleBasket::GetBasketUserID(); $query = "DELETE FROM `external_basket_discount` WHERE `basket_id` = $basket_id"; $DB->Query($query); }

Где вызывать эти методы:

pushorigin.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта