Generar vales descuento con el IVA incluido en Prestashop 1.5; módulo "La fidelidad de los clientes y las recompensas"

22 marzo, 2015 |

Si te gusta, compártelo ;)

Vales de descuento con y sin IVA incluido en Prestashop

En Prestashop 1.5, cuando un cliente de nuestra tienda canjea sus puntos pertenecientes al módulo Fidelidad de los clientes y las recompensas, se crea automáticamente un Vale de descuento. Pero el vale creado así, siempre se genera sin impuestos, por lo que, cuando el cliente introduce el código del vale en el carrito, la cantidad inicial no se corresponde con la posterior, es decir, la cuantía del vale que el cliente ha visto inicialmente no se corresponde con la cuantía tras aplicarse los impuestos correspondientes.

Esto puede confundir al cliente, por lo tanto, vamos a ver qué podemos hacer para que el Vale de descuento se genere automáticamente con impuestos incluidos, así la cuantía del vale permanecerá inmutable.

El archivo default.php...

Simplemente debemos añadir una línea a dos archivos pertenecientes al módulo Fidelidad de los clientes y las recompensas, aunque en la carpeta de módulos se llama loyalty.

Así que, vamos a abrir el archivo ../prestashop/modules/loyalty/controllers/front/default.php, y busquemos este fragmento:

// Voucher creation and affectation to the customer
   $cart_rule = new CartRule();
   $cart_rule->code = $voucher_code;
   $cart_rule->id_customer = (int)$this->context->customer->id;
   $cart_rule->reduction_currency = (int)$this->context->currency->id;
   $cart_rule->reduction_amount = LoyaltyModule::getVoucherValue((int)$customer_points);
   $cart_rule->quantity = 1;
   $cart_rule->quantity_per_user = 1;

Simplemente debemos pegar esta línea al final de este fragmento, de forma que quede así:

// Voucher creation and affectation to the customer
   $cart_rule = new CartRule();
   $cart_rule->code = $voucher_code;
   $cart_rule->id_customer = (int)$this->context->customer->id;
   $cart_rule->reduction_currency = (int)$this->context->currency->id;
   $cart_rule->reduction_amount = LoyaltyModule::getVoucherValue((int)$customer_points);
   $cart_rule->quantity = 1;
   $cart_rule->quantity_per_user = 1;
   $cart_rule->reduction_tax = 1;

El 1 sería para generar el vale con impuestos incluidos, y el 0 para generarlo sin impuestos. Aunque los cambios en esta línea solo serán visibles en la tienda a la hora de generarse el vale, no se apreciarán cambios en los vales ya creados. Los Vales de descuento pueden verse desde el enlace "Mi cuenta" del cliente.
Guardamos cambios en este archivo.

Y para terminar, el archivo loyalty-program.php...

Debemos abrir el archivo prestashop/modules/loyalty/loyalty-program.php; y buscar el siguiente fragmento, casi idéntico al anterior...

/* Voucher creation and affectation to the customer */
 $cartRule = new CartRule();
 $cartRule->code = $voucherCode;
 $cartRule->id_customer = (int)$context->customer->id;
 $cartRule->id_currency = (int)$context->currency->id;
 $cartRule->reduction_amount = LoyaltyModule::getVoucherValue((int)$customerPoints);
 $cartRule->quantity = 1;
 $cartRule->quantity_per_user = 1;
 $cart_rule->reduction_tax = 1;

... y al igual que la vez anterior, añadimos la línea que vemos resaltada.
Guardamos cambios.

Por último, solo queda probar el resultado. Si tenemos una tienda en local podemos hacer un pedido ficticio, actualizar el estado del pedido a "Entregado" para que el cliente pueda obtener sus puntos de fidelidad, y convertirlos en un Vale de descuento; así podremos ver si el vale se ha creado con los impuestos incluidos.

Puntos para transformar puntos de fidelidad en vales de descuento

No hay comentarios: