11 use Magento\Catalog\Model\ProductFactory;
71 $this->productWebsite = $productWebsite;
118 $status = \Magento\CatalogInventory\Model\Stock\Status::STATUS_IN_STOCK;
120 if (
$item->getItemId()) {
122 $qty =
$item->getQty();
138 protected function processChildren(
150 $websitesWithStores = $this->getWebsitesWithDefaultStores(
$websiteId);
152 foreach (array_keys($websitesWithStores) as
$websiteId) {
162 if ($requiredChildrenIds) {
164 foreach ($requiredChildrenIds as $groupedChildrenIds) {
165 $childrenIds = array_merge($childrenIds, $groupedChildrenIds);
167 $childrenWebsites = $this->productWebsite->getWebsites($childrenIds);
172 foreach ($requiredChildrenIds as $groupedChildrenIds) {
173 $optionStatus =
false;
174 foreach ($groupedChildrenIds as $childId) {
175 if (isset($childrenStatus[$childId])
176 && isset($childrenWebsites[$childId])
177 && in_array(
$websiteId, $childrenWebsites[$childId])
179 && isset($childrenStock[$childId])
180 && $childrenStock[$childId] == \
Magento\CatalogInventory\Model\Stock\Status::STATUS_IN_STOCK
182 $optionStatus =
true;
185 $websiteStatus = $websiteStatus && $optionStatus;
190 foreach ($statuses as
$websiteId => $websiteStatus) {
201 protected function getWebsitesWithDefaultStores(
$websiteId =
null)
203 if ($this->websites ===
null) {
206 $this->websites =
$resource->getWebsiteStores();
234 foreach ($parentIds as $parentId) {
235 $item = $this->stockRegistryProvider->getStockItem($parentId,
$websiteId);
236 $status = \Magento\CatalogInventory\Model\Stock\Status::STATUS_IN_STOCK;
238 if (
$item->getItemId()) {
240 $qty =
$item->getQty();
254 if (empty($this->productTypes)) {
255 $productEmulator = new \Magento\Framework\DataObject();
256 foreach (array_keys($this->productType->getTypes()) as $typeId) {
257 $productEmulator->setTypeId($typeId);
258 $this->productTypes[$typeId] = $this->productType->factory($productEmulator);
269 if (empty($this->stockStatusResource)) {
__construct(StockRegistryProviderInterface $stockRegistryProvider, ProductRepositoryInterface $productRepository, ProductWebsite $productWebsite, ProductType $productType)
updateProductStockStatus($productId, $websiteId)
getProductTypeInstances()
rebuild($productId=null, $scopeId=null)
processParents($productId, $websiteId)