from decimal import Decimal from django.shortcuts import render, redirect from django.db.models import Count, F from comandas.models import Comanda, ProductComanda from clients.models import Client from products.models import Product from mesas.models import Mesa from gestaoRaul.decorators import group_required @group_required(groupName='Garçom') def comandas(request): comandas = Comanda.objects.filter(status__in=["OPEN", "PAYING"]) mesas = Mesa.objects.all() return render(request, 'comandas.html', {'comandas': comandas, 'mesas': mesas}) @group_required(groupName='Garçom') def viewComanda(request): id = request.GET.get('parametro') comanda_id = int(id) comanda = Comanda.objects.get(id=comanda_id) consumo = ProductComanda.objects.filter(comanda=comanda_id) mesas = Mesa.objects.all() clients = Client.objects.filter(active=True) produtos_mais_vendidos = list(ProductComanda.objects.values('product').annotate( quantidade=Count('product'), nome=F('product__name') ).order_by('-quantidade')) products = Product.objects.all() products_ordenados = [] for produto in produtos_mais_vendidos: for p in products: if p.name == produto['nome'] and p.active == True: products_ordenados.append(p) total = 0 for produto in consumo: total += produto.product.price return render(request, 'viewcomanda.html', {'clients':clients,'comanda': comanda, 'consumo': consumo, 'total': total, 'products': products_ordenados,'mesas':mesas}) @group_required(groupName='Garçom') def createComanda(request): name = request.POST.get('name-comanda') mesa_id = int(request.POST.get('select-mesa')) mesa = Mesa.objects.get(id=mesa_id) comanda = Comanda(name=name, mesa=mesa, user=request.user) comanda.save() return redirect('comandas') @group_required(groupName='Garçom') def editComanda(request): name = request.POST.get('nameComanda') comanda = Comanda.objects.get(id=int(request.POST.get('h-comandaId'))) mesa = Mesa.objects.get(id=int(request.POST.get('select-mesa'))) comanda.mesa = mesa comanda.name = name comanda.save() return redirect('comandas') @group_required(groupName='Gerente') def addContaCliente(request): comandaId = int(request.POST.get('idComanda')) clientId = int(request.POST.get('select-client')) valor = float(request.POST.get('valor-conta').replace(',','.')) comanda = Comanda.objects.get(id=comandaId) client = Client.objects.get(id=clientId) client.debt = client.debt + Decimal(valor) comanda.client = client comanda.status = 'CLOSED' client.save() comanda.save() return redirect('comandas')