feat: acossiar comandas fiados a conta client

This commit is contained in:
2025-02-19 16:49:24 -03:00
parent 456fba3d6a
commit d2ab8212b9
14 changed files with 111 additions and 6 deletions

View File

@@ -33,7 +33,7 @@ Clientes
{% for client in clients %}
<tr>
<td id="name-{{client.id}}" >{{client.name}}</td>
<td ><a id="name-{{client.id}}" href="{% url 'viewClient' client.id %}">{{client.name}}</a></td>
<td id="debt-{{client.id}}" >R$ {{client.debt}}</td>
<td class="hide-on-mobile" id="contact-{{client.id}}" >{{client.contact}}</td>
<td hidden id="active-{{client.id}}" >{{client.active}}</td>

View File

@@ -0,0 +1,61 @@
{% extends "base.html" %}
{% load static %}
{% load custom_filter_tag %}
{% block 'title' %}
Comandas
{% endblock %}
{% block 'head' %}
<link rel="stylesheet" href="{% static 'comandas/css/comandas.css' %}">
{% endblock %}
{% block 'body' %}
<body>
<div style="justify-self: center;">
<h4>{{client.name}}</h4>
</div>
<div class=" ">
<table>
<tr>
<th style="text-align: left;"><b>Nome</b></th>
<th style="text-align: left;"><b>Atendente</b></th>
<th style="text-align: left;"><b>Data abertura</b></th>
<th style="text-align: left;"><b>Data fechamento</b></th>
<th style="text-align: left;"><b>Detalhes</b></th>
<th style="text-align: left;"><b>Valor</b></th>
</tr>
{% for comanda in comandas %}
<tr>
<td>{{comanda.name}}</td>
<td>{{comanda.user.first_name}} {{comanda.user.last_name}}</td>
<td>{{comanda.dt_open}}</td>
<td>{{comanda.dt_close}}</td>
<td>
<span data-tooltip="Visualizar Comanda" data-flow="top">
<a href="{% url 'viewcomanda' %}?parametro={{ comanda.id }}">
<img
src="{% static 'midia/icons/view.svg' %}"
style="height: 35px; cursor: pointer;">
</img>
</a>
</span>
</td>
<td>
{{ comanda.id | total }}
</td>
</tr>
{% endfor %}
</table>
</div>
</body>
<script src="{% static 'comandas/js/comandas.js' %}"></script>
{% endblock %}

View File

@@ -7,6 +7,7 @@ urlpatterns = [
path('createClient', views.createClient, name='createClient'),
path('editClient', views.editClient, name='editClient'),
path('payDebt', views.payDebt, name='payDebt'),
path('viewClient/<int:clientId>', views.viewClient, name='viewClient'),

View File

@@ -1,6 +1,7 @@
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from comandas.models import Comanda
from gestaoRaul.decorators import group_required
from clients.models import Client
@@ -11,6 +12,13 @@ def clients(request):
clients = Client.objects.all()
return render(request, 'clients.html', {'clients': clients})
def viewClient(request,clientId):
id = int(clientId)
print(id)
client = Client.objects.get(id=id)
comandas = Comanda.objects.filter(client = client).filter(status = 'FIADO')
return render(request, 'viewclient.html', {'client': client, 'comandas': comandas})
@group_required(groupName='Gerente')
def createClient(request):

View File

@@ -34,7 +34,7 @@ Detalhes {{comanda.name}}
{% endif %}
>Fechar Conta</button>
{% if comanda.status == 'PAYING' %}
{% if comanda.status == 'PAYING' or comanda.status == 'FIADO'%}
<button class="btn-secondary" id="pagarComanda" onclick="modal_payment_comanda()">Receber</button>
{% else %}
@@ -207,9 +207,11 @@ Detalhes {{comanda.name}}
<div style="display: flex;gap: 10px;">
<button type="submit" class="btn-secondary" onclick="backPage()">Receber</button>
{% if comanda.status != 'FIADO' %}
<button type="button" class="btn-primary" onclick=" modal_conta_client()">
Conta
</button>
{% endif %}
<button type="button" class="btn-cancel" onclick="close_modal_payment_comanda()">Cancelar</button>
</div>
</footer>

View File

@@ -1,6 +1,8 @@
from decimal import Decimal
from django import template
from comandas.models import Comanda, ProductComanda
from payments.models import Payments
register = template.Library()
@@ -8,10 +10,18 @@ register = template.Library()
def filter_total(value):
id = value
comanda_id = int(id)
totalParcial = Decimal(0)
comanda = Comanda.objects.get(id=comanda_id)
consumo = ProductComanda.objects.filter(comanda=comanda_id)
total = 0
parcial = Payments.objects.filter(comanda=comanda)
for p in parcial:
totalParcial += p.value
total = Decimal(0)
for produto in consumo:
total += produto.product.price
taxa = round(total * Decimal(0.1), 2)
total = (total + taxa) - totalParcial
return f'R$ {total}'

View File

@@ -87,12 +87,12 @@ def addContaCliente(request):
comandaId = int(request.POST.get('idComanda'))
clientId = int(request.POST.get('select-client'))
valor = float(request.POST.get('valor-conta').replace(',','.'))
comanda = Comanda.objects.get(id=comandaId)
client = Client.objects.get(id=clientId)
client.debt = client.debt + Decimal(valor)
# client.debt = Decimal(0)
comanda.client = client
comanda.status = 'CLOSED'
comanda.dt_close = timezone.now()
comanda.status = 'FIADO'
client.save()
comanda.save()
return redirect('comandas')

Binary file not shown.

View File

@@ -0,0 +1,14 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg fill="#ffa500" width="96px" height="96px" viewBox="0 0 36 36" version="1.1" preserveAspectRatio="xMidYMid meet" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>
<g id="SVGRepo_iconCarrier"> <title>view-list-line</title> <rect class="clr-i-outline clr-i-outline-path-1" x="2" y="8" width="2" height="2"/>
<path class="clr-i-outline clr-i-outline-path-2" d="M7,10H31a1,1,0,0,0,0-2H7a1,1,0,0,0,0,2Z"/>
<rect class="clr-i-outline clr-i-outline-path-3" x="2" y="14" width="2" height="2"/>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,9 @@
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Uploaded to: SVG Repo, www.svgrepo.com, Transformed by: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" fill="#ffa500">
<g id="SVGRepo_bgCarrier" stroke-width="0"/>
<g id="SVGRepo_tracerCarrier" stroke-linecap="round" stroke-linejoin="round"/>

After

Width:  |  Height:  |  Size: 865 B