Jump to content

Error al crear pedido manual (Solucionado)


speedy13

Recommended Posts

Buenas tardes,

 

Desde hoy por la mañana me aparece un error cada vez que quiero realizar un pedido manual. El caso es que una vez selecciono el cliente, material, cantidad etc.. al apretar la casilla de "Crear pedido" me salta una pantalla con el error que adjunto. Alguien me puede ayudar??

 

Muchas gracias de antemano!

 

[PrestaShopException]

Property StockAvailable->id_product is empty
at line 909 in file classes/ObjectModel.php

904.             }905. 906.             $message = $this->validateField($field, $this->$field);907.             if ($message !== true) {908.                 if ($die) {909.                     throw new PrestaShopException($message);910.                 }911.                 return $error_return ? $message : false;912.             }913.         }914. 

 

Edited by speedy13 (see edit history)
  • Like 2
Link to comment
Share on other sites

 

 

[PrestaShopException]

Property StockAvailable->id_product is empty

at line 909 in file classes/ObjectModel.php

904. }

905.

906. $message = $this->validateField($field, $this->$field);

907. if ($message !== true) {

908. if ($die) {

909. throw new PrestaShopException($message);

910. }

911. return $error_return ? $message : false;

912. }

913. }

914.

 

Me está ocurriendo lo mismo desde que actualice a la versión 1.6.1.1. El caso es que algunos pedido no llegan completarse y se quedan en el carrito de compra del cliente.

 

Pense que solo me ocurría a mí pero veo que no soy el único.

Después de muchas pruebas lo que detecto es que esto ocurre solamente cuando se incorporan determinados productos a la cesta de la compra pero todavía no he podido deducir el porqué.

 

Saludos,

Edited by toitos (see edit history)
Link to comment
Share on other sites

Exacto toitos, solo ocurre con determinados productos y a mi también me ha pasado al actualizar a la versión 1.6.1.1. Algo hay aquí que no tenemos puesto bien... Voy a seguir mirando si encuentro el error, si logro verlo te informo. Espero que hagas lo mismo si encuentras el fallo.

 

Saludos

Link to comment
Share on other sites

Exacto toitos, solo ocurre con determinados productos y a mi también me ha pasado al actualizar a la versión 1.6.1.1. Algo hay aquí que no tenemos puesto bien... Voy a seguir mirando si encuentro el error, si logro verlo te informo. Espero que hagas lo mismo si encuentras el fallo.

 

Saludos

 

Hay que tener cuidado porque hay algunos pedidos automáticos que entran sin Estado de pago. O sea, que el pago por paypal o tarjeta se genera pero no llega a generarse el pedido y el administrador debe de tenerlo en cuenta para avisar al cliente. Solo ocurre en algunos pedidos que, según he podido observar, depende de los artículos que contengan. VAMOS, UN LIO.

Link to comment
Share on other sites

Acabo de notificar a Prestashop este posible bug. No obstante como no tengo claro si se ha enviado correctamente lo reporto seguidamente en inglés ...

 

 

ERROR COMPLETING THE ORDER
 
From update to v. 1.6.1.1 some orders don't confirm correctly.
 
All products are added correctly in the cart. When we want to complete the order it appears the following errors.
 
It seems that the error only appears when certain products are added as we could test so far. In fact some orders complete correctly and the customers receive confirmation as usual.
 
The other orders that are not completed the customer does not receive notification allthough in the backOffice we can see the order but incomplete data.
 
In the forum there are other people with the same bug. You can see it following the next link ... https://www.prestashop.com/forums/topic/465898-error-al-crear-pedido-manual/
 
Kind regards,

 

[PrestaShopException]

Property StockAvailable->id_product is empty
at line 909 in file classes/ObjectModel.php

904. }
905.
906. $message = $this->validateField($field, $this->$field);
907. if ($message !== true) {
908. if ($die) {
909. throw new PrestaShopException($message);
910. }
911. return $error_return ? $message : false;
912. }
913. }
914.

 

Link to comment
Share on other sites

SOLUCIONADO POR EL MOMENTO (A LA ESPERA DE ACTUALIZACION).- Parece ser que el error se genera en el archivo: classes/stock/StockAvailable.php

 

La solución, a la espera de actualización, es sobreescribir el archivo con el de la versión anterior, v. 1.6.1.0

Por el momento se generan los pedidos correctamente y no hay ningún error adicional por el momento.

 

Importante.- Después de sobreescribir el archivo ir al BackOffice y en: Parámetros-Rendimiento, vaciar la caché

 

No es el caso pero, si se os queda la pantalla del front en blanco, borrar el archivo: cache/class_index.php

  • Like 3
Link to comment
Share on other sites

SOLUCIONADO POR EL MOMENTO (A LA ESPERA DE ACTUALIZACION).- Parece ser que el error se genera en el archivo: classes/stock/StockAvailable.php

 

La solución, a la espera de actualización, es sobreescribir el archivo con el de la versión anterior, v. 1.6.1.0

Por el momento se generan los pedidos correctamente y no hay ningún error adicional por el momento.

 

Importante.- Después de sobreescribir el archivo ir al BackOffice y en: Parámetros-Rendimiento, vaciar la caché

 

No es el caso pero, si se os queda la pantalla del front en blanco, borrar el archivo: cache/class_index.php

 

Estoy escribiendo ahora mismo con un dolor de cabeza impresionante despues de toda la mañana dandole vueltas a mas no poder, gracias toitos, has sido mi aspirina! Esto es inaceptable para una tienda en producción, y mas en este caso una multitienda triple... en fin actualizar ya sabemos lo que tienes por mucho que te lo prepares en un dominio de pruebas al pasar a produccion siempre salen problemas. Saludos!

Link to comment
Share on other sites

A mi me pasaba lo mismo y así lo he solucionado tambien.

 

No se si os pasa a vosotros tambien, cuando estás generando el pedido manualmente y cambias la dirección, forma de envío o simplemente las unidades de un producto. No se actualiza. Es como si no se recargase.

 

A mi me sucede esto, lo curioso es que aunque sigas viendo pro ejemplo la cantidad de un artículo sin actualizar, en la cesta que crea si que se modifica. Salgo y vuelo a entrar y esta cambiado.

Link to comment
Share on other sites

Tengo que aclarar, a mi el problema me lo daba al usar paypal o el modulo de redsys, durante el proceso de pedido normal que haría un cliente. Hoy un dia despues tengo 2 pedidos hechos con esas formas de pago y veo que la forma de pago en el pedido esta como duplicada, no se de donde puede venir el problema, cuando encuentre de donde viene os digo.

Link to comment
Share on other sites

  • 1 month later...

I had this problem too! Lucky I had google translate as there were no solutions in english.  Our live 1.6.1.1 PrestaShop install kept showing zero products on some orders and the orders that did show would not empty the shopping cart at times. This led customers to double order when they saw products in their cart. Very unhappy boss and customers. By replacing the classes/stock/StockAvailable.php with the version in 1.6.1.0 and clearing the cache, both problems were fixed immediately.  Thank you!

  • Like 1
Link to comment
Share on other sites

  • 1 month later...

He comparado las 2 versiones y el unico cambio importante es en la funcion updateQuantity. Lo que he hecho es crear un modulo que hace override de la funcion.

El fallo se produce cuando el producto no tiene atributos (en mi caso, todos), se ve que alguien se olvidó de comprobarlo antes.

 

I've compared both versions and the only change is the updateQuantity function. I've made a module to override it.

The bug happens when a product has no attributes, somebody forgot to check it before.

 

v1.6.1.0

/**
	 * For a given id_product and id_product_attribute updates the quantity available
	 *
	 * @param int $id_product
	 * @param int $id_product_attribute Optional
	 * @param int $delta_quantity The delta quantity to update
	 * @param int $id_shop Optional
	 */
	public static function updateQuantity($id_product, $id_product_attribute, $delta_quantity, $id_shop = null)
	{
		if (!Validate::isUnsignedId($id_product))
			return false;

		$id_stock_available = StockAvailable::getStockAvailableIdByProductId($id_product, $id_product_attribute, $id_shop);

		if (!$id_stock_available)
			return false;

		// Update quantity of the pack products
		if (Pack::isPack($id_product))
		{
			if (Validate::isLoadedObject($product = new Product((int)$id_product)))
			{
				if ($product->pack_stock_type == 1 || $product->pack_stock_type == 2 || ($product->pack_stock_type == 3 && Configuration::get('PS_PACK_STOCK_TYPE') > 0))
				{
					$products_pack = Pack::getItems($id_product, (int)Configuration::get('PS_LANG_DEFAULT'));
					foreach ($products_pack as $product_pack)
						StockAvailable::updateQuantity($product_pack->id, $product_pack->id_pack_product_attribute, $product_pack->pack_quantity * $delta_quantity, $id_shop);
				}


				$stock_available = new StockAvailable($id_stock_available);
				$stock_available->quantity = $stock_available->quantity + $delta_quantity;

				if ($product->pack_stock_type == 0 || $product->pack_stock_type == 2 ||
					($product->pack_stock_type == 3 && (Configuration::get('PS_PACK_STOCK_TYPE') == 0 || Configuration::get('PS_PACK_STOCK_TYPE') == 2)))
					$stock_available->update();
			}
			else
				return false;
		}
		else
		{
			$stock_available = new StockAvailable($id_stock_available);
			$stock_available->quantity = $stock_available->quantity + $delta_quantity;
			$stock_available->update();
		}

		Cache::clean('StockAvailable::getQuantityAvailableByProduct_'.(int)$id_product.'*');

		Hook::exec('actionUpdateQuantity',
				array(
					'id_product' => $id_product,
					'id_product_attribute' => $id_product_attribute,
					'quantity' => $stock_available->quantity
				)
		);

		return true;
	}

v1.6.1.1+

/**
     * For a given id_product and id_product_attribute updates the quantity available
     * If $avoid_parent_pack_update is true, then packs containing the given product won't be updated
     *
     * @param int $id_product
     * @param int $id_product_attribute Optional
     * @param int $delta_quantity The delta quantity to update
     * @param int $id_shop Optional
     */
    public static function updateQuantity($id_product, $id_product_attribute, $delta_quantity, $id_shop = null)
    {
        if (!Validate::isUnsignedId($id_product)) {
            return false;
        }
        $product = new Product((int)$id_product);
        if (!Validate::isLoadedObject($product)) {
            return false;
        }

        $stockManager = Adapter_ServiceLocator::get('Core_Business_Stock_StockManager');
        $stockManager->updateQuantity($product, $id_product_attribute, $delta_quantity, $id_shop = null);
        return true;
    }
Edited by gu78 (see edit history)
  • Like 1
Link to comment
Share on other sites

SOLUCIONADO POR EL MOMENTO (A LA ESPERA DE ACTUALIZACION).- Parece ser que el error se genera en el archivo: classes/stock/StockAvailable.php

 

La solución, a la espera de actualización, es sobreescribir el archivo con el de la versión anterior, v. 1.6.1.0

Por el momento se generan los pedidos correctamente y no hay ningún error adicional por el momento.

 

Importante.- Después de sobreescribir el archivo ir al BackOffice y en: Parámetros-Rendimiento, vaciar la caché

 

No es el caso pero, si se os queda la pantalla del front en blanco, borrar el archivo: cache/class_index.php

 

Muchísimas gracias por el aporte, tu solución me ha salvado.

 

Saludos.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

SOLUCIONADO POR EL MOMENTO (A LA ESPERA DE ACTUALIZACION).- Parece ser que el error se genera en el archivo: classes/stock/StockAvailable.php

 

La solución, a la espera de actualización, es sobreescribir el archivo con el de la versión anterior, v. 1.6.1.0

Por el momento se generan los pedidos correctamente y no hay ningún error adicional por el momento.

 

Importante.- Después de sobreescribir el archivo ir al BackOffice y en: Parámetros-Rendimiento, vaciar la caché

 

No es el caso pero, si se os queda la pantalla del front en blanco, borrar el archivo: cache/class_index.php

 

Muchas Gracias!!! fue mi solución!!! ahora no entiendo a los programadores de prestashop!! ya van por las 1.6.1.3 y todavía no arreglaron semejante problema!!! No se puede reportar?

 

saludos

Link to comment
Share on other sites

  • 2 weeks later...

Buenos días,

 

Yo cuando actualicé a las version 1.6.1.2 me pasó lo mismo, al hacer la sustitución por el archivo de la 1.6.1.0 me funcionó bien.

 

Al proceder a actualizar a la versión 1.6.1.3 he visto que me ha vuelto a pasar lo mismo, si sustituyo el archivo por el de la misma versión vuelve a funcionar, pero alguien sabe si esto se le va a dar solución?

 

O tenemos que andar cambiandolo con cada actualización.

 

Un saludo,

Link to comment
Share on other sites

  • 4 months later...

Acabo de actualizar a las versión 1.6.1.5 y sigue sucedido exactamente esto. Da error 500 a la hora de generarse el pedido y en backoffice a mi se me genera sin estado y sin verse ningún artículo.

 

Hay alguna solución o a que se puede deber, porque desde varias actualizaciones no entiendo que no se le de solición.

Link to comment
Share on other sites

Acabo de actualizar a las versión 1.6.1.5 y sigue sucedido exactamente esto. Da error 500 a la hora de generarse el pedido y en backoffice a mi se me genera sin estado y sin verse ningún artículo.

 

Hay alguna solución o a que se puede deber, porque desde varias actualizaciones no entiendo que no se le de solición.

 

Me paso lo mismo en la 1.6.1.5 - asi que vuelvo a pisar con un archivo del 2015. 

Link to comment
Share on other sites

  • 2 months later...

Buena,

En mi caso, lo que me sucede es que al intentar crear un pedido desde el Back Office, cuando tengo localizado el producto e introducida la cantidad que quiero añadir en el carro, al dar al boton "añadir al carrito" no se añade nada, no refresca y aparentemente tras pulsar el boton, no ha hecho nada, pero si salgo y vuelvo a entrar, si que ha creado un carrito con ese producto.

 

Alguna pista?

 

Muchas gracias a todos.

Link to comment
Share on other sites

  • nadie locked this topic
Guest
This topic is now closed to further replies.
×
×
  • Create New...