Consejo rápido Acepte múltiples cupones en OpenCart 2.0

OpenCart es una solución de comercio electrónico en línea basada en PHP de código abierto que le permite aceptar pedidos en línea. Permite a los clientes comprar con cupones, pero solo uno a la vez de forma predeterminada. Si desea permitir que sus clientes utilicen varios cupones a la vez, deberá modificar el código. Te mostraré exactamente cómo hacerlo en este tutorial..

¿Cómo creamos un vale de regalo??

Solo los administradores y los usuarios de back-end permitidos pueden generar vales de regalo. OpenCart viene con un módulo predeterminado para hacerlo. La siguiente captura de pantalla muestra el lugar donde un usuario de back-end puede generar vales.

Cuál es el problema?

Si tenemos un sistema de cupones implementado en OpenCart por defecto, ¿cuál es el problema? Vamos a entenderlo con la ayuda de un ejemplo:

Recientemente, una amiga mía quería comprar un par de artículos a través de OpenCart que costaban $ 800, pero solo tenía $ 500, y dos vales de regalo por valor de $ 250 cada uno. Así que ella me llamó y me pidió una solución. Debido a que OpenCart solo le permite usar un cupón único para comprar en cualquier momento, ella no pudo comprar los artículos.

Una solución

Para resolver este problema, debemos agregar una opción para usar varios cupones para que los clientes puedan comprar fácilmente, sin enfrentar ninguna dificultad. Aquí está la solución, en la cual modificaremos algunas líneas de código y esto ayudará a resolver este problema.. 

Este tutorial está dividido en tres pasos principales, que son:

  1. Cambio en el controlador
  2. Cambio de modelo
  3. Cambio en la vista

1. Controlador de archivo

  1. Navegar a catalog / controller / checkout / cart.php.
  2. Encuentra el siguiente código: 
Si (isset ($ this-> request-> post ['voucher']) && $ this-> voucher válido ()) $ this-> session-> data ['voucher'] = $ this-> request-> publicar ['cupón']; 

Cambie el código anterior a:

Si (isset ($ this-> request-> post ['voucher']) && $ this-> voucher válido ()) $ this-> session-> data ['voucher'] [$ this-> request-> post ['voucher']] = $ this-> request-> post ['voucher']; // crea una matriz para varios vales 

2. Modelo de archivo

  1. Navegar a catálogo / modelo / total / voucher.php.
  2. Encuentra las siguientes líneas de código:
$ this-> load-> model ('checkout / voucher'); $ voucher_info = $ this-> model_checkout_voucher-> getVoucher ($ this-> session-> data ['voucher']); if ($ voucher_info) if ($ voucher_info ['cantidad']> $ total) $ cantidad = $ total;  else $ cantidad = $ voucher_info ['cantidad'];  $ total_data [] = array ('code' => 'vale', 'title' => sprintf ($ this-> language-> get ('text_voucher'), $ this-> session-> data ['voucher' ]), 'text' => $ this-> currency-> format (- $ amount), 'value' => - $ amount, 'sort_order' => $ this-> config-> get ('voucher_sort_order')) ; $ total - = $ monto;  

Necesitamos ejecutar un bucle externo para obtener todos nuestros cupones que mantuvimos como matriz en el Paso 1. Entonces, colocaremos un bucle externo después de $ this-> load-> model ('checkout / voucher');.

Así que haremos un bucle con nuestra matriz de cupones de sesión para obtener todos los cupones que aplicamos, y el código será el que se muestra a continuación. Tenga en cuenta que el siguiente código está comentado para que sea más fácil de entender.

foreach (array_unique ($ this-> session-> data ['voucher']) como $ voucher) // foreach loop seleccionará cada matriz y extraerá el voucher único $ voucher_info = $ this-> model_checkout_voucher-> getVoucher ($ voucher ); // obtener los detalles del pedido // Cheque 1: si el cupón existe si ($ voucher_info) // Cheque 2: si el monto del cupón es mayor que el monto de nuestro pedido, el saldo del cupón se mantendrá si ($ voucher_info ['monto'] > $ total) $ cantidad = $ total;  else $ cantidad = $ voucher_info ['cantidad'];  // Fin del cheque 2 // Arreglo para devolver los totales actualizados $ total_data [] = array ('code' => 'voucher', 'title' => sprintf ($ this-> language-> get ('text_voucher'), $ voucher), 'text' => $ this-> currency-> format (- $ amount), 'value' => - $ amount, 'sort_order' => $ this-> config-> get ('voucher_sort_order') ); // End Array $ total - = $ monto; // Resta la cantidad con nuestros totales de pedido // Fin del cheque 1 // Fin de Foreach Loop

3. Ver archivo

  1. Navegar a catalog / view / theme / default / template / checkout / voucher.tpl.
  2. Encuentra la siguiente línea de código:

Reemplázalo con esto:

Hemos terminado con nuestro problema! De hecho, acabamos de hacer algunos trucos de código simples para resolver ese gran problema, por lo que no tuvimos que desarrollar un nuevo módulo o extensión. Acabamos de modificar algunas líneas de códigos para hacerlo..

Conclusión

En este artículo, proporcionamos una solución exitosa para agregar varios cupones en nuestra tienda electrónica. Como OpenCart no permite que los compradores usen varios cupones por defecto, modificamos el código para que ahora puedan usar todos los cupones que deseen. Eso ayudará a los clientes a comprar fácilmente sin ningún problema.. 

En nuestros próximos artículos, implementaremos algunas herramientas de negocios del mundo real en nuestro sistema OpenCart, así que manténgase suscrito y aporte sus valiosos comentarios. Gracias!