Skip to content

Commit 541bc69

Browse files
committed
ENGCOM-3271: Quote Item table upgrade script added.
1 parent 1c01be8 commit 541bc69

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

app/code/Magento/ConfigurableProduct/Setup/UpgradeData.php

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77

88
use Magento\Catalog\Model\Product;
99
use Magento\ConfigurableProduct\Model\Product\Type\Configurable;
10-
use Magento\Framework\Setup\UpgradeDataInterface;
11-
use Magento\Framework\Setup\ModuleContextInterface;
12-
use Magento\Framework\Setup\ModuleDataSetupInterface;
1310
use Magento\Eav\Setup\EavSetup;
1411
use Magento\Eav\Setup\EavSetupFactory;
12+
use Magento\Framework\Setup\ModuleContextInterface;
13+
use Magento\Framework\Setup\ModuleDataSetupInterface;
14+
use Magento\Framework\Setup\UpgradeDataInterface;
1515

1616
/**
1717
* Upgrade Data script
@@ -62,6 +62,10 @@ public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface
6262
}
6363
}
6464

65+
if (version_compare($context->getVersion(), '2.2.2', '<')) {
66+
$this->upgradeQuoteItemPrice($setup);
67+
}
68+
6569
$setup->endSetup();
6670
}
6771

@@ -97,4 +101,30 @@ private function updateRelatedProductTypes(string $attributeId, array $relatedPr
97101
implode(',', $relatedProductTypes)
98102
);
99103
}
104+
105+
/**
106+
* Update 'price' value for quote items without price of configurable products subproducts.
107+
*
108+
* @param ModuleDataSetupInterface $setup
109+
*/
110+
private function upgradeQuoteItemPrice(ModuleDataSetupInterface $setup)
111+
{
112+
$connection = $setup->getConnection();
113+
$quoteItemTable = $setup->getTable('quote_item');
114+
$select = $connection->select();
115+
$select->joinLeft(
116+
['qi2' => $quoteItemTable],
117+
'qi1.parent_item_id = qi2.item_id',
118+
['price']
119+
)->where(
120+
'qi1.price = 0'
121+
. ' AND qi1.parent_item_id IS NOT NULL'
122+
. ' AND qi2.product_type = "' . Configurable::TYPE_CODE . '"'
123+
);
124+
$updateQuoteItem = $setup->getConnection()->updateFromSelect(
125+
$select,
126+
['qi1' => $quoteItemTable]
127+
);
128+
$setup->getConnection()->query($updateQuoteItem);
129+
}
100130
}

app/code/Magento/ConfigurableProduct/etc/module.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*/
77
-->
88
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
9-
<module name="Magento_ConfigurableProduct" setup_version="2.2.1">
9+
<module name="Magento_ConfigurableProduct" setup_version="2.2.2">
1010
<sequence>
1111
<module name="Magento_Catalog"/>
1212
<module name="Magento_Msrp"/>

0 commit comments

Comments
 (0)