Jump to content

Modulo Contra reembolso en función de valor de compra


Eutanasio

Recommended Posts

En el archivo .php del modulo busca 

public function hookPaymentReturn($params)

dentro de la funcion del hook añade

if ($params['cart']->getOrderTotal() > 200)
return;

esto seria para un valor mayor de 200

Link to comment
Share on other sites

En el archivo .php del modulo busca 

public function hookPaymentReturn($params)

dentro de la funcion del hook añade

if ($params['cart']->getOrderTotal() > 200)
return;

esto seria para un valor mayor de 200

 

Cuidado si tienes diferentes divisas..

Link to comment
Share on other sites

Gracias por las respuestas. He intentado modificar el código y no ha tenido ningún efecto (forzando compilación y con navegación anónima).
Luego he ido a ver lo que dice ventura, pero no existe la opción de crear ningún tipo de restricción al módulo COD.
Alguna idea? Solo tengo 1 divisa

Edited by omar2886 (see edit history)
Link to comment
Share on other sites

En esta ruta.

dominio.com/modules/cashondelivery/cashondelivery.php

 

En cashondelivery.php busca este codigo.

 

public function hookPayment($params)

{

            if (!$this->active)

return;

 

 

Debajo pon este codigo.

 

if ($params['cart']->id_currency == 1 && $params['cart']->getOrderTotal() < 100) return;

 

Al poner este nuevo codigo, los pedidos que tengan menos de 100 euros no veran el metodo de pago Contra reembolso.

  • Like 1
Link to comment
Share on other sites

 

En esta ruta.
dominio.com/modules/cashondelivery/cashondelivery.php
 
En cashondelivery.php busca este codigo.
 
public function hookPayment($params)
{
            if (!$this->active)
return;
 
 
Debajo pon este codigo.
 
if ($params['cart']->id_currency == 1 && $params['cart']->getOrderTotal() < 100) return;
 
Al poner este nuevo codigo, los pedidos que tengan menos de 100 euros no veran el metodo de pago Contra reembolso.

 

 

Si he vuelto a probar con esto, que es lo mismo que dice Ventura pero especificando la Divisa y tampoco funciona. Estoy en la rota correcta pero nada y tampoco hay nada en override que pueda interferir.

Link to comment
Share on other sites

Si, me equivoque de hook

Lo de las restricciones para los modulos de pago existe la version de condicionarlos por moneda, pais, etc , desde la version 1.6

Modulos /Pago ---> scroll hacia abajo hasta las restriciones con checkboxes

en cuanto al codigo para  condicionar el modulo al importe, te deberia funcionar sin problemas asi y colocado de esta manera, puedes completarlo un poco mas en cuanto a parametros

 

public function hookPayment($params)

{

if (!$this->active)

return;

$cartTotal = (float)$params['cart']->getOrderTotal(true, Cart::BOTH);         

if ($cartTotal > 200)

 return;

 

Esto son los parametros de la funcion getOrderTotal

  /**
    * This function returns the total cart amount
    *
    * Possible values for $type:
    * Cart::ONLY_PRODUCTS
    * Cart::ONLY_DISCOUNTS
    * Cart::BOTH
    * Cart::BOTH_WITHOUT_SHIPPING
    * Cart::ONLY_SHIPPING
    * Cart::ONLY_WRAPPING
    * Cart::ONLY_PRODUCTS_WITHOUT_SHIPPING
    * Cart::ONLY_PHYSICAL_PRODUCTS_WITHOUT_SHIPPING
    *
    * @param bool $withTaxes With or without taxes
    * @param int $type Total type
    * @param bool $use_cache Allow using cache of the method CartRule::getContextualValue
    * @return float Order total

    public function getOrderTotal($with_taxes = true, $type = Cart::BOTH, $products = null, $id_carrier = null, $use_cache = true)
Link to comment
Share on other sites

 

Si, me equivoque de hook

Lo de las restricciones para los modulos de pago existe la version de condicionarlos por moneda, pais, etc , desde la version 1.6

Modulos /Pago ---> scroll hacia abajo hasta las restriciones con checkboxes

en cuanto al codigo para  condicionar el modulo al importe, te deberia funcionar sin problemas asi y colocado de esta manera, puedes completarlo un poco mas en cuanto a parametros

 

public function hookPayment($params)

{

if (!$this->active)

return;

$cartTotal = (float)$params['cart']->getOrderTotal(true, Cart::BOTH);         

if ($cartTotal > 200)

 return;

 

Esto son los parametros de la funcion getOrderTotal

  /**
    * This function returns the total cart amount
    *
    * Possible values for $type:
    * Cart::ONLY_PRODUCTS
    * Cart::ONLY_DISCOUNTS
    * Cart::BOTH
    * Cart::BOTH_WITHOUT_SHIPPING
    * Cart::ONLY_SHIPPING
    * Cart::ONLY_WRAPPING
    * Cart::ONLY_PRODUCTS_WITHOUT_SHIPPING
    * Cart::ONLY_PHYSICAL_PRODUCTS_WITHOUT_SHIPPING
    *
    * @param bool $withTaxes With or without taxes
    * @param int $type Total type
    * @param bool $use_cache Allow using cache of the method CartRule::getContextualValue
    * @return float Order total

    public function getOrderTotal($with_taxes = true, $type = Cart::BOTH, $products = null, $id_carrier = null, $use_cache = true)

 

Muchas gracias Ventura, no conocía todas estas precisiones. Me pregunto si hay alguna para obtener el OrderTotal del valor de compra del WholesalePrice, ya que hay una función que no está implementada en el admin y es el poder ver el margen de beneficio de cada pedido para así poder ofrecer descuentos o lo que fuera.

Gracias!

Link to comment
Share on other sites

Algo asi

$productWholeTotal = 0;
foreach ($params['cart']->getProducts() AS $product) {
$productWholeTotal += $product['wholesale_price'];
}

donde

$productWholeTotal

seria el total de los productos del carrito con precio de proovedor

  • Like 1
Link to comment
Share on other sites

Algo asi

$productWholeTotal = 0;
foreach ($params['cart']->getProducts() AS $product) {
$productWholeTotal += $product['wholesale_price'];
}

donde

$productWholeTotal

seria el total de los productos del carrito con precio de proovedor

Muchas gracias Ventura,

Cómo podría implementar esto en (Admin / themes / default / template / controllers / orders / helpers / view / view.tpl) para  que quede igual que el desglose dentro de "panel panel-total"? Por ejemplo, el total de precios es la suma de los precios de venta unitarios multiplicado por las cantidades pedidas por el cliente:

 

<tr id="total_products">
	<td class="text-right">{l s='Products:'}</td>
	<td class="amount text-right nowrap">
		{displayPrice price=$order_product_price currency=$currency->id}
	</td>
	<td class="partial_refund_fields current-edit" style="display:none;"></td>
</tr>

Cómo hacer esto mismo pero con el WholesalePrice? Gracias!

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