2 цены для товара miniShop2
        Здравствуйте. Возникла необходимость иметь для товара 2 цены розничную и оптовую. Для себя решил price — розничная, old_price — оптовая. Нужно при добавлении товара в корзину или изменении количества в корзине контролировать количество товара, и если количество например больше 100 штук значит оптовая цена, иначе розничная и соответственно пересчитывать корзину. Я так понял надо писать плагины на события добавление товара в корзину и изменение товара в корзине и уже там подставлять нужную цену. Как лучше и проще это организовать в общих чертах? Может кто уже делал такое? Спасибо    
    
    
                                                                                
            Комментарии: 29
                Ну нет, лучше прочитать публикации здесь bezumkin.ru/modx/minishop2/classes/, особенно 2 последние
немного сложновато для первого раза, но зато можно все сделать.
                    немного сложновато для первого раза, но зато можно все сделать.
                Все решил, все работает. Осталось только узнать как в js-скрипте динамично обновлять плейсхолдер [[+price]] для определенного товара в корзине при изменении количества, а то он обновляется только при обновлении страницы.            
                    
                Сергей, а как вы решили проблему? У меня аналогичная ситуация            
                    
                Артём, вы решили аналогичную ситуацию?            
                    
                Tim Yusupov, Артём решил аналогичную ситуацию?            
                    
                on.change при для нажатия на +- в корзине, + on.click на класс кнопок, добавляющих товар в корзину, а дальше — по id корзины проверять для каждой строки товара выполнение условия, и, если выполняется, ставить цену 2, а если нет — цену 1. 
Чтобы не извращаться с поиском «новой цены», можно где-нибудь в невидимом блоке в корзине рядом с основной ценой ставить доп. цену и свитчить их при выполнении условия.
Ну и + все дополнительные места, которые могут повлиять на кол-во товаров, тоже зацепить скриптом.
                    Чтобы не извращаться с поиском «новой цены», можно где-нибудь в невидимом блоке в корзине рядом с основной ценой ставить доп. цену и свитчить их при выполнении условия.
Ну и + все дополнительные места, которые могут повлиять на кол-во товаров, тоже зацепить скриптом.
                Ну проблему с ценой не решил, задолбался копатся во всех этих внутренностях. Думаю это мой последний магазин на MODx.            
                    
                Думаю мой тоже. Ипал я такую поддержку «кому надо, тот найдёт» Какая то гнида установила заказчику сборку MODx Revo+minishop2… Я ЗАДОЛБАЛСЯ уже с этим убожеством под названием магазин! Но больше всего меня бесят эти ушлепочные ответы в виде ссылки на говномануал этого убогого магазина. Если ты кусок ушлепка знаешь как исправить ситуацию ТАК ПОЧЕМУ МАТЬ твою ты не можешь помочь людям? Они что тебя спрашивают, как 2+2 сложить? Им реально нужна помощь и из-за одной строчки кода лопатить весь твой говнокод это извращение чистой воды! Я надеюсь скоро этот сволочной проект загнется нахер, так как аффтар не потрудился даже грамотно написать, как добавить дополнительные поля к товару… для этого нужно ска овладеть профессиональным танцем с бубном, не меньше. А это вообще элементарно должно быть.            
                    <?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 минуты работы. Очень сложно?Важное качество программиста «гуглить», а не просить сделать других его работу. Не умеете — не беритесь.
                Бесплатно всем людям помогать надо?            
                    
                Только за деньги всем помогать надо?            
                    
                Смотря что хочет человек. Помощь словом, куда смотреть и где копать — бесплатно, написать готовое решение под его нужду, что бы он сдал проект — платно. Человек выше явно взял проект, хочет на нем заработать, «просит» (требует) что бы ему все сделали а он получил деньги. Это не правильно в моем понимании, чем могу тем помогаю, но кодить чужие проекты за «спасибо» и то не всегда как-то не комильфо.            
                    
                Странно, в документации miniShop2 ничего нет о нем самом. Я так думаю, что системных событий, для подключения плагина тоже нет, если были бы, то можно было бы подключиться к событию добавления товара в корзину и взаимодействовать с массивом данных. Как мне это представляется. 
Или это глупости)?
            
                    Или это глупости)?
                Вся документация по минишопу на сайте Василия.            
                    
                Есть события для добавления товара, и для получения цены, и даже возможность расширить класс корзины и заменить в нём логику.
Кому нужно — найдёт.
                    Кому нужно — найдёт.
                Да не, я разобрался как все функционирует, сделал как мне надо и все работает. Естественно что и документацию читал и решил что кастомизация класса корзины будет логичнее чем через плагины. Но динамично обновлять цену в плейсхолдере на сайте без переразгурзки страницы то надо копать javascript. А в этом я не очень разбираюсь.            
                    
                Сергей, а вы не додумались как сделать динамическое обновление? а то у меня та же беда            
                    
                Никак не додумался, надоело во всем этом разбираться :( куча времени уходит на полировку всего, не выгодно.            
                    
                dapin, а вы додумались?)            
                    
                Да, я сделал пока сделал проще, поставил банальное обновление страницы location.reload(); при пересчете корзины. Тут есть решение modx.pro/solutions/3942-dynamic-update-of-the-basic-basket/ но оно кривое и не все поля пересчитывает и я пока решил подождать. В ответ хочу спросить вы как то решили вот эту беду vk.cc/3usHFR ??            
                    
                Спасибо за ссылку, видел уже её, попробую реализовать. По второму вопросу – решил использовать old_price, не придумал, как разделять тысячи.            
                    
                беда… у меня то и поля свои и больше двух их(            
                    
                Сергей как вы решили задачу, может поможете? не бесплатно!            
                    
                Честно говоря с miniShop работаю только в крайнем случае, в очень крайнем. Как то я решил задачу, уже не помню, больше года прошло, заказчика устроило. Больше к этому вопросу не возвращался, но я посмотрю, тот сайт работает.            
                    
                Ага, велосипед я тот сделал так.
Для категории товара создал tv переменную optCount — в которой количество товара после которого уже идет оптовая цена. Теперь для каждой категории я могу проставить количество которое уже считается оптовым.
Оптовую цену решил прописать в old_price.
Далее в core/components/minishop2/model/minishop2/mscarthandler.class.php в функциях add() и change() приделал маленький самокатик (например в функции add):
Вероятно оно все неправильно, надо все не так, если покопаться в исходниках минишопа можно сделать все правильно. Но у меня работает и заказчик не жаловался. Вот и все, дальше копаться не хотелось.
                    Для категории товара создал 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; 
         } Вероятно оно все неправильно, надо все не так, если покопаться в исходниках минишопа можно сделать все правильно. Но у меня работает и заказчик не жаловался. Вот и все, дальше копаться не хотелось.
                ССЛЫКА НА СКРИН 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р то цена в ОБЩЕЙ СУММЕ ЗАКАЗА КОРЗИНЫ СЧИТАЕТСЯ ПО ОПТОВЫМ ЦЕНАМ
В СПИСКЕ ТОВАРОВ КОРЗИНЫ ОСТАВЛЯЕМ ЦЕНЫ — ОПТОВЫЕ
КТО МОЖЕТ ПОМОЧЬ С РЕШЕНИЕМ, НЕ БЕСПЛАТНО?: )
                    (модх 2.5.1 и минишоп2 2.4.5-pl)
необходимо сделать возможность добавлять +% к текущей оптовой цене в ОБЩЕЙ СУММЕ ЗАКАЗА КОРЗИНЫ
например: цена оптовая в карточке 1000р если покупатель розничный и делает покупку БЕЗ РЕГИСТРАЦИИ например до 10.000р то к цене в ОБЩЕЙ СУММЕ ЗАКАЗА КОРЗИНЫ добавить +30% ЦЕНА:1300Р
если покупка от 10.000 до 30.000р то к оптовой цене +15%
если покупка выше 30.000р то цена в ОБЩЕЙ СУММЕ ЗАКАЗА КОРЗИНЫ СЧИТАЕТСЯ ПО ОПТОВЫМ ЦЕНАМ
В СПИСКЕ ТОВАРОВ КОРЗИНЫ ОСТАВЛЯЕМ ЦЕНЫ — ОПТОВЫЕ
КТО МОЖЕТ ПОМОЧЬ С РЕШЕНИЕМ, НЕ БЕСПЛАТНО?: )
                Уткин просто устал на воле ходить.
Если продаешь приложение и обещаешь тех.поддержку, то обязан написать, что она платная.
Если не написал-то извини, дружище, это нарушение Закона. Начиная от двойного ценообразования и заканчивая признаками мошенничества.
И никого не будет волновать, что у тебя нет времени.
                    Если продаешь приложение и обещаешь тех.поддержку, то обязан написать, что она платная.
Если не написал-то извини, дружище, это нарушение Закона. Начиная от двойного ценообразования и заканчивая признаками мошенничества.
И никого не будет волновать, что у тебя нет времени.
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.