Skip to content

Commit dd69ce6

Browse files
committed
feat: No permitir crear clientes duplicados #88
1 parent b7e1ae8 commit dd69ce6

File tree

3 files changed

+163
-25
lines changed

3 files changed

+163
-25
lines changed

venta/helpers.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
from core.models import Persona
3+
4+
5+
def cliente_existe(dni_nuevo_cliente):
6+
cliente = Persona.objects.filter(documento = dni_nuevo_cliente)
7+
if cliente:
8+
return True
9+
return False
Lines changed: 148 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,151 @@
1-
<div class="modal-xl modal-dialog">
2-
<div class="modal-content">
3-
<div class="modal-header">
4-
<h5 class="modal-title" id="exampleModalLabel">
5-
AÑADIR CLIENTE
6-
</h5>
7-
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
8-
<span>&times;</span>
9-
</button>
10-
</div>
11-
<form action="{% url 'venta:modalAniadirCliente' %}" method="POST">
12-
<div class="modal-body">
13-
{% csrf_token %}
14-
{{formulario.as_p}}
1+
2+
{% load static %}
3+
4+
<html>
5+
6+
<head>
7+
<link rel="icon" type="image/png" href="/static/icons/hotelIco.png">
8+
<meta charset="utf-8">
9+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
10+
<!--SWEET ALERT CSS-->
11+
<link rel="stylesheet" href="{% static '/css/sweetalert2.css' %}">
12+
<!--BOOTSTRAP CSS-->
13+
<link rel="stylesheet" href="{% static '/css/bootstrap.min.css' %}">
14+
15+
<!-- Bootstrap CSS para datatable-->
16+
<link rel="stylesheet" href="{% static '/css/bootstrap.css' %}">
17+
<link rel="stylesheet" href="{% static '/css/dataTables.bootstrap4.min.css' %}">
18+
<!-- Bootstrap CSS para datatable-->
19+
20+
<!-- FONTAWESOME -->
21+
<script src="{% static '/js/d91d4c71ff.js' %}"></script>
22+
23+
<!--CUSTOM CSS-->
24+
<link rel="stylesheet" href="{% static '/css/styleBase.css' %}">
25+
<link rel="stylesheet" href="{% static '/css/modal.css' %}">
26+
<link rel="stylesheet" href="{% static '/css/botones.css' %}">
27+
28+
29+
{% block extra_css %}
30+
31+
{% endblock extra_css %}
32+
</head>
33+
34+
<body class="bodyComplete">
35+
36+
37+
<!-- HEADER -->
38+
<div class="container-fluid mainHeader p-3 fixed-top">
39+
<div class="row">
40+
<div class="col-2">
41+
{% block header %}
42+
43+
{% endblock header %}
44+
45+
</div>
46+
<div class="col-8">
47+
{% block headerContenido %}
48+
{% endblock headerContenido %}
49+
50+
{% block carrito %}
51+
{% endblock carrito %}
52+
</div>
53+
<div class="col-2">
54+
55+
<button onclick="location.href='/core/logout'" style="text-decoration:none; align-items:right;"
56+
class="rounded-1 btn btn-lg btn-outline-secondary text-white float-center mt-1 "> Cerrar Sesion
57+
</button>
58+
59+
</div>
1560
</div>
16-
<div class="modal-footer">
17-
<button type="dismiss" class="cerrar" data-dismiss="modal">
18-
Cerrar
19-
</button>
20-
<button type="submit" name="accion" class="guardar" value="hotel">
21-
Guardar
22-
</button>
61+
</div>
62+
63+
<!-- opciones + contenido -->
64+
<div class="container-fluid position-fixed" style="top: 100px;">
65+
<!-- CONTENIDO -->
66+
<div class="col-12 position-relative" id="main">
67+
68+
<div class="modal-xl modal-dialog modal-dialog-scrollable">
69+
<div class="modal-content">
70+
<div class="modal-header">
71+
<h5 class="modal-title" id="exampleModalLabel">
72+
AÑADIR CLIENTE
73+
</h5>
74+
<a type="button" class="close" data-dismiss="modal" aria-label="Close" href="{% url 'venta:vistaCliente' %}">
75+
<span aria-hidden="true">&times;</span>
76+
</a>
77+
</div>
78+
<form action="{% url 'venta:modalAniadirCliente' %}" method="POST">
79+
<div class="modal-body">
80+
{% csrf_token %}
81+
{{formulario.as_p}}
82+
</div>
83+
<div class="modal-footer">
84+
<a href="{% url 'venta:vistaCliente' %}">Cerrar</a>
85+
<button type="submit" name="accion" class="guardar" value="hotel">
86+
Guardar
87+
</button>
88+
</div>
89+
</form>
90+
</div>
91+
</div>
92+
93+
94+
</div>
95+
</div>
96+
97+
98+
<!-- Footer -->
99+
<div class="footer text-center mb-0 fixed-bottom">
100+
<div class="container">
101+
{% block footer %}
102+
103+
{% endblock footer %}
104+
<p class="m-0 mbt1 text-white">&copy; UNPSJB - GRUPO 1 - DESARROLLO DE SOFTWARE</p>
23105
</div>
24-
</form>
25106
</div>
26-
</div>
27-
107+
108+
109+
<!--sweet alert2-->
110+
111+
<script src="{% static '/js/[email protected]' %}"></script>
112+
113+
<!-- Bootstrap 4.5-->
114+
<script src="{% static '/js/jquery-3.5.1.js' %}"></script>
115+
<script src="{% static '/js/bootstrap.bundle.js' %}"></script>
116+
117+
<script src="{% static '/js/bootstrap-datetimepicker.min.js' %}"></script>
118+
119+
<!--dataTable jquery + bootstrap + popper include-->
120+
<script src="{% static 'js/jquery.dataTables.min.js'%}"></script>
121+
<script src="{% static '/js/dataTables.bootstrap4.min.js'%}"></script>
122+
123+
<!--scripts personalizados-->
124+
<script src="{% static '/js/main.js' %}"></script>
125+
126+
<!--sweet alert2-->
127+
<script src="{% static '/js/[email protected]' %}"></script>
128+
129+
130+
131+
<!--dataTable jquery + bootstrap + popper include-->
132+
<script src="{% static '/js/jquery.dataTables.min.js'%}"></script>
133+
<script src="{% static '/js/dataTables.bootstrap4.min.js'%}"></script>
134+
135+
136+
<!--scripts personalizados-->
137+
138+
<script src="{% static '/js/main.js' %}"></script>
139+
140+
<!--CUSTOM CSS-->
141+
<link rel="stylesheet" href="{% static '/css/styleBase.css' %}">
142+
<link rel="stylesheet" href="{% static '/css/modal.css' %}">
143+
<link rel="stylesheet" href="{% static '/css/botones.css' %}">
144+
145+
{% block extrajs %}
146+
{% endblock %}
147+
148+
</body>
149+
150+
151+
</html>

venta/views.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from venta.helpers import cliente_existe
12
from venta.models import Factura, Tipo_pago
23
from venta.forms import ClienteForm
34
from django.shortcuts import render, HttpResponse, redirect, get_object_or_404
@@ -118,10 +119,14 @@ def vista_cliente(request):
118119
contador=carrito.get_cantidad()
119120
return render(request, "venta/vista_cliente.html", {"colClientes": colClientes,"vendedor":vendedorInstancia,"contador":contador})
120121

122+
121123
def cliente_aniadir(request):
122-
colClientes = Cliente.objects.all()
123124
form = ClienteForm(request.POST)
124125
if request.method == "POST":
126+
dni_nuevo_cliente = request.POST['documento']
127+
if cliente_existe(dni_nuevo_cliente):
128+
form.add_error('documento', 'DNI ya existe en el sistema')
129+
return render(request,"venta/modals/modal_aniadir_cliente.html",{"formulario":form})
125130
if form.is_valid():
126131
form.save()
127132
form.instance.hacer_cliente()

0 commit comments

Comments
 (0)