Te enseñamos a  ‘borrar’ o desactivar el método de envió en prestashop 1.7.x.x

Si necesitas borrar/saltar el paso de envió para Prestashop 1.7 para que no pida los datos del cliente para hacer el envió a la hora de comprar un producto, podes seguir los pasos. Hay que tener en cuenta que que en este tutorial los datos de envío van a ser el mismo para todos los pedidos nuevos ya que en uno de los pasos sobrescribimos con el mismo valor.

 

 SE SALTA EL PASO DE ENVIO SOLO PARA PRODUCTOS VIRTUALES

 

 

  1.  Vamos a crear una dirección.  Esta misma va a ser la misma para todos los pedidos, si tienes una instalación limpia de prestashop ya vienen creadas. En el caso de que no tengas ninguna dirección vas a tener que crear una.

 

Agregar direccion prestashop

 

Una vez que tenemos la dirección creada, podemos elegirla por ID que lo sacamos de la columna que lleva su nombre (ver foto de arriba). Vamos a elegir el ID = 6.

 

2. Una vez que ya tenemos el ID, creamos una carpeta y archivo en la carpeta modules :

modules/noaddress/noaddress.php
noaddress.php
<?php
public function hookActionDispatcher($params = []){
  $payments_controllers = [
    'ps_wirepaymentvalidationModuleFrontController',
    'ps_checkpaymentvalidationModuleFrontController',
  ];
  if($params['controller_type'] == Dispatcher::FC_FRONT &&
    in_array($params['controller_class'], $payments_controllers) &&
    $params['is_module']){
    $cart = new Cart($this->context->cookie->id_cart);
    if($cart->id_address_delivery == 0 || $cart->id_address_invoice){
      $cart->id_address_delivery = 6;
      $cart->id_address_invoice = 6;
      $cart->update();
    }
  }
}

Tener en cuenta que en donde esta el nro 6 en la linea 13 y 14 va a ser el ID que elijamos de nuestra dirección del paso previo

 

3. Vamos a sobrescribir con nuestra dirección y para eso creamos un archivo de nombre Address.php en override/classes/ :

 

override/classes/Address.php

Address.php
class Address extends AddressCore {
  public static function getFirstCustomerAddressId($id_customer, $active = true){
    return 6; // nuestro ID
  }
}

 

4. Vamos a sobrescribir nuestro carrito para que siempre nos de una dirección valida para eso creamos un archivo de nombre Cart.php en override/classes/ :

override/classes/Cart.php

Cart.php

class Cart extends CartCore {
  public function checkAndUpdateAddresses(){
    return true; // siempre valida
  }
}

5. EDITAMOS nuestro archivo OrderController.php en la carpeta /controllers/front/OrderController.php la linea que contiene (aprox la 120) :

 

Vamos a comentar las siguientes lineas, pero dejar el ; SIN COMENTAR.

 

//->addStep(new CheckoutAddressesStep(
// $this->context,
// $translator,
// $this->makeAddressForm()
// ))

;

 

Tener en cuenta que cada vez que actualices prestashop vas a tener que editar este archivo 

 

6. Vamos a tener que borrar cache de prestashop.

 

Cuando borramos cache vamos a poder hacer compras sin agregar nuestra dirección :

 

Como borrar paso envio

 

 

 

 

 

 

Te ayudó?