criado metodo de mais vendidos no comandas.models | limitar lista de products a 15 itens

This commit is contained in:
2025-07-07 10:35:29 -03:00
parent 69a9e9e065
commit 7355d546cd
14 changed files with 41 additions and 48 deletions

View File

@@ -1,5 +1,6 @@
from django.db import models
from django.contrib.auth.models import User
from django.db.models import Count, F
@@ -7,7 +8,6 @@ from clients.models import Client
from products.models import Product
from mesas.models import Mesa
from typePay.models import TypePay
# from payments.models import Payments
class Comanda(models.Model):
id = models.AutoField(primary_key=True)
@@ -32,3 +32,15 @@ class ProductComanda(models.Model):
return self.comanda.name + " - " + self.product.name
def maisVendidos():
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)
return products_ordenados[:15]

View File

@@ -32,24 +32,12 @@ def viewComanda(request):
comanda_id = int(id)
comanda = Comanda.objects.get(id=comanda_id)
consumo = ProductComanda.objects.filter(comanda=comanda_id)
# consumo[0].product.
parcial = Payments.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)
products_ordenados = ProductComanda.maisVendidos()
valores = somar(consumo,comanda)
return render(request, 'viewcomanda.html', {'config':config, 'valores':valores,'parcials':parcial,'clients':clients,'comanda': comanda, 'consumo': consumo, 'products': products_ordenados,'mesas':mesas})
return render(request, 'viewcomanda.html', {'config':config, 'valores':valores,'parcials':parcial,'clients':clients,'comanda': comanda, 'consumo': consumo, 'products': products_ordenados[:15],'mesas':mesas})
@group_required(groupName='Garçom')
@@ -202,9 +190,12 @@ def addProduct(request, product_id, comanda_id):
def listProduct(request, comanda_id, product):
allProducts = Product.objects.filter(name__icontains=product)
if product == '*':
allProducts = ProductComanda.maisVendidos()
else:
allProducts = Product.objects.filter(name__icontains=product)
products = []
for p in allProducts:
if p.active == True:
products.append(p)
return render(request, "htmx_components/comandas/htmx_list_products.html", {"products": products,'comanda_id':comanda_id})
return render(request, "htmx_components/comandas/htmx_list_products.html", {"products": products[:15],'comanda_id':comanda_id})