Magento 2: Como obter o preço final e o preço original de todos os tipos de produtos

11

Como posso obter o preço original e o preço final dos produtos abaixo indicados?

  1. Produto simples
  2. Produto configurável
  3. Pacote de produtos
  4. Produto do grupo

Para produtos simples , posso obter preços facilmente usando o código abaixo.

$finalPrice = $product->getFinalPrice();
$originalPrice = $product->getPrice();

Mas eu não sou capaz de conseguir Preço original e preço final para o produto configurável , produto Bundle , produto Grupo

Existe alguma maneira fácil de obter os dois preços de todos os outros tipos de produtos.


EDIT:

Recebo preço Preço original e preço final do produto configurável usando o código abaixo. e obtenha referência em get-price-range-configurable-product-magento-2

$basePrice = $product->getPriceInfo()->getPrice('regular_price');

$regularPrice = $basePrice->getMinRegularAmount()->getValue();
$specialPrice = $product->getFinalPrice();

Qualquer ajuda seria apreciada! Obrigado.

Chirag Patel
fonte
você pode obter o preço original e o preço final aqui <? php $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ productCollectionFactory = $ objectManager-> get ('\ Magento \ Catálogo \ Modelo \ ResourceModel \ Produto \ CollectionFactory'); $ collection = $ productCollectionFactory-> create (); $ collection-> addAttributeToSelect ('*'); $ collection-> addWebsiteFilter (); $ coleção-> addMinimalPrice (); $ coleção-> addFinalPrice (); $ coleção-> addStoreFilter (); $ collection-> setVisibility ($ objectManager-> get ('\ Magento \ Catálogo \ Modelo \ Produto \ Visibilidade') -> getVisibleInSiteIds ()); ?> <? php foreach ($ collecti
Rakesh Donga
Você verificou este código? está funcionando? Não está funcionando para mim.
Chirag Patel
sim este código de trabalho para mim
Rakesh Donga
$_product->getSpecialPrice();não está funcionando para mim
Chirag Patel
if($orgprice > $specialprice){ echo $_product->getSpecialPrice(); }
Rakesh Donga

Respostas:

21

Você pode obter preços regulares e preços finais de todos os tipos de produtos usando o caminho abaixo.

  1. Produto Simples
$regularPrice = $product->getPriceInfo()->getPrice('regular_price')->getValue();
$specialPrice = $product->getPriceInfo()->getPrice('special_price')->getValue();
  1. Produto configurável
if ($product->getTypeId() == 'configurable') {
      $basePrice = $product->getPriceInfo()->getPrice('regular_price');

      $regularPrice = $basePrice->getMinRegularAmount()->getValue();
      $specialPrice = $product->getFinalPrice();
}
  1. Pacote de produtos
if ($product->getTypeId() == 'bundle') {
      $regularPrice = $product->getPriceInfo()->getPrice('regular_price')->getMinimalPrice()->getValue();
      $specialPrice = $product->getPriceInfo()->getPrice('final_price')->getMinimalPrice()->getValue();            
}
  1. Produto do grupo
if ($product->getTypeId() == 'grouped') {
      $usedProds = $product->getTypeInstance(true)->getAssociatedProducts($product);            
      foreach ($usedProds as $child) {
          if ($child->getId() != $product->getId()) {
                $regularPrice += $child->getPrice();
                $specialPrice += $child->getFinalPrice();
          }
      }
}

Nota: No exemplo acima, $ product é o produto atual.

Chirag Patel
fonte