Перейти к содержимому


Вывод в категории и описании двух цен - со скидкой и без


  • Вы не можете ответить в тему
Сообщений в теме: 8

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 November 2012 - 09:36 PM

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

Спонсор дополнения - Jeck2000


1. в файле product_brief.tpl.html

1.1.заменяем


{$product_info.PriceWithUnit}


на


{if $product_info.discount_price AND $product_info.PriceWithUnit NE $product_info.discount_price}<s>{$product_info.PriceWithUnit}</s><br>{$product_info.discount_price}{else}{$product_info.PriceWithUnit}{/if}



1.2 в JS-функции GetCurrentCurrency_{$product_info.productID}() заменяем


if ( locationPriceUnit )
document.getElementById('optionPrice_{$product_info.productID}').innerHTML = _sumStr + document.MainForm2_{$product_info.productID}.priceUnit_{$product_info.productID}.value;
else
document.getElementById('optionPrice_{$product_info.productID}').innerHTML = document.MainForm2_{$product_info.productID}.priceUnit_{$product_info.productID}.value + _sumStr;
{literal}


на


discount_percent = {if $product_info.discount_percent}{$product_info.discount_percent}{else}0{/if};
if (discount_percent)
{literal}
{
{/literal}
dsc_sum = new String(_sum*(100-discount_percent)/100);
dsc_sum = _formatPrice( dsc_sum, {$currency_roundval});
if ( locationPriceUnit )
document.getElementById('optionPrice_{$product_info.productID}').innerHTML = '<s>' + _sumStr + document.MainForm2_{$product_info.productID}.priceUnit_{$product_info.productID}.value + '</s><br>' + dsc_sum + document.MainForm2_{$product_info.productID}.priceUnit_{$product_info.productID}.value;
else
document.getElementById('optionPrice_{$product_info.productID}').innerHTML = '<s>' + document.MainForm2_{$product_info.productID}.priceUnit_{$product_info.productID}.value + _sumStr + '</s><br>' + document.MainForm2_{$product_info.productID}.priceUnit_{$product_info.productID}.value + dsc_sum;
{literal}
}
else
{
{/literal}
if ( locationPriceUnit )
document.getElementById('optionPrice_{$product_info.productID}').innerHTML = _sumStr + document.MainForm2_{$product_info.productID}.priceUnit_{$product_info.productID}.value;
else
document.getElementById('optionPrice_{$product_info.productID}').innerHTML = document.MainForm2_{$product_info.productID}.priceUnit_{$product_info.productID}.value + _sumStr;
{literal}
}



2. в файле product_detailed.tpl.html

2.1.заменяем


{$product_info.PriceWithUnit}


на


{if $product_info.discount_price AND $product_info.PriceWithUnit NE $product_info.discount_price}<s>{$product_info.PriceWithUnit}</s><br>{$product_info.discount_price}{else}{$product_info.PriceWithUnit}



2.2 в JS-функции GetCurrentCurrency() заменяем


if ( locationPriceUnit )
document.getElementById('optionPrice').innerHTML = _sumStr + document.MainForm.priceUnit.value;
else
document.getElementById('optionPrice').innerHTML = document.MainForm.priceUnit.value + _sumStr;
{literal}


на


discount_percent = {if $product_info.discount_percent}{$product_info.discount_percent}{else}0{/if};
if (discount_percent)
{literal}
{
dsc_sum = new String(_sum*(100-discount_percent)/100);
dsc_sum = _formatPrice( dsc_sum, {/literal}{$currency_roundval}{literal});
if ( locationPriceUnit )
document.getElementById('optionPrice').innerHTML = '<s>' + _sumStr + document.MainForm.priceUnit.value + '</s><br>' + dsc_sum + document.MainForm.priceUnit.value;
else
document.getElementById('optionPrice').innerHTML = '<s>' + document.MainForm.priceUnit.value + _sumStr + '</s><br>' + document.MainForm.priceUnit.value + dsc_sum;
}
else
{
if ( locationPriceUnit )
document.getElementById('optionPrice').innerHTML = _sumStr + document.MainForm.priceUnit.value;
else
document.getElementById('optionPrice').innerHTML = document.MainForm.priceUnit.value + _sumStr;
}



3. в файле category.php

строку


for($i=0; $i<$cc_products; $i++) $products[$i]["allow_products_comparison"] = $show_comparison;


заменяем на


for($i=0; $i<$cc_products; $i++)
{
$products[$i]["allow_products_comparison"] = $show_comparison;
if (isset($_SESSION["log"]))
{
$resDiscount = dscCalculateDiscount($products[$i]["Price"],$_SESSION["log"]);
$products[$i]["discount_price"] = addUnitToPrice( $resDiscount["rest_current_unit"]);
$products[$i]["discount_percent"]= $resDiscount["discount_percent"];
}
}



4. в файле product_detailed.php

после строки


$product=GetProduct($productID);


вставляем


if (isset($_SESSION["log"]))
{
$resDiscount = dscCalculateDiscount($product["Price"], $_SESSION["log"]);
$product["discount_price"]= addUnitToPrice($resDiscount["rest_current_unit"]);
$product["discount_percent"]= $resDiscount["discount_percent"];
}

  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#2 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 09 November 2012 - 09:54 PM

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


Какое-то описание ниразу не понятное.
Что делает дополнение?

Ведь есть вывод Старой цены - зачеркнутая и Новой цены.
О какой скидке идет речь ? Скидка для группы? или что за скидка?
  • 0

#3 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 November 2012 - 10:08 PM

Ведь есть вывод Старой цены - зачеркнутая и Новой цены.

Примерно так же, только не "старая/новая", а "штатная/персональная". Т.е. та цена, которая будет, если в заказ поместить только один этот товар.

В случае старой/новой выведутся три цены :). Наверное, правильнее и красивее это оформить как "Старая цена:XXX, Новая цена:YYY, Ваша цена: FFF", но тут уж каждый пусть верстает исходя из своего используемого шаблона.

PS. Тебя минимальность переделки смущает, чтоли? :)

PPS. Сейчас что-нибудь более вразумительное напишу в описании :)
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#4 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 09 November 2012 - 11:06 PM

PS. Тебя минимальность переделки смущает, чтоли? :)

Нет я вообще не понимаю в чем суть ))
что такое персональная цена?
что значит если в заказ поместить только один этот товар? эта цена зависит от кол-ва товаров в заказе или что?
  • 0

#5 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 09 November 2012 - 11:21 PM

что такое персональная цена?

Цена на этот товар для этого клиента с учетом групповой скидки (если она есть) и скидки от суммы (если она есть).

что значит если в заказ поместить только один этот товар? эта цена зависит от кол-ва товаров в заказе или что?

Эта (эта!) цена никак не может зависеть от количества товаров в заказе, т.к. рассчитана для случая, когда в заказе один товар и в единичном количестве. Но она может отличаться в бОльшую сторону от конечной цены в реальном заказе, где несколько товаров и/или единиц товара. Другими словами, когда скидка не чисто групповая, а комбинированная, т.е. "бОльшая из двух" либо "суммарная" стоимость единицы товара в общем заказе может получиться меньше, чем стоимость отдельно взятой единицы товара с учетом всех скидок ("персональная цена").
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#6 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 11 November 2012 - 10:20 PM

И тут не без ляпов... Забыл завершающий {/if} в замене. Исправил.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#7 Jeck2000

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 159 сообщений
Репутация: 8
Начинающий
  • ГородСанкт-Петербург

Отправлено 12 November 2012 - 06:47 AM

что такое персональная цена?

Цена на этот товар для этого клиента с учетом групповой скидки (если она есть) и скидки от суммы (если она есть).

что значит если в заказ поместить только один этот товар? эта цена зависит от кол-ва товаров в заказе или что?

Эта (эта!) цена никак не может зависеть от количества товаров в заказе, т.к. рассчитана для случая, когда в заказе один товар и в единичном количестве. Но она может отличаться в бОльшую сторону от конечной цены в реальном заказе, где несколько товаров и/или единиц товара. Другими словами, когда скидка не чисто групповая, а комбинированная, т.е. "бОльшая из двух" либо "суммарная" стоимость единицы товара в общем заказе может получиться меньше, чем стоимость отдельно взятой единицы товара с учетом всех скидок ("персональная цена").


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

Модуль выводит вторую цену товара, которую можно назвать как "Ваша цена". Выводиться она в том случае, если посетитель зашел на свой сайт по своим логином и он включен в группу клиентов с какой-либо скидкой. Предположим установлена система скидок как "Скидка вычисляется как сумма скидки группы пользователя и скидки от суммы заказа", соответственно посетитель являясь участником группы скидок буде видеть вторую стоимость товаров, которая вычисляется, как цена товара изначальная минус скидка по группе покупателя минус скидка в зависимости от общей суммы корзины.
  • 1

#8 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 November 2012 - 07:39 PM

UPDATE: дополнения. Внесены в шапку. Иначе не работало у тех, у кого работала функция GetCurrentCurrency, т.е. кто не ставил мой фильтр :). Исправлено и в фильтре, и тут.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#9 dgimmibos

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 126 сообщений
Репутация: 12
Начинающий

Отправлено 13 March 2013 - 02:13 PM

а как выводить в search_simple.tpl.html
  • 0