Автор Тема: Влияние на цену  (Прочитано 1060 раз)

09 Октябрь 2013, 21:28:50
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В комбинациях есть такая штука как влияние на цену. Вот там атрибут может увеличивать цену НА... Скажите где в каком файле что подправить, чтоб получилось не НА, а В. То есть + заменить на *
Спасибо.
10 Октябрь 2013, 10:56:59
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
В AdminProductsController.php и admin-products.js нужно менять. Найти где сохраняется 'attribute_price_impact' и сменить. 
10 Октябрь 2013, 11:12:14
Ответ #2
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо, сейчас поищу.
10 Октябрь 2013, 11:41:13
Ответ #3
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В js файле есть такие строчки на что-то похожие
getE('attribute_price').value = ps_round(Math.abs(price_impact), 2);
getE('attribute_priceTEReal').value = Math.abs(price_impact);
else if (price_impact > 0)
{
getE('attribute_price_impact').options[getE('attribute_price_impact').selectedIndex].value = 1;
getE('attribute_price_impact').selectedIndex = 1;
}
this.init_elems = function()
{
var impact = getE('attribute_price_impact');
var impact2 = getE('attribute_weight_impact');
var elem = getE('product_att_list');

if (elem.length)
for (i = elem.length - 1; i >= 0; i--)
if (elem[i])
elem.remove(i);

$('input[name="id_image_attr[]"]').each(function (){
$(this).attr('checked', false);
});

$('#attribute_default').attr('checked', false);

getE('attribute_price_impact').selectedIndex = 0;
getE('attribute_weight_impact').selectedIndex = 0;
getE('attribute_unit_impact').selectedIndex = 0;
$('#span_unit_impact').hide();
$('#unity_third').html($('#unity_second').html());

if ($('#unity').is())
if ($('#unity').get(0).value.length > 0)
$('#tr_unit_impact').show();
else
$('#tr_unit_impact').hide();
try
{
if (impact.options[impact.selectedIndex].value == 0)
$('#span_impact').hide();
if (impact2.options[impact.selectedIndex].value == 0)
getE('span_weight_impact').style.display = 'none';
}
catch (e)
{
$('#span_impact').hide();
getE('span_weight_impact').style.display = 'none';
}
};
10 Октябрь 2013, 11:43:48
Ответ #4
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Вот в файле price.js нашел
function calcImpactPriceTI()
{
var tax = getTax();
var priceTE = parseFloat(document.getElementById('attribute_priceTEReal').value.replace(/,/g, '.'));
var newPrice = priceTE * ((tax / 100) + 1);
$('#attribute_priceTI').val((isNaN(newPrice) == true || newPrice < 0) ? '' : ps_round(newPrice, 2).toFixed(2));
var total = ps_round((parseFloat($('#attribute_priceTI').val())*parseInt($('#attribute_price_impact').val())+parseFloat($('#finalPrice').html())), 2);
if (isNaN(total) || total < 0)
$('#attribute_new_total_price').html('0.00');
else
$('#attribute_new_total_price').html(total);
}
10 Октябрь 2013, 11:51:35
Ответ #5
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В AdminProductsController.php
else
{
$product->updateAttribute((int)$id_product_attribute,
$this->isProductFieldUpdated('attribute_wholesale_price') ? Tools::getValue('attribute_wholesale_price') : null,
$this->isProductFieldUpdated('attribute_price_impact') ? Tools::getValue('attribute_price') * Tools::getValue('attribute_price_impact') : null,
$id_product_attribute = $product->addCombinationEntity(
Tools::getValue('attribute_wholesale_price'),
Tools::getValue('attribute_price') * Tools::getValue('attribute_price_impact'),
foreach ($specific_prices as $specific_price)
{
$current_specific_currency = $currencies[($specific_price['id_currency'] ? $specific_price['id_currency'] : $defaultCurrency->id)];
if ($specific_price['reduction_type'] == 'percentage')
$impact = '- '.($specific_price['reduction'] * 100).' %';
elseif ($specific_price['reduction'] > 0)
$impact = '- '.Tools::displayPrice(Tools::ps_round($specific_price['reduction'], 2), $current_specific_currency);
else
$impact = '--';
10 Октябрь 2013, 11:52:03
Ответ #6
  • Старожил
  • ****
  • Сообщений: 293
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Помогите люди добрые. Я в этих символах ничего не понимаю :)
10 Октябрь 2013, 13:02:08
Ответ #7
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Там все переделывать придеться, так как в стандарте при расчете учитывается налог, можно увеличить или уменьшить на сумму с налогом или без. Если менять на умножение, то придеться переписывать все функции. Также функции расчета цены в price.js
function calcImpactPriceTI()
{
var tax = getTax();
var priceTE = parseFloat(document.getElementById('attribute_priceTEReal').value.replace(/,/g, '.'));
var newPrice = priceTE * ((tax / 100) + 1);
$('#attribute_priceTI').val((isNaN(newPrice) == true || newPrice < 0) ? '' : ps_round(newPrice, 2).toFixed(2));
var total = ps_round((parseFloat($('#attribute_priceTI').val())*parseInt($('#attribute_price_impact').val())+parseFloat($('#finalPrice').html())), 2);
if (isNaN(total) || total < 0)
$('#attribute_new_total_price').html('0.00');
else
$('#attribute_new_total_price').html(total);
}

function calcImpactPriceTE()
{
var tax = getTax();
var priceTI = parseFloat(document.getElementById('attribute_priceTI').value.replace(/,/g, '.'));
priceTI = (isNaN(priceTI)) ? 0 : ps_round(priceTI);
var newPrice = ps_round(priceTI, 2) / ((tax / 100) + 1);
$('#attribute_price').val((isNaN(newPrice) == true || newPrice < 0) ? '' : ps_round(newPrice, 6).toFixed(6));
$('#attribute_priceTEReal').val((isNaN(newPrice) == true || newPrice < 0) ? 0 : ps_round(newPrice, 9));
var total = ps_round((parseFloat($('#attribute_priceTI').val())*parseInt($('#attribute_price_impact').val())+parseFloat($('#finalPrice').html())), 2);
if (isNaN(total) || total < 0)
$('#attribute_new_total_price').html('0.00');
else
$('#attribute_new_total_price').html(total);
}