Как получить ценовую область "все виды магазинов" для продукта


У меня есть 3 веб-сайта, каждый с одним магазином и одним видом магазина.

У меня есть коллекции всех продуктов, основанные на магазине, я изменяю цены для каждого продукта, используя API magento в скрипте, но для этого мне нужно использовать цену, хранящуюся в области "все виды магазинов" для расчета.

the price that I need

Я получаю всю коллекцию товаров из каждого магазина с помощью следующей функции:

protected function getProductCollectionByStoreId($storeId)
    {
        $productCollection = $this->objectManager
            ->create('Magento\Catalog\Model\ResourceModel\Product\CollectionFactory');
        $collection = $productCollection->create()
            ->addAttributeToSelect('*')
            ->addStoreFilter($storeId)
            ->load();        
        return $collection;
    }

А затем я обновляю цены на каждую коллекцию продуктов на основе магазина:

protected function setProductPricesBasedOnStoreWithoutRest($stores){
        foreach($stores as $storeData){
            $storeId = $storeData[0];
            $storeCode = $storeData[1];
            $multiplier = $storeData[3];
            $currencyRate = $storeData[4];
            $productCollection = $this->getProductCollectionByStoreId($storeId);
            foreach($productCollection as $product){
                // ...
                $price = $product->getPrice();
                $newPrice = round(ceil(($price * $multiplier) / $currencyRate), 2);
                // ...
            }
        }
    }

$price необходимо получить значение, сохраненное в цене "все просмотры магазина" (показано на изображении), а не цену в области просмотра магазина продукта. Какой самый простой способ получить это значение?

Author: Matheus Marqui, 2021-08-18

1 answers

Вы можете получить цену магазина или базового магазина (обычно магазин 0 [Идентификатор магазина]) с помощью ресурса:

$resource = $product->getResource();
            $priceBaseStore    = $resource->getAttributeRawValue($product->getId(),'price', 0 );
            $SpecialPriceBaseStore   = $resource->getAttributeRawValue($product->getId(),'special_price', 0 );
            $priceStore1  = $resource->getAttributeRawValue($product->getId(),'price', 1 );
            $specialPriceStore1 = $resource->getAttributeRawValue($product->getId(),'special_price', 1 );
  0
Author: Alan Zavagli, 2021-08-20 15:30:47