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