Jump to content

[SOLUCIONADO] Manejar cantidades de stock mediante módulo PS Multistore en PHP?


tuvika

Recommended Posts

NOTA: V 1.5.6.2

Buenas tardes a todos,

 

Llevo unos días peleándome con la forma correcta de poner una cantidad fija de unidades en stock para productos que se importan mediente un módulo php desde un servicio de terceros.

 

El códido antes estaba probado y funcionaba perfectamente en un prestashop normal, pero de última hora se ha requerido usar un prestashop multistore, y el código ha empezado a fallar en el punto de dicha actualización de stock.

 

El método que estaba usando antes era este:

 

StockAvailable::setQuantity(Tools::getValue((int)$producto->id), '', Tools::getValue(10000));

 

Y la verdad que funcionaba sin ningún problema, cada uno de los articulos importados tenía la cantidad indicada (requisito del proyecto que fuera esa :P)

 

Al convertise en multistore, vi que la función fallaba y busqué dentro del código de prestashop a ver como lo hacía, y no he visto nada raro, con la única diferencia que para multistore, dicha función puede recibir un parámetro extra, haciendo referencia a cual de las tiendas se va asignar el stock de dicho producto, quedando tal que así:

 

StockAvailable::setQuantity(Tools::getValue((int)$producto->id), '', Tools::getValue(10000), (int)Configuration::get('PS_SHOP_DEFAULT'));

 

El caso que la ejecución la tengo dentro de un bloque try - catch, y con un manejador de errores para capturarlos y obtener algo más de información extra, que durante todo el desarrollo ha servido bastante bien, pero en este caso la única información que recibo de php al cascar es: Fatal error, sin ningún tipo más de referencia a lineas de código o funciones de php/prestashop.

 

Me estoy quedando sin ideas para hacerlo a la manera prestashop y creo que al final la única manera será hacerlo a lo "bruto", haciendo insert/update para el stock de cada producto, pero no tengo muy clara la distribución de las tablas que contienen los datos de stock en el nuevo multistore.

 

¿Alguna ayuda?

 

Saludos y gracias por leeros el ladrillo :)

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

  • 3 weeks later...

Solución encontrada, al trabajar con multititienda en PS >=1.5, no estaba usando correctamente el contexto de tienda, y la linea para gestionar las cantidades de stock no estaba de lo más correcta.

 

Además, para poder indicar a que tienda en concreto se quieren añadir los productos y el stock, ha sido necesario añadir a la configuración del módulo un nuevo selectbox con las posibles opciones de tiendas de la instalación.

 

Así que por una parte, antes de añadir productos y cantidades, es necesario establecer el contexto de tienda:

 

Shop::setContext(Shop::CONTEXT_SHOP, $this->tiendaps);

 

Y para la modificación de la cantidad queda así:

 

StockAvailable::setQuantity((int)$producto->id, null, 10000, (int)$this->tiendaps);

 

Saludos! :D

Link to comment
Share on other sites

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