Files
CD_Salud/pendientes/views.py
2025-04-17 00:29:21 -06:00

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