Было принято решение ввести новую систему поощрения постоянных покупателей в виде клубных карт и клубной цены.
Для реализации перехода нам нужна редакция Бизнес и несколько видов цен в 1С.
В полном ожидании, хочется, чтобы на сайте все покупатели могли видеть обычную цену и цену для клубней, но покупать по клубной могли бы только клубни.
Это очень ясно и понятно реализовано через группы покупателей. Т.е., когда клубень зарегистрирует свою карту клиента, то он попадет группу клубней….
Все просто! как два байта переслать. Если бы это был не Битрикс.
[PRICES] => Array ( [Интернет-цена] => Array ( [PRICE_ID] => 1 [ID] => 8201 [CAN_ACCESS] => Y [CAN_BUY] => Y [MIN_PRICE] => N [VALUE_NOVAT] => 50 [VALUE_VAT] => 50 [VATRATE_VALUE] => 0 [DISCOUNT_VALUE_NOVAT] => 50 [DISCOUNT_VALUE_VAT] => 50 [DISCOUNT_VATRATE_VALUE] => 0 [CURRENCY] => RUB [ROUND_VALUE_VAT] => 50 [ROUND_VALUE_NOVAT] => 50 [ROUND_VATRATE_VALUE] => 0 [VALUE] => 50 [UNROUND_DISCOUNT_VALUE] => 50 [DISCOUNT_VALUE] => 50 [DISCOUNT_DIFF] => 0 [DISCOUNT_DIFF_PERCENT] => 0 [PRINT_VALUE_NOVAT] => 50 руб. [PRINT_VALUE_VAT] => 50 руб. [PRINT_VATRATE_VALUE] => 0 руб. [PRINT_DISCOUNT_VALUE_NOVAT] => 50 руб. [PRINT_DISCOUNT_VALUE_VAT] => 50 руб. [PRINT_DISCOUNT_VATRATE_VALUE] => 0 руб. [PRINT_VALUE] => 50 руб. [PRINT_DISCOUNT_VALUE] => 50 руб. [PRINT_DISCOUNT_DIFF] => 0 руб. ) [Клубная цена] => Array ( [PRICE_ID] => 2 [ID] => 192850 [CAN_ACCESS] => Y [CAN_BUY] => N [MIN_PRICE] => Y [VALUE_NOVAT] => 40 [VALUE_VAT] => 40 [VATRATE_VALUE] => 0 [DISCOUNT_VALUE_NOVAT] => 40 [DISCOUNT_VALUE_VAT] => 40 [DISCOUNT_VATRATE_VALUE] => 0 [CURRENCY] => RUB [ROUND_VALUE_VAT] => 40 [ROUND_VALUE_NOVAT] => 40 [ROUND_VATRATE_VALUE] => 0 [VALUE] => 40 [UNROUND_DISCOUNT_VALUE] => 40 [DISCOUNT_VALUE] => 40 [DISCOUNT_DIFF] => 0 [DISCOUNT_DIFF_PERCENT] => 0 [PRINT_VALUE_NOVAT] => 40 руб. [PRINT_VALUE_VAT] => 40 руб. [PRINT_VATRATE_VALUE] => 0 руб. [PRINT_DISCOUNT_VALUE_NOVAT] => 40 руб. [PRINT_DISCOUNT_VALUE_VAT] => 40 руб. [PRINT_DISCOUNT_VATRATE_VALUE] => 0 руб. [PRINT_VALUE] => 40 руб. [PRINT_DISCOUNT_VALUE] => 40 руб. [PRINT_DISCOUNT_DIFF] => 0 руб. ) )
Казалось бы, а что выходит?
Несмотря на то, что CAN_BUY у клубной колонки N, эта цена встает в стоимость товара в карточке, т.к. все, кто CAN_ACCESS=Y видят клубную цену, как предложение покупки, но в корзине, хоть тут счастье, цена стоит интернет-магазина, т.е. верная. Но покупателей мы дезинформируем и на себя накличем вал гневных сообщений и звонков!
Надо решать.
За конечное предложение покупки выступает группа MIN_PRICE, давайте ее и будем трогать.
В result_modifier.php моего шаблона, кстати, он еще версии 1.6 или како-то древней, возможно, что в последней версии шаблона от битры все уже решено, но мы берем и шкодим:
$arResult["MIN_PRICE"]["REAL"]=CCatalogProduct::GetOptimalPrice($arResult["ID"], 1, $USER->GetUserGroupArray(), false); if ($arResult["MIN_PRICE"]["PRICE_ID"]!==$arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["PRICE_TYPE_ID"] && isset($arResult["MIN_PRICE"]["REAL"])){ $arResult["MIN_PRICE"]["PRICE_ID"]=$arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["PRICE_TYPE_ID"]; $arResult["MIN_PRICE"]["VALUE_NOVAT"]=$arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["BASE_PRICE"]; $arResult["MIN_PRICE"]["VALUE_VAT"]=$arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["BASE_PRICE"]; $arResult["MIN_PRICE"]["DISCOUNT_VALUE_NOVAT"]=$arResult["MIN_PRICE"]["REAL"]["DISCOUNT_PRICE"]; $arResult["MIN_PRICE"]["DISCOUNT_VALUE_VAT"]=$arResult["MIN_PRICE"]["REAL"]["DISCOUNT_PRICE"]; $arResult["MIN_PRICE"]["ROUND_VALUE_VAT"]=$arResult["MIN_PRICE"]["REAL"]["DISCOUNT_PRICE"]; $arResult["MIN_PRICE"]["ROUND_VALUE_NOVAT"]=$arResult["MIN_PRICE"]["REAL"]["DISCOUNT_PRICE"]; $arResult["MIN_PRICE"]["VALUE"]=$arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["BASE_PRICE"]; $arResult["MIN_PRICE"]["PRINT_VALUE_NOVAT"]=CCurrencyLang::CurrencyFormat($arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["BASE_PRICE"],$arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["CURRENCY"] ,true); $arResult["MIN_PRICE"]["PRINT_VALUE_VAT"]=CCurrencyLang::CurrencyFormat($arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["BASE_PRICE"], $arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["CURRENCY"],true); $arResult["MIN_PRICE"]["PRINT_VALUE"]=CCurrencyLang::CurrencyFormat($arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["BASE_PRICE"], $arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["CURRENCY"],true); $arResult["MIN_PRICE"]["PRINT_DISCOUNT_VALUE_NOVAT"]=CCurrencyLang::CurrencyFormat($arResult["MIN_PRICE"]["REAL"]["DISCOUNT_PRICE"], $arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["CURRENCY"],true); $arResult["MIN_PRICE"]["PRINT_DISCOUNT_VALUE_VAT"]=CCurrencyLang::CurrencyFormat($arResult["MIN_PRICE"]["REAL"]["DISCOUNT_PRICE"], $arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["CURRENCY"],true); $arResult["MIN_PRICE"]["PRINT_DISCOUNT_VALUE"]=CCurrencyLang::CurrencyFormat($arResult["MIN_PRICE"]["REAL"]["DISCOUNT_PRICE"], $arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["CURRENCY"],true); $arResult["MIN_PRICE"]["UNROUND_DISCOUNT_VALUE"]=$arResult["MIN_PRICE"]["REAL"]["RESULT_PRICE"]["UNROUND_DISCOUNT_PRICE"]; ... }
Где просто перезаполняем раздел MIN_PRICE нужными верными значениями.
Теперь в предложении идет верная цена, минимальная и доступная пользователю цена.