Skip to content

Commit d3c05d1

Browse files
Merge pull request #133 from magento-qwerty/MC-18685-and-MC-22139
[Qwerty] Combined PR
2 parents 72e3bc4 + c9cf228 commit d3c05d1

File tree

8 files changed

+105
-31
lines changed

8 files changed

+105
-31
lines changed

app/code/Magento/CatalogSampleData/Model/Attribute.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ public function install(array $fixtures)
108108
foreach ($rows as $row) {
109109
$data = [];
110110
foreach ($row as $key => $value) {
111-
$data[$header[$key]] = $value;
111+
$data[$header[$key]] = trim($value);
112112
}
113113
$data['attribute_set'] = explode("\n", $data['attribute_set']);
114114

@@ -179,7 +179,7 @@ protected function getOption($attribute, $data)
179179
->load();
180180
foreach ($data['option'] as $value) {
181181
if (!$options->getItemByColumnValue('value', $value)) {
182-
$result[] = $value;
182+
$result[] = trim($value);
183183
}
184184
}
185185
return $result ? $this->convertOption($result) : $result;

app/code/Magento/CatalogSampleData/Model/Category.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ protected function setAdditionalData($row, $category)
100100
'position',
101101
'display_mode',
102102
'page_layout',
103-
'custom_layout_update',
104103
];
105104

106105
foreach ($additionalAttributes as $categoryAttribute) {

app/code/Magento/CatalogSampleData/Model/Product.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ public function install(array $productFixtures, array $galleryFixtures)
103103
$this->eavConfig->clear();
104104
$this->setGalleryFixtures($galleryFixtures);
105105

106+
/** @var \Magento\Catalog\Model\Product $product */
106107
$product = $this->productFactory->create();
107108
foreach ($productFixtures as $fileName) {
108109
$fileName = $this->fixtureManager->getFixture($fileName);
@@ -138,6 +139,10 @@ public function install(array $productFixtures, array $galleryFixtures)
138139
}
139140

140141
$this->prepareProduct($product, $data);
142+
$product->setData('custom_layout_update', null);
143+
if ($product->hasData(\Magento\Catalog\Model\Product::CUSTOM_ATTRIBUTES)) {
144+
$product->setCustomAttribute('custom_layout_update', null);
145+
}
141146

142147
$product->save();
143148
$this->installGallery($product);

app/code/Magento/CmsSampleData/Model/Page.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,13 @@ public function install(array $fixtures)
6060
}
6161
$row = $data;
6262

63-
$this->pageFactory->create()
64-
->load($row['identifier'], 'identifier')
65-
->addData($row)
66-
->setStores([\Magento\Store\Model\Store::DEFAULT_STORE_ID])
67-
->save();
63+
/** @var \Magento\Cms\Model\Page $page */
64+
$page = $this->pageFactory->create();
65+
$page->load($row['identifier'], 'identifier');
66+
$page->addData($row);
67+
$page->setCustomLayoutUpdateXml(null);
68+
$page->setStores([\Magento\Store\Model\Store::DEFAULT_STORE_ID]);
69+
$page->save();
6870
}
6971
}
7072
}

app/code/Magento/ConfigurableSampleData/Model/Product.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
class Product
1717
{
1818
/**
19-
* @var \Magento\ImportExport\Model\Import
19+
* @var Import
2020
*/
2121
private $importModel;
2222

@@ -40,17 +40,22 @@ class Product
4040
*/
4141
private $componentRegistrar;
4242

43+
/**
44+
* @var \Magento\Eav\Model\Config
45+
*/
46+
private $eavConfig;
47+
4348
/**
4449
* @param \Magento\Eav\Model\Config $eavConfig
45-
* @param \Magento\ImportExport\Model\Import $importModel
50+
* @param Import $importModel
4651
* @param \Magento\ImportExport\Model\Import\Source\CsvFactory $csvSourceFactory
4752
* @param \Magento\Indexer\Model\Indexer\CollectionFactory $indexerCollectionFactory
4853
* @param \Magento\Framework\Filesystem\Directory\ReadFactory $readFactory
4954
* @param \Magento\Framework\Component\ComponentRegistrar $componentRegistrar
5055
*/
5156
public function __construct(
5257
\Magento\Eav\Model\Config $eavConfig,
53-
\Magento\ImportExport\Model\Import $importModel,
58+
Import $importModel,
5459
\Magento\ImportExport\Model\Import\Source\CsvFactory $csvSourceFactory,
5560
\Magento\Indexer\Model\Indexer\CollectionFactory $indexerCollectionFactory,
5661
\Magento\Framework\Filesystem\Directory\ReadFactory $readFactory,
@@ -70,6 +75,7 @@ public function __construct(
7075
public function install()
7176
{
7277
$this->eavConfig->clear();
78+
/** @var Import $importModel */
7379
$importModel = $this->importModel;
7480
$importModel->setData(
7581
[

app/code/Magento/MsrpSampleData/Model/Msrp.php

Lines changed: 59 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ class Msrp
3232

3333
/**
3434
* @var \Magento\Catalog\Model\ResourceModel\Product\Collection
35+
* @deprecated
36+
* @see $collectionFactory
3537
*/
3638
protected $productCollection;
3739

@@ -40,6 +42,11 @@ class Msrp
4042
*/
4143
protected $configWriter;
4244

45+
/**
46+
* @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory
47+
*/
48+
private $collectionFactory;
49+
4350
/**
4451
* @param SampleDataContext $sampleDataContext
4552
* @param \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory
@@ -54,6 +61,28 @@ public function __construct(
5461
$this->csvReader = $sampleDataContext->getCsvReader();
5562
$this->productCollection = $productCollectionFactory->create()->addAttributeToSelect('sku');
5663
$this->configWriter = $configWriter;
64+
$this->collectionFactory = $productCollectionFactory;
65+
}
66+
67+
/**
68+
* Load products with given SKUs.
69+
*
70+
* @param string[] $skus
71+
* @return \Magento\Catalog\Model\Product[]
72+
*/
73+
private function loadProducts(array $skus): array
74+
{
75+
/** @var \Magento\Catalog\Model\ResourceModel\Product\Collection $collection */
76+
$collection = $this->collectionFactory->create();
77+
$collection->addAttributeToSelect('sku');
78+
$collection->addAttributeToFilter('sku', ['in' => $skus]);
79+
$products = [];
80+
/** @var \Magento\Catalog\Model\Product $product */
81+
foreach ($collection as $product) {
82+
$products[$product->getSku()] = $product;
83+
}
84+
85+
return $products;
5786
}
5887

5988
/**
@@ -68,29 +97,40 @@ public function install(array $fixtures)
6897
continue;
6998
}
7099

100+
$productsData = [];
71101
$rows = $this->csvReader->getData($fileName);
72102
$header = array_shift($rows);
73-
74103
foreach ($rows as $row) {
75-
$data = [];
76-
foreach ($row as $key => $value) {
77-
$data[$header[$key]] = $value;
104+
$rowData = [];
105+
$sku = null;
106+
foreach ($row as $i => $data) {
107+
if ($header[$i] === 'sku') {
108+
$sku = $data;
109+
} else {
110+
$rowData[$header[$i]] = $data;
111+
}
78112
}
79-
$row = $data;
80-
$productId = $this->getProductIdBySku($row['sku']);
81-
if (!$productId) {
82-
continue;
113+
if ($sku) {
114+
$productsData[$sku] = $rowData;
83115
}
84-
/** @var \Magento\Catalog\Model\Product $product */
85-
$product = $this->productCollection->getItemById($productId);
86-
$product->setMsrpDisplayActualPriceType(Type::TYPE_ON_GESTURE);
87-
if (!empty($row['msrp'])) {
88-
$price = $row['msrp'];
89-
} else {
90-
$price = $product->getPrice()*1.1;
116+
}
117+
if ($productsData) {
118+
$products = $this->loadProducts(array_keys($productsData));
119+
120+
foreach ($productsData as $sku => $data) {
121+
if (!array_key_exists($sku, $products)) {
122+
throw new \RuntimeException('Require product with SKU#' . $sku .' not found!');
123+
}
124+
$product = $products[$sku];
125+
$product->setMsrpDisplayActualPriceType(Type::TYPE_ON_GESTURE);
126+
if (!empty($data['msrp'])) {
127+
$price = $data['msrp'];
128+
} else {
129+
$price = $product->getPrice()*1.1;
130+
}
131+
$product->setMsrp($price);
132+
$product->save();
91133
}
92-
$product->setMsrp($price);
93-
$product->save();
94134
}
95135
}
96136
}
@@ -100,6 +140,8 @@ public function install(array $fixtures)
100140
*
101141
* @param string $sku
102142
* @return int|null
143+
* @deprecated
144+
* @see loadProducts()
103145
*/
104146
protected function getProductIdBySku($sku)
105147
{

app/code/Magento/SalesSampleData/Model/Order/Converter.php

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@ class Converter
3939
*/
4040
protected $serializer;
4141

42+
/**
43+
* @var \Magento\ConfigurableSampleData\Model\Product\ConverterFactory
44+
*/
45+
private $converterFactory;
46+
4247
/**
4348
* @param CustomerRepositoryInterface $customerAccount
4449
* @param \Magento\Catalog\Model\ProductFactory $productFactory
@@ -55,6 +60,7 @@ public function __construct(
5560
) {
5661
$this->customerRepository = $customerAccount;
5762
$this->productFactory = $productFactory;
63+
$this->converterFactory = $productConverterFactory;
5864
$this->productConverter = $productConverterFactory->create();
5965
$this->eavConfig = $eavConfig;
6066
$this->serializer = $serializer ?: ObjectManager::getInstance()->get(Json::class);
@@ -175,9 +181,12 @@ protected function getAddresses(\Magento\Customer\Api\Data\AddressInterface $add
175181
protected function convertProductData($productData)
176182
{
177183
$productValues = $this->serializer->unserialize($productData);
178-
$productId = $this->getProductData($productValues['sku'])->getId();
184+
$product = $this->getProductData($productValues['sku']);
185+
$productId = $product->getId();
179186
$productData = ['qty' => $productValues['qty']];
180187
if (isset($productValues['configurable_options'])) {
188+
$this->productConverter = $this->converterFactory->create();
189+
$this->productConverter->setAttributeSetId($product->getAttributeSetId());
181190
$productData['super_attribute'] = $this->getProductAttributes($productValues['configurable_options']);
182191
}
183192
return [$productId => $productData];
@@ -196,7 +205,18 @@ protected function getProductAttributes($configurableAttributes)
196205
continue;
197206
}
198207
$options = $this->productConverter->getAttributeOptions($attribute->getAttributeCode());
199-
$attributeOption = $options->getItemByColumnValue('value', $value);
208+
$attributeOption = null;
209+
$options->load();
210+
/** @var \Magento\Framework\DataObject $option */
211+
foreach ($options as $option) {
212+
if (mb_strtolower($option->getData('value')) === mb_strtolower($value)) {
213+
$attributeOption = $option;
214+
break;
215+
}
216+
}
217+
if (!$attributeOption) {
218+
throw new \RuntimeException('Required option "' .$value .'" for ' .$attributeCode .' does not exist');
219+
}
200220
$attributeId = $attributeOption->getDataByKey('attribute_id');
201221
$attributesData[$attributeId] = $attributeOption->getDataByKey('option_id');
202222
}

app/code/Magento/SwatchesSampleData/Model/Swatches.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ private function getOptionSwatchVisual(array $attributeData)
128128
foreach ($attributeData['option'] as $optionKey => $optionValue) {
129129
if (substr($optionValue, 0, 1) == '#' && strlen($optionValue) == 7) {
130130
$optionSwatch['value'][$optionKey] = $optionValue;
131-
} else if ($this->colorMap[$optionValue]) {
131+
} else if (!empty($this->colorMap[$optionValue])) {
132132
$optionSwatch['value'][$optionKey] = $this->colorMap[$optionValue];
133133
} else {
134134
$optionSwatch['value'][$optionKey] = $this->colorMap['White'];

0 commit comments

Comments
 (0)