Skip to content

Commit

Permalink
Merge pull request #1022 from magento-nord/SPRINT-33-NORD
Browse files Browse the repository at this point in the history
Tasks
- MAGETWO-66698 [Performance] Quotes Optimization
- MAGETWO-66718 Constants' Usage Elimination
- MAGETWO-66700 [Performance] Catalog Product Optimization
  • Loading branch information
VladimirZaets authored Apr 20, 2017
2 parents a9f1814 + 408dea2 commit d5f2939
Show file tree
Hide file tree
Showing 43 changed files with 1,025 additions and 192 deletions.
4 changes: 2 additions & 2 deletions app/code/Magento/Bundle/Model/Product/Price.php
Original file line number Diff line number Diff line change
Expand Up @@ -339,8 +339,8 @@ public function getTotalPrices($product, $which = null, $includeTax = null, $tak
}

$multiTypes = [
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_CHECKBOX,
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_MULTIPLE,
\Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_CHECKBOX,
\Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_MULTIPLE,
];

if (in_array($customOption->getType(), $multiTypes)) {
Expand Down
70 changes: 70 additions & 0 deletions app/code/Magento/Catalog/Api/Data/ProductCustomOptionInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,76 @@
*/
interface ProductCustomOptionInterface extends \Magento\Framework\Api\ExtensibleDataInterface
{
/**
* Product text options group.
*/
const OPTION_GROUP_TEXT = 'text';

/**
* Product file options group.
*/
const OPTION_GROUP_FILE = 'file';

/**
* Product select options group.
*/
const OPTION_GROUP_SELECT = 'select';

/**
* Product date options group.
*/
const OPTION_GROUP_DATE = 'date';

/**
* Product field option type.
*/
const OPTION_TYPE_FIELD = 'field';

/**
* Product area option type.
*/
const OPTION_TYPE_AREA = 'area';

/**
* Product file option type.
*/
const OPTION_TYPE_FILE = 'file';

/**
* Product drop-down option type.
*/
const OPTION_TYPE_DROP_DOWN = 'drop_down';

/**
* Product radio option type.
*/
const OPTION_TYPE_RADIO = 'radio';

/**
* Product checkbox option type.
*/
const OPTION_TYPE_CHECKBOX = 'checkbox';

/**
* Product multiple option type.
*/
const OPTION_TYPE_MULTIPLE = 'multiple';

/**
* Product date option type.
*/
const OPTION_TYPE_DATE = 'date';

/**
* Product datetime option type.
*/
const OPTION_TYPE_DATE_TIME = 'date_time';

/**
* Product time option type.
*/
const OPTION_TYPE_TIME = 'time';

/**
* Get product SKU
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@

use Magento\Backend\Block\Widget;
use Magento\Catalog\Model\Product;
use Magento\Catalog\Api\Data\ProductCustomOptionInterface;

/**
* @SuppressWarnings(PHPMD.CouplingBetweenObjects)
Expand Down Expand Up @@ -317,7 +318,7 @@ public function getOptionValues()
$value['scopeTitleDisabled'] = is_null($option->getStoreTitle()) ? 'disabled' : null;
}

if ($option->getGroupByType() == \Magento\Catalog\Model\Product\Option::OPTION_GROUP_SELECT) {
if ($option->getGroupByType() == ProductCustomOptionInterface::OPTION_GROUP_SELECT) {
$i = 0;
$itemCount = 0;
foreach ($option->getValues() as $_value) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ public function getValuesHtml()
$this->setSkipJsReloadPrice(1);
// Remove inline prototype onclick and onchange events

if ($_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_DROP_DOWN ||
$_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_MULTIPLE
if ($_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_DROP_DOWN ||
$_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_MULTIPLE
) {
$require = $_option->getIsRequire() ? ' required' : '';
$extraParams = '';
Expand All @@ -43,7 +43,7 @@ public function getValuesHtml()
'class' => $require . ' product-custom-option admin__control-select'
]
);
if ($_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_DROP_DOWN) {
if ($_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_DROP_DOWN) {
$select->setName('options[' . $_option->getid() . ']')->addOption('', __('-- Please Select --'));
} else {
$select->setName('options[' . $_option->getid() . '][]');
Expand All @@ -63,7 +63,7 @@ public function getValuesHtml()
['price' => $this->pricingHelper->currencyByStore($_value->getPrice(true), $store, false)]
);
}
if ($_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_MULTIPLE) {
if ($_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_MULTIPLE) {
$extraParams = ' multiple="multiple"';
}
if (!$this->getSkipJsReloadPrice()) {
Expand All @@ -79,14 +79,14 @@ public function getValuesHtml()
return $select->getHtml();
}

if ($_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_RADIO ||
$_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_CHECKBOX
if ($_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_RADIO ||
$_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_CHECKBOX
) {
$selectHtml = '<div class="options-list nested" id="options-' . $_option->getId() . '-list">';
$require = $_option->getIsRequire() ? ' required' : '';
$arraySign = '';
switch ($_option->getType()) {
case \Magento\Catalog\Model\Product\Option::OPTION_TYPE_RADIO:
case \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_RADIO:
$type = 'radio';
$class = 'radio admin__control-radio';
if (!$_option->getIsRequire()) {
Expand All @@ -106,7 +106,7 @@ public function getValuesHtml()
__('None') . '</span></label></div>';
}
break;
case \Magento\Catalog\Model\Product\Option::OPTION_TYPE_CHECKBOX:
case \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_CHECKBOX:
$type = 'checkbox';
$class = 'checkbox admin__control-checkbox';
$arraySign = '[]';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

use Magento\Quote\Model\Quote\Item\ToOrderItem as QuoteToOrderItem;
use Magento\Quote\Model\Quote\Item\AbstractItem as AbstractQuoteItem;
use Magento\Catalog\Model\Product\Option as ProductOption;
use Magento\Catalog\Api\Data\ProductCustomOptionInterface as ProductOption;

/**
* Plugin for Magento\Quote\Model\Quote\Item\ToOrderItem
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,12 @@ protected function validatePrice(array $priceRow)
protected function modifyPriceData($object, $data)
{
$data = parent::modifyPriceData($object, $data);
$price = $object->getPrice();
foreach ($data as $key => $tierPrice) {
if ($this->getPercentage($tierPrice)) {
$data[$key]['price'] = $object->getPrice() * (1 - $this->getPercentage($tierPrice) / 100);
$data[$key]['website_price'] = $object->getPrice() * (1 - $this->getPercentage($tierPrice) / 100);
$percentageValue = $this->getPercentage($tierPrice);
if ($percentageValue) {
$data[$key]['price'] = $price * (1 - $percentageValue / 100);
$data[$key]['website_price'] = $data[$key]['price'];
}
}
return $data;
Expand Down
28 changes: 0 additions & 28 deletions app/code/Magento/Catalog/Model/Product/Option.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,34 +29,6 @@
*/
class Option extends AbstractExtensibleModel implements ProductCustomOptionInterface
{
const OPTION_GROUP_TEXT = 'text';

const OPTION_GROUP_FILE = 'file';

const OPTION_GROUP_SELECT = 'select';

const OPTION_GROUP_DATE = 'date';

const OPTION_TYPE_FIELD = 'field';

const OPTION_TYPE_AREA = 'area';

const OPTION_TYPE_FILE = 'file';

const OPTION_TYPE_DROP_DOWN = 'drop_down';

const OPTION_TYPE_RADIO = 'radio';

const OPTION_TYPE_CHECKBOX = 'checkbox';

const OPTION_TYPE_MULTIPLE = 'multiple';

const OPTION_TYPE_DATE = 'date';

const OPTION_TYPE_DATE_TIME = 'date_time';

const OPTION_TYPE_TIME = 'time';

/**
* @var Option\Repository
*/
Expand Down
16 changes: 9 additions & 7 deletions app/code/Magento/Catalog/Model/Product/Option/Type/Date.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
*/
namespace Magento\Catalog\Model\Product\Option\Type;

use Magento\Catalog\Api\Data\ProductCustomOptionInterface;

/**
* Catalog product option date type
*
Expand Down Expand Up @@ -197,23 +199,23 @@ public function prepareForCart()
public function getFormattedOptionValue($optionValue)
{
if ($this->_formattedOptionValue === null) {
if ($this->getOption()->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_DATE) {
if ($this->getOption()->getType() == ProductCustomOptionInterface::OPTION_TYPE_DATE) {
$result = $this->_localeDate->formatDateTime(
new \DateTime($optionValue),
\IntlDateFormatter::MEDIUM,
\IntlDateFormatter::NONE,
null,
'UTC'
);
} elseif ($this->getOption()->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_DATE_TIME) {
} elseif ($this->getOption()->getType() == ProductCustomOptionInterface::OPTION_TYPE_DATE_TIME) {
$result = $this->_localeDate->formatDateTime(
new \DateTime($optionValue),
\IntlDateFormatter::SHORT,
\IntlDateFormatter::SHORT,
null,
'UTC'
);
} elseif ($this->getOption()->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_TIME) {
} elseif ($this->getOption()->getType() == ProductCustomOptionInterface::OPTION_TYPE_TIME) {
$result = $this->_localeDate->formatDateTime(
new \DateTime($optionValue),
\IntlDateFormatter::NONE,
Expand Down Expand Up @@ -371,8 +373,8 @@ protected function _dateExists()
return in_array(
$this->getOption()->getType(),
[
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_DATE,
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_DATE_TIME
ProductCustomOptionInterface::OPTION_TYPE_DATE,
ProductCustomOptionInterface::OPTION_TYPE_DATE_TIME
]
);
}
Expand All @@ -387,8 +389,8 @@ protected function _timeExists()
return in_array(
$this->getOption()->getType(),
[
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_DATE_TIME,
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_TIME
ProductCustomOptionInterface::OPTION_TYPE_DATE_TIME,
ProductCustomOptionInterface::OPTION_TYPE_TIME
]
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
namespace Magento\Catalog\Model\Product\Option\Type;

use Magento\Framework\Exception\LocalizedException;
use Magento\Catalog\Api\Data\ProductCustomOptionInterface;

/**
* Catalog product option default type
Expand Down Expand Up @@ -366,7 +367,7 @@ public function getProductOptions()
$this->_productOptions[$this->getProduct()->getId()][$_option->getTitle()] = [
'option_id' => $_option->getId(),
];
if ($_option->getGroupByType() == \Magento\Catalog\Model\Product\Option::OPTION_GROUP_SELECT) {
if ($_option->getGroupByType() == ProductCustomOptionInterface::OPTION_GROUP_SELECT) {
$optionValues = [];
foreach ($_option->getValues() as $_value) {
/* @var $value \Magento\Catalog\Model\Product\Option\Value */
Expand Down
4 changes: 2 additions & 2 deletions app/code/Magento/Catalog/Model/Product/Option/Type/Select.php
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,8 @@ public function getOptionSku($optionValue, $skuDelimiter)
protected function _isSingleSelection()
{
$single = [
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_DROP_DOWN,
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_RADIO,
\Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_DROP_DOWN,
\Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_RADIO,
];
return in_array($this->getOption()->getType(), $single);
}
Expand Down
Loading

0 comments on commit d5f2939

Please sign in to comment.