from django.shortcuts import render, redirect from django.views.decorators.csrf import csrf_exempt from django.db.models import Count, F from comandas.models import Comanda, ProductComanda from mesas.models import Mesa from products.models import Product from payments.models import Payments from typePay.models import TypePay from gestaoRaul.decorators import group_required def listProductBalcao(request, comanda_id, search_product): comanda_id = request.GET.get("id-comanda-balcao") if search_product == '*': 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.active == True and p.name == produto['nome']: products_ordenados.append(p) return render(request, "htmx_components/htmx_list_products_balcao.html", {"products": products_ordenados,'comanda_id':comanda_id}) else: product = search_product products = Product.objects.filter(name__icontains=product, active=True) return render(request, "htmx_components/htmx_list_products_balcao.html", {"products": products,'comanda_id':comanda_id}) @group_required(groupName='Garçom') def addProductBalcao(request, product_id, comanda_id, qtd): for i in range(qtd): product_comanda = ProductComanda(comanda_id=comanda_id, product_id=product_id) product_comanda.save() consumo = ProductComanda.objects.filter(comanda=comanda_id) total = 0 for produto in consumo: total += produto.product.price return render(request, "htmx_components/htmx_list_products_in_balcao.html",{'consumo': consumo, 'total': total}) @group_required(groupName='Garçom') @csrf_exempt def addProductBalcaoTeclado(request, product_id, comanda_id, qtd): for i in range(qtd): product_comanda = ProductComanda(comanda_id=comanda_id, product_id=product_id) product_comanda.save() consumo = ProductComanda.objects.filter(comanda=comanda_id) total = 0 for produto in consumo: total += produto.product.price return render(request, "htmx_components/htmx_list_products_in_balcao.html",{'consumo': consumo, 'total': total}) @group_required(groupName='Garçom') def removeProductBalcao(request, productComanda_id): product_comanda = ProductComanda.objects.get(id=productComanda_id) consumo = ProductComanda.objects.filter(comanda=product_comanda.comanda) product_comanda.delete() total = 0 for produto in consumo: total += produto.product.price return render(request, "htmx_components/htmx_list_products_in_balcao.html",{'consumo': consumo, 'total': total}) @group_required(groupName='Garçom') def paymentBalcao(request, comanda_id): typePayment = TypePay.objects.get(id=1) consumo = ProductComanda.objects.filter(comanda=comanda_id) try: vendasBalcao = Comanda.objects.get(name='VENDAS BALCAO') except: mesa = Mesa.objects.get(id=1) vendasBalcao = Comanda(name='VENDAS BALCAO', mesa=mesa, user=request.user, status='CLOSED') vendasBalcao.save() comanda = Comanda.objects.get(name='VENDA BALCÃO') total = 0 for produto in consumo: total += produto.product.price produto.comanda = vendasBalcao produto.save() pagamento = Payments(value=total, comanda=comanda, type_pay=typePayment,description='VENDA BALCÃO') pagamento.save() return redirect('viewBalcao')