Jump to content

Webservice y posición de los productos en una categoría


Recommended Posts

Buenas tardes,

tenemos un ecommerce desarrollado con Prestashop 1.6. Dicho ecommerce utiliza el webservice de Prestashop para sincronizar productos a través de un conector con un erp. 

El problema que se nos presenta es el siguiente:

  • los productos se sincronizan correctamente
  • desde backoffice cambiamos la posición de los productos dentro de una categoría
  • los productos se posicionan en el front de manera correcta
  • volvemos a sincronizar productos y se pierden las posiciones de los productos dentro de una categoría que habíamos definido desde backoffice

 

¿De qué manera se podría modificar el webservice de Prestashop para que no actualice el campo position de la tabla ps_category_product?

Muchas gracias por su ayuda

Link to comment
Share on other sites

Gracias jgamio, hasta ahí llegamos.

El tema es que el webservice de Prestashop actualiza el campo automáticamente y lo que queremos es modificar el webservice para que no lo actualice. 

La cuestión es cómo modificar el webservice y dónde.

 

Link to comment
Share on other sites

Hola gusman126.

Muchas gracias por tu sugerencia, pero el conector que utilizamos ha sido desarrollado por un tercero y habría que contratar ese nuevo desarrollo. Por eso pensamos que la mejor opción sería modificar el webservice de Prestashop y evitar que el campo se actualice.

Un saludo

Link to comment
Share on other sites

hace 3 horas, marloru dijo:

Hola gusman126.

Muchas gracias por tu sugerencia, pero el conector que utilizamos ha sido desarrollado por un tercero y habría que contratar ese nuevo desarrollo. Por eso pensamos que la mejor opción sería modificar el webservice de Prestashop y evitar que el campo se actualice.

Un saludo

 

El problema del sistema Webservice de Prestashop y que yo sepa de todos los sistemas, es que el control de añadir, actualizar datos no lo gestiona directamente el webservice, lo que hace es llamar al codigo necesario del sistema, por lo que incluso si se pudiera cambiar el codigo del webservice, no serviria, porque realmente esta llamando a las ordenes internas.

Esto es lo que realiza mas o menos , segun lo que he podido entender de usarlo, ya que la ayuda es de pena.

  • Software o conector externo hace una llamada al Webservice 
  • ¿que productos tienes?
  • El websevice lee esa orden, busca en el codigo interno ¿ que productos hay activos ?
  • El codigo interno le da un listado
  • El webservice le contesta al conector "Tengo estos : lista"

Puedes ver este ejemplo usando tu dominio y la url :

dominio.com/api/products?filter[active]=[1]&sort=[id_DESC]

Si pones la API activa veras una lista de productos, el web service esta mostrando la información que ofrece el codigo interno del Prestashop.

El cambio de codigo se debe hacer en el conector mas facil, menos problematico y si actualizas el Prestashop no hay problema

Otras maneras siempre van a dar problemas, si modificas codigo interno , tanto al actualizar un producto como al añadirlo o si funciona, al actualizar el Prestashop tendras problemas.

 

Edited by gusman126 (see edit history)
  • Thanks 1
Link to comment
Share on other sites

hace 3 horas, marloru dijo:

Gracias de nuevo gusman126

seguiremos estudiando el tema y contactaremos con el desarrollador del conector.

 

 

De nada, lo que no me queda claro al leer tu primer mensaje , es si el contector esta en el software ERP o es externo y añadido como un modulo o codigo al Prestashop

Link to comment
Share on other sites

On 6/8/2018 at 4:42 AM, marloru said:

Hola gusman126.

Muchas gracias por tu sugerencia, pero el conector que utilizamos ha sido desarrollado por un tercero y habría que contratar ese nuevo desarrollo. Por eso pensamos que la mejor opción sería modificar el webservice de Prestashop y evitar que el campo se actualice.

Un saludo

 

Puedes hacer un override del la clase Product exactamente la funcion setWsPositionInCategory,

 

pero el tema es como funciona el conector y que datos envia pudieras ( no es lo mas eficiente) pero pudieras chequear por el codigo del producto antes de realizar la asignacion por ejemplo

 

 

 

 

 

 

 

 

 

Link to comment
Share on other sites

hace 9 horas, jgamio dijo:

 

Puedes hacer un override del la clase Product exactamente la funcion setWsPositionInCategory,

 

pero el tema es como funciona el conector y que datos envia pudieras ( no es lo mas eficiente) pero pudieras chequear por el codigo del producto antes de realizar la asignacion por ejemplo

 

 

 

 

 

 

 

 

 

 

Pregunta ->  ¿cuando este en el BO e intente hacer algo con las posiciones, hara caso al Override o al codigo correcto y original que esta funcionando bien?

Veo que la funcion es Wsxxxx, por eso lo pregunto

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

On 6/12/2018 at 3:57 AM, gusman126 said:

 

Pregunta ->  ¿cuando este en el BO e intente hacer algo con las posiciones, hara caso al Override o al codigo correcto y original que esta funcionando bien?

Veo que la funcion es Wsxxxx, por eso lo pregunto

 

Esa es la funcion especifica que usa el webservice, no afecta el uso en ninguna de las operaciones que realices desde el backoffice o fuera del webservice

 

  • Like 1
Link to comment
Share on other sites

Hola a todos,

hemos hecho un override de la clase product.php "vaciando" la función setWXPositionInCategory y funciona perfectamente. Cuando haces cambios desde backoffice, las posiciones asignadas se graban en BBDD y la sincronización de productos a través de WS no las modifica.

Doy el tema por solucionado.

Muchas gracias a todos por la ayuda. 

Un saludo

  • Like 1
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...