Eutanasio Posted July 4, 2016 Share Posted July 4, 2016 Buenas, Quisiera hacer que el módulo de contra reembolso solo apareciera si el total del pedido alcanza un mínimo de valor. Cómo se podría hacer esto? Gracias! Link to comment Share on other sites More sharing options...
ventura Posted July 4, 2016 Share Posted July 4, 2016 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 More sharing options...
joseantgv Posted July 4, 2016 Share Posted July 4, 2016 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 More sharing options...
ventura Posted July 4, 2016 Share Posted July 4, 2016 Cuidado si tienes diferentes divisas.. Para eso lo mas indicado es restringirlo por moneda y/o pais, desde Modulos/Pago --> Restricciones .... Link to comment Share on other sites More sharing options...
Eutanasio Posted July 4, 2016 Author Share Posted July 4, 2016 (edited) 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 July 4, 2016 by omar2886 (see edit history) Link to comment Share on other sites More sharing options...
andres33 Posted July 4, 2016 Share Posted July 4, 2016 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. 1 Link to comment Share on other sites More sharing options...
Eutanasio Posted July 4, 2016 Author Share Posted July 4, 2016 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 More sharing options...
Eutanasio Posted July 4, 2016 Author Share Posted July 4, 2016 (edited) Solucionado! tal cual dice Andres33, ya que en el Hook de Ventura no iba. Edited July 4, 2016 by omar2886 (see edit history) Link to comment Share on other sites More sharing options...
ventura Posted July 4, 2016 Share Posted July 4, 2016 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 More sharing options...
Eutanasio Posted July 4, 2016 Author Share Posted July 4, 2016 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 More sharing options...
ventura Posted July 4, 2016 Share Posted July 4, 2016 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 1 Link to comment Share on other sites More sharing options...
Eutanasio Posted July 5, 2016 Author Share Posted July 5, 2016 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 More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now