from django.shortcuts import render, redirect, get_object_or_404 from .forms import Formulariopieza, Formularioequipo, Formulariomarca, Formularioubicacion, Formularioentrada, Formulariosalida, Formularioarea from django.contrib import messages from django.contrib.auth.decorators import login_required from .models import pieza, rentrada, rsalida, equipo, marca, ubicacion from openpyxl import Workbook from django.http.response import HttpResponse import datetime from datetime import date # Create your views here. def invalmacen(request): datos = pieza.objects.all() return render(request, 'tables.html', {"datos": datos}) @login_required(login_url='/acceder') def crear_pieza(request): if request.method == "POST": form = Formulariopieza(request.POST) if form.is_valid(): post = form.save(commit=False) post.save() titulo = form.cleaned_data.get("referencia") messages.success(request, f"La referencia {titulo} se ha creado correctamente") return redirect("invalmacen") else: for field, items in form.errors.items(): for item in items: messages.error(request, '{}: {}'.format(field, item)) datosequipo = equipo.objects.all() datosmarca = marca.objects.all() datosubicacion = ubicacion.objects.all() form = Formulariopieza() return render(request, "crear_pieza.html", {"form": form, "datosequipo": datosequipo, "datosmarca": datosmarca, "datosubicacion": datosubicacion}) @login_required(login_url='/acceder') def ActualizarPieza(request, pieza_id): instance= get_object_or_404(pieza, pk=pieza_id) form = Formulariopieza(request.POST or None, instance=instance) context= {'form': form} if form.is_valid(): obj= form.save(commit= False) obj.save() messages.success(request, "La pieza fue actualizada") return redirect("invalmacen") else: context= {'form': form, 'error': 'Error al actualizar'} return render(request,'actualizar_pieza.html' , context) ############################################ @login_required(login_url='/acceder') def crear_equipo(request): if request.method == "POST": form = Formularioequipo(request.POST) if form.is_valid(): post = form.save(commit=False) post.save() titulo = form.cleaned_data.get("nombre") messages.success(request, f"El equipo {titulo} se ha creado correctamente") return redirect("crear_pieza") else: for field, items in form.errors.items(): for item in items: messages.error(request, '{}: {}'.format(field, item)) form = Formularioequipo() return render(request, "crearequipo.html", {"form": form}) @login_required(login_url='/acceder') def crear_marca(request): if request.method == "POST": form = Formulariomarca(request.POST) if form.is_valid(): post = form.save(commit=False) post.save() titulo = form.cleaned_data.get("nombre") messages.success(request, f"La marca {titulo} se ha creado correctamente") return redirect("crear_pieza") else: for field, items in form.errors.items(): for item in items: messages.error(request, '{}: {}'.format(field, item)) form = Formulariomarca() return render(request, "crearmarca.html", {"form": form}) @login_required(login_url='/acceder') def crear_ubicacion(request): if request.method == "POST": form = Formularioubicacion(request.POST) if form.is_valid(): post = form.save(commit=False) post.save() titulo = form.cleaned_data.get("nombre") messages.success(request, f"La ubicacion {titulo} se ha creado correctamente") return redirect("crear_pieza") else: for field, items in form.errors.items(): for item in items: messages.error(request, '{}: {}'.format(field, item)) form = Formularioubicacion() return render(request, "crearubicacion.html", {"form": form}) @login_required(login_url='/acceder') def crear_area(request): if request.method == "POST": form = Formularioarea(request.POST) if form.is_valid(): post = form.save(commit=False) post.save() titulo = form.cleaned_data.get("nombre") messages.success(request, f"El area {titulo} se ha creado correctamente") return redirect("crear_inventrada") else: for field, items in form.errors.items(): for item in items: messages.error(request, '{}: {}'.format(field, item)) form = Formularioarea() return render(request, "crear_area.html", {"form": form}) ############################################################ def invalmacenentrada(request): datos = rentrada.objects.all() return render(request, 'invrentrada.html', {"datos": datos}) @login_required(login_url='/acceder') def crear_inventrada(request, id): if request.method == "POST": form = Formularioentrada(request.POST) if form.is_valid(): post = form.save(commit=False) post.autor = request.user post.save() titulo = form.cleaned_data.get("referencia") refex = form.cleaned_data.get("referencia") y = form.cleaned_data.get("cantidad") x = pieza.objects.only('referencia').filter(referencia=refex)[0] nuevo = x.cantidad + y dateact = date.today() update = pieza.objects.values('cantidad').filter(referencia=refex).update(cantidad=nuevo) update = pieza.objects.values('fecha_actualizacion').filter(referencia=refex).update(fecha_actualizacion=dateact) messages.success(request, f"La entrada con referencia {titulo} se ha creado correctamente") return redirect("invalmacen") else: for field, items in form.errors.items(): for item in items: messages.error(request, '{}: {}'.format(field, item)) datos = pieza.objects.get(id=id) return render(request, "crearinventrada.html", {"datos": datos}) def invalmacensalida(request): datos = rsalida.objects.all() return render(request, 'invrsalida.html', {"datos": datos}) @login_required(login_url='/acceder') def crear_invsalida(request, id): if request.method == "POST": form = Formulariosalida(request.POST) if form.is_valid(): post = form.save(commit=False) post.autor = request.user post.save() titulo = form.cleaned_data.get("referencia") refex = form.cleaned_data.get("referencia") y = form.cleaned_data.get("cantidad") x = pieza.objects.only('referencia').filter(referencia=refex)[0] nuevo = x.cantidad - y dateact = date.today() update = pieza.objects.values('cantidad').filter(referencia=refex).update(cantidad=nuevo) update = pieza.objects.values('fecha_actualizacion').filter(referencia=refex).update(fecha_actualizacion=dateact) messages.success(request, f"La salida {titulo} se ha creado correctamente") return redirect("invalmacen") else: for field, items in form.errors.items(): for item in items: messages.error(request, '{}: {}'.format(field, item)) datos = pieza.objects.get(referencia=id) return render(request, "crearinvsalida.html", {"datos": datos}) ##Busqueda#################################################################### @login_required(login_url='/acceder') def buscar(request): if request.method == "POST": datospieza = request.POST['referencia'] datosequipo = request.POST['equipo'] datosmarca = request.POST['marca'] datosubicacion = request.POST['ubicacion'] datosbuscar = request.POST['buscar'] if datospieza == "" and datosequipo == "Selecciona un Equipo" and datosmarca == "Selecciona una Marca" and datosubicacion == "Selecciona una Ubicacion" and datosbuscar == "" : xdatospieza = pieza.objects.all() xdatosequipo = equipo.objects.all() xdatosmarca = marca.objects.all() xdatosubicacion = ubicacion.objects.all() datos = pieza.objects.all() return render(request, "buscar.html", {"datos": datos, "datospieza": xdatospieza, "datosequipo": xdatosequipo, "datosmarca": xdatosmarca, "datosubicacion": xdatosubicacion}) elif datospieza == "" and datosequipo == "Selecciona un Equipo" and datosmarca == "Selecciona una Marca" and datosubicacion == "Selecciona una Ubicacion" : xdatospieza = pieza.objects.all() xdatosequipo = equipo.objects.all() xdatosmarca = marca.objects.all() xdatosubicacion = ubicacion.objects.all() datos = pieza.objects.filter(descripcion_pieza__icontains=datosbuscar) return render(request, "buscar.html", {"datos": datos, "datospieza": xdatospieza, "datosequipo": xdatosequipo, "datosmarca": xdatosmarca, "datosubicacion": xdatosubicacion}) elif datosequipo == "Selecciona un Equipo" and datosmarca == "Selecciona una Marca" and datosubicacion == "Selecciona una Ubicacion" and datosbuscar == "" : xdatospieza = pieza.objects.all() xdatosequipo = equipo.objects.all() xdatosmarca = marca.objects.all() xdatosubicacion = ubicacion.objects.all() datos = pieza.objects.filter(referencia__icontains=datospieza) return render(request, "buscar.html", {"datos": datos, "datospieza": xdatospieza, "datosequipo": xdatosequipo, "datosmarca": xdatosmarca, "datosubicacion": xdatosubicacion}) elif datospieza == "" and datosmarca == "Selecciona una Marca" and datosubicacion == "Selecciona una Ubicacion" and datosbuscar == "" : xdatospieza = pieza.objects.all() xdatosequipo = equipo.objects.all() xdatosmarca = marca.objects.all() xdatosubicacion = ubicacion.objects.all() datos = pieza.objects.filter(equipo_id=datosequipo) return render(request, "buscar.html", {"datos": datos, "datospieza": xdatospieza, "datosequipo": xdatosequipo, "datosmarca": xdatosmarca, "datosubicacion": xdatosubicacion}) elif datosequipo == "Selecciona un Equipo" and datospieza == "" and datosubicacion == "Selecciona una Ubicacion" and datosbuscar == "" : xdatospieza = pieza.objects.all() xdatosequipo = equipo.objects.all() xdatosmarca = marca.objects.all() xdatosubicacion = ubicacion.objects.all() datos = pieza.objects.filter(marca_id=datosmarca) return render(request, "buscar.html", {"datos": datos, "datospieza": xdatospieza, "datosequipo": xdatosequipo, "datosmarca": xdatosmarca, "datosubicacion": xdatosubicacion}) elif datosequipo == "Selecciona un Equipo" and datosmarca == "Selecciona una Marca" and datospieza == "" and datosbuscar == "" : xdatospieza = pieza.objects.all() xdatosequipo = equipo.objects.all() xdatosmarca = marca.objects.all() xdatosubicacion = ubicacion.objects.all() datos = pieza.objects.filter(ubicacion_id=datosubicacion) return render(request, "buscar.html", {"datos": datos, "datospieza": xdatospieza, "datosequipo": xdatosequipo, "datosmarca": xdatosmarca, "datosubicacion": xdatosubicacion}) elif datospieza == "" and datosubicacion == "Selecciona una Ubicacion" and datosbuscar == "" : xdatospieza = pieza.objects.all() xdatosequipo = equipo.objects.all() xdatosmarca = marca.objects.all() xdatosubicacion = ubicacion.objects.all() datos = pieza.objects.filter(equipo_id=datosequipo).filter(marca_id=datosmarca) return render(request, "buscar.html", {"datos": datos, "datospieza": xdatospieza, "datosequipo": xdatosequipo, "datosmarca": xdatosmarca, "datosubicacion": xdatosubicacion}) elif datospieza == "" and datosmarca == "Selecciona una Marca" and datosbuscar == "" : xdatospieza = pieza.objects.all() xdatosequipo = equipo.objects.all() xdatosmarca = marca.objects.all() xdatosubicacion = ubicacion.objects.all() datos = pieza.objects.filter(equipo_id=datosequipo).filter(ubicacion_id=datosubicacion) return render(request, "buscar.html", {"datos": datos, "datospieza": xdatospieza, "datosequipo": xdatosequipo, "datosmarca": xdatosmarca, "datosubicacion": xdatosubicacion}) elif datospieza == "" and datosequipo == "Selecciona un Equipo" and datosbuscar == "" : xdatospieza = pieza.objects.all() xdatosequipo = equipo.objects.all() xdatosmarca = marca.objects.all() xdatosubicacion = ubicacion.objects.all() datos = pieza.objects.filter(marca_id=datosmarca).filter(ubicacion_id=datosubicacion) return render(request, "buscar.html", {"datos": datos, "datospieza": xdatospieza, "datosequipo": xdatosequipo, "datosmarca": xdatosmarca, "datosubicacion": xdatosubicacion}) datospieza = pieza.objects.all() datosequipo = equipo.objects.all() datosmarca = marca.objects.all() datosubicacion = ubicacion.objects.all() return render(request, "buscar.html", {"datospieza": datospieza, "datosequipo": datosequipo, "datosmarca": datosmarca, "datosubicacion": datosubicacion}) ####### EXCEL ######################################################################### @login_required(login_url='/acceder') def ReporteExcelInventario(request): inventarios = pieza.objects.all() datosequipo = equipo.objects.all() datosmarca = marca.objects.all() datosubicacion = ubicacion.objects.all() fecha = datetime.datetime.now() fe = str(fecha) wb = Workbook() ws = wb.active ws['B1'] = 'REPORTE DE INVENTARIO' ws.merge_cells('B1:L1') ws['B2'] = datetime.datetime.now() ws.merge_cells('B2:D2') ws['B3'] = 'No. DE PEDIDO' ws['C3'] = 'REFERENCIA' ws['D3'] = 'EQUIPO' ws['E3'] = 'DESCRIPCIÓN DE ETIQUETA' ws['F3'] = 'DESCRIPCIÓN' ws['G3'] = 'MARCA' ws['H3'] = 'ESTATUS' ws['I3'] = 'UBICACION' ws['J3'] = 'CANTIDAD' ws['K3'] = 'FECHA DE ACTUALIZACION' ws['L3'] = 'COLUMN1' cont = 4 for inventario in inventarios: for datoequipo in datosequipo: if inventario.equipo_id == datoequipo.id: excelequipo = datoequipo.nombre for datomarca in datosmarca: if inventario.marca_id == datomarca.id: excelmarca = datomarca.nombre for datoubicacion in datosubicacion: if inventario.ubicacion_id == datoubicacion.id: excelubicacion = datoubicacion.nombre ws.cell(row=cont, column=2).value = inventario.n_pedido ws.cell(row=cont, column=3).value = inventario.referencia ws.cell(row=cont, column=4).value = excelequipo ws.cell(row=cont, column=5).value = inventario.descripcion_etiqueta ws.cell(row=cont, column=6).value = inventario.descripcion_pieza ws.cell(row=cont, column=7).value = excelmarca ws.cell(row=cont, column=8).value = inventario.estatus ws.cell(row=cont, column=9).value = excelubicacion ws.cell(row=cont, column=10).value = inventario.cantidad ws.cell(row=cont, column=11).value = inventario.fecha_actualizacion ws.cell(row=cont, column=12).value = inventario.Column1 cont += 1 nombre_archivo = "ReporteInventario "+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 @login_required(login_url='/acceder') def ReporteExcelInvEntrada(request): inventarios = pieza.objects.all() datosentrada = rentrada.objects.all() fecha = datetime.datetime.now() fe = str(fecha) wb = Workbook() ws = wb.active ws['B1'] = 'REPORTE DE INVENTARIO ENTRADA' ws.merge_cells('B1:L1') ws['B2'] = datetime.datetime.now() ws.merge_cells('B2:D2') ws['B3'] = 'NO. PEDIDO o contrato' ws['C3'] = 'REFERENCIA' ws['D3'] = 'CANTIDAD' ws['E3'] = 'FECHA ALTA' cont = 4 for datoentrada in datosentrada: for inventario in inventarios: if datoentrada.referencia_id == inventario.id: excelreferencia = inventario.referencia ws.cell(row=cont, column=2).value = datoentrada.n_pedido ws.cell(row=cont, column=3).value = excelreferencia ws.cell(row=cont, column=4).value = datoentrada.cantidad ws.cell(row=cont, column=5).value = datoentrada.fecha_alta cont += 1 nombre_archivo = "ReporteInventarioEntrada "+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 @login_required(login_url='/acceder') def ReporteExcelInvSalida(request): inventarios = pieza.objects.all() datossalida = rsalida.objects.all() datosequipo = equipo.objects.all() datosmarca = marca.objects.all() datosubicacion = ubicacion.objects.all() fecha = datetime.datetime.now() fe = str(fecha) wb = Workbook() ws = wb.active ws['B1'] = 'REPORTE DE INVENTARIO SALIDA' ws.merge_cells('B1:L1') ws['B2'] = datetime.datetime.now() ws.merge_cells('B2:D2') ws['B3'] = 'QUIEN RETIRA' ws['C3'] = 'REFERENCIA' ws['D3'] = 'EQUIPO' ws['E3'] = 'MARCA' ws['F3'] = 'UBICACION' ws['G3'] = 'CANTIDAD' ws['H3'] = 'FECHA' cont = 4 for datosalida in datossalida: for inventario in inventarios: if datosalida.referencia_id == inventario.id: excelreferencia = inventario.referencia for datoequipo in datosequipo: if inventario.equipo_id == datoequipo.id: excelequipo = datoequipo.nombre for datomarca in datosmarca: if inventario.marca_id == datomarca.id: excelmarca = datomarca.nombre for datoubicacion in datosubicacion: if inventario.ubicacion_id == datoubicacion.id: excelubicacion = datoubicacion.nombre ws.cell(row=cont, column=2).value = datosalida.autor ws.cell(row=cont, column=3).value = excelreferencia ws.cell(row=cont, column=4).value = excelequipo ws.cell(row=cont, column=5).value = excelmarca ws.cell(row=cont, column=6).value = excelubicacion ws.cell(row=cont, column=7).value = datosalida.cantidad ws.cell(row=cont, column=8).value = datosalida.fecha_alta cont += 1 nombre_archivo = "ReporteInventarioSalida "+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