Enviar búsqueda
Cargar
DevHub 3 - Pricing
•
Descargar como PPTX, PDF
•
0 recomendaciones
•
509 vistas
Magento Dev
Seguir
Ingeniería
Denunciar
Compartir
Denunciar
Compartir
1 de 39
Descargar ahora
Recomendados
Все дороги ведут в Checkout
Все дороги ведут в Checkout
Magecom Ukraine
Индексирование в Magento
Индексирование в Magento
Magecom Ukraine
Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)
Pavel Novitsky
Реализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в Magento
Magecom Ukraine
I Net
I Net
Inna Tuyeva
ZFConf 2010: jQuery and Dojo Toolkit JavaScript-frameworks Integration with Z...
ZFConf 2010: jQuery and Dojo Toolkit JavaScript-frameworks Integration with Z...
ZFConf Conference
Yii2
Yii2
Noveo
Crazy owl yii1=> yii2
Crazy owl yii1=> yii2
Alexei Smolyanov
Recomendados
Все дороги ведут в Checkout
Все дороги ведут в Checkout
Magecom Ukraine
Индексирование в Magento
Индексирование в Magento
Magecom Ukraine
Meet Magento Belarus debug Pavel Novitsky (rus)
Meet Magento Belarus debug Pavel Novitsky (rus)
Pavel Novitsky
Реализация шаблонов корпоративных приложений в Magento
Реализация шаблонов корпоративных приложений в Magento
Magecom Ukraine
I Net
I Net
Inna Tuyeva
ZFConf 2010: jQuery and Dojo Toolkit JavaScript-frameworks Integration with Z...
ZFConf 2010: jQuery and Dojo Toolkit JavaScript-frameworks Integration with Z...
ZFConf Conference
Yii2
Yii2
Noveo
Crazy owl yii1=> yii2
Crazy owl yii1=> yii2
Alexei Smolyanov
Form api в drupal 7
Form api в drupal 7
dimateus
Разработка расширяемых приложений на Django
Разработка расширяемых приложений на Django
MoscowDjango
Написание DSL в Perl
Написание DSL в Perl
mayperl
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhizni
drupalconf
Организация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий Копачёв
Mail.ru Group
Dependency injection, phemto
Dependency injection, phemto
Vladimir Romanitchev
Enterprise Patterns in Magento
Enterprise Patterns in Magento
Vrann Tulika
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.
DrupalCampDN
Render API.
Render API.
DrupalForumZP2012
SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010"
Michael Noel
Страх и ненависть в исходном коде
Страх и ненависть в исходном коде
Kolya Korobochkin
Magento code debugging
Magento code debugging
aheadWorks
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf Conference
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
Viktor Likin
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
Ruslan Begaliev
Magento - Антон Капля
Magento - Антон Капля
meet_magento
Почему Mojolicious?
Почему Mojolicious?
Anatoly Sharifulin
Mojolicious
Mojolicious
Точка Кипения
Everything You Need to Know About WP_Query, WordCamp Russia 2014
Everything You Need to Know About WP_Query, WordCamp Russia 2014
Sergey Biryukov
Применение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектов
PyNSK
Wordpress theme
Wordpress theme
Александр Пермяков
iMetrics 2012. Станислав Видяев - Google Russia. Настройка, обзор системы, но...
iMetrics 2012. Станислав Видяев - Google Russia. Настройка, обзор системы, но...
Artyom Tsiplakov
Más contenido relacionado
La actualidad más candente
Form api в drupal 7
Form api в drupal 7
dimateus
Разработка расширяемых приложений на Django
Разработка расширяемых приложений на Django
MoscowDjango
Написание DSL в Perl
Написание DSL в Perl
mayperl
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhizni
drupalconf
Организация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий Копачёв
Mail.ru Group
Dependency injection, phemto
Dependency injection, phemto
Vladimir Romanitchev
Enterprise Patterns in Magento
Enterprise Patterns in Magento
Vrann Tulika
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.
DrupalCampDN
Render API.
Render API.
DrupalForumZP2012
SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010"
Michael Noel
La actualidad más candente
(10)
Form api в drupal 7
Form api в drupal 7
Разработка расширяемых приложений на Django
Разработка расширяемых приложений на Django
Написание DSL в Perl
Написание DSL в Perl
Ubercart -nemnogo_primerov_iz_zhizni
Ubercart -nemnogo_primerov_iz_zhizni
Организация работы с API на Vue.js, Виталий Копачёв
Организация работы с API на Vue.js, Виталий Копачёв
Dependency injection, phemto
Dependency injection, phemto
Enterprise Patterns in Magento
Enterprise Patterns in Magento
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Импорт данных с фреймворком Migrate. Владислав Богатырев.
Render API.
Render API.
SharePoint Virtualization "Виртуальный SharePoint 2010"
SharePoint Virtualization "Виртуальный SharePoint 2010"
Similar a DevHub 3 - Pricing
Страх и ненависть в исходном коде
Страх и ненависть в исходном коде
Kolya Korobochkin
Magento code debugging
Magento code debugging
aheadWorks
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf Conference
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
Viktor Likin
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
Ruslan Begaliev
Magento - Антон Капля
Magento - Антон Капля
meet_magento
Почему Mojolicious?
Почему Mojolicious?
Anatoly Sharifulin
Mojolicious
Mojolicious
Точка Кипения
Everything You Need to Know About WP_Query, WordCamp Russia 2014
Everything You Need to Know About WP_Query, WordCamp Russia 2014
Sergey Biryukov
Применение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектов
PyNSK
Wordpress theme
Wordpress theme
Александр Пермяков
iMetrics 2012. Станислав Видяев - Google Russia. Настройка, обзор системы, но...
iMetrics 2012. Станислав Видяев - Google Russia. Настройка, обзор системы, но...
Artyom Tsiplakov
Мастер-класс по Google Analytics
Мастер-класс по Google Analytics
iMetrics
MODX 3: Что нового?
MODX 3: Что нового?
Ivan Klimchuk
Looking into WordPress Core, WordCamp Russia 2015
Looking into WordPress Core, WordCamp Russia 2015
Sergey Biryukov
Ci
Ci
Mac'Kensi Lord
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest
Работа с платежными системами в Django (Paypal, WebMoney)
Работа с платежными системами в Django (Paypal, WebMoney)
proft
Create payment systems for Drupal Commerce
Create payment systems for Drupal Commerce
Yury Glushkov
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
Krivoy Rog IT Community
Similar a DevHub 3 - Pricing
(20)
Страх и ненависть в исходном коде
Страх и ненависть в исходном коде
Magento code debugging
Magento code debugging
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 1)
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
DrupalCamp Kyiv 2011. Views - стандарт вывода списка данных. Расширение Views...
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPress
Magento - Антон Капля
Magento - Антон Капля
Почему Mojolicious?
Почему Mojolicious?
Mojolicious
Mojolicious
Everything You Need to Know About WP_Query, WordCamp Russia 2014
Everything You Need to Know About WP_Query, WordCamp Russia 2014
Применение behave+webdriver для тестирования Web-проектов
Применение behave+webdriver для тестирования Web-проектов
Wordpress theme
Wordpress theme
iMetrics 2012. Станислав Видяев - Google Russia. Настройка, обзор системы, но...
iMetrics 2012. Станислав Видяев - Google Russia. Настройка, обзор системы, но...
Мастер-класс по Google Analytics
Мастер-класс по Google Analytics
MODX 3: Что нового?
MODX 3: Что нового?
Looking into WordPress Core, WordCamp Russia 2015
Looking into WordPress Core, WordCamp Russia 2015
Ci
Ci
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
CodeFest 2012. Рычков Д. — Почему перед написанием кеша вам стоит поговорить ...
Работа с платежными системами в Django (Paypal, WebMoney)
Работа с платежными системами в Django (Paypal, WebMoney)
Create payment systems for Drupal Commerce
Create payment systems for Drupal Commerce
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
kranonitS20 Сергей Бурма. Django - легко, быстро, эффективно
Más de Magento Dev
Yurii Hryhoriev "Php storm tips&tricks"
Yurii Hryhoriev "Php storm tips&tricks"
Magento Dev
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
Magento Dev
DevHub 3 - CVS
DevHub 3 - CVS
Magento Dev
Magento2 airplane
Magento2 airplane
Magento Dev
Imagine recap-devhub
Imagine recap-devhub
Magento Dev
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
Magento Dev
Top 5 magento secure coding best practices Alex Zarichnyi
Top 5 magento secure coding best practices Alex Zarichnyi
Magento Dev
Magento 2 Page Cache
Magento 2 Page Cache
Magento Dev
Data migration into eav model
Data migration into eav model
Magento Dev
Magento devhub
Magento devhub
Magento Dev
Php + erlang
Php + erlang
Magento Dev
Tdd php
Tdd php
Magento Dev
Gearman jobqueue
Gearman jobqueue
Magento Dev
Autotest
Autotest
Magento Dev
Choreography of web-services
Choreography of web-services
Magento Dev
Security in PHP
Security in PHP
Magento Dev
Take more from Jquery
Take more from Jquery
Magento Dev
Más de Magento Dev
(17)
Yurii Hryhoriev "Php storm tips&tricks"
Yurii Hryhoriev "Php storm tips&tricks"
DevHub 3 - Composer plus Magento
DevHub 3 - Composer plus Magento
DevHub 3 - CVS
DevHub 3 - CVS
Magento2 airplane
Magento2 airplane
Imagine recap-devhub
Imagine recap-devhub
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
Разработка на стероидах или как я перестал бояться и полюбил свою IDE
Top 5 magento secure coding best practices Alex Zarichnyi
Top 5 magento secure coding best practices Alex Zarichnyi
Magento 2 Page Cache
Magento 2 Page Cache
Data migration into eav model
Data migration into eav model
Magento devhub
Magento devhub
Php + erlang
Php + erlang
Tdd php
Tdd php
Gearman jobqueue
Gearman jobqueue
Autotest
Autotest
Choreography of web-services
Choreography of web-services
Security in PHP
Security in PHP
Take more from Jquery
Take more from Jquery
DevHub 3 - Pricing
1.
Magento is an
eBay Inc. company. © 2014 Magento, Inc. All rights reserved. Цены в Magento 2 Magento 2 Pricing
2.
© 2014 Magento,
Inc. Page | 2 Краткое содержание доклада Обзор цен в Magento Разновидности Скидки и Налоги Настройки Проблемы Magento 2 : Pricing library Расчет Рендеринг Конфигурация Итоги
3.
© 2014 Magento,
Inc. Page | 3© 2014 Magento, Inc. Page | 3 1 Разновидности цен
4.
© 2014 Magento,
Inc. Page | 4 Цены самого простого продукта Цены продукта Price Special price (дата) Tier price (количество продуктов, вебсайт, группа) Group price (вебсайт, группа) Manufacturer's Suggested Retail Price (Minimal Advertised Price) Дополнительные цены Custom Option Price
5.
© 2014 Magento,
Inc. Page | 5 Типы продуктов (возможно с собственной реализацией цен) Simple Virtual Grouped Configurable Bundle Downloadable Gift card (enterprise)
6.
© 2014 Magento,
Inc. Page | 6 Специфические цены разных типов продуктов Attribute value price (Configurable product) Link price (Downloadable product) Selection price (Bundle product)
7.
© 2014 Magento,
Inc. Page | 7© 2014 Magento, Inc. Page | 7 2 Скидки и налоги
8.
© 2014 Magento,
Inc. Page | 8 Скидки Без скидок Catalog price rules Shopping cart price rules
9.
© 2014 Magento,
Inc. Page | 9 Налоги Без налогов Tax FPT
10.
© 2014 Magento,
Inc. Page | 10© 2014 Magento, Inc. Page | 10 3 Настройки расчета и отображения цен
11.
© 2014 Magento,
Inc. Page | 11 Настройки подсчета налогов
12.
© 2014 Magento,
Inc. Page | 12 Настройки отображения ~500 000
13.
© 2014 Magento,
Inc. Page | 13 <?php $_coreHelper = $this->helper('MagentoCoreHelperData'); $weeeHelper = $this->helper('MagentoWeeeHelperData'); $priceHelper = $this->helper('MagentoCatalogHelperProductPrice'); /* @var $_coreHelper MagentoCoreHelperData */ /* @var $weeeHelper MagentoWeeeHelperData */ /* @var $priceHelper MagentoCatalogHelperProductPrice */ $_product = $this->getProduct(); $_storeId = $_product->getStoreId(); $_id = $_product->getId(); $_weeeSeparator = ''; $_simplePricesTax = ($priceHelper->displayPriceIncludingTax() || $priceHelper->displayBothPrices()); $_minimalPriceValue = $_product->getMinimalPrice(); $_minimalPrice = $priceHelper->getPrice($_product, $_minimalPriceValue, $_simplePricesTax); ?> <?php $_weeeTaxAmount = $weeeHelper->getAmountForDisplay($_product); ?> <?php if ($weeeHelper->typeOfDisplay($_product, array(MagentoWeeeModelTax::DISPLAY_INCL_DESCR, MagentoWeeeModelTax::DISPLAY_EXCL_DESCR_INCL, 4))): ?> <?php $_weeeTaxAmount = $weeeHelper->getAmount($_product); ?> <?php $_weeeTaxAttributes = $weeeHelper->getProductWeeeAttributesForDisplay($_product); ?> <?php endif; ?> <?php $_weeeTaxAmountInclTaxes = $_weeeTaxAmount; ?> <?php if ($weeeHelper->isTaxable() && !$priceHelper->priceIncludesTax($_storeId)): ?> <?php $_attributes = $weeeHelper->getProductWeeeAttributesForRenderer($_product, null, null, null, true); ?> <?php $_weeeTaxAmountInclTaxes = $weeeHelper->getAmountInclTaxes($_attributes); ?> <?php endif; ?> <div class="price-box"> <?php $_price = $priceHelper->getPrice($_product, $_product->getPrice()) ?> <?php $_regularPrice = $priceHelper->getPrice($_product, $_product->getPrice(), $_simplePricesTax) ?> <?php $_finalPrice= $priceHelper->getPrice($_product, $_product->getFinalPrice()) ?> <?php $_finalPriceInclTax = $priceHelper->getPrice($_product, $_product->getFinalPrice(), true) ?> <?php $_weeeDisplayType = $weeeHelper->getPriceDisplayType(); ?> <?php if ($_finalPrice >= $_price): ?> <?php if ($priceHelper->displayBothPrices()): ?> <?php if ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 0)): // including ?> <span class="price-excluding-tax"> <span class="label"><?php echo __('Excl. Tax:') ?></span> <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, false) ?> </span> </span> <span class="price-including-tax"> <span class="label"><?php echo __('Incl. Tax:') ?></span> <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?> </span> </span> <?php elseif ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 1)): // incl. + weee ?> <span class="price-excluding-tax"> <span class="label"><?php echo __('Excl. Tax:') ?></span> <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, false) ?> </span> </span> <span class="price-including-tax"> <span class="label"><?php echo __('Incl. Tax:') ?></span> <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?> </span> <span class="weee">( <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?> <?php echo $_weeeSeparator; ?> <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?> <?php $_weeeSeparator = ' + '; ?> <?php endforeach; ?> )</span> </span> <?php elseif ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 4)): // incl. + weee ?> <span class="price-excluding-tax"> <span class="label"><?php echo __('Excl. Tax:') ?></span> <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, false) ?> </span> </span> <span class="price-including-tax"> <span class="label"><?php echo __('Incl. Tax:') ?></span> <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?> </span> <span class="weee">( <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?> <?php echo $_weeeSeparator; ?> <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount() + $_weeeTaxAttribute->getTaxAmount(), true, true); ?> <?php $_weeeSeparator = ' + '; ?> <?php endforeach; ?> )</span> </span> <?php elseif ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 2)): // excl. + weee + final ?> <span class="price-excluding-tax"> <span class="label"><?php echo __('Excl. Tax:') ?></span> <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_price, true, false) ?> </span> </span> <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?> <span class="weee"> <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?> </span> <?php endforeach; ?> <span class="price-including-tax"> <span class="label"><?php echo __('Incl. Tax:') ?></span> <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?> </span> </span> <?php else: ?> <span class="price-excluding-tax"> <span class="label"><?php echo __('Excl. Tax:') ?></span> <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php if ($_finalPrice == $_price): ?> <?php echo $_coreHelper->currency($_price, true, false) ?> <?php else: ?> <?php echo $_coreHelper->currency($_finalPrice, true, false) ?> <?php endif; ?> </span> </span> <span class="price-including-tax"> <span class="label"><?php echo __('Incl. Tax:') ?></span> <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPriceInclTax, true, false) ?> </span> </span> <?php endif; ?> <?php else: ?> <?php if ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 0)): // including ?> <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, true) ?> </span> <?php elseif ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 1)): // incl. + weee ?> <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, true) ?> </span> <span class="weee">( <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?> <?php echo $_weeeSeparator; ?> <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?> <?php $_weeeSeparator = ' + '; ?> <?php endforeach; ?> )</span> <?php elseif ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 4)): // incl. + weee ?> <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, true) ?> </span> <span class="weee">( <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?> <?php echo $_weeeSeparator; ?> <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount() + $_weeeTaxAttribute- >getTaxAmount(), true, true); ?> <?php $_weeeSeparator = ' + '; ?> <?php endforeach; ?> )</span> <?php elseif ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 2)): // excl. + weee + final ?> <span class="regular-price"><?php echo $_coreHelper->currency($_price,true,true) ?></span><br/> <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?> <span class="weee"> <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?> </span> <?php endforeach; ?> <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_price + $_weeeTaxAmount, true, true) ?> </span> <?php else: ?> <span class="regular-price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php if ($_finalPrice== $_price): ?> <?php echo $_coreHelper->currency($_price, true, true) ?> <?php else: ?> <?php echo $_coreHelper->currency($_finalPrice, true, true) ?> <?php endif; ?> </span> <?php endif; ?> <?php endif; ?> <?php else: /* if ($_finalPrice == $_price): */ ?> <?php $_originalWeeeTaxAmount = $weeeHelper->getOriginalAmount($_product); ?> <?php if ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 0)): // including ?> <p class="old-price"> <span class="price-label"><?php echo __('Regular Price:') ?></span> <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_regularPrice + $_originalWeeeTaxAmount, true, false) ?> </span> </p> <?php if ($priceHelper->displayBothPrices()): ?> <p class="special-price"> <span class="price-label"><?php echo __('Special Price:') ?></span> <span class="price-excluding-tax"> <span class="label"><?phpecho __('Excl. Tax:') ?></span> <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPrice + $_weeeTaxAmount, true, false) ?> </span> </span> <span class="price-including-tax"> <span class="label"><?php echo __('Incl. Tax:') ?></span> <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?> </span> </span> </p> <?php else: ?> <p class="special-price"> <span class="price-label"><?php echo __('Special Price:') ?></span> <span class="price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPrice + $_weeeTaxAmountInclTaxes, true, false) ?> </span> </p> <?php endif; ?> <?php elseif ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 1)): // incl. + weee ?> <p class="old-price"> <span class="price-label"><?php echo __('Regular Price:') ?></span> <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_regularPrice + $_originalWeeeTaxAmount, true, false) ?> </span> </p> <p class="special-price"> <span class="price-label"><?php echo __('Special Price:') ?></span> <span class="price-excluding-tax"> <span class="label"><?php echo __('Excl. Tax:') ?></span> <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPrice + $_weeeTaxAmount, true, false) ?> </span> </span> <span class="weee">( <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?> <?php echo $_weeeSeparator; ?> <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?> <?php $_weeeSeparator = ' + '; ?> <?php endforeach; ?> )</span> <span class="price-including-tax"> <span class="label"><?php echo __('Incl. Tax:') ?></span> <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?> </span> </span> </p> <?php elseif ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 4)): // incl. + weee ?> <p class="old-price"> <span class="price-label"><?php echo __('Regular Price:') ?></span> <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_regularPrice + $_originalWeeeTaxAmount, true, false) ?> </span> </p> <p class="special-price"> <span class="price-label"><?php echo __('Special Price:') ?></span> <span class="price-excluding-tax"> <span class="label"><?php echo __('Excl. Tax:') ?></span> <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPrice + $_weeeTaxAmount, true, false) ?> </span> </span> <span class="weee">( <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?> <?php echo $_weeeSeparator; ?> <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount() + $_weeeTaxAttribute- >getTaxAmount(), true, true); ?> <?php $_weeeSeparator = ' + '; ?> <?php endforeach; ?> )</span> <span class="price-including-tax"> <span class="label"><?php echo __('Incl. Tax:') ?></span> <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?> </span> </span> </p> <?php elseif ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, 2)): // excl. + weee + final ?> <p class="old-price"> <span class="price-label"><?php echo __('Regular Price:') ?></span> <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_regularPrice, true, false) ?> </span> </p> <p class="special-price"> <span class="price-label"><?php echo __('Special Price:') ?></span> <span class="price-excluding-tax"> <span class="label"><?php echo __('Excl. Tax:') ?></span> <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPrice, true, false) ?> </span> </span> <?php foreach ($_weeeTaxAttributes as $_weeeTaxAttribute): ?> <span class="weee"> <?php echo $_weeeTaxAttribute->getName(); ?>: <?php echo $_coreHelper->currency($_weeeTaxAttribute->getAmount(), true, true); ?> </span> <?php endforeach; ?> <span class="price-including-tax"> <span class="label"><?php echo __('Incl. Tax:') ?></span> <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPriceInclTax + $_weeeTaxAmountInclTaxes, true, false) ?> </span> </span> </p> <?php else: // excl. ?> <p class="old-price"> <span class="price-label"><?php echo __('Regular Price:') ?></span> <span class="price" id="old-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_regularPrice, true, false) ?> </span> </p> <?php if ($priceHelper->displayBothPrices()): ?> <p class="special-price"> <span class="price-label"><?php echo __('Special Price:') ?></span> <span class="price-excluding-tax"> <span class="label"><?phpecho __('Excl. Tax:') ?></span> <span class="price" id="price-excluding-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPrice, true, false) ?> </span> </span> <span class="price-including-tax"> <span class="label"><?phpecho __('Incl. Tax:') ?></span> <span class="price" id="price-including-tax-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPriceInclTax, true, false) ?> </span> </span> </p> <?php else: ?> <p class="special-price"> <span class="price-label"><?php echo __('Special Price:') ?></span> <span class="price" id="product-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_finalPrice, true, false) ?> </span> </p> <?php endif; ?> <?php endif; ?> <?php endif; /* if ($_finalPrice == $_price): */ ?> <?php if ($this->getDisplayMinimalPrice() && $_minimalPriceValue && $_minimalPriceValue < $_product->getFinalPrice()): ?> <?php $_minimalPriceDisplayValue = $_minimalPrice; ?> <?php if ($_weeeTaxAmount && $weeeHelper->typeOfDisplay($_product, array(0, 1, 4))): ?> <?php $_minimalPriceDisplayValue = $_minimalPrice + $_weeeTaxAmount; ?> <?php endif; ?> <?php if ($this->getUseLinkForAsLowAs()):?> <a href="<?phpecho $_product->getProductUrl(); ?>" class="minimal-price-link"> <?php else:?> <span class="minimal-price-link"> <?php endif?> <span class="label"><?php echo __('As low as:') ?></span> <span class="price" id="product-minimal-price-<?php echo $_id ?><?php echo $this->getIdSuffix() ?>"> <?php echo $_coreHelper->currency($_minimalPriceDisplayValue, true, false) ?> </span> <?php if ($this->getUseLinkForAsLowAs()):?> </a> <?php else:?> </span> <?php endif?> <?php endif; /* if ($this->getDisplayMinimalPrice() && $_minimalPrice && $_minimalPrice < $_finalPrice): */ ?> </div>
14.
© 2014 Magento,
Inc. Page | 14 Проблемы Сложность Огромное количество условий в темплейтах Расчет цены, налогов и скидок в темплейтах Расчет цен в javascript Отсутствие модулярности Модули которые модифицируют цену (Tax, Weee) явно упоминаются в блоках и темплейтах других модулей. В результате такие модули нельзя отключить и/или подменить. Дубликаты Большое количество одинакового/похожего кода который конвертирует и форматирует цену
15.
© 2014 Magento,
Inc. Page | 15© 2014 Magento, Inc. Page | 15 4 Magento 2 : Pricing library
16.
© 2014 Magento,
Inc. Page | 16 Action plan Сложность - Упрощаем Концентрируем работу с ценами в одном меcте – Pricing library Выносим расчет из темплейтов Вводим иерархию сущностей цен Модулярность - Поддерживаем Выносим зависимости Дубликаты - Устраняем Унифицируем использование калькуляции и рендеринга
17.
© 2014 Magento,
Inc. Page | 17 Общая схема Процесс отображение цен можно условно разделить на две части: Расчет (калькуляцию) цены Отображение (рендеринг) цены Единой точкой входа выступает Pricing Render блок
18.
© 2014 Magento,
Inc. Page | 18© 2014 Magento, Inc. Page | 18 5 Расчет цены
19.
© 2014 Magento,
Inc. Page | 19 Сущности Pricing library Saleable Item (продукт) Price Info (провайдер цен и аджастментов) Prices (цена конкретного типа для конкретного продукта) Amounts (цена с сконфигурированным набором аджастментов) Adjustments (налоги)
20.
© 2014 Magento,
Inc. Page | 20 Saleable Item Каждая сущность которая может продаваться и имеет свою цену должна реализовать SaleableItemInterface Предоставляет информацию необходимую для расчета цены Продукт, услуга, что-либо продаваемое
21.
© 2014 Magento,
Inc. Page | 21 PriceInfo Содержит в себе коллекции аджастментов и цен Предоставляет доступ к аджастментам и ценам Пул объектов цен и аджастментов
22.
© 2014 Magento,
Inc. Page | 22 Price Реализует конкретный тип цены Предоставляет возможность получить значение цены и/или обьект амаунта Предоставляет дополнительную информацию о цене Цена определенного типа
23.
© 2014 Magento,
Inc. Page | 23 Amount Хранит базовое значение цены и применимые аджастменты Дает возможность получить цифру с и без аджастметов Предоставляет информацию о примененных аджастментах Цена с закрепленным количеством наложенных аджастментов.
24.
© 2014 Magento,
Inc. Page | 24 Adjustment Модификатор который может примениться к амаунту Предоставляет возможность модифицировать цену сторонними модулями Модификаторы цен (налоги)
25.
© 2014 Magento,
Inc. Page | 25 Расчет цены
26.
© 2014 Magento,
Inc. Page | 26© 2014 Magento, Inc. Page | 26 6 Рендеринг цены
27.
© 2014 Magento,
Inc. Page | 27 Pricing library. Точка входа <?php echo $this->getLayout() ->getBlock('product.price.render') ->render('final_price', $product, $arguments);
28.
© 2014 Magento,
Inc. Page | 28 Отображение цены
29.
© 2014 Magento,
Inc. Page | 29 Рендеринг цены Pricing Render Block Price Box Render Block Amount Render Block Adjustment Render
30.
© 2014 Magento,
Inc. Page | 30© 2014 Magento, Inc. Page | 30 7 Конфигурация
31.
© 2014 Magento,
Inc. Page | 31 Объявление рендера Входной точкой в Pricing является MagentoFrameworkPricingRender Блок этого класса должен быть объявлен в layout.xml для необходимых страниц При объявлении блока есть возможность указать: Имя используемого Pricing layout handle Параметры для темплейтов <layout> <block class="MagentoFrameworkPricingRender" name="product.price.render"> <arguments> <argument name="price_render_handle" xsi:type="string">catalog_product_prices</argument> <!-- set configuration settings here --> </arguments> </block> </layout>
32.
© 2014 Magento,
Inc. Page | 32 Pricing layout Pricing library для конфигурации отображения использует свой экземпляр лейаута В хендлах этого лейаута объявляются блоки и темплейты для отрисовки каждой сущности прайсинга
33.
© 2014 Magento,
Inc. Page | 33 Pricing layout <layout ...> <block class="MagentoFrameworkPricingRenderRendererPool" name="render.product.prices"> <arguments> <argument name="default" xsi:type="array"> <item name="prices" xsi:type="array"> <item name="special_price" xsi:type="array"> <item name="render_template" xsi:type="string"> Magento_Catalog::product/price/special_price.phtml </item> </item> ... </item> </argument> <argument name="bundle" xsi:type="array"> <item name="adjustments" xsi:type="array"> <item name="bundle_option" xsi:type="array"> <item name="tax" xsi:type="array"> <item name="adjustment_render_class" xsi:type="string"> MagentoTaxPricingRenderAdjustment </item> <item name="adjustment_render_template" xsi:type="string"> Magento_Tax::pricing/adjustment/bundle.phtml </item> </item> </item> </item> </argument> </arguments> </block> </layout> Пример.
34.
© 2014 Magento,
Inc. Page | 34 Pricing layout fallback 1 • Темплейт/Класс для конкретного продукта и конкретного типа цены 2 • Стандартный темплейт/класс для конкретного продукта 3 • Стандартный темплейт/класс для конкретного типа цены 4 • Стандартный темплейт/класс
35.
© 2014 Magento,
Inc. Page | 35 Prices Классы отвечающие за конкретные типы цен передаются в MagentoFrameworkPricingPricePool используя конфигурацию DI <config ...> <virtualType name="MagentoCatalogPricingPricePool" type="MagentoFrameworkPricingPricePool"> <arguments> <argument name="prices" xsi:type="array"> <item name="regular_price" xsi:type="string">MagentoCatalogPricingPriceRegularPrice</item> <item name="final_price" xsi:type="string">MagentoCatalogPricingPriceFinalPrice</item> <item name="tier_price" xsi:type="string">MagentoCatalogPricingPriceTierPrice</item> <item name="group_price" xsi:type="string">MagentoCatalogPricingPriceGroupPrice</item> <item name="special_price" xsi:type="string">MagentoCatalogPricingPriceSpecialPrice</item> ... </argument> </arguments> </virtualType> </config>
36.
© 2014 Magento,
Inc. Page | 36 Adjustments Классы отвечающие за конкретные типы аджастментов передаются в MagentoPricingAdjustmentPool используя конфигурацию DI При конфигурации аджастментов есть возможность указать порядок их применения <config ...> <type name="MagentoPricingAdjustmentPool"> <arguments> <argument name="adjustments" xsi:type="array"> <item name="tax" xsi:type="array"> <item name="className" xsi:type="string">MagentoTaxPricingAdjustment</item> <item name="sortOrder" xsi:type="string">20</item> </item> </argument> </arguments> </type> </config>
37.
© 2014 Magento,
Inc. Page | 37 Итоги Модулярность Простота в применении Широкие возможности конфигурации Отсутствие дубликатов кода Отсутствие вычислений в темплейтах
38.
© 2014 Magento,
Inc. Page | 38© 2014 Magento, Inc. Page | 38 8 Q&A
39.
© 2014 Magento,
Inc. Page | 39© 2014 Magento, Inc. Page | 39 9 Thank you!
Descargar ahora