Skip to content

Commit d5f2939

Browse files
Merge pull request #1022 from magento-nord/SPRINT-33-NORD
Tasks - MAGETWO-66698 [Performance] Quotes Optimization - MAGETWO-66718 Constants' Usage Elimination - MAGETWO-66700 [Performance] Catalog Product Optimization
2 parents a9f1814 + 408dea2 commit d5f2939

File tree

43 files changed

+1025
-192
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+1025
-192
lines changed

app/code/Magento/Bundle/Model/Product/Price.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,8 +339,8 @@ public function getTotalPrices($product, $which = null, $includeTax = null, $tak
339339
}
340340

341341
$multiTypes = [
342-
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_CHECKBOX,
343-
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_MULTIPLE,
342+
\Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_CHECKBOX,
343+
\Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_MULTIPLE,
344344
];
345345

346346
if (in_array($customOption->getType(), $multiTypes)) {

app/code/Magento/Catalog/Api/Data/ProductCustomOptionInterface.php

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,76 @@
1111
*/
1212
interface ProductCustomOptionInterface extends \Magento\Framework\Api\ExtensibleDataInterface
1313
{
14+
/**
15+
* Product text options group.
16+
*/
17+
const OPTION_GROUP_TEXT = 'text';
18+
19+
/**
20+
* Product file options group.
21+
*/
22+
const OPTION_GROUP_FILE = 'file';
23+
24+
/**
25+
* Product select options group.
26+
*/
27+
const OPTION_GROUP_SELECT = 'select';
28+
29+
/**
30+
* Product date options group.
31+
*/
32+
const OPTION_GROUP_DATE = 'date';
33+
34+
/**
35+
* Product field option type.
36+
*/
37+
const OPTION_TYPE_FIELD = 'field';
38+
39+
/**
40+
* Product area option type.
41+
*/
42+
const OPTION_TYPE_AREA = 'area';
43+
44+
/**
45+
* Product file option type.
46+
*/
47+
const OPTION_TYPE_FILE = 'file';
48+
49+
/**
50+
* Product drop-down option type.
51+
*/
52+
const OPTION_TYPE_DROP_DOWN = 'drop_down';
53+
54+
/**
55+
* Product radio option type.
56+
*/
57+
const OPTION_TYPE_RADIO = 'radio';
58+
59+
/**
60+
* Product checkbox option type.
61+
*/
62+
const OPTION_TYPE_CHECKBOX = 'checkbox';
63+
64+
/**
65+
* Product multiple option type.
66+
*/
67+
const OPTION_TYPE_MULTIPLE = 'multiple';
68+
69+
/**
70+
* Product date option type.
71+
*/
72+
const OPTION_TYPE_DATE = 'date';
73+
74+
/**
75+
* Product datetime option type.
76+
*/
77+
const OPTION_TYPE_DATE_TIME = 'date_time';
78+
79+
/**
80+
* Product time option type.
81+
*/
82+
const OPTION_TYPE_TIME = 'time';
83+
1484
/**
1585
* Get product SKU
1686
*

app/code/Magento/Catalog/Block/Adminhtml/Product/Edit/Tab/Options/Option.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
use Magento\Backend\Block\Widget;
1515
use Magento\Catalog\Model\Product;
16+
use Magento\Catalog\Api\Data\ProductCustomOptionInterface;
1617

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

320-
if ($option->getGroupByType() == \Magento\Catalog\Model\Product\Option::OPTION_GROUP_SELECT) {
321+
if ($option->getGroupByType() == ProductCustomOptionInterface::OPTION_GROUP_SELECT) {
321322
$i = 0;
322323
$itemCount = 0;
323324
foreach ($option->getValues() as $_value) {

app/code/Magento/Catalog/Block/Product/View/Options/Type/Select.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ public function getValuesHtml()
3030
$this->setSkipJsReloadPrice(1);
3131
// Remove inline prototype onclick and onchange events
3232

33-
if ($_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_DROP_DOWN ||
34-
$_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_MULTIPLE
33+
if ($_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_DROP_DOWN ||
34+
$_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_MULTIPLE
3535
) {
3636
$require = $_option->getIsRequire() ? ' required' : '';
3737
$extraParams = '';
@@ -43,7 +43,7 @@ public function getValuesHtml()
4343
'class' => $require . ' product-custom-option admin__control-select'
4444
]
4545
);
46-
if ($_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_DROP_DOWN) {
46+
if ($_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_DROP_DOWN) {
4747
$select->setName('options[' . $_option->getid() . ']')->addOption('', __('-- Please Select --'));
4848
} else {
4949
$select->setName('options[' . $_option->getid() . '][]');
@@ -63,7 +63,7 @@ public function getValuesHtml()
6363
['price' => $this->pricingHelper->currencyByStore($_value->getPrice(true), $store, false)]
6464
);
6565
}
66-
if ($_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_MULTIPLE) {
66+
if ($_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_MULTIPLE) {
6767
$extraParams = ' multiple="multiple"';
6868
}
6969
if (!$this->getSkipJsReloadPrice()) {
@@ -79,14 +79,14 @@ public function getValuesHtml()
7979
return $select->getHtml();
8080
}
8181

82-
if ($_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_RADIO ||
83-
$_option->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_CHECKBOX
82+
if ($_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_RADIO ||
83+
$_option->getType() == \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_CHECKBOX
8484
) {
8585
$selectHtml = '<div class="options-list nested" id="options-' . $_option->getId() . '-list">';
8686
$require = $_option->getIsRequire() ? ' required' : '';
8787
$arraySign = '';
8888
switch ($_option->getType()) {
89-
case \Magento\Catalog\Model\Product\Option::OPTION_TYPE_RADIO:
89+
case \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_RADIO:
9090
$type = 'radio';
9191
$class = 'radio admin__control-radio';
9292
if (!$_option->getIsRequire()) {
@@ -106,7 +106,7 @@ public function getValuesHtml()
106106
__('None') . '</span></label></div>';
107107
}
108108
break;
109-
case \Magento\Catalog\Model\Product\Option::OPTION_TYPE_CHECKBOX:
109+
case \Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_CHECKBOX:
110110
$type = 'checkbox';
111111
$class = 'checkbox admin__control-checkbox';
112112
$arraySign = '[]';

app/code/Magento/Catalog/Model/Plugin/QuoteItemProductOption.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
use Magento\Quote\Model\Quote\Item\ToOrderItem as QuoteToOrderItem;
99
use Magento\Quote\Model\Quote\Item\AbstractItem as AbstractQuoteItem;
10-
use Magento\Catalog\Model\Product\Option as ProductOption;
10+
use Magento\Catalog\Api\Data\ProductCustomOptionInterface as ProductOption;
1111

1212
/**
1313
* Plugin for Magento\Quote\Model\Quote\Item\ToOrderItem

app/code/Magento/Catalog/Model/Product/Attribute/Backend/Tierprice.php

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,12 @@ protected function validatePrice(array $priceRow)
160160
protected function modifyPriceData($object, $data)
161161
{
162162
$data = parent::modifyPriceData($object, $data);
163+
$price = $object->getPrice();
163164
foreach ($data as $key => $tierPrice) {
164-
if ($this->getPercentage($tierPrice)) {
165-
$data[$key]['price'] = $object->getPrice() * (1 - $this->getPercentage($tierPrice) / 100);
166-
$data[$key]['website_price'] = $object->getPrice() * (1 - $this->getPercentage($tierPrice) / 100);
165+
$percentageValue = $this->getPercentage($tierPrice);
166+
if ($percentageValue) {
167+
$data[$key]['price'] = $price * (1 - $percentageValue / 100);
168+
$data[$key]['website_price'] = $data[$key]['price'];
167169
}
168170
}
169171
return $data;

app/code/Magento/Catalog/Model/Product/Option.php

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -29,34 +29,6 @@
2929
*/
3030
class Option extends AbstractExtensibleModel implements ProductCustomOptionInterface
3131
{
32-
const OPTION_GROUP_TEXT = 'text';
33-
34-
const OPTION_GROUP_FILE = 'file';
35-
36-
const OPTION_GROUP_SELECT = 'select';
37-
38-
const OPTION_GROUP_DATE = 'date';
39-
40-
const OPTION_TYPE_FIELD = 'field';
41-
42-
const OPTION_TYPE_AREA = 'area';
43-
44-
const OPTION_TYPE_FILE = 'file';
45-
46-
const OPTION_TYPE_DROP_DOWN = 'drop_down';
47-
48-
const OPTION_TYPE_RADIO = 'radio';
49-
50-
const OPTION_TYPE_CHECKBOX = 'checkbox';
51-
52-
const OPTION_TYPE_MULTIPLE = 'multiple';
53-
54-
const OPTION_TYPE_DATE = 'date';
55-
56-
const OPTION_TYPE_DATE_TIME = 'date_time';
57-
58-
const OPTION_TYPE_TIME = 'time';
59-
6032
/**
6133
* @var Option\Repository
6234
*/

app/code/Magento/Catalog/Model/Product/Option/Type/Date.php

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
*/
66
namespace Magento\Catalog\Model\Product\Option\Type;
77

8+
use Magento\Catalog\Api\Data\ProductCustomOptionInterface;
9+
810
/**
911
* Catalog product option date type
1012
*
@@ -197,23 +199,23 @@ public function prepareForCart()
197199
public function getFormattedOptionValue($optionValue)
198200
{
199201
if ($this->_formattedOptionValue === null) {
200-
if ($this->getOption()->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_DATE) {
202+
if ($this->getOption()->getType() == ProductCustomOptionInterface::OPTION_TYPE_DATE) {
201203
$result = $this->_localeDate->formatDateTime(
202204
new \DateTime($optionValue),
203205
\IntlDateFormatter::MEDIUM,
204206
\IntlDateFormatter::NONE,
205207
null,
206208
'UTC'
207209
);
208-
} elseif ($this->getOption()->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_DATE_TIME) {
210+
} elseif ($this->getOption()->getType() == ProductCustomOptionInterface::OPTION_TYPE_DATE_TIME) {
209211
$result = $this->_localeDate->formatDateTime(
210212
new \DateTime($optionValue),
211213
\IntlDateFormatter::SHORT,
212214
\IntlDateFormatter::SHORT,
213215
null,
214216
'UTC'
215217
);
216-
} elseif ($this->getOption()->getType() == \Magento\Catalog\Model\Product\Option::OPTION_TYPE_TIME) {
218+
} elseif ($this->getOption()->getType() == ProductCustomOptionInterface::OPTION_TYPE_TIME) {
217219
$result = $this->_localeDate->formatDateTime(
218220
new \DateTime($optionValue),
219221
\IntlDateFormatter::NONE,
@@ -371,8 +373,8 @@ protected function _dateExists()
371373
return in_array(
372374
$this->getOption()->getType(),
373375
[
374-
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_DATE,
375-
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_DATE_TIME
376+
ProductCustomOptionInterface::OPTION_TYPE_DATE,
377+
ProductCustomOptionInterface::OPTION_TYPE_DATE_TIME
376378
]
377379
);
378380
}
@@ -387,8 +389,8 @@ protected function _timeExists()
387389
return in_array(
388390
$this->getOption()->getType(),
389391
[
390-
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_DATE_TIME,
391-
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_TIME
392+
ProductCustomOptionInterface::OPTION_TYPE_DATE_TIME,
393+
ProductCustomOptionInterface::OPTION_TYPE_TIME
392394
]
393395
);
394396
}

app/code/Magento/Catalog/Model/Product/Option/Type/DefaultType.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
namespace Magento\Catalog\Model\Product\Option\Type;
1010

1111
use Magento\Framework\Exception\LocalizedException;
12+
use Magento\Catalog\Api\Data\ProductCustomOptionInterface;
1213

1314
/**
1415
* Catalog product option default type
@@ -366,7 +367,7 @@ public function getProductOptions()
366367
$this->_productOptions[$this->getProduct()->getId()][$_option->getTitle()] = [
367368
'option_id' => $_option->getId(),
368369
];
369-
if ($_option->getGroupByType() == \Magento\Catalog\Model\Product\Option::OPTION_GROUP_SELECT) {
370+
if ($_option->getGroupByType() == ProductCustomOptionInterface::OPTION_GROUP_SELECT) {
370371
$optionValues = [];
371372
foreach ($_option->getValues() as $_value) {
372373
/* @var $value \Magento\Catalog\Model\Product\Option\Value */

app/code/Magento/Catalog/Model/Product/Option/Type/Select.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,8 +302,8 @@ public function getOptionSku($optionValue, $skuDelimiter)
302302
protected function _isSingleSelection()
303303
{
304304
$single = [
305-
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_DROP_DOWN,
306-
\Magento\Catalog\Model\Product\Option::OPTION_TYPE_RADIO,
305+
\Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_DROP_DOWN,
306+
\Magento\Catalog\Api\Data\ProductCustomOptionInterface::OPTION_TYPE_RADIO,
307307
];
308308
return in_array($this->getOption()->getType(), $single);
309309
}

0 commit comments

Comments
 (0)