Jump to content

[Solucionado] Mostrar gastos de envío solo para clientes registrados


Eusebio100
 Share

Recommended Posts

Hola, a ver si soy capáz de explicarme.

Quiero que los gastos de envío se muestren en el carrito a partir de que el cliente está registrado y ha seleccionado el transportista, y de ahí hasta finalizar el pedido.

He llegado hasta el punto que se muestran desde la seleccion del transportista hasta la página de selección del método de pago, pero una vez que se selecciona el pago (por ejemplo transferencia bancaria, u otro), al llegar a la página de confirmación los gastos de envío desaparecen del carrito. Parece que ese paso ya está fuera del checkout y no consigo identificarlo.

Estoy utilizando la siguiente variable para detectar cliente y transportista seleccionado, pero me falta el paso final:

$carrier_selected = $this->step >= 2 || Tools::isSubmit('processCarrier');

Agradezco cualquier ayuda.

 

Un saludo.

Edited by Eusebio100 (see edit history)

Share this post


Link to post
Share on other sites

hace 2 horas, garciasanchezdani dijo:

Hola,

Creo que sería mejor comprobarlo mediante las variables globales "cart" y "customer".

global $customer;
global $cart;
if($cart->id_carrier > 0 && $customer->logged == 1)
{

}

 

Espero que te sirva.

Un saludo!

Gracias por responder.

Lo del logged es evidente y lo tengo por otro lado, lo del carrier es lo mismo que tengo, pero esto no me soluciona el problema. Lo que necesito es identificar el último paso después de seleccionar el método de pago.

Creo que lo puedo sacar de la clase PaymenteModule.php con esto:

PrestaShopLogger::addLog('PaymentModule::validateOrder - End of validateOrder', 1, null, 'Cart', (int)$id_cart, true);

Pero lo que quiero saber es si hay alguna variable global que pueda utilizar.

Share this post


Link to post
Share on other sites

hace 21 horas, Eusebio100 dijo:

Pero lo que quiero saber es si hay alguna variable global que pueda utilizar.

Me respondo a mi mismo.

Al final era cuestión de pensarlo un poco y lo he conseguido con esto:

$validate = $this->step != 0 && $this->id_carrier != 0;

Son esa variable consigo que en el último paso para confirmar el pedido, el importe del carrito sea coherente con el importe del pedido incluido los gastos de envío.

Ahora se muestran en el carrito los gastos de envío solo para clientes logeados y después de seleccionar el transportista, y hasta confirmar el pedido.

Solo hay que modificar dos archivos en el módulo blockcart (blockcart.php y blockcart.tpl), he visto pocos usuarios preguntando sobre este tema, no se si merecería la pena ponerlo como aporte.

  • Like 1

Share this post


Link to post
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
 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More