Jump to content

Problema al convertir un carrito con 2 productos a pedido por código, solo añade 1


gusman126

Recommended Posts

he desarrollado un modulo que lee los datos y añade la información a un carrito

EDITO para aclarar :

Este carrito se genera con un fichero php, ha sido llamado desde un CRON que lee la información por una llamada "curl" , no esta generando el carrito mientras se visita o se usa la pagina web.

Parecido a si leyera los datos desde un CSV -> carrito -> Pedido

 

Añade el cliente nuevo

 $customer = new CustomerCore();

Añade la dirección

$address_shipping = new Address();

genera el carrito

 $cart = new Cart();

Añade los productos

foreach ($productos as $producto){
    $cart->updateQty($qty, $id_product, $attr);
}

Lo guarda y hasta aqui todo ok, compruebo el carrito y esta añadido con todos los productos 1,2,3 o mas

Valido el pedido asociándolo a un modulo de pago y genero el pedido

$pago->validateOrder($id_cart, $order_status, $total_products, 'Pagado', NULL, array(), (int)$id_currency, false, $customer->secure_key);
$order = new Order($pago->currentOrder);
$order->setCurrentState($order_status);
$order->save();

Y aqui el problema,

El pedido solo se queda con 1 producto, no añade los productos del carrito al pedido, siempre 1 , tenga el carrito 1,2 o mas

 

Solución?

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

No se si te servirá ,

En 1.6 algún módulo con el que he trabajado en el hook hookactionCartSave coje el carrito y lo modifica, pero no crea uno nuevoa.

public function hookactionCartSave($params) {  
if (isset($params['cart'])) {  $cart = $params['cart'];

El carrito se suele coger del contexto y no crear uno nuevo. Si creas uno nuevo hay que meterlo en el contexto

También puedes recuperar el carrito con el id.. pero el tema es que esta relacionado siempre con la clase Context

http://doc.prestashop.com/display/PS16/Using+the+Context+Object

Link to comment
Share on other sites

hace 35 minutos, Enrique Gómez dijo:

No se si te servirá ,

En 1.6 algún módulo con el que he trabajado en el hook hookactionCartSave coje el carrito y lo modifica, pero no crea uno nuevoa.


public function hookactionCartSave($params) {  
if (isset($params['cart'])) {  $cart = $params['cart'];

El carrito se suele coger del contexto y no crear uno nuevo. Si creas uno nuevo hay que meterlo en el contexto

También puedes recuperar el carrito con el id.. pero el tema es que esta relacionado siempre con la clase Context

http://doc.prestashop.com/display/PS16/Using+the+Context+Object

 

Ok, lo probare gracias.

Se me ha olvidado indicar que es una llamada con un "cron" por lo que no esta generando ese carrito mientras se esta visitando o viendo la pagina, 

Lo mas extraño es que el carrito se añade perfectamente, incluso he probado a quitar el codigo de validar el pedido, he ido al carrito y generado manualmente el pedido y ha creado perfectamente el pedido con 2 productos.

 

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