Проблема с отображением цен

6 года 7 мес. назад #636 от endersparco
Добрый день.
Уважаемый wedal столкнулся с проблемой при работе с ценами в virtuemart. Как всем известно в настройках есть функция показа цен всем или определенной группе зарегистрированных полоьзователей. Так вот. В настройках виртумарт это значение не менял- то есть цены должны показываться всем, даже не зарегистрированным пользователям, а на деле пользователь не зарегистрировавшись и не выполнив вход не может увидеть цены, ему преддлагается "Позвоните, чтобы уточнить цену".
Если Вы сталкивались с такой проблемой- пожалуйста, направьте- где может быть глюк или галочка поставленная не там.
Вот адрес: iridashop.ru/index.php?option=com_virtuemart&page=shop.browse&category_id=7&Itemid=1
(не сочтите за рекламу)
Вложения:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 7 мес. назад #642 от Wedal
endersparco, такое сообщение появляется когда цены на товары не заданы.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 7 мес. назад #646 от endersparco
В том то и дело, что цены проставлены, но не видны. Если зайти как пользователь на сайт- они появляются.:unsure:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 7 мес. назад #651 от Wedal
endersparco, тогда так:

Вложения:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 7 мес. назад #656 от endersparco
Проверил для точности- все так как у Вас на скрине. Как вариант попробовал убрать галочку "Группа пользователей, которым показывать цены", всё равно проблема остается.
Файл virtuemart.cfg.php :: Доступен для записи

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

аааа... я скоро с ума сойду...:S

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 7 мес. назад - 6 года 7 мес. назад #657 от Tacitus
Помнится, у меня тоже показывало "Позвонить, что бы уточнить цену", но я точно помню, что это было с товарами, к которым просто не ставишь цену. Но у меня была отключена любая регистрация, как joomla, так и в virtuemart!
Попробуй для эксперимента отключить регистрацию...!

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 7 мес. назад - 6 года 7 мес. назад #658 от endersparco
Tacitus попробовал предложенный Вами способ- к сожалению проблема осталась.
С ценами у меня такая ситуация- при добавлении или изменении цены она в общем списке товаров выделяется желтым и указывает цену 0,00, но если зайти для редактирования какого-либо конкретного товара- цена показывается. И если на сайте зайти как пользователь, то цена тоже появляется.
Вот такая вот круговерть.

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 7 мес. назад #663 от Wedal
endersparco, хммм... А в управлении модулями магазина(такой пункт есть в настройках Virtuemart, в списке слева) что-нибудь меняли?

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 7 мес. назад #666 от endersparco
Wedal насколько я помню- изменений там не вносил.
Но на всякий случай снял скрин- может на самом деле там что то не так.


Вчера перенес весь сайт с хостинга на локалку (думал может каким то боком хостинг мешает), но нет- всё так же. Всё таки видимо какая то галочка меня подводит. Но какая...:dry:
Вложения:

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 7 мес. назад #672 от Wedal
endersparco, вроде все правильно.

Тогда остается 2 варианта(больше ничего придумать не могу):

1) Установить на локальном сервере новый Virtuemart с демо-товарами. Проверить, что все работает, а затем поочередно сравнивать его настройки на сайте и на локальном сервере.

2) Вот код, который отвечает за вывод цены в Virtuemart:
function show_price( $product_id, $hide_tax = false ) {
		global $VM_LANG, $CURRENCY_DISPLAY,$vendor_mail;
		$auth = $_SESSION['auth'];
 
		$tpl = new $GLOBALS['VM_THEMECLASS']();
 
		$product_name = htmlentities( $this->get_field($product_id, 'product_name'), ENT_QUOTES );
		$tpl->set( 'product_id', $product_id );
		$tpl->set( 'product_name', $product_name );
		$tpl->set( 'vendor_mail', $vendor_mail );
		$discount_info = $base_price = array();
		$text_including_tax = '';
 
		if( $auth['show_prices'] ) {
			// Get the DISCOUNT AMOUNT
			$discount_info = $this->get_discount( $product_id );
			if( !$discount_info["is_percent"] && $discount_info["amount"] != 0 ) {
				$discount_info["amount"] = $GLOBALS['CURRENCY']->convert($discount_info["amount"]);
			}
			// Get the Price according to the quantity in the Cart
			$price_info = $this->get_price( $product_id );
			$tpl->set( 'price_info', $price_info );
 
			// Get the Base Price of the Product
			$base_price_info = $this->get_price($product_id, true );
			$tpl->set( 'base_price_info', $base_price_info );
			if( $price_info === false ) {
				$price_info = $base_price_info;
			}
			$html = "";
			$undiscounted_price = 0;
			if (isset($price_info["product_price_id"])) {
				if( $base_price_info["product_price"]== $price_info["product_price"] ) {
					$price = $base_price = $GLOBALS['CURRENCY']->convert( $base_price_info["product_price"], $price_info['product_currency'] );
				} else {
					$base_price = $GLOBALS['CURRENCY']->convert( $base_price_info["product_price"], $price_info['product_currency'] );
					$price = $GLOBALS['CURRENCY']->convert( $price_info["product_price"], $price_info['product_currency'] );	
				}
 
				if ($auth["show_price_including_tax"] == 1) {
					$my_taxrate = $this->get_product_taxrate($product_id);
					$base_price += ($my_taxrate * $base_price);
				}
				else {
					$my_taxrate = 0;
				}
				// Calculate discount
				if( !empty($discount_info["amount"])) {
					$undiscounted_price = $base_price;
					switch( $discount_info["is_percent"] ) {
						case 0:
							// If we subtract discounts BEFORE tax
							if( PAYMENT_DISCOUNT_BEFORE == '1' ) {
								// and if our prices are shown with tax
								if( $auth["show_price_including_tax"] == 1) {
									// then we add tax to the (untaxed) discount
									$discount_info['amount'] += ($my_taxrate*$discount_info['amount']);
								} 
								// but if our prices are shown without tax
									// we just leave the (untaxed) discount amount as it is
 
							}
							// But, if we subtract discounts AFTER tax
								// and if our prices are shown with tax
									// we just leave the (untaxed) discount amount as it is
								// but if  prices are shown without tax
									// we just leave the (untaxed) discount amount as it is
									// even though this is not really a good combination of settings
 
							$base_price -= $discount_info["amount"];
							break;
						case 1:
							$base_price *= (100 - $discount_info["amount"])/100;
							break;
					}
				}
				$text_including_tax = "";
				if (!empty($my_taxrate)) {
					$tax = $my_taxrate * 100;
					// only show "including x % tax" when it shall
					// not be hidden
					if( !$hide_tax && $auth["show_price_including_tax"] == 1 && VM_PRICE_SHOW_INCLUDINGTAX) {
						$text_including_tax = $VM_LANG->_('PHPSHOP_INCLUDING_TAX');
						eval ("\$text_including_tax = \"$text_including_tax\";");
					}
				}
 
				// Check if we need to display a Table with all Quantity <=> Price Relationships
				if( $base_price_info["product_has_multiple_prices"] && !$hide_tax ) {
					$db = new ps_DB;
					// Quantity Discount Table
					$q = "SELECT product_price, product_currency, price_quantity_start, price_quantity_end 
							FROM #__{vm}_product_price
				  			WHERE product_id='$product_id' 
				  			AND shopper_group_id='".$auth["shopper_group_id"]."' 
				  			ORDER BY price_quantity_start";
					$db->query( $q );
 
					//         $prices_table = "<table align=\"right\">
					$prices_table = "<table width=\"100%\">
					  <thead><tr class=\"sectiontableheader\">
					  <th>".$VM_LANG->_('PHPSHOP_CART_QUANTITY')."</th>
					  <th>".$VM_LANG->_('PHPSHOP_CART_PRICE')."</th>
					  </tr></thead>
					  <tbody>";
					$i = 1;
					if ($db->num_rows()==0) {
						// get the vendor ID
						$q = "SELECT vendor_id FROM #__{vm}_product WHERE product_id='$product_id'";
						$db->setQuery($q); $db->query();
						$db->next_record();
						$vendor_id = $db->f("vendor_id");
						// get the default shopper group ID
						$q = "SELECT shopper_group_id FROM #__{vm}_shopper_group WHERE `vendor_id`='$vendor_id' AND `default`='1'";
						$db->setQuery($q); $db->query();
						$db->next_record();						
						$default_shopper_group_id = $db->f("shopper_group_id");
						// get the current shopper group discount
						$q = "SELECT * FROM #__{vm}_shopper_group WHERE shopper_group_id=" . $auth["shopper_group_id"];
						$db->setQuery($q); $db->query();
						$db->next_record();
						$shopper_group_discount = $db->f("shopper_group_discount");
						// check for prices in default shopper group
						$q = "SELECT product_price, price_quantity_start, price_quantity_end, product_currency FROM #__{vm}_product_price
							WHERE product_id='$product_id' AND shopper_group_id='".$default_shopper_group_id."' ORDER BY price_quantity_start";
						$db->query( $q );
						while( $db->next_record() ) {
							$prices_table .= "<tr class=\"sectiontableentry$i\"><td>".$db->f("price_quantity_start")." - ".$db->f("price_quantity_end")."</td>";
							$prices_table .= "<td>";
							if (!empty($my_taxrate))
								$prices_table .= $CURRENCY_DISPLAY->getFullValue( ($my_taxrate+1)*$db->f("product_price")*((100-$shopper_group_discount)/100) );
							else
								$prices_table .= $CURRENCY_DISPLAY->getFullValue( $db->f("product_price")*((100-$shopper_group_discount)/100) );
							$prices_table .= "</td></tr>";
							$i == 1 ? $i++ : $i--;
						}
					} else {
						// get the current shopper group discount
						$dbsg = new ps_DB();
						$q = "SELECT * FROM #__{vm}_shopper_group WHERE shopper_group_id=" . $auth["shopper_group_id"];
						$dbsg->setQuery($q);
						 $dbsg->query();
						$dbsg->next_record();
						$shopper_group_discount = $dbsg->f("shopper_group_discount");
						while( $db->next_record() ) {
							$price = $GLOBALS['CURRENCY']->convert( $db->f("product_price"), $db->f("product_currency") );
							$prices_table .= "<tr class=\"sectiontableentry$i\"><td>".$db->f("price_quantity_start")." - ".$db->f("price_quantity_end")."</td>";
							$prices_table .= "<td>";
							if (!empty($my_taxrate)) {
								$prices_table .= $CURRENCY_DISPLAY->getFullValue( ($my_taxrate+1)*$price*((100-$shopper_group_discount)/100) );
							}
							else {
								$prices_table .= $CURRENCY_DISPLAY->getFullValue( $price*((100-$shopper_group_discount)/100) );
							}
							$prices_table .= "</td></tr>";
							$i == 1 ? $i++ : $i--;
						}
					}
					$prices_table .= "</tbody></table>";
					if( @$_REQUEST['page'] != "shop.product_details" ) {
						$html .= vmToolTip( $prices_table );
					}
					else
					$html .= $prices_table;
				}
			}
		}
		$tpl->set( 'discount_info', $discount_info );
		$tpl->set( 'text_including_tax', $text_including_tax );
		$tpl->set( 'undiscounted_price', @$undiscounted_price );
		$tpl->set( 'base_price', $base_price );
        $tpl->set( 'price_table', $html);
        $tpl->set( 'parent_has_children', $this->parent_has_children($product_id));
		return $tpl->fetch( 'common/price.tpl.php');
 
	}

Попробуйте разобраться.
Спасибо сказали: endersparco

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 7 мес. назад #733 от endersparco
Следуя Вашему совету сравнил настройки vm на локалке и в интернете- различий нет.
В коде цеплялся за все, но в нем так же все сходится.
Силы закончились- переустановил vm. Настраиваю заново. :(
Wedal вам отдельное спасибо за помощь!

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.

6 года 2 мес. назад #1857 от angry_ded_mazay
Бьюсь над той же проблемой уже несколько недель:( Поиски решения в сети пока ни к чему не привели... Хотелось бы поинтересоваться у endersparco, помогла ли переустановка vm?

Пожалуйста Войдите или Зарегистрируйтесь, чтобы присоединиться к беседе.


Вверх