| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- declare(strict_types=1);
 
- namespace Magento\InventoryCatalogAdminUi\Plugin\Catalog;
 
- use Magento\Catalog\Model\Product;
 
- use Magento\Catalog\Model\Product\Attribute\Source\Status;
 
- use Magento\Catalog\Model\Product\Copier;
 
- use Magento\Framework\Api\SearchCriteriaBuilder;
 
- use Magento\Framework\Api\SearchCriteriaBuilderFactory;
 
- use Magento\InventoryApi\Api\Data\SourceItemInterface;
 
- use Magento\InventoryApi\Api\SourceItemRepositoryInterface;
 
- use Magento\InventoryCatalogAdminUi\Observer\SourceItemsProcessor;
 
- /**
 
-  * Copies source items from the original product to the duplicate
 
-  */
 
- class CopySourceItemsPlugin
 
- {
 
-     /**
 
-      * @var SourceItemRepositoryInterface
 
-      */
 
-     private $sourceItemRepository;
 
-     /**
 
-      * @var SearchCriteriaBuilderFactory
 
-      */
 
-     private $searchCriteriaBuilderFactory;
 
-     /**
 
-      * @var SourceItemsProcessor
 
-      */
 
-     private $sourceItemsProcessor;
 
-     /**
 
-      * @param SourceItemRepositoryInterface $sourceItemRepository
 
-      * @param SearchCriteriaBuilderFactory $searchCriteriaBuilderFactory
 
-      * @param SourceItemsProcessor $sourceItemsProcessor
 
-      */
 
-     public function __construct(
 
-         SourceItemRepositoryInterface $sourceItemRepository,
 
-         SearchCriteriaBuilderFactory $searchCriteriaBuilderFactory,
 
-         SourceItemsProcessor $sourceItemsProcessor
 
-     ) {
 
-         $this->sourceItemRepository = $sourceItemRepository;
 
-         $this->searchCriteriaBuilderFactory = $searchCriteriaBuilderFactory;
 
-         $this->sourceItemsProcessor = $sourceItemsProcessor;
 
-     }
 
-     /**
 
-      * @param Copier $subject
 
-      * @param Product $result
 
-      * @param Product $product
 
-      * @return Product $result
 
-      * @SuppressWarnings(PHPMD.UnusedFormalParameter)
 
-      */
 
-     public function afterCopy(
 
-         Copier $subject,
 
-         Product $result,
 
-         Product $product
 
-     ) {
 
-         $this->copySourceItems($product->getSku(), $result->getSku());
 
-         $result->setStatus(Status::STATUS_DISABLED);
 
-         return $result;
 
-     }
 
-     /**
 
-      * @param string $sku
 
-      * @return array
 
-      */
 
-     private function getSourceItems(string $sku): array
 
-     {
 
-         /** @var SearchCriteriaBuilder $searchCriteriaBuilder */
 
-         $searchCriteriaBuilder = $this->searchCriteriaBuilderFactory->create();
 
-         $searchCriteria = $searchCriteriaBuilder
 
-             ->addFilter(SourceItemInterface::SKU, $sku)
 
-             ->create();
 
-         return $this->sourceItemRepository->getList($searchCriteria)->getItems();
 
-     }
 
-     /**
 
-      * @param string $originalSku
 
-      * @param string $duplicateSku
 
-      */
 
-     private function copySourceItems(string $originalSku, string $duplicateSku)
 
-     {
 
-         $sourceItems = $this->getSourceItems($originalSku);
 
-         $duplicateItemData = [];
 
-         if ($sourceItems) {
 
-             foreach ($sourceItems as $sourceItem) {
 
-                 $duplicateItemData[] = [
 
-                     SourceItemInterface::SKU => $duplicateSku,
 
-                     SourceItemInterface::SOURCE_CODE => $sourceItem->getSourceCode(),
 
-                     SourceItemInterface::QUANTITY => $sourceItem->getQuantity(),
 
-                     SourceItemInterface::STATUS => $sourceItem->getStatus()
 
-                 ];
 
-             }
 
-         }
 
-         $this->sourceItemsProcessor->process(
 
-             $duplicateSku,
 
-             $duplicateItemData
 
-         );
 
-     }
 
- }
 
 
  |