1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

VM 2.x Сортровка по цене с учетом скидки работает неправильно.

Тема в разделе "Virtuemart", создана пользователем zartsergey, 29 апр 2014.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
  1. zartsergey

    zartsergey Постоялец

    Регистр.:
    1 окт 2013
    Сообщения:
    69
    Симпатии:
    6
    Собственно сабж.

    Скидки делаются руками, так как они не в % , а индивидуальны для каждого товара(не спрашивайте почему так).
    Вот скриншот - http://prntscr.com/3elde0

    Но вот если сортировать по цене, то иной раз вылазит вот что:
    http://prntscr.com/3elfab

    Т.е. оно сортирует по изначальной цене, а хотелось бы то бы по override, если таковая есть.

    Может ест ьу кого готовое решение?
    Или может кто подскажет где эта функция в ВМ? Я запарился уже искать ее.
    Спасибо.
     
  2. Ant_Z

    Ant_Z Создатель

    Регистр.:
    15 дек 2006
    Сообщения:
    29
    Симпатии:
    2
    Попробуйте отредактировать administrator/components/com_virtuemart/models/product.php ( vm версия 2.0.26d )


    Первая правка строка приблизительно 420

    Код:
    case 'product_price':
    //$filters[] = 'p.`virtuemart_product_id` = p.`virtuemart_product_id`';
    $orderBy = ' ORDER BY `ff_final_price`, `product_price` ';

    Вторая правка строка приблизительно 480


    Код:
    $ff_select_price = ' , IF(pp.override, pp.product_override_price, pp.product_price) as ff_final_price ';
    if ($joinLang) {
    $select = ' l.`virtuemart_product_id` FROM `#__virtuemart_products_' . VMLANG . '` as l';
    if ($joinPrice == TRUE) {
    $select = ' l.`virtuemart_product_id` ' . $ff_select_price . '  FROM `#__virtuemart_products_' . VMLANG . '` as l';   
    }
    $joinedTables[] = ' JOIN `#__virtuemart_products` AS p using (`virtuemart_product_id`)';
    }
    else {
    $select = ' p.`virtuemart_product_id` FROM `#__virtuemart_products` as p';
    if ($joinPrice == TRUE) {
    $select = ' p.`virtuemart_product_id` ' . $ff_select_price . ' FROM `#__virtuemart_products` as p';   
    }   
    $joinedTables[] = '';
    }
     
    zartsergey нравится это.
  3. zartsergey

    zartsergey Постоялец

    Регистр.:
    1 окт 2013
    Сообщения:
    69
    Симпатии:
    6
    Теперь все нормально!
    Но, перестала полностью работать сортировка в обратную сторону(от дорогого к дешевому)
     
  4. Евгений96

    Евгений96 Постоялец

    Регистр.:
    29 июн 2014
    Сообщения:
    66
    Симпатии:
    5
    Чтоб сортировка в обратную сторону стала работать надо немного подправить
    1 правка

    Код:
    //$filters[] = 'p.`virtuemart_product_id` = p.`virtuemart_product_id`';
                        $orderBy = ' ORDER BY `product_price` ';
                        $joinPrice = TRUE;
    2 правка
    Код:
    //$selectFindRows = 'SELECT COUNT(*) FROM `#__virtuemart_products` ';
    $ff_select_price = ' , IF(pp.override, pp.product_override_price, pp.product_price) as product_price ';
                if ($joinLang) {
          $select = ' l.`virtuemart_product_id` FROM `#__virtuemart_products_' . VMLANG . '` as l';
       if ($joinPrice == TRUE) {
                    $select = ' l.`virtuemart_product_id` ' . $ff_select_price . '  FROM `#__virtuemart_products_' . VMLANG . '` as l';               
                }
                $joinedTables = ' JOIN `#__virtuemart_products` AS p using (`virtuemart_product_id`)';
            }
      else {
                $select = ' p.`virtuemart_product_id` FROM `#__virtuemart_products` as p';
    if ($joinPrice == TRUE) {
                    $select = ' p.`virtuemart_product_id` ' . $ff_select_price . ' FROM `#__virtuemart_products` as p';              
                }          
    $joinedTables = '';
            }
    
    Версия 2.0.22с
     
    Последнее редактирование модератором: 15 мар 2015