def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) # Inicialización del resto de widgets: empls = [(c.id, c.nombre) for c in pclases.Empleado.select(orderBy = "nombre")] utils.rellenar_lista(self.wids['cb_empleado'], empls) self.wids['b_guardar'] = gtk.Button("N/A") self.wids['b_guardar'].set_property("visible", False) self.wids['b_guardar'].set_sensitive(False) cols = (("Día", "gobject.TYPE_STRING", False, True, True, None), ("Rendimiento", "gobject.TYPE_STRING", False,True,False,None), ("Producción personal", "gobject.TYPE_STRING", False, True, False, None), ("Ratio diario", "gobject.TYPE_STRING", False, True, False, None), ("Media global", "gobject.TYPE_STRING", False, True, False, None), ("nihil", "gobject.TYPE_INT64", False, False, False, None)) tv = self.wids['tv_datos'] utils.preparar_listview(tv, cols) tv.get_column(1).get_cell_renderers()[0].set_property('xalign', 0.9) tv.get_column(2).get_cell_renderers()[0].set_property('xalign', 0.9) tv.get_column(3).get_cell_renderers()[0].set_property('xalign', 0.9) tv.get_column(4).get_cell_renderers()[0].set_property('xalign', 0.9) self.colorear(tv)
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) self.activar_widgets(False) # Inicialización del resto de widgets: cols = (('Código', 'gobject.TYPE_STRING', False, True, False, None), ('Descripción', 'gobject.TYPE_STRING', False, True, True, None), ('Cantidad', 'gobject.TYPE_STRING', True, True, False, self.cambiar_cantidad_ldv), ('IDLDV', 'gobject.TYPE_INT64', False, False, False, None) ) utils.preparar_treeview(self.wids['tv_ldvs'], cols) self.wids['tv_ldvs'].get_selection().set_mode(gtk.SELECTION_MULTIPLE) almacenes = [(a.id, a.nombre) for a in pclases.Almacen.select( pclases.Almacen.q.activo == True, orderBy = "id")] utils.rellenar_lista(self.wids['cbe_almacen'], almacenes)
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) # Inicialización del resto de widgets: camps = [(c.id, "%s - %s" % (utils.str_fecha(c.fechaInicio), utils.str_fecha(c.fechaFin))) for c in pclases.Campanna.select(orderBy = "fechaInicio")] utils.rellenar_lista(self.wids['cb_campanna'], camps) self.wids['b_guardar'] = gtk.Button("N/A") self.wids['b_guardar'].set_property("visible", False) self.wids['b_guardar'].set_sensitive(False) i = -1 anno_actual = mx.DateTime.localtime().year model = self.wids['cb_campanna'].get_model() for i in range(len(model)): if str(anno_actual) in model[i][1]: break # Y si el año no está, se queda en la última campaña. self.wids['cb_campanna'].set_active(i)
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). """ global fin Ventana.__init__(self, 'consulta_lotes_por_producto.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin, "b_exportar/clicked": self.exportar} self.add_connections(connections) cols = (('Num. Lote','gobject.TYPE_INT64',False,True,False,None), ('Código','gobject.TYPE_STRING',False,True,False,None), ('Tenacidad','gobject.TYPE_STRING',False,True,False,None), ('Elongación','gobject.TYPE_STRING',False,True,False,None), ('Rizo','gobject.TYPE_STRING',False,True,False,None), ('Encogimiento','gobject.TYPE_STRING',False,True,False,None), ('Grasa','gobject.TYPE_STRING',False,True,False,None), ('Idlote','gobject.TYPE_INT64',False,False,False,None)) utils.preparar_listview(self.wids['tv_datos'], cols) self.wids['tv_datos'].connect("row-activated", self.abrir_parte_tv) utils.rellenar_lista(self.wids['cmbe_producto'], [(p.id, p.nombre) for p in pclases.ProductoVenta.select(pclases.ProductoVenta.q.camposEspecificosBalaID != None, orderBy = 'nombre')]) temp = time.localtime() self.fin = mx.DateTime.localtime() self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) gtk.main()
def inicializar_ventana(self): """ Inicialización de controles de la ventana. """ self.wids['frame_observaciones'].set_property("visible", False) try: dde = pclases.DatosDeLaEmpresa.select()[0] if "Bogado" in dde.nombre: self.wids['frame_observaciones'].set_property("visible", True) except: pass self.activar_widgets(False) utils.rellenar_lista(self.wids['cbe_cuenta_origen'], [(c.id, "%s%s" % (c.ccc, c.nombre and " (%s)" % c.nombre or "")) for c in pclases.CuentaOrigen.select(orderBy = "nombre")]) utils.rellenar_lista(self.wids['cbe_cuenta_bancaria_cliente'], [(c.id, "%s%s%s%s (%s)" % ( c.cuenta, c.iban and " | IBAN: " + c.iban or "", c.swif and " | SWIF: " + c.swif or "", c.banco and " (%s)" % c.banco or "", c.cliente and c.cliente.nombre or "SIN CLIENTE")) for c in pclases.CuentaBancariaCliente.select(orderBy = "id")]) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True)
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). """ global fin Ventana.__init__(self, 'consulta_albaranes_clientes.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin, 'b_exportar/clicked': self.exportar} self.add_connections(connections) utils.rellenar_lista(self.wids['cmbe_cliente'], [(c.id, c.nombre) for c in pclases.Cliente.select(orderBy='nombre')]) cols = (('Cliente','gobject.TYPE_STRING',False,True,False,None), ('Fecha','gobject.TYPE_STRING',False,True,False,None), ('Albarán','gobject.TYPE_STRING',False,True,False,None), ('Destinatario','gobject.TYPE_STRING',False,True,False,None), ('Facturado', 'gobject.TYPE_BOOLEAN', False, True, False, None), ('Facturas', 'gobject.TYPE_STRING', False, True, False, None), ('Idalbaran','gobject.TYPE_INT64',False,False,False,None)) utils.preparar_listview(self.wids['tv_datos'], cols) self.wids['tv_datos'].connect("row-activated", self.abrir_albaran) temp = time.localtime() self.fin = str(temp[0])+'/'+str(temp[1])+'/'+str(temp[2]) self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) gtk.main()
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). """ self.grafico = None Ventana.__init__(self, 'historico_existencias.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_fecha/clicked': self.set_fecha, 'b_imprimir/clicked': self.imprimir, 'b_actualizar/clicked': self.cambiar_grafico, } self.add_connections(connections) self.wids['ventana'].set_title( "Histórico de existencias de productos de compra") fechactual = mx.DateTime.localtime() fechactual = mx.DateTime.DateTimeFrom( day = 1, month = fechactual.month, year = fechactual.year) primero_de_mes_corriente = utils.str_fecha(fechactual) self.wids['e_fecha'].set_text(primero_de_mes_corriente) opciones = [(p.id, p.descripcion) for p in pclases.ProductoCompra.select( pclases.ProductoCompra.q.obsoleto == False, orderBy = "descripcion") if p.controlExistencias] opciones.insert(0, (-3, "Toda la materia prima")) opciones.insert(0, (-2, "Toda la granza")) opciones.insert(0, (-1, "Todos (escala logarítmica)")) utils.rellenar_lista(self.wids['cbe_grafico'], opciones) gtk.main()
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) # Inicialización del resto de widgets: utils.rellenar_lista(self.wids['cb_material'],[(t.id, t.descripcion) for t in pclases.TipoMaterialBala.select()]) cols = (('Tarifa', 'gobject.TYPE_STRING', False, True, True, None), ('Precio', 'gobject.TYPE_FLOAT', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(self.wids['tv_tarifas'], cols) try: dde_nombre = pclases.DatosDeLaEmpresa.select()[0].nombre except IndexError: dde_nombre = "" clientes = ((0, dde_nombre), ) for cliente in pclases.Cliente.select( pclases.Cliente.q.inhabilitado == False, orderBy = "nombre"): clientes += ((cliente.id, "%s (%s)" % (cliente.nombre, cliente.cif)), ) utils.rellenar_lista(self.wids['cbe_cliente'], clientes) # HACK: Como glade-gtk2 ya no me abre el glade ni desde la 3.8.4: self.add_campo_obsoleto()
def __init__(self, objeto = None, usuario = None): self.usuario = usuario Ventana.__init__(self, 'balas_cable.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_aplicar/clicked': self.actualizar_tabla, 'b_add/clicked': self.crear_bala, 'b_drop/clicked': self.drop_or_print, 'b_etiqueta/clicked': self.drop_or_print, 'b_mes/clicked': self.cambiar_mes_acumulado } self.add_connections(connections) productos_cable = [] for ceb in pclases.CamposEspecificosBala.select( pclases.CamposEspecificosBala.q.reciclada == True): try: obsoleto = ceb.productosVenta[0].obsoleto except AttributeError: obsoleto = False # Versión antigua de la BD if not obsoleto: productos_cable.append( (ceb.productosVenta[0].id, ceb.productosVenta[0].descripcion)) productos_cable.sort( lambda p1, p2: (p1[-1] < p2[-1] and -1) or (p1[-1] > p2[-1] and 1) or 0) utils.rellenar_lista(self.wids['cbe_producto'], productos_cable) self.wids['sp_ver'].set_value(15) self.preparar_tv(self.wids['tv_balas']) self.actualizar_tabla() gtk.main()
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). """ self.usuario = usuario global fin Ventana.__init__(self, 'consulta_pedidos_clientes.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin, 'b_exportar/clicked': self.exportar} self.add_connections(connections) utils.rellenar_lista(self.wids['cmbe_cliente'], [(c.id, c.nombre) for c in pclases.Cliente.select(orderBy='nombre')]) cols = (('Código', 'gobject.TYPE_STRING', False, True, False, None), ('Descripción', 'gobject.TYPE_STRING', False,True,False,None), ('Precio s/IVA', 'gobject.TYPE_STRING', False,True,False,None), ('ID', 'gobject.TYPE_STRING', False, False, False, None)) utils.preparar_listview(self.wids['tv_datos'], cols) col = self.wids['tv_datos'].get_column(2) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) self.wids['tv_datos'].connect("row-activated", self.abrir_producto) temp = time.localtime() self.fin = str(temp[0])+'/'+str(temp[1])+'/'+str(temp[2]) self.wids['e_fecha_fin'].set_text(utils.str_fecha(temp)) if objeto != None: utils.combo_set_from_db(self.wids["cmbe_cliente"], objeto.id) self.wids["b_buscar"].clicked() self.wids['hbox4'].set_property("visible", False) self.wids['ventana'].set_title("Productos facturados al cliente") gtk.main()
def __init__(self, mes = None, anno = None, ldp = None, solo_lectura = False, usuario = None): """ Constructor. objeto puede ser un objeto de pclases de la línea de producción con la que comenzar la ventana. """ self.escritura = not solo_lectura Ventana.__init__(self, 'calendario_laboral.glade', None, usuario = usuario) connections = {'b_salir/clicked': self.salir } self.add_connections(connections) self.cal = [] # Los Gtk.Table no tienen método para acceder a los hijos por fila y columna (flipa!). # Así que los iré guardando aquí para poderlos crear y destruir sobre la marcha. utils.rellenar_lista(self.wids['cbe_linea'], [(l.id, l.nombre) for l in pclases.LineaDeProduccion.select(orderBy='nombre')]) if mes == None: mes = mx.DateTime.localtime().month if anno == None: anno = mx.DateTime.localtime().year self.wids['sp_mes'].set_value(mes) self.wids['sp_anno'].set_value(anno) self.wids['cbe_linea'].connect('changed', self.rellenar_widgets) self.wids['sp_mes'].connect('value-changed', self.rellenar_widgets) self.wids['sp_anno'].connect('value-changed', self.rellenar_widgets) if ldp == None: utils.combo_set_from_db(self.wids['cbe_linea'], pclases.LineaDeProduccion.select(orderBy='nombre')[0].id) else: utils.combo_set_from_db(self.wids['cbe_linea'], ldp.id) gtk.main()
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). """ Ventana.__init__(self, 'busca_lote.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_ayuda/clicked': self.ayuda} self.add_connections(connections) cols = (('Num. Lote','gobject.TYPE_INT64',False,True,False,None), ('Código','gobject.TYPE_STRING',False,True,False,None), ('Tenacidad','gobject.TYPE_STRING',False,True,False,None), ('Elongación','gobject.TYPE_STRING',False,True,False,None), ('Rizo','gobject.TYPE_STRING',False,True,False,None), ('Encogimiento','gobject.TYPE_STRING',False,True,False,None), ('Idlote','gobject.TYPE_INT64',False,False,False,None)) utils.preparar_listview(self.wids['tv_resultado'], cols) utils.rellenar_lista(self.wids['cmbe_producto'], [(p.id, p.nombre) for p in pclases.ProductoVenta.select(pclases.ProductoVenta.q.camposEspecificosBalaID != None, orderBy = 'nombre')]) self.rellenar_tabla() # Valores por defecto: self.wids['e_tenacidad'].set_text('A') self.wids['e_elongacion'].set_text('A') self.wids['e_rizo'].set_text('6-7') self.wids['e_encogimiento'].set_text('A') self.wids['chk_tenacidad'].set_active(True) self.wids['chk_elongacion'].set_active(True) self.wids['chk_rizo'].set_active(True) self.wids['chk_encogimiento'].set_active(True) self.wids['chk_producto'].set_active(True) gtk.main()
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) self.wids['ventana'].set_title(self.clase.sqlmeta.table.upper()) # Inicialización del resto de widgets: cols = (('Código', 'gobject.TYPE_STRING', False, True, True, None), ('Concepto', 'gobject.TYPE_STRING', False, True, False, None), ('Fecha', 'gobject.TYPE_STRING', False, True, False, None), ('Importe', 'gobject.TYPE_STRING', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) # La última columna (oculta en la Vista) siempre es el id. utils.preparar_listview(self.wids['tv_gastos'], cols) utils.rellenar_lista(self.wids['cbe_proveedorID'], [(p.id, p.nombre) for p in pclases.Proveedor.select(orderBy = "nombre")])
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). """ global fin Ventana.__init__(self, 'consulta_entradas_almacen.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_producto/clicked': self.buscar_producto, 'b_fecha_fin/clicked': self.set_fin} self.add_connections(connections) utils.rellenar_lista(self.wids['cmbe_proveedor'], [(c.id, c.nombre) for c in pclases.Proveedor.select(orderBy='nombre')]) cols = (('Proveedor', 'gobject.TYPE_STRING', False, True, False, None), ('Albarán', 'gobject.TYPE_STRING', False, True, True, None), ('Fecha', 'gobject.TYPE_STRING', False, True, False, None), ('Producto', 'gobject.TYPE_STRING', False, True, True, None), ('Cantidad', 'gobject.TYPE_FLOAT', False, True, False, None), ('Precio', 'gobject.TYPE_FLOAT', False, True, False, None), ('Subtotal', 'gobject.TYPE_FLOAT', False, True, False, None), ('idldc','gobject.TYPE_STRING',False,False,False,None)) utils.preparar_listview(self.wids['tv_datos'], cols) for ncol in (4, 5, 6): col = self.wids['tv_datos'].get_column(ncol) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) temp = time.localtime() self.fin = mx.DateTime.DateTimeFrom(day = temp[2], month = temp[1], year = temp[0]) self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) self.producto = None gtk.main()
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). """ global fin Ventana.__init__(self, 'consulta_ventas.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin} self.add_connections(connections) cols = (('Cliente','gobject.TYPE_STRING',False,True,False,None), ('Factura','gobject.TYPE_STRING',False,True,True,None), ('Fecha','gobject.TYPE_STRING',False,True,False,None), ('Total','gobject.TYPE_STRING',False,True,False,None), ('Beneficio','gobject.TYPE_STRING',False,True,False,None), ('Pendiente','gobject.TYPE_STRING',False,True,False,None), ('Id','gobject.TYPE_INT64',False,False,False,None)) utils.preparar_treeview(self.wids['tv_datos'], cols) self.wids['tv_datos'].connect("row-activated", self.abrir_prefactura) self.wids['tv_datos'].get_column(3).get_cell_renderers()[0].set_property('xalign', 1) self.wids['tv_datos'].get_column(4).get_cell_renderers()[0].set_property('xalign', 1) self.wids['tv_datos'].get_column(5).get_cell_renderers()[0].set_property('xalign', 1) temp = time.localtime() self.fin = str(temp[0])+'/'+str(temp[1])+'/'+str(temp[2]) self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) self.metros_totales = 0.0 self.kilos_totales = 0.0 opciones = [(c.id, c.nombre) for c in pclases.Cliente.select(orderBy = "nombre")] opciones.insert(0, (-1, "Todos")) utils.rellenar_lista(self.wids['cbe_cliente'], opciones) utils.combo_set_from_db(self.wids['cbe_cliente'], -1) self.wids['label7'].set_text("Total beneficio estimado: ") #self.wids['label7'].set_property("visible", False) #self.wids['e_total_kilos'].set_property("visible", False) self.wids['label8'].set_property("visible", False) self.wids['e_total_metros'].set_property("visible", False) self.wids['label9'].set_property("visible", False) self.wids['cbe_cliente'].set_property("visible", False) self.wids['ventana'].set_title("Listado de prefacturas") self.wids['notebook1'].remove_page(1) self.wids['label1'].set_text("Por cliente") labpdte = gtk.Label("Total pendiente:") labpdte.show() self.wids['hbox4'] = gtk.HBox() self.wids['hbox4'].add(labpdte) self.wids['e_totpdte'] = gtk.Entry() self.wids['e_totpdte'].set_property("editable", False) self.wids['e_totpdte'].set_property("has-frame", False) self.wids['hbox4'].add(self.wids['e_totpdte']) self.wids['hbox4'].show_all() self.wids['vbox2'].add(self.wids['hbox4']) self.wids['vbox2'].reorder_child(self.wids['hbox4'], 2) self.wids['e_totpdte'].show() gtk.main()
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). """ self.usuario = usuario Ventana.__init__(self, 'consulta_pedidos_clientes.glade', objeto, usuario=usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_fecha, 'b_fecha_fin/clicked': self.set_fecha, 'b_exportar/clicked': self.exportar, 'e_fecha_inicio/focus-out-event': act_fecha, 'e_fecha_fin/focus-out-event': act_fecha, } self.add_connections(connections) utils.rellenar_lista(self.wids['cmbe_cliente'], [(c.id, c.nombre) for c in pclases.Cliente.select(orderBy='nombre')]) cols = (('Cliente', 'gobject.TYPE_STRING', False, True, False, None), ('Fecha', 'gobject.TYPE_STRING', False, True, False, None), ('Pedido', 'gobject.TYPE_STRING', False, True, False, None), ('Producto', 'gobject.TYPE_STRING', False, True, False, None), ('Cantidad\npedida', 'gobject.TYPE_STRING', False, True, False, None), ('Cantidad\nservida', 'gobject.TYPE_STRING', False, True, False, None), ('Importe\npedido\n(c/IVA)', 'gobject.TYPE_STRING', False, True, False, None), ('Importe\nservido\n(c/IVA)', 'gobject.TYPE_STRING', False, True, False, None), ("Bloqueado", "gobject.TYPE_BOOLEAN", False, True, False, None), ("Cerrado", "gobject.TYPE_BOOLEAN", False, True, False, None), ('PUIDPEDIDO;PUIDPRODUCTO', 'gobject.TYPE_STRING', # HACK False, False, False, None)) utils.preparar_listview(self.wids['tv_datos'], cols) for ncol in (4, 5, 6, 7): col = self.wids['tv_datos'].get_column(ncol) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) for col in self.wids['tv_datos'].get_columns(): col.connect("clicked", self.order_changed_refresh_grafica) self.wids['tv_datos'].connect("row-activated", self.abrir_pedido) self.resultado = [] self.fin = utils.str_fecha(datetime.date.today()) self.inicio = None self.wids['e_fecha_fin'].set_text(self.fin) self.wids['e_fecha_inicio'].set_text("") if objeto != None: utils.combo_set_from_db(self.wids["cmbe_cliente"], objeto.id) self.wids["b_buscar"].clicked() self.add_widgets_extra() self.servido_por_producto = defaultdict(lambda: 0) self.wids['cmbe_cliente'].grab_focus() gtk.main()
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) self.wids['ventana'].set_title(self.clase.sqlmeta.table.upper()) # Inicialización del resto de widgets: cols = (('Producto', 'gobject.TYPE_STRING', False, True, False, None), ('Cantidad', 'gobject.TYPE_STRING', True, True, False, self.cambiar_cantidad), ('Precio', 'gobject.TYPE_STRING', True, True, False, self.cambiar_precio), ('Importe s/IVA', 'gobject.TYPE_STRING',False,True,False,None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(self.wids['tv_ldvs'], cols, multi = True) cols = (('Cantidad', 'gobject.TYPE_DOUBLE', True, True, False, self.cambiar_cantidad_srv), ('Concepto', 'gobject.TYPE_STRING', True, True, True, self.cambiar_concepto_srv), ('Precio', 'gobject.TYPE_DOUBLE', True, True, False, self.cambiar_precio_srv), ('Descuento', 'gobject.TYPE_DOUBLE', True, True, False, self.cambiar_descuento_srv), ('Total', 'gobject.TYPE_DOUBLE', False, True, False, None), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) utils.preparar_listview(self.wids['tv_servicios'], cols) clientes = [(c.id, "%s (%s)" % (c.nombre, c.cif)) for c in pclases.Cliente.select(orderBy = "nombre")] utils.rellenar_lista(self.wids['cbe_clienteID'], clientes) proveedores = [(p.id, "%s (%s)" % (p.nombre, p.cif)) for p in pclases.Proveedor.select(orderBy = "nombre")] utils.rellenar_lista(self.wids['cbe_proveedorID'], proveedores) cols = (("Fecha", "gobject.TYPE_STRING", True, True, True, self.cambiar_fecha_vto), ("Cantidad", "gobject.TYPE_STRING", True, True, False, self.cambiar_importe_vto), ("ID", "gobject.TYPE_INT64", False, False, False, None)) utils.preparar_listview(self.wids['tv_vencimientos'], cols) #cols = (("Fecha", "gobject.TYPE_STRING", True, True, True, # self.cambiar_fecha_cobro), # ("Cantidad", "gobject.TYPE_STRING", True, True, False, # self.cambiar_importe_cobro), # ("Observaciones", "gobject.TYPE_STRING", True, True, False, # self.cambiar_observaciones_cobro), # ("ID", "gobject.TYPE_INT64", False, False, False, None)) #utils.preparar_listview(self.wids['tv_cobros'], cols) # TODO: ¿Las facturas de otros proveedores se imprimen como propias? # "Pa" mí que no, así que deshabilito. self.wids['b_imprimir'].set_property("visible", False)
def build_widget_valor(col): """ Recibe un objeto de la familia SOCol y devuelve el widget adecuado para mostrar su valor. Si es un texto, entero o float: entry. Si es un boolean: checkbutton. Si es una fecha: entry con un botón para mostrar el calendario. Si es un ForeignKey, usar un ComboBoxEntry con utils.rellenar... con las tuplas de la tabla referenciada. """ box = None # Posible contenedor externo. if isinstance(col, pclases.SOStringCol): w = gtk.Entry() w.set_name(col.name) elif isinstance(col, pclases.SOIntCol): w = gtk.Entry() w.set_name(col.name) elif isinstance(col, pclases.SOFloatCol): w = gtk.Entry() w.set_name(col.name) elif isinstance(col, pclases.SOBoolCol): w = gtk.CheckButton() w.set_name(col.name) elif isinstance(col, pclases.SODateCol): box = gtk.HBox() w = gtk.Entry() w.set_name(col.name) button = gtk.Button(label = "Buscar _fecha") button.connect("clicked", lambda boton: w.set_text(utils.str_fecha(utils.mostrar_calendario()))) button.set_name("b_%s" % (col.name)) box.add(w) box.add(button) elif isinstance(col, pclases.SOForeignKey): w = gtk.ComboBoxEntry() w.set_name(col.name) tablajena = col.foreignKey clase_tablajena = getattr(pclases, tablajena) func_select = getattr(clase_tablajena, "select") datos = [] for reg in func_select(): campos = [] for columna in clase_tablajena.sqlmeta.columns: valor = getattr(reg, columna) campos.append(`valor`) info = ", ".join(campos) # info = reg.get_info() datos.append((reg.id, info)) utils.rellenar_lista(w, datos) else: w = gtk.Entry() w.set_name(col.name) return w, box
def _construir_model_a(self, widget, col): """ Averigua la fuente del widget según el nombre de la columna recibida y asocia un model sencillo al widget, que debe ser un ComboBox[Entry]. """ from framework import pclases nomclase = col.name.replace("ID", "") nomclase = nomclase[0].upper() + nomclase[1:] clase = getattr(pclases, nomclase) primera_col = clase.sqlmeta.columnList[0].name filas = [(r.id, getattr(r, primera_col)) for r in clase.select(orderBy=primera_col)] rellenar_lista(widget, filas)
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) self.wids['ventana'].set_title(self.clase.sqlmeta.table.upper()) # Inicialización del resto de widgets: utils.rellenar_lista(self.wids['cbe_cuentaGastosID'], [(p.id, p.descripcion) for p in pclases.CuentaGastos.select(orderBy = "descripcion")]) utils.rellenar_lista(self.wids['cbe_parcelaID'], [(p.id, p.parcela) for p in pclases.Parcela.select(orderBy = "parcela")]) utils.rellenar_lista(self.wids['cbe_facturaCompraID'], [(p.id, p.numfactura) for p in pclases.FacturaCompra.select(orderBy = "numfactura")]) return # XXX: Aquí generalmente se inicializan los TreeViews y combos. cols = (('XXXNombreCol', 'gobject.TYPE_STRING', XXXEditable, XXXOrdenable, XXXBuscable, XXXCallbackEdicion), ('ID', 'gobject.TYPE_INT64', False, False, False, None)) # La última columna (oculta en la Vista) siempre es el id. utils.preparar_listview(self.wids['XXXtv_treeview'], cols) utils.rellenar_lista(self.wids['XXXcbe_comboboxentry'], [(p.id, p.XXXcampo) for p in pclases.XXXClase.select(orderBy = "XXXcampo")])
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). """ global fin Ventana.__init__(self, "consulta_partidas_por_producto.glade", objeto, usuario=usuario) connections = { "b_salir/clicked": self.salir, "b_buscar/clicked": self.buscar, "b_imprimir/clicked": self.imprimir, "b_fecha_inicio/clicked": self.set_inicio, "b_fecha_fin/clicked": self.set_fin, "b_exportar/clicked": self.exportar, } self.add_connections(connections) cols = ( ("Num. Partida", "gobject.TYPE_INT64", False, True, False, None), ("Código", "gobject.TYPE_STRING", False, True, False, None), ("Fecha fab.", "gobject.TYPE_STRING", False, True, False, None), ("Longitudinal", "gobject.TYPE_STRING", False, True, False, None), ("Transversal", "gobject.TYPE_STRING", False, True, False, None), ("Compresión", "gobject.TYPE_STRING", False, True, False, None), ("Perforación", "gobject.TYPE_STRING", False, True, False, None), ("Permeabilidad", "gobject.TYPE_STRING", False, True, False, None), ("Poros", "gobject.TYPE_STRING", False, True, False, None), ("Espesor", "gobject.TYPE_STRING", False, True, False, None), ("Piramidal", "gobject.TYPE_STRING", False, True, False, None), ("Idpartida", "gobject.TYPE_INT64", False, False, False, None), ) utils.preparar_listview(self.wids["tv_datos"], cols) self.wids["tv_datos"].connect("row-activated", self.abrir_parte_tv) utils.rellenar_lista( self.wids["cmbe_producto"], [ (p.id, p.descripcion) for p in pclases.ProductoVenta.select( pclases.ProductoVenta.q.camposEspecificosRolloID != None, orderBy="descripcion" ) ], ) temp = time.localtime() self.fin = mx.DateTime.localtime() self.inicio = None self.resultado = [] self.wids["e_fechafin"].set_text(utils.str_fecha(temp)) gtk.main()
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) series = [(s.id, s.get_next_numfactura()) for s in pclases.SerieFacturasVenta.select(orderBy = "prefijo")] utils.rellenar_lista(self.wids['cb_serieFacturasVentaID'], series)
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). """ self.usuario = usuario Ventana.__init__(self, 'consulta_saldo_proveedores.glade', objeto, usuario=usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_fecha, 'b_fecha_fin/clicked': self.set_fecha, 'b_exportar/clicked': self.exportar, 'e_fecha_inicio/focus-out-event': act_fecha, 'e_fecha_fin/focus-out-event': act_fecha, } self.add_connections(connections) utils.rellenar_lista(self.wids['cmbe_proveedor'], [(0, "Todos")] + [(c.id, c.nombre) for c in pclases.Proveedor.select(orderBy='nombre')]) cols = (('Proveedor', 'gobject.TYPE_STRING', False, True, False, None), ('Factura', 'gobject.TYPE_STRING', False, True, False, None), ('Fecha', 'gobject.TYPE_STRING', False, True, False, None), ('Importe', 'gobject.TYPE_STRING', False, True, False, None), ('Vencimientos', 'gobject.TYPE_STRING', False, True, False, None), ('Pagado', 'gobject.TYPE_STRING', False, True, False, None), ('Pendiente', 'gobject.TYPE_STRING', False, True, False, None), ('DBPUID', 'gobject.TYPE_STRING', False, False, False, None)) utils.preparar_treeview(self.wids['tv_datos'], cols) for ncol in (3, 4, 5, 6): col = self.wids['tv_datos'].get_column(ncol) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) self.wids['tv_datos'].connect("row-activated", self.abrir_objeto) self.resultado = [] self.fin = utils.str_fecha(datetime.date.today()) self.inicio = None self.wids['e_fecha_fin'].set_text(self.fin) self.wids['e_fecha_inicio'].set_text("") if objeto != None: utils.combo_set_from_db(self.wids["cmbe_proveedor"], objeto.id) self.wids["b_buscar"].clicked() self.wids['cmbe_proveedor'].grab_focus() gtk.main()
def __init__(self, objeto = None, usuario = None): self.usuario = usuario Ventana.__init__(self, 'consulta_existencias_por_tipo.glade', objeto, self.usuario) connections = {'b_salir/clicked': self.salir, 'b_actualizar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_exportar/clicked': self.exportar, 'cb_almacen/changed': self.buscar} self.add_connections(connections) for nomtv in ("tv_fibra", "tv_gtx", "tv_cemento"): cols = [ ('Producto', 'gobject.TYPE_STRING', False, True, True, None),#0 ('A (Kg)', 'gobject.TYPE_STRING', False, True, False, None), ('A (#)', 'gobject.TYPE_STRING', False, True, False, None), ('B (Kg)', 'gobject.TYPE_STRING', False, True, False, None), ('B (#)', 'gobject.TYPE_STRING', False, True, False, None), ('C (Kg)', 'gobject.TYPE_STRING', False, True, False, None), ('C (#)', 'gobject.TYPE_STRING', False, True, False, None), ('Total (Kg)', 'gobject.TYPE_STRING', False, True, False, None), ('Total (#)', 'gobject.TYPE_STRING', False, True, False, None), ('PUID', 'gobject.TYPE_STRING', False, False, False, None)]#(5) if nomtv == "tv_gtx": cols.insert(2, ('A (m²)', 'gobject.TYPE_STRING', False, True, False, None)) cols.insert(5, ('B (m²)', 'gobject.TYPE_STRING', False, True, False, None)) cols.insert(8, ('C (m²)', 'gobject.TYPE_STRING', False, True, False, None)) cols.insert(11, ('Total (m²)', 'gobject.TYPE_STRING', False, True, False, None)) tv = self.wids[nomtv] utils.preparar_listview(tv, cols) tv.connect("row-activated", self.abrir_objeto) for ncol in range(1, len(cols) - 1): col = tv.get_column(ncol) col.get_cell_renderers()[0].set_property('xalign', 1.0) col = tv.get_column(0) col.set_expand(True) almacenes = pclases.Almacen.select( pclases.Almacen.q.activo == True, orderBy = "id") opciones = [(0, "Todos")] + [(a.id, a.nombre) for a in almacenes] utils.rellenar_lista(self.wids['cb_almacen'], opciones) utils.combo_set_from_db(self.wids['cb_almacen'], 0) gtk.main()
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) self.wids['ventana'].set_title(self.clase.sqlmeta.table.upper()) utils.rellenar_lista(self.wids['cbe_envaseID'], [(e.id, e.nombre) for e in pclases.Envase.select(orderBy = "nombre")])
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) # Inicialización del resto de widgets: cols = (('Confirmado', 'gobject.TYPE_BOOLEAN', True, True, False, self.confirmar_efecto), ('Código', 'gobject.TYPE_STRING', False, True, True, None), ('Cliente', 'gobject.TYPE_STRING', False, True, False, None), ('Importe', 'gobject.TYPE_STRING', False, True, False, None), ('PUID', 'gobject.TYPE_STRING', False, False, False, None)) # La última columna (oculta en la Vista) siempre es el id. utils.preparar_listview(self.wids['tv_efectos'], cols, multi = True) col_confirmado = self.wids['tv_efectos'].get_column(0) ch_todos = gtk.CheckButton("Todos") ch_todos.connect("clicked", self.marcar_todos) ch_todos.show() col_confirmado.set_property("widget", ch_todos) cols = (('Porcentaje','gobject.TYPE_STRING', False, True, False, None), ('Cliente', 'gobject.TYPE_STRING', False, True, True, None), ('Importe', 'gobject.TYPE_STRING', False, True, False, None), ('PUID cliente', 'gobject.TYPE_STRING', False, False, False, None)) utils.preparar_listview(self.wids['tv_concentracion'], cols) utils.rellenar_lista(self.wids['cb_banco'], [(p.id, p.nombre) for p in pclases.Banco.select(orderBy = "nombre")]) self.wids['tv_efectos'].connect("row-activated", self.abrir_efecto) col = self.wids['tv_efectos'].get_column(3) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) self.wids['ch_aceptada'].set_sensitive(False) self.wids['b_confirmar'].set_sensitive( self.objeto and not self.objeto.aceptada or False) self.wids['b_add_efecto'].set_sensitive( self.objeto and not self.objeto.aceptada or False)
def rellenar_widgets(self): """ Introduce la información de la cuenta actual en los widgets. No se chequea que sea != None, así que hay que tener cuidado de no llamar a esta función en ese caso. """ utils.rellenar_lista(self.wids['cb_precioID'], [(p.id, "%s (%s)" % ( utils.float2str(p.get_importe()), p.tarifa and p.tarifa.nombre or "Sin tarifa")) for p in self.objeto.precios]) adaptadores = self.adaptador.get_adaptadores() for col in adaptadores.keys(): adaptadores[col]['mostrar'](self.objeto) self.objeto.make_swap() self.wids['ventana'].set_title(self.objeto.get_info())
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). """ self.usuario = usuario global fin Ventana.__init__(self, 'consulta_vencimientos_cobro.glade', objeto, usuario = usuario) connections = {'b_salir/clicked': self.salir, 'b_buscar/clicked': self.buscar, 'b_imprimir/clicked': self.imprimir, 'b_fecha_inicio/clicked': self.set_inicio, 'b_fecha_fin/clicked': self.set_fin, 'b_exportar/clicked': self.exportar} self.add_connections(connections) utils.rellenar_lista(self.wids['cmbe_cliente'], [(c.id, c.nombre) for c in pclases.Cliente.select(orderBy='nombre')]) cols = (('Factura','gobject.TYPE_STRING',False,True, False,None), ('Fecha vto.','gobject.TYPE_STRING',False,True,False,None), ('Importe','gobject.TYPE_STRING',False,False,False,None), ('Observaciones/Forma de cobro','gobject.TYPE_STRING',False,True, False,None), ('Cliente', 'gobject.TYPE_STRING', False, True, True, None), ('id','gobject.TYPE_STRING',False,False,False,None)) utils.preparar_listview(self.wids['tv_datos'], cols) self.wids['tv_datos'].connect("row-activated", self.abrir_factura) self.colorear(self.wids['tv_datos']) col = self.wids['tv_datos'].get_column(2) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) self.wids['tv_datos'].connect('button_press_event', self.button_clicked) self.wids['tv_datos'].set_hover_selection(True) cols = (('Año y mes','gobject.TYPE_STRING', False,True, True, None), ('Total','gobject.TYPE_STRING', False, True, False, None), ('nada','gobject.TYPE_STRING', False, False, False, None)) utils.preparar_treeview(self.wids['tv_totales'], cols) col = self.wids['tv_totales'].get_column(1) for cell in col.get_cell_renderers(): cell.set_property("xalign", 1) temp = time.localtime() self.fin = mx.DateTime.DateTimeFrom(day = temp[2], month = temp[1], year = temp[0]) self.wids['e_fechafin'].set_text(utils.str_fecha(temp)) self.inicio = mx.DateTime.DateTimeFrom(day = 1, month = mx.DateTime.localtime().month, year = mx.DateTime.localtime().year) self.wids['e_fechainicio'].set_text(utils.str_fecha(self.inicio)) gtk.main()
def inicializar_ventana(self): """ Inicializa los controles de la ventana, estableciendo sus valores por defecto, deshabilitando los innecesarios, rellenando los combos, formateando el TreeView -si lo hay-... """ # Inicialmente no se muestra NADA. Sólo se le deja al # usuario la opción de buscar o crear nuevo. self.activar_widgets(False) self.wids['b_actualizar'].set_sensitive(False) self.wids['b_guardar'].set_sensitive(False) self.wids['b_nuevo'].set_sensitive(True) self.wids['b_buscar'].set_sensitive(True) provs = pclases.Proveedor.select(orderBy = 'nombre') lista_provs = [(p.id, p.nombre) for p in provs if not p.inhabilitado] utils.rellenar_lista(self.wids['cmbe_proveedor'], lista_provs) lista_alms = [(a.id, a.nombre) for a in pclases.Almacen.select( pclases.Almacen.q.activo == True, orderBy = "id")] utils.rellenar_lista(self.wids['cbe_almacenID'], lista_alms) # Inicialización del resto de widgets: cols = (('Código', 'gobject.TYPE_STRING', False, True, False, None), ('Descripción', 'gobject.TYPE_STRING', False,True,False,None), ('Cantidad recibida', 'gobject.TYPE_STRING', True, True, False, self.cambiar_cantidad), ('Precio s/IVA', 'gobject.TYPE_STRING', True, True, False, self.cambiar_precio), ('IVA', 'gobject.TYPE_STRING', True, True, False, self.cambiar_iva), ('Descuento', 'gobject.TYPE_STRING', True, True, False, self.cambiar_descuento_ldc), ('Total línea', 'gobject.TYPE_STRING', False,True,False,None), ('Silo', 'gobject.TYPE_STRING', False, True, False, None), ('pedido en', 'gobject.TYPE_STRING', False, True, False, None), ('con fecha', 'gobject.TYPE_STRING', False, True, False, None), ('IDProducto', 'gobject.TYPE_INT64', False, False, False, None) ) utils.preparar_listview(self.wids['tv_ldvs'], cols) for n in (2, 3, 4, 5, 7): for cell in self.wids['tv_ldvs'].get_column(n).get_cell_renderers(): cell.set_property('xalign', 1.0) self.cambiar_por_combo(self.wids['tv_ldvs'], 7)
def rellenar_widgets(self): """ Introduce la información del cuenta actual en los widgets. No se chequea que sea != None, así que hay que tener cuidado de no llamar a esta función en ese caso. """ if self.objeto.facturaCompra and self.objeto.facturaCompra.proveedor != self.objeto.proveedor: # Cuando hay que recurrir a estas cosas, es que el diseño no es bueno. self.objeto.facturaCompra = None if self.objeto.proveedorID != None: # Meto en las cuentas sólo las del proveedor de la transferencia. utils.rellenar_lista(self.wids['cbe_destino'], [(p.id, p.nombre + " " + p.cuenta) for p in pclases.CuentaDestino.select(pclases.CuentaDestino.q.proveedorID == self.objeto.proveedor.id, orderBy = "nombre")]) else: utils.rellenar_lista(self.wids['cbe_destino'], [(p.id, p.nombre + " " + p.cuenta) for p in pclases.CuentaDestino.select(orderBy = "nombre")]) for nombre_col in self.dic_campos: self.escribir_valor(self.objeto.sqlmeta.columns[nombre_col], getattr(self.objeto, nombre_col), self.dic_campos[nombre_col]) self.wids['e_factura'].set_text(self.objeto.concepto) self.objeto.make_swap()