di.xml 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. <?xml version="1.0"?>
  2. <!--
  3. /**
  4. * Copyright © Magento, Inc. All rights reserved.
  5. * See COPYING.txt for license details.
  6. */
  7. -->
  8. <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
  9. <preference for="Magento\ConfigurableProduct\Api\ConfigurableProductManagementInterface" type="Magento\ConfigurableProduct\Model\ConfigurableProductManagement" />
  10. <preference for="Magento\ConfigurableProduct\Api\LinkManagementInterface" type="Magento\ConfigurableProduct\Model\LinkManagement" />
  11. <preference for="Magento\ConfigurableProduct\Api\OptionRepositoryInterface" type="Magento\ConfigurableProduct\Model\OptionRepository" />
  12. <preference for="Magento\ConfigurableProduct\Api\Data\OptionInterface" type="Magento\ConfigurableProduct\Model\Product\Type\Configurable\Attribute" />
  13. <preference for="Magento\ConfigurableProduct\Api\Data\OptionValueInterface" type="Magento\ConfigurableProduct\Model\Product\Type\Configurable\OptionValue" />
  14. <preference for="Magento\ConfigurableProduct\Api\Data\ConfigurableItemOptionValueInterface" type="Magento\ConfigurableProduct\Model\Quote\Item\ConfigurableItemOptionValue" />
  15. <preference for="Magento\ConfigurableProduct\Pricing\Price\ConfigurableOptionsProviderInterface" type="Magento\ConfigurableProduct\Pricing\Price\ConfigurableOptionsProvider" />
  16. <preference for="Magento\ConfigurableProduct\Pricing\Price\LowestPriceOptionsProviderInterface" type="Magento\ConfigurableProduct\Pricing\Price\LowestPriceOptionsProvider" />
  17. <preference for="Magento\ConfigurableProduct\Model\AttributeOptionProviderInterface" type="Magento\ConfigurableProduct\Model\AttributeOptionProvider" />
  18. <preference for="Magento\ConfigurableProduct\Model\ResourceModel\Attribute\OptionSelectBuilderInterface" type="Magento\ConfigurableProduct\Model\ResourceModel\Attribute\OptionSelectBuilder" />
  19. <type name="Magento\CatalogInventory\Model\Quote\Item\QuantityValidator\Initializer\Option">
  20. <plugin name="configurable_product" type="Magento\ConfigurableProduct\Model\Quote\Item\QuantityValidator\Initializer\Option\Plugin\ConfigurableProduct" sortOrder="50" />
  21. </type>
  22. <type name="Magento\Catalog\Model\Product\CartConfiguration">
  23. <plugin name="configurable_product" type="Magento\ConfigurableProduct\Model\Product\CartConfiguration\Plugin\Configurable" sortOrder="50" />
  24. </type>
  25. <type name="Magento\Sales\Model\Order\Admin\Item">
  26. <plugin name="configurable_product" type="Magento\ConfigurableProduct\Model\Order\Admin\Item\Plugin\Configurable" sortOrder="50" />
  27. </type>
  28. <type name="Magento\Catalog\Helper\Product\Configuration">
  29. <plugin name="configurable_product" type="Magento\ConfigurableProduct\Helper\Product\Configuration\Plugin" sortOrder="50" />
  30. </type>
  31. <type name="Magento\Eav\Model\Entity\Attribute\Backend\AbstractBackend">
  32. <plugin name="ConfigurableProduct::skipValidation" type="Magento\ConfigurableProduct\Plugin\Model\Attribute\Backend\AttributeValidation"/>
  33. </type>
  34. <type name="Magento\Catalog\Model\Entity\Product\Attribute\Group\AttributeMapperInterface">
  35. <plugin name="configurable_product" type="Magento\ConfigurableProduct\Model\Entity\Product\Attribute\Group\AttributeMapper\Plugin" sortOrder="50" />
  36. </type>
  37. <type name="Magento\Catalog\Model\Product\TypeTransitionManager">
  38. <plugin name="configurable_product_transition" type="Magento\ConfigurableProduct\Model\Product\TypeTransitionManager\Plugin\Configurable" sortOrder="50" />
  39. <arguments>
  40. <argument name="compatibleTypes" xsi:type="array">
  41. <item name="configurable" xsi:type="const">Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE</item>
  42. </argument>
  43. </arguments>
  44. </type>
  45. <type name="Magento\Sales\Model\ResourceModel\Report\Bestsellers">
  46. <arguments>
  47. <argument name="ignoredProductTypes" xsi:type="array">
  48. <item name="configurable" xsi:type="const">\Magento\ConfigurableProduct\Model\Product\Type\Configurable::TYPE_CODE</item>
  49. </argument>
  50. </arguments>
  51. </type>
  52. <type name="Magento\Eav\Model\Entity\Setup\PropertyMapper\Composite">
  53. <arguments>
  54. <argument name="propertyMappers" xsi:type="array">
  55. <item name="configurable" xsi:type="string">Magento\ConfigurableProduct\Model\ResourceModel\Setup\PropertyMapper</item>
  56. </argument>
  57. </arguments>
  58. </type>
  59. <type name="Magento\Catalog\Model\Attribute\LockValidatorComposite">
  60. <arguments>
  61. <argument name="validators" xsi:type="array">
  62. <item name="configurable" xsi:type="string">Magento\ConfigurableProduct\Model\Attribute\LockValidator</item>
  63. </argument>
  64. </arguments>
  65. </type>
  66. <type name="Magento\Catalog\Api\ProductRepositoryInterface">
  67. <plugin name="configurableProductSaveOptions" sortOrder="10" type="Magento\ConfigurableProduct\Model\Plugin\ProductRepositorySave"/>
  68. </type>
  69. <type name="Magento\Catalog\Model\Product\Type">
  70. <plugin name="configurable_output" type="Magento\ConfigurableProduct\Model\Product\Type\Plugin" />
  71. </type>
  72. <type name="Magento\Framework\EntityManager\Operation\ExtensionPool">
  73. <arguments>
  74. <argument name="extensionActions" xsi:type="array">
  75. <item name="Magento\Catalog\Api\Data\ProductInterface" xsi:type="array">
  76. <item name="create" xsi:type="array">
  77. <item name="create_configurable_options" xsi:type="string">Magento\ConfigurableProduct\Model\Product\SaveHandler</item>
  78. </item>
  79. <item name="update" xsi:type="array">
  80. <item name="update_configurable_options" xsi:type="string">Magento\ConfigurableProduct\Model\Product\SaveHandler</item>
  81. </item>
  82. <item name="read" xsi:type="array">
  83. <item name="read_configurable_options" xsi:type="string">Magento\ConfigurableProduct\Model\Product\ReadHandler</item>
  84. </item>
  85. </item>
  86. </argument>
  87. </arguments>
  88. </type>
  89. <virtualType name="Magento\ConfigurableProduct\Pricing\Price\Pool" type="Magento\Framework\Pricing\Price\Pool">
  90. <arguments>
  91. <argument name="prices" xsi:type="array">
  92. <item name="regular_price" xsi:type="string">Magento\ConfigurableProduct\Pricing\Price\ConfigurableRegularPrice</item>
  93. <item name="final_price" xsi:type="string">Magento\ConfigurableProduct\Pricing\Price\FinalPrice</item>
  94. </argument>
  95. <argument name="target" xsi:type="object">Magento\Catalog\Pricing\Price\Pool</argument>
  96. </arguments>
  97. </virtualType>
  98. <virtualType name="Magento\ConfigurableProduct\Pricing\Price\Collection" type="Magento\Framework\Pricing\Price\Collection">
  99. <arguments>
  100. <argument name="pool" xsi:type="object">Magento\ConfigurableProduct\Pricing\Price\Pool</argument>
  101. </arguments>
  102. </virtualType>
  103. <type name="Magento\Framework\Pricing\PriceInfo\Factory">
  104. <arguments>
  105. <argument name="types" xsi:type="array">
  106. <item name="configurable" xsi:type="array">
  107. <item name="infoClass" xsi:type="string">Magento\Framework\Pricing\PriceInfo\Base</item>
  108. <item name="prices" xsi:type="string">Magento\ConfigurableProduct\Pricing\Price\Collection</item>
  109. </item>
  110. </argument>
  111. </arguments>
  112. </type>
  113. <type name="Magento\Quote\Model\Quote\Item\Repository">
  114. <arguments>
  115. <argument name="cartItemProcessors" xsi:type="array">
  116. <item name="configurable" xsi:type="object">Magento\ConfigurableProduct\Model\Quote\Item\CartItemProcessor\Proxy</item>
  117. </argument>
  118. </arguments>
  119. </type>
  120. <type name="Magento\Sales\Api\OrderItemRepositoryInterface">
  121. <arguments>
  122. <argument name="processorPool" xsi:type="array">
  123. <item name="configurable" xsi:type="object">Magento\ConfigurableProduct\Model\ProductOptionProcessor</item>
  124. </argument>
  125. </arguments>
  126. </type>
  127. <type name="Magento\Sales\Model\Order\ProductOption">
  128. <arguments>
  129. <argument name="processorPool" xsi:type="array">
  130. <item name="configurable" xsi:type="object">Magento\ConfigurableProduct\Model\ProductOptionProcessor</item>
  131. </argument>
  132. </arguments>
  133. </type>
  134. <virtualType name="ConfigurableFinalPriceResolver" type="Magento\ConfigurableProduct\Pricing\Price\ConfigurablePriceResolver">
  135. <arguments>
  136. <argument name="priceResolver" xsi:type="object">Magento\ConfigurableProduct\Pricing\Price\FinalPriceResolver</argument>
  137. </arguments>
  138. </virtualType>
  139. <type name="Magento\ConfigurableProduct\Pricing\Price\FinalPrice">
  140. <arguments>
  141. <argument name="priceResolver" xsi:type="object">ConfigurableFinalPriceResolver</argument>
  142. </arguments>
  143. </type>
  144. <virtualType name="ConfigurableRegularPriceResolver" type="Magento\ConfigurableProduct\Pricing\Price\ConfigurablePriceResolver">
  145. <arguments>
  146. <argument name="priceResolver" xsi:type="object">Magento\ConfigurableProduct\Pricing\Price\RegularPriceResolver</argument>
  147. </arguments>
  148. </virtualType>
  149. <type name="Magento\ConfigurableProduct\Pricing\Price\ConfigurableRegularPrice">
  150. <arguments>
  151. <argument name="priceResolver" xsi:type="object">ConfigurableRegularPriceResolver</argument>
  152. </arguments>
  153. </type>
  154. <type name="Magento\Catalog\Model\Product\Attribute\Backend\Price">
  155. <plugin name="configurable" type="Magento\ConfigurableProduct\Model\Plugin\PriceBackend" sortOrder="100" />
  156. </type>
  157. <type name="Magento\ProductVideo\Block\Product\View\Gallery">
  158. <plugin name="product_video_gallery" type="Magento\ConfigurableProduct\Block\Plugin\Product\Media\Gallery" />
  159. </type>
  160. <type name="Magento\ConfigurableProduct\Model\Product\Type\Configurable">
  161. <arguments>
  162. <argument name="cache" xsi:type="object">Magento\Framework\App\Cache\Type\Collection</argument>
  163. </arguments>
  164. </type>
  165. <type name="Magento\ConfigurableProduct\Model\ResourceModel\Product\Type\Configurable">
  166. <arguments>
  167. <argument name="attributeOptionProvider" xsi:type="object">Magento\ConfigurableProduct\Model\AttributeOptionProvider\Proxy</argument>
  168. </arguments>
  169. </type>
  170. <type name="Magento\ConfigurableProduct\Observer\HideUnsupportedAttributeTypes">
  171. <arguments>
  172. <argument name="supportedTypes" xsi:type="array">
  173. <item name="select" xsi:type="string">select</item>
  174. </argument>
  175. </arguments>
  176. </type>
  177. <type name="Magento\Catalog\Model\ResourceModel\Product\Indexer\Price\BatchSizeCalculator">
  178. <arguments>
  179. <argument name="estimators" xsi:type="array">
  180. <item name="configurable" xsi:type="object">Magento\Catalog\Model\Indexer\Price\CompositeProductBatchSizeManagement</item>
  181. </argument>
  182. <argument name="batchSizeAdjusters" xsi:type="array">
  183. <item name="configurable" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\Indexer\Price\CompositeProductBatchSizeAdjuster</item>
  184. </argument>
  185. <!--
  186. real batch size will be smaller.
  187. It depends on amount configurable product variations.
  188. E.g for 100 variations real batch size will be 50000/100=500
  189. -->
  190. <argument name="batchRowsCount" xsi:type="array">
  191. <item name="configurable" xsi:type="number">50000</item>
  192. </argument>
  193. </arguments>
  194. </type>
  195. <type name="Magento\ConfigurableProduct\Model\ResourceModel\Product\Indexer\Price\Configurable">
  196. <arguments>
  197. <argument name="tableStrategy" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\Indexer\TemporaryTableStrategy</argument>
  198. <argument name="connectionName" xsi:type="string">indexer</argument>
  199. </arguments>
  200. </type>
  201. <type name="Magento\ConfigurableProduct\Plugin\Model\ResourceModel\Product">
  202. <arguments>
  203. <argument name="productIndexer" xsi:type="object">Magento\Catalog\Model\Indexer\Product\Full</argument>
  204. </arguments>
  205. </type>
  206. <virtualType name="LinkedProductSelectBuilderByIndexMinPrice" type="Magento\ConfigurableProduct\Model\ResourceModel\Product\LinkedProductSelectBuilderComposite">
  207. <arguments>
  208. <argument name="linkedProductSelectBuilder" xsi:type="array">
  209. <item name="indexPrice" xsi:type="object">Magento\Catalog\Model\ResourceModel\Product\Indexer\LinkedProductSelectBuilderByIndexPrice</item>
  210. </argument>
  211. </arguments>
  212. </virtualType>
  213. <type name="Magento\ConfigurableProduct\Pricing\Price\LowestPriceOptionsProvider">
  214. <arguments>
  215. <argument name="linkedProductSelectBuilder" xsi:type="object">Magento\ConfigurableProduct\Model\ResourceModel\Product\LinkedProductSelectBuilder</argument>
  216. </arguments>
  217. </type>
  218. <type name="Magento\ConfigurableProduct\Model\ResourceModel\Product\LinkedProductSelectBuilder">
  219. <arguments>
  220. <argument name="baseSelectProcessor" xsi:type="object">Magento\ConfigurableProduct\Model\ResourceModel\Product\StockStatusBaseSelectProcessor</argument>
  221. <argument name="linkedProductSelectBuilder" xsi:type="object">LinkedProductSelectBuilderByIndexMinPrice</argument>
  222. </arguments>
  223. </type>
  224. <type name="Magento\Catalog\Model\Product\Pricing\Renderer\SalableResolver">
  225. <plugin name="configurable" type="Magento\ConfigurableProduct\Plugin\Catalog\Model\Product\Pricing\Renderer\SalableResolver" />
  226. </type>
  227. <type name="Magento\Catalog\Model\Product">
  228. <plugin name="product_identities_extender" type="Magento\ConfigurableProduct\Model\Plugin\ProductIdentitiesExtender" />
  229. </type>
  230. <type name="Magento\Catalog\Model\Product\Configuration\Item\ItemResolverComposite">
  231. <arguments>
  232. <argument name="itemResolvers" xsi:type="array">
  233. <item name="configurable" xsi:type="string">Magento\ConfigurableProduct\Model\Product\Configuration\Item\ItemProductResolver</item>
  234. </argument>
  235. </arguments>
  236. </type>
  237. <type name="Magento\SalesRule\Model\Quote\ChildrenValidationLocator">
  238. <arguments>
  239. <argument name="productTypeChildrenValidationMap" xsi:type="array">
  240. <item name="configurable" xsi:type="boolean">false</item>
  241. </argument>
  242. </arguments>
  243. </type>
  244. <type name="Magento\SalesRule\Model\Rule\Condition\Product">
  245. <plugin name="apply_rule_on_configurable_children" type="Magento\ConfigurableProduct\Plugin\SalesRule\Model\Rule\Condition\Product" />
  246. </type>
  247. </config>