Este sitio usa cookies, propias y de terceros.
Si se continúa con nosotros entendemos que se acepta el uso de cookies.

Eliminar pago contrareembolso en productos virtuales

Tema en 'Instalación, configuración y personalización' iniciado por lastapril, 23 Ene 2015.

  1. lastapril

    lastapril Amante de Prestashop Miembro del equipo

    165
    0
    0
    Hola a todos, estoy intentando que en los productos virtuales no se pueda utilizar el pago contrareembolso, pero no encunetro como hacerlo,Alguien lo ha hecho?
    Version de prestashop 1.6
    Un saludo
    Carlos
     
  2. Josraso

    Josraso Lo cortes no quita lo valiente. Miembro del equipo

    508
    24
    18
    Podrias usar este modulo http://www.alabazweb.com/es/modulos-para-el-pago-prestashop/24-modulo-pago-contrareembolso-con-recargo-y-limitacion-a-productos-y-categorias.html o bien puedes jugar con el transporte los rangos y asignar la forma de pago segun el transportista usando este modulo http://addonspresta.com/en/free-modules/48-ship-to-pay.html
     
  3. ventura

    ventura Aprendiz de Prestashop Miembro del equipo

    18
    1
    0
    Se puede hacer mediante codigo editando el archivo

    Insertar CODE, HTML o PHP:
    cashondelivery.php
    Busca esta parte

    Insertar CODE, HTML o PHP:
    public function hookPayment($params)
    Y añade mas abajo esto

    Insertar CODE, HTML o PHP:
    foreach ($params['cart']->getProducts() AS $product)
    
            if ($product['is_virtual'] == 1)
              
                    return false;

    De esta manera el modulo no se visualizará cuando en el carrito haya un producto virtual
     
  4. lastapril

    lastapril Amante de Prestashop Miembro del equipo

    165
    0
    0
    Hola a los dos, Jose, lo de los modulos lo habia pensado pero al ser un producto virtual no tiene transportista, voy a probar la solucion de Ventura y os cuento
     
  5. lastapril

    lastapril Amante de Prestashop Miembro del equipo

    165
    0
    0
    Lo he dejado asi pero sigue apareciendo

    Insertar CODE, HTML o PHP:
    public function hookPaymentReturn($params)
    
    	{
    
    		if (!$this->active)
    
    			return ;
    
    
    
    		return $this->display(__FILE__, 'confirmation.tpl');
    
                  foreach ($params['cart']->getProducts() AS $product)
    
            if ($product['is_virtual'] == 1)
              
                    return false;
    
    	}
    
     
  6. Josraso

    Josraso Lo cortes no quita lo valiente. Miembro del equipo

    508
    24
    18
    Ostras siiii no me habia fijado en ese detalle....
     
  7. ventura

    ventura Aprendiz de Prestashop Miembro del equipo

    18
    1
    0
    Pon el codigo que te he puesto en

    Insertar CODE, HTML o PHP:
    hookPayment
     
  8. lastapril

    lastapril Amante de Prestashop Miembro del equipo

    165
    0
    0
    Ahora a quedado asi, pero tampoco funciona
    Insertar CODE, HTML o PHP:
    function hookPayment($params)
    
    {
    
    		global $smarty;
    
    		$currency = $this->getCurrency();
    
     		$smarty->assign(array(
    
                'this_path' => $this->_path,
    
    			'fee' => number_format($this->getCost($params), 2, '.', ''),
    
                'this_path_ssl' => (Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://').htmlspecialchars($_SERVER['HTTP_HOST'], ENT_COMPAT, 'UTF-8').__PS_BASE_URI__.'modules/'.$this->name.'/'
    
               ));
    
    		return $this->display(__FILE__, 'payment.tpl');
    
    foreach ($params['cart']->getProducts() AS $product)
    
            if ($product['is_virtual'] == 1)
              
                    return false;
    
    }
    
    
    
     
  9. ventura

    ventura Aprendiz de Prestashop Miembro del equipo

    18
    1
    0
    Lo he probado en 1.6 y funciona perfectamente

    Esta es la funcion del hook completa
    Insertar CODE, HTML o PHP:
    		public function hookPayment($params)
    	{
    		if (!$this->active)
    			return ;
    	
    	foreach ($params['cart']->getProducts() AS $product)
    
            if ($product['is_virtual'] == 1)
              
                    return ;	
    
    		global $smarty;
    
    		// Check if cart has product download
    		$i = 0;
    		$products = $params['cart']->getProducts();
    		$total = count($products);
    		foreach ($products as $key => $product)
    		{
    			$pd = ProductDownload::getIdFromIdProduct((int)($product['id_product']));
    			if ($pd AND Validate::isUnsignedInt($pd))
    				$i++;
    		}
    
    		if ($i && $total == $i)
    			return false;		
    
    		$smarty->assign(array(
    			'this_path' => $this->_path, //keep for retro compat
    			'this_path_cod' => $this->_path,
    			'this_path_ssl' => Tools::getShopDomainSsl(true, true).__PS_BASE_URI__.'modules/'.$this->name.'/'
    		));
    		return $this->display(__FILE__, 'payment.tpl');
    	}
     
    A roquerr le gusta esto.
  10. lastapril

    lastapril Amante de Prestashop Miembro del equipo

    165
    0
    0
    Copiando tu contenido si que me ha funcionado, gracias
     
  11. roquerr

    roquerr Aprendiz de Prestashop

    1
    0
    1
    Hola a todos. Soy roquer. Perdonad que reabra el tema. Preo considero que es muy necesitado y de seguro util. Es la primera vez que paso por aqui. Y de antemano os doy las gracias por el trabajo de ayuda que prestais. Yo tengo una tienda on-line y he tenido ese mismo problema pero con los productos de una categoria en concreto ( He enviado el producto contra reembolso por valor de 235€ y no lo han recojido). La rezon es que ese producto si se envia y no es recepcionado por el cliente, aunque me sea devuelto tengo que tirarlo a causa de su periocidad. Y al ver la sulucion que le dais al compañero Lastapril, he pensado si esa misma solucion se podria aplicar a una categoria/as de la tienda.
    Logicamente para mi seria impensable realizar o modificar ese codigo que aparece mas arriba, no tengo conocimientos de programacion, fuera de 4 cosillas de css y con ayuda de terceros.
    ¿Si es posible la solucion, seriais tan amables de añadir o modificar ese codigo para este proposito?
    De seguro que aparte de mi habra muchisima gente que lo agradeceria, ya que buscado sobre el tema he visto muchisimos post que requieren esta funcion. he encontrado algun modulo pero siempre es de pago, y, tal y como esta la cosa hoy la tienda no da como para ir comprando modulos, aunque sea bajo el precio.
    Muchisimas gracias.
     
    Última edición: 5 Oct 2017

Compartir esta página