Jump to content

Recommended Posts

Hola chicos y chicas, me ha surgido un problema al crear pedidos mediante la API de prestashop con la version 1.6.1.20, dicho problema es un tanto complejo de explicar por lo que os lo intentare exponer de la manera mas sencilla que pueda.

 

1) En un primer lugar, creamos unos productos con un proceso que tambien hacemos por la api poniendolos un precio "X",  a continuación nos hemos puesto a volcar pedidos con sus lineas de carrito creandose con su precio correspondiente "A". El volcado de pedidos se hace correctamente, el problema viene cuando nos ponemos a ojear los datos del pedido generado.

Estos pedidos, cuyas lineas tienen un precio "A", al volcarse, la linea aparece con el precio "X", el cual viene del precio actual del prodcuto, mientras que el precio "A" de la linea del pedido, era el precio de ese producto hace tiempo. En definitiva, el pedido es de hace tiempo pero le estamos volcando ahora y al volcarlo, el pedido coge el precio del producto actual, obviando el precio que viene en el pedido.

2) Por otro lado, el pedido se crea en estado "error de pago", sin tener muy claro que puede estar pasando para que pase esto.

3) Otro de los problemas que nos encontramos, es que no sabemos como asociar distintos precios a distintos paises, ¿sabeis como hacerlo?

A continuación os dejo el carrito y el pedido:

CARRITO

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<cart>
	<id/>
	<id_address_delivery>706</id_address_delivery>
	<id_address_invoice>707</id_address_invoice>
	<id_currency>1</id_currency>
	<id_customer>306</id_customer>
	<id_guest/>
	<id_lang>1</id_lang>
	<id_shop_group>3</id_shop_group>
	<id_shop>1</id_shop>
	<id_carrier>32</id_carrier>
	<recyclable/>
	<gift/>
	<gift_message/>
	<mobile_theme/>
	<delivery_option/>
	<secure_key/>
	<allow_seperated_package/>
	<date_add/>
	<date_upd/>
	<associations>
		<cart_rows>
			<cart_row>
				<id_product>1643</id_product>
				<id_product_attribute/>
				<id_address_delivery>706</id_address_delivery>
				<quantity>1</quantity>
				<product_quantity>1</product_quantity>
			</cart_row>
		</cart_rows>
	</associations>
</cart>
</prestashop>

 

PEDIDO:

<?xml version="1.0" encoding="UTF-8"?>
<prestashop xmlns:xlink="http://www.w3.org/1999/xlink">
<order>
	
	<id_address_delivery>707</id_address_delivery>
	<id_address_invoice>706</id_address_invoice>
	<id_cart>310</id_cart>
	<id_currency>1</id_currency>
	<id_lang>1</id_lang>
	<id_customer>306</id_customer>
	<id_carrier>32</id_carrier>
	<current_state>4</current_state>
	<module>redsys</module>
	<invoice_number/>
	
	<delivery_number/>
	
	<valid/>
	
	
	<shipping_number>0</shipping_number>
	<id_shop_group/>
	<id_shop/>
	<secure_key>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</secure_key>
	<payment>RedSys</payment>
	<recyclable/>
	<gift/>
	<gift_message/>
	<mobile_theme/>
	<total_discounts/>
	
	
	<total_paid>174</total_paid>
	<total_paid_tax_incl>174</total_paid_tax_incl>
	<total_paid_tax_excl>174</total_paid_tax_excl>
	<total_paid_real>174</total_paid_real>
	<total_products>1</total_products>
	<total_products_wt>1</total_products_wt>
	<total_shipping/>
	<total_shipping_tax_incl/>
	<total_shipping_tax_excl/>
	<carrier_tax_rate/>
	<total_wrapping/>
	<total_wrapping_tax_incl/>
	<total_wrapping_tax_excl/>
	<round_mode/>
	<round_type/>
	<conversion_rate>1</conversion_rate>
	<reference/>

	<shipping_cost_tax_excl>0</shipping_cost_tax_excl>
	<shipping_cost_tax_incl>0</shipping_cost_tax_incl>
</order>
</prestashop>

 

Me podeis ayudar por favor? me gustaria poder subir los pedidos con el precio que corresponde al pedido y no con el que coja por defecto en el producto, no se si esto es posible, o siempre toma el valor del producto. 

Gracias!

Edited by ruben.bautista (see edit history)
Link to comment
Share on other sites

Hola:


Los precios registrados en un pedido y asociados a la compra de un producto en particular se almacenan en la tabla order_detail. La cuestión es que esa clase no permite (hasta donde se) crear/editar nuevos registros creo que por motivos de seguridad (imagina si pudieras modificar los registros de los pedidos comprados anteriormente).
Por tanto, al utilizar la clase Cart, lo que se hace es adicionar productos (con el precio actual) a un carrito de compras. Cuando ese carrito de compras se confirme y se convierta en un pedido Prestashop automáticamente tomara los precios de esos productos y los de registrará en la tabla order_detail para que nunca más puedan ser modificados.

Por este motivo creo que no podrás hacer lo que requieres, al menos no desde el API.

Saludos

Link to comment
Share on other sites

16 hours ago, Rolige said:

Hola:


Los precios registrados en un pedido y asociados a la compra de un producto en particular se almacenan en la tabla order_detail. La cuestión es que esa clase no permite (hasta donde se) crear/editar nuevos registros creo que por motivos de seguridad (imagina si pudieras modificar los registros de los pedidos comprados anteriormente).
Por tanto, al utilizar la clase Cart, lo que se hace es adicionar productos (con el precio actual) a un carrito de compras. Cuando ese carrito de compras se confirme y se convierta en un pedido Prestashop automáticamente tomara los precios de esos productos y los de registrará en la tabla order_detail para que nunca más puedan ser modificados.

Por este motivo creo que no podrás hacer lo que requieres, al menos no desde el API.

Saludos

 

Respecto la creacion de productos para distintos paises, o precios para distintos paises, ¿sabes algo de como lo podria hacer?

Muchas Gracias!

Link to comment
Share on other sites

8 hours ago, ruben.bautista said:

 

Respecto la creacion de productos para distintos paises, o precios para distintos paises, ¿sabes algo de como lo podria hacer?

Muchas Gracias!

 

Eso lo podrías conseguir con una multi-tienda, la cual te permite asignar configuración específica de los productos por tienda o grupo de tiendas.

Link to comment
Share on other sites

On 19/10/2018 at 5:53 PM, Rolige said:

 

Eso lo podrías conseguir con una multi-tienda, la cual te permite asignar configuración específica de los productos por tienda o grupo de tiendas.

 

Buenos días, muchas gracias por tu respuesta, pero via API te devuelve un id_default_shop no? o si es una multitienda te saca varios ids de tienda?

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...