Робота з цінами в Magentoå𱳿 嬿 屳볍

09.01.2015

Формування цін — один з найскладніших механізмів у Magento. Ціни формуються в різних місцях, починаючи з методу розрахунку податків і закінчуючи відображенням ціни для продуктових опцій на сторінці перегляду продукту.

Під час роботи з цінами треба мати на увазі таке:

  • На зміну функціоналу розрахунку цін піде не менше 24 годин.
  • Для налагодження механізму формування цін краще всього використовувати покроковий налагоджувач коду, аби знайти місце, де формується ціна.
  • Переписувати код потрібно методами Magento (але в жодному разі не міняти файли системи). Задля цього треба розширити клас і занести відповідну інформацію у файл config.xml. Детальніше — у статті http://bandadirect.com/2012/10/29/urok-9-pereopredelenie-modeli-v-magento .

Припустимо, в базі даних збережено ціни з 4 знаками після коми й необхідно, щоб для начислення ПДВ використовувалася не округлена до 2 знаків ціна, а саме ця збережена в БД ціна з 4 знаками після коми. Нажаль, в Magento немає єдиного місця, де б можна було змінити логіку формування цін. Ціни формуються крок за кроком. Нижче наведені найважливіші етапи формування ціни.

1. Методи обчислення вартості податків

Методи обчислення податків налаштовуються в панелі адміністратора:

System > Configuration > Sales > Tax > Calculation Settings

Центральний об’єкт, що містить усю логіку розрахунку цін, знаходиться в

Mage_Tax_Model_Sales_Total_Quote_Subtotal

Кожний спосіб розрахунку цін, який налаштовується в панелі адміністратора, має свій власний метод у цьому класі:

Tax Calculation Method Based On

  • Unit Price - _unitBaseCalculation()
  • Row Total -  _rowBaseCalculation()
  • Total - _totalBaseCalculation()

2. Підсумковий розрахунок податків

Розмір податків можна переписати в іншому об’єкті Mage_Tax_Model_Calculation за допомогою методу calcTaxAmount().

3. Розрахунок цін кошика товарів

Розрахунок загальної суми кошика відбувається в об’єкті Mage_Sales_Model_Quote_Address_Total_Grand у методі collect(). Як раз тут і можна внести всі зміни відповідно до нової логіки.

4. Відображення ціни

Відображення ціни формується в об’єкті Mage_Core_Model_Store і методі roundPrice().

У завданні з 4 знаками після коми необхідно виконати таке:

public function roundPrice($price)

{

return round($price, 4);

}

5. Динамічний розрахунок цін

Коли продукт має опції, ціна змінюється за допомогою методів Javascript. Тобто при виборі опції підсумкова ціна товару змінюється відповідно до вибраної опції. У коді Javascript дублюється розрахунок цін, що прописаний на стороні PHP. Тому, якщо є зміни в логіці формування цін у файлах PHP, треба перевірити, чи все правильно обчислює Javascript.

Для цього необхідно переписати метод Product.OptionsPrice у файлі js/varien/product.js.

Весь Javascript у Magento базується на бібліотеці prototype. Для розширення методів у prototype слід користуватися методом wrap(). Детальніше — на сайті з prototype API http://prototypejs.org/doc/latest/language/Function/prototype/wrap/ .

<- Назад до: Технічний блоґ


Роботи

Зміна методу збереження й розрахунку цін у Magento
Зміна методу збереження й розрахунку цін у Magento
Задля синхронізації бухгалтерської програми клієнта з його онлайн-магазином, у стандартному механізмі збереження й розрахунку цін Magento було...
ПЗ для розрахунку вартості енергоощадного басейну
ПЗ для розрахунку вартості енергоощадного басейну
Програмне забезпечення, яке розраховує вартість енергоощадного басейну, щомісячні витрати на його утримання та економію енерговитрат у порівнянні зі...