¿Cómo obtener el nivel de precio del producto magento2?

11

¿Cómo obtener el nivel de precio del producto en Magento 2 con código personalizado?

Este es mi codigo

 public function getProductCollection()
    {
        $collection = $this->_productCollectionFactory->create();
        $collection->addAttributeToSelect('*');
         $collection->setOrder('created_at', 'DESC');
        // $collection->setPageSize(3); // fetching only 3 products
        return $collection;
    }

y mi función de llamada en .phtml

  $productCollection = $block->getProductCollection();
   $productCollection->setPageSize(2);
            foreach ($productCollection as $product) {

 echo $product->getName();
 print_r($product->getTierPrice());

echo getName, getPrice, getSpecial price works

pero getTierPrice no funciona.

ex. Tengo una tarjeta de miembro VIP (grupo_cliente) Quiero mostrar la tarjeta de miembro VIP de precio de nivel al público, no configurar todo el grupo Quiero mostrar la tarjeta de miembro VIP de precio de nivel

tttk
fuente

Respuestas:

6

Puede obtener el TierPrice de la siguiente manera.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product_obj = $objectManager->create('Magento\Catalog\Model\Product')->load(1);                
$tier_price = $product_obj->getTierPrice();
if(count($tier_price) > 0){
    foreach($tier_price as $pirces){
        foreach ( array_reverse($pirces) as $k => $v ) {
            if($k == "price"){
                $tp = number_format($v, 2, '.', '');
                echo $tp;
            }
        }
    }
}

$product_objSi tiene datos de un producto, por favor verifíquelo o estúrelo. Funcionará al 100%. mira mi foto de registro a continuación.

ingrese la descripción de la imagen aquí

Cree un constructor en su clase e inicie el objeto de clase. Desde ese Objeto puedes hacer cosas.

Bojjaiah
fuente
que la página en blanco cuando corro el código no echo precio tier
tttk
@tttk ver mi respuesta actualizada.
Bojjaiah
lo siento señor, ¿tiene un código completo para hacer eco de tier_price? aquí mi código foreach ($ tier_price como $ pirces) {echo $ prirces ["price"]; // obtener cada uno}
tttk 01 de
@tttk ahora prueba mi código.
Bojjaiah
¿Qué es array_reverse ($ tier)? Variables $ tier?
tttk
7

Para obtener el precio de nivel para los grupos de clientes, use getTierPrices () en lugar de getTierPrice () . Consulte el código de ejemplo a continuación:

<?php
use \Magento\Framework\App\Bootstrap;
include('/www/magento2.1/app/bootstrap.php');

$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();

$state = $objectManager->get('\Magento\Framework\App\State');
$state->setAreaCode('frontend');

$productId = 1;
$product_obj = $objectManager->create('\Magento\Catalog\Model\Product')->load($productId);

getAnyGroup($product_obj);

function getAnyGroup($product_obj) {
    $tier_price = $product_obj->getTierPrices();

    if(count($tier_price) > 0){
        echo "price_qty\tprice\tCustomerGroupId\n";

        foreach($tier_price as $price){
            echo $price->getQty();
            echo "\t";
            echo $price->getValue();
            echo "\t";
            echo $price->getCustomerGroupId();
            echo "\t";
            echo "\n";
            print_r($price->getData());
            echo "\t";
            echo "\n";
        }
    }
}
Jun Xie
fuente
Funciona para mí en Obsever
Ankit Shah
cómo obtener todos los productos con precio de nivel. Quiero mostrar todo el precio del nivel hv del producto en una página diferente
Daniel_12
@ Daniel_12, ¿podemos obtener el precio del producto utilizando la identificación del grupo de clientes?
jafar pinjar
0

el código de Bojjaiah funciona pero muestra los precios de nivel como este: "2,252,132,001,88". ¿Cómo puedo ponerlos así: Compre 1 por 2,52 / Compre 2 por 2,13 / Compre 3 por 2,00 / Compre 4 por 1,88? ¡Gracias!

Este es el código original de Bojjaiah:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product_obj = $objectManager->create('Magento\Catalog\Model\Product')->load(1); $tier_price = $product_obj->getTierPrice();if(count($tier_price) > 0){
foreach($tier_price as $pirces){
    foreach ( array_reverse($pirces) as $k => $v ) {
        if($k == "price"){
            $tp = number_format($v, 2, '.', '');
            echo $tp;
        }
Anton Ulrich
fuente