diff --git a/home/views.py b/home/views.py index 74685f1..98ebbb9 100644 --- a/home/views.py +++ b/home/views.py @@ -1828,18 +1828,34 @@ def store_novawow_view(request): 'total_price': total_price_with_iva }) +from collections import Counter + def store_novawow_success_view(request): # Procesar el comando SOAP tras el pago exitoso character_name = request.session.get('store_novawow') - if not character_name: + carrito = request.session.get('carrito', []) + + if not character_name or not carrito: return redirect('store-novawow') - command = f".send item {character_name}" + # Contar correctamente los ítems por ID + item_counts = Counter(item["id"] for item in carrito) + + # Generar la lista de ítems en formato "ID:Cantidad" + items_str = " ".join(f"{item_id}:{count}" for item_id, count in item_counts.items()) + + # Construir el comando SOAP + command = f".send items {character_name} 'Gracias por donar a Nova WoW' 'Aquí tienes tu donación' {items_str}" + + # Ejecutar el comando SOAP response = execute_soap_command(command) + # Limpiar la sesión después del envío + request.session.pop('store_novawow', None) + request.session.pop('carrito', None) + if response is None or response.strip() == "": - message = f"El personaje {character_name} se a anadido los items de la compra." - request.session.pop('store_novawow', None) # Limpiar la sesión + message = f"Los ítems han sido añadidos al personaje {character_name} correctamente." return render(request, 'store/store_novawow_success.html', {'message': message}) else: return render(request, 'store/store_novawow_success.html', {'message': f"Error: {response}"})