Jump to content

Edit History

Manuel_GT

Manuel_GT

Hola @ventura

Efectivamente. El problema es que si uso por ejemplo:

                /* Lo intentamos con el querybus */
                /* @var ProductFormDataProvider $productProvider */
                $queryBus = $this->get('prestashop.core.query_bus');
                $productProvider = new ProductFormDataProvider(
                    $queryBus, $this->getConfiguration(), $this->getContextLangId(), $this->getContextShopId(),null);
                $product = $productProvider->getData($id);

Esto me devuelve un array en lugar de un objeto Product que es lo que aún necesita recibir el método updateQuantity de StockManager por lo que realmente  ahora mismo veo que está todo aún con fuerte dependencia del ObjectModel antiguo. Y me sorprende ya que esta clase está supuestamente ya migrada y reside en:

PrestaShop\PrestaShop\Core\Stock\StockManager

Por eso la use... pensaba que estaba trabajando en la parte symfony pero parece ser que no del todo.

No lo toco por ahora y espero a ver la versión 9 como lo hace.

Gracias!

NOTA: Perdón, por dar contexto pongo el trozo de código en el que tengo el problema ya que con lo expuesto no se entiende nada. En una clase de servicio, manipulo el stock de un producto. Para ello:

           $psStock = new StockManager();
            $id_shop = $this->configuration->get('PS_SHOP_DEFAULT',1,null);
            // Sacamos el producto
            $sfContainer = SymfonyContainer::getInstance();
            if (null === $sfContainer) {
                $this->logger->Log("changeStock -> Fallo al cargar el container para obtener el producto!",'ERROR');
                return $ret;
            }
            try {
                // MANOLO: TODO Hay que quitar este deprecated ¿COMO? No actualizar a 9 sin quitarlo!
                $productProvider = $sfContainer->get('prestashop.adapter.data_provider.product');
                $product = $productProvider->getProduct($stockObj->getIdProduct());
                // Debemos ver que forma tiene este método en la V9 ya que el actual espera un Product legacy
                $psStock->updateQuantity($product, $stockObj->getIdProductAttribute(), $qty, $id_shop, true);
            } catch (ServiceNotFoundException $e){
                $this->logger->Log("changeStock -> No encuentro el servicio 'prestashop.adapter.data_provider.product'. El stock de almacenes y de prestashop podría haberse desincronizado en "
                    . $qty . " unidades para id_stock " . $id_stock . ". Producto (" . $stockObj->getIdProduct() . "," . $stockObj->getIdProductAttribute() . ")",'WARN');
            }
/* Fin sincronización con stock Prestashop */

 

Manuel_GT

Manuel_GT

Hola @ventura

Efectivamente. El problema es que si uso por ejemplo:

                /* Lo intentamos con el querybus */
                /* @var ProductFormDataProvider $productProvider */
                $queryBus = $this->get('prestashop.core.query_bus');
                $productProvider = new ProductFormDataProvider(
                    $queryBus, $this->getConfiguration(), $this->getContextLangId(), $this->getContextShopId(),null);
                $product = $productProvider->getData($id);

Esto me devuelve un array en lugar de un objeto Product que es lo que aún necesita recibir el método updateQuantity de StockManager por lo que realmente  ahora mismo veo que está todo aún con fuerte dependencia del ObjectModel antiguo. Y me sorprende ya que esta clase está supuestamente ya migrada y reside en:

PrestaShop\PrestaShop\Core\Stock\StockManager

Por eso la use... pensaba que estaba trabajando en la parte symfony pero parece ser que no del todo.

No lo toco por ahora y espero a ver la versión 9 como lo hace.

Gracias!

 

×
×
  • Create New...