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
예제 #2
0
 def borrar(self):
     print "Borramos el grupo ya cargado %s"%self.id
     for asis in self.g.alumnos:
         print "Borrando asistencia %s del alumnuno %s"%(asis.id,asis.alumno.id)
         for nota in asis.notas:
             Nota.delete(nota.id)
         Asistencia.delete(asis.id)
     for clase in self.g.clases:
         print "Borrando la clase %s"%clase.id
         Clase.delete(clase.id)
     Grupo.delete(self.id)
     self.rellenar_lista()
    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
예제 #4
0
 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 cargar(self,id):
     if id == -1:            
         return
     self.a = Asistencia.get(id)
     for variable in ['precio','id','confirmado','alumnoID','grupoID','factura','metalico']:            
         setattr(self,variable,getattr(self.a,variable))
     if self.precio == None:
         self.precio = ""
예제 #6
0
 def cambiarConfirmacion(self,id):
     asistencia = Asistencia.get(id)
     if not asistencia.confirmado:
         ##print "El alumno estaba sin confirmar, al confirmarlo generamos el horario..."
         ##FIXME
         ## impirmir horario
         asistencia.confirmado = True
         debug("Guardando en el historico la confirmacion")
         h = Historia(alumno=self.a,tipo="confirmacion",anotacion="Al grupo %s"%asistencia.grupo.nombre)
     else:
         asistencia.confirmado = False
     self.refrescar_lista_grupos()
예제 #7
0
    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)
예제 #8
0
 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
예제 #9
0
 def eliminarAsistencia(self,id):
     asistencia = Asistencia.get(id)
     ##print "Vamos a borrar la asistencia de %s al grupo %s"%(asistencia.grupo.nombre,asistencia.alumno.nombre)
     Asistencia.delete(id)
     self.refrescar_lista_grupos()
예제 #10
0
 def quitar_alumno(self,id):
     asis = Asistencia.get(id)
     debug("vamos a quitar el alumnos %s del grupo"%asis.alumno.id)
     asis.destroySelf()
     self.rellenar_lista_alumnos()