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