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