Jump to content

Problemas Webservice no retorna todos los productos


Recommended Posts

Hola,

A ver si alguien me puede ayudar, tengo activado el webservice en el Prestashop (versión 1.7.6.4).

Accedo sin problemas a todo, imagenes, productos, ...

El problema viene cuando creo un producto nuevo, vuelvo a consultar el webservice pero el producto no esta.

Si consulto el id del producto, lo encuentra y muestra su información, pero cuando se pide un listado, no aparece.

He probado con el parámetro full y Filter, pero en ninguno aparece el producto.

Esto me pasa tanto con una aplicación que estoy diseñando, como directamente desde el backend del prestashop. lo puedo crear de ambas maneras pero el producto no aparece en los listados.

Si alguien sabe alguna solución, que me lo indique.

Gracias por vuestro tiempo.

Link to comment
Share on other sites

Exactamente no se lo que te está pasando, pero yo haría lo siguiente:

Compara las tablas:

ps_product, ps_product_shop, ps_product_lang con un artículo que si veas en el webservice y el que no.

 

Si no aparece en la lista (supongo que te refieres a la consulta api https://TUWEB.COM/api/product/)

Creo que cuando has creado el artículo algún campo has enviado un valor que no es o similar.

Yo por ejemplo en su día me pasó algo parecido y enviaba mal el valor de ps-product -> state

 

Un saludo.

Link to comment
Share on other sites

Hola,

He revisado las tablas que me indicas, pero no hay nada fuera de los comun, los campos son todos iguales, salvo la fecha de alta.

Esto sucede tanto con el webservice como con el propio backend del prestashop, se crea el articulo, se muestra en el listado del catalogo, tambien sale en la web.

Pero a la hora de consultar los listado del webservice, no muestra el producto, sin embargo, la ruta al producto si funciona.

Revisando las otras tablas de la Base de Datos, observo que la tabla ps_product_sale, no tiene el registro creado. Creando el registro manualmente, si se muestra en los listados.

Ahora, después de borrarlo, a través del backend, sigue apareciendo en los listados.

He comprobado si existia la referencia en la tabla ps_product_sale y ya no estaba.

Alucinante.

Creo que tendré que atacar a la base de datos directamente para comprobar si existe o no los productos y también para sacar los listados. Para crearlo usare el webservice, que mueve todo lo que necesito para que se muestre.

Si alguien puede ayudarme, se lo agradezco.

Gracias de nuevo,

Link to comment
Share on other sites

Yo tengo lo siguiente:

Cuando muevo articulos de una web a otra, como quiero que los ids sean los mismos ejecuto lo siguiente antes de pasarle los datos por el webservice:

 

$ahora = date("Y-m-d H:i:s");
$idigualado = ID_ORIGEN-DESTINO;

            $sql[1] = "INSERT INTO ps_product (id_product, id_supplier, id_manufacturer, id_category_default, id_shop_default, id_tax_rules_group, on_sale, online_only, ean13, isbn, upc, ecotax, quantity, minimal_quantity, low_stock_threshold, low_stock_alert, price, wholesale_price, unity, unit_price_ratio, additional_shipping_cost, reference, supplier_reference, location, width, height, depth, weight, out_of_stock, additional_delivery_times, quantity_discount, customizable, uploadable_files, text_fields, active, redirect_type, id_type_redirected, available_for_order, available_date, show_condition, `condition`, show_price, indexed, visibility, cache_is_pack, cache_has_attachments, is_virtual, cache_default_attribute, date_add, date_upd, advanced_stock_management, pack_stock_type, state) 
        VALUES (".$idigualado.", 0, 1, 1, 1, 0, 0, 0, '', '', '', '0', 0, 1, 0, 0, '0', '0', '', '0', '0.00', 'REFERENCE', '', '', '0', '0', '0', '0', 2, 1, 0, 0, 0, 0, 0, '404', 0, 1, '0000-00-00', 0, 'new', 1, 1, 'both', 0, 0, 0, 0, '".$ahora."', '".$ahora."', 0, 3, 1);";
            $sql[2] = "INSERT INTO ps_product_lang (id_product, id_shop, id_lang, description, description_short, link_rewrite, meta_description, meta_keywords, meta_title, name, available_now, available_later, delivery_in_stock, delivery_out_stock) 
        VALUES ";
            foreach($lang_d['ori'] as $iso_lang)
            {
                $sql[2] .= "(".$idigualado.", 1, ".$lang_d['des'][$iso_lang].", '', '', '', '', '', '', 'Nuevo Producto', '', '', '', ''),";
            }
            $sql[2] = trim($sql[2], ',').";";

            $sql[3] = "INSERT INTO ps_product_shop (id_product, id_shop, id_category_default, id_tax_rules_group, on_sale, online_only, ecotax, minimal_quantity, low_stock_threshold, low_stock_alert, price, wholesale_price, unity, unit_price_ratio, additional_shipping_cost, customizable, uploadable_files, text_fields, active, redirect_type, id_type_redirected, available_for_order, available_date, show_condition, `condition`, show_price, indexed, visibility, cache_default_attribute, advanced_stock_management, date_add, date_upd, pack_stock_type) 
        VALUES (".$idigualado.", 1, 1, 0, 0, 0, '0', 1, 0, 0, '0', '0', '', '0', '0.00', 0, 0, 0, 0, '404', 0, 1, '0000-00-00', 0, 'new', 1, 1, 'both', 0, 0, '".$ahora."', '".$ahora."', 3);";
            $sql[4] = "INSERT INTO ps_stock_available (id_stock_available, id_product, id_product_attribute, id_shop, id_shop_group, quantity, physical_quantity, reserved_quantity, depends_on_stock, out_of_stock, location) 
        VALUES (Null, ".$idigualado.", 0, 1, 0, 0, 0, 0, 0, 2, '');";

Puedes observar que le asigno a los insert el ID origen para que coincida con el destino y recorro los idiomas destino para incorporar los pr_product_lang.

 

Por supuesto compruebo que el ID en destino no existe y demás.

 

Yo con esas cuatro tablas no tengo problemas luego para hacer un webservice -> Edit y listo.

 

Espero que te ayude.

Edited by [email protected] (see edit history)
Link to comment
Share on other sites

Hola, 

Si soluciones tengo, pero la idea es utilizar el WebService, que para eso esta y no tener que estar conectando a la Base de Datos para hacer comprobaciones o pasos previos.

Al final usaré el WebService para enviar registros nuevos y actualizarlos, que esto si funciona y los productos se muestran el la web sin problemas pero los listados los tendré que sacar por Base de Datos.

Una pena que el WebService no este bien construido.

Repito, todo va bien, salvo los listados, no retornan los productos creados a través del WebService, incluso si lo creo en el BackEnd, tampoco aparece en los listado.

Como me aconsejaste, he revisado la configuración en Base de Datos de otro articulo, pero no veo diferencias.

Si alguien tiene alguna otra idea de lo que sucede o tiene una solución, por favor que alumbre mi camino 😅

Gracias por vuestro tiempo,

Link to comment
Share on other sites

No me has entendido, creo,

te pasé los datos que yo aporto a un producto nuevo para que compruebes que todos ellos los rellenas en el webservice correctamente.

El webservice funciona bien, yo de echo cuando no requiero que los ids sean conincidentes solo uso el webservice y me sube y me lista correctamente (V PS 1.7.X, no he probado 1.6, pero estoy seguro de que va bien también)

Ayudarte además sin aportar el código que utilizas es más bien difícil.

Un saludo.

 

 

Link to comment
Share on other sites

Hola,

Lo revisare de nuevo y si puedo te dejo parte del código.

Pero repito, también me pasa con los artículos creados en el propio backend, se crea sin problemas, pero no se muestra tampoco.

No se si existe alguna limitación de campos a la hora de crear el producto (En el BackEnd porque el webservice te da error si falta algo), yo he puesto el nombre, una foto y su precio a la hora de crearlo en el backend y se muestra en la web, pero no sale en los listados.

Solo me lista los artículos que habían hasta el momento de activar el WebService, el resto no los lista.

Intentaré actualizar la versión y volveré a probar.

Seguimos en la lucha.🤔

 

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...