Jump to content

Две цены для зарегистрированных и обычных клиентов


Recommended Posts

Привет друзья!

Решил сделать очередной метод "две цены", то есть 1-ю цену розничную видит просто зашедший клиент, в 2-ю опт цену видит зарегистрированный.

 

добавим в Variants.php в ф-ции get_variants и get_variant 

 v.price_2

в БД также сделаем price_2

 

далее в api/Cart.php после

$cart->purchases[] = $purchase;

добавим:

if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id'])))
{
   $cart->total_price += $item->variant->price_2*$item->amount;
}
else
{
   $cart->total_price += $item->variant->price*$item->amount;
}

в Orders.php в ф-цию update_total_price делаем по аналогии 

 

в шаблоне дизайна где цены добавим

		{if $user}
			{$purchase->variant->price_2|convert} {$currency->sign|escape}
		{else}
			{$purchase->variant->price|convert} {$currency->sign|escape}
		{/if}

Готово! Цена выводится, заказ принимается.

 

 

P.S.

Подскажите пожалуйста, если создать группу "ОПТ" id которой - id2

Что нужно в api/Cart.php 

вместо 

if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id'])))

чтобы вывести группу ИД которой 2 ?

Edited by n1c
Link to post
Share on other sites

 

я видел эти темы, но в них нет того что я спрашивал.

как вывести в шаблоне {if $user->group_id == 2} это я знаю

а мне нужно:

 

Что нужно в api/Cart.php 

вместо 

if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id'])))

чтобы вывести группу ИД которой 2 ?

Link to post
Share on other sites

Смотря для чего Вам это нужно.

Ну вот я сообщу Вам куда вставить и что дальше то?

 

форум для того чтобы делиться и помогать.

я начал реализацию, но появились трудности в одной строке, я попросил помощи на форуме, вы сказали А своим кодом, но Б нужно вытягивать чтоли?

Link to post
Share on other sites

форум для того чтобы делиться и помогать.

я начал реализацию, но появились трудности в одной строке, я попросил помощи на форуме, вы сказали А своим кодом, но Б нужно вытягивать чтоли?

Вам лучше не стоит делать что-то дальше, Вы ведь даже не понимаете что делаете.
Link to post
Share on other sites

Друзья, есть кто знает что нужно прописать?

if(isset($_SESSION['user_id']) && $group = $this->users->get_group(intval(2)))

выводит цену для пользователей которые залогинены :angry:

Edited by n1c
Link to post
Share on other sites

ЧТО ЗА ИДИОТИЗМ??????????

 

чтобы вывести группу ИД которой 2 ?

Куда вывести?

В каком виде?

Какое отношение ГРУППА имеет к цене????

Полный бред...

Если напишете, ЧТО именно надо - получите ответ.

А подобным говном не надо форум засорять))



И api/Cart.php цену НИКУДА НЕ ВЫВОДИТ

В этой функции вообще нет вывода

Link to post
Share on other sites

ЧТО ЗА ИДИОТИЗМ??????????

Куда вывести?

В каком виде?

Какое отношение ГРУППА имеет к цене????

Полный бред...

Если напишете, ЧТО именно надо - получите ответ.

А подобным говном не надо форум засорять))

 

И api/Cart.php цену НИКУДА НЕ ВЫВОДИТ

В этой функции вообще нет вывода

 

еще раз повторюсь:

для того чтобы вывести в шаблоне нужно:

{if $user->group_id == 2}
  цена партнера
{else}
  цена розница
{/if}

тут вопросов нет.

 

в api/Cart.php уже есть (с мелким изменением):

				foreach($items as $variant_id=>$item)
				{	
					$purchase = null;
					if(!empty($products[$item->variant->product_id]))
					{
						$purchase = new stdClass();
						$purchase->product = $products[$item->variant->product_id];						
						$purchase->variant = $item->variant;
						$purchase->amount = $item->amount;

						$cart->purchases[] = $purchase;

						if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id'])))
						{
							$cart->total_price += $item->variant->price_2*$item->amount;
						}
						else
						{
							$cart->total_price += $item->variant->price*$item->amount;
						}
						
						$cart->total_products += $item->amount;
						
					}
				}

вот я и спрашиваю на что нужно заменить if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id']))) чтобы в шаблоне корзины total_price считал цену для пользователей которые входят во вторую группу

Link to post
Share on other sites

Может, Вам надо совсем не то, что Вы пишете, а чтобы в api/Cart.php для покупателей группы ID=2 считалось на основе цены price_2, а в прочих случаях на основе стандартной цены price ?

 

Если так, то пробуйте
if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id'])) && $user->group_id==2)

Link to post
Share on other sites

Может, Вам надо совсем не то, что Вы пишете, а чтобы в api/Cart.php для покупателей группы ID=2 считалось на основе цены price_2, а в прочих случаях на основе стандартной цены price ?

 

Если так, то пробуйте

if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id'])) && $user->group_id==2)

 

да именно так и надо) в коде ведь это видно)

попробовал ваше решение, но увы....цена выводится стандартная для всех( :(

Link to post
Share on other sites

да именно так и надо) в коде ведь это видно)

попробовал ваше решение, но увы....цена выводится стандартная для всех( :(

 

"цена выводится стандартная для всех" - очередная Ваша небрежная фраза. Гадайте, ребята, что ТС накодил и на какой странице и в каком месте у него что не так - занятие может быть долгим и увлекательным...

 

Пока что с Вами ситуация в виде "они сами не знают, что они хочут"...

 

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

http://forum.simplacms.ru/topic/8602-%D0%B2%D0%B2%D0%BE%D0%B4-%D1%86%D0%B5%D0%BD-%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D0%BE%D0%B2-%D0%B2-%D0%BB%D1%8E%D0%B1%D0%BE%D0%B9-%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%BE%D0%B9-%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%B5%D0%BF%D0%BE%D1%81%D1%82%D0%B0/

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

 

И есть очень старая тема

http://forum.simplacms.ru/topic/4153-%D1%80%D0%B0%D0%B7%D0%B1%D0%B8%D0%B2%D0%BA%D0%B0-%D0%BF%D0%BE-%D1%86%D0%B5%D0%BD%D0%B0%D0%BC-%D0%B8-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F%D0%BC-%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%D0%BC/

Там довольно хорошо детально расписывается решение очень близкой задачи. А Вы велосипед изобретаете...

Link to post
Share on other sites

"цена выводится стандартная для всех" - очередная Ваша небрежная фраза. Гадайте, ребята, что ТС накодил и на какой странице и в каком месте у него что не так - занятие может быть долгим и увлекательным...

 

Пока что с Вами ситуация в виде "они сами не знают, что они хочут"...

 

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

http://forum.simplacms.ru/topic/8602-%D0%B2%D0%B2%D0%BE%D0%B4-%D1%86%D0%B5%D0%BD-%D0%B2%D0%B0%D1%80%D0%B8%D0%B0%D0%BD%D1%82%D0%BE%D0%B2-%D0%B2-%D0%BB%D1%8E%D0%B1%D0%BE%D0%B9-%D1%83%D0%B4%D0%BE%D0%B1%D0%BD%D0%BE%D0%B9-%D0%B2%D0%B0%D0%BB%D1%8E%D1%82%D0%B5%D0%BF%D0%BE%D1%81%D1%82%D0%B0/

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

 

И есть очень старая тема

http://forum.simplacms.ru/topic/4153-%D1%80%D0%B0%D0%B7%D0%B1%D0%B8%D0%B2%D0%BA%D0%B0-%D0%BF%D0%BE-%D1%86%D0%B5%D0%BD%D0%B0%D0%BC-%D0%B8-%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F%D0%BC-%D0%BF%D0%BE%D0%BA%D1%83%D0%BF%D0%B0%D1%82%D0%B5%D0%BB%D1%8F%D0%BC/

Там довольно хорошо детально расписывается решение очень близкой задачи. А Вы велосипед изобретаете...

 

 

"цена выводится стандартная для всех"

Имею ввиду что выводится цена как для розничного покупателя (не зависимо входит человек во вторую группу, или нет).

Мое решение выглядит проще чем те что есть (не нужно много файлов править), вот и все :)  + в других решениях не затрагивается TOTAL_PRICE, то есть просто выводит цену, не меняя ее в ИТОГОвой цене корзины и заказа

Edited by n1c
Link to post
Share on other sites

Вот как раз ТВОЯ говноподелка и не учитывает заказа и вывода цены пользователю

А существующее решение учитывает ВСЕ

Если бы ты не сношал людям моск а попробовал ПОСТАВИТЬ и ПРОВЕРИТЬ - ты бы в этом убедился...

Link to post
Share on other sites

Вот как раз ТВОЯ говноподелка и не учитывает заказа и вывода цены пользователю

А существующее решение учитывает ВСЕ

Если бы ты не сношал людям моск а попробовал ПОСТАВИТЬ и ПРОВЕРИТЬ - ты бы в этом убедился...

перед тем как писать, что оно не до конца работает я проверил! 

даже если бы я не пробовал другое дополнение, чем плохо, что люди стараются пробовать другие решения???? 

форум на то и форум чтобы спрашивать и пр.

Edited by n1c
Link to post
Share on other sites

Имею ввиду что выводится цена как для розничного покупателя (не зависимо входит человек во вторую группу, или нет).

То, что Вы имеете в виду, надо не утаивать, а сообщать ТОЧНО и ПОНЯТНО. В данном случае неизвестно, ГДЕ, НА КАКОЙ СТРАНИЦЕ, В КАКОМ МЕСТЕ неправильно выводится цена. И это, скорее всего, следствие Вашего изобретения, Вы в одном месте вывод изменили, а в другом - нет...

 

Мое решение выглядит проще чем те что есть (не нужно много файлов править), вот и все :) + в других решениях не затрагивается TOTAL_PRICE, то есть просто выводит цену, не меняя ее в ИТОГОвой цене корзины и заказа

 

От решения еще требуется, чтоб оно правильно функционировало на ВСЕХ страницах. А у Вас, как видно, пока выходит по принципу: одно строим, другое ломаем...

 

А решение от WIZARD устроено так, что подставляет нужную цену всего лишь в одном файле, и все прекрасно работает, и не надо менять ни api/cart.php, ни в шаблонах (с чем Вы сейчас мучаетесь), ни в прочих местах...

Link to post
Share on other sites

перед тем как писать, что оно не до конца работает я проверил! 

даже если бы я не пробовал другое дополнение, чем плохо, что люди стараются пробовать другие решения???? 

форум на то и форум чтобы спрашивать и пр.

А ты его под админом проверял? Или нет?

Админу всегда показывается цена обычная))) Сразу видно, что человек код читать не умеет...

Проверять надо в браузере, в котором не залогинен в админку

И тогда все работает на ура. И проверено это все не один десяток раз)))

Link to post
Share on other sites
		// Пользователь, если залогинен
		if(isset($_SESSION['user_id']) && !isset($_SESSION['admin']))
		{
		   $u = $this->users->get_user(intval($_SESSION['user_id']));
		   if($u && $u->enabled)
		   {
		      $user = $u;
			  $group = $this->users->get_group($user->group_id);
			}
		}

&& !isset($_SESSION['admin']

Link to post
Share on other sites

А ты его под админом проверял? Или нет?

Админу всегда показывается цена обычная))) Сразу видно, что человек код читать не умеет...

Проверять надо в браузере, в котором не залогинен в админку

И тогда все работает на ура. И проверено это все не один десяток раз)))

согласен, мой косяк, не досмотрел код (зашел как админ).

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

Link to post
Share on other sites

То, что Вы имеете в виду, надо не утаивать, а сообщать ТОЧНО и ПОНЯТНО. В данном случае неизвестно, ГДЕ, НА КАКОЙ СТРАНИЦЕ, В КАКОМ МЕСТЕ неправильно выводится цена. И это, скорее всего, следствие Вашего изобретения, Вы в одном месте вывод изменили, а в другом - нет...

 

 

От решения еще требуется, чтоб оно правильно функционировало на ВСЕХ страницах. А у Вас, как видно, пока выходит по принципу: одно строим, другое ломаем...

 

А решение от WIZARD устроено так, что подставляет нужную цену всего лишь в одном файле, и все прекрасно работает, и не надо менять ни api/cart.php, ни в шаблонах (с чем Вы сейчас мучаетесь), ни в прочих местах...

 

я не скрываю код, делаю на базовом движке БЕЗ ПРАВОК.

				foreach($items as $variant_id=>$item)
				{	
					$purchase = null;
					if(!empty($products[$item->variant->product_id]))
					{
						$purchase = new stdClass();
						$purchase->product = $products[$item->variant->product_id];						
						$purchase->variant = $item->variant;
						$purchase->amount = $item->amount;

						$cart->purchases[] = $purchase;

						if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id'])) && $user->group_id==2)
						{
							$cart->total_price += $item->variant->price_2*$item->amount;
						}else{
							$cart->total_price += $item->variant->price*$item->amount;
						}
						
						$cart->total_products += $item->amount;
						
					}
				}

по моему мнению проблема в коде if(isset($_SESSION['user_id']) && $user = $this->users->get_user(intval($_SESSION['user_id'])) && $user->group_id==2)  -- это ваш вариант изменения

 

в шаблоне корзины стоит


		{if $group->id == 2}
			{($purchase->variant->price_2*$purchase->amount)|convert} {$currency->sign|escape}
		{else}
			{($purchase->variant->price*$purchase->amount)|convert} {$currency->sign|escape}
		{/if}
		
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...