Example #1
0
def test_pales():
    from formularios.reports import abrir_pdf
    pales = pclases.Pale.select(orderBy = "-id")[:2]
    abrir_pdf(crear_etiquetas_pales(pales))
    import time
    time.sleep(1)
    abrir_pdf(crear_etiquetas_pales(pales, lang = "en"))
Example #2
0
 def imprimir_ausencia(self, b):
     from formularios import reports
     model, itr = self.wids['tv_ausencias'].get_selection().get_selected()
     if itr != None:
         ide = model[itr][-1]
         ausencia = pclases.Ausencia.get(ide)
         empleado = (ausencia.empleado.nombre
                     + ' ' + ausencia.empleado.apellidos)
         centro = ausencia.empleado.centroTrabajo
         if centro != None:
             centro = centro.nombre
         else:
             centro = ''
         fecha = ausencia.fecha
         turno = '______'
         grupo = ausencia.empleado.grupo
         if grupo != None:
             for l in grupo.laborables:
                 if l.fecha == ausencia.fecha:
                     turno = l.turno.nombre
         motivo = ausencia.motivo
         motivos = pclases.Motivo.select()
         reports.abrir_pdf(geninformes.ausencia(
             empleado,centro,fecha,turno,motivo,motivos))
     else:
         utils.dialogo_info(titulo = "SELECCIONE AUSENCIA",
                            texto = "Seleccione la ausencia a imprimir.",
                            padre = self.wids['ventana'])
 def imprimir(self, boton):
     """
     Crea un impreso del albarán
     """
     self.guardar(None)  # Si se ha olvidado guardar, guardo yo.
     from formularios import reports
     albaran = self.objeto
     if albaran.proveedor != None:
         proveedor = albaran.proveedor.nombre
     else:
         proveedor = ''
     pedidos = []
     lineas = []
     for l in albaran.lineasDeCompra:
         if l.pedidoCompra != None:
             numpedido = l.pedidoCompra.numpedido
         else:
             numpedido = '-'
         lineas.append({'codigo': l.productoCompra.codigo, 'descripcion': l.productoCompra.descripcion, 'cantidad': l.cantidad, 'numped': numpedido })
         if l.pedidoCompra != None and l.pedidoCompra.numpedido not in pedidos:
             pedidos.append(l.pedidoCompra.numpedido)
     cadenaPedidos = ','.join(pedidos)
     general = {'albnum':albaran.numalbaran, 
                'fecha':utils.str_fecha(albaran.fecha), 
                'proveedor':proveedor, 
                'pednum':cadenaPedidos}
     observaciones = utils.dialogo_entrada(titulo = 'OBSERVACIONES', 
                                           texto = '¿Desea incluir alguna observación en el albarán?', 
                                           padre = self.wids['ventana'])
     if observaciones == None:
         return
     reports.abrir_pdf(geninformes.albaranEntrada(general, lineas, observaciones))
 def imprimir(self,boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from formularios import reports
     datos = []
     total = 0
     self.resultados.sort(self.por_fecha_ldc)
     for ldc in self.resultados:
         subtotal = ldc.cantidad * ldc.precio
         datos.append((ldc.nombre_proveedor,
                       ldc.albaranEntrada.numalbaran,
                       utils.str_fecha(ldc.albaranEntrada.fecha),
                       ldc.descripcion_productoCompra,
                       utils.float2str(ldc.cantidad),
                       utils.float2str(ldc.precio),
                       utils.float2str(subtotal)
                     ))
         total += subtotal
     if len(self.resultados) > 0:
         datos.append(("", "", "", "", "", "", "-"*20))
         datos.append(("", "", "", "", "", "", utils.float2str(total)))
     if (self.inicio) == None:            
         fechaInforme = 'Hasta '+utils.str_fecha(self.fin)
     else:
         fechaInforme = utils.str_fecha(self.inicio)+' - '+utils.str_fecha(self.fin)
     if datos != []:
         reports.abrir_pdf(geninformes.entradasAlmacen(datos,fechaInforme, cols_a_derecha=(4, 5, 6)))
 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)
Example #6
0
    def imprimir(self,boton):
        """
        Prepara la vista preliminar para la impresión del informe
        """
        from formularios import reports
        if self.resultado != []:
            datos = []
            if isinstance(self.resultado[0],tuple):
            # Listado de productos de venta
                titulo = 'Productos bajo mínimos'
                for item in self.resultado:
                    datos.append((item[0].codigo,
                                    item[0].descripcion,
                                    item[0].minimo,
                                    item[1]))

            else:
            # Listado de productos de compra (materiales)
                titulo = 'Materiales bajo mínimos'
                for item in self.resultado:
                    datos.append((item.codigo,
                                 item.descripcion,
                                 item.minimo,
                                 item.existencias))
            reports.abrir_pdf(geninformes.bajoMinimos(
                                titulo, 
                                datos, 
                                utils.str_fecha(time.localtime()), 
                                self.wids['cbe_proveedor'].child.get_text()))
 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
     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

        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
            )
        )
Example #10
0
 def imprimir_listado(self, widget):
     """
     Muestra la vista previa de un pdf con el listado de empleados
     junto al código asociado a cada uno
     """
     from formularios import reports
     reports.abrir_pdf(geninformes.empleados())
Example #11
0
 def imprimir(self, boton):
     """
     Imprime la tarifa en pantalla.
     """
     from formularios import reports
     datos = []
     model = self.wids['tabla_productos'].get_model()
     for itr in model: 
         datos.append((itr[0], 
                       itr[1], 
                       "%s €" % (utils.float2str(itr[2], 3)), 
                       "%s €" % (utils.float2str(itr[3], 3))
                     ))
     def cmp_func(x, y):
         """
         Para ordenar por nombre de producto.
         """
         if x[1] < y[1]:
             return -1
         if x[1] > y[1]:
             return 1
         return 0
     datos.sort(cmp_func)
     if datos != []:
         nombre_tarifa = self.wids['cb_nombre_tarifa'].child.get_text()
         reports.abrir_pdf(geninformes.imprimir_tarifa(datos, nombre_tarifa, utils.str_fecha(mx.DateTime.localtime())))
Example #12
0
    def __init__(self, objeto = None, usuario = None):
        """
        Constructor. objeto puede ser un objeto de pclases con el que
        comenzar la ventana (en lugar del primero de la tabla, que es
        el que se muestra por defecto).
        """
        from formularios import reports
        import tempfile

        exportar_a_csv_a = None

        if utils.dialogo(titulo = "FILTRAR EXISTENCIAS NULAS", 
                         texto = "¿Desea filtrar ignorando los productos con"
                                 " existencias a cero?"):
            func_informe = geninformes.repuestos_no_nulos
        else:
            func_informe = geninformes.repuestos
        if utils.dialogo(titulo = "EXPORTAR A CSV", 
                         texto = "A continuación se generará el informe en "
                                 "PDF.\n¿Desa también que se exporte a CSV?", 
                         defecto = "No", 
                         tiempo = 10): 
            exportar_a_csv_a = os.path.join(tempfile.gettempdir(), 
                                            "%s_repuestos" % (
                                    mx.DateTime.localtime().strftime("%Y%m%d")))
        pdfs = func_informe(exportar_a_csv_a = exportar_a_csv_a)
        for pdf in pdfs:
            reports.abrir_pdf(pdf)
Example #13
0
 def imprimir(self, boton):
     """
     Imprime un listado del consumo de balas.
     """
     partida_carga = self.get_partida()
     datos = {'partida': partida_carga}
     datos['partidas_gtx'] = ", ".join(
             [p.codigo for p in partida_carga.partidas])
     model = self.wids['tv_balas'].get_model()
     datos['balas'] = []
     for itr in model:
         datos['balas'].append((itr[0], itr[1], ""))
     datos['balas'].append(("-" * 20, "-" * 20, ""))     # El último campo
         # vacío es para que no queden los datos tan separados al imprimir.
     datos['balas'].append(
             ("TOTAL CONSUMO FIBRA", self.wids['e_total'].get_text(), ""))
     datos['balas'].append(
             ("TOTAL GEOTEXTILES PRODUCIDOS",
              self.wids['e_peso_gtx'].get_text(), ""))
     datos['balas'].append(
             ("(para toda la partida, sin embalaje y con merma)", "", ""))
     model = self.wids['tv_resumen'].get_model()
     datos['balas'].append(("", "", ""))
     datos['balas'].append(("", "", ""))
     datos['balas'].append(("Resumen por lotes:", "", ""))
     for itr in model:
         datos['balas'].append(("%d balas (%s kg)." % (
                                     itr[0], utils.float2str(itr[1], 1)),
                                "Lote %s." % (itr[2]),
                                itr[3]))
     reports.abrir_pdf(geninformes.consumo_fibra_partida(datos,
         utils.str_fecha(mx.DateTime.localtime()), cols_a_derecha=(0, 1, )))
    def imprimir(self, boton):
        """
        Prepara la vista preliminar para la impresión del informe
        """
        from formularios import reports

        datos = []
        lista = self.resultado
        for elem in lista:
            datos.append(
                (
                    elem.numpartida,
                    "%.2f" % elem.longitudinal,
                    "%.2f" % elem.transversal,
                    "%.2f" % elem.compresion,
                    "%.2f" % elem.perforacion,
                    "%.2f" % elem.permeabilidad,
                    "%.2f" % elem.poros,
                    "%.2f" % elem.piramidal,
                    "%.2f" % elem.espesor,
                )
            )
        if (self.inicio) == None:
            fechaInforme = "Hasta " + utils.str_fecha(self.fin)
        else:
            fechaInforme = utils.str_fecha(self.inicio) + " - " + utils.str_fecha(self.fin)
        if datos != []:
            reports.abrir_pdf(geninformes.laboratorioPartidas(datos, fechaInforme))
 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)
Example #17
0
 def imprimir(self, boton):
     """
     Crea un PDF con el contenido del TreeView.
     """
     datos = []
     model = self.wids['tv_rollos'].get_model()
     for i in model:
         pas = pclases.AlbaranSalida
         if i[4] == "-" or pas.str_tipos[pas.MOVIMIENTO] in i[4]:
             en_almacen = i[6]
         else:
             en_almacen = ""
         if (  (self.wids['ch_filtrar'].get_active() 
                and i[4] == "-" 
                or pas.str_tipos[pas.MOVIMIENTO] in i[4]) 
             or 
               (not self.wids['ch_filtrar'].get_active())):
             datos.append((i[0], i[1], i[3], i[4], en_almacen, i[5]))
     datos.append(("---", ) * 6)
     datos.append(("Total almacén (no defectuosos):", self.wids['e_total_almacen'].get_text(), "Total fabricado (incluye defectuosos):", self.wids['e_total_fabricado'].get_text(), ""))
     if not self.inicio:
         fechaInforme = 'Hasta: %s' % (utils.str_fecha(self.fin))
     else:
         fechaInforme = utils.str_fecha(self.inicio) + ' - ' + utils.str_fecha(self.fin)
     if datos != []:
         desc_producto = self.wids['e_descripcion'].get_text()
         listado_pdf = geninformes.listado_rollos(datos, desc_producto,
                                                  fechaInforme)
         from formularios import reports
         reports.abrir_pdf(listado_pdf)
Example #18
0
 def imprimir(self, boton):
     """
     Genera y muestra el PDF del recibo bancario.
     """
     from formularios import reports
     numrecibo = self.wids['e_numrecibo'].get_text()
     lugar_libramiento = self.wids['e_lugar_libramiento'].get_text()
     importe = self.wids['e_importe'].get_text()
     fecha_libramiento = self.wids['e_fecha_libramiento'].get_text()
     vencimiento = self.wids['e_fecha_vencimiento'].get_text()
     codigo_cliente = self.wids['e_codcliente'].get_text()
     numfactura = self.wids['e_numfactura'].get_text()
     fechafactura = self.wids['e_fecha_factura'].get_text()
     persona_pago = self.wids['e_persona_pago'].get_text()
     domicilio_pago = self.wids['e_domicilio_pago'].get_text()
     # cuenta_pago = self.wids['cbe_cuenta_origen'].child.get_text()
     cuenta_pago = self.wids['cbe_cuenta_bancaria_cliente'].child.get_text()
     nombre_librado = self.wids['e_nombre_librado'].get_text()
     direccion_librado = self.wids['e_direccion_librado'].get_text()
     pdf = geninformes.recibo(numrecibo, 
                              lugar_libramiento, 
                              importe, 
                              fecha_libramiento, 
                              vencimiento, 
                              codigo_cliente, 
                              numfactura, 
                              fechafactura, 
                              persona_pago, 
                              domicilio_pago, 
                              cuenta_pago, 
                              nombre_librado, 
                              direccion_librado)        
     reports.abrir_pdf(pdf)
Example #19
0
def test_bigbags():
    """ Pruebas de impresión de etiquetas de bigbag. """
    from formularios.reports import abrir_pdf
    bigbags = pclases.Bigbag.select(orderBy="-id")[:2]
    abrir_pdf(crear_etiquetas_bigbags(bigbags))
    import time
    time.sleep(1)
    abrir_pdf(crear_etiquetas_bigbags(bigbags, lang="en"))
Example #20
0
def test_balas():
    """ Pruebas de impresión de etiquetas de balas. """
    from formularios.reports import abrir_pdf
    balas = (pclases.Articulo.get_articulo("B215047"), )
    abrir_pdf(crear_etiquetas_balas(balas))
    import time
    time.sleep(1)
    abrir_pdf(crear_etiquetas_balas(balas, lang="en"))
Example #21
0
def test_pales():
    """ Pruebas de impresión de etiquetas de palé. """
    from formularios.reports import abrir_pdf
    pales = [pclases.Pale.selectBy(codigo="H7880/20")[0]]
    abrir_pdf(crear_etiquetas_pales(pales))
    import time
    time.sleep(1)
    abrir_pdf(crear_etiquetas_pales(pales, lang="en"))
Example #22
0
 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))
Example #23
0
def test_rollos():
    """ Pruebas de impresión de rollos. """
    from formularios.reports import abrir_pdf
    todos = pclases.Rollo.select(orderBy="-id")
    from random import randrange
    rollos = (todos[randrange(todos.count())],
              todos[randrange(todos.count())])
    #abrir_pdf(etiqueta_rollos_norma13(rollos, False))
    abrir_pdf(etiqueta_rollos_norma13_en(rollos))
 def imprimir(self,boton):
     """
     Prepara la vista preliminar para la impresión del informe
     """
     from formularios import reports
     fechastr = self.wids['e_fecha'].get_text()
     fecha = utils.parse_fecha(fechastr)
     reports.abrir_pdf(
         geninformes.existencias(hasta = fecha, 
                                 ventana_padre = self.wids['ventana']))
Example #25
0
 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))
Example #26
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))
Example #27
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))
Example #28
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)))
Example #29
0
 def imprimir(self, boton):
     """
     Imprime la información en pantalla.
     """
     from formularios import reports
     from informes import geninformes
     txt = "LOTE: %s\n" % (self.wids['e_codigo'].get_text())
     txt += "PRODUCTO: %s\n\n" % (self.wids['e_nombre'].get_text())
     txt += "\nCaracterísticas del lote:\n"
     txt += "    DTEX: %s\n" % (self.wids['e_dtex'].get_text())
     txt += "    Tenacidad: %s\n" % (self.wids['e_tenacidad'].get_text())
     txt += "    Alargamiento: %s\n" % (self.wids['e_elongacion'].get_text())
     txt += "    Corte: %s\n" % (self.wids['e_corte'].get_text())
     txt += "    Grasa: %s\n" % (self.wids['e_grasa'].get_text())
     txt += "    Encogimiento: %s\n" % (self.wids['e_encogimiento'].get_text())
     txt += "    Color: %s\n" % (self.wids['e_color'].get_text())
     txt += "    Humedad: %s\n" % (self.wids['e_rizo'].get_text())
     loteCem = self.loteCem
     try:
         dtex = loteCem.bigbags[0].articulos[0].productoVenta.camposEspecificosBala.dtex
         tolerancia = loteCem.tolerancia
         mediatitulo = loteCem.mediatitulo
     except:
         utils.dialogo_info(titulo = 'ERROR', 
                            texto = 'Ocurrió un error buscando el tipo de fibra.', 
                            padre = self.wids['ventana'])
         dtex = 0
         tolerancia = 0
         mediatitulo = 0
     difmax = dtex * tolerancia
     diferencia = abs(mediatitulo - dtex)
     if round(diferencia, 2) > difmax:
         ok = False
     else:
         ok = True
     txt += "    Media de título: %s (%s)\n" % (self.wids['e_media'].get_text(), 
                                                ok and "dentro del %s%% de tolerancia" % utils.float2str(self.wids['sp_tolerancia'].get_value(), 0) 
                                                or "no cumple el %s%% de tolerancia" % utils.float2str(self.wids['sp_tolerancia'].get_value(), 0)
                                                )
     txt += "    Desviación típica: %s\n" % (self.wids['e_desvtipica'].get_text())
     txt += "\nResultados de las pruebas:\n"
     model = self.wids['tv_pruebas'].get_model()
     for fila in model:
         txt += "    %s\n" % (fila[0])
         txt += "        Título (dtex): %s\n" % (fila[1])
         txt += "        Alargamiento (%%): %s\n" % (fila[2])
         txt += "        Tenacidad (cN/tex): %s\n" % (fila[3])
         txt += "        Grasa (%%): %s\n" % (fila[4])
         txt += "        Encogimiento (%%): %s\n" % (fila[5])
         txt += "        Humedad (%%): %s\n" % (fila[6])
     buff = self.wids['txt_observaciones'].get_buffer()
     txt += "\nObervaciones: %s\n" % buff.get_text(buff.get_start_iter(), buff.get_end_iter())
     reports.abrir_pdf(geninformes.texto_libre(txt, "Resultados de laboratorio: %s" % (self.objeto and self.objeto.codigo or "")))
 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))