Ошибка не найден базовый тип цен битрикс

пятница, 12 августа 2011 г.

Битрикс Не найден базовый тип цен при добавлении товара

Добрый день. Данная ошибка возникает, если вы удалили все демо-данные с сайта и пытаемся с нуля создать каталог с товарами. При добавлении товара возникает ошибка «Не найден базовый тип цен». Оказалось, что при удалении демо данных система так же удаляет и типы цен. Следовательно, нам нужно создать тип. Создать тип можно при переходе Администрирование->Магазин->Торговый каталог->Типы цен->Новый тип цен.

После добаления типа всё работает!

Комментариев нет:

Отправить комментарий

Для работы интернет-магазина необходимо установить цены, с которыми он будет работать. Если позволяет редакция продукта, то в каталоге можно использовать несколько типов цен, но при этом один из типов цен является базовым. Базовая цена — это цена, относительной которой рассчитываются все остальные цены системы.

Типы цен

По умолчанию в системе уже доступна Розничная цена, она же назначена и базовой. Давайте создадим еще два типа цен: для постоянных клиентов и оптовых покупателей. Но для начала надо создать две группы пользователей, потому что типы цен привязываются к группам.

В панели управления переходим в «Настройки • Пользователи • Группы пользователей» и создаем две новые группы:

  • Постоянные покупатели
  • Оптовые покупатели

Управление типами цен осуществляется на странице «Магазин • Настройки • Цены • Типы цен»:

Создаем два новых типа цен:

  • Постоянный покупатель, код REGULAR_BUYER
  • Оптовый покупатель, код WHOLESALE_BUYER

Обязательно указываем группы пользователей, которые имеют право на просмотр этой цены и на покупку по этой цене:

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

Наценки

Наценки — заранее установленная величина в относительном выражении, на которую уменьшается или увеличивается цена товара. Наценки применяются к базовой цене при расчете других типов цен товара (базовую цену сменить невозможно). Каждая цена будет считаться по формуле:

[Цена]=[Базовая цена]+[Базовая цена]*[Наценка в процентах/100]

Наценка может быть представлена как положительной, так и отрицательной величиной.

Переходим на страницу «Магазин • Настройки • Цены • Наценки» и создаем две наценки:

  • Постоянный покупатель, наценка -10%
  • Оптовый покупатель, наценка -20%

При редактировании наценки можно отметить checkbox «Пересчитать цены»:

После этого произойдёт автоматическое изменение цены для всех товаров, у которых применена эта наценка:

Примеры кода

// получаем тип цен с идентификатором $ID, включая языкозависимые параметры
$result = CCatalogGroup::GetByID($ID);
if ($result['CAN_ACCESS'] == 'Y') {
    echo 'Вы можете видеть цены типа '.$result['NAME_LANG'].'<br/>';
}
if ($result['CAN_BUY'] == 'Y') {
    echo 'Вы можете покупать товары по ценам типа '.$result['NAME_LANG'].'<br/>';
}
// получаем типы цен с внутренним именем RETAIL
$result = CCatalogGroup::GetList(
    array('SORT' => 'ASC'),
    array('NAME' => 'RETAIL')
);
while ($arPriceType = $result->Fetch()) {
    echo $arPriceType['NAME_LANG'].' - '.$arPriceType['CAN_ACCESS'].'<br/>';
}
// получаем цену типа $PRICE_TYPE_ID для товара с идентификатором $PRODUCT_ID
$result = CPrice::GetList(
    array(),
    array(
        'PRODUCT_ID' => $PRODUCT_ID,
        'CATALOG_GROUP_ID' => $PRICE_TYPE_ID
    )
);
if ($price = $result->Fetch()) {
    echo CurrencyFormat($price['PRICE'], $price['CURRENCY']);
} else {
    echo 'Цена не найдена!';
}

Пример получения цены товара, в зависимости от того, авторизован пользователь или нет. И если авторизован — какой группе он принадлежит (постоянный покупатель или оптовый покупатель):

/*
 * Определяемся, какую цену товара будем показывать
 */
$productPrice = CurrencyFormat(0.0, 'RUB');
// это идентификатор типа цен BASE (розничная цена)
$PRICE_TYPE_ID = PRICE_TYPE_BASE;
// если пользователь авторизован, он может принадлежать группе «Постоянные покупатели»
// или «Оптовые покупатели», а для таких пользователей надо показать цену со скидкой
if ($USER->IsAuthorized()) {
    // массив групп, к которым принадлежит авторизованный пользователь
    $arGroups = $USER->GetUserGroupArray();
    // если пользователь принадлежит группе «Постоянные покупатели»
    if (in_array(CATALOG_GROUP_REGULAR_BUYER, $arGroups)) {
        $PRICE_TYPE_ID = PRICE_TYPE_REGULAR_BUYER;
    }
    // если пользователь принадлежит группе «Оптовые покупатели»
    if (in_array(CATALOG_GROUP_WHOLESALE_BUYER, $arGroups)) {
        $PRICE_TYPE_ID = PRICE_TYPE_WHOLESALE_BUYER;
    }
}
// получаем цену товара: розничную, для постоянного покупателя или
// для оптового покупателя — в зависимости от $PRICE_TYPE_ID 
$result = CPrice::GetList(
    array(),
    array(
        'PRODUCT_ID' => $PRODUCT_ID, // идентификатор товара
        'CATALOG_GROUP_ID' => $PRICE_TYPE_ID  // идентификатор типа цены
    )
);
if ($temp = $result->Fetch()) {
    $productPrice = CurrencyFormat($temp['PRICE'], $temp['CURRENCY']);
}

В коде выше использованы пять констант, которые определены в файле init.php:

<?php
/*
 * Файл local/php_interface/init.php
 */

define('DEFAULT_TEMPLATE_PATH', '/local/templates/.default');

// Идентификатор группы пользователей «Постоянные покупатели»
define('CATALOG_GROUP_REGULAR_BUYER', 9);
// Идентификатор группы пользователей «Оптовые покупатели»
define('CATALOG_GROUP_WHOLESALE_BUYER', 10);
// Идентификатор типа цен «Базовый»
define('PRICE_TYPE_BASE', 1);
// Идентификатор типа цен «Постоянные покупатели»
define('PRICE_TYPE_REGULAR_BUYER', 2);
// Идентификатор группы пользователей «Оптовые покупатели»
define('PRICE_TYPE_WHOLESALE_BUYER', 3);

function debug($data) {
    echo '<pre>' . print_r($data, true) . '</pre>';
}

База данных

--
-- Структура таблицы `b_catalog_group`
--

CREATE TABLE `b_catalog_group` (
  `ID` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `NAME` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
  `BASE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',
  `SORT` int(11) NOT NULL DEFAULT '100',
  `XML_ID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `TIMESTAMP_X` datetime DEFAULT NULL,
  `MODIFIED_BY` int(18) DEFAULT NULL,
  `DATE_CREATE` datetime DEFAULT NULL,
  `CREATED_BY` int(18) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

--
-- Дамп данных таблицы `b_catalog_group`
--

INSERT INTO `b_catalog_group`
(`ID`, `NAME`, `BASE`, `SORT`, `XML_ID`, `TIMESTAMP_X`, `MODIFIED_BY`, `DATE_CREATE`, `CREATED_BY`)
VALUES
(1, 'BASE', 'Y', 100, 'BASE', '2018-08-18 09:16:48', 1, '2018-08-18 09:12:58', 1),
(2, 'REGULAR_BUYER', 'N', 100, '', '2018-08-24 16:17:27', 1, '2018-08-24 15:36:32', 1),
(3, 'WHOLESALE_BUYER', 'N', 100, '', '2018-08-24 16:17:43', 1, '2018-08-24 15:45:09', 1);
  • ID — уникальный индентификатор
  • NAME — внутреннее имя цены
  • BASE — указывает на то, является ли этот тип цен базовым
  • SORT — число для сортировки
  • XML_ID — идентификатор из 1С:Предприятие
--
-- Структура таблицы `b_catalog_price`
--
CREATE TABLE `b_catalog_price` (
`ID` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`PRODUCT_ID` int(11) NOT NULL,
`EXTRA_ID` int(11) DEFAULT NULL,
`CATALOG_GROUP_ID` int(11) NOT NULL,
`PRICE` decimal(18,2) NOT NULL,
`CURRENCY` char(3) COLLATE utf8_unicode_ci NOT NULL,
`TIMESTAMP_X` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`QUANTITY_FROM` int(11) DEFAULT NULL,
`QUANTITY_TO` int(11) DEFAULT NULL,
`TMP_ID` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,
`PRICE_SCALE` decimal(26,12) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Дамп данных таблицы `b_catalog_price`
--
INSERT INTO `b_catalog_price`
(`ID`, `PRODUCT_ID`, `EXTRA_ID`, `CATALOG_GROUP_ID`, `PRICE`, `CURRENCY`,
`TIMESTAMP_X`, `QUANTITY_FROM`, `QUANTITY_TO`, `TMP_ID`, `PRICE_SCALE`)
VALUES
(314, 317, NULL, 1, '1000.00', 'RUB', '2018-08-18 09:24:19', NULL, NULL, NULL, '1000.000000000000'),
(315, 318, NULL, 1, '2000.00', 'RUB', '2018-08-18 09:25:24', NULL, NULL, NULL, '2000.000000000000'),
(316, 319, NULL, 1, '3000.00', 'RUB', '2018-08-18 09:25:59', NULL, NULL, NULL, '3000.000000000000'),
(317, 320, NULL, 1, '4000.00', 'RUB', '2018-08-18 09:26:36', NULL, NULL, NULL, '4000.000000000000'),
(318, 321, NULL, 1, '5000.00', 'RUB', '2018-08-18 09:27:03', NULL, NULL, NULL, '5000.000000000000'),
(319, 322, NULL, 1, '1000.00', 'RUB', '2018-08-18 09:27:37', NULL, NULL, NULL, '1000.000000000000'),
(320, 323, NULL, 1, '2000.00', 'RUB', '2018-08-18 09:28:12', NULL, NULL, NULL, '2000.000000000000'),
(321, 324, NULL, 1, '3000.00', 'RUB', '2018-08-18 09:28:48', NULL, NULL, NULL, '3000.000000000000'),
(322, 325, NULL, 1, '4000.00', 'RUB', '2018-08-18 09:29:17', NULL, NULL, NULL, '4000.000000000000'),
(323, 326, NULL, 1, '5000.00', 'RUB', '2018-08-18 09:29:44', NULL, NULL, NULL, '5000.000000000000'),
(324, 327, NULL, 1, '1000.00', 'RUB', '2018-08-18 09:30:17', NULL, NULL, NULL, '1000.000000000000'),
(325, 328, NULL, 1, '2000.00', 'RUB', '2018-08-18 09:30:44', NULL, NULL, NULL, '2000.000000000000'),
(326, 329, NULL, 1, '3000.00', 'RUB', '2018-08-18 09:31:14', NULL, NULL, NULL, '3000.000000000000'),
(327, 330, NULL, 1, '4000.00', 'RUB', '2018-08-18 09:31:42', NULL, NULL, NULL, '4000.000000000000'),
(328, 331, NULL, 1, '5000.00', 'RUB', '2018-08-18 09:32:05', NULL, NULL, NULL, '5000.000000000000'),
(329, 332, NULL, 1, '1000.00', 'RUB', '2018-08-18 09:45:36', NULL, NULL, NULL, '1000.000000000000'),
(330, 333, NULL, 1, '2000.00', 'RUB', '2018-08-18 09:46:03', NULL, NULL, NULL, '2000.000000000000'),
(331, 334, NULL, 1, '3000.00', 'RUB', '2018-08-18 09:46:29', NULL, NULL, NULL, '3000.000000000000'),
(332, 335, NULL, 1, '4000.00', 'RUB', '2018-08-18 09:46:55', NULL, NULL, NULL, '4000.000000000000'),
(333, 336, NULL, 1, '4000.00', 'RUB', '2018-08-18 09:47:21', NULL, NULL, NULL, '4000.000000000000'),
(334, 337, NULL, 1, '1000.00', 'RUB', '2018-08-18 09:47:59', NULL, NULL, NULL, '1000.000000000000'),
(335, 338, NULL, 1, '1000.00', 'RUB', '2018-08-18 09:48:25', NULL, NULL, NULL, '1000.000000000000'),
(336, 339, NULL, 1, '3000.00', 'RUB', '2018-08-18 09:48:49', NULL, NULL, NULL, '3000.000000000000'),
(337, 340, NULL, 1, '4000.00', 'RUB', '2018-08-18 09:49:13', NULL, NULL, NULL, '4000.000000000000'),
(338, 341, NULL, 1, '5000.00', 'RUB', '2018-08-18 09:49:40', NULL, NULL, NULL, '5000.000000000000'),
(339, 342, NULL, 1, '1000.00', 'RUB', '2018-08-18 09:50:13', NULL, NULL, NULL, '1000.000000000000'),
(340, 343, NULL, 1, '2000.00', 'RUB', '2018-08-18 09:50:43', NULL, NULL, NULL, '2000.000000000000'),
(341, 344, NULL, 1, '3000.00', 'RUB', '2018-08-18 09:51:12', NULL, NULL, NULL, '3000.000000000000'),
(342, 345, NULL, 1, '4000.00', 'RUB', '2018-08-18 09:51:43', NULL, NULL, NULL, '4000.000000000000'),
(343, 346, NULL, 1, '5000.00', 'RUB', '2018-08-18 09:52:13', NULL, NULL, NULL, '5000.000000000000'),
(344, 331, 1, 2, '4500.00', 'RUB', '2018-08-24 13:53:00', NULL, NULL, NULL, '4500.000000000000'),
(345, 331, 2, 3, '4000.00', 'RUB', '2018-08-24 13:53:00', NULL, NULL, NULL, '4000.000000000000'),
(346, 330, 1, 2, '3600.00', 'RUB', '2018-08-24 13:53:14', NULL, NULL, NULL, '3600.000000000000'),
(347, 330, 2, 3, '3200.00', 'RUB', '2018-08-24 13:53:14', NULL, NULL, NULL, '3200.000000000000'),
(348, 329, 1, 2, '2700.00', 'RUB', '2018-08-24 13:53:29', NULL, NULL, NULL, '2700.000000000000'),
(349, 329, 2, 3, '2400.00', 'RUB', '2018-08-24 13:53:29', NULL, NULL, NULL, '2400.000000000000'),
(350, 328, 1, 2, '1800.00', 'RUB', '2018-08-24 13:53:50', NULL, NULL, NULL, '1800.000000000000'),
(351, 328, 2, 3, '1600.00', 'RUB', '2018-08-24 13:53:50', NULL, NULL, NULL, '1600.000000000000'),
(352, 327, 1, 2, '900.00', 'RUB', '2018-08-24 13:54:03', NULL, NULL, NULL, '900.000000000000'),
(353, 327, 2, 3, '800.00', 'RUB', '2018-08-24 13:54:03', NULL, NULL, NULL, '800.000000000000'),
(354, 321, 1, 2, '4500.00', 'RUB', '2018-08-24 13:54:20', NULL, NULL, NULL, '4500.000000000000'),
(355, 321, 2, 3, '4000.00', 'RUB', '2018-08-24 13:54:20', NULL, NULL, NULL, '4000.000000000000'),
(356, 320, 1, 2, '3600.00', 'RUB', '2018-08-24 13:54:34', NULL, NULL, NULL, '3600.000000000000'),
(357, 320, 2, 3, '3200.00', 'RUB', '2018-08-24 13:54:34', NULL, NULL, NULL, '3200.000000000000'),
(358, 319, 1, 2, '2700.00', 'RUB', '2018-08-24 13:54:47', NULL, NULL, NULL, '2700.000000000000'),
(359, 319, 2, 3, '2400.00', 'RUB', '2018-08-24 13:54:47', NULL, NULL, NULL, '2400.000000000000'),
(360, 318, 1, 2, '1800.00', 'RUB', '2018-08-24 13:55:00', NULL, NULL, NULL, '1800.000000000000'),
(361, 318, 2, 3, '1600.00', 'RUB', '2018-08-24 13:55:00', NULL, NULL, NULL, '1600.000000000000'),
(362, 317, 1, 2, '900.00', 'RUB', '2018-08-24 13:55:12', NULL, NULL, NULL, '900.000000000000'),
(363, 317, 2, 3, '800.00', 'RUB', '2018-08-24 13:55:12', NULL, NULL, NULL, '800.000000000000'),
(364, 326, 1, 2, '4500.00', 'RUB', '2018-08-24 13:55:38', NULL, NULL, NULL, '4500.000000000000'),
(365, 326, 2, 3, '4000.00', 'RUB', '2018-08-24 13:55:38', NULL, NULL, NULL, '4000.000000000000'),
(366, 325, 1, 2, '3600.00', 'RUB', '2018-08-24 13:55:48', NULL, NULL, NULL, '3600.000000000000'),
(367, 325, 2, 3, '3200.00', 'RUB', '2018-08-24 13:55:48', NULL, NULL, NULL, '3200.000000000000'),
(368, 324, 1, 2, '2700.00', 'RUB', '2018-08-24 13:56:01', NULL, NULL, NULL, '2700.000000000000'),
(369, 324, 2, 3, '2400.00', 'RUB', '2018-08-24 13:56:01', NULL, NULL, NULL, '2400.000000000000'),
(370, 323, 1, 2, '1800.00', 'RUB', '2018-08-24 13:56:17', NULL, NULL, NULL, '1800.000000000000'),
(371, 323, 2, 3, '1600.00', 'RUB', '2018-08-24 13:56:17', NULL, NULL, NULL, '1600.000000000000'),
(372, 322, 1, 2, '900.00', 'RUB', '2018-08-24 13:56:30', NULL, NULL, NULL, '900.000000000000'),
(373, 322, 2, 3, '800.00', 'RUB', '2018-08-24 13:56:30', NULL, NULL, NULL, '800.000000000000'),
(374, 336, 1, 2, '3600.00', 'RUB', '2018-08-24 13:56:49', NULL, NULL, NULL, '3600.000000000000'),
(375, 336, 2, 3, '3200.00', 'RUB', '2018-08-24 13:56:49', NULL, NULL, NULL, '3200.000000000000'),
(376, 335, 1, 2, '3600.00', 'RUB', '2018-08-24 13:57:00', NULL, NULL, NULL, '3600.000000000000'),
(377, 335, 2, 3, '3200.00', 'RUB', '2018-08-24 13:57:00', NULL, NULL, NULL, '3200.000000000000'),
(378, 334, 1, 2, '2700.00', 'RUB', '2018-08-24 13:57:13', NULL, NULL, NULL, '2700.000000000000'),
(379, 334, 2, 3, '2400.00', 'RUB', '2018-08-24 13:57:13', NULL, NULL, NULL, '2400.000000000000'),
(380, 333, 1, 2, '1800.00', 'RUB', '2018-08-24 13:57:25', NULL, NULL, NULL, '1800.000000000000'),
(381, 333, 2, 3, '1600.00', 'RUB', '2018-08-24 13:57:25', NULL, NULL, NULL, '1600.000000000000'),
(382, 332, 1, 2, '900.00', 'RUB', '2018-08-24 13:57:37', NULL, NULL, NULL, '900.000000000000'),
(383, 332, 2, 3, '800.00', 'RUB', '2018-08-24 13:57:37', NULL, NULL, NULL, '800.000000000000'),
(384, 341, 1, 2, '4500.00', 'RUB', '2018-08-24 13:57:56', NULL, NULL, NULL, '4500.000000000000'),
(385, 341, 2, 3, '4000.00', 'RUB', '2018-08-24 13:57:56', NULL, NULL, NULL, '4000.000000000000'),
(386, 340, 1, 2, '3600.00', 'RUB', '2018-08-24 13:58:09', NULL, NULL, NULL, '3600.000000000000'),
(387, 340, 2, 3, '3200.00', 'RUB', '2018-08-24 13:58:09', NULL, NULL, NULL, '3200.000000000000'),
(388, 339, 1, 2, '2700.00', 'RUB', '2018-08-24 13:58:23', NULL, NULL, NULL, '2700.000000000000'),
(389, 339, 2, 3, '2400.00', 'RUB', '2018-08-24 13:58:23', NULL, NULL, NULL, '2400.000000000000'),
(390, 338, 1, 2, '900.00', 'RUB', '2018-08-24 13:58:35', NULL, NULL, NULL, '900.000000000000'),
(391, 338, 2, 3, '800.00', 'RUB', '2018-08-24 13:58:35', NULL, NULL, NULL, '800.000000000000'),
(392, 337, 1, 2, '900.00', 'RUB', '2018-08-24 13:58:47', NULL, NULL, NULL, '900.000000000000'),
(393, 337, 2, 3, '800.00', 'RUB', '2018-08-24 13:58:47', NULL, NULL, NULL, '800.000000000000'),
(394, 346, 1, 2, '4500.00', 'RUB', '2018-08-24 13:59:02', NULL, NULL, NULL, '4500.000000000000'),
(395, 346, 2, 3, '4000.00', 'RUB', '2018-08-24 13:59:02', NULL, NULL, NULL, '4000.000000000000'),
(396, 345, 1, 2, '3600.00', 'RUB', '2018-08-24 13:59:14', NULL, NULL, NULL, '3600.000000000000'),
(397, 345, 2, 3, '3200.00', 'RUB', '2018-08-24 13:59:14', NULL, NULL, NULL, '3200.000000000000'),
(398, 344, 1, 2, '2700.00', 'RUB', '2018-08-24 13:59:27', NULL, NULL, NULL, '2700.000000000000'),
(399, 344, 2, 3, '2400.00', 'RUB', '2018-08-24 13:59:27', NULL, NULL, NULL, '2400.000000000000'),
(400, 343, 1, 2, '1800.00', 'RUB', '2018-08-24 13:59:40', NULL, NULL, NULL, '1800.000000000000'),
(401, 343, 2, 3, '1600.00', 'RUB', '2018-08-24 13:59:40', NULL, NULL, NULL, '1600.000000000000'),
(402, 342, 1, 2, '900.00', 'RUB', '2018-08-24 13:59:59', NULL, NULL, NULL, '900.000000000000'),
(403, 342, 2, 3, '800.00', 'RUB', '2018-08-24 13:59:59', NULL, NULL, NULL, '800.000000000000');
--
-- Индексы таблицы `b_catalog_price`
--
ALTER TABLE `b_catalog_price`
ADD KEY `IXS_CAT_PRICE_PID` (`PRODUCT_ID`,`CATALOG_GROUP_ID`),
ADD KEY `IXS_CAT_PRICE_GID` (`CATALOG_GROUP_ID`),
ADD KEY `IXS_CAT_PRICE_SCALE` (`PRICE_SCALE`);
  • ID — уникальный индентификатор
  • PRODUCT_ID — идентификатор товара
  • EXTRA_ID — идентификатор наценки
  • CATALOG_GROUP_ID — идентификатор типа цен
  • PRICE — цена
  • CURRENCY — валюта
--
-- Структура таблицы `b_catalog_extra`
--
CREATE TABLE `b_catalog_extra` (
`ID` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`NAME` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`PERCENTAGE` decimal(18,2) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
--
-- Дамп данных таблицы `b_catalog_extra`
--
INSERT INTO `b_catalog_extra` (`ID`, `NAME`, `PERCENTAGE`) VALUES
(1, 'Постоянный покупатель', '-10.00'),
(2, 'Оптовый покупатель', '-20.00');

Поиск:
CMS • Web-разработка • Битрикс • Интернет магазин • Каталог товаров • Наценки • Пользователь • Права доступа • Типы цен • Настройка

На сайте установлен Bitrix, редакция «Малый бизнес», устанавливался из официального дистрибутива. По умолчанию присутствует 3 типа цен (что странно: насколько я знаю, в Малом бизнесе доступен только один тип): Базовая, Оптовая и Розничная. При попытке отредактировать Базовую цену, Bitrix выдает ошибку: «Данный функционал не входит в вашу редакцию продукта». Кто-нибудь сталкивался?


  • Вопрос задан

    более трёх лет назад

  • 229 просмотров

Просмотров: 15530

Достаточно часто, при создании сайта на битрикс, можно столкнуться с такой проблемой: на сайте имеется несколько групп оптовых покупателей, для которых заведены определенные типы цен. И есть розничные цены. Если оптовик заходит под своей учеткой-то он видет оба типа цен, хотя и покупает по своей. Давайте скроем от него розничную цену, что бы не мешалась

Создаем группы и выставляем права на цены

Сначала создаем нужные группы оптовиков, для этого проходим в Администрирование-настройки-Пользователи-Группы пользователей и нажимаем «Добавить группу»

Создаем группы с помощью пошагового мастера, на данном этапе нужно только вписать название группы и символьный индетификатор на латинице. Остальные настройки можно не трогать, они не относятся к теме данной записки.

Типы цен создаются тут: Администрирование- Магазин- Настройки-Типы цен

По умолчанию, у вас всегда будет как минимум один тип цены, как правило он называется «Розничные» или «Интернет цена»- по ней производится покупка и оформление товаров по умолчанию. И она всегда доступна для всех пользователей, в том числе не авторизованных.

Создаем свои типы цен. Самое главное тут, это вписать название цены и выставить права доступа. На скриншоте: Цена называется «Для выгрузки на сайт Казахстан» и ее ID = «6» и доступна на просмотр и покупку только для пользователей находящихся в группах с ID 8 и 9.

Вот тут и начинается диллема

Если посмотрим на каталог товаров как пользователь из группы 8, авторизовавшись от его имени, то увидем две цены в каталоге. Свою, на которую разрешен просмотр и покупка и «Розничную»- так как мы являемся «Все пользователи в том числе не авторизованные»

Что бы скрыть розничную цену (как вариант оформить ее как-то иначе или задвинуть в другой угол карточки товара). Можно воспользоватяся API битрикс, на проверку группы текущего авторизованного пользователя пользователя.

В том месте, где в шаблоне каталога выводятся цены, размещаем вот такой код (подсказки по коду прямо в нем):

<?foreach($arElement["PRICES"] as $code=>$arPrice):
$arGroupAvalaible = array(8,9); // массив групп, которые в которых нужно проверить доступность пользователя
$arGroups = CUser::GetUserGroup($USER->GetID()); // массив групп, в которых состоит пользователь
$result_intersect = array_intersect($arGroupAvalaible, $arGroups);// далее проверяем, если пользователь вошёл хотя бы в одну из групп
if(!empty($result_intersect)){
	if ($arPrice["PRICE_ID"] == "6") //Показываем ему тип цены с ID-6 (и только ее){
		echo $arPrice["VALUE"].' руб.';
	}
}else{
	if($arPrice["PRICE_ID"] == "3") { //Показываем цену с ID-3 (в моем случае розничная)
	{
		echo $arPrice["VALUE"].' руб.';
	}
}
endforeach;?>⁠

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

Мои видео на Boosty:

Boosty

Ваш баннер вместо этой рекламы: 15 000 руб/мес. Размещается во всем блоге, форуме, видеоуроках и разделе с макетами.

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

Лицензии 1С — Битрикс:

Рассмотрим как реализуется функция торговли на сайтах работающих на разных лицензиях.

Радакции «Старт», «Стандарт»: Есть возможность заказа услуги через форму обратной связи. Покупатель заполняет форму, менеджер связывается с покупателем посредством почты, телефонного звонка.

«Малый бизнес»: Интернет-магазин для розничной торговли  с корзиной, личным кабинетом, оформлением заказ. 

«Бизнес»: Интернет-магазин с основными функциями магазина на «малом бизнесе»  а так же:

+ Множество типов цен. Интернет-магазин может работать на разные города и страны, с разными видами валют и поставками.

+ Многоскладовость. Возможность реализации множества точек самовывоза и складов.

+ Накопительные скидки. Специальная программа лояльности для покупателей: скидки новым покупателям и накопительная дисконтная программа.

Для функционирования любого магазина необходимо настраивать цены, с которыми он будет работать.

Типы цен — типы цен товара. Например,базовая, закупочная, розничная, оптовая, цена за эксклюзивную покупку, VIP-цена и т.д.

Рассмотрим типы цен:

Базовая цена – это особый тип цены, который используется для формирования (рассчета) остальных типов цен.

Базовая цена – основа для расчетов остальных цен. Этот тип должен присутствовать обязательно!

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

Розничная цена — цена доступная в магазине по умолчанию, причем покупать товары по этой цене могут все посетители сайта.

Оптовая цена — по которой могут покупать только оптовые покупатели. Цена этого типа рассчитываться автоматически с учетом наценки (%), которая создается на базовую цену.


Понравилась статья? Поделить с друзьями:
  • Ошибка навигатора текст витя классик
  • Ошибка на этапе установки safe os
  • Ошибка на частотнике al32
  • Ошибка на частотнике al29
  • Ошибка на частотнике 0l2