Jump to content

Restringir formas de pago por zonas.


Musicmind

Recommended Posts

Buenas a todos.

 

Es un tema que seguro se ha comentado anteriormente y he buscado y remirado antes de preguntar por aquí, pero no doy con la solución, además veo que hay algún que otro post con este tema sin solución.

 

Necesito restringir las formas de pago por zonas y tampoco encuentro ningún módulo al respecto. 

 

Esto es para que por ejemplo clientes de la zona Canarias, Ceuta y Melilla o Baleares no puedan elegir contrareembolso, o para que los clientes de Europa solo puedan pagar por tarjeta o Paypal y no transferencia.

 

Le he dado mil vueltas a la configuración y lo que no quiero es tener que crear paises como España Canarias, España Ceuta, etc, etc...

 

Muchas gracias por vuestro tiempo y un saludo a la comunidad.

  • Like 2
Link to comment
Share on other sites

  • 4 weeks later...

Se puede hacer mediante modificación de código en el archivo .php de cada modulo de método de pago que se quiera restringir, haría falta incluir en el hook

public function hookPayment($params)

este código que excluirá la aparición del modulo por ejemplo en la zona con id 9

$id_zone = Address::getZoneById((int)$this->context->cart->id_address_delivery);
if ($id_zone == 9)
return;
  • Like 1
Link to comment
Share on other sites

 

Se puede hacer mediante modificación de código en el archivo .php de cada modulo de método de pago que se quiera restringir, haría falta incluir en el hook

public function hookPayment($params)

este código que excluirá la aparición del modulo por ejemplo en la zona con id 9

$id_zone = Address::getZoneById((int)$this->context->cart->id_address_delivery);
if ($id_zone == 9)
return;

Con esto bastaría??

Link to comment
Share on other sites

Si, en cada modulo que se quiera excluir

Buah, a ver si lo pruebo y te digo ... parece muy fàcil ....te pido mucho si te pido que desgranes esta línea un poquito más?

$id_zone = Address::getZoneById((int)$this->context->cart->id_address_delivery);

Muchas gracias por el aporte e interés!

Link to comment
Share on other sites

Buah, a ver si lo pruebo y te digo ... parece muy fàcil ....te pido mucho si te pido que desgranes esta línea un poquito más?

$id_zone = Address::getZoneById((int)$this->context->cart->id_address_delivery);

Muchas gracias por el aporte e interés!

 

Dándole vueltas me falta un punto para sólo saber si esa zona está activa ....

 

Quizás la solución sería dejar una Zona con las provincias a las que quieres mostrar ese módulo de pago en concreto (en mi caso pagPorTelefono), ¿cómo puedo preguntar si la zona que tengo en $id_zone mediante tu código, está activa? porque si no está activa entonces puedo lanzar la forma de pago pagoPorTelefono.

 

Muchas gracias!

Link to comment
Share on other sites

Buah, a ver si lo pruebo y te digo ... parece muy fàcil ....te pido mucho si te pido que desgranes esta línea un poquito más?

$id_zone = Address::getZoneById((int)$this->context->cart->id_address_delivery);

Muchas gracias por el aporte e interés!

 

Con este codigo accedemos a la función de la clase AddressgetZoneById , que detecta la id de la zona a la que corresponde una direccion en funcion del parametro $id_address, parámetro que en este caso se le asigna el corresponde a la id de la dirección de entrega, incluida en la clase Cart, en el carrito de compra 

  • Like 1
Link to comment
Share on other sites

Con este codigo accedemos a la función de la clase AddressgetZoneById , que detecta la id de la zona a la que corresponde una direccion en funcion del parametro $id_address, parámetro que en este caso se le asigna el corresponde a la id de la dirección de entrega, incluida en la clase Cart, en el carrito de compra 

 

Y como puedo saber si ESA zona está activa o no?

Link to comment
Share on other sites

Muchísimas gracias ... pruebo y comento resultados! :)

Bueno ... pues me hace efectos raros con lo que no puedo ir por ahí ... además si no activo la zona no me sale transportista y no llego a los métodos de pago ... 

 

Podría tener siempre un transportista siempre activado "recogida en almacén" y luego tener zonas con algún nombre especial "Francia OUT" o "España OUT" y si el NOMBRE de la zona a enviar contine la palabra "OUT" activar o no la forma de pago ... luego la pregunta es

 

¿Cómo podría saber desde el módulo de pago si el nombre de la zona a la que pertence la dirección de envio contiene una subcadena tipo OUT?  Buah! vaya tela

 

Gracias 1000!

Link to comment
Share on other sites

  • 2 weeks later...

Gracias una vez más ... pruebo y comento !

 

 

Algo asi

if (strpos($zone->name , 'ESTE_NOMBRE_DE_ZONA') !== false) ......

 

Buenas !! por el momento la solución de activar las formas de pago con tu ayuda ha sido ideal ... encajando con esto tengo una consulta que quizás debería abrir en otro hilo, si es así pido disculpas de antemano ....

 

¿Cómo de saber si la tienda, por lo que sea (geoiplocalizacion) está para ese cliente en modo catálogo? (con precios y botón compra deshabilitados) 

 

Muchísimas gracias

 

Saludos

Link to comment
Share on other sites

Si, lo mejor es que abras un hilo nuevo, ya que la consulta que planteas ahora poco tiene que ver con la duda planteada originalmente en este hilo. Así sera mas facil de encontrar y tambien facilitara la organizacion  del foro.

Gracias.

 

Un saludo

Link to comment
Share on other sites

  • 2 months later...

 

Se puede hacer mediante modificación de código en el archivo .php de cada modulo de método de pago que se quiera restringir, haría falta incluir en el hook

public function hookPayment($params)

este código que excluirá la aparición del modulo por ejemplo en la zona con id 9

$id_zone = Address::getZoneById((int)$this->context->cart->id_address_delivery);
if ($id_zone == 9)
return;

Respecto a este código ¿como se haría para indicar varias zonas?

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