Comprobación de tipos de precios de producto configurables-hijo (fijo o porcentaje)
-
16-10-2019 - |
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;
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'] . " (+ £" . $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"] . " (+ £";
//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.
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.