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))
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))
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)))
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))
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))
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))
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
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))