Arreglado un problema visual del precio 6.1000000000000005 tipo a si
This commit is contained in:
@@ -86,19 +86,23 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
carrito.push({ id, nombre, precio });
|
carrito.push({ id, nombre, precio: parseFloat(precio) }); // Convertir precio a float
|
||||||
actualizarCarrito();
|
actualizarCarrito();
|
||||||
}
|
}
|
||||||
|
|
||||||
function actualizarCarrito() {
|
function actualizarCarrito() {
|
||||||
carritoLista.innerHTML = "";
|
carritoLista.innerHTML = "";
|
||||||
let total = 0;
|
let total = 0;
|
||||||
|
|
||||||
carrito.forEach((item, index) => {
|
carrito.forEach((item, index) => {
|
||||||
total += item.precio;
|
total += item.precio;
|
||||||
const itemCarrito = `<li class="real-info-box">${item.nombre} - ${item.precio} monedas <button class="real-info-box red-info" onclick="eliminarDelCarrito(${index})">Eliminar</button></li>`;
|
const itemCarrito = `<li class="real-info-box">${item.nombre} - ${item.precio.toFixed(2)} monedas
|
||||||
|
<button class="real-info-box red-info" onclick="eliminarDelCarrito(${index})">Eliminar</button>
|
||||||
|
</li>`;
|
||||||
carritoLista.innerHTML += itemCarrito;
|
carritoLista.innerHTML += itemCarrito;
|
||||||
});
|
});
|
||||||
totalElement.textContent = total;
|
|
||||||
|
totalElement.textContent = total.toFixed(2);
|
||||||
totalIVAElement.textContent = (total * 1.21).toFixed(2);
|
totalIVAElement.textContent = (total * 1.21).toFixed(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,16 +125,16 @@
|
|||||||
|
|
||||||
if (carrito.length === 0) {
|
if (carrito.length === 0) {
|
||||||
alert("El carrito está vacío");
|
alert("El carrito está vacío");
|
||||||
} else {
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Crear la sesión de pago con Stripe
|
// Crear la sesión de pago con Stripe
|
||||||
fetch('/es/store-novawow/', {
|
fetch('/es/store-novawow/', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: { 'Content-Type': 'application/json' },
|
||||||
'Content-Type': 'application/json',
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
body: JSON.stringify({
|
||||||
character: personajeSeleccionado, // Añadir el personaje seleccionado
|
character: personajeSeleccionado,
|
||||||
carrito: carrito, // Si necesitas enviar los ítems del carrito, también puedes incluirlos aquí
|
carrito: carrito,
|
||||||
}),
|
}),
|
||||||
})
|
})
|
||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
@@ -143,7 +147,7 @@
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch(error => console.error("Error al crear la sesión de pago:", error));
|
.catch(error => console.error("Error al crear la sesión de pago:", error));
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
cargarItems("Bolsas");
|
cargarItems("Bolsas");
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
+11
-7
@@ -17,7 +17,7 @@ from .library_correo import enviar_correo
|
|||||||
from django.utils.crypto import get_random_string
|
from django.utils.crypto import get_random_string
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from decimal import Decimal
|
from decimal import Decimal, ROUND_HALF_UP
|
||||||
|
|
||||||
# Configuración del logger
|
# Configuración del logger
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@@ -1780,7 +1780,10 @@ def store_novawow_view(request):
|
|||||||
|
|
||||||
# Obtener carrito desde la sesión
|
# Obtener carrito desde la sesión
|
||||||
carrito = request.session.get('carrito', [])
|
carrito = request.session.get('carrito', [])
|
||||||
total_price = sum(Decimal(item['precio']) for item in carrito) * Decimal('1.21')
|
|
||||||
|
# ✅ Calcular el precio total con 2 decimales
|
||||||
|
total_price = sum(Decimal(item['precio']) for item in carrito)
|
||||||
|
total_price_with_iva = (total_price * Decimal('1.21')).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
|
||||||
|
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
# Obtener datos del body
|
# Obtener datos del body
|
||||||
@@ -1791,12 +1794,13 @@ def store_novawow_view(request):
|
|||||||
if not character_name:
|
if not character_name:
|
||||||
return JsonResponse({'success': False, 'message': 'Por favor, selecciona un personaje.'})
|
return JsonResponse({'success': False, 'message': 'Por favor, selecciona un personaje.'})
|
||||||
|
|
||||||
# ✅ ACTUALIZAR EL CARRITO ANTES DE CALCULAR EL PRECIO
|
# ✅ ACTUALIZAR EL CARRITO Y FORZAR LA SESIÓN
|
||||||
request.session['carrito'] = carrito
|
request.session['carrito'] = carrito
|
||||||
request.session.modified = True # Forzar que Django guarde la sesión inmediatamente
|
request.session.modified = True # Forzar que Django guarde la sesión inmediatamente
|
||||||
|
|
||||||
# ✅ CALCULAR EL PRECIO CON EL CARRITO ACTUALIZADO
|
# ✅ RECALCULAR EL PRECIO CON EL CARRITO ACTUALIZADO
|
||||||
total_price = sum(Decimal(item['precio']) for item in carrito) * Decimal('1.21')
|
total_price = sum(Decimal(item['precio']) for item in carrito)
|
||||||
|
total_price_with_iva = (total_price * Decimal('1.21')).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP)
|
||||||
|
|
||||||
# Verificar si el personaje pertenece al usuario
|
# Verificar si el personaje pertenece al usuario
|
||||||
if character_name not in characters:
|
if character_name not in characters:
|
||||||
@@ -1805,7 +1809,7 @@ def store_novawow_view(request):
|
|||||||
# Crear sesión de pago con Stripe
|
# Crear sesión de pago con Stripe
|
||||||
success_url = request.build_absolute_uri(reverse('store-novawow/success'))
|
success_url = request.build_absolute_uri(reverse('store-novawow/success'))
|
||||||
cancel_url = request.build_absolute_uri(reverse('store-novawow/cancel'))
|
cancel_url = request.build_absolute_uri(reverse('store-novawow/cancel'))
|
||||||
stripe_response = create_checkout_session(total_price, success_url=success_url, cancel_url=cancel_url)
|
stripe_response = create_checkout_session(total_price_with_iva, success_url=success_url, cancel_url=cancel_url)
|
||||||
|
|
||||||
if stripe_response["success"]:
|
if stripe_response["success"]:
|
||||||
request.session['store_novawow'] = character_name
|
request.session['store_novawow'] = character_name
|
||||||
@@ -1821,7 +1825,7 @@ def store_novawow_view(request):
|
|||||||
'characters': characters,
|
'characters': characters,
|
||||||
'store_data': store_data,
|
'store_data': store_data,
|
||||||
'categories': categories,
|
'categories': categories,
|
||||||
'total_price': total_price
|
'total_price': total_price_with_iva
|
||||||
})
|
})
|
||||||
|
|
||||||
def store_novawow_success_view(request):
|
def store_novawow_success_view(request):
|
||||||
|
|||||||
Reference in New Issue
Block a user