Ситуэшн следующая.
Запилил формулы просчета скидок к опциям в процентах, но вывод суммы скидок не запилил.
catalog/controller/product/product.php
if ($option_value['price_prefix']=="u") {
$price = '+' . (float)$option_value['price'].'%';
}
elseif ($option_value['price_prefix']=="d") {
$price = '-' . (float)$option_value['price'].'%';
}
elseif ($option_value['price_prefix']=="*") {
$price = '*' . (float)$option_value['price'];
}
elseif ($option_value['price_prefix']=="/") {
$price = '/' . (float)$option_value['price'];
}
else{
$price = $option_value['price_prefix'].$this->currency->format($this->tax->calculate($option_value['price'], $product_info['tax_class_id'], $this->config->get('config_tax') ? 'P' : false), $this->session->data['currency']);
}
system/library/cart/cart.php
if ($option_value_query->row['price_prefix'] == '=') {
$sort_key=count($option_price) + 1;
} else {
$sort_key=count($option_price)+10;
}
$option_price[$sort_key] = array(
$option_value_query->row['price_prefix']=>$option_value_query->row['price'],
);
Далее в этом же файле
$newprice = $price;
$defprice = $price;
ksort($option_price);
foreach($option_price as $operations){
foreach($operations as $operation=>$value){
if ($operation == '=') {
if ($price!=0 ){
$newprice = $value;
$price=0;
}
else{
$newprice += $value;
}
}
elseif ($operation == '+') {
$newprice += $value;
}
elseif ($operation == '-') {
$newprice -= $value;
}
elseif ($operation == '*') {
$newprice = $newprice * $value;
}
elseif ($operation == '/') {
$newprice = $newprice / $value;
}
elseif ($operation == 'u') {
$newprice = $newprice + (( $defprice * $value ) / 100);
}
elseif ($operation == 'd') {
$newprice = $newprice - (( $defprice * $value ) / 100);
}
}
}
Далее в этом же файле
$price + $option_price заменено на $newprice
admin/view/template/catalog/product_form.twig
{% if product_option_value.price_prefix == '=' %}
<option value="=" selected="selected">=</option>
{% else %}
<option value="=">=</option>
{% endif %}
{% if product_option_value.price_prefix == '*' %}
<option value="*" selected="selected">*</option>
{% else %}
<option value="*">*</option>
{% endif %}
{% if product_option_value.price_prefix == '/' %}
<option value="/" selected="selected">/</option>
{% else %}
<option value="/">/</option>
{% endif %}
{% if product_option_value.price_prefix == 'u' %}
<option value="u" selected="selected">+%</option>
{% else %}
<option value="u">+%</option>
{% endif %}
{% if product_option_value.price_prefix == 'd' %}
<option value="d" selected="selected">-%</option>
{% else %}
<option value="d">-%</option>
{% endif %}
в этом же файле
html += ' <option value="=">=</option>';
html += ' <option value="*">*</option>';
html += ' <option value="/">/</option>';
html += ' <option value="u">+%</option>';
html += ' <option value="d">-%</option>';
Всё гуд, всё работает, но есть одно но, раньше выводилось значение "-10%", т.е. то значение, которое задал в админке, начал пилить что бы он выводил сумму высчитываемую, вообще всё пропало, бэкапнул, теперь не отображаются даже эти "-10%", надо что бы во вьюшку приходила сумма вычитаемая с прайса, т.е. не -10%, а к примеру -280руб, если цена товара была 2800р.
Благодарю за внимание!