|
7 | 7 |
|
8 | 8 | use Magento\Catalog\Model\Product;
|
9 | 9 | 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; |
13 | 10 | use Magento\Eav\Setup\EavSetup;
|
14 | 11 | use Magento\Eav\Setup\EavSetupFactory;
|
| 12 | +use Magento\Framework\Setup\ModuleContextInterface; |
| 13 | +use Magento\Framework\Setup\ModuleDataSetupInterface; |
| 14 | +use Magento\Framework\Setup\UpgradeDataInterface; |
15 | 15 |
|
16 | 16 | /**
|
17 | 17 | * Upgrade Data script
|
@@ -62,6 +62,10 @@ public function upgrade(ModuleDataSetupInterface $setup, ModuleContextInterface
|
62 | 62 | }
|
63 | 63 | }
|
64 | 64 |
|
| 65 | + if (version_compare($context->getVersion(), '2.2.2', '<')) { |
| 66 | + $this->upgradeQuoteItemPrice($setup); |
| 67 | + } |
| 68 | + |
65 | 69 | $setup->endSetup();
|
66 | 70 | }
|
67 | 71 |
|
@@ -97,4 +101,30 @@ private function updateRelatedProductTypes(string $attributeId, array $relatedPr
|
97 | 101 | implode(',', $relatedProductTypes)
|
98 | 102 | );
|
99 | 103 | }
|
| 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 | + } |
100 | 130 | }
|
0 commit comments