Вывод Оптовой Цены

В данный момент есть розничная цена (для всех клиентов) и оптовая цена (для клиентов в группе опт). По умолчанию в cs-cart выводится или та, или другая цена в зависимости от принадлежности клиента к группе. Но нам необходимо сделать, чтобы для оптовых клиентов выводилась оптовая цена, а ниже розничная цена, чтоы они видели разницу.



В шаблоне, как я понял, назначается текущая цена для группы {assign var=“price” value=“price_$obj_id”}, а вот как еще вывести розничную цену не могу понять.



Может кто знает куда копать?

вывод цены очень важная составляющая, непонятно почему не уделяют внимание … в свое время писал в раздел “идеи”.

ведь глупо показывать клиенту самую большую цену если есть система скидок.

[quote name=‘ALEXsei_’ timestamp=‘1391484219’ post=‘176714’]

вывод цены очень важная составляющая, непонятно почему не уделяют внимание … в свое время писал в раздел “идеи”.

ведь глупо показывать клиенту самую большую цену если есть система скидок.

[/quote]



Почему же не уделяется.

Если использовать оптовые скидки от количества, то цены отображаются в красивой табличке.



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



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

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



Сейчас на цену влияют:

  1. Есть розничная цена и реальная цена на товар - отображение лэйблов, скидки и т.д.
  2. Есть оптовые скидки от количества - отображаются на странице товара.
  3. Есть налоги, которые могут быть как включены в цену так и нет.
  4. Есть модификаторы цены у параметров.
  5. Есть цены для группы пользователей.
  6. Есть промо-акции.



    В 4.х версии есть дополнительный блок для отображения Промо-текста.



    Массив с данными на странице товара содержит очень много информации о товаре. Страница товара и контроллер имеют исчерпывающее количество хуков. Вывести можно всё. Но не нужно всё выводить в демо-магазине или стартовой сборке CS-Cart.

[quote name=‘Alexder’ timestamp=‘1391482992’ post=‘176713’]

В шаблоне, как я понял, назначается текущая цена для группы {assign var=“price” value=“price_$obj_id”}, а вот как еще вывести розничную цену не могу понять.



Может кто знает куда копать?

[/quote]



Скажите какая у Вас версия и скажу :)

[quote name=‘dbazhenov’ timestamp=‘1391495405’ post=‘176723’]

Скажите какая у Вас версия и скажу :)

[/quote]

CS-Cart 4.1.2, спасибо!



У нас просто не фиксированный процент скидки для дилеров, в зависимости от товара может варьироваться от 20 до 70%, поэтому дилерам удобнее видеть их цену, а ниже рекомендуемую розничную. Обычным покупателям соответственно оптовая цена не показывается.

[quote name='Alexder' timestamp='1391497068' post='176725']

CS-Cart 4.1.2, спасибо!



У нас просто не фиксированный процент скидки для дилеров, в зависимости от товара может варьироваться от 20 до 70%, поэтому дилерам удобнее видеть их цену, а ниже рекомендуемую розничную. Обычным покупателям соответственно оптовая цена не показывается.

[/quote]



Отображать нужно обычную цену (для незарегистрированных пользователей)?

Отображать нужно только на странице товара или на страницах списка товаров тоже?

[quote name='dbazhenov' timestamp='1391508185' post='176740']

Отображать нужно обычную цену (для незарегистрированных пользователей)?

Отображать нужно только на странице товара или на страницах списка товаров тоже?

[/quote]

Да, обычную.

Только на странице товара

[quote name='Alexder' timestamp='1391508629' post='176742']

Да, обычную.

Только на странице товара

[/quote]


  1. Создаём новый файл func.php в модулей my_changes:

    /app/addons/my_changes/func.php
  2. Вставляем следующий код. Функцию для получения нужной нам цены.

[CODE]

<?php

if (!defined('BOOTSTRAP')) { die('Access denied'); }

function fn_my_get_clear_price($product_id, $product_price = 0, $usergroup_id = 0)
{
// получаем цены
$prices = db_get_fields("SELECT price FROM ?:product_prices WHERE product_id = ?i AND usergroup_id = ?i", $product_id, $usergroup_id);

if (count($prices) > 1) {
$price = max($prices); // забираем максимальную цену // можно конечно это всё сделать в запросе, но так веселей.
if ($product_price < $price) {
$price = fn_format_price_by_currency($price); // форматируем цену под валюту
return $price;
}
}

return false;
}[/CODE]

3. Отображаем цену в зоне клиента. Находим необходимый нам шаблон. Шаблон детальной страницы товара:
/design/themes/basic/templates/blocks/product_templates/default_template.tpl

4. Получаем нашу цену в переменную с помощью нашей новой функции:
[CODE]
{* если покупатель авторизовался *}

{if $auth.user_id > 0}
{assign var="clear_price" value=$product.product_id|fn_my_get_clear_price:$product.price}
{/if}
{* если цена есть, то отображаем *}
{if $clear_price}

Обычная цена: {$clear_price}


{/if}[/CODE]

Как то так, если быстро.
1 лайк

[quote name=‘dbazhenov’ timestamp=‘1391495342’ post=‘176722’]

Почему же не уделяется.

Если использовать оптовые скидки от количества, то цены отображаются в красивой табличке.

[/quote]



отступление :) наличие представителя в теме, очень хорошее дело.



Нет, вопрос про другую цену … про цену которая везде отображается. В тех же горячих предложениях или на странице раздела каталога. Да пользователь, потом может быть и зайдет и увидит и красивую табличку и дополнительный блок (замечательная штука)… но пока он до этого доходит видит максимальную цену :) Понятно, что именно эта цена участвует в расчетах, от нее никуда не деться … но на общих планах хочется все же чтобы показывалась цена “от”.

К стати расчет цены это отдельная тема … все опции считаются от базовой цены … но не от цен в красивой табличке. если сделать выбор от чего считать опцию был бы почти калькулятор :)

[quote name=‘ALEXsei_’ timestamp=‘1391542490’ post=‘176788’]

Нет, вопрос про другую цену … про цену которая везде отображается. В тех же горячих предложениях или на странице раздела каталога. Да пользователь, потом может быть и зайдет и увидит и красивую табличку и дополнительный блок (замечательная штука)… но пока он до этого доходит видит максимальную цену :) Понятно, что именно эта цена участвует в расчетах, от нее никуда не деться … но на общих планах хочется все же чтобы показывалась цена “от”.

[/quote]


  1. Я как покупатель - против. Я хочу видеть реальную цену, по которой я куплю прямо сейчас, а не таинственную “ОТ”
  2. Вы можете сделать красивый баннер: “Зарегистрируйся - получи скидку!” , как делают топовые магазины. При регистрации покупатель может самостоятельно выбрать группу пользователя, и уже видеть друге цены.
  3. Можно вывести таблицу с оптовыми ценами на страницу каталога.



    [color=#282828][font=arial, verdana, tahoma, sans-serif]К стати расчет цены это отдельная тема ... все опции считаются от базовой цены ... но не от цен в красивой табличке. если сделать выбор от чего считать опцию был бы почти калькулятор[/font][/color]



    [color=#282828][font=arial, verdana, tahoma, sans-serif]Насколько мне известно , процентные модификаторы опций считают от оптовых цен.[/font][/color]

    [color=#282828][font=arial, verdana, tahoma, sans-serif]Факт есть факт: изменение количества на странице товара не запускает пересчёт цены. Однако нужно добавить товар в корзину. Если товар в корзине, изменение количества товара и нажатие кнопки “Пересчитать”, приводит к пересчёту, учитывая модификаторы и оптовые цены.[/font][/color]



    Я лично считаю, что каждый клиент и владелец магазина имеет своё представление как правильно отображать цены, в зависимости от своей стратегии, не получится сделать универсальное решение, которое удовлетворит все запросы.



    К Вашим услугам компании разработчики. Модули на отображение не дорогие.

[quote name='dbazhenov' timestamp='1391517947' post='176758']

  1. Создаём новый файл func.php в модулей my_changes:

    /app/addons/my_changes/func.php
  2. Вставляем следующий код. Функцию для получения нужной нам цены.

[CODE]

<?php

if (!defined('BOOTSTRAP')) { die('Access denied'); }

function fn_my_get_clear_price($product_id, $product_price = 0, $usergroup_id = 0)
{
// получаем цены
$prices = db_get_fields("SELECT price FROM ?:product_prices WHERE product_id = ?i AND usergroup_id = ?i", $product_id, $usergroup_id);

if (count($prices) > 1) {
$price = max($prices); // забираем максимальную цену // можно конечно это всё сделать в запросе, но так веселей.
if ($product_price < $price) {
$price = fn_format_price_by_currency($price); // форматируем цену под валюту
return $price;
}
}

return false;
}[/CODE]

3. Отображаем цену в зоне клиента. Находим необходимый нам шаблон. Шаблон детальной страницы товара:
/design/themes/basic/templates/blocks/product_templates/default_template.tpl

4. Получаем нашу цену в переменную с помощью нашей новой функции:
[CODE]
{* если покупатель авторизовался *}

{if $auth.user_id > 0}
{assign var="clear_price" value=$product.product_id|fn_my_get_clear_price:$product.price}
{/if}
{* если цена есть, то отображаем *}
{if $clear_price}

Обычная цена: {$clear_price}


{/if}[/CODE]

Как то так, если быстро.
[/quote]

Спасибо за код!
Вроде и все понятно, но никак не могу заставить его работать.
Уже убрал все условия, но все равно после "Обычная цена" ничего не выводит

[quote name=‘Alexder’ timestamp=‘1391588681’ post=‘176819’]

Спасибо за код!

Вроде и все понятно, но никак не могу заставить его работать.

Уже убрал все условия, но все равно после “Обычная цена” ничего не выводит

[/quote]



Модуль my_changes включен ?



Вставьте fn_print_r($price); перед return в функции , чтобы понять, работает функция или нет.

Да, модуль my_changes включен

Видимо функция не отрабатывает, так как ничего не выводит на экран

[quote name=‘Alexder’ timestamp=‘1391590632’ post=‘176821’]

Да, модуль my_changes включен

Видимо функция не отрабатывает, так как ничего не выводит на экран

[/quote]



функция запустится только если в шаблоне есть:

[color=#000000] [/color][color=#666600]{[/color][color=#000000]assign [/color][color=#000088]var[/color][color=#666600]=[/color][color=#008800]“clear_price”[/color][color=#000000] value[/color][color=#666600]=[/color][color=#000000]$product[/color][color=#666600].[/color][color=#000000]product_id[/color][color=#666600]|[/color][color=#000000]fn_my_get_clear_price[/color][color=#666600]:[/color][color=#000000]$product[/color][color=#666600].[/color][color=#000000]price[/color][color=#666600]}[/color][color=#000000] [/color]



Возможно не тот шаблон?



Для проверки правильности шаблона можете распечатать любую переменную , все той же функцией :

{$product|fn_print_r}

Если шаблон правильный, то будет выведен на экран массив $product



Ещё один важный момент. Очистите кэш.

Лучше установите автоматическую очистку кэша: Дизайн - Редактор файлов - [color=#333333]Обновлять кеш автоматически (Слева)[/color]

[quote name='dbazhenov' timestamp='1391584237' post='176813']

  1. Я как покупатель - против. Я хочу видеть реальную цену, по которой я куплю прямо сейчас, а не таинственную “ОТ”
  2. Вы можете сделать красивый баннер: “Зарегистрируйся - получи скидку!” , как делают топовые магазины. При регистрации покупатель может самостоятельно выбрать группу пользователя, и уже видеть друге цены.
  3. Можно вывести таблицу с оптовыми ценами на страницу каталога.



    К Вашим услугам компании разработчики. Модули на отображение не дорогие.

    [/quote]


  1. как покупатель вы видите максимальную цену и даже не докадываетесь, что можно купить рзко по цене ниже … и это по цене ниже тоже будет пряма сечас.
  2. речь идет не про скидку а про показ цены когда формируется “цена от количества” … этот вопрос уже был в обсуждении, есть даже странный аддон, но видимо должна быть более глубокая проработка вопроса.

    3 для каждой позиции? ;)



    да модули это не проблема. мы же говорим не про сторонних разработчиках, а про конкретное решение cs-cart. имхо не конструктивный подход. в четвертой версии до сих пор сохранилась “такая же фигня” которую я также предложил еще в первой версии, ни че, все живы и здоровы :) это же предложение а не требование. возможно все решается одной строчкой кода :)



    про процентные модификаторы, я посмотрю т к признаюсь несколько запутался там … и у меня запало, что с точки зрения логики могло быть по другому :)

[quote name=‘ALEXsei_’ timestamp=‘1391591797’ post=‘176823’]

[color=#282828][font=arial, verdana, tahoma, sans-serif]1) как покупатель вы видите максимальную цену и даже не докадываетесь, что можно купить рзко по цене ниже … и это по цене ниже тоже будет пряма сечас.[/font][/color]

[/quote]



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



Есть цена на товар.

Есть цена конкурентов (рыночная цена), чтобы отобразить лэйбл скидки.

Есть отдельная цена для групп пользователей (Зарегистрированных , Оптовиков, Друзей, Членов клуба и т.д. )

Есть цена со скидкой от количества - отображается в таблице на странице товара и тоже может работать для групп пользователей.



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



По моему, в попытке сделать кому то легче, Вы реально усложняете.



Можно переименовать “Налог” в любой другой инструмент и тоже использовать.


[quote][color=#282828][font=arial, verdana, tahoma, sans-serif]2) речь идет не про скидку а про показ цены когда формируется “цена от количества” … этот вопрос уже был в обсуждении, есть даже странный аддон, но видимо должна быть более глубокая проработка вопроса.[/font][/color]

[color=#282828][font=arial, verdana, tahoma, sans-serif]3 для каждой позиции? [/font][/color] ;)[/quote]



Совершенно верно. Вывести для каждой позиции тоже можно - хуком.

[quote name='dbazhenov' timestamp='1391593121' post='176825']

[color=#282828][font=arial, verdana, tahoma, sans-serif][size=3]речь идет не про скидку а про показ цены …[/size][/font][/color]

[/quote]



Показ - это настолько разносторонняя вещь. На вкус и цвет. Кто то любит минимализм. Кто то считает что всё должно быть на витрине.



Распечатайте массив $product , там намного больше информации чем реально отображено на странице. А есть ещё вкладки, блоки, модули.



Вы же понимаете, что обработка информации и её отображение работают раздельно и настраиваются раздельно.



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



Чаще я вижу, что в карточках товара намного меньше контента и информации чем нужно и можно, даже в топовых магазинах.



Не могли бы Вы привести примеры , скрины элементов которые Вам нравятся и которые Вы бы хотели видеть в своём магазине.

[quote name=‘dbazhenov’ timestamp=‘1391593857’ post=‘176826’]



Не могли бы Вы привести примеры , скрины элементов которые Вам нравятся и которые Вы бы хотели видеть в своём магазине.

[/quote]

я хочу чтобы cs-cart был лучше а не повторял других :) возможно у других этих элементов нет … если бы мне не нравился cs-cart я бы не запускал бы на нем очередной магазин :) что касаемо массивов и т п … я не программист а пользователь :) и результат достигаю по сути штатными настройками … и чем таких настроек больше тем лучше :)

[quote name=‘ALEXsei_’ timestamp=‘1391594829’ post=‘176828’]

я хочу чтобы cs-cart был лучше а не повторял других :) возможно у других этих элементов нет … если бы мне не нравился cs-cart я бы не запускал бы на нем очередной магазин :) что касаемо массивов и т п … я не программист а пользователь :) и результат достигаю по сути штатными настройками … и чем таких настроек больше тем лучше :)

[/quote]



Я понимаю.

Просто нужно придти в готовому решению. Пока всё ходит вокруг, без конкретики. “Нужно улучшать” . Да, мы хотим улучшать.



Какую настройку добавить, что она должна делать, в каких ситуациях.

[quote name=‘dbazhenov’ timestamp=‘1391590957’ post=‘176822’]

функция запустится только если в шаблоне есть:

[color=#666600]{[/color][color=#000000]assign [/color][color=#000088]var[/color][color=#666600]=[/color][color=#008800]“clear_price”[/color][color=#000000] value[/color][color=#666600]=[/color][color=#000000]$product[/color][color=#666600].[/color][color=#000000]product_id[/color][color=#666600]|[/color][color=#000000]fn_my_get_clear_price[/color][color=#666600]:[/color][color=#000000]$product[/color][color=#666600].[/color][color=#000000]price[/color][color=#666600]}[/color][color=#000000] [/color]



Возможно не тот шаблон?



Для проверки правильности шаблона можете распечатать любую переменную , все той же функцией :

{$product|fn_print_r}

Если шаблон правильный, то будет выведен на экран массив $product



Ещё один важный момент. Очистите кэш.

Лучше установите автоматическую очистку кэша: Дизайн - Редактор файлов - [color=#333333]Обновлять кеш автоматически (Слева)[/color]

[/quote]

Кэш очищал, и автоматическое обновление кэша также включено.

Пришлось сократить функцию в func.php до такого вида:

[CODE]

<?php

if (!defined('BOOTSTRAP')) { die('Access denied'); }

function fn_my_get_clear_price($product_id, $usergroup_id = 0)
{

// получаем цены
$prices = db_get_fields("SELECT price FROM ?:product_prices WHERE product_id = ?i AND usergroup_id = ?i", $product_id, $usergroup_id);

$my_price = max($prices); // забираем максимальную цену // можно конечно это всё сделать в запросе, но так веселей.
$my_price = fn_format_price_by_currency($my_price); // форматируем цену под валюту
return $my_price;
}
[/CODE]
Так как с условиями никак не хотела отрабатывать