Esempio n. 1
0
def setter_textview(objeto, col, w):
    """
    Muestra el valor del atributo "col" del objeto
    "objeto" en el textview "w".
    """
    valor = getattr(objeto, col.name)
    if isinstance(col, sqlobject.col.SODateCol):
        valor = str_fecha(valor)
    elif isinstance(col, sqlobject.col.SODateTimeCol):
        valor = str_fechahoralarga(valor)
    elif isinstance(col, sqlobject.col.SOTimeCol):
        valor = str_hora(valor)
    elif isinstance(col, sqlobject.col.SOFloatCol):
        # XXX
        # HACK: Workaround. Los valores que son porcentaje (descuentos e IVA) 
        # se deben mostrar con el símbolo "%", pero la única manera de 
        # distinguir esas columnas es mirar el nombre.
        if col.name in NOMBRES_COLUMNAS_PORCENTAJE:
            valor = "%s %%" % float2str(valor * 100, 
                                        precision = 5, 
                                        autodec = True)
        # XXX
        else:
            valor = float2str(valor, autodec = False)
            # Si autodec=True y es número redondo > 1000 escribe 1.000 y el 
            # getter lo interpreta como flotante.
    if not isinstance(valor, str):
        valor = str(valor)
    buf = w.get_buffer()
    buf.set_text(valor)
Esempio n. 2
0
 def buscar_rollos(self, boton):
     """
     Busca los rollos de la partida actual a los que se les ha extraído 
     muestra.
     """
     if self.partida != None:
         rollos = [r for r in self.partida.rollos 
                   if r.muestra or "muestra" in r.observaciones.lower()]
         if rollos == []:
             utils.dialogo_info(titulo = "NO SE ENCONTRARON ROLLOS", 
                 texto = "No se econtraron muestras de rollos en los "
                         "partes implicados.", 
                 padre = self.wids['ventana'])
         else:
             filas = [(r.id, r.codigo, r.observaciones, 
                       "%s %s" % (utils.str_fecha(r.fechahora), 
                       utils.str_hora(r.fechahora))
                      ) 
                      for r in rollos]
             idrollo = utils.dialogo_resultado(filas, 
                 titulo = 'ROLLOS CON MUESTRA EN LA PARTIDA %s' % (
                             self.partida.codigo),
                 cabeceras = ('ID', 'Código', 'Observaciones', 
                              'Fecha y hora de fabricación'), 
                 padre = self.wids['ventana'])
             if idrollo != None and idrollo > 0:
                 rollo = pclases.Rollo.get(idrollo)
                 import trazabilidad_articulos
                 trazabilidad_articulos.TrazabilidadArticulos(
                     usuario = self.usuario, objeto = rollo)
Esempio n. 3
0
 def agregar_linea(self, model, linea):
     """
     Inserta en el model la línea recibida.
     """
     fecha = utils.str_fecha(linea[0])
     hora = utils.str_hora(linea[1])
     tipo = linea[2]
     usuario = linea[3]
     texto = linea[4]
     numlinea = linea[5]
     return model.append((fecha, hora, tipo, usuario, texto, numlinea))
Esempio n. 4
0
 def imprimir_totales(self, boton):
     """
     Exporta a PDF el TreeView de detalle.
     """
     tv = self.wids['tv_datos']
     from treeview2pdf import treeview2pdf
     from informes 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))
Esempio n. 5
0
 def imprimir(self, boton):
     """
     Exporta a PDF el TreeView de detalle.
     """
     tv = self.wids['tv_detalle']
     from treeview2pdf import treeview2pdf
     from informes import abrir_pdf
     strfecha = "%s - %s" % (utils.str_fecha(datetime.date.today()), 
                             utils.str_hora(datetime.datetime.today()))
     abrir_pdf(treeview2pdf(tv, 
         titulo = "Valoración de productos de compra en almacén.",
         fecha = strfecha, 
         apaisado = False))
Esempio n. 6
0
def edit_hora(cell, path, newtext, tv, numcol, clase, atributo):
    """
    Cambia el texto del model[path][numcol] y del objeto relacionado que 
    saca a partir del ID de la última columna del model.
    """
    model = tv.get_model()
    id = model[path][-1]
    objeto = clase.get(id)
    try:
        hora = utils.parse_hora(newtext)
    except (ValueError, TypeError):
        parent = tv.parent
        while parent != None:
            parent = parent.parent
        utils.dialogo_info(titulo = "ERROR EN HORA", 
            texto = "El texto «%s» no es una hora válida." % (newtext), 
            padre = parent)
    else:
        setattr(objeto, atributo, hora)  
        objeto.syncUpdate()
    model[path][numcol] = utils.str_hora(getattr(objeto, atributo))
Esempio n. 7
0
def col2value(objeto, col):
    """
    Convierte el valor del objeto a un formato legible en función de su 
    tipo de datos.
    """
    valor = getattr(objeto, col.name)
    if isinstance(col, pclases.SODateCol):    # Es DATE.
        return utils.str_fecha(valor)
    elif isinstance(col, pclases.SOStringCol):  # TEXT
        return valor 
    elif isinstance(col, pclases.SOFloatCol):   # FLOAT
        return utils.float2str(valor, autodec = True)
    elif isinstance(col, pclases.SOIntCol):     # INT
        return valor 
    elif isinstance(col, pclases.SOBoolCol):    # BOOLEAN
        return valor 
    elif isinstance(col, pclases.SOForeignKey): # Clave ajena. 
        return valor # and valor.id or ""
    elif isinstance(col, pclases.SOCol):          # Es TIMESTAMP o TIME
        if "timestamp" in str(col) or ("fecha" in col.name 
                                       and "hora" in col.name):
            return utils.str_fechahora(valor)
        else:
            return utils.str_hora(valor) 
 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(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 treeview2pdf import treeview2pdf
     from informes 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)