def filtrar_tildes_lista(lista):
    """
    Devuelve una lista con los elementos de la recibida 
    en los cuales se han sustituido las tildes por vocales
    sin tildar.
    """
    res = []
    for e in lista:
        res.append(utils.filtrar_tildes(e))
    return res
 def filtrar_por_forma_de_pago(self, r):
     res = r[:]
     if self.wids['ch_formapago'].get_active():
         formapago = utils.combo_get_value(self.wids['cb_formapago'])
         if formapago != None:
             txtformapago = self.formaspago[formapago][1]
             res = []
             for v in r: # v es una tupla con fecha, vencimiento o estimación y un boolean para indicar si es de LOGIC.
                 # Las formas de pago en el combo están todas en minúsuclas y sin tildes:
                 if not v[2] and txtformapago in utils.filtrar_tildes(v[1].observaciones).lower():
                     res.append(v)
     return res
 def buscar(self,boton):
     """
     Dadas fecha de inicio y de fin, devuelve todos los vencimientos 
     no pagados al completo.
     """
     vpro = VentanaProgreso(padre = self.wids['ventana'])
     vpro.mostrar()
     if self.inicio == None:
         pagos = pclases.Pago.select(pclases.Pago.q.fecha <= self.fin, 
                                     orderBy = "fecha")
         pagares = pclases.PagarePago.select(
                     pclases.PagarePago.q.fechaEmision <= self.fin, 
                     orderBy = "fechaEmision")
     else:
         pagos = pclases.Pago.select(pclases.AND(
                             pclases.Pago.q.fecha >= self.inicio,
                             pclases.Pago.q.fecha <= self.fin), 
                         orderBy='fecha') 
         pagares = pclases.PagarePago.select(pclases.AND(
                         pclases.PagarePago.q.fechaEmision >= self.inicio,
                         pclases.PagarePago.q.fechaEmision <= self.fin), 
                     orderBy='fechaEmision') 
     i = 0.0
     tot = pagos.count() + pagares.count()
     proveedor = None
     idproveedor = utils.combo_get_value(self.wids['cmbe_proveedor'])
     if idproveedor != None:
         idproveedor = utils.combo_get_value(self.wids['cmbe_proveedor'])
         proveedor = pclases.Proveedor.get(idproveedor)
     self.resultado = []
     filtrar_por_formapago = self.wids['ch_formapago'].get_active()
     formapago = utils.combo_get_value(self.wids['cb_formapago'])
     for pago in pagos:
         i += 1
         vpro.set_valor(i/tot, "Buscando pagos... (%d/%d)" % (i, tot))
         # Si es un pagaré, se trata en el siguiente bucle.
         if pago.pagarePago:
             continue
         if (not proveedor or 
             (proveedor and pago.facturaCompra 
                 and pago.facturaCompra.proveedor == proveedor)):
             try:
                 txtformapago = self.formaspago[formapago][1]
             except TypeError:   # formapago es None. No se está filtrando 
                                 # por forma de pago.
                 filtrar_por_formapago = False
                 self.wids['ch_formapago'].set_active(False)
             if (not filtrar_por_formapago or 
                 (txtformapago in 
                  utils.filtrar_tildes(pago.observaciones).lower())):
                 self.resultado.append(pago)
     for pagare in pagares:
         i += 1
         vpro.set_valor(i/tot, "Buscando pagos... (%d/%d)" % (i, tot))
         for pago in pagare.pagos:
             if (not proveedor or 
                 (proveedor and pago.facturaCompra 
                     and pago.facturaCompra.proveedor == proveedor)):
                 try:
                     txtformapago = self.formaspago[formapago][1]
                 except TypeError: # formapago es None. No se está filtrando
                                   # por forma de pago.
                     filtrar_por_formapago = False
                     self.wids['ch_formapago'].set_active(False)
                 if (not filtrar_por_formapago or 
                     (txtformapago in 
                      utils.filtrar_tildes(pago.observaciones).lower())):
                     self.resultado.append(pago)
     vpro.ocultar()
     self.rellenar_tabla(self.resultado)