def invertir_agrupaciones_cliente_fechas(self):
     """
     Recoge todos los datos del model por mes y año y los agrupa por 
     cliente y mes/año (justo al contrario que en el model original).
     """
     nodos_clientes = {}
     modelfechas = self.wids['tv_facturas'].get_model()
     model = self.wids['tv_cliente'].get_model()
     model.clear()
     for fila_mes_anno in modelfechas:
         fecha = fila_mes_anno[1]
         # Inserto el cliente en el otro model, y si existe actualizo 
         # cantidades.
         for fila_cliente in fila_mes_anno.iterchildren():
             #print fila_cliente[2], fila_cliente[-1]
             if fila_cliente[0].strip() == "":
                 id = fila_cliente[-1]
                 if id not in nodos_clientes:
                     itercliente = model.append(None, fila_cliente)
                     nodos_clientes[id] = itercliente
                 else:
                     itercliente = nodos_clientes[id]
                     row = model[itercliente]
                     for ncol in (3, 6, 11, 12):
                         row[ncol] += fila_cliente[ncol]
             else:  # ES UN NODO DE FACTURA INCORRECTA SUELTO (celdas rojas)
                 tmp = model.append(None, fila_cliente)
                 itercliente = tmp   # FIXME: No estoy muy seguro de esto.
                     # Si no asigno, peta por no tener valor itercliente.
                     # Pasa con las facturas sin vencimiento.
             # Ahora inserto la fila de fecha como hijo, pero tengo que 
             # ponerle las cantidades solo del cliente donde lo inserto. 
             # Que no son ni más ni menos que las que tiene la fila_cliente 
             # original.
             padre = itercliente
             iterfecha = model.append(padre, fila_mes_anno)
             model[iterfecha][0] = "0.0"    # Reinicio el total de facturas.
             for ncol in (3, 6, 11, 12):
                 model[iterfecha][ncol] = fila_cliente[ncol]
             # Y ahora cuelgo las facturas de la fila de fecha.
             for fila_factura in fila_cliente.iterchildren():
                 iterfactura = model.append(iterfecha, fila_factura)
                 try:
                     totalfacturas = utils.parse_euro(
                                       rex_importe_fras.findall(
                                         fila_factura[0])[0][1:-1])
                 except (IndexError, TypeError, ValueError):
                     totalfacturas = 0.0
                     print fila_factura[0]
                 totalfacturas += utils.parse_euro(model[iterfecha][0])
                 model[iterfecha][0] = "%s €" % (
                     utils.float2str(totalfacturas))
                 # Y si por casualidad tiene varios vencimientos:
                 for fila_vencimientos in fila_factura.iterchildren():
                     model.append(iterfactura, fila_vencimientos)
Пример #2
0
 def cambiar_importe_cobro(self, cell, path, texto):
     """
     Cambia el importe del cobro.
     """
     model = self.wids['tv_cobros'].get_model()
     try:
         importe = utils.parse_euro(texto)
     except ValueError:
         utils.dialogo_info('ERROR EN FORMATO', 'El importe introducido no es correcto.', padre = self.wids['ventana'])
         return
     idcobro = model[path][-1]
     cobro = pclases.Cobro.get(idcobro)
     cobro.importe = importe
     cobro.syncUpdate()
     model[path][1] = cobro.importe