neftalisg Posted February 28, 2021 Share Posted February 28, 2021 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 More sharing options...
[email protected] Posted March 1, 2021 Share Posted March 1, 2021 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 More sharing options...
neftalisg Posted March 1, 2021 Author Share Posted March 1, 2021 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 More sharing options...
[email protected] Posted March 1, 2021 Share Posted March 1, 2021 (edited) 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 March 1, 2021 by [email protected] (see edit history) Link to comment Share on other sites More sharing options...
neftalisg Posted March 3, 2021 Author Share Posted March 3, 2021 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 More sharing options...
[email protected] Posted March 3, 2021 Share Posted March 3, 2021 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 More sharing options...
neftalisg Posted March 3, 2021 Author Share Posted March 3, 2021 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 More sharing options...
[email protected] Posted March 3, 2021 Share Posted March 3, 2021 Lo de que cuando creas en el bakcend no se lista ya es más problemático. Solo se me ocurre - Que tengas un módulo que crea el problema (prueba a poner el modo sin módulos y crear un artículo). - Que tengas un override que te cree el problema. Yo empezaría por eso. 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