Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AssignWebsiteToDefaultStock.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
13 use Magento\InventorySalesApi\Api\Data\SalesChannelInterfaceFactory;
15 
20 {
24  private $stockRepository;
25 
29  private $defaultStockProvider;
30 
34  private $salesChannelFactory;
35 
39  private $storeManager;
40 
47  public function __construct(
48  StockRepositoryInterface $stockRepository,
49  DefaultStockProviderInterface $defaultStockProvider,
50  SalesChannelInterfaceFactory $salesChannelFactory,
51  StoreManagerInterface $storeManager
52  ) {
53  $this->stockRepository = $stockRepository;
54  $this->defaultStockProvider = $defaultStockProvider;
55  $this->salesChannelFactory = $salesChannelFactory;
56  $this->storeManager = $storeManager;
57  }
58 
66  public function execute()
67  {
68  $websiteCode = $this->storeManager->getWebsite()->getCode();
69 
70  $defaultStockId = $this->defaultStockProvider->getId();
71  $defaultStock = $this->stockRepository->get($defaultStockId);
72 
73  $extensionAttributes = $defaultStock->getExtensionAttributes();
74  $salesChannels = $extensionAttributes->getSalesChannels();
75  $salesChannels[] = $this->createSalesChannelByWebsiteCode($websiteCode);
76 
77  $extensionAttributes->setSalesChannels($salesChannels);
78  $this->stockRepository->save($defaultStock);
79  }
80 
87  private function createSalesChannelByWebsiteCode(string $websiteCode): SalesChannelInterface
88  {
89  $salesChannel = $this->salesChannelFactory->create();
90  $salesChannel->setCode($websiteCode);
91  $salesChannel->setType(SalesChannelInterface::TYPE_WEBSITE);
92  return $salesChannel;
93  }
94 }
__construct(StockRepositoryInterface $stockRepository, DefaultStockProviderInterface $defaultStockProvider, SalesChannelInterfaceFactory $salesChannelFactory, StoreManagerInterface $storeManager)
$storeManager
$stockRepository
Definition: stock.php:19
$extensionAttributes
Definition: payment.php:22
if(!isset($_GET['website_code'])) $websiteCode
Definition: website.php:11