Jump to content

Podria saltar los pasos 2,3 y 4 en el proceso de compra?


xabikip

Recommended Posts

Buenas,

 

 

Necesito que en el proceso de compra no esten los pasos 2.Login, 3.Dirección y 4.Envio.

 

Ya se que es un poco raro, pero es lo que requiere mi tienda.

 

¿Como creeis que se podria hacer esto?

 

2.Login

Para saltarse el login podria tener un usuario ya logueado y que simpre tire de hay.¿Como lo veis?¿Alguna otra idea?

 

3.Direccion

Podria crear un producto virtual pero la pega es que los virtuales no posibilitan combinaciones y esta opcion si que la necesito. ¿Tendria que modificar codigo?¿Cual?

 

4.Envio

¿Como podria saltarme este paso?

 

Cualquier idea de como se podria saltarse cualquiera de estos pasos sera bienvenida.

 

Gracias ;-)

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

Referente al proceso de compra yo lo que hago es habilitar el pedido en 1 paso, desde la pestaña Preferencias -> Pedidos en 1 paso el pedido y asi te aparecen todos los pasos en una pantalla, es mas comodo que tener que darle al boton para ir paso a paso.

 

Es cierto tambien que por el foro tienes módulos de pago que te simplifican mas el proceso de compra.

 

------

 

Referente a lo de poder usar combinaciones en productos virtuales, por el foro, vi este tema: http://www.prestashop.com/forums/topic/193059-why-a-virtual-product-cannot-have-combinations/

  • Like 1
Link to comment
Share on other sites

Igual no me he explicado muy bien pero a lo que me refiero es que necesito no pedir esos datos al cliente, o sea saltarse esos pasos, no que quiera ponerlos todas en una pantalla.

 

La idea es que el cliente agregue productos al carrito y una vez confirmado el carrito que directamente vaya al paso de pagar, saltando todos los demás pasos. 

 

¿Me explico?

Link to comment
Share on other sites

  • 1 month later...

Si que lo logre. Hay que modificar el orderController.php y order-steps.tpl.

 

Ahora no tengo acceso para ver como lo deje, pero intenta a modificarlo y si no puedes o cualquier duda comenta, mañana seguramente si que podre acceder a ver como deje estos archivos para saltarme los pasos.

Link to comment
Share on other sites

Si que lo logre. Hay que modificar el orderController.php y order-steps.tpl.

 

Ahora no tengo acceso para ver como lo deje, pero intenta a modificarlo y si no puedes o cualquier duda comenta, mañana seguramente si que podre acceder a ver como deje estos archivos para saltarme los pasos.

¿Entonces has conseguido poder comprar solo con un "email" sin meter ningun dato mas?

 

Me interesa saber como lo has desarrollado, cuando puedas comentalo.

 

Muchas Gracias !

Link to comment
Share on other sites

En mi caso es un poco raro, el prestashop estará en un tienda fisica en una terminal con pantalla táctil. Los usuarios solo tienen que elegir productos y pagar(sin loguearse ni crear usuario). Para ello esta siempre logeado un usuario creado por mi, con email, dirección y demás. Entonces cuando se crea el pedido si que tiene esos datos, lo unico que hago es engañarle al usuario no pidiendo estos datos y saltando directamente al paso de pago.

 

¿No se si me explico?

Link to comment
Share on other sites

Para saltarme los pasos lo que hice fue un override del OrderController.php dejando asi la funcion initContent.

public function initContent()
	{
		parent::initContent();

		if (Tools::isSubmit('ajax') && Tools::getValue('method') == 'updateExtraCarrier')
		{
			// Change virtualy the currents delivery options
			$delivery_option = $this->context->cart->getDeliveryOption();
			$delivery_option[(int)Tools::getValue('id_address')] = Tools::getValue('id_delivery_option');
			$this->context->cart->setDeliveryOption($delivery_option);
			$this->context->cart->save();
			$return = array(
				'content' => Hook::exec(
					'displayCarrierList',
					array(
						'address' => new Address((int)Tools::getValue('id_address'))
					)
				)
			);
			die(Tools::jsonEncode($return));
		}

		if ($this->nbProducts)
			$this->context->smarty->assign('virtual_cart', $this->context->cart->isVirtualCart());

		// 4 steps to the order
		switch ((int)$this->step)
		{
			case -1;
				$this->context->smarty->assign('empty', 1);
				$this->setTemplate(_PS_THEME_DIR_.'shopping-cart.tpl');
			break;

			case 1:
				$this->_assignAddress();
				$this->processAddressFormat();
				if (Tools::getValue('multi-shipping') == 1)
				{
					$this->_assignSummaryInformations();
					$this->context->smarty->assign('product_list', $this->context->cart->getProducts());
					$this->setTemplate(_PS_THEME_DIR_.'order-address-multishipping.tpl');
				}
				else
					$this->setTemplate(_PS_THEME_DIR_.'order-address.tpl');
			break;

			case 2:
				if (Tools::isSubmit('processAddress'))
					$this->processAddress();
				$this->autoStep();
				$this->_assignCarrier();
				$this->setTemplate(_PS_THEME_DIR_.'order-carrier.tpl');
			break;

			case 3:
				// Check that the conditions (so active) were accepted by the customer
				$cgv = Tools::getValue('cgv') || $this->context->cookie->check_cgv;
				if (Configuration::get('PS_CONDITIONS') && (!Validate::isBool($cgv) || $cgv == false))
					Tools::redirect('index.php?controller=order&step=2');
				Context::getContext()->cookie->check_cgv = true;

				// Check the delivery option is set
				if (!$this->context->cart->isVirtualCart())
				{
					if (!Tools::getValue('delivery_option') && !Tools::getValue('id_carrier') && !$this->context->cart->delivery_option && !$this->context->cart->id_carrier)
						Tools::redirect('index.php?controller=order&step=2');
					elseif (!Tools::getValue('id_carrier') && !$this->context->cart->id_carrier)
					{
						$deliveries_options = Tools::getValue('delivery_option');
						if (!$deliveries_options) {
							$deliveries_options = $this->context->cart->delivery_option;
						}
						foreach ($deliveries_options as $delivery_option)
							if (empty($delivery_option))
								Tools::redirect('index.php?controller=order&step=2');
					}
				}

				$this->autoStep();

				// Bypass payment step if total is 0
				if (($id_order = $this->_checkFreeOrder()) && $id_order)
				{
					if ($this->context->customer->is_guest)
					{
						$order = new Order((int)$id_order);
						$email = $this->context->customer->email;
						$this->context->customer->mylogout(); // If guest we clear the cookie for security reason
						Tools::redirect('index.php?controller=guest-tracking&id_order='.urlencode($order->reference).'&email='.urlencode($email));
					}
					else
						Tools::redirect('index.php?controller=history');
				}
				$this->_assignPayment();
				// assign some informations to display cart
				$this->_assignSummaryInformations();
				$this->setTemplate(_PS_THEME_DIR_.'order-payment.tpl');
			break;

			default:
				$this->_assignSummaryInformations();
				$this->setTemplate(_PS_THEME_DIR_.'shopping-cart.tpl');
			break;
		}

		$this->context->smarty->assign(array(
			'currencySign' => $this->context->currency->sign,
			'currencyRate' => $this->context->currency->conversion_rate,
			'currencyFormat' => $this->context->currency->format,
			'currencyBlank' => $this->context->currency->blank,
		));
	}

y modificar el order-steps.tpl dejando asi el <ul>, con esto eliminas los cuadros de los pasos que aparecen arriba de la pagina.

<ul class="step" id="order_step">
	<li class="{if $current_step=='summary'}step_current{else}{if $current_step=='payment' || $current_step=='shipping' || $current_step=='address' || $current_step=='login'}step_done{else}step_todo{/if}{/if}">
		{if $current_step=='payment' || $current_step=='shipping' || $current_step=='address' || $current_step=='login'}
		<a href="{$link->getPageLink('order', true)}">
			1. {l s='Summary'}
		</a>
		{else}
			<span>1. {l s='Summary'}</span>
		{/if}
	</li>
	<li id="step_end" class="{if $current_step=='payment'}step_current_end{else}step_todo{/if}">
		<span>5. {l s='Payment'}</span>
	</li>
</ul>
  • Like 2
Link to comment
Share on other sites

Mil  gracias xabikip...!!aunque los casos son diferentes mirare que puedo hacer

 

que  version de prestashop usabas???

 

.al ser un producto virtual   necesito eliminar esos datos de direccion, me estoy enloqueciendo!!!..

Link to comment
Share on other sites

En mi caso es un poco raro, el prestashop estará en un tienda fisica en una terminal con pantalla táctil. Los usuarios solo tienen que elegir productos y pagar(sin loguearse ni crear usuario). Para ello esta siempre logeado un usuario creado por mi, con email, dirección y demás. Entonces cuando se crea el pedido si que tiene esos datos, lo unico que hago es engañarle al usuario no pidiendo estos datos y saltando directamente al paso de pago.

 

¿No se si me explico?

Ammm yo creia que habias habilitado la compra unicamente con un email, como pasa en otras muchas tiendas, cuando comprar algun producto virtual.

Link to comment
Share on other sites

Bueno en ese caso podrías ocultar en el tpl, los campos que no te interesen y ponerles un default, así el usuario no rellena los datos pero a prestashop si que se los mandas y seguiría el proceso bien.

Si, el problema es que no quiera que tengan ningun valor, es decir, no quiero dejar ningun valor camuflado internamente, solo trabajar con el email y contraseña en ese caso.

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...