Exemple #1
0
 def imprimir(self,boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     strdiaini = self.wids['e_fechainicio'].get_text()
     strdiafin = self.wids['e_fechafin'].get_text()
     if self.wids['notebook1'].get_current_page() == 0:
         abrir_pdf(treeview2pdf(self.wids['tv_datos'], titulo = "Vencimientos y cobros por fecha", fecha = "Del %s al %s" % (strdiaini, strdiafin)))
     else:
         abrir_pdf(treeview2pdf(self.wids['tv_cesce'], titulo = "Cobros de clientes asegurados", fecha = "Del %s al %s" % (strdiaini, strdiafin)))
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from formularios import reports
     from informes.treeview2pdf import treeview2pdf
     tv = self.wids['tv_datos']
     titulo = "Ofertas"
     totales = [6]
     extra_data = []
     if self.inicio:
         titulo += " desde %s" % utils.str_fecha(self.inicio)
     if self.fin:
         titulo += " hasta %s" % utils.str_fecha(self.fin)
     #import tempfile 
     #ruta_grafico = tempfile.NamedTemporaryFile(suffix = ".png").name
     #win = self.wids['eventbox_chart'].window
     #ancho, alto = win.get_size()
     #pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, ancho, alto)
     #captura = pb.get_from_drawable(win, win.get_colormap(), 0, 0, 0, 0, 
     #                               ancho, alto)
     # Por algún motivo, que tendrá que ver con los dpi, ppp o cualquiera 
     # sabe qué complejo cálculo gráfico, la imagen sale muy grande en el 
     # PDF. La reduzco cutremente:
     #escalado = captura.scale_simple(int(ancho * 0.75), int(alto * 0.75), 
     #                                gtk.gdk.INTERP_TILES)
     #escalado.save(ruta_grafico, "png")
     reports.abrir_pdf(treeview2pdf(tv, 
                                    titulo = titulo, 
                                    numcols_a_totalizar = totales, 
                                    #graficos = [ruta_grafico], 
                                    extra_data = extra_data))
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     idcliente = utils.combo_get_value(self.wids['cmbe_cliente'])
     if idcliente == None:
         utils.dialogo_info(titulo = 'ERROR',
                            texto = 'Seleccione un cliente',
                            padre = self.wids['ventana'])
     else:
         idcliente = utils.combo_get_value(self.wids['cmbe_cliente'])
         self.cliente = pclases.Cliente.get(idcliente)
         cliente = self.cliente
         if not self.inicio:            
             fechaInforme = 'Hasta ' + utils.str_fecha(time.strptime(self.fin, "%Y/%m/%d"))
         else:
             fechaInforme = utils.str_fecha(time.strptime(self.inicio, "%Y/%m/%d")) + ' - ' + utils.str_fecha(time.strptime(self.fin, "%Y/%m/%d"))
     
         strfecha = fechaInforme
         informe = treeview2pdf(self.wids['tv_datos'], 
                     titulo = "Productos comprados por " + cliente.nombre, 
                     fecha = strfecha) 
         if informe:
             abrir_pdf(informe)
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe.
     """
     resp = utils.dialogo(titulo = "¿IMPRIMIR DESGLOSE?", 
                          texto = "Puede imprimir un resumen o todo el "
                                  "contenido de la consulta\n"
                                  "¿Desea imprimir toda la información "
                                  "desglosada?", 
                          padre = self.wids['ventana'])
     if resp:
         tv = self.wids['tv_datos']
         tv.expand_all()
         while gtk.events_pending(): gtk.main_iteration(False)
         colstotales = []
     else:
         tv = self.wids['tv_datos']
         tv.collapse_all()
         while gtk.events_pending(): gtk.main_iteration(False)
         from consulta_ventas_por_producto import convertir_a_listview
         tv = convertir_a_listview(tv)
         colstotales = [2, 3, 4]
     strfecha = "De %s a %s" % (self.wids['e_fechainicio'].get_text(), 
                                self.wids['e_fechafin'].get_text())
     abrir_pdf(treeview2pdf(tv, 
                            titulo = "Beneficio sobre tarifa (tickets)", 
                            fecha = strfecha, 
                            numcols_a_totalizar = colstotales))
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from formularios import reports
     from informes.treeview2pdf import treeview2pdf
     pagina_activa = self.wids['nb_tipo'].get_current_page()
     almacenid = utils.combo_get_value(self.wids['cb_almacen'])
     if almacenid != 0:
         almacen = pclases.Almacen.get(almacenid)
     else:
         almacen = None
     if pagina_activa == 0:
         tv = self.wids['tv_fibra']
         titulo = "Existencias de productos por tipo: fibra"
     elif pagina_activa == 1: 
         tv = self.wids['tv_gtx']
         titulo = "Existencias de productos por tipo: geotextiles"
     elif pagina_activa == 2: 
         tv = self.wids['tv_cemento']
         titulo = "Existencias de productos por tipo: fibra de cemento"
     else:
         return
     try:
         titulo += " (%s)" % almacen.nombre
     except AttributeError:
         pass
     totales = range(1, tv.get_model().get_n_columns()-1)
     extra_data = []
     reports.abrir_pdf(treeview2pdf(tv, 
                                    titulo = titulo, 
                                    apaisado = False, 
                                    pijama = True, 
                                    numcols_a_totalizar = totales, 
                                    extra_data = extra_data))
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe.
     """
     pagina_activa = self.wids['notebook'].get_current_page()
     if pagina_activa == 0:
         tv = self.wids['tv_por_producto']
         titulo = "Existencias por almacén"
     else:
         pagina = 0
         almacenes = pclases.Almacen.select(pclases.Almacen.q.activo==True,
                                            orderBy = "id")
         for a in almacenes:
             pagina += 1
             if pagina == pagina_activa:
                 tv = self.wids['tv_%d' % a.id]
                 titulo = "Existencias por almacén: %s" % a.nombre
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     strfecha = "%s - %s" % (utils.str_fecha(mx.DateTime.localtime()), 
                             utils.str_hora(mx.DateTime.localtime()))
     fichpdf = treeview2pdf(tv, 
                            titulo = titulo,
                            fecha = strfecha)
     abrir_pdf(fichpdf)
    def imprimir(self, boton):
        """
        Prepara la vista preliminar para la impresión del informe.
        """
        from informes.treeview2pdf import treeview2pdf
        from formularios.reports import abrir_pdf

        strfecha = "%s - %s" % (self.wids["e_fechainicio"].get_text(), self.wids["e_fechafin"].get_text())
        pactiva = self.wids["notebook1"].get_current_page()
        if pactiva == 0:
            tv = self.wids["tv_fibra"]
            totales = range(1, tv.get_model().get_n_columns() - 1)
        elif pactiva == 1:
            tv = self.wids["tv_gtx"]
            totales = range(1, tv.get_model().get_n_columns() - 1)
        elif pactiva == 2:
            tv = self.wids["tv_cem"]
            totales = range(1, tv.get_model().get_n_columns() - 1)
        elif pactiva == 3:
            tv = self.wids["tv_otros"]
            totales = []
        abrir_pdf(
            treeview2pdf(
                tv, titulo="Salidas de almacén agrupadas" "por producto", fecha=strfecha, numcols_a_totalizar=totales
            )
        )
 def imprimir(self, boton):
     """
     Imprime el TreeView de la ventana.
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     strfecha = self.wids['e_fecha'].get_text()
     abrir_pdf(treeview2pdf(self.wids['tv_horas'], titulo = "Horas trabajadas", fecha = strfecha))
Exemple #9
0
 def imprimir(self, boton):
     """
     "Vuerca-vuerca" el TreeView en un PDF.
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     import mx.DateTime
     strfecha = utils.str_fecha(mx.DateTime.localtime())
     tv = self.wids['tv_datos']
     abrir_pdf(treeview2pdf(tv, titulo = "Productos", fecha = strfecha, apaisado = True))
 def imprimir(self, boton):
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     tv = self.wids['tv_datos']
     abrir_pdf(treeview2pdf(tv, 
                            titulo = "Resumen horas por empleado y día", 
                            fecha = self.wids['e_fechainicio'].get_text() 
                                    + " - " 
                                    + self.wids['e_fechafin'].get_text(), 
                            apaisado = False))
Exemple #11
0
 def imprimir(self, boton):
     """
     Imprime el TreeView de la ventana.
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     strdiaini = self.wids['e_fecha_ini'].get_text()
     strdiafin = self.wids['e_fecha_fin'].get_text()
     abrir_pdf(treeview2pdf(self.wids['tv_horas'], 
         titulo = "Horas trabajadas", 
         fecha = "Del %s al %s" % (strdiaini, strdiafin)))
Exemple #12
0
 def imprimir(self, boton):
     """
     Imprime el TreeView de la ventana.
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     mes = utils.combo_get_value(self.wids['cb_mes'])
     anno = int(self.wids['sp_anno'].get_value())
     strfecha = "%s de %s (%s a %s)" % (mes, anno, self.wids['e_fechaini'].get_text(), self.wids['e_fechafin'].get_text())
     tv = self.crear_fake_treeview(self.wids['tv_nominas'], catlaboral = False)  
     abrir_pdf(treeview2pdf(tv, titulo = "Pluses y nóminas", fecha = strfecha, apaisado = True))
Exemple #13
0
 def imprimir_totales(self, boton):
     """
     Exporta a PDF el TreeView de detalle.
     """
     tv = self.wids['tv_datos']
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     strfecha = "%s - %s" % (utils.str_fecha(mx.DateTime.localtime()), utils.str_hora(mx.DateTime.localtime()))
     abrir_pdf(treeview2pdf(tv, 
         titulo = "Valoración de productos de compra en almacén. TOTALES.",
         fecha = strfecha, 
         apaisado = False))
Exemple #14
0
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     strfecha = utils.str_fecha(mx.DateTime.localtime())
     informe = treeview2pdf(self.wids['tv_datos'], 
                     titulo="Listado de productos con PVP (IVA incluido)", 
                     fecha = strfecha) 
     if informe:
         abrir_pdf(informe)
 def imprimir(self, boton):
     """
     "Vuerca-vuerca" el TreeView en un PDF.
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     strfecha = utils.str_fecha(mx.DateTime.localtime())
     tv = self.wids['tv_datos']
     abrir_pdf(treeview2pdf(tv, 
                     titulo = "Resultados de proceso de búsqueda por lote", 
                     fecha = strfecha, 
                    apaisado = False))
 def imprimir(self,boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     if not self.inicio:
         fechaInforme = 'Hasta ' + utils.str_fecha(
                 time.strptime(self.fin,"%Y/%m/%d"))
     else:
         fechaInforme = (utils.str_fecha(
                 time.strptime(self.inicio,"%Y/%m/%d")) + ' - ' 
                 + utils.str_fecha(time.strptime(self.fin,"%Y/%m/%d")))
     abrir_pdf(treeview2pdf(self.wids['tv_entrada'], 
         titulo = "Albaranes de entrada pendientes de facturar", 
         fecha = fechaInforme))
     abrir_pdf(treeview2pdf(self.wids['tv_salida'], 
         titulo = "Albaranes de salida pendientes de facturar", 
         fecha = fechaInforme))
     abrir_pdf(treeview2pdf(self.wids['tv_producto'], 
         titulo = "Pendiente de facturar por producto", 
         fecha = fechaInforme))
Exemple #17
0
 def imprimir(self, boton):
     """
     "Vuerca-vuerca" el TreeView en un PDF.
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     strfecha = utils.str_fecha(mx.DateTime.localtime())
     tv = self.wids['tv_pruebas']
     desc_prod = self.wids['e_nombre'].get_text()
     abrir_pdf(treeview2pdf(tv, 
                            titulo = "Resultados fluidez %s" % desc_prod, 
                            fecha = strfecha, 
                            apaisado = False))
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     if not self.inicio:
         fecha_informe = 'Hasta ' + utils.str_fecha(self.fin)
     else:
         fecha_informe = (utils.str_fecha(self.inicio)
                         + ' - '
                         + utils.str_fecha(self.fin))
     abrir_pdf(treeview2pdf(self.wids['tv_datos'],
                            titulo = "Consulta visitas realizadas",
                            fecha = fecha_informe))
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe.
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     strfecha = "%s - %s" % (
         self.wids['e_fechaini'].get_text(), 
         self.wids['e_fechafin'].get_text())
     tv = self.wids['tv_datos']
     nomarchivo = treeview2pdf(tv, 
         titulo = "Facturas sin documento de pago",
         fecha = strfecha, 
         apaisado = False)
     abrir_pdf(nomarchivo)
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     if not self.inicio:
         fecha_informe = 'Hasta ' + utils.str_fecha(self.fin)
     else:
         fecha_informe = (utils.str_fecha(self.inicio)
                         + ' - '
                         + utils.str_fecha(self.fin))
     abrir_pdf(treeview2pdf(self.wids['tv_datos'],
                            titulo = "Pedidos por cliente",
                            fecha = fecha_informe,
                            numcols_a_totalizar = [6, 7]))
 def imprimir(self,boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     fechafin = mx.DateTime.DateTimeFrom(day = int(self.fin.split("/")[2]), 
                                         month = int(self.fin.split("/")[1]), 
                                         year = int(self.fin.split("/")[0]))
     strfecha = utils.str_fecha(fechafin)
     if self.inicio:
         fechainicio = mx.DateTime.DateTimeFrom(day = int(self.inicio.split("/")[2]), 
                                                month = int(self.inicio.split("/")[1]), 
                                                year = int(self.inicio.split("/")[0]))
         strfecha = "Del %s al %s" % (utils.str_fecha(fechainicio), strfecha)
     tv = self.wids['tv_datos']
     abrir_pdf(treeview2pdf(tv, titulo = "Listado facturas pro forma", fecha = strfecha, apaisado = False))
 def imprimir(self, boton):
     """
     Vuelca el contenido del TreeView a un PDF.
     """
     #utils.dialogo_info(titulo = "NO IMPLEMENTADO", 
     #                   texto = "Computer says no. Atjo.", 
     #                   padre = self.wids['ventana'])
     if self.wids['notebook1'].get_current_page() == 0:
         tv = self.wids['tv_facturas']
     elif self.wids['notebook1'].get_current_page() == 1:
         tv = self.wids['tv_cliente']
     elif self.wids['notebook1'].get_current_page() == 2:
         tv = self.wids['tv_cesce']
         abrir_pdf(treeview2pdf(tv, 
             titulo = "Facturas de clientes con crédito concedido"))
         return
     else:
         return
     model = tv.get_model()
     datos = []
     for row in model:
         datos.append((row[2], "", "", "", "", "", "", "", ""))
         for h in row.iterchildren():
             datos.append((h[0], h[1], h[2], utils.float2str(h[3]), h[5], utils.float2str(h[6]), h[8], h[9], h[10]))
             for h2 in h.iterchildren():
                 datos.append((h2[0], h2[1], h2[2], utils.float2str(h2[3]), h2[5], utils.float2str(h2[6]), h2[8], h2[9], h2[10]))
             datos.append(("---", "---", "---", "---", "---", "---", "---", "---", "---"))
         datos.append((("Totales %s" % row[2]).upper(), "---", "---", utils.float2str(row[3]), "---", utils.float2str(row[6]), "---", "---", "---"))
         datos.append(("", ) * 9)
     datos.append(("===", ) * 9)
     datos.append(("Total facturado:", self.wids['e_total'].get_text(), "", "", "", "", "", "", ""))
     datos.append(("    Vtos. pendientes:", self.wids['e_pendiente'].get_text(), "", "", "", "", "", "", ""))
     datos.append(("    Total cobrado o negociado:", self.wids['e_cobrado'].get_text(), "", "", "", "", "", "", ""))
     datos.append(("", ) * 9)
     datos.append(("Total pagarés:", self.wids['e_total_pagares'].get_text(), "", "", "", "", "", "", ""))
     datos.append(("    No vencidos o pendientes:", self.wids['e_pendiente_pagares'].get_text(), "", "", "", "", "", "", ""))
     datos.append(("    Cobrado:", self.wids['e_cobrado_pagares'].get_text(), "", "", "", "", "", "", ""))
     datos.append(("", ) * 9)
     datos.append(("Total vtos. no cubiertos por pagaré:", self.wids['e_total_otros'].get_text(), "", "", "", "", "", "", ""))
     datos.append(("    Pendiente:", self.wids['e_pendiente_otros'].get_text(), "", "", "", "", "", "", ""))
     datos.append(("    Cobrado:", self.wids['e_cobrado_otros'].get_text(), "", "", "", "", "", "", ""))
     cliente = self.wids['cbe_cliente'].child.get_text()
     abrir_pdf(geninformes.facturacion_por_cliente_y_fechas("Facturación %s" % cliente, self.wids['e_fechaini'].get_text(), self.wids['e_fechafin'].get_text(), datos))
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     npag = self.wids['nb_almacenes'].get_current_page()
     tv, ekg, ebultos = self.tvs[npag][0:3]
     kg = ekg.get_text()
     bultos = ebultos.get_text()
     strfecha = utils.str_fecha(mx.DateTime.localtime())
     iter1 = tv.get_model().append(("---", )*11)
     iter2 = tv.get_model().append(
         ("", "", kg, bultos, "", "", "", "", "", "", ""))
     informe = treeview2pdf(tv, 
                     titulo="Listado de existencias de fibra embolsada: %s"
                         % self.wids['nb_almacenes'].get_tab_label_text(
                             tv.parent.parent), 
                     fecha = strfecha) 
     tv.get_model().remove(iter1)
     tv.get_model().remove(iter2)
     if informe:
         abrir_pdf(informe)
 def imprimir(self, boton):
     """
     Crea un PDF con el contenido del TreeView.
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     tv = self.wids['tv_rollos']
     if self.wids['ch_filtrar'].get_active():
         tv = crear_fake_treeview(tv)
     model = tv.get_model()
     fecha = "%s hasta %s" % (self.wids['e_fechainicio'].get_text(),
                              self.wids['e_fechafin'].get_text())
     totales = ("", 
                "TOTAL ALMACÉN:", 
                self.wids['e_total_almacen'].get_text(), 
                "TOTAL FABRICADO:", 
                self.wids['e_total_fabricado'].get_text(), 
                "")
     fpdf = treeview2pdf(tv, 
                         titulo = "Rollos defectuosos", 
                         fecha = fecha, 
                         extra_data = totales,
                         apaisado = True)
     abrir_pdf(fpdf)
    def imprimir(self, boton):
        from informes.treeview2pdf import treeview2pdf
        from formularios.reports import abrir_pdf

        for tvnombre, titulo, tvresumen, fake_cols in (
            ("tv_plus", "Consulta nóminas: plus salarial", "tv_totales_plus", 2),
            ("tv_resumen", "Consulta nóminas: resumen", "tv_totales_resumen", 3),
        ):
            # A los datos de los totales se le añaden "fake_cols" columnas
            # de datos vacías para poder añadir una fila más al tv "tvnombre"
            # antes de generar el PDF. Esa fila se eliminará justo después.
            tv = self.wids[tvnombre]
            if not len(tv.get_model()):
                continue
            # Antes de añadir nada, tengo que evitar que el dato me lo ordene,
            # porque siempre quiero que el total esté al final.
            bak_order = []
            model = tv.get_model()
            ncol = 0
            for col in tv.get_columns():
                bak_order.append(col.get_sort_column_id())
                col.set_sort_column_id(-1)
                model.set_sort_func(ncol, lambda *args, **kw: 0)
                ncol += 1
            while gtk.events_pending():
                gtk.main_iteration(False)
            # EObak_order
            try:
                fila_total = self.wids[tvresumen].get_model()[0]
            except IndexError:
                added = False
            else:
                fila_total = [""] * (fake_cols - 1) + ["TOTAL: "] + [i for i in fila_total]
                iter_total = tv.get_model().append(fila_total)
                added = True
            tvoriginal = tv
            if tv.get_model().get_n_columns() > 12:
                # Necesito hacer esto para que se redistribuyan los anchos
                # correctamente:
                # nb = self.wids['notebook1']
                # current = nb.get_current_page()
                # for page in range(nb.get_n_pages()):
                #    nb.set_current_page(page)
                #    while gtk.events_pending(): gtk.main_iteration(False)
                # nb.set_current_page(current)
                tv = crear_fake_listview(tv, filtrar_nulos=True, cols_a_ignorar=(1, 2))
                for icol in range(len(tv.get_columns())):
                    col = tv.get_column(icol)
                    tit_columna = col.get_title().strip()
                    if len(tit_columna.split()) > 1:
                        ntit_columna = ".".join(
                            [p[:1].upper() for p in tit_columna.split()[:-1]] + tit_columna.split()[-1:]
                        )
                        tit_columna = ntit_columna
                    col.set_title(tit_columna)
            abrir_pdf(
                treeview2pdf(
                    tv,
                    titulo=titulo,
                    fecha=self.wids["e_fechainicio"].get_text() + " - " + self.wids["e_fechafin"].get_text(),
                    apaisado=tv.get_model().get_n_columns() > 12,
                    pijama=True,
                )
            )
            if added:
                tv = tvoriginal
                tv.get_model().remove(iter_total)
            ncol = 0
            for col, order_id in zip(tv.get_columns(), bak_order):
                col.set_sort_column_id(order_id)
                model.set_sort_func(ncol, utils.funcion_orden, ncol)
                ncol += 1
Exemple #26
0
 def imprimir(self,boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from informes.treeview2pdf import treeview2pdf
     from formularios.reports import abrir_pdf
     strfecha = "%s - %s" % (self.wids['e_fechainicio'].get_text(), self.wids['e_fechafin'].get_text())
     resp = utils.dialogo(titulo = "¿IMPRIMIR DESGLOSE?", 
         texto = "Puede imprimir únicamente los albaranes o toda la "
                 "información de la ventana.\n¿Desea imprimir también el "
                 "contenido de los albaranes?", 
         padre = self.wids['ventana'])
     if resp:
         tv = self.wids['tv_datos']
         tv.expand_all()
         while gtk.events_pending(): gtk.main_iteration(False)
         itertotal = tv.get_model().append(None, ("",)*8 + ("TOTAL", self.wids['e_total'].get_text()) + ("", )*(2+3) + ("", ))
     else:
         tv = self.wids['tv_datos']
         tv.collapse_all()
         while gtk.events_pending(): gtk.main_iteration(False)
         tv = convertir_a_listview(tv)
         # Me sobran algunas columnas
         tv.remove_column(tv.get_columns()[2])
         tv.remove_column(tv.get_columns()[3])
         tv.remove_column(tv.get_columns()[3])
         tv.remove_column(tv.get_columns()[3])
         tv.remove_column(tv.get_columns()[3])
         tv.remove_column(tv.get_columns()[3])
         tv.remove_column(tv.get_columns()[-1])
         tv.remove_column(tv.get_columns()[-1])
         # 20111006 Tres más
         tv.remove_column(tv.get_columns()[-1])
         tv.remove_column(tv.get_columns()[-1])
         tv.remove_column(tv.get_columns()[-1])
         tv.get_column(2).set_title("Proveedor")
         model = tv.get_model()
         # Chapuza para mover los datos de la columna, pensaba que se 
         # eliminaban al quitar las columnas del TV.
         for fila in model:
             fila[2], fila[3] = fila[3],fila[9]
         itertotal = model.append(("", "", "TOTAL", 
             self.wids['e_total'].get_text()) + ("", )*(8+3) + ("", ))
     idproveedor = utils.combo_get_value(self.wids['cbe_proveedor'])
     if idproveedor > 1:
         try:
             nomproveedor = pclases.Proveedor.get(idproveedor).nombre
         except:
             nomproveedor = "?"
     else:
         nomproveedor = "proveedores"
     abrir_pdf(treeview2pdf(tv, titulo = "Compras a %s" % (nomproveedor), 
                            fecha = strfecha))
     tv.get_model().remove(itertotal)
     if self.wids['notebook1'].get_current_page() == 0:
         self.wids['notebook1'].next_page()
         self.wids['notebook1'].realize()
         while gtk.events_pending(): gtk.main_iteration(False)
         self.wids['notebook1'].prev_page()
     abrir_pdf(treeview2pdf(self.wids['tv_proveedor'], 
                            titulo = "Compras por proveedor y producto", 
                            fecha = strfecha))
 def imprimir(self, boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from formularios import reports
     from informes.treeview2pdf import treeview2pdf
     if self.wids['notebook1'].get_current_page() == 0:
         tv = self.wids['tv_datos']
         titulo = "Ofertas"
         totales = [9]
         extra_data = [["", "", "===", "===", "===", 
                        "===", "===", "===", "===", ""], 
                       ["", "", 
                        "", 
                        "", 
                        "Total ofertado:", 
                        "", 
                        self.wids['e_total_ofertas'].get_text()
                       ]
                      ]
     elif self.wids['notebook1'].get_current_page() == 1:
         tv = self.wids['tv_cliente']
         titulo = "Ofertas por cliente"
         totales = [2]
         extra_data = [["==="] * 4, 
                       ["", 
                        "Total ofertado:", 
                        self.wids['e_total_ofertas'].get_text(),
                        ""], 
                      ]
     elif self.wids['notebook1'].get_current_page() == 2:
         tv = self.wids['tv_producto']
         titulo = "Ofertas por producto"
         totales = [1]
         extra_data = [["", "===", "==="], 
                       ["", 
                        "Total ofertado:", 
                        self.wids['e_total_ofertas'].get_text()], 
                      ]
     elif self.wids['notebook1'].get_current_page() == 3:
         tv = self.wids['tv_comercial']
         titulo = "Ofertas por comercial"
         totales = [3]
         extra_data = [["===", "===", "", ""], 
                       ["Total ofertado:", 
                        self.wids['e_total_ofertas'].get_text(), "", ""], 
                      ]
     elif self.wids['notebook1'].get_current_page() == 4:
         tv = self.wids['tv_provincia']
         titulo = "Ofertas por provincia"
         totales = [4]
         extra_data = [["===", "===", "", "", ""], 
                       ["Total ofertado:", 
                        self.wids['e_total_ofertas'].get_text(), 
                        "", "", ""], 
                      ]
     else:
         return
     if self.inicio:
         titulo += " desde %s" % utils.str_fecha(self.inicio)
     if self.fin:
         titulo += " hasta %s" % utils.str_fecha(self.fin)
     import tempfile 
     ruta_grafico = tempfile.NamedTemporaryFile(suffix = ".png").name
     win = self.wids['eventbox_chart'].window
     ancho, alto = win.get_size()
     pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, ancho, alto)
     captura = pb.get_from_drawable(win, win.get_colormap(), 0, 0, 0, 0, 
                                    ancho, alto)
     # Por algún motivo, que tendrá que ver con los dpi, ppp o cualquiera 
     # sabe qué complejo cálculo gráfico, la imagen sale muy grande en el 
     # PDF. La reduzco cutremente:
     escalado = captura.scale_simple(int(ancho * 0.75), int(alto * 0.75), 
                                     gtk.gdk.INTERP_TILES)
     escalado.save(ruta_grafico, "png")
     reports.abrir_pdf(treeview2pdf(tv, 
                                    titulo = titulo, 
                                    numcols_a_totalizar = totales, 
                                    graficos = [ruta_grafico], 
                                    extra_data = extra_data))