Все дороги ведут в Checkout Андрей Церкус Magento Developer, Magento Core Team, Magento Inc. - презентация
Содержание
- 2. Все дороги ведут в Checkout Андрей Церкус Magento Developer, Magento Core Team, Magento Inc.
- 3. Три кита Чекаута Сбор данных Сумма Оплата
- 4. Расчет итоговой суммы Стоимость товаров Скидки Налоги Бонусные программы Сложно. Но лишь на первый взгляд.
- 5. 1 - Термины
- 6. Value / Base Value $virtualAmount += $item->getRowTotal(); $baseVirtualAmount += $item->getBaseRowTotal(); … $subtotal = $price * $qty;
- 7. Виртуальные товары Виртуальная квота присоединяется к Billing-адресу. Virtual Downloadable (наследник Virtual) Configurable, к которому подключен Virtual
- 8. Nominal item Служит для Recurring Profiles – автоматических платежей с определенным периодом Бета-версия – есть ограничения
- 9. Subtotal / Grand Total Subtotal – это стоимость позиций товара Grand Total = Subtotals + все
- 10. Тax rate Налоговая ставка для комбинации Налогов может быть несколько покупатель тип товара адрес покупателя
- 11. Weee / FPT Фиксированный (не процентный) налог на единицу продукции Модуль Magento – Weee. В интерфейсе
- 12. Цена товаров включает налоги В интерфейсе – Catalog prices including tax Необходимо определять чистую цену товара
- 13. Метод расчета налогов Unit price: ∑ [(Product Price * Tax Rate) * Qty] Row total: ∑
- 14. Ура! Теперь общие термины понятны и не страшны! :)
- 15. 2 - Процесс
- 16. Алгоритм Quote Billing & shipping addresses collectTotals() collector 1 collector 2 collector 3 … … …
- 17. Квота перебирает адреса и у каждого вызывает метод collectTotals() Каждый адрес перебирает список моделей-коллекторов и у
- 18. Список коллекторов Настраивается в config.xml, как обычно это делается в Magento Можно управлять порядком, так как
- 19. Порядок коллекторов
- 20. Mage_Sales_Model_Quote_Address_Total_Nominal Коллектор специально для Nominal Items Реализует свой собственный стек коллекторов, такой же как общий стек
- 21. Mage_Sales_Mode_Quote_Address_Total_Subtotal Общая цена позиций 1 телевизор * $100 = $100 2 телефона * $200 = $400
- 22. Mage_SalesRule_Model_Quote_Freeshipping Freeshipping – Да/Нет Правила бесплатной доставки
- 23. Mage_Tax_Model_Sales_Total_Quote_Subtotal Телевизор: $100 incl. tax, $90 excl. tax Телефоны: $400 incl. tax, $310 excl. tax Subtotal:
- 24. Mage_Sales_Model_Quote_Address_Total_Shipping Доставка выбранным методом UPS: $20 Вариант UPS Very Quick: $40 Вариант FedEx: $30 Вычисление стоимости
- 25. Mage_Weee_Model_Total_Quote_Weee 1 телевизор * $10 = $10 Weee Tax 2 телефона * $15 = $30 Weee
- 26. Mage_Tax_Model_Sales_Total_Quote_Shipping Налог на доставку = стоимость UPS $20 * 10% = $2 Начисление налогов на доставку.
- 27. Mage_SalesRule_Model_Quote_Discount Скидка по акции за 2 телефона = $400 * -10% = -$40 Подключение всех скидок
- 28. Mage_Tax_Model_Sales_Total_Quote_Tax Налог на телевизор: ($90 excl. tax + $10 weee) * 10% = $10 Налог на
- 29. Mage_Sales_Model_Quote_Address_Total_Grand Телевизор: $90 Телефоны: $310 Доставка: $20 Weee: $40 Discount: -$40 Налоги: $72 ------------------- Grand Total
- 30. Enterprise: Rewards, GiftCard, CustomerBalance GrandTotal: $572 Rewards: -$22 GiftCard: -$20 Balance: -$31 ------------------------ Grand Total (Итого):
- 31. Ура! Теперь и процесс понятен! :)
- 32. 2. P.S. – Спецтермины налогов
- 33. Rounding Deltas
- 34. Rounding Deltas $delta = 0; foreach ($items as $item) { $realTax = $item->getPrice() * $taxRate; $tax
- 35. Чистая цена товара при Catalog Prices incl. tax X = цена Y = налог $100 (задана
- 36. Magento считает, что стоимость товара указана включая налог, который действует на Retail Customer, находящегося в Shipping
- 37. 3 – Сам!
- 38. Идея Хотим красиво упаковывать товары! платит за упаковку покупатель каждому товару добавим атрибут “wrapping_price”. Сумму выставляет
- 39. Реализация Помним основы Magento: свой неймспейс (Zerkella) наш модуль – в локальном codepool: app/code/local Итого модуль
- 40. Подключение в коллекторы – в config.xml. Путь ноды: config/global/sales/quote/totals zerkella_wrapping/total_wrapping grand_total
- 41. ‘wrapping’ – код коллектора Можно использовать и Можно в них через запятую перечислять коды коллекторов Наша
- 42. Обязательный метод collect(): $totalWPrice = 0; $totalWBasePrice = 0; foreach ($this->_getAddressItems($address) as $item) { if ($item->getProduct()->isVirtual())
- 43. Пусть будет видно на фронте, метод fetch(): $amount = $address->getWrappingAmount(); if ($amount != 0) { $title
- 46. Напоследок Легко, но лишь начало: модели для nominals, инвойсов, shipping, refunds (creditmemo) и генерации pdf Только
- 47. Спасибо Андрей Церкус, skype: andrey.tserkus Magento Developer, Magento Core Team, Magento Inc.
- 49. Скачать презентацию