diff --git a/gestaoRaul/comandas/__pycache__/urls.cpython-310.pyc b/gestaoRaul/comandas/__pycache__/urls.cpython-310.pyc
index 2ff3b70..4c1d3ee 100644
Binary files a/gestaoRaul/comandas/__pycache__/urls.cpython-310.pyc and b/gestaoRaul/comandas/__pycache__/urls.cpython-310.pyc differ
diff --git a/gestaoRaul/comandas/__pycache__/views.cpython-310.pyc b/gestaoRaul/comandas/__pycache__/views.cpython-310.pyc
index 39c8da5..207b324 100644
Binary files a/gestaoRaul/comandas/__pycache__/views.cpython-310.pyc and b/gestaoRaul/comandas/__pycache__/views.cpython-310.pyc differ
diff --git a/gestaoRaul/db.sqlite3 b/gestaoRaul/db.sqlite3
index 4dacca3..6ffc8d0 100644
Binary files a/gestaoRaul/db.sqlite3 and b/gestaoRaul/db.sqlite3 differ
diff --git a/gestaoRaul/home/__pycache__/urls.cpython-310.pyc b/gestaoRaul/home/__pycache__/urls.cpython-310.pyc
index 198a23b..0b222c9 100644
Binary files a/gestaoRaul/home/__pycache__/urls.cpython-310.pyc and b/gestaoRaul/home/__pycache__/urls.cpython-310.pyc differ
diff --git a/gestaoRaul/home/__pycache__/views.cpython-310.pyc b/gestaoRaul/home/__pycache__/views.cpython-310.pyc
index d42a3bd..18e0a4f 100644
Binary files a/gestaoRaul/home/__pycache__/views.cpython-310.pyc and b/gestaoRaul/home/__pycache__/views.cpython-310.pyc differ
diff --git a/gestaoRaul/home/templates/home.html b/gestaoRaul/home/templates/home.html
index 047cbff..8d62d13 100644
--- a/gestaoRaul/home/templates/home.html
+++ b/gestaoRaul/home/templates/home.html
@@ -29,34 +29,32 @@ RRB&C - DashBoard
Valor de Pagamentos
- R$ {{total_pagamentos |floatformat:2 }}
+ R$ {{total_pagamentos |floatformat:2 }}
Quantidade de Pagamentos
- {{ qdt_pagamentos }}
+ {{ qdt_pagamentos }}
Ticket médio
- R$ {{ ticekMedio |floatformat:2}}
+ R$ {{ ticekMedio |floatformat:2}}
-
Gráficos cozinha
@@ -64,22 +62,7 @@ RRB&C - DashBoard
-
-
Mais Vendidos
-
-
- | Produto |
- Quantidade |
-
- {% for produto in produtos_mais_vendidos %}
-
- | {{ produto.nome }} |
- {{ produto.quantidade }} |
-
-
- {% endfor %}
-
-
+
diff --git a/gestaoRaul/home/views.py b/gestaoRaul/home/views.py
index 9b28b8a..bb426b7 100644
--- a/gestaoRaul/home/views.py
+++ b/gestaoRaul/home/views.py
@@ -7,6 +7,7 @@ from django.contrib.auth.models import User
from django.utils.dateparse import parse_datetime
import datetime
+import json
@@ -17,17 +18,7 @@ from gestaoRaul.decorators import group_required
@group_required(groupName='Gerente')
def home(request):
- try:
- total_pagamentos = Payments.objects.aggregate(total=Sum('value'))['total']
- qdt_pagamentos = Payments.objects.aggregate(total=Count('value'))['total']
- pagamentos = Payments.objects.all()
- ticekMedio = total_pagamentos / qdt_pagamentos
- produtos_mais_vendidos = ProductComanda.objects.values('product').annotate(
- quantidade=Count('product'),
- nome=F('product__name') ).order_by('-quantidade')[:5]
- return render(request, 'home.html', {'total_pagamentos': total_pagamentos, 'pagamentos': pagamentos, 'qdt_pagamentos': qdt_pagamentos, 'produtos_mais_vendidos': produtos_mais_vendidos, 'ticekMedio': ticekMedio, })
- except:
return render(request, 'home.html')
@@ -39,13 +30,41 @@ def chartCuisine(request,dateStart,dateEnd):
except:
dateStart = parse_datetime('2025-01-01 07:00:00')
dateEnd = datetime.datetime.now()
- # print(request.user.groups.all())
- # print(request.user.is_authenticated)
- # fulano = User()
+
tFila = []
tPreparando = []
tFinalizado = []
+ total_pagamentos = Payments.objects.filter(datetime__range=(dateStart, dateEnd)).aggregate(total=Sum('value'))['total']
+ total_pagamentos = 0 if total_pagamentos is None else total_pagamentos
+ qdt_pagamentos = Payments.objects.filter(datetime__range=(dateStart, dateEnd)).aggregate(total=Count('value'))['total']
+ qdt_pagamentos = 0 if qdt_pagamentos is None else qdt_pagamentos
+ try:
+ ticket_medio = total_pagamentos / qdt_pagamentos
+ except:
+ ticket_medio = 0
+
+ try:
+ produtos_mais_vendidos = ProductComanda.objects.filter(
+ data_time__range=(dateStart, dateEnd)
+ ).values('product').annotate(
+ quantidade=Count('product'),
+ nome=F('product__name')
+ ).order_by('-quantidade')[:5]
+ maisVendidos = {}
+ for produto in produtos_mais_vendidos:
+ maisVendidos[produto['nome']] = produto['quantidade']
+ produtos_mais_vendidos = maisVendidos
+
+ except:
+ produtos_mais_vendidos = {
+ 'petra': 25,
+ 'petra2': 26,
+ 'petra3': 27,
+ 'petra4': 28,
+ 'petra5': 29,
+ }
+
orders = Order.objects.filter(delivered__isnull=False, queue__gt=dateStart, queue__lt=dateEnd)
try:
for order in orders:
@@ -61,10 +80,18 @@ def chartCuisine(request,dateStart,dateEnd):
'mediaFila': mediaFila,
'mediaPreparando': mediaPreparando,
'mediaFinalizado': mediaFinalizado,
+ 'total_pagamentos': round(total_pagamentos, 2),
+ 'qtd_pagamentos': qdt_pagamentos,
+ 'ticket_medio': round(ticket_medio, 2),
+ 'produtos_mais_vendidos': produtos_mais_vendidos,
})
except:
return JsonResponse({
'mediaFila': 0,
'mediaPreparando': 0,
'mediaFinalizado': 0,
+ 'total_pagamentos': round(total_pagamentos, 2),
+ 'qtd_pagamentos': qdt_pagamentos,
+ 'ticket_medio': round(ticket_medio, 2),
+ 'produtos_mais_vendidos': produtos_mais_vendidos,
})
diff --git a/gestaoRaul/templates/static/home/js/home.js b/gestaoRaul/templates/static/home/js/home.js
index 00c626a..2255571 100644
--- a/gestaoRaul/templates/static/home/js/home.js
+++ b/gestaoRaul/templates/static/home/js/home.js
@@ -1,4 +1,55 @@
+var barColors = ["red", "green","blue","orange","brown"];
+
+var chartVendas = new Chart("vendas", {
+ type: "bar",
+ data: {
+ labels: [],
+ datasets: [{
+ data: [],
+ backgroundColor: barColors,
+ }]
+ },
+ options: {
+ legend: {display: false},
+ title: {
+ display: true,
+ text: "Produtos mais vendidos"
+ },
+
+ }
+});
+
+var chartCuisine = new Chart("cuisine", {
+ type: "doughnut",
+ data: {
+ labels: [],
+ datasets: [{
+ backgroundColor: barColors,
+ data: []
+ }]
+ },
+ options: {
+ legend: {display: true},
+ title: {
+ display: true,
+ text: "Tempo médio (em minutos) do pedido em cada etapa."
+ },
+ }
+});
+
+
+function getDataAtualFormatada() {
+ const data = new Date();
+
+ const ano = data.getFullYear();
+ const mes = String(data.getMonth() + 1).padStart(2, '0'); // Mês começa em 0
+ const dia = String(data.getDate()).padStart(2, '0');
+
+ const dataFormatada = `${ano}-${mes}-${dia}`;
+
+ return dataFormatada;
+}
function productsPlus(){
@@ -16,33 +67,35 @@ var yValues = [document.getElementById('q-0').innerText,
];
var barColors = ["red", "green","blue","orange","brown"];
-new Chart("vendas", {
- type: "bar",
- data: {
- labels: xValues,
- datasets: [{
- backgroundColor: barColors,
- data: yValues
- }]
- },
- options: {
- legend: {display: false},
- title: {
- display: true,
- text: "Produtos mais vendidos"
- },
+// new Chart("vendas", {
+// type: "bar",
+// data: {
+// labels: xValues,
+// datasets: [{
+// backgroundColor: barColors,
+// data: yValues
+// }]
+// },
+// options: {
+// legend: {display: false},
+// title: {
+// display: true,
+// text: "Produtos mais vendidos"
+// },
- }
- });
+// }
+// });
}
function mediaCuisine(){
var dateStart = document.getElementById('data-start').value == '' ? '2025-01-01' :document.getElementById('data-start').value;
-var dateEnd = document.getElementById('data-end').value == '' ? '2025-01-15' :document.getElementById('data-end').value;;
+var dateEnd = document.getElementById('data-end').value == '' ? getDataAtualFormatada() :document.getElementById('data-end').value;;
var yValues = [];
var xValues = ['Fila', 'Preparando', 'Entregar'];
-var barColors = ["red", "green","blue","orange","brown"];
+var totalPagamenstos = document.getElementById('total-pagamentos')
+var qtdPagamentos = document.getElementById('qtd-pagamentos')
+var ticketMedio = document.getElementById('ticket-medio')
var resposta = fetch(`/chartCuisine/${dateStart}/${dateEnd}`, {method: 'GET',
headers: {'Content-Type': 'application/json',
@@ -53,36 +106,39 @@ var resposta = fetch(`/chartCuisine/${dateStart}/${dateEnd}`, {method: 'GET',
yValues.push(data['mediaFila'])
yValues.push(data['mediaPreparando'])
yValues.push(data['mediaFinalizado'])
- console.log(yValues)
- new Chart("cuisine", {
- type: "doughnut",
- data: {
- labels: xValues,
- datasets: [{
- backgroundColor: barColors,
- data: yValues
- }]
- },
- options: {
- legend: {display: true},
- title: {
- display: true,
- text: "Tempo médio (em minutos) do pedido em cada etapa."
- },
- }
- });
+ var totalP = data['total_pagamentos'] ?? '0,00'
+ var qtdP = data['qtd_pagamentos'] ?? '0'
+ var tocketP = data['ticket_medio'] ?? '0'
+ qtdPagamentos.innerText = qtdP
+ totalPagamenstos.innerText = 'R$ ' + totalP
+ ticketMedio.innerText = 'R$ ' + tocketP
+ var produtos_mais_vendidos = data.produtos_mais_vendidos
+
+ var chaves = Object.keys(produtos_mais_vendidos);
+ var valores = [];
+
+ for (const chave of chaves) {
+ valores.push(produtos_mais_vendidos[chave]);
+ }
+
+ chartVendas.data.datasets[0].data = valores
+ chartVendas.data.labels = chaves
+ chartVendas.update();
+
+ chartCuisine.data.datasets[0].data = yValues
+ chartCuisine.data.labels = xValues
+ chartCuisine.update();
+
})
.catch(error => {
alert('Erro ao trazer dados da cozinha:', error)
console.error('Erro ao trazer dados da cozinha:', error);
});
+
}
function deleyGraficos(){
setTimeout(function() {
mediaCuisine();}, 20000);
}
-// productsPlus()
mediaCuisine()
-
-// console.log(document.getElementById('data-start').value)
\ No newline at end of file