Pregunta

He creado una página imprimible de detalles del producto y todo funciona bien. Lo único que está fallando es verificar si el tipo de precio infantil del producto es fijo o porcentaje;

enter image description here

He obtenido con éxito opciones personalizadas con éxito para el tipo de precio de la siguiente manera;

//get options                   
            $options = $product->getOptions();

        foreach ($options as $option)
        {
            $o = $option->getValues();

            foreach ($o as $v)
            {
                //if price_type fixed = echo price
                if ($v["price_type"] == "fixed")
                {
                    $optPrice = $v["price"];
                } //else percent = echo product price + %
                else
                {
                    $optPrice = $priceExcTax * ($v["price"]/100);
                }

                //number_format price
                $optPrice = number_format($optPrice, 2);

                //echo price and title

                $output .= $v['title'] . " (+ &pound;" . $optPrice . " + VAT)<br />";
            }
        }

Esperaba que esto funcionara de manera similar para los productos infantiles, pero he probado lo siguiente sin suerte;

$confAttributes = $product->getTypeInstance(true)->getConfigurableAttributesAsArray($product);
                        foreach ($confAttributes as $confAttribute)
                        {
                            echo "<em>Choose " . $confAttribute['store_label'] . "...</em><br />";

                            foreach ($confAttribute["values"] as $value)
                            {
                                echo $value["label"] . " (+ &pound;";

                                //if price_type fixed = echo price
                                if ($value["price_type"] == "fixed")
                                {
                                    $optPrice = $value["pricing_value"];
                                }
                                else //else percent = product price + %
                                {
                                    $optPrice = $priceExcTax * ($value["pricing_value"]/100);
                                }

                                $optPrice = number_format($optPrice,2);
                                echo $optPrice . " + VAT)<br />";
                            }
                        }

Habiendo buscado un poco, también he probado;

if ($value["is_percentage"])

sin suerte tampoco.

El precio de los productos infantiles siempre se considera fijo, ¿alguien puede ayudar?


ACTUALIZAR:

Incluso he buscado el producto que estoy probando en la base de datos sin procesar y puedo ver el campo 'is_percent', así que no estoy seguro de por qué cualquier cosa que intento no funciona.

¿Fue útil?

Solución 2

He encontrado mi respuesta, después de un poco de ayuda y más mirando mi código. Realmente @Mageuz respondió a mi pregunta, pero cuando la probé, no funcionó ya que estaba completamente al revés donde estaba poniendo el código.

Para verificar el precio, escriba el $value['is_percent'] El campo está ahí y funciona.

Lección que se debe aprender aquí, asegúrese de revisar su código y que esté poniendo las cosas correctas en los lugares correctos y, en segundo lugar, usando echo '<pre>' . print_r(<the-var-you-want>) . '</pre>' es una excelente herramienta.

Otros consejos

Usar if ($value["is_percent"]). Aquí está $confAttribute["values"] campos:

Array
(
    [product_super_attribute_id] => 11
    [value_index] => 45
    [label] => 4a
    [default_label] => 4a
    [store_label] => 4a
    [is_percent] => 1
    [pricing_value] => 10.0000
    [use_default_value] => 1
)

Y si utiliza el precio como porcentaje, debe ingresar un valor no tero válido a la entrada de precio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top