Magento 2: Cómo obtener el precio final y el precio original de todo tipo de producto

11

¿Cómo puedo obtener el precio original y el precio final de los siguientes tipos de productos?

  1. Producto simple
  2. Producto configurable
  3. Paquete de producto
  4. Producto grupal

Para un producto simple , puedo obtener el precio fácilmente usando el siguiente código.

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

Pero no puedo obtener el precio original y el precio final para el producto configurable , el producto combinado , el producto grupal

¿Hay alguna manera fácil de obtener ambos precios de todos los demás tipos de productos?


EDITAR:

Obtengo el precio Precio original y Precio final del producto configurable usando el siguiente código. y tomar referencia de get-price-range-configurable-product-magento-2

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

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

¡Cualquier ayuda sería apreciada! Gracias.

Chirag Patel
fuente
puede obtener el precio original y el precio final aquí <? php $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance (); $ productCollectionFactory = $ objectManager-> get ('\ Magento \ Catalog \ Model \ ResourceModel \ Product \ CollectionFactory'); $ colección = $ productCollectionFactory-> create (); $ colección-> addAttributeToSelect ('*'); $ colección-> addWebsiteFilter (); $ colección-> addMinimalPrice (); $ colección-> addFinalPrice (); $ colección-> addStoreFilter (); $ colección-> setVisibility ($ objectManager-> get ('\ Magento \ Catalog \ Model \ Product \ Visibility') -> getVisibleInSiteIds ()); ?> <? php foreach ($ collecti
Rakesh Donga
¿Has revisado este código? ¿está funcionando? No está funcionando para mí.
Chirag Patel
Si el código de trabajo para mí
Rakesh Donga
$_product->getSpecialPrice();no funciona para mí
Chirag Patel
if($orgprice > $specialprice){ echo $_product->getSpecialPrice(); }
Rakesh Donga el

Respuestas:

21

Puede obtener el precio regular y el precio final de todos los tipos de productos utilizando la siguiente manera.

  1. Producto simple
$regularPrice = $product->getPriceInfo()->getPrice('regular_price')->getValue();
$specialPrice = $product->getPriceInfo()->getPrice('special_price')->getValue();
  1. Producto configurable
if ($product->getTypeId() == 'configurable') {
      $basePrice = $product->getPriceInfo()->getPrice('regular_price');

      $regularPrice = $basePrice->getMinRegularAmount()->getValue();
      $specialPrice = $product->getFinalPrice();
}
  1. Paquete de producto
if ($product->getTypeId() == 'bundle') {
      $regularPrice = $product->getPriceInfo()->getPrice('regular_price')->getMinimalPrice()->getValue();
      $specialPrice = $product->getPriceInfo()->getPrice('final_price')->getMinimalPrice()->getValue();            
}
  1. Producto grupal
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: En el ejemplo anterior, $ product es el producto actual.

Chirag Patel
fuente