Ошибка в плагине минишоп

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

<?php

switch ($modx->event->name) {
     case 'msOnBeforeAddToCart': case 'msOnAddToCart': case 'msOnChangeInCart': // Обрабатывать только события добавления в корзину и изменения количества

        $cartArray = $cart->get(); // Массив корзины
        $cartStatus = $cart->status(); // Состояние корзины

        foreach ($cartArray as &$cartProduct) { // Обрабатываем все товары корзины
            if ($product = $modx->getObject('msProduct', $cartProduct['id'])) { // Получаем объект товара по его ID в корзине
            $count = 10;
            if ($count >=1 && $count<=4){
                $tvr = $modx->getObject('modTemplateVarResource', array(
                  'tmplvarid' => 14, //тут ID TV "p1"
                  'contentid' => $product->get('id')
                ));
                    $tv = $tvr->get('value');
                $pr = $tv;
            }if ($count>=5 && $count<=20){
                $tvr = $modx->getObject('modTemplateVarResource', array(
                  'tmplvarid' => 15, //тут ID TV "p2"
                  'contentid' => $product->get('id')
                ));
                    $tv = $tvr->get('value');
                $pr = $tv;
            }if ($count>=21 && $count<=50){
                $tvr = $modx->getObject('modTemplateVarResource', array(
                  'tmplvarid' => 16, //тут ID TV "p2"
                  'contentid' => $product->get('id')
                ));
                    $tv = $tvr->get('value');
                $pr = $tv;
            }if ($count>=51 && $count<=100){
                $tvr = $modx->getObject('modTemplateVarResource', array(
                  'tmplvarid' => 17, //тут ID TV "p3"
                  'contentid' => $product->get('id')
                ));
                    $tv = $tvr->get('value');
                $pr = $tv;
            }if ($count>=101 && $count<=300){
                $tvr = $modx->getObject('modTemplateVarResource', array(
                  'tmplvarid' => 18, //тут ID TV "p4"
                  'contentid' => $product->get('id')
                ));
                    $tv = $tvr->get('value');
                $pr = $tv;
            }if ($count>=301 && $count<=500){
                $tvr = $modx->getObject('modTemplateVarResource', array(
                  'tmplvarid' => 19, //тут ID TV "p5"
                  'contentid' => $product->get('id')
                ));
                    $tv = $tvr->get('value');
                $pr = $tv;
            }if ($count>500){
                $tvr = $modx->getObject('modTemplateVarResource', array(
                  'tmplvarid' => 20, //тут ID TV "p7"
                  'contentid' => $product->get('id')
                ));
                $tv = $tvr->get('value');
                $pr = $tv;
            }

            
                $cartProduct['price'] =  $pr; // Изменение цены
                    $cart->set($cartArray); // Запись нового состояния корзины
            }
            else{
                if ($count >=1 && $count<=4){
                        $tvr = $modx->getObject('modTemplateVarResource', array(
                          'tmplvarid' => 14, //тут ID TV "p1"
                          'contentid' => $product->get('id')
                        ));
                            $tv = $tvr->get('value');
                        $pr = $tv;
                    }if ($count>=5 && $count<=20){
                        $tvr = $modx->getObject('modTemplateVarResource', array(
                          'tmplvarid' => 15, //тут ID TV "p2"
                          'contentid' => $product->get('id')
                        ));
                            $tv = $tvr->get('value');
                        $pr = $tv;
                    }if ($count>=21 && $count<=50){
                        $tvr = $modx->getObject('modTemplateVarResource', array(
                          'tmplvarid' => 16, //тут ID TV "p2"
                          'contentid' => $product->get('id')
                        ));
                            $tv = $tvr->get('value');
                        $pr = $tv;
                    }if ($count>=51 && $count<=100){
                        $tvr = $modx->getObject('modTemplateVarResource', array(
                          'tmplvarid' => 17, //тут ID TV "p3"
                          'contentid' => $product->get('id')
                        ));
                            $tv = $tvr->get('value');
                        $pr = $tv;
                    }if ($count>=101 && $count<=300){
                        $tvr = $modx->getObject('modTemplateVarResource', array(
                          'tmplvarid' => 18, //тут ID TV "p4"
                          'contentid' => $product->get('id')
                        ));
                            $tv = $tvr->get('value');
                        $pr = $tv;
                    }if ($count>=301 && $count<=500){
                        $tvr = $modx->getObject('modTemplateVarResource', array(
                          'tmplvarid' => 19, //тут ID TV "p5"
                          'contentid' => $product->get('id')
                        ));
                            $tv = $tvr->get('value');
                        $pr = $tv;
                    }if ($count>500){
                        $tvr = $modx->getObject('modTemplateVarResource', array(
                          'tmplvarid' => 20, //тут ID TV "p7"
                          'contentid' => $product->get('id')
                        ));
                        $tv = $tvr->get('value');
                        $pr = $tv;
                    }
                    
                    $product->set('price', $pr);
            }
        }

    
        break;

}
Максим
01 ноября 2017, 13:24
modx.pro
1
640
0

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

Максим
02 ноября 2017, 13:09
0
решил в собитиях не указал
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1