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

    474
    17
    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
    0
    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

    474
    17
    18
    Ostras siiii no me habia fijado en ese detalle....
     
  7. ventura

    ventura Aprendiz de Prestashop Miembro del equipo

    18
    0
    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
    0
    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');
    	}
     
  10. lastapril

    lastapril Amante de Prestashop Miembro del equipo

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

Compartir esta página