2 цены для товара miniShop2

Здравствуйте. Возникла необходимость иметь для товара 2 цены розничную и оптовую. Для себя решил price — розничная, old_price — оптовая. Нужно при добавлении товара в корзину или изменении количества в корзине контролировать количество товара, и если количество например больше 100 штук значит оптовая цена, иначе розничная и соответственно пересчитывать корзину. Я так понял надо писать плагины на события добавление товара в корзину и изменение товара в корзине и уже там подставлять нужную цену. Как лучше и проще это организовать в общих чертах? Может кто уже делал такое? Спасибо
Сергей Росоловский
22 декабря 2014, 20:24
modx.pro
3
7 215
0

Комментарии: 29

Наумов Алексей
23 декабря 2014, 08:56
0
Ну нет, лучше прочитать публикации здесь bezumkin.ru/modx/minishop2/classes/, особенно 2 последние

немного сложновато для первого раза, но зато можно все сделать.
    Михаил
    23 декабря 2014, 09:38
    0
      Сергей Росоловский
      02 января 2015, 19:25
      0
      Все решил, все работает. Осталось только узнать как в js-скрипте динамично обновлять плейсхолдер [[+price]] для определенного товара в корзине при изменении количества, а то он обновляется только при обновлении страницы.
        Артем
        12 января 2015, 05:12
        0
        Сергей, а как вы решили проблему? У меня аналогичная ситуация
          Klike
          14 февраля 2015, 12:09
          0
          Артём, вы решили аналогичную ситуацию?
            Lamobot
            08 ноября 2016, 19:53
            0
            Tim Yusupov, Артём решил аналогичную ситуацию?
          Максим Кузнецов
          12 января 2015, 10:05
          0
          on.change при для нажатия на +- в корзине, + on.click на класс кнопок, добавляющих товар в корзину, а дальше — по id корзины проверять для каждой строки товара выполнение условия, и, если выполняется, ставить цену 2, а если нет — цену 1.

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

          Ну и + все дополнительные места, которые могут повлиять на кол-во товаров, тоже зацепить скриптом.
          Сергей Росоловский
          13 января 2015, 23:57
          +1
          Ну проблему с ценой не решил, задолбался копатся во всех этих внутренностях. Думаю это мой последний магазин на MODx.
            Lamobot
            08 ноября 2016, 19:59
            -4
            Думаю мой тоже. Ипал я такую поддержку «кому надо, тот найдёт» Какая то гнида установила заказчику сборку MODx Revo+minishop2… Я ЗАДОЛБАЛСЯ уже с этим убожеством под названием магазин! Но больше всего меня бесят эти ушлепочные ответы в виде ссылки на говномануал этого убогого магазина. Если ты кусок ушлепка знаешь как исправить ситуацию ТАК ПОЧЕМУ МАТЬ твою ты не можешь помочь людям? Они что тебя спрашивают, как 2+2 сложить? Им реально нужна помощь и из-за одной строчки кода лопатить весь твой говнокод это извращение чистой воды! Я надеюсь скоро этот сволочной проект загнется нахер, так как аффтар не потрудился даже грамотно написать, как добавить дополнительные поля к товару… для этого нужно ска овладеть профессиональным танцем с бубном, не меньше. А это вообще элементарно должно быть.
              but1head
              08 ноября 2016, 20:58
              2
              0
              <?php
              if($modx->event->name != 'msOnGetProductPrice') return;
              
              if($modx->user  && $modx->user->isMember('Wholesaler')){
                  $values = & $modx->event->returnedValues;
                  $resource = $modx->getObject('msProduct', $product->id);
                  $wholesale_price = $resource->getTVValue('price_opt');
                  if($wholesale_price){
                      $values['old_price'] = $values['price'];
                      $values['price'] = $wholesale_price;
                  }
              }
              Элементарная оптовая цена для юзеров в группе «оптовик», сделаная через tv, 3 минуты работы. Очень сложно?
              Важное качество программиста «гуглить», а не просить сделать других его работу. Не умеете — не беритесь.
                Илья Уткин
                08 ноября 2016, 21:44
                0
                Бесплатно всем людям помогать надо?
                  Роман Садоян
                  08 ноября 2016, 22:31
                  0
                  Только за деньги всем помогать надо?
                    but1head
                    08 ноября 2016, 23:36
                    0
                    Смотря что хочет человек. Помощь словом, куда смотреть и где копать — бесплатно, написать готовое решение под его нужду, что бы он сдал проект — платно. Человек выше явно взял проект, хочет на нем заработать, «просит» (требует) что бы ему все сделали а он получил деньги. Это не правильно в моем понимании, чем могу тем помогаю, но кодить чужие проекты за «спасибо» и то не всегда как-то не комильфо.
                Павел Левин
                14 января 2015, 01:26
                0
                Странно, в документации miniShop2 ничего нет о нем самом. Я так думаю, что системных событий, для подключения плагина тоже нет, если были бы, то можно было бы подключиться к событию добавления товара в корзину и взаимодействовать с массивом данных. Как мне это представляется.

                Или это глупости)?

                  Воеводский Михаил
                  14 января 2015, 09:00
                  0
                  Вся документация по минишопу на сайте Василия.
                    Василий Наумкин
                    14 января 2015, 09:22
                    0
                    Есть события для добавления товара, и для получения цены, и даже возможность расширить класс корзины и заменить в нём логику.

                    Кому нужно — найдёт.
                    Сергей Росоловский
                    14 января 2015, 09:24
                    0
                    Да не, я разобрался как все функционирует, сделал как мне надо и все работает. Естественно что и документацию читал и решил что кастомизация класса корзины будет логичнее чем через плагины. Но динамично обновлять цену в плейсхолдере на сайте без переразгурзки страницы то надо копать javascript. А в этом я не очень разбираюсь.
                      dapin
                      07 февраля 2015, 20:11
                      0
                      Сергей, а вы не додумались как сделать динамическое обновление? а то у меня та же беда
                        Сергей Росоловский
                        08 февраля 2015, 12:13
                        0
                        Никак не додумался, надоело во всем этом разбираться :( куча времени уходит на полировку всего, не выгодно.
                          Klike
                          14 февраля 2015, 12:12
                          0
                          dapin, а вы додумались?)
                            dapin
                            20 февраля 2015, 08:55
                            0
                            Да, я сделал пока сделал проще, поставил банальное обновление страницы location.reload(); при пересчете корзины. Тут есть решение modx.pro/solutions/3942-dynamic-update-of-the-basic-basket/ но оно кривое и не все поля пересчитывает и я пока решил подождать. В ответ хочу спросить вы как то решили вот эту беду vk.cc/3usHFR ??
                              Klike
                              20 февраля 2015, 09:45
                              0
                              Спасибо за ссылку, видел уже её, попробую реализовать. По второму вопросу – решил использовать old_price, не придумал, как разделять тысячи.
                                dapin
                                20 февраля 2015, 09:52
                                0
                                беда… у меня то и поля свои и больше двух их(
                          god2016
                          10 ноября 2016, 19:17
                          0
                          Сергей как вы решили задачу, может поможете? не бесплатно!
                            Сергей Росоловский
                            10 ноября 2016, 20:14
                            0
                            Честно говоря с miniShop работаю только в крайнем случае, в очень крайнем. Как то я решил задачу, уже не помню, больше года прошло, заказчика устроило. Больше к этому вопросу не возвращался, но я посмотрю, тот сайт работает.
                              Сергей Росоловский
                              10 ноября 2016, 20:56
                              1
                              0
                              Ага, велосипед я тот сделал так.
                              Для категории товара создал tv переменную optCount — в которой количество товара после которого уже идет оптовая цена. Теперь для каждой категории я могу проставить количество которое уже считается оптовым.
                              Оптовую цену решил прописать в old_price.
                              Далее в core/components/minishop2/model/minishop2/mscarthandler.class.php в функциях add() и change() приделал маленький самокатик (например в функции add):
                              $product1 = $modx->getObject('modResource',$id);
                              	$optcount = $product1->getTVValue('optCount');
                              	$price = $product->getPrice(); 
                              	$old_price = $product1->get('old_price');
                              	$weight = $product->getWeight(); 
                              	$count = $response['data']['count'];
                              	$options = $response['data']['options'];
                                         
                                      if ($count >= $optcount && $old_price > 0) {
                                           $price = $old_price; 
                                       }


                              Вероятно оно все неправильно, надо все не так, если покопаться в исходниках минишопа можно сделать все правильно. Но у меня работает и заказчик не жаловался. Вот и все, дальше копаться не хотелось.
                            god2016
                            10 ноября 2016, 19:01
                            0
                            ССЛЫКА НА СКРИН cloud.mail.ru/public/C8cs/j4Vvh5idi
                            (модх 2.5.1 и минишоп2 2.4.5-pl)
                            необходимо сделать возможность добавлять +% к текущей оптовой цене в ОБЩЕЙ СУММЕ ЗАКАЗА КОРЗИНЫ
                            например: цена оптовая в карточке 1000р если покупатель розничный и делает покупку БЕЗ РЕГИСТРАЦИИ например до 10.000р то к цене в ОБЩЕЙ СУММЕ ЗАКАЗА КОРЗИНЫ добавить +30% ЦЕНА:1300Р
                            если покупка от 10.000 до 30.000р то к оптовой цене +15%
                            если покупка выше 30.000р то цена в ОБЩЕЙ СУММЕ ЗАКАЗА КОРЗИНЫ СЧИТАЕТСЯ ПО ОПТОВЫМ ЦЕНАМ

                            В СПИСКЕ ТОВАРОВ КОРЗИНЫ ОСТАВЛЯЕМ ЦЕНЫ — ОПТОВЫЕ

                            КТО МОЖЕТ ПОМОЧЬ С РЕШЕНИЕМ, НЕ БЕСПЛАТНО?: )
                              Дмитрий
                              Дмитрий
                              09 декабря 2017, 22:44
                              -1
                              Уткин просто устал на воле ходить.

                              Если продаешь приложение и обещаешь тех.поддержку, то обязан написать, что она платная.
                              Если не написал-то извини, дружище, это нарушение Закона. Начиная от двойного ценообразования и заканчивая признаками мошенничества.
                              И никого не будет волновать, что у тебя нет времени.
                                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                                29