avatar

Пакетное изменение цен

Опубликовал в блог Дополнения и модули для Simpla CMS
0


Открываем simpla/design/html/products.tpl и ищем
<option value="delete">Удалить</option>

после добавляем
<option value="change_price">Изменить цену</option>

далее ищем
<input id="apply_action" class="button_green" type="submit" value="Применить">

перед кодом добавляем
<span id="change_price" style="display: none;">
<select name="op_type"><option value="0">прибавить/отнять</option><option value="1">коэффициент</option></select> <input type="text" name="value" size="3" /> <label><input type="checkbox" name="save_old" value="1" title="сохранить старую цену" checked="checked" />сохранить старую цену</label>
</span>

ищем, перед
// Если есть варианты, отображать ссылку на их разворачивание

добавим
// Изменение цены
        $("#action select[name=action]").change(function() {
                if($(this).val() == 'change_price')
                        $("span#change_price").show();
                else
                        $("span#change_price").hide();
        });

далее ищем и перед
if($('select[name="action"]').val()=='delete' && !confirm('Подтвердите удаление'))

добавим
if($('select[name="action"]').val()=='change_price' && !confirm('Подтвердите изменение цены'))
return false;


Открываем файл simpla/ProductsAdmin.php и перед
case 'move_to_brand':

добавим
case 'change_price':
                {
                    $operation = $this->request->post('op_type', 'integer');
                    $save_old = $this->request->post('save_old', 'integer');
                    $value = floatval(str_replace(',','.',$this->request->post('value')));
 
                    foreach($this->variants->get_variants(array('product_id' => $ids)) as $variant)
                    {
                        $price = $variant->price;
                        $old_price = ($save_old == 1) ? $variant->price : $variant->compare_price;
                        if($operation == 0) $price = $price + $value;
                        elseif($operation == 1 && $value != 0) $price = $price * $value;
                        $this->variants->update_variant($variant->id, array('price'=>$price, 'compare_price'=>$old_price, 'stock'=>$stock));
                    }
                    break;
                }

Если необходимо отнять, то пишем, например, -100.
Вот и все.
4 комментария RSS
avatar
А если ввести *0.9 то сработает уменьшение цены на 10%?
avatar
поставил себе, так и есть.
avatar
При замене цены, с разным количеством товара, сбрасывается количество товара. что делать
avatar
Способ не работает! После замены цены, сбрасывает количество товара, это еще хуже, потом надо пересчитать товар в наличии, и забить в ручную.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.