Skip to content

Commit

Permalink
feat:#88 y #56
Browse files Browse the repository at this point in the history
No permitir crear clientes duplicados ,LIQUIDAR COMISIONES
  • Loading branch information
juancruz1990 committed Jul 18, 2023
1 parent 1741051 commit 48a816e
Show file tree
Hide file tree
Showing 4 changed files with 170 additions and 56 deletions.
14 changes: 13 additions & 1 deletion venta/services.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from datetime import datetime
from core.models import Vendedor
from venta.models import Factura, Liquidacion
from venta.helpers import cliente_existe

def buscar_monto_total_liquidaciones_pendientes(fecha_inicio, fecha_fin, vendedor):
facturas = Factura.objects.filter(
Expand Down Expand Up @@ -43,4 +44,15 @@ def liquidar_liquidaciones_pendientes(fecha_inicio, fecha_fin):
liquidacion.save()
for factura_pendiente_de_liquidar in facturas_pendiente_de_liquidar:
factura_pendiente_de_liquidar.liquidacion = liquidacion
factura_pendiente_de_liquidar.save()
factura_pendiente_de_liquidar.save()


def documento_valido(dni_nuevo , form):
if not dni_nuevo.isnumeric():
form.add_error('documento', 'ingrese un documento valido')
return False
if cliente_existe(dni_nuevo):
form.add_error('documento', 'DNI ya existe en el sistema')
return False
return True

183 changes: 145 additions & 38 deletions venta/templates/venta/listado_liquidaciones.html
Original file line number Diff line number Diff line change
Expand Up @@ -12,52 +12,159 @@

{% block content %}

<center><h1 class="my-4">LISTADO DE LIQUIDACIONES</h1></center>
<div class="switch-toggle switch-3 switch-candy sm row justify-content-center my-4">

<form action="{% url 'venta:listado_liquidaciones' %}" method="post" id="formulario">
{% csrf_token %}
<input type="date" name="fecha_inicio" id="fecha_inicio" required>
<input type="date" name="fecha_fin" id="fecha_fin" required>
<input type="submit" name="cargar" id="cargar" value="Cargar liquidaciones pendientes">
</form>
<!-- VISTA CLIENTES -->
<input id="liquidacion" name="state-d" radio type="radio" value="liquidacion" />
<label for="liquidacion" onclick='seleccionarEstado("liquidacion")'>
<h1>Liquidaciones</h1>
</label>

<div class="formularioRegion" id="vistaClientes">
<input id="abonar" name="state-d" type="radio" value="abonar" />
<label for="abonar" onclick='seleccionarEstado("abonar")'>
<h1>Abonar</h1>
</label>

<style>
.switch-toggle {
margin-top: 1vh;
}

.switch-toggle input {
position: absolute;
opacity: 0;
border-radius: 5px;
}

.switch-toggle input+label {
padding: 7px;
float: center;
cursor: pointer;
}

.switch-toggle input:checked+label {
background: #28a745;
border-radius: 5px;
}
</style>
</div>

<!-- <center><h1 class="my-4">LISTADO DE LIQUIDACIONES</h1></center> -->

<!-- VISTA LIQUIDACIONES -->

<div class="formularioRegion" id="vistaLiquidacion">

<table id="example1" class="table table-striped table-bordered" style="width:100%">

<thead>
<tr>
<th>Nombre</th>
<th>Apellido</th>
<th>Monto</th>
</tr>
</thead>
<tbody>
{% for liquidacion_pendiente in liquidaciones_pendientes %}
<tr>
<td> {{liquidacion_pendiente.nombre}}</td>
<td> {{liquidacion_pendiente.apellido}}</td>
<td> ${{liquidacion_pendiente.monto_total}}</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<th>Nombre</th>
<th>Apellido</th>
<th>Monto</th>
</tr>
</tfoot>
<form action="{% url 'venta:listado_liquidaciones' %}" method="post" id="formulario">
{% csrf_token %}
<input type="date" name="fecha_inicio" id="fecha_inicio" required>
<input type="date" name="fecha_fin" id="fecha_fin" required>
<input type="submit" name="cargar" id="cargar" value="Cargar liquidaciones pendientes">
</form>

<div class="formularioRegion" id="vistaClientes">

<table id="example1" class="table table-striped table-bordered" style="width:100%">

<thead>
<tr>
<th>Nombre</th>
<th>Apellido</th>
<th>Monto</th>
</tr>
</thead>
<tbody>
{% for liquidacion_pendiente in liquidaciones_pendientes %}
<tr>
<td> {{liquidacion_pendiente.nombre}}</td>
<td> {{liquidacion_pendiente.apellido}}</td>
<td> ${{liquidacion_pendiente.monto_total}}</td>
</tr>
{% empty %}
<tr>
<td colspan="7">No se encontraron resultados.</td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<th>Nombre</th>
<th>Apellido</th>
<th>Monto</th>
</tr>
</tfoot>
</table>
</div>
{% if liquidaciones_pendientes %}
<form action="{% url 'venta:liquidar' %}" method="POST" onsubmit=" return valoresCargados()">
{% csrf_token %}
<input type="hidden" name="fecha_inicio" id ="fecha_inicio" value="{{ fecha_inicio }}">
<input type="hidden" name="fecha_fin" id ="fecha_fin" value="{{ fecha_fin }}">
<input type="submit" value="Liquidar" id="boton_liquidar">
</form>
{% endif %}
</table>
</div>
<form action="{% url 'venta:liquidar' %}" method="POST">
{% csrf_token %}
<input type="hidden" name="fecha_inicio" value="{{ fecha_inicio }}">
<input type="hidden" name="fecha_fin" value="{{ fecha_fin }}">
<input type="submit" value="Liquidar">
</form>


<!-- VISTA ABONADOS-->


<div class="formularioRegion" id="vistaAbonados">
<h1>hola abonados</h1>
</div>



{% endblock content %}

{% block extrajs %}

<script type="text/javascript">
//SCRIPT DE DATATABLE

$(document).ready(function () {
$('#example1').DataTable();
$('#example2').DataTable();
});</script>

<script>
let state = sessionStorage.getItem("opcion") || "liquidacion";
document.getElementById(state).setAttribute("checked" , "")
mostrarListado(state)
console.log(state)

function seleccionarEstado(estado){
sessionStorage.setItem("opcion" , estado)
document.getElementById(estado).setAttribute("checked" , "")
mostrarListado(estado)
}


function mostrarListado(state){
switch (state) {
case "liquidacion":
document.getElementById("vistaAbonados").style.display = "none";
document.getElementById("vistaLiquidacion").style.display = "block";
break;
case "abonar":
document.getElementById("vistaAbonados").style.display = "block";
document.getElementById("vistaLiquidacion").style.display = "none";
break;
}
}


function valoresCargados(){
var fechaInicio = document.getElementById("fecha_inicio").value;
var fechaFin = document.getElementById("fecha_fin").value;
if((fechaFin == '') || (fechaInicio == '')){
return false
}
return true
}

</script>

{% endblock extrajs%}
2 changes: 1 addition & 1 deletion venta/templates/venta/modals/modal_aniadir_cliente.html
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ <h5 class="modal-title" id="exampleModalLabel">
</a>
</div>
<form action="{% url 'venta:modalAniadirCliente' %}" method="POST">
<div class="modal-body">
<div class="modal-body" style="max-height: 400px; overflow-y: auto;">
{% csrf_token %}
{{formulario.as_p}}
</div>
Expand Down
27 changes: 11 additions & 16 deletions venta/views.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
from venta.helpers import cliente_existe

from venta.models import Factura, Tipo_pago
from venta.forms import ClienteForm
from django.shortcuts import render, HttpResponse, redirect, get_object_or_404
from django.shortcuts import render, redirect, get_object_or_404
from hotel.models import Hotel, PaqueteTuristico
from core.models import Persona, Vendedor, Cliente
from hotel.models import Hotel, Habitacion, TipoHabitacion
from django.contrib.auth.models import User
from hotel.models import Hotel
from django.contrib.auth.decorators import login_required
from datetime import datetime
from venta.carrito import Carrito
from venta.services import cargar_liquidaciones_pendientes, liquidar_liquidaciones_pendientes
from venta.services import cargar_liquidaciones_pendientes, documento_valido, liquidar_liquidaciones_pendientes


# Create your views here.
Expand Down Expand Up @@ -126,17 +125,12 @@ def cliente_aniadir(request):
form = ClienteForm(request.POST)
if request.method == "POST":
dni_nuevo_cliente = request.POST['documento']
if cliente_existe(dni_nuevo_cliente):
form.add_error('documento', 'DNI ya existe en el sistema')
return render(request,"venta/modals/modal_aniadir_cliente.html",{"formulario":form})
if form.is_valid():
form.save()
form.instance.hacer_cliente()
return redirect('venta:vistaCliente')
return render(request,"venta/modals/modal_aniadir_cliente.html",{"formulario":form})



if documento_valido(dni_nuevo_cliente , form):
if form.is_valid():
form.save()
form.instance.hacer_cliente()
return redirect('venta:vistaCliente')
return render(request,"venta/modals/modal_aniadir_cliente.html",{"formulario":form})

def cliente_modificar(request,cliente):
clienteInstancia=get_object_or_404(Cliente,pk=cliente)
Expand Down Expand Up @@ -281,6 +275,7 @@ def listado_liquidaciones(request):
"fecha_fin": fecha_fin,
"administrador":personaInstancia,
}
print(f'retornando este arreglo : {liquidaciones_pendientes}')
return render(request, "venta/listado_liquidaciones.html",context)
else:
context = {
Expand Down

0 comments on commit 48a816e

Please sign in to comment.