Сумма товара при включенных опциях Opencart
Здраствуйте! Написал скрипты для анимации пересчета суммы на странице товара, при изменении количества. Но если я выбираю опцию и пытаюсь изменить количество товара, то сумма перестает изменятся. В видео я меняю кол-во товара, но при переключении опции - оно сбрасывается, хотя консоль все нормально выводит, то есть проблема в самой анимации. Видео
код смены кол-ва товара и вызова анимаций
<?php if (!$autocalc_not_mul_qty) { ?>
if (input_quantity > 0) {
option_price *= input_quantity;
main_price *= input_quantity;
special *= input_quantity;
yousave *= input_quantity;
tax *= input_quantity;
}
<?php foreach ($discounts as $discount) { ?>
if (input_quantity >= <?php echo $discount['quantity']; ?>) {
special = <?php echo $discount['price']; ?>;
special *= input_quantity;
yousave = main_price - special;
}<?php } ?>
// Display Main Price
animateMainPrice(main_price);
<?php if ($special) { ?>
console.log("Специальная цена", special)
animateSpecialPrice(special);
animateYousave(yousave);
<?php } ?>
<?php } ?>
}
Одна из анимаций (они все одинковые):
main_price_final = calculate_tax(<?php echo $price_value; ?>);
main_price_start = calculate_tax(<?php echo $price_value; ?>);
main_step = 0;
main_timeout_id = 0;
function animateMainPrice_callback() {
main_price_start += main_step;
if ((main_step > 0) && (main_price_start > main_price_final)){
main_price_start = main_price_final;
} else if ((main_step < 0) && (main_price_start < main_price_final)) {
main_price_start = main_price_final;
} else if (main_step == 0) {
main_price_start = main_price_final;
}
$('.autocalc-product-price').html( price_format(main_price_start) );
if (main_price_start != main_price_final) {
main_timeout_id = setTimeout(animateMainPrice_callback, animate_delay);
}
}
function animateMainPrice(price) {
main_price_start = main_price_final;
main_price_final = price;
main_step = (main_price_final - main_price_start) / 10;
clearTimeout(main_timeout_id);
main_timeout_id = setTimeout(animateMainPrice_callback, animate_delay);
}