def CrearDetallesCobranza(self, lista_cuentas, lista_montos, total): logger.info("Estoy en crear detalles") #logger.info(CajaCajero.objects.get(estado=True,personal_colegio__personal__user=self.request.user)) usuario = get_current_user() cobranza_actual = Cobranza(movimiento=CajaCajero.objects.get( estado=True, usuario_creacion=str(usuario.id)), fecha_pago=date.today(), monto=total, medio_pago=1, num_operacion="1234") cobranza_actual.save() movi = CajaCajero.objects.get(estado=True, usuario_creacion=str(usuario.id)) movi.ventas = movi.ventas + total movi.save() for k in range(len(lista_cuentas)): cuenta = lista_cuentas[k] print(k) monto = lista_montos[k] detalle_actual = DetalleCobranza(cuentascobrar=cuenta, cobranza=cobranza_actual, monto=monto) detalle_actual.save() if monto is cuenta.deuda: cuenta.deuda = 0 cuenta.estado = False else: cuenta.deuda = cuenta.deuda - monto cuenta.save() return cobranza_actual
def save(self, *args, **kwargs): """ Método para guardar el usuario logueado creador :param args: :param kwargs: :return: """ from utils.middleware import get_current_user if not self: self.creator = get_current_user() super(CreatorMixin, self).save(*args, **kwargs)
def generar_pdf(request): print("Genero el PDF") response = HttpResponse(content_type='application/pdf') pdf_name = "clientes.pdf" # llamado clientes # la linea 26 es por si deseas descargar el pdf a tu computadora # response['Content-Disposition'] = 'attachment; filename=%s' % pdf_name id_cobranza_actual = request.POST["cobranza"] id_alumno = request.POST["alumno"] cobranza_actual = Cobranza.objects.get(id_cobranza=id_cobranza_actual) colegio = Colegio.objects.get(pk=get_current_colegio()) detalle_cobranza = DetalleCobranza.objects.filter(cobranza=cobranza_actual) alumno = Alumno.objects.get(id_alumno=id_alumno) cajero = Profile.objects.get(user=get_current_user()) buff = BytesIO() doc = SimpleDocTemplate( buff, pagesize=A6, rightMargin=0, leftMargin=0, topMargin=0, bottomMargin=0, ) clientes = [] styles = getSampleStyleSheet() header = Paragraph("Detalle del Pago", styles['Heading1']) fecha = Paragraph("Fecha y hora:".format(datetime.today()), styles['Heading2']) header1 = Paragraph("Cajero:", styles['Heading2']) header2 = Paragraph("{0}".format(cajero), styles['Heading3']) header3 = Paragraph("Nombre del alumno:", styles['Heading2']) header4 = Paragraph("{0}".format(alumno), styles['Heading3']) clientes.append(header) clientes.append(fecha) clientes.append(header1) clientes.append(header2) clientes.append(header3) clientes.append(header4) headings = ('Servicio', 'Monto') allclientes = [(p.cuentascobrar.servicio, p.monto) for p in detalle_cobranza] #print(allclientes) t = Table([headings] + allclientes) clientes.append(t) doc.build(clientes) response.write(buff.getvalue()) buff.close() return response
def get(self, request, *args, **kwargs): roles = ['cajero'] if validar_roles(roles=roles): logger.info("Se tienen los permisos de cajero") else: return HttpResponseRedirect(settings.REDIRECT_PERMISOS) try: usuario = get_current_user() mov = CajaCajero.objects.get(estado=True, usuario_modificacion=str(usuario.id)) alerta = False except: alerta = True dato = 1 logger.info("Estoy en income pagos") try: dato = request.GET['dato'] logger.info("Ver si existe un GET") print(request.GET['filter']) if request.GET['filter'] == 'DNI': print("filtro DNI") alumnos = Alumno.objects.filter( numero_documento=request.GET['dato']) else: alumnos = Alumno.objects.filter( apellido_pa__icontains=request.GET['dato'].upper()) except: self.cuentas = [] alumnos = [] alumnos1 = [] for alumno in alumnos: try: matricula = Matricula.objects.get( colegio=get_current_colegio(), activo=True, alumno=alumno) alumnos1.append(alumno) except: logger.info("no pertenece al colegio") return render(request, template_name=self.template_name, context={ 'alerta': alerta, 'dato': dato, 'alumnos': alumnos1, })
def save(self, *args, **kwargs): from utils.middleware import get_current_user usuario = get_current_user() if usuario is not None: iduser = usuario.id else: iduser = -1 # creacion if not self.pk: self.usuario_creacion = iduser self.usuario_modificacion = iduser super(CreacionModificacionUserMixin, self).save(*args, **kwargs)
def get(self, request, *args, **kwargs): roles = ['cajero'] if validar_roles(roles=roles): persona = Profile.objects.get(user=get_current_user()) personal = Personal.objects.get(persona=persona) personal = PersonalColegio.objects.filter( personal=personal, colegio=get_current_colegio(), activo=True) return render(request, template_name=self.template_name, context={ 'form': self.form_class, 'personal': personal, }) else: return HttpResponseRedirect(settings.REDIRECT_PERMISOS)
def cargarformPromotordescuentos(self, request): # Obtiene el colegio en cuestión id_colegio = get_current_colegio() colegio = Colegio.objects.get(pk=id_colegio) # logger.debug("Colegio: " + colegio.nombre) # Obtiene el usuario que ha iniciado sesión user = get_current_user() logger.debug("Usuario: " + user.name) try: profile = Profile.objects.get(user=user) logger.debug("profile: " + str(profile.id_persona)) except Profile.DoesNotExist: sw_error = True mensaje_error = "No existe la Persona asociada al usuario" try: # 1. Verificamos que el usuario sea un personal personal = Personal.objects.get(persona=profile) logger.debug("personal: " + str(personal.id_personal)) # 2. Verificamos que el usuario sea un personal asociado al colegio personal_colegio = PersonalColegio.objects.get(personal=personal, colegio=colegio) # 3. Verificamos que sea un promotor promotor = Promotor.objects.filter( empleado=personal_colegio.personal) #logger.debug() if promotor.count() == 0: sw_error = True mensaje_error = "No es un promotor de un alumno asociado al colegio" else: sw_error = False except Personal.DoesNotExist: sw_error = True mensaje_error = "No es un personal asociado al colegio" if sw_error != True: return {} else: return {'mensaje_error': mensaje_error} # return context
def get(self, request, *args, **kwargs): roles = ['cajero'] if validar_roles(roles=roles): try: usuario = get_current_user() # mov = CajaCajero.objects.get(estado=False, usuario_modificacion=str(usuario.id)) alerta = False except: alerta = True personal = PersonalColegio.objects.filter( colegio=get_current_colegio(), activo=True) return render(request, template_name=self.template_name, context={ 'form': self.form_class, 'personal': personal, 'alerta': alerta, }) else: return HttpResponseRedirect(settings.REDIRECT_PERMISOS)
def get_context_data(self, **kwargs): context = super(BoxCashierListView, self).get_context_data(**kwargs) roles = ['cajero'] context['es_cajero'] = validar_roles(roles=roles) request = get_current_request() user_id = get_current_user().id personal_colegio_id = PersonalColegio.objects.values('pk').filter( personal_id__persona_id__user_id=user_id)[0]['pk'] puede_ver_lista = ['promotor', 'director', 'tesorero'] if validar_roles(roles=puede_ver_lista): puede_ver = True else: puede_ver = False if request.session.get('colegio'): id = request.session.get('colegio') context['idcolegio'] = id context['personal_id_cajero'] = personal_colegio_id context['permisos_valido'] = puede_ver return context
def get_context_data(self, **kwargs): context = super(UserInfoListView, self).get_context_data(**kwargs) usuario = get_current_user() if usuario is not None: iduser = usuario.id else: iduser = -1 profile_id = Profile.objects.get(user_id=iduser) personal_id = Personal.objects.get(persona_id=profile_id) # personalcolegio_id = PersonalColegio.objects.values('pk').filter(personal_id=personal_id)[0]['pk'] context['id_usuario'] = iduser context['nombre_usuario'] = User.objects.values('name').filter(id=iduser)[0]['name'] context['usuario_email'] = User.objects.values('email').filter(id=iduser)[0]['email'] context['nombre_profile'] = Profile.objects.values('nombre').filter(user_id=iduser)[0]['nombre'] context['nombre2_profile'] = Profile.objects.values('segundo_nombre').filter(user_id=iduser)[0][ 'segundo_nombre'] context['apellido_pa_profile'] = Profile.objects.values('apellido_pa').filter(user_id=iduser)[0]['apellido_pa'] context['apellido_ma_profile'] = Profile.objects.values('apellido_ma').filter(user_id=iduser)[0]['apellido_ma'] id_colegio = PersonalColegio.objects.values('colegio_id').filter(personal_id=personal_id)[0]['colegio_id'] context['id_colegio'] = id_colegio context['nombre_colegio'] = Colegio.objects.values('nombre').filter(id_colegio=id_colegio)[0]['nombre'] return context
def get_context_data(self, **kwargs): context = super(BoxCashierCreationView, self).get_context_data(**kwargs) usuario = get_current_user() if usuario is not None: iduser = usuario.id else: iduser = -1 a = Profile.objects.get(user_id=iduser) b = Personal.objects.get(persona=a) # c = PersonalColegio.objects.get(personal_id=b) # d = PersonalColegio.objects.filter(personal_id=b).values('pk') # print(PersonalColegio.objects.values('pk').filter(personal_id=b)[0]['pk']) # print(Caja.objects.filter(colegio_id=1)) # creacion # context['yolencios'] = d # print(PersonalColegio.objects.values('pk').filter(personal_id=b)[0]['pk']) personal_colegio = PersonalColegio.objects.get(personal=b) context['yolencios'] = personal_colegio.id_personal_colegio return context
def get(self, request, *args, **kwargs): roles = ['cajero'] if validar_roles(roles=roles): usuario = get_current_user() perfil = Profile.objects.get(user=usuario) personal = Personal.objects.filter(persona=perfil) personal_colegio = PersonalColegio.objects.get(personal=personal) cajas = Caja.objects.filter( colegio__id_colegio=get_current_colegio(), eliminado=True, activo=True) return render(request, template_name=self.template_name, context={ 'form': self.form_class, 'cajas': cajas, 'yolencios': personal_colegio.id_personal_colegio }) else: return HttpResponseRedirect(settings.REDIRECT_PERMISOS)
def boleta_A5(request): response = HttpResponse(content_type='application/pdf') response[ 'Content-Disposition'] = 'attachment; filename="boleta_A5_{0}.pdf"'.format( datetime.today()) p = canvas.Canvas(response, pagesize=A5) p.setLineWidth(.3) p.setFont('Helvetica', 8) id_cobranza_actual = request.POST["cobranza"] id_alumno = request.POST["alumno"] cobranza_actual = Cobranza.objects.get(id_cobranza=id_cobranza_actual) colegio = Colegio.objects.get(pk=get_current_colegio()) detalle_cobranza = DetalleCobranza.objects.filter(cobranza=cobranza_actual) alumno = Alumno.objects.get(id_alumno=id_alumno) cajero = Profile.objects.get(user=get_current_user()) nombre = alumno monto = [(str(p.monto)) for p in detalle_cobranza] total = sum([(p.monto) for p in detalle_cobranza]) descripcion = [(str(p.cuentascobrar.servicio.nombre) + " " + str(p.cuentascobrar.servicio.tipo_servicio)) for p in detalle_cobranza] fecha = date.today() dire = Direccion.objects.get(colegio=colegio) dir_colegio = dire.calle departamento = dire.get_departamento + " - PERU" dire_alumno = Direccion.objects.get(persona=alumno.persona) direccion_alumno = dire_alumno.calle ruc_colegio = colegio.ruc numero_recibo = colegio.numero_recibo - 1 p.line(40, 510, 370, 510) p.setFont('Helvetica', 10) p.drawString(90, 490, '{0}'.format(colegio)) p.drawString(90, 480, '{0}'.format(dir_colegio)) try: telefono_colegio = Telefono.objects.get(colegio=colegio) p.drawString(90, 470, 'Telf.: {0}'.format(telefono_colegio)) p.drawString(90, 460, '{0}'.format(departamento)) except: p.drawString(90, 470, '{0}'.format(departamento)) p.drawString(270, 490, 'RUC: {0}'.format(ruc_colegio)) p.drawString(270, 480, 'BOLETA DE VENTA') p.drawString(270, 470, '001 - N° {0}'.format(numero_recibo)) p.setFont('Helvetica', 8) p.drawString(40, 440, 'Sr(a): {0}'.format(nombre)) p.drawString(270, 440, 'Fecha: {0}'.format(fecha)) p.drawString(40, 430, 'Dirección: {0}'.format(direccion_alumno)) p.setFont('Helvetica', 10) p.line(40, 395, 370, 395) p.line(40, 413, 370, 413) p.line(295, 395, 295, 413) p.drawString(40, 400, 'Descripción:') p.drawString(300, 400, 'Importe S/.') p.setFont('Helvetica', 8) for k in range(len(descripcion)): p.drawString(40, 370 - 15 * k, '{0}'.format(descripcion[k])) p.drawString(300, 370 - 15 * k, '{0}'.format(monto[k])) p.line(40, 370 - 15 * len(descripcion) - 3, 370, 370 - 15 * len(descripcion) - 3) p.line(40, 370 - 15 * len(descripcion) - 18, 370, 370 - 15 * len(descripcion) - 18) p.drawString(230, 370 - 15 * len(descripcion) - 15, 'TOTAL S/.:') p.drawString(300, 370 - 15 * len(descripcion) - 15, '{0}'.format(total)) p.showPage() p.save() return response
def get(self, request, *args, **kwargs): """tiposervicio = self.model.objects.get(pk = int(request.GET['tiposervicio'])) for servicio in tiposervicio.getServiciosAsociados(): servicio.activo = False servicio.save() tiposervicio.activo = False tiposervicio.save() """ #cuentas = Cuentascobrar.objects.all() roles = ['cajero'] if validar_roles(roles=roles): logger.info("Se tienen los permisos de cajero") else: return HttpResponseRedirect(settings.REDIRECT_PERMISOS) try: usuario = get_current_user() mov = CajaCajero.objects.get(estado=True, usuario_modificacion=str(usuario.id)) alerta = False except: alerta = True dato = 1 logger.info("Estoy en income pagos") cuentas_totales = Cuentascobrar.objects.filter( matricula__colegio__id_colegio=self.request.session.get('colegio'), estado=True, activo=True) try: dato = request.GET['dato'] logger.info("Ver si existe un GET") print(request.GET['filter']) if request.GET['filter'] == 'DNI': print("filtro DNI") self.cuentas = cuentas_totales.filter( matricula__alumno__numero_documento=request.GET['dato']. upper(), activo=True, estado=True).order_by("fecha_ven") alumno = Alumno.objects.get( numero_documento=request.GET['dato']) else: self.cuentas = cuentas_totales.filter( matricula__alumno__apellido_pa__icontains=request. GET['dato'].upper(), activo=True, estado=True).order_by("fecha_ven") alumno = Alumno.objects.get( apellido_pa__icontains=request.GET['dato'].upper()) except: self.cuentas = [] logger.info(self.cuentas) try: pknum = alumno.id_alumno except: pknum = None return render(request, template_name=self.template_name, context={ 'alerta': alerta, 'dato': dato, 'cuentascobrar': self.cuentas, 'pknum': pknum, })
def recibo_A6(request): response = HttpResponse(content_type='application/pdf') response[ 'Content-Disposition'] = 'attachment; filename="recibo_A6_{0}.pdf"'.format( datetime.today()) p = canvas.Canvas(response, pagesize=A6) p.setLineWidth(.3) p.setFont('Helvetica', 8) id_cobranza_actual = request.POST["cobranza"] id_alumno = request.POST["alumno"] cobranza_actual = Cobranza.objects.get(id_cobranza=id_cobranza_actual) colegio = Colegio.objects.get(pk=get_current_colegio()) detalle_cobranza = DetalleCobranza.objects.filter(cobranza=cobranza_actual) alumno = Alumno.objects.get(id_alumno=id_alumno) cajero = Profile.objects.get(user=get_current_user()) nombre = alumno monto = [(str(p.monto)) for p in detalle_cobranza] total = sum([(p.monto) for p in detalle_cobranza]) descripcion = [(str(p.cuentascobrar.servicio.nombre) + " " + str(p.cuentascobrar.servicio.tipo_servicio)) for p in detalle_cobranza] fecha = date.today() dire = Direccion.objects.get(colegio=colegio) dir_colegio = dire.calle departamento = dire.get_departamento + " - PERU" dire_alumno = Direccion.objects.get(persona=alumno.persona) direccion_alumno = dire_alumno.calle numero_recibo = colegio.numero_recibo - 1 p.line(20, 390, 270, 390) p.setFont('Helvetica', 8) p.drawString(70, 360, '{0}'.format(colegio)) p.drawString(70, 350, '{0}'.format(dir_colegio)) try: telefono_colegio = Telefono.objects.get(colegio=colegio) p.drawString(70, 340, 'Telf.: {0}'.format(telefono_colegio)) p.drawString(70, 330, '{0}'.format(departamento)) except: p.drawString(70, 340, '{0}'.format(departamento)) p.drawString(195, 360, 'RECIBO {0}'.format(numero_recibo)) p.drawString(195, 350, 'FECHA: {0}'.format(fecha)) p.setFont('Helvetica', 6) p.drawString(20, 310, 'Sr(a): {0}'.format(nombre)) p.drawString(20, 300, 'Dirección: {0}'.format(direccion_alumno)) p.setFont('Helvetica', 8) p.line(20, 265, 270, 265) p.line(20, 283, 270, 283) p.line(195, 265, 195, 283) p.drawString(20, 270, 'Descripción:') p.drawString(200, 270, 'Importe S/.') p.setFont('Helvetica', 6) for k in range(len(descripcion)): p.drawString(20, 250 - 15 * k, '{0}'.format(descripcion[k])) p.drawString(200, 250 - 15 * k, '{0}'.format(monto[k])) p.line(20, 250 - 15 * len(descripcion) - 3, 270, 250 - 15 * len(descripcion) - 3) p.line(20, 250 - 15 * len(descripcion) - 18, 270, 250 - 15 * len(descripcion) - 18) p.drawString(130, 250 - 15 * len(descripcion) - 15, 'TOTAL S/.:') p.drawString(200, 250 - 15 * len(descripcion) - 15, '{0}'.format(total)) p.showPage() p.save() return response
def cargarformPadres(self, request): # Obtiene el colegio en cuestión id_colegio = get_current_colegio() colegio = Colegio.objects.get(pk=id_colegio) # logger.debug("Colegio: " + colegio.nombre) # Obtiene el usuario que ha iniciado sesión user = get_current_user() logger.debug("Usuario: " + user.name) try: profile = Profile.objects.get(user=user) logger.debug("profile: " + str(profile.id_persona)) except Profile.DoesNotExist: sw_error = True mensaje_error = "No existe la Persona asociada al usuario" try: # 1. Verificamos que el usuario sea un apoderado apoderado = Apoderado.objects.get(persona=profile) logger.debug("apoderado: " + str(apoderado.id_apoderado)) # 2. Verificamos los alumnos que tienen el apoderado y el colegio de la sesión matriculas = Matricula.objects.filter(colegio=colegio, alumno__apoderados=apoderado) if matriculas.count() == 0: sw_error = True mensaje_error = "No es un apoderado de un alumno asociado al colegio" else: sw_error = False except Apoderado.DoesNotExist: sw_error = True mensaje_error = "No es un apoderado" if sw_error != True: # Cargamos los alumnos alumnos = [] for apo_alu in matriculas: alumnos.append(apo_alu.alumno) # Cargamos los años anio = datetime.today().year anios = [] for i in range(0, 3): anios.append(anio - i) # Cargamos los meses meses_todos = [ "Todos", "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Setiembre", "Octubre", "Noviembre", "Diciembre" ] num_mes = datetime.today().month meses = [] for i in range(0, num_mes + 1): meses.append(meses_todos[i]) # Cargamos los estados estados = ["Todos", "Pagado", "No pagado"] return { 'alumnos': alumnos, 'anios': anios, 'meses': meses_todos, 'estados': estados } else: return {'mensaje_error': mensaje_error} # return context
def get_roles(): logger.debug("Inicio de get_roles") usuario = get_current_user() logger.debug("Usuario ID: " + str(usuario.id)) roles = {} if usuario.is_superuser: logger.debug("Usuario SUPERUSUARIO") roles['promotor'] = 1 roles['director'] = 1 roles['cajero'] = 1 roles['tesorero'] = 1 roles['administrativo'] = 1 roles['apoderado'] = 1 roles['sistemas'] = 1 logger.debug("Se asignaron los permisos de SUPERUSUARIO") logger.info("Se asignaron los permisos de SUPERUSUARIO") else: logger.debug("usuario NO SUPERUSUARIO") id_colegio = get_current_colegio() colegio = Colegio.objects.get(pk=id_colegio, activo=True) logger.debug("ID Colegio: " + str(id_colegio)) profile = Profile.objects.get(user_id=usuario.id) logger.debug("Profile: " + profile.apellido_pa ) # determinar si es un personal asociado al colegio logueado empleados = Personal.objects.filter(persona=profile, personalcolegio__colegio=colegio, personalcolegio__activo=True) logger.debug("Cantidad de empleados asociados a la cuenta: " + str(empleados.count())) for empleado in empleados: try: promotor = Promotor.objects.get(empleado=empleado, activo_promotor=True) roles['promotor'] = promotor.id_promotor logger.debug("Promotor: " + str(promotor.id_promotor)) except Promotor.DoesNotExist: roles['promotor'] = -1 logger.debug("No es un profile Promotor") try: director = Director.objects.get(empleado=empleado, activo_director=True) roles['director'] = director.id_director logger.debug("Director: " + str(director.id_director)) except Director.DoesNotExist: roles['director'] = -1 logger.debug("No es un profile Director") try: cajero = Cajero.objects.get(empleado=empleado, activo_cajero=True) roles['cajero'] = cajero.id_cajero logger.debug("Cajero: " + str(cajero.id_cajero)) except Cajero.DoesNotExist: roles['cajero'] = -1 logger.debug("No es un profile Cajero") try: tesorero = Tesorero.objects.get(empleado=empleado, activo_tesorero=True) roles['tesorero'] = tesorero.id_tesorero logger.debug("Tesorero: " + str(tesorero.id_tesorero)) except Tesorero.DoesNotExist: roles['tesorero'] = -1 logger.debug("No es un profile Tesorero") try: administrativo = Administrativo.objects.get(empleado=empleado, activo_administrativo=True) roles['administrativo'] = administrativo.id_administrativo logger.debug("Administrativo: " + str(administrativo.id_administrativo)) except Administrativo.DoesNotExist: roles['administrativo'] = -1 logger.debug("No es un profile Administrativo") try: sistemas = Sistemas.objects.get(empleado=empleado, activo_sistemas=True) roles['sistemas'] = sistemas.id_sistemas logger.debug("Sistemas: " + str(sistemas.id_sistemas)) except Sistemas.DoesNotExist: roles['sistemas'] = -1 logger.debug("No es un profile Sistemas") # determinar si es un apoderado try: apoderado = Apoderado.objects.get(persona=profile) apoderados = Matricula.objects.filter(colegio=colegio, activo=True, alumno__apoderadoalumno__apoderado=apoderado) logger.debug("Apoderados asociados a matriculas: " + str(apoderados.count())) if apoderados.count() == 0: roles['apoderado'] = -1 logger.debug("No es profile Apoderado") for apo in apoderados: roles['apoderado'] = apo.id_matricula logger.debug("usuario Apoderado: " + str(apo.id_matricula)) except Apoderado.DoesNotExist: roles['apoderado'] = -1 logger.debug("No es un profile Apoderado") logger.info("Se asignaron los roles al profile") logger.debug("Fin de get_roles") return roles
def save(self, *args, **kwargs): from utils.middleware import get_current_user if not self.creator: self.creator = get_current_user() super(CreatorMixin, self).save(*args, **kwargs)
def user_value(): try: return get_current_user().username except: return "System"
def user_value(): try: return get_current_user().username except: return "System"
def save(self, *args, **kwargs): from utils.middleware import get_current_user if not self.creator: self.creator = get_current_user() super(CreatorMixin, self).save(*args, **kwargs)