Alejandro Villanueva avatar Alejandro Villanueva committed cb10816

Adding pagination to sales, clients, cars, added search on clients and sales, fixing seguro charge per day

Comments (0)

Files changed (13)

apps/clientes/views.py

 from django.core import serializers
 from django.utils import simplejson
 from django.http import HttpResponse
+from django.db.models import Q
 
 
 @login_required
 def clientes(request):
-    clientes = Clientes.objects.all().order_by('nombre')
+    if request.method == 'POST':
+        q = request.POST["q"]
+        clientes = Clientes.objects.filter(
+                            Q(nombre__contains=q)|
+                            Q(apellidos__contains=q)
+                            )
+    else:
+        clientes = Clientes.objects.all().order_by('nombre')
     paginator = Paginator(clientes, 30) 
     
      # Make sure page request is an int. If not, deliver first page.

apps/ventas/views.py

 from apps.admin.models import Precios
 from apps.eonutils.forms import DivErrorList
 from datetime import datetime, time
-from django.db.models import Sum
+from django.db.models import Sum, Q
 
 
 @login_required
 @login_required
 def ventas(request):
     ventas = Ventas.objects.all().order_by('serie').order_by('num_contrato')
-    paginator = Paginator(ventas, 60) 
+    paginator = Paginator(ventas, 6) 
     
      # Make sure page request is an int. If not, deliver first page.
     try:
         if form.is_valid():
             venta = form.save(commit=False)
             venta.vendedor = request.user
+            if venta.tipo_pago == "PENDIENTE":
+                venta.reembolso = 1
             venta.save()
             messages.success(request, 'Venta agregada correctamente.')
             return redirect('/ventas/entregas/', 
             precios = Precios.objects.latest('hora_extra')
             f = form.save(commit=False)
             f.finalizada = True
-            f.total_dias = f.preciodia * abs((f.fecha_salida.date() - f.fecha_entrada.date()).days)
+            days = abs((f.fecha_salida.date() - f.fecha_entrada.date()).days)
+            f.total_dias = f.preciodia * days
             f.total_horaextra = f.hora_extra * precios.hora_extra
             f.total_gas = (f.gas_octavos_salida - f.gas_octavos_entrada) * precios.octavo_gas 
             f.total = f.total_gas + f.total_dias + f.total_horaextra
                 f.total += precios.seguro_accidentes
                 f.total_seguros = precios.seguro_accidentes 
             if f.seguro_colision:
-                f.total += precios.seguro_colision
-                f.total_seguros += precios.seguro_colision 
+                f.total += precios.seguro_colision * days
+                f.total_seguros += precios.seguro_colision * days
             if f.iva:
                 f.total_iva = f.total * 0.11
                 f.total += f.total * 0.11
 
 
 def terminadas(request):
-    finalizadas = Ventas.objects.filter(finalizada = True)
+    if request.method == 'POST':
+        q = request.POST["q"]
+        finalizadas = Ventas.objects.filter(
+                Q(num_contrato__contains=q)
+        )
+    else:
+        finalizadas = Ventas.objects.filter(finalizada = True)
     finalizadas.order_by('serie')
     finalizadas.order_by('num_contrato')
     
             
                 fecha_inicio_min = datetime.combine(form.cleaned_data['fecha_inicial'], time.min)
                 fecha_final_max = datetime.combine(form.cleaned_data['fecha_final'], time.max)
-                ventas = Ventas.objects.filter(created_at__range= 
+                ventas = Ventas.objects.filter(fecha_entrada__range= 
                     (fecha_inicio_min, fecha_final_max), finalizada=True)
             else:
                 mes = datetime.today().month
-                ventas = Ventas.objects.filter(created_at__month=mes, finalizada=True)
+                ventas = Ventas.objects.filter(fecha_entrada__month=mes, finalizada=True)
             if form.cleaned_data['tipo_contrato']:
                 ventas = ventas.filter(serie=form.cleaned_data['tipo_contrato'])
             if form.cleaned_data['auto']:
             if form.cleaned_data['vendedor']:
                 ventas = ventas.filter(vendedor=form.cleaned_data['vendedor'])
             total = ventas.aggregate(Sum('total'))
-            total_fiscal = ventas.filter(serie="E").aggregate(Sum('total'))
+            total_fiscal = ventas.filter(serie="C").aggregate(Sum('total'))
             total_no_fiscal = ventas.filter(serie="D").aggregate(Sum('total'))
     else:
         form = ReporteVentasForm()
 
 
 def pendientes(request):
-    pendientes = Ventas.objects.filter(tipo_pago = "PENDIENTE")
+    pendientes = Ventas.objects.filter(tipo_pago = "PENDIENTE", reembolso=1)
     pendientes.order_by('serie')
     pendientes.order_by('num_contrato')
     

static/assets/js/admin.js

         dateFormat: 'dd/mm/yy',
         addSliderAccess: true,
         sliderAccessArgs: { touchonly: false },
-        hourGrid: 4,
-        minuteGrid: 10,
     });
     
     $('.dp').datepicker({ dateFormat: 'dd/mm/yy' });

static/assets/js/sales.js

             }
 
             if ($("#id_seguro_colision").is(":checked")){
-                total += precios.seguro_colision;
+                total += precios.seguro_colision * days;
             }
 
             /*

templates/autos/autos.html

         <div>
             <h2>Autos</h2>
         </div>
+        <div class="row-fluid span10">
+            <hr />
+            <ul class="pager">
+                {% if autos.has_previous %}
+                    <li class="previous">
+                        <a href="?page={{ autos.previous_page_number }}">&larr; Mas Nuevos</a>
+                    </li>
+                {% endif %}
+
+                <span class="label label-info">
+                    Pagina {{ autos.number }} de {{ autos.paginator.num_pages }}.
+                </span>
+
+                {% if autos.has_next %}
+                    <li class="next">
+                        <a href="?page={{ autos.next_page_number }}">Mas Antiguos &rarr;</a>
+                    </li>
+                {% endif %}
+            </ul>
+        </div>
         <div class="table table-striped  table-condensed table-bordered">
             <table width="100%" border="0" cellspacing="0" cellpadding="0">
                 <tr>

templates/clientes/clientes.html

     {% endif %}
         <div>
             <h2>Clientes</h2>
+            <form class="well form-search" method="POST" action="."> {% csrf_token %}
+              <input type="text" name="q" class="input-medium search-query">
+              <button type="submit" class="btn">Buscar</button>
+            </form>
+        </div>
+        <div class="row-fluid span10">
+            <hr />
+            <ul class="pager">
+                {% if clientes.has_previous %}
+                    <li class="previous">
+                        <a href="?page={{ clientes.previous_page_number }}">&larr; Mas Nuevos</a>
+                    </li>
+                {% endif %}
+
+                <span class="label label-info">
+                    Pagina {{ clientes.number }} de {{ clientes.paginator.num_pages }}.
+                </span>
+
+                {% if clientes.has_next %}
+                    <li class="next">
+                        <a href="?page={{ clientes.next_page_number }}">Mas Antiguos &rarr;</a>
+                    </li>
+                {% endif %}
+            </ul>
         </div>
         <div class="table table-striped  table-condensed table-bordered">
             <table width="100%" border="0" cellspacing="0" cellpadding="0">

templates/default.html

                           <li><a href="{% url apps.ventas.views.add_ventas %}"><i class="icon-plus"></i> Agregar</a></li>
                           <li><a href="{% url apps.ventas.views.lista_entregas %}"><i class="icon-share"></i> Activos</a></li>
                           <li><a href="{% url apps.ventas.views.terminadas %}"><i class="icon-check"></i> Cerradas</a></li>
-                          <li><a href="{% url apps.ventas.views.pendientes %}"><i class="icon-briefcase"></i> Cartera</a></li>
+                          <li><a href="{% url apps.ventas.views.pendientes %}"><i class="icon-briefcase"></i> Credito</a></li>
                           <li><a href="{% url apps.ventas.views.reportes %}"><i class="icon-list-alt"></i> Reportes</a></li>
                       </ul>
                       {% endif %}

templates/ventas/lista_entregas.html

                     <th></th>
                     <th></th>
                 </tr>
+                <tr><h5>Fiscales</h5></tr>
                 {% for venta in ventas %}
-                    <tr>
-                        <td>{{ venta.num_contrato }}</td>
-                        <td>{{ venta.auto.codigo }}</td>
-                        <td>{{ venta.auto.placas }}</td>
-                        <td>{{ venta.cliente.nombre }} {{ venta.cliente.apellidos }}</td>
-                        <td>{{ venta.fecha_salida }}</td>
-                        <td>{{ venta.fecha_entrada }}</td>
-                        <td>{{ venta.total }}</td>
-                        <td><a class="btn btn-info" href="{% url apps.ventas.views.detail_ventas venta.id %}"><i class="icon-zoom-in icon-white"></i> Ver</a></td>
-                        <td><a class="btn btn-info" href="{% url apps.ventas.views.entregar venta.id %}"> <i class="icon-share-alt icon-white"></i> Entregar</a></td>
-                    </tr>
+                    {% if venta.serie == "C" %}
+                        <tr>
+                            <td>{{ venta.num_contrato }}</td>
+                            <td>{{ venta.auto.codigo }}</td>
+                            <td>{{ venta.auto.placas }}</td>
+                            <td>{{ venta.cliente.nombre }} {{ venta.cliente.apellidos }}</td>
+                            <td>{{ venta.fecha_salida }}</td>
+                            <td>{{ venta.fecha_entrada }}</td>
+                            <td>{{ venta.total }}</td>
+                            <td><a class="btn btn-info" href="{% url apps.ventas.views.detail_ventas venta.id %}"><i class="icon-zoom-in icon-white"></i> Ver</a></td>
+                            <td><a class="btn btn-info" href="{% url apps.ventas.views.entregar venta.id %}"> <i class="icon-share-alt icon-white"></i> Entregar</a></td>
+                        </tr>
+                    {% endif %}
+                {% endfor %}
+                        <tr>
+                            <td><h5>No Fiscales</h5></td>
+                        </tr>
+                {% for venta in ventas %}
+                    {% if venta.serie == "D" %}
+                        <tr>
+                            <td>{{ venta.num_contrato }}</td>
+                            <td>{{ venta.auto.codigo }}</td>
+                            <td>{{ venta.auto.placas }}</td>
+                            <td>{{ venta.cliente.nombre }} {{ venta.cliente.apellidos }}</td>
+                            <td>{{ venta.fecha_salida }}</td>
+                            <td>{{ venta.fecha_entrada }}</td>
+                            <td>{{ venta.total }}</td>
+                            <td><a class="btn btn-info" href="{% url apps.ventas.views.detail_ventas venta.id %}"><i class="icon-zoom-in icon-white"></i> Ver</a></td>
+                            <td><a class="btn btn-info" href="{% url apps.ventas.views.entregar venta.id %}"> <i class="icon-share-alt icon-white"></i> Entregar</a></td>
+                    
+                        </tr>
+                    {% endif %}
                 {% endfor %}
             </table>
         </div>

templates/ventas/pendientes.html

+{% extends 'default.html' %}
+
+{% block content %}
+
+    {% if perms.ventas.add_ventas %}
+        <span><a class="btn btn-primary" href="{% url apps.ventas.views.add_ventas %}"><i class="icon-plus icon-white"></i> Agregar</a></span>
+    {% endif %}
+        <div>
+            <h2>Ventas Pendientes</h2>
+        </div>
+        <div class="row-fluid span10">
+            <hr />
+            <ul class="pager">
+                {% if ventas.has_previous %}
+                    <li class="previous">
+                        <a href="?page={{ ventas.previous_page_number }}">&larr; Mas Nuevos</a>
+                    </li>
+                {% endif %}
+
+                <span class="label label-info">
+                    Pagina {{ ventas.number }} de {{ ventas.paginator.num_pages }}.
+                </span>
+
+                {% if ventas.has_next %}
+                    <li class="next">
+                        <a href="?page={{ ventas.next_page_number }}">Mas Antiguos &rarr;</a>
+                    </li>
+                {% endif %}
+            </ul>
+        </div>
+        <div>
+            <table class="table table-striped  table-condensed table-bordered" width="100%" border="0" cellspacing="0" cellpadding="0">
+               <thead>
+               <tr>
+                    <th>Contrato</th>
+                    <th>Auto</th>
+                    <th>Placas</th>
+                    <th>Cliente</th>
+                    <th>Fecha Salida</th>
+                    <th>Fecha Entrada</th>
+                    <th>Total</th>
+                    <th></th>
+                    <th></th>
+                    <th></th>
+                </tr>
+                </thead>
+                <tr><td><h5>Fiscales</h5></td></tr>
+                {% for venta in ventas %}
+                    {% if venta.serie == "C" %}
+                        <tr>
+                            <td>{{ venta.num_contrato }}</td>
+                            <td>{{ venta.auto.codigo }}</td>
+                            <td>{{ venta.auto.placas }}</td>
+                            <td>{{ venta.cliente.nombre }} {{ venta.cliente.apellidos }}</td>
+                            <td>{{ venta.fecha_salida }}</td>
+                            <td>{{ venta.fecha_entrada }}</td>
+                            <td>{{ venta.total }}</td>
+                            <td><a class="btn btn-info" href="{% url apps.ventas.views.detail_ventas venta.id %}"><i class="icon-zoom-in icon-white"></i> Ver</a></td>
+                            {% if perms.ventas.change_ventas %}
+                                <td><a class="btn btn-info" href="{% url apps.ventas.views.edit_ventas venta.id %}"><i class="icon-pencil icon-white"></i> Editar</a></td>
+                            {% endif %}
+                            {% if perms.ventas.delete_ventas %}
+                                <td><a class="btn btn-danger" href="{% url apps.ventas.views.del_ventas venta.id %}"> <i class="icon-remove icon-white"></i> Eliminar</a</td>
+                            {% endif %}
+                        </tr>
+                    {% endif %}
+                {% endfor %}
+                        <tr>
+                            <td><h5>No Fiscales</h5></td>
+                        </tr>
+                {% for venta in ventas %}
+                    {% if venta.serie == "D" %}
+                        <tr>
+                            <td>{{ venta.num_contrato }}</td>
+                            <td>{{ venta.auto.codigo }}</td>
+                            <td>{{ venta.auto.placas }}</td>
+                            <td>{{ venta.cliente.nombre }} {{ venta.cliente.apellidos }}</td>
+                            <td>{{ venta.fecha_salida }}</td>
+                            <td>{{ venta.fecha_entrada }}</td>
+                            <td>{{ venta.total }}</td>
+                            <td><a class="btn btn-info" href="{% url apps.ventas.views.detail_ventas venta.id %}"><i class="icon-zoom-in icon-white"></i> Ver</a></td>
+                            {% if perms.ventas.change_ventas %}
+                                <td><a class="btn btn-info" href="{% url apps.ventas.views.edit_ventas venta.id %}"><i class="icon-pencil icon-white"></i> Editar</a></td>
+                            {% endif %}
+                            {% if perms.ventas.delete_ventas %}
+                                <td><a class="btn btn-danger" href="{% url apps.ventas.views.del_ventas venta.id %}"> <i class="icon-remove icon-white"></i> Eliminar</a</td>
+                            {% endif %}
+                        </tr>
+                    {% endif %}
+                {% endfor %}
+            </table>
+        </div>
+{% endblock %}

templates/ventas/reporte_ventas.html

                             {% endif %}
                         </tr>
                     {% endif %}
-                    
-                    {% if forloop.first %}
+                {% endfor %}
                         <tr>
                             <td>Total Fiscal</td>
                             <td>{{ total_fiscal.total__sum }}</td>
                         <tr>
                             <td><h5>No Fiscales</h5></td>
                         </tr>
-                    {% endif %}
+                {% for venta in ventas %}
                     {% if venta.serie == "D" %}
                         <tr>
                             <td> {{ venta.num_contrato }}</td>

templates/ventas/reservaciones.html

         <div>
             <h2>Reservaciones</h2>
         </div>
+        <div class="row-fluid span10">
+            <hr />
+            <ul class="pager">
+                {% if reservaciones.has_previous %}
+                    <li class="previous">
+                        <a href="?page={{ reservaciones.previous_page_number }}">&larr; Mas Nuevos</a>
+                    </li>
+                {% endif %}
+
+                <span class="label label-info">
+                    Pagina {{ reservaciones.number }} de {{ reservaciones.paginator.num_pages }}.
+                </span>
+
+                {% if reservaciones.has_next %}
+                    <li class="next">
+                        <a href="?page={{ reservaciones.next_page_number }}">Mas Antiguos &rarr;</a>
+                    </li>
+                {% endif %}
+            </ul>
+        </div>
         <div class="table table-striped  table-condensed table-bordered">
             <table width="100%" border="0" cellspacing="0" cellpadding="0">
                 <tr>

templates/ventas/terminadas.html

     {% endif %}
         <div>
             <h2>Ventas Finalizadas</h2>
+            <form class="well form-search" method="POST" action="."> {% csrf_token %}
+              <input type="text" name="q" class="input-medium search-query">
+              <button type="submit" class="btn">Buscar</button>
+            </form>
+        </div>
+        <div class="row-fluid span10">
+            <ul class="pager">
+                {% if ventas.has_previous %}
+                    <li class="previous">
+                        <a href="?page={{ ventas.previous_page_number }}">&larr; Mas Nuevos</a>
+                    </li>
+                {% endif %}
+
+                <span class="label label-info">
+                    Pagina {{ ventas.number }} de {{ ventas.paginator.num_pages }}.
+                </span>
+
+                {% if ventas.has_next %}
+                    <li class="next">
+                        <a href="?page={{ ventas.next_page_number }}">Mas Antiguos &rarr;</a>
+                    </li>
+                {% endif %}
+            </ul>
         </div>
-        
         <div class="table table-striped  table-condensed table-bordered">
             <table width="100%" border="0" cellspacing="0" cellpadding="0">
+               <thead>
                <tr>
                     <th>Contrato</th>
                     <th>Auto</th>
                     <th></th>
                     <th></th>
                 </tr>
-                <tr><h5>Fiscales</h5></tr>
-                {% for venta in ventas.object_list %}
+                </thead>
+                <tr><td><h5>Fiscales</h5></td></tr>
+                {% for venta in ventas %}
                     {% if venta.serie == "C" %}
                         <tr>
-                            <td> {{ venta.num_contrato }}</td>
+                            <td>{{ venta.num_contrato }}</td>
                             <td>{{ venta.auto.codigo }}</td>
                             <td>{{ venta.auto.placas }}</td>
                             <td>{{ venta.cliente.nombre }} {{ venta.cliente.apellidos }}</td>
                             {% endif %}
                         </tr>
                     {% endif %}
-                    {% if forloop.first %}
+                {% endfor %}
                         <tr>
                             <td><h5>No Fiscales</h5></td>
                         </tr>
-                    {% endif %}
+                {% for venta in ventas %}
                     {% if venta.serie == "D" %}
                         <tr>
-                            <td> {{ venta.num_contrato }}</td>
+                            <td>{{ venta.num_contrato }}</td>
                             <td>{{ venta.auto.codigo }}</td>
                             <td>{{ venta.auto.placas }}</td>
                             <td>{{ venta.cliente.nombre }} {{ venta.cliente.apellidos }}</td>

templates/ventas/ventas.html

         <div>
             <h2>Ventas</h2>
         </div>
+        <div class="row-fluid span10">
+            <hr />
+            <ul class="pager">
+                {% if ventas.has_previous %}
+                    <li class="previous">
+                        <a href="?page={{ ventas.previous_page_number }}">&larr; Mas Nuevos</a>
+                    </li>
+                {% endif %}
+
+                <span class="label label-info">
+                    Pagina {{ ventas.number }} de {{ ventas.paginator.num_pages }}.
+                </span>
+
+                {% if ventas.has_next %}
+                    <li class="next">
+                        <a href="?page={{ ventas.next_page_number }}">Mas Antiguos &rarr;</a>
+                    </li>
+                {% endif %}
+            </ul>
+        </div>
         <div class="table table-striped  table-condensed table-bordered">
             <table width="100%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                 <tr>
                     <td><h5>Fiscales</h5></td>
                 </tr>
-                {% for venta in ventas.object_list %}
+                {% for venta in ventas %}
                     {% if venta.serie == "C" %}
                         <tr>
                             <td>{{ venta.num_contrato }}</td>
                             <td>{{ venta.fecha_salida }}</td>
                             <td>{{ venta.fecha_entrada }}</td>
                             <td>{{ venta.total }}</td>
-                            <td><a class="btn btn-info btn-mini" href="{% url apps.ventas.views.detail_ventas venta.id %}"><i class="icon-zoom-in icon-white"></i> Ver</a></td>
+                            <td><a class="btn btn-info" href="{% url apps.ventas.views.detail_ventas venta.id %}"><i class="icon-zoom-in icon-white"></i> Ver</a></td>
                             {% if perms.ventas.change_ventas %}
-                                <td><a class="btn btn-info btn-mini" href="{% url apps.ventas.views.edit_ventas venta.id %}"><i class="icon-pencil icon-white"></i> Editar</a></td>
+                                <td><a class="btn btn-info" href="{% url apps.ventas.views.edit_ventas venta.id %}"><i class="icon-pencil icon-white"></i> Editar</a></td>
                             {% endif %}
                             {% if perms.ventas.delete_ventas %}
-                                <td><a class="btn btn-danger btn-mini" href="{% url apps.ventas.views.del_ventas venta.id %}"> <i class="icon-remove icon-white"></i> Eliminar</a</td>
+                                <td><a class="btn btn-danger" href="{% url apps.ventas.views.del_ventas venta.id %}"> <i class="icon-remove icon-white"></i> Eliminar</a</td>
                             {% endif %}
                         </tr>
                     {% endif %}
-                    {% if forloop.first %}
+                {% endfor %}
                         <tr>
                             <td><h5>No Fiscales</h5></td>
                         </tr>
-                    {% endif %}
+                {% for venta in ventas %}
                     {% if venta.serie == "D" %}
                         <tr>
-                            <td> {{ venta.num_contrato }}</td>
+                            <td>{{ venta.num_contrato }}</td>
                             <td>{{ venta.auto.codigo }}</td>
                             <td>{{ venta.auto.placas }}</td>
                             <td>{{ venta.cliente.nombre }} {{ venta.cliente.apellidos }}</td>
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.