From 377fac4f1c1ec2ae70fd04679a218d1863ea87c2 Mon Sep 17 00:00:00 2001 From: Welton Moura Date: Mon, 30 Jun 2025 18:08:37 -0300 Subject: [PATCH] =?UTF-8?q?refactor:altera=C3=A7=C3=A3o=20modal=20de=20add?= =?UTF-8?q?=20product=20na=20comanda?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/htmx_views.cpython-312.pyc | Bin 9119 -> 4882 bytes .../comandas/__pycache__/urls.cpython-312.pyc | Bin 1850 -> 1871 bytes .../__pycache__/views.cpython-312.pyc | Bin 8977 -> 12411 bytes gestaoRaul/comandas/htmx_views.py | 76 +------- .../comandas/templates/viewcomanda.html | 31 ++-- gestaoRaul/comandas/urls.py | 5 +- gestaoRaul/comandas/views.py | 77 +++++++-- gestaoRaul/db.sqlite3 | Bin 348160 -> 356352 bytes .../comandas/htmx_list_products.html | 6 +- gestaoRaul/templates/static/base.js | 4 +- .../static/comandas/css/viewcomanda.css | 1 + .../static/comandas/js/viewcomanda.js | 162 ++++++++++++------ 12 files changed, 200 insertions(+), 162 deletions(-) diff --git a/gestaoRaul/comandas/__pycache__/htmx_views.cpython-312.pyc b/gestaoRaul/comandas/__pycache__/htmx_views.cpython-312.pyc index 5f0bebdfd3ac8541f32f86c6c31a823b70e0e095..6c5f6336a3d15278b898e5855457f00e56248d41 100644 GIT binary patch delta 1474 zcmY*YOKcoP5bg2)?e+S*YkPy8Str;TM;L@JV43hSb`ThQh0SFTvD!23&ET2oP4!HK zeOV3&2`K`>9NMNSu&bTKNzHLdk)UTTXQKtic{>O4U`>)vu~veRuuq znc1KF`+JG{YR5Y_{SqM$@NoL2y2{h>uV(k!{%~X1AP#W~-iSZi7}a{OSN1E7iq`wQ zF@L-*!g7yxc@eZBwK6lQ$pe{MXXWWzL z+~^%SLE+-~g*a1!*n~E^LUoqz}_P`BpQkiv_$3k{6QfH3q zaMPxN%{=PxnrTX7-ikjPm?~BjR0X8P=-xs6%fM3G%E+wEgI%{NbGNC-feD#!QLtU= z2}~Y{$mcMj?pb9h;Po8e`H0!7pj4BEkXI({2Aw-ALK;Q_iWr&Qb-j=Q^y_QgLR8Yo z6>h*l4gW&|lb9fb5xuUneHxSwsLy1Miv7TLxlBP6z#v9um9Tnc4%n@TiBJxm@6WdD zz~%VKV0jK9%UrhjECOt_z(-C5XfcIG~pHW_58F=rP|&2Zq+gt~ol~!EJ>u54y=VnN9|;saKvAUbJ~zvr>Y4{| z4K?f&w>L!*HWGw5ni|Z+yYsjnFr-X?+|^_P>;>SXhXnA&1Xg}YJrQ~A z8r)Deq>%VRiN8~ZVRXnuhg|58%O~W8KgmLeT L;-yR5Y0UaB{rZFv literal 9119 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 diff --git a/gestaoRaul/comandas/__pycache__/urls.cpython-312.pyc b/gestaoRaul/comandas/__pycache__/urls.cpython-312.pyc index a608b8de28eb135ecfadd339c2d011f7e68a276a..b0a2808edba2a54cafce37ceb1f82ee41fc76b21 100644 GIT binary patch delta 281 zcmdnRcb-q~G%qg~0}$*yk(6P~%E0g##DM|6jdDedTucn9j45KNtXWc%=P{}>vu4Rm zKE^1=lFk*yKluscLSB|AkyQRvkt$vWhA95clbCE78MP;0V3xJBDK06pDk#cNDNQc1 z)4#=?lUZC60O3{{LB(xtGV@AcisCaHE@4aVPNH)e1*+dl9N@0=>mhm2R;Tyo(uf)7a8Omxr=0gHUR); CwNwTG delta 287 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 Pe@;V3uo0)Qy6}GhAl+)F delta 827 zcmYjPF>KR76zwIk6T37JkpfL=8mgeglqR&OFr;N55K>yT6c7wl1QQ!DIC1oyAV7k) z17e^>s!poJ4g-j#SY_z|dk2^pEC!Z}xg%oX|MLKr?)lxj|KHvHe}8VRRpQ${J!%(z zoxKb9whykw53!Yv+$xJa?$c7<4>m6|jTd5bY=l3HO|U%QimjkhRR(4Xm<2fmU#&Y0 zy=mw*%YZzoW28n~I@B%QhQlO{l60U2j?rm5ZmpqPZtbDjG%Uk$;UwQsvaHCzE62La z7&wf>U1j{U*6U@|oiHnLIX;#hC!;7qgy0mxeu4plJp@yHA>N-XA@!pT(-lXm(n6lU zj1Nh(NUPq*`1{bM3aR}FnhMjzg}X2jcK_T(K3T#HfkHVE$PgE*xN?<$NDNBzC|>ox zCEkX*MSft+my$*K0>#hp&E!#8BwXV^lUeBosy98Q_e(?;UYGgTzTBdYsxP;#cE@&n zsqR1ve|L1-HMI~JWJD3#K9GoCr)Z^ZHB7^_+d3pj6n97yo1$g;E;yZ*>&xaN%Wb=U zv^+OAJ$3$yD54*>%_hhcr&>m>9t+wDCH^!8s@RXf_I{^Mhq3#k=@a909Y5^cb~WX{ z4Mh!?aVaPjS&AnDO=2a!o=&r6zL_4Do}<9MophOBk*I!+l5_g5ExP`t -

{product.name}

-

{order.obs}

-

{comanda.name} - {comanda.mesa.name}

-

{order.queue.strftime("%d/%m/%Y - %H:%M")}

-

Atendente: {comanda.user.first_name}

-
- -
- - """, - 'local':'cozinha', - 'tipo':'add', - 'id':order.id, - 'speak': f'Novo pedido! {product.name}, para {comanda.name}.' - }) - try: - # Chama a função async dentro da view normal - async_to_sync(enviar_mensagem)(mensagem) - - # return JsonResponse({"status": "Mensagem enviada com sucesso"}) - - except Exception as e: - print("Erro add product websocket: ",e) - # return JsonResponse({"status": "Erro", "erro": str(e)}, status=500) - # asyncio.run(enviar_mensagem(msg)) - consumo = ProductComanda.objects.filter(comanda=comanda_id) - valores = somar(consumo,comanda) - - return render(request, "htmx_components/comandas/htmx_list_products_in_comanda.html",{'config':config, 'valores':valores,'parcials':parcial,'consumo': consumo,'comanda':comanda}) - @group_required(groupName='Garçom') diff --git a/gestaoRaul/comandas/templates/viewcomanda.html b/gestaoRaul/comandas/templates/viewcomanda.html index d46ef9b..6af1eb6 100644 --- a/gestaoRaul/comandas/templates/viewcomanda.html +++ b/gestaoRaul/comandas/templates/viewcomanda.html @@ -13,6 +13,16 @@ Detalhes {{comanda.name}} {% block 'head' %} + {% endblock %} @@ -22,7 +32,7 @@ Detalhes {{comanda.name}}
- + +
+ """, + 'local':'cozinha', + 'tipo':'add', + 'id':order.id, + 'speak': f'Novo pedido! {product.name}, para {comanda.name}.' + }) + try: + # Chama a função async dentro da view normal + async_to_sync(enviar_mensagem)(mensagem) + + # return JsonResponse({"status": "Mensagem enviada com sucesso"}) + + except Exception as e: + print("Erro add product websocket: ",e) + # return JsonResponse({"status": "Erro", "erro": str(e)}, status=500) + # asyncio.run(enviar_mensagem(msg)) + consumo = ProductComanda.objects.filter(comanda=comanda_id) + valores = somar(consumo,comanda) + + return render(request, "htmx_components/comandas/htmx_list_products_in_comanda.html",{'config':config, 'valores':valores,'parcials':parcial,'consumo': consumo,'comanda':comanda}) + + + +def listProduct(request, comanda_id, product): + 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}) \ No newline at end of file diff --git a/gestaoRaul/db.sqlite3 b/gestaoRaul/db.sqlite3 index dd384d29d65637a08d02a4feb58f2b20213320f3..20d86d79d34ce113ea454f36f3c4ec648a17c0bf 100644 GIT binary patch delta 4528 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 E0lG`9<^TWy diff --git a/gestaoRaul/templates/htmx_components/comandas/htmx_list_products.html b/gestaoRaul/templates/htmx_components/comandas/htmx_list_products.html index eedce97..9245b3d 100644 --- a/gestaoRaul/templates/htmx_components/comandas/htmx_list_products.html +++ b/gestaoRaul/templates/htmx_components/comandas/htmx_list_products.html @@ -3,11 +3,9 @@ {% for product in products %}
+> {{product.name}}
R$ {{product.price}}
diff --git a/gestaoRaul/templates/static/base.js b/gestaoRaul/templates/static/base.js index 10a7897..9a0f4d5 100644 --- a/gestaoRaul/templates/static/base.js +++ b/gestaoRaul/templates/static/base.js @@ -178,7 +178,6 @@ function openFullscreen() { function feedback(message, icon, subMessage) { - console.log(subMessage) var feedbackMsg = Swal.fire({ color: 'white', title: message, @@ -189,5 +188,6 @@ function openFullscreen() { background: 'rgb(23, 38, 54)', confirmButtonColor: 'linear-gradient(145deg, #1E2A3B, #2C3E50)', }); -return feedbackMsg; + + } \ No newline at end of file diff --git a/gestaoRaul/templates/static/comandas/css/viewcomanda.css b/gestaoRaul/templates/static/comandas/css/viewcomanda.css index cfce875..a667610 100644 --- a/gestaoRaul/templates/static/comandas/css/viewcomanda.css +++ b/gestaoRaul/templates/static/comandas/css/viewcomanda.css @@ -53,6 +53,7 @@ } .popover{ + display: none; position: relative; width: 98%; height: 96%; diff --git a/gestaoRaul/templates/static/comandas/js/viewcomanda.js b/gestaoRaul/templates/static/comandas/js/viewcomanda.js index 25741c5..028858c 100644 --- a/gestaoRaul/templates/static/comandas/js/viewcomanda.js +++ b/gestaoRaul/templates/static/comandas/js/viewcomanda.js @@ -1,23 +1,52 @@ +async function openModal() { + var htmlModal = document.getElementById('addProduct').innerHTML + htmlModal = htmlModal.replace('search-product','search-product-modal') + htmlModal = htmlModal.replace('product-list','product-list-modal') + +const { value: formValues } = await Swal.fire({ + title: "Adicionar Produto", + html: htmlModal, + width: '100em', + theme: "dark", + didOpen: () => { + Swal.getPopup().classList.add('swal2-noautoclose'); + }, + showConfirmButton: false, + showCancelButton: true, + cancelButtonText: '×', + customClass:{ + cancelButton:'posi' + }, + focusConfirm: false, +}); + + -function openModal() { - textField = document.getElementById('search-product') -if (textField) { +} + +function searchProduct() { setTimeout(() => { - textField.focus(); - }, 500); -} - textField.value = ''; -} + time(); + }, 100); + function time(){ + var search_product = document.getElementById('search-product-modal').value.trim() + var productListElement = document.getElementById("product-list-modal"); + var comanda_id = document.getElementById("id-comanda").value; - -function closeModal() { - var popover = document.getElementById('addProduct'); - popover.hidePopover() + if(search_product.length == 0 ){search_product ='*';} + fetch(`/comandas/listProduct/${comanda_id}/${search_product}`, { + method: 'GET',} + ).then(function(response) { + return response.text(); + }).then(function(text) { + productListElement.innerHTML = text; + + + })} } - function openModalAlter() { document.getElementById('Modal-alter-comanda').style.display = 'block'; var name = document.getElementById('name-comanda').innerText.replace('Nome: ','').replace(' | ', '') @@ -328,43 +357,80 @@ function addOrder(id, obs){ } -function showToastAdd(message, type ,duration = 3000) { - const toast = document.getElementById('toast-add'); - if (type === 'success') { - toast.style.backgroundColor = '#28a745'; - } else if (type === 'error') { - toast.style.backgroundColor = '#dc3545'; - } else if (type === 'info') { - toast.style.backgroundColor = '#ffc107'; +async function addProductComanda(productId, comandaId, cuisine) { + try { + if (!productId || !comandaId) { + throw new Error('IDs de produto ou comanda inválidos'); + } + + const csrfToken = document.querySelector('[name="csrfmiddlewaretoken"]').value + if (!csrfToken) { + throw new Error('Token de segurança não encontrado'); + } + + // if (cuisine === 'ggg') { + // openModalObs(); + // return; + // } + + // Mostra estado de carregamento + Swal.update({ + title: 'Adicionando produto...', + }); + + // Requisição POST + const response = await fetch(`/comandas/product=${productId}/comanda=${comandaId}/`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-CSRFToken': csrfToken + }, + body: JSON.stringify({ + product_id: productId, + comanda_id: comandaId + }) + }); + + // Trata resposta + if (!response.ok) { + const errorData = await response.json().catch(() => ({})); + throw new Error(errorData.message || `Erro HTTP: ${response.status}`); + } + + const result = await response.text(); + + // Atualiza a lista de produtos + const listElement = document.getElementById("list-products-comanda"); + if (listElement) { + listElement.innerHTML = result; + } + + // Feedback de sucesso + Swal.update({ + title: 'Produto adicionado! 😁', + }); + + // Reseta após 2.5 segundos + setTimeout(() => { + Swal.update({ + title: 'Adicionar Produto' + }); + }, 2500); + + } catch (error) { + console.error('Erro:', error); + + // Feedback de erro + Swal.update({ + title: 'Falha ao adicionar!', + html: `
+ ${error.message || 'Erro desconhecido'} +
`, + icon: 'error', + + }); } - const toastMessage = document.getElementById('toast-message-add'); - toastMessage.textContent = message; - toast.classList.add('show'); - - setTimeout(() => { - toast.classList.remove('show'); - }, duration); -} -function addProductComanda(productId,comandaId, cuisine) { - obs = document.getElementById('obs'); - if(cuisine == 'ggg'){ - var obs = openModalObs(); - }else{ - fetch(`/comandas/addProduct${productId}/${comandaId}`, { - method: 'GET', - headers: { - 'Content-Type': 'application/json'} - }) - .then(function(response) { - return response.text(); - }).then(function(text) { - var listProductsBalcaoElement = document.getElementById("list-products-comanda"); - listProductsBalcaoElement.innerHTML = text; - }) - showToastAdd('Produto adicionado com sucesso!😁','success'); - } - } function taxa(){