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