From 89a4d0e4be84fafed9adaab10688a749b344592f Mon Sep 17 00:00:00 2001 From: Welton Moura Date: Fri, 17 Jan 2025 22:14:51 -0300 Subject: [PATCH] feat: grafico mais vendido dinamico com filtro de periodo --- .../comandas/__pycache__/urls.cpython-310.pyc | Bin 1028 -> 1084 bytes .../__pycache__/views.cpython-310.pyc | Bin 2194 -> 2788 bytes gestaoRaul/db.sqlite3 | Bin 299008 -> 299008 bytes .../home/__pycache__/urls.cpython-310.pyc | Bin 316 -> 360 bytes .../home/__pycache__/views.cpython-310.pyc | Bin 2018 -> 2527 bytes gestaoRaul/home/templates/home.html | 37 ++--- gestaoRaul/home/views.py | 53 +++++-- gestaoRaul/templates/static/home/js/home.js | 136 ++++++++++++------ 8 files changed, 146 insertions(+), 80 deletions(-) diff --git a/gestaoRaul/comandas/__pycache__/urls.cpython-310.pyc b/gestaoRaul/comandas/__pycache__/urls.cpython-310.pyc index 2ff3b70a029be362890b1b4fae6f39b97178e892..4c1d3eed140a701bf1e7de05dfaf90fa2139c286 100644 GIT binary patch delta 232 zcmZqS*u%k_&&$ij00dqgo$22v^2#zkn5Z2ul**XGm&%&OnZlpK-picM8pSnnPKW|f zR3?=^Wx00bq o6ev+7I(Y)KpN0yM$-~IQ#KXwP%*P0UEWi2qU~CZ0@`HyP0JDfXPXGV_ delta 176 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 M9^p33K1?2vHwGmU-v9sr diff --git a/gestaoRaul/db.sqlite3 b/gestaoRaul/db.sqlite3 index 4dacca369ca5d4792676c00ffe4eaf1b0a25bbc5..6ffc8d0004840498c2b9ca319a02b91686c4b708 100644 GIT binary patch delta 1396 zcma)4YfKzf6rQ;kcA>j-4?&@IOPd8&CEYU2YiD=Xn3j~5LZOIYNt+m3pev8v<+VKj z*ia3rKWHn)iT*GI>yJjM9lZs)O2oBI|_tQSNOR|#g3w_ z&E6(Yb#|z#q*N@}o0lg>Jf*eep32&`=Osb%WD8=pEIK8@FH3$!;=O{VdZbwIt3~Ls z)J0`E&=&A@X+B?|T~WMkb)A8ruSU{pBVKP)WKTKNEcE)S@9k70z7L>jUgAi-c8Oh@C#gpuV4g*;SjiB z4VfUHgAQ-P0qWcP5Cj00+$Cr9_2cNe;rJ50bB}E0Ju*zmCcZ`@>#*4x8R&sTa)2ap zI=9CDmc7GXY@4<<>dq;YX85O&YI~vGZDY7x`cNOx{YL!Vl<1Q+ae2hU%bF&s%JPWH zdnDN-Xv-sBURE_x6MXtAsK9AB0Wsa_#MDA3?gXm^BNorP^%FU`kfxks zXe~d%Z92psX(y8~4xhm%a7uRyW{QAc1brdOrsd>;b!bMoX|US`z14YuQv(QnoqIxEYFjIO9*1r=L3j delta 1407 zcmbW0e{54#6vyAYue5aAyN3-WorY5{)EtX2c+Dx)>Gt5uFA|gfP4%A(HrqiT~W2 zch32obI8&qHf$Cp zmntc$L$XUQqNG#1-&k$QG7NM0y7+0%k?aoR)dlISa`PI~Bg1gIc2Tb(J^c2|Xb)Zx z+*hxq2BSSu_dx5w;4Zl}8i`2mR1axS^u|4dDQBd!*&YiFG`9JC)yZ92ZC$LXL~bpu z*iu}w)!jx)JHx(hJ#{@hI{cBwm_HgPU5))sjzl6d*xTA4uP4!NcSESEuB@e@*Bj|- zPzFQ9uY~>an*Mgro_J_WtUhL|tm$mq8h7nZx*R>uoyq3LSd$~9I7@?p;Eu)$t;|=O zsI6~_CbeX!vbr@)65-0Azps5;FdS6+E3`^~NoiT6II-2H)sW`u@;+6HhqZ=gwW6;j z6_C69Zf`177E;;*&GA@EPf)7elF}3{R<*9CrDJDtvCkC=gk>TtHX_+%uT>_h;#CQ; z6OTf?a{3W9Ewp6eLmc>_6CVN{reQ6-g+Ipg_`9@3`tZ?1XR22JmyCGd{26`z3~$s} zvdbL&2%p0Vcpc367VLy_D8QG~x!oUPdTO2rdTpM6Y4N`wgY|;P{Pf5Yvv`w(3$Pa| zz=D6k$MGw8t$34KM^KcK5oFX~8$tJS=*%f(vN(zABzDE)c6i+)$Duy{MUCUl)l@o- zmM?X9RfX7{ZX(OxjJL@2#9QQ{qbJb{-l^X_jV#D0mUHXPUr^I1s;ApWQ911zWmQg& zqK69$7U7wN!=VsG)Z0Hp?;>G6o~5QSR7gEzD4%X0L&s_N7^{aaqDc|I%5l66qak*^fRR2s zf%5r+^>~VdKVb&Gg)uk>han$U;whl;9vomgeFPl~GYkKZ#*rsR{rB7GdBYMju;w4aefR_Jzzw!qGjJ8AsC6#04s)4xm_t6u zVj0~wcE}s))MF$qGs6T2_h1fg!!PgvX5kuKfeCyNAN*vMZ~}6~OzzrkHL*k4&^(=Z8N!6j-X8H!{mBJ2etBZ?uHUfL`aF=#vk-DOw?nP7#+;W}KQ p)}jnll!1zbAuzgfGuZy|YC#{bHsr4|)@b31s&f5Kr{TFZe*@MhqZ|ML diff --git a/gestaoRaul/home/__pycache__/urls.cpython-310.pyc b/gestaoRaul/home/__pycache__/urls.cpython-310.pyc index 198a23b96aeaee38927a5657de55e5e79adc9345..0b222c96c2c033acbd27added529e59eff57f5a4 100644 GIT binary patch delta 88 zcmdnP^n!^upO=@50SJutb){dM$Q!`Vk;2x?oX!-*mckj#pvg5cM_Z>#D>);vsKmK6 hvp6#^Ro|w#q{u2Iu_QIP1So2U;JfCf*iD?i6aZd796JC2 delta 43 xcmaFCw1G_cX8CL9QBk(O88hs@yXA8CFFJLF=4K6IsV#;_67y4EfwY0+ANU~TI z_zCddH)#@YvUHHdDJ#6Mg&0hFFkvwj{@z|EV$m++9nKE2fHMjM#&@aGSRMF0WgY4Z zCW44Pg`w&*p3tl-Hj>DXsSk+xEg!A#JoAqt7K>Dh^>~sEraFoJ6$3j3YhmK5p{IVt zx>)XE{7GJhX#;91qbX1hfjZG(v)a>RcRz_(dtXE$*I*Equ%*E)6>kuq1LV)U8~1jk z-RaIt7K&u&QPRznIXj!14#{P7@8S+@dH${0r*FIJbt@f6Q?IF~iPn zHRA_0!yeklpd+`}(9i+9tdU*R9Xi|S_?9TmtY13CXJuMG$9+$@w0wd^g?eC17l73QHIW^knnQzXI<`7$WsBTbNbeBpQGt({2QgVD_; zl`+%l#Bd2AOOy^WKNbP?DJzT^F2iy8<|TAtO0`W%R)Jhd?m}^ElDi_wRUj=$ngb@d zPb}5k9=D&3+t0`CohL1w%uyBwhmaF!rxT=c7KX%y+nj;5JuziNadBU&S2x}++=$V@ ze-ea#QB&+Q&LBfU9!kc*lOXoP;MfPCu6)uN_&wNUERvK|4+Nd*7oG^ZKQaONj|NGx zq`U%hoyZT;&LL#gfF@~cjhDfM!kIX~aHUhheBl>*oV?^!Icz7pebyCeVeJK>V7zes zUXQaLWKM2?09Q_wIi#>u)Y8K7;~2sQ0+w1Jk!iHEd&DbB${!5Cgu)%DJqB^FFqMOf z%4lOL>n1S;HG4rEr27m+r#>z80A2t+&7wjNS1*g4mLM z98+Qn>0443mwtuLrBC@sa%S~_iWxWZj{)SL$PrI^?)$Oh$mqO@q_EV^(!x|Nzb@rJ zl;nmaGPjOM1GvKL?t@JmS&#-XlSeIm1w_+4d<9$B!5%g=0~`37R>#+H9czGCP&7?a zbH`(H9BS#U@H07F`9 zMVyDo9 zbTV6>Oi~#IYJ$mgNNR)eqdr09aVLwHk7;|xNcii8)a$8yH4|DDWEEfMK6ob!*#nuU a(rZ9GN10^+ literal 2018 zcmZ8iOOM+&5Ek{8EI;;{S6^sapgP3Y07Xy~*<@1`=r-7G(Ufpua80f)R}U{qZIFe0 z+7>Xx>jxD&}{PElPS!7v%YvcOm zfbk^^@h1psQIuN+!U$>I&h5g%j?o>^UF;Sf_KfZ3ei7iH2ytj^FOP~C$42+_R*~Su z=t15tI=Ex>Fz*&U+%tNVuNCWf-RNi;XI^&GOg!{cP9y?EYMeC8=sR~k30yEyXeEG5PDS1(_QVIY&V_wy>O9wc3 z!XPNgQiLNjwMPmzLOS5p<--&9!rFl$eg|>-P+C(owWUMR8KO2+z`143(F%3nL2Zqm zdkbssG^nxfSaVnUfCSWCplK*w>YgDPQ4c)%FYWV~1`7nc8UAX6PfxZQi$?IK)7XvI zxHNv{ojE^P2Np8-a{kQrtsenPTYJhoA$bkyC{I?BuphUZ2}G--A`d zf@ETN0{fp){f^8=?B{P7&8jrviHWf~oU)M=Dk9@CXJaB6*L>%$o^?o`bKM-uHwg+A zlCp#hVU-S2g_Yjz;o%EzgPHm&&?I3(@^!HJrWPAoY-_Ov;xCJT0FO8KcRn9z5{bcc zmdk4Js2bIVE`$C3hmUs#V{k&MeNyKGU5LR+#-5A*?1gf*sp~7=17X|SXdA^SM2YPq zAGvQ6+kJc6@lglyk6^(&tZD(E<2J1N2NY>FhE?az0(uEu*uV~Cje%V-Y#0u#^3HvV z7HICSbQ^R}2GejFQHQ!O(cEwRN7hew=Rt$c<0hE4U?exK^Y+48fWHQK21rNGTtgj$ zcJ<5^dYsChTx)>oa$UtH#51EhoU@Yy>=_%6anmJLQa-(k3Q5VX| zS;_U8lD7E!@W7tbx!{(($^(q69B`!Ta-d6u1Fb%WD15_qp*-{CAM0@MYVnB{n$}D4 zA!sTYP2lC7IulvRG$K9&(X$ie+AeZY0(Zv_4S#QGvtCenBKFTW3q_tG1xN2jD5 zSA8+5xE$3|m`=Nd>0!U9AY*aWwad}1Q%jTj` zOHO3P1rK4Zy8ZvPux%G#(`Pg8j+V#1xIpz$f!oU}U0`}sad)=*8C;

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 de vendas

-
-

Gráficos cozinha

@@ -64,22 +62,7 @@ RRB&C - DashBoard
-
-

Mais Vendidos

- - - - - - {% for produto in produtos_mais_vendidos %} - - - - - - {% endfor %} -
ProdutoQuantidade
{{ produto.nome }} {{ produto.quantidade }}
-
+ 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