Pregunta

Necesito actualizar la página de la carro y mostrar un bloque personalizado en caso de que mis grandes totales sea negativo.

$grandTotal = Mage::helper('checkout/cart')->getQuote()->getGrandTotal();

Esto imprime -$2,269.50, pero cuando uso la condición de abajo, simplemente no funciona.

If ($grandTotal < 0 ){
//do something
}else{
//do something else
}

¿Cómo puedo verificar si el número es menor que 0 I.E. Negativo

gracias

¿Fue útil?

Solución

Su problema es que GetGrandTotal está devolviendo una cadena en lugar de un número.Tratando de ver si una cadena es menor, entonces 0 no va a funcionar.

Puede filtrar la cadena y eliminar cualquier cosa que no sea un número usando

filter_var($grandTotal, FILTER_SANITIZE_NUMBER_INT);

que en su caso volvería -226950 que puede verificar si es más bajo, entonces, si necesita realizar cheques adicionales, deberá manejar la forma en que elimina el separador entre ellibras y penique.

if(filter_var($price,FILTER_SANITIZE_NUMBER_INT) < 0) {
    // Do something
} else {
    // Do something else
}

Otros consejos

Si desea la cantidad exacta también, puede usar

$currency_sign = "$";
$actual_amount = str_replace($currency_sign,'',$grandTotal); // $grandTotal is -$2,269.50
if($actual_amount < 0) { //$actual_amount will have the value as -2,269.50
    // Do something
} else {
    // Do something else
}

Todo lo que necesita es usar el signo de moneda correcto.Puede obtener el signo de moneda actual por el siguiente código:

Mage::app()->getLocale()->currency(Mage::app()->getStore()->getCurrentCurrencyCode())->getSymbol();

sugiero que en lugar de usar

$grandTotal = Mage::helper('checkout/cart')->getQuote()->getGrandTotal();

Por favor, use

$quote = Mage::helper('checkout/cart')->getQuote();
$quoteData= $quote->getData();
$grandTotal=$quoteData['grand_total'];

Da un valor de entero / flotador adecuado.

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