def lista_metalico(self,medio=False,lista=[]): """Generamos el listado de cargos a cobrar en metalico""" cargos = [] asistencias = [] #Si la lista dde grupos está vacia listamos todos if len(lista)==0: debug("No tenemos una lista así que buscamos todas las asistencias que necesitan factura") for a in Asistencia.select(AND(Asistencia.q.confirmado==True,Asistencia.q.metalico==True,Asistencia.q.factura==False)): asistencias.append(a) ##Si hay lista solo las asistencias de los grupos listados else: debug("Vamos a facturar a grupos sueltos: %s"%lista) for grupo in lista: for a in Asistencia.select(AND(Asistencia.q.confirmado==True,Asistencia.q.metalico==True,Asistencia.q.factura==False,Asistencia.q.grupoID==grupo)): asistencias.append(a) for a in asistencias: ##Si no tiene precio especial, cogemos el del curso/nivel if a.precio=="" or a.precio==None: precio = a.grupo.curso.precio else: precio = a.precio if medio: precio = precio / 2 cargos.append(("%s, %s %s"%(a.alumno.nombre,a.alumno.apellido1,a.alumno.apellido2),precio)) return cargos
def lista_cargos_banco(self,concepto,lista,medio): """Devuelve el listado de cargos a realiar para la facturacion""" logging.debug("Vamos a generar la lista de cargos a pasar al banco. Cobramos con concepto %s y es medio mes? %s"%(concepto,medio)) asistencias = [] cargos = [] ##Recogemos las asistencias, si no hay lista todas las que no paguen en metalico ## ni necesiten factura if len(lista)==0: debug("No tenemos ina lista así que buscamos todas las asistencias quea cobrar a traves del banco") for a in Asistencia.select(AND(Asistencia.q.confirmado==True,Asistencia.q.metalico==False,Asistencia.q.factura==False)): asistencias.append(a) ##Si hay lista solo las asistencias de los grupos listados else: debug("Vamos a facturar a grupos sueltos: %s"%lista) for grupo in lista: for a in Asistencia.select(AND(Asistencia.q.confirmado==True,Asistencia.q.metalico==False,Asistencia.q.factura==False,Asistencia.q.grupoID==grupo)): asistencias.append(a) #Para los alumnos que den problemas al generar el cargo (no tienen el banco bien, etc) listado_alumnos_problemas = [] ##Convertimos las asistecias en cargos for a in asistencias: debug("generando el cargo al alumno %s"%a.alumno.id) ##Si no tiene precio especial, cogemos el del curso/nivel if a.precio=="" or a.precio==None: ##Algunos cursos tiene el precio a 0 (porque se les cobra por trimestre o por lo que sea #debug("No tiene descuento") if a.grupo.curso.precio == 0: debug("Saltamos al siguiente, no generamos cargo si el precio del grupo es 0") continue else: debug("Paga el precio normal %s"%a.grupo.curso.precio) precio = a.grupo.curso.precio else: ##Cogemos el precio especial debug("Tiene descuento y paga %s"%a.precio) precio = a.precio #print "Comprobamos si es medio mes",medio if medio: precio = float(precio) / 2 #debug("añadimos el alumno a la lista") try: cargos.append((a.alumno.id,"%s %s, %s"%(a.alumno.apellido1,a.alumno.apellido2,a.alumno.nombre),[a.alumno.banco.codigo,a.alumno.sucursal,a.alumno.dc,a.alumno.cuenta],precio,concepto)) except: debug("ASISTENCIA: Error al generar el cargo al alumno %s"%a.alumno.id) listado_alumnos_problemas.append(str(a.alumno.id)) debug("Comprobamos si ha habido errores") if not len(listado_alumnos_problemas) == 0: debug("ASISTENCIA: Como hemos tenido algun problema hacemos un raise") raise Exception(listado_alumnos_problemas) debug("Cargos Ok") return cargos
def buscar(self): ##Buscamos la asistencia print "Buscado la nota del alumno %i al grupo %i trimestre %i"%(self.alumnoID,self.grupoID,self.trimestre) if self.trimestre == -1 or self.alumnoID == -1 or self.grupoID == -1: ##Falta algún dato return -1 res = Asistencia.select(AND(Asistencia.q.alumnoID==self.alumnoID,Asistencia.q.grupoID==self.grupoID)) if len(list(res)): print "Hemos encontrado la asistencia",res ##en base a la asistencia buscamos si hay una nota asis = res[0] res = Nota.select(AND(Nota.q.asistenciaID==asis.id,Nota.q.trimestre==self.trimestre)) print "Hemos encontrado",res try: self.n = res[0] print "Encontrada nota %i"%self.n.id except: print sys.exc_info() print "No existe, creando nota nueva",asis,self.trimestre try: self.n = Nota(asistencia=asis,trimestre=self.trimestre) print "Creada",self.n except: print sys.exc_info() print "No hemos podido crear la nota!" self.id = self.n.id return 1 else: print "No hemos encontrado la asistecia, algo va mal!" self.clear() return -1
def imprimir_etiquetas(self,todos=False,lista_alumnos_elegidos=None,lista_grupos_elegidos=None): """Función que imprime etiquetas con los datos de lso alumnos. Si todos es True imprime los alumnos dados de baja también""" lista = [] p = Provincias() ##Preparamos el docu fichero = get_print_path('Alumnos')+"/Etiquetas_Alumnos.pdf" c = canvas.Canvas(fichero,pagesize=A4) c.translate(mm,mm) if todos: logging.debug("Imprimimos las etiquetas de todos los alumnos") busqueda = Alumno.select() elif lista_alumnos_elegidos!=None: logging.debug("Imprimimos solo ciertos alumnos") busqueda = [] logging.debug(lista_alumnos_elegidos) for numero in lista_alumnos_elegidos: logging.debug( "Vamos a buscar el alumno %s"%numero) try: busqueda.append(Alumno.get(numero)) except: logging.debug( "No hemos encontrado el alumno con la numero %s"%numero) elif lista_grupos_elegidos!=None: logging.debug("Imprimimos solo ciertos grupos") lista_alumnos_elegidos = [] busqueda = [] logging.debug(lista_grupos_elegidos) for numero in lista_grupos_elegidos: logging.debug("Buscando alumnos ne el grupo %s"%numero) for asistencia in Asistencia.select(Asistencia.q.grupoID==numero): logging.debug("Añadiendo el alumno %s"%asistencia.alumno.id) busqueda.append(asistencia.alumno) logging.debug(lista_alumnos_elegidos) else: logging.debug( "Imprimimos las etiquetas de los alumnos activos") busqueda = Alumno.select(Alumno.q.activo==True) for alumno in busqueda: i = p.get_iter_from_string(str(alumno.provincia)) provincia = p.get_value(i,1) lista.append(["%s %s %s"%(alumno.nombre,alumno.apellido1,alumno.apellido2),"%s"%alumno.direccion,"%s - %s - %s"%(alumno.ciudad,alumno.cp,provincia)]) ##Con la lista generada vamos a imprimir cada página con 16 etiquetas for x in range(0,len(lista),16): self.crear_pag_etiquetas(c,lista[x:x+16]) c.showPage() ##Guardamos y listo! c.save() send_to_printer(fichero) return len(lista)
def buscar(self): ##Buscamos la asistencia logging.debug( "Buscado la falta del alumno %i al grupo %i mes %i"%(self.alumnoID,self.grupoID,self.mes)) if self.mes == -1 or self.alumnoID == -1 or self.grupoID == -1: ##Falta algún dato logging.debug( "Faltan datos!" ) return -1 res = Asistencia.select(AND(Asistencia.q.alumnoID==self.alumnoID,Asistencia.q.grupoID==self.grupoID)) if len(list(res)): ##en base a la asistencia buscamos si hay una nota asis = res[0] res = Falta.select(AND(Falta.q.asistenciaID==asis.id,Falta.q.mes==self.mes)) if len(list(res)): self.f = res[0] logging.debug( "Encontrada falta %i"%self.f.id) else: logging.debug( "Creando falta nueva" ) self.f = Falta(asistencia=asis,mes=self.mes) self.id = self.f.id return 1 else: logging.debug( "No hemos encontrado la asistecia, algo va mal!") self.clear() return -1