Compruebe si el gran total es negativo.
-
12-12-2019 - |
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
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.