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 not self.inicio: 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)
def filtrar_por_forma_de_pago(self, r): vpro = ventana_progreso.VentanaProgreso(padre = self.wids['ventana']) vpro.mostrar() i = 0.0 tot = len(r) or 1 # Evito ZeroDivisionError si no hay errores. vpro.set_valor(i / tot, "Filtrando por forma de pago...") if self.wids['ch_formapago'].get_active(): res = [] formapago = utils.combo_get_value(self.wids['cb_formapago']) if formapago != None: txtformapago = self.formaspago[formapago][1] for v in r: # v es una tupla con fecha, vencimiento o vpro.set_valor(i / tot, "Filtrando por forma de pago...") # 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) i += 1 else: res = r vpro.ocultar() return res
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