zorrobsas Posted September 18, 2017 Share Posted September 18, 2017 hola, necesito cambiar el origen de donde obtengo el stock disponible. Lo que hice fue hacer un override de StockAvailable. El stock me lo retonar en la ficha del producto sin problemas, el inconveniente que tengo es que una vez que obtiene el stock con mi función modificada. Me deja de funcionar el añadir el producto al carrito. La verdad que he estado buscando, y no se en que estoy fallando. Alguien me puede decir que se ejecuta al momento de hacer el click en el add-to-cart ? class StockAvailable extends StockAvailableCore { public static function getQuantityAvailableByProduct($id_product = null, $id_product_attribute = null, $id_shop = null) { .... $ch=curl_init($url); .... $stock = json_decode($ch); $cantidadStock = (int)$stock->stock; curl_close($ch); ... return $cantidadStock; } Link to comment Share on other sites More sharing options...
javier_direfentes Posted September 20, 2017 Share Posted September 20, 2017 Buenas, ¿has probado a activar los errores? ¿te aparece alguna información del error? En principio si tu función no tiene errores y devuelve lo mismo que la original, no debería afectar. Link to comment Share on other sites More sharing options...
zorrobsas Posted September 21, 2017 Author Share Posted September 21, 2017 hola Javier, el error se daba porque a la función al momento de hacer el add_to_cart en una de todas las pasadas que hace por la función pasa idProduct = 0. El problema ahora es que no encuentro de donde hace el llamado para que le pase un idproduct vacio/nulo/cero. Acote la clase para hacer la prueba class StockAvailable extends StockAvailableCore { public static function getQuantityAvailableByProduct($id_product = null, $id_product_attribute = null, $id_shop = null) { PrestaShopLogger::addLog(' Pasa por clase over', 1, null, 'over', (int)$id_product, true); return 1000; } } Link to comment Share on other sites More sharing options...
rimander Posted September 28, 2017 Share Posted September 28, 2017 (edited) Buenas, entiendo que aun sigues teniendo el problema. por lo ultimo que escribes, entiendo que en algun momento se llamana a getQuantityAvailableByProduct con $id_product null, verdad? Si lo colocas en la funcion te va a permitir ver su pila de llamadas. $e = new \Exception; var_dump($e->getTraceAsString()); eso lo pones en un if con id_product = 0 , null o lo que sea. Edited September 28, 2017 by rimander (see edit history) 1 Link to comment Share on other sites More sharing options...
zorrobsas Posted September 28, 2017 Author Share Posted September 28, 2017 Muchas gracias Link to comment Share on other sites More sharing options...
rimander Posted September 29, 2017 Share Posted September 29, 2017 Si encuentras el error, estaría bien si lo puedes comentar aqui para que gente que pueda tener el mismo error vea como solucionarlo. gracias. Link to comment Share on other sites More sharing options...
zorrobsas Posted September 29, 2017 Author Share Posted September 29, 2017 Buenos, En si no era un error sino un funcionamiento de prestashop. Al momento de agregar al carro. se llama desde CartController a if ($this->id_product_attribute) { if (!Product::isAvailableWhenOutOfStock($product->out_of_stock) && !Attribute::checkAttributeQty($this->id_product_attribute, $qty_to_check)) { $this->errors[] = $this->trans('There are not enough products in stock', array(), 'Shop.Notifications.Error'); } } elseif (!$product->checkQty($qty_to_check)) { $this->errors[] = $this->trans('There are not enough products in stock', array(), 'Shop.Notifications.Error'); } la funcion para Null ya que el id Atributo hace referencia al idProducto. public static function checkAttributeQty($idProductAttribute, $qty, Shop $shop = null) { if (!$shop) { $shop = Context::getContext()->shop; } $result = StockAvailable::getQuantityAvailableByProduct(null, (int) $idProductAttribute, $shop->id); return ($result && $qty <= $result); } En mi caso como consumo un webservice externo y me manejo solo con ID me terminaba retornando Error y no me agregaba nada al carro. Espero que se entienda. SAludos 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now