Робота з цінами в 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 було...