Zangetsu Posted July 6, 2017 Share Posted July 6, 2017 Buenos días, estoy probando la modificación de un registro de productos de prestashop mediante webservice y tengo una duda: como campos obligatorios me pide el id, price, link_rewrite y name pero al ejecutarlo me vacia el resto de campos que no he rellenado. Solo quiero actualizar uno o dos campos en concreto, como el precio de coste, ¿tengo que construir todo el xml con todos los valores, no se puede que dando el id del producto y la etiqueta del campo que quiero modificar me cambie SOLO ese valor? Gracias. Link to comment Share on other sites More sharing options...
PSBlog Posted July 7, 2017 Share Posted July 7, 2017 Entiendo que estás desarrollando una conexión al WS ya que sólo comentas que haces la llamada pero sin especificar más. Tienes un ejemplo completo de conexión y edición de un registro aquí: https://github.com/PrestaShop/PrestaShop-webservice-lib/blob/master/examples/Update.php Link to comment Share on other sites More sharing options...
Zangetsu Posted July 7, 2017 Author Share Posted July 7, 2017 Gracias por responder, el problema es que no estoy usando php sino vb.net Este es el xml que le mando: <?xml version="1.0" encoding="UTF-8"?> <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <product> <id>1</id> <price>15.881818</price> <link_rewrite> <language id="1">link_rewrite_value</language> </link_rewrite> <name> <language id="1">product_name_value </language> </name> </product> </prestashop> Yo pensaba que indicando la etiqueta id del producto y las etiquetas con los campos a modificar actualizaría solo esos campos del producto pero me obliga ha indicar los campos del ejemplo anterior y encima me borro los que no le indique. Link to comment Share on other sites More sharing options...
Zangetsu Posted July 13, 2017 Author Share Posted July 13, 2017 (edited) Buenos días, he estado haciendo pruebas y he conseguido obtener la información de un producto por webservice y editar el campo quantity que es el que quiero modificar pero cuando lo ejecuto me dice Error: 400 Solicitud Incorrecta. Es el mismo XML que me da la api de prestashop salvo el valor cambiado de esa etiqueta. ¿Alguién sabe a que se debe? Gracias. <?xml version="1.0" encoding="UTF-8"?> <prestashop xmlns:xlink="http://www.w3.org/1999/xlink"> <product> <id><![CDATA[8]]></id> <id_manufacturer><![CDATA[0]]></id_manufacturer> <id_supplier><![CDATA[0]]></id_supplier> <id_category_default xlink:href="http://192.168.1.78/tienda/api/categories/2"><![CDATA[2]]></id_category_default> <new> </new> <cache_default_attribute><![CDATA[0]]></cache_default_attribute> <id_default_image notFilterable="true"> </id_default_image> <id_default_combination notFilterable="true"> </id_default_combination> <id_tax_rules_group xlink:href="http://192.168.1.78/tienda/api/tax_rule_groups/7"><![CDATA[7]]></id_tax_rules_group> <position_in_category notFilterable="true">5</position_in_category> <manufacturer_name notFilterable="true"> </manufacturer_name> <quantity notFilterable="true"><![CDATA[0]]></quantity> <type notFilterable="true"><![CDATA[simple]]></type> <id_shop_default><![CDATA[1]]></id_shop_default> <reference><![CDATA[169767]]></reference> <supplier_reference> </supplier_reference> <location> </location> <width><![CDATA[0.000000]]></width> <height><![CDATA[0.000000]]></height> <depth><![CDATA[0.000000]]></depth> <weight><![CDATA[0.000000]]></weight> <quantity_discount><![CDATA[0]]></quantity_discount> <ean13><![CDATA[3574660680034]]></ean13> <upc> </upc> <cache_is_pack><![CDATA[0]]></cache_is_pack> <cache_has_attachments><![CDATA[0]]></cache_has_attachments> <is_virtual><![CDATA[0]]></is_virtual> <on_sale><![CDATA[0]]></on_sale> <online_only><![CDATA[0]]></online_only> <ecotax><![CDATA[0.000000]]></ecotax> <minimal_quantity><![CDATA[1]]></minimal_quantity> <price><![CDATA[16.991736]]></price> <wholesale_price><![CDATA[9.940000]]></wholesale_price> <unity> </unity> <unit_price_ratio><![CDATA[0.000000]]></unit_price_ratio> <additional_shipping_cost><![CDATA[0.00]]></additional_shipping_cost> <customizable><![CDATA[0]]></customizable> <text_fields><![CDATA[0]]></text_fields> <uploadable_files><![CDATA[0]]></uploadable_files> <active><![CDATA[1]]></active> <redirect_type><![CDATA[404]]></redirect_type> <id_product_redirected><![CDATA[0]]></id_product_redirected> <available_for_order><![CDATA[1]]></available_for_order> <available_date><![CDATA[0000-00-00]]></available_date> <condition><![CDATA[new]]></condition> <show_price><![CDATA[1]]></show_price> <indexed><![CDATA[1]]></indexed> <visibility><![CDATA[both]]></visibility> <advanced_stock_management><![CDATA[0]]></advanced_stock_management> <date_add><![CDATA[2017-06-06 17:35:05]]></date_add> <date_upd><![CDATA[2017-06-12 11:58:09]]></date_upd> <pack_stock_type><![CDATA[3]]></pack_stock_type> <meta_description> <language id="1" xlink:href="http://192.168.1.78/tienda/api/languages/1"><![CDATA[]]></language> <language id="2" xlink:href="http://192.168.1.78/tienda/api/languages/2"><![CDATA[]]></language> </meta_description> <meta_keywords> <language id="1" xlink:href="http://192.168.1.78/tienda/api/languages/1"><![CDATA[]]></language> <language id="2" xlink:href="http://192.168.1.78/tienda/api/languages/2"><![CDATA[]]></language> </meta_keywords> <meta_title> <language id="1" xlink:href="http://192.168.1.78/tienda/api/languages/1"><![CDATA[]]></language> <language id="2" xlink:href="http://192.168.1.78/tienda/api/languages/2"><![CDATA[]]></language> </meta_title> <link_rewrite> <language id="1" xlink:href="http://192.168.1.78/tienda/api/languages/1"><![CDATA[prueba]]></language> <language id="2" xlink:href="http://192.168.1.78/tienda/api/languages/2"><![CDATA[prueba]]></language> </link_rewrite> <name> <language id="1" xlink:href="http://192.168.1.78/tienda/api/languages/1"><![CDATA[prueba]]></language> <language id="2" xlink:href="http://192.168.1.78/tienda/api/languages/2"><![CDATA[prueba]]></language> </name> <description> <language id="1" xlink:href="http://192.168.1.78/tienda/api/languages/1"><![CDATA[]]></language> <language id="2" xlink:href="http://192.168.1.78/tienda/api/languages/2"><![CDATA[]]></language> </description> <description_short> <language id="1" xlink:href="http://192.168.1.78/tienda/api/languages/1"><![CDATA[]]></language> <language id="2" xlink:href="http://192.168.1.78/tienda/api/languages/2"><![CDATA[]]></language> </description_short> <available_now> <language id="1" xlink:href="http://192.168.1.78/tienda/api/languages/1"><![CDATA[]]></language> <language id="2" xlink:href="http://192.168.1.78/tienda/api/languages/2"><![CDATA[]]></language> </available_now> <available_later> <language id="1" xlink:href="http://192.168.1.78/tienda/api/languages/1"><![CDATA[]]></language> <language id="2" xlink:href="http://192.168.1.78/tienda/api/languages/2"><![CDATA[]]></language> </available_later> <associations> <categories nodeType="category" api="categories"> <category xlink:href="http://192.168.1.78/tienda/api/categories/2"> <id><![CDATA[2]]></id> </category> </categories> <images nodeType="image" api="images" /> <combinations nodeType="combination" api="combinations" /> <product_option_values nodeType="product_option_value" api="product_option_values" /> <product_features nodeType="product_feature" api="product_features" /> <tags nodeType="tag" api="tags" /> <stock_availables nodeType="stock_available" api="stock_availables"> <stock_available xlink:href="http://192.168.1.78/tienda/api/stock_availables/53"> <id><![CDATA[53]]></id> <id_product_attribute><![CDATA[0]]></id_product_attribute> </stock_available> </stock_availables> <accessories nodeType="product" api="products" /> <product_bundle nodeType="product" api="products" /> </associations> </product> </prestashop> Edited July 13, 2017 by Zangetsu (see edit history) Link to comment Share on other sites More sharing options...
Zangetsu Posted July 14, 2017 Author Share Posted July 14, 2017 buenos días, ya puedo mandar los datos por webservice y no me da ningún error el response.El problema estaba en que los campos manufacturer_name y quantity era de solo lectura y por lo tanto no se tenian que pasar. Ahora mi única duda es porque no me cambia de posición el producto a la nueva posición indicada (Siempre me lo deja en la posición 1 duplicandolo con otro producto). Gracias!! Link to comment Share on other sites More sharing options...
Zangetsu Posted July 14, 2017 Author Share Posted July 14, 2017 Encontre la respuesta en este hilo: https://www.prestashop.com/forums/topic/452799-updating-product-positions-in-categories-using-webservice-api-16014/ pero como se menciona en el hilo existe un problema cuando se establece la nueva posición a 0. He seguido la modificación de la clase Products como se indica en este enlace: https://github.com/PrestaShop/PrestaShop/pull/5308/commits/39bb35e38f46358a667c2c08816c45f6295265bd pero sigue haciendo lo mismo. Cambia de posición pero cuando pongo la 0 para que este el primero ya en las siguientes no se mueve hasta que no lo arrastro manualmente. ¿Alguna idea? Gracias!!! Link to comment Share on other sites More sharing options...
Zangetsu Posted July 17, 2017 Author Share Posted July 17, 2017 Solucionado!! solo se tiene que corregir un pequeño fallo de la función que ejecuta la posición en el webservice. 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