149 lines
5.4 KiB
Python
149 lines
5.4 KiB
Python
from django.shortcuts import render, redirect, get_object_or_404
|
|
from django.contrib import messages
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.contrib.auth.models import User
|
|
from inventario.views import inv_equipo
|
|
from .models import bitpendientes
|
|
from .forms import FormularioPendiente, FormularioPendienteEnv
|
|
from servicios.models import serviciorealizado, accesorios
|
|
from inventario.models import invequipo
|
|
from bitacora.models import bitreporte
|
|
from django.http.response import HttpResponse
|
|
from datetime import datetime
|
|
import datetime
|
|
from openpyxl import Workbook
|
|
|
|
|
|
# Create your views here.
|
|
|
|
def pendientes(request):
|
|
datos = bitpendientes.objects.filter(concluido='Pendiente')
|
|
equipo = invequipo.objects.all()
|
|
servicios = serviciorealizado.objects.all()
|
|
usuarios = User.objects.all()
|
|
accesorio = accesorios.objects.all()
|
|
return render(request, 'pendientes.html', {"datos": datos, "servicios": servicios, "equipo": equipo, "usuarios": usuarios, "accesorio": accesorio})
|
|
|
|
|
|
@login_required(login_url='/acceder')
|
|
def crear_pendiente(request, cb):
|
|
if request.method == "POST":
|
|
form = FormularioPendiente(request.POST)
|
|
if form.is_valid():
|
|
post = form.save(commit=False)
|
|
post.save()
|
|
titulo = form.cleaned_data.get("n_reporte")
|
|
update = bitreporte.objects.values('pendiente').filter(control_bit=titulo).update(pendiente='Pendiente')
|
|
messages.success(request, f"La bitacora con el reporte {titulo} se ha creado correctamente")
|
|
return redirect("pendientes")
|
|
else:
|
|
for field, items in form.errors.items():
|
|
for item in items:
|
|
messages.error(request, '{}: {}'.format(field, item))
|
|
|
|
ccontrolb = cb
|
|
dato = bitreporte.objects.filter(control_bit=ccontrolb)
|
|
falla = dato[0].reporte
|
|
reporta_ib_1 = dato[0].asignado
|
|
reporta_ib = dato[0].asignado.id
|
|
form = FormularioPendienteEnv()
|
|
return render(request, "crear_pendiente.html", {"form": form, "ccontrolb": ccontrolb, "falla": falla, "reporta_ib": reporta_ib, "reporta_ib_1": reporta_ib_1})
|
|
|
|
|
|
@login_required(login_url='/acceder')
|
|
def ActualizarPendientes(request, id):
|
|
instance= get_object_or_404(bitpendientes, pk=id)
|
|
form = FormularioPendiente(request.POST or None, instance=instance)
|
|
context= {'form': form}
|
|
if form.is_valid():
|
|
obj= form.save(commit= False)
|
|
obj.save()
|
|
messages.success(request, "La Bitacora de Pendientes fue actualizada")
|
|
return redirect("pendientes")
|
|
|
|
else:
|
|
context= {'form': form, 'error': 'Error al actualizar'}
|
|
return render(request,'crear_pendiente2.html' , context)
|
|
|
|
|
|
|
|
@login_required(login_url='/acceder')
|
|
def ReporteExcelPendietes(request):
|
|
datospendientes = bitpendientes.objects.all()
|
|
ibs = User.objects.all()
|
|
datosservicio = serviciorealizado.objects.all()
|
|
datosaccesorios = accesorios.objects.all()
|
|
fecha = datetime.datetime.now()
|
|
fe = str(fecha)
|
|
wb = Workbook()
|
|
ws = wb.active
|
|
ws['B1'] = 'REPORTE DE SERVICIOS CONCLUIDOS'
|
|
|
|
ws.merge_cells('B1:L1')
|
|
|
|
ws['B2'] = datetime.datetime.now()
|
|
|
|
ws.merge_cells('B2:D2')
|
|
|
|
ws['B3'] = 'No. REPORTE'
|
|
ws['C3'] = 'FECHA'
|
|
ws['D3'] = 'REPORTA IB'
|
|
ws['E3'] = 'No. CONTROL'
|
|
ws['F3'] = 'FALLA PRESENTADA'
|
|
ws['G3'] = 'CON CONTRATO'
|
|
ws['H3'] = 'PROVEEDOR'
|
|
ws['I3'] = 'REFACCIONES PENDENTES'
|
|
ws['J3'] = 'SERVICIOS'
|
|
ws['K3'] = 'ACCESORIOS'
|
|
|
|
cont = 4
|
|
for datopendientes in datospendientes:
|
|
for ib in ibs:
|
|
if datopendientes.reporta_ib_id == ib.id:
|
|
reporta = ib.username
|
|
|
|
count = 0
|
|
serreali = ""
|
|
for datoservicio in datosservicio:
|
|
if datopendientes.n_reporte == datoservicio.control_bit:
|
|
count = count + 1
|
|
realizado = str(count) + " - " + datoservicio.descripcion
|
|
serreali = serreali + " // " + realizado
|
|
if count == 0 :
|
|
serreali = ""
|
|
count = 0
|
|
|
|
count1 = 0
|
|
seracce = ""
|
|
for datoaccesorios in datosaccesorios:
|
|
if datopendientes.n_reporte == datoaccesorios.control_bit:
|
|
count1 = count1 + 1
|
|
acceso = str(count1) + " - " + datoaccesorios.n_parte + " | " + datoaccesorios.descripcion
|
|
seracce = seracce + " // " + acceso
|
|
if count1 == 0 :
|
|
seracce = ""
|
|
|
|
ws.cell(row=cont, column=2).value = datopendientes.n_reporte
|
|
ws.cell(row=cont, column=3).value = datopendientes.fecha
|
|
ws.cell(row=cont, column=4).value = reporta
|
|
ws.cell(row=cont, column=5).value = datopendientes.n_control
|
|
ws.cell(row=cont, column=6).value = datopendientes.falla
|
|
ws.cell(row=cont, column=7).value = datopendientes.contrato
|
|
ws.cell(row=cont, column=8).value = datopendientes.reprovedor
|
|
ws.cell(row=cont, column=9).value = datopendientes.refacciones
|
|
ws.cell(row=cont, column=10).value = serreali
|
|
ws.cell(row=cont, column=11).value = seracce
|
|
|
|
cont += 1
|
|
serreali = ""
|
|
seracce = ""
|
|
|
|
|
|
nombre_archivo = "ReporteServicioConcluidos "+fe+".xlsx"
|
|
response = HttpResponse(content_type="application/ms-excel")
|
|
content = "attachment; filename = {0}".format(nombre_archivo)
|
|
response['Content-Disposition'] = content
|
|
wb.save(response)
|
|
return response
|
|
|