Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
custom_stock_with_eu_website_grouped_products.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
8 use Magento\Catalog\Api\Data\ProductLinkInterfaceFactory;
17 
19 $objectManager = Bootstrap::getObjectManager();
20 
22 $productRepository = $objectManager->get(ProductRepositoryInterface::class);
23 $productLinkFactory = $objectManager->get(ProductLinkInterfaceFactory::class);
24 $productIds = ['11', '22'];
25 
27 $website = $objectManager->create(Website::class);
28 $website->load('us_website', 'code');
29 $websiteIds = [$website->getId()];
30 
31 foreach ($productIds as $productId) {
33  $product = $objectManager->create(Product::class);
34  $product->setTypeId(Type::TYPE_SIMPLE)
35  ->setId($productId)
36  ->setWebsiteIds($websiteIds)
37  ->setAttributeSetId(4)
38  ->setName('Simple ' . $productId)
39  ->setSku('simple_' . $productId)
40  ->setPrice(100)
41  ->setVisibility(Visibility::VISIBILITY_BOTH)
42  ->setStatus(Status::STATUS_ENABLED)
43  ->setStockData(['use_config_manage_stock' => 1, 'qty' => 100, 'is_qty_decimal' => 0, 'is_in_stock' => 1]);
44 
45  $linkedProducts[] = $productRepository->save($product);
46 }
47 
49 $groupedProductInStock = $objectManager->create(Product::class);
50 
51 $groupedProductInStock->setTypeId(Grouped::TYPE_CODE)
52  ->setId(1)
53  ->setWebsiteIds($websiteIds)
54  ->setAttributeSetId(4)
55  ->setName('Grouped Product In Stock')
56  ->setSku('grouped_in_stock')
57  ->setVisibility(Visibility::VISIBILITY_BOTH)
58  ->setStatus(Status::STATUS_ENABLED)
59  ->setStockData(['use_config_manage_stock' => 1, 'is_in_stock' => 1]);
60 
61 foreach ($linkedProducts as $linkedProduct) {
64  $productLink->setSku($groupedProductInStock->getSku())
65  ->setLinkType('associated')
66  ->setLinkedProductSku($linkedProduct->getSku())
67  ->setLinkedProductType($linkedProduct->getTypeId())
68  ->getExtensionAttributes()
69  ->setQty(1);
71 }
72 
73 $groupedProductInStock->setProductLinks($newLinks);
74 
76 
78 $groupedProductOutOfStock = $objectManager->create(Product::class);
79 
80 $groupedProductOutOfStock->setTypeId(Grouped::TYPE_CODE)
81  ->setId(12)
82  ->setWebsiteIds($websiteIds)
83  ->setAttributeSetId(4)
84  ->setName('Grouped Product Out Of Stock')
85  ->setSku('grouped_out_of_stock')
86  ->setVisibility(Visibility::VISIBILITY_BOTH)
87  ->setStatus(Status::STATUS_ENABLED)
88  ->setStockData(['use_config_manage_stock' => 1, 'is_in_stock' => 0]);
89 
90 foreach ($linkedProducts as $linkedProduct) {
93  $productLink->setSku($groupedProductOutOfStock->getSku())
94  ->setLinkType('associated')
95  ->setLinkedProductSku($linkedProduct->getSku())
96  ->setLinkedProductType($linkedProduct->getTypeId())
97  ->getExtensionAttributes()
98  ->setQty(1);
100 }
101 
102 $groupedProductOutOfStock->setProductLinks($newLinks);
103 
$newLinks
$linkedProduct