Показать сообщение отдельно
  #1 (permalink)  
Старый 23.02.2018, 12:43
Интересующийся
Отправить личное сообщение для Xamelion Посмотреть профиль Найти все сообщения от Xamelion
 
Регистрация: 23.02.2018
Сообщений: 14

Задача: вывод розничной и оптовой цены за еденицу товара и в количестве.
Столкнулся я с задачей в опенкарте что стандартными методами не выдает он цену за 1 товара он начинает ее пересчитывать и выдает полный результат, козалось бы что может бы проще, но что-то пошло не так.

вот код
<div class="sun-roz">
            <h5>розничная цена</h5>
            <p>
                <?php if($special) { ?>
                <strong id="special"><?php print $special; ?></strong>
                <span id="price"><?php print $price; ?></span>
                <sub class="single-price">цена за 1 еденицу - <b><?php print $special; ?></b></sub>
                <?php } else { ?>
                <strong id="price"><?php print $price; ?></strong>
                <sub class="single-price">цена за 1 еденицу - <b><?php print $price; ?></b></sub>
                <?php } ?>
            </p>
        </div>
        <?php if($whole_sale_price) { ?>
        <div class="sun-opt">
            <h5>оптовая цена</h5>
            <p id="whole_sale"><?php print $whole_sale_price; ?></p>
            <sub class="single-price">цена за 1 еденицу - <b><?php print $whole_sale_price; ?></b></sub>
            <?php if(!empty($whole_sale_quantity)) { ?>
            <span>* при заказе от <?php print $whole_sale_quantity; ?> штук</span>
            <?php }?>
            <span>** сумма общих покупок должна превышать <?php print $config_min_ws_value; ?></span>
        </div>
        <?php } ?>

        <div class="quantity">
            <h5>количество</h5>
            <form action="">
                <input min="1" value="1" type="number" name="quantity">
                <input type="hidden" name="product_id" value="<?php echo $product_id; ?>" />
                <input type="hidden" name="total_price" value="" />
                <input type="hidden" name="total_special" value="" />
                <input type="hidden" name="total_whole_sale" value="" />
                <input type="hidden" name="no_image" value="<?php echo $popup; ?>" />


и к нему написан js такой
var priceHandler = {
        price: '',
        special: '',
        whole_sale: '',
        quantity: '',
        init: function(){
            var price = $('#price').text();
            price = price.split(' ');
            price = price[0];
            this.price = Math.round(price * 100) / 100;
            var special = $('#special').text();
            special = special.split(' ');
            special = special[0];
            this.special = Math.round(special * 100) / 100;
            var whole_sale = $('#whole_sale').text();
            whole_sale = whole_sale.split(' ');
            whole_sale = whole_sale[0];
            this.whole_sale = Math.round(whole_sale * 100) / 100;
            this.quantity = $('#product input[name=quantity]').val();
            this.update();
            $('input[name=total_price]').val(this.price);
            $('input[name=total_special]').val(this.special);
            $('input[name=total_whole_sale]').val(this.whole_sale);
        },
        update: function(){
            this.quantity = $('#product input[name=quantity]').val();
            var product_price = priceHandler.price * priceHandler.quantity;
            var product_special = priceHandler.special * priceHandler.quantity;
            var product_whole_sale = priceHandler.whole_sale * priceHandler.quantity;
            $('#product select[name^=\'option\'] option:selected').each(function(){
                var option_price_prefix = $(this).data('price-prefix');
                var option_price = $(this).data('price');
                console.log(String(option_price));
                option_price = String(option_price).split(' ');
                option_price = option_price[0];
                if(option_price && option_price_prefix) {
                    if(option_price_prefix == '+') {
                        product_price += option_price * priceHandler.quantity;
                        product_special += option_price * priceHandler.quantity;
                        product_whole_sale += option_price * priceHandler.quantity;
                    } else if(option_price_prefix == '-') {
                        product_price -= option_price * priceHandler.quantity;
                        product_special -= option_price * priceHandler.quantity;
                        product_whole_sale -= option_price * priceHandler.quantity;
                    }
                }
            });
            product_price = Math.round(product_price * 100) / 100;
            product_special = Math.round(product_special * 100) / 100;
            product_whole_sale = Math.round(product_whole_sale * 100) / 100;

            var price_text = $('#price').text();
            var price_data = price_text.split(' ');
            price_data[0] = product_price;
            price_text = price_data.join(' ');
            $('#price').text(price_text);
            /*$('.sun-roz .single-price b').text(price_text);*/
            $('input[name=total_price]').val(product_price);

            var special_text = $('#special').text();
            var special_data = special_text.split(' ');
            special_data[0] = product_special;
            special_text = special_data.join(' ');
            $('#special').text(special_text);
            $('input[name=total_special]').val(product_special);

            var whole_sale_text = $('#whole_sale').text();
            var whole_sale_data = whole_sale_text.split(' ');
            whole_sale_data[0] = product_whole_sale;
            whole_sale_text = whole_sale_data.join(' ');
            $('#whole_sale').text(whole_sale_text);
            /* $('.sun-opt .single-price b').text(whole_sale_text); */
            $('input[name=total_whole_sale]').val(product_whole_sale);
        }
    };


и скрины кину чтоб понятней было на примере.
https://prnt.sc/iig3nb
https://prnt.sc/iig3wb
Ответить с цитированием