예제 #1
0
 def refinar_resultados_busqueda(self, resultados):
     """
     Muestra en una ventana de resultados todos los
     registros de "resultados".
     Devuelve el id (primera columna de la ventana
     de resultados) de la fila seleccionada o None
     si se canceló.
     """
     filas_res = []
     for r in resultados:
         filas_res.append((r.id, 
                           r.numalbaran, 
                           utils.str_fecha(r.fecha), 
                           r.proveedor != None and r.proveedor.nombre or ""
                          ))
     idalbaran = utils.dialogo_resultado(filas_res, 
         titulo = 'SELECCIONE ALBARÁN', 
         cabeceras = ('ID Interno', 
                      'Número de albarán', 
                      'Fecha', 
                      'Proveedor'), 
         padre = self.wids['ventana'])
     if idalbaran < 0:
         return None
     else:
         return idalbaran
예제 #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)
예제 #3
0
 def refinar_resultados_busqueda(self, resultados):
     """
     Muestra en una ventana de resultados todos los
     registros de "resultados".
     Devuelve el id (primera columna de la ventana
     de resultados) de la fila seleccionada o None
     si se canceló.
     """
     filas_res = []
     for r in resultados:
         filas_res.append(
             (r.id, r.numpresupuesto != None and r.numpresupuesto or "", 
              utils.str_fecha(r.fecha), 
              r.cliente and r.cliente.nombre or "-", 
              r.personaContacto, 
              r.comercial and r.comercial.empleado.nombre + " " + r.comercial.empleado.apellidos or "Sin comercial relacionado"))
     idpresupuesto = utils.dialogo_resultado(filas_res,
                         titulo = 'SELECCIONE OFERTA',
                         cabeceras = ('ID', 'Número', 'Fecha', 
                                      'Nombre cliente', 
                                      'Persona de contacto', "Comercial"), 
                         padre = self.wids['ventana'])
     if idpresupuesto < 0:
         return None
     else:
         return idpresupuesto
예제 #4
0
 def set_lote(self, w):
     numlote = utils.dialogo_entrada(titulo="Nº LOTE", texto="Introduzca número de lote:")
     if numlote != None:
         lotes = pclases.Lote.select(pclases.Lote.q.numlote.contains(numlote))
         if lotes.count() == 0:
             utils.dialogo_info(titulo="LOTE NO ENCONTRADO", texto="No se encontró ningún lote %s." % numlote)
             return
         elif lotes.count() > 1:
             filas = [(l.id, l.numlote, l.codigo, l.tenacidad, l.elongacion, l.rizo, l.encogimiento) for l in lotes]
             idlote = utils.dialogo_resultado(
                 filas,
                 titulo="SELECCIONE LOTE",
                 cabeceras=("ID", "Número", "Código", "Tenacidad", "Elongación", "Rizo", "Encogimiento"),
             )
             if idlote < 0:
                 return
             lote = pclases.Lote.get(idlote)
         else:
             lote = lotes[0]
         if len(lote.balas) == 0:
             utils.dialogo_info(
                 titulo="LOTE VACÍO",
                 texto="El lote no contiene balas, no puede\nrealizar pruebas sobre un lote vacío.",
             )
             self.lote = None
             return
         self.lote = lote
         self.actualizar_ventana()
예제 #5
0
파일: recibos.py 프로젝트: pacoqueen/bbinn
 def refinar_resultados_busqueda(self, resultados):
     """
     Muestra en una ventana de resultados todos los
     registros de "resultados".
     Devuelve el id (primera columna de la ventana
     de resultados) de la fila seleccionada o None
     si se canceló.
     """
     filas_res = []
     for r in resultados:
         filas_res.append((r.id, 
                           r.numrecibo, 
                           r.anno, 
                           r.get_cliente() and r.get_cliente().nombre or "", 
                           ", ".join([f.numfactura for f 
                                      in r.get_facturas()]), 
                           utils.float2str(r.calcular_importe()), 
                           utils.str_fecha(r.fechaLibramiento), 
                           utils.str_fecha(r.fechaVencimiento)
                          ))
     idrecibo = utils.dialogo_resultado(filas_res,
                                        titulo = 'SELECCIONE RECIBO',
                                        cabeceras = ('ID', 
                                                     'Número', 
                                                     'Año', 
                                                     'Cliente', 
                                                     'Facturas', 
                                                     'Importe', 
                                                     'Libramiento', 
                                                     'Vencimiento'), 
                                        padre = self.wids['ventana'])
     if idrecibo < 0:
         return None
     else:
         return idrecibo
예제 #6
0
 def refinar_resultados_busqueda(self, resultados):
     """
     Muestra en una ventana de resultados todos los
     registros de "resultados".
     Devuelve el id (primera columna de la ventana
     de resultados) de la fila seleccionada o None
     si se canceló.
     """
     filas_res = []
     for r in resultados:
         if r.es_transferencia():
             filas_res.append((r.id, 
                               utils.str_fecha(r.fecha), 
                               r.proveedor and r.proveedor.nombre or "-", 
                               r.cuentaOrigen and r.cuentaOrigen.nombre or "-", 
                               r.cuentaDestino and r.cuentaDestino.nombre or "-", 
                               utils.float2str(r.importe)))
     idcuenta = utils.dialogo_resultado(filas_res,
                                        titulo = 'SELECCIONE TRANSFERENCIA',
                                        cabeceras = ('ID', 'Fecha', 'Proveedor', 'Cuenta', 'Destino', "Importe"), 
                                        padre = self.wids['ventana'])
     if idcuenta < 0:
         return None
     else:
         return idcuenta
예제 #7
0
 def pedir_producto_compra(self):
     """
     Devuelve UN producto de compra obtenido a partir 
     de una búsqueda, etc.
     """
     producto = None
     a_buscar = utils.dialogo_entrada(titulo = "BUSCAR MATERIAL", 
             texto = "Introduzca texto a buscar en productos de compra:", 
             padre = self.wids['ventana'])
     if a_buscar != None:
         resultados = utils.buscar_productos_compra(a_buscar)
         if resultados.count() > 1:
             ## Refinar los resultados:
             filas_res = []
             for r in resultados:
                 filas_res.append((r.id, r.codigo, r.descripcion))
             idproducto = utils.dialogo_resultado(filas_res, 
                     titulo = 'Seleccione producto', 
                     cabeceras = ('ID Interno', 'Código', 'Descripción'), 
                     padre = self.wids['ventana'])
             if idproducto < 0:
                 return
             producto = pclases.ProductoCompra.get(idproducto)
                 # id es clave primaria, esta comprensión debería devolver un único producto
         elif resultados.count() < 1:
             ## La búsqueda no produjo resultados.
             utils.dialogo_info('SIN RESULTADOS', 
                 'La búsqueda no produjo ningún resultado.\nIntente una '
                 'búsqueda menos restrictiva usando un texto más corto.', 
                 padre = self.wids['ventana'])
             return None
         else:
             producto = resultados[0]
     return producto
예제 #8
0
 def refinar_resultados_busqueda(self, resultados):
     """
     Muestra en una ventana de resultados todos los
     registros de "resultados".
     Devuelve el id (primera columna de la ventana
     de resultados) de la fila seleccionada o None
     si se canceló.
     """
     filas_res = []
     for r in resultados:
         filas_res.append((r.id,
                           r.descripcion,
                           r.retribuido,
                           r.sinRetribuir,
                           r.excedenciaMaxima)) 
     idmotivo = utils.dialogo_resultado(filas_res,
                                          titulo = 'Seleccione motivo de ausencia',
                                          cabeceras = ('ID_interno', 
                                                       'Descripcion', 
                                                       'Días retribuidos', 
                                                       'Días sin retribuir', 
                                                       'Días excedencia máxima'), 
                                          padre = self.wids['ventana'])
     if idmotivo < 0:
         return None
     else:
         return idmotivo
예제 #9
0
 def refinar_resultados_busqueda(self, resultados):
     """
     Muestra en una ventana de resultados todos los
     registros de "resultados".
     Devuelve el id (primera columna de la ventana
     de resultados) de la fila seleccionada o None
     si se canceló.
     """
     filas_res = []
     for r in resultados:
         cliente = r.cliente
         filas_res.append((r.id, 
                           r.codigo, 
                           cliente != None and cliente.nombre or "", 
                           utils.str_fecha(r.fechaRecepcion), 
                           "%s €" % (utils.float2str(r.cantidad)), 
                           utils.str_fecha(r.fechaCobro), 
                           r.pendiente and "Sí" or "No", 
                           ", ".join([c.numfactura for c in r.cobros])))
     idpagare = utils.dialogo_resultado(filas_res,
                 titulo = 'Seleccione Pagaré',
                 cabeceras = ('ID', 'Número', 'Cliente', 'Fecha recepción', 
                         'Importe', 'Vencimiento', 'Pendiente', 'Facturas'), 
                 padre = self.wids['ventana'])
     if idpagare < 0:
         return None
     else:
         return idpagare
예제 #10
0
 def ver_productos(self, boton):
     """
     Muestra todos los productos relacionados
     con el proveedor actual a través de los
     Pedidos<->LDV<->Artículos.
     """
     proveedor = self.objeto
     if proveedor == None: 
         return
     lista = []
     productos = proveedor.get_productos()
     for p in productos:
         lista.append((p.id, 
                       p.codigo, 
                       p.descripcion, 
                       "\n".join([pedido.numpedido for pedido in p.get_pedidos(proveedor)]), 
                       "\n".join([albaran.numalbaran for albaran in p.get_albaranes(proveedor)]), 
                       "\n".join([factura.numfactura for factura in p.get_facturas(proveedor)])
                     ))
     idproducto = utils.dialogo_resultado(lista, 
                                          'PRODUCTOS COMPRADOS AL PROVEEDOR',
                                          cabeceras = ('ID', 'Código', 'Descripción', "Pedidos", "Albaranes", "Facturas"), 
                                          padre = self.wids['ventana'])
     if idproducto > 0:
         import productos_compra
         p = productos_compra.ProductosCompra(pclases.ProductoCompra.get(idproducto))
예제 #11
0
 def set_lote(self, w):
     numlote = utils.dialogo_entrada(titulo = 'Nº LOTE', 
                                     texto = 'Introduzca número de lote:',
                                     padre = self.wids['ventana'])
     if numlote != None:
         lotes = pclases.Lote.select(pclases.Lote.q.numlote.contains(numlote))
         if lotes.count() == 0:
             utils.dialogo_info(titulo = 'LOTE NO ENCONTRADO', 
                                texto = 'No se encontró ningún lote %s.' % numlote,
                                padre = self.wids['ventana'])
             return
         elif lotes.count() > 1:
             filas = [(l.id, l.numlote, l.codigo, l.tenacidad, l.elongacion, l.rizo, l.encogimiento) for l in lotes]
             idlote = utils.dialogo_resultado(filas, 
                                              titulo = 'SELECCIONE LOTE',
                                              cabeceras = ('ID', 'Número', 'Código', 'Tenacidad', 'Elongación', 'Rizo', 'Encogimiento'),
                                              padre = self.wids['ventana'])
             if idlote < 0:
                 return
             lote = pclases.Lote.get(idlote)
         else:
             lote = lotes[0]
         if len(lote.balas) == 0:
             utils.dialogo_info(titulo = 'LOTE VACÍO', 
                                texto = 'El lote no contiene balas, no puede\nrealizar pruebas sobre un lote vacío.',
                                padre = self.wids['ventana'])
             self.lote = None
             return
         self.lote = lote
         self.actualizar_ventana()
예제 #12
0
 def set_partida(self, w):
     numpartida = utils.dialogo_entrada(titulo = 'Nº PARTIDA', 
                                     texto = 'Introduzca número de partida:')
     if numpartida != None:
         partidas = pclases.Partida.select(pclases.Partida.q.numpartida.contains(numpartida))
         if partidas.count() == 0:
             utils.dialogo_info(titulo = 'PARTIDA NO ENCONTRADA', 
                                texto = 'No se encontró ninguna partida %s.' % numpartida)
             return
         elif partidas.count() > 1:
             filas = [(l.id, l.numpartida, l.codigo, l.longitudinal, l.transversal, l.compresion, l.perforacion, l.permeabilidad, l.poros, l.espesor) for l in partidas]
             idpartida = utils.dialogo_resultado(filas, 
                                              titulo = 'SELECCIONE PARTIDA',
                                              cabeceras = ('ID', 'Número', 'Código', 'Longitudinal', 'Transversal', 'CBR', 'Perforación', 'Permeabilidad', 'Poros', 'Espesor'))
             if idpartida < 0:
                 return
             partida = pclases.Partida.get(idpartida)
         else:
             partida = partidas[0]
         if len(partida.rollos) == 0:
             utils.dialogo_info(titulo = 'PARTIDA VACÍA', 
                                texto = 'La partida no contiene rollos, no puede\nrealizar pruebas sobre una partida vacía.')
             self.partida = None
             return
         self.partida = partida
         self.actualizar_ventana()
예제 #13
0
 def set_partida(self, w):
     numpartida = utils.dialogo_entrada(titulo="Nº PARTIDA", texto="Introduzca número de partida:")
     if numpartida != None:
         partidas = pclases.Partida.select(pclases.Partida.q.numpartida.contains(numpartida))
         if partidas.count() == 0:
             utils.dialogo_info(
                 titulo="PARTIDA NO ENCONTRADA", texto="No se encontró ninguna partida %s." % numpartida
             )
             return
         elif partidas.count() > 1:
             filas = [
                 (
                     l.id,
                     l.numpartida,
                     l.codigo,
                     l.longitudinal,
                     l.transversal,
                     l.compresion,
                     l.perforacion,
                     l.permeabilidad,
                     l.poros,
                     l.espesor,
                 )
                 for l in partidas
             ]
             idpartida = utils.dialogo_resultado(
                 filas,
                 titulo="SELECCIONE PARTIDA",
                 cabeceras=(
                     "ID",
                     "Número",
                     "Código",
                     "Longitudinal",
                     "Transversal",
                     "CBR",
                     "Perforación",
                     "Permeabilidad",
                     "Poros",
                     "Espesor",
                 ),
             )
             if idpartida < 0:
                 return
             partida = pclases.Partida.get(idpartida)
         else:
             partida = partidas[0]
         if len(partida.rollos) == 0:
             utils.dialogo_info(
                 titulo="PARTIDA VACÍA",
                 texto="La partida no contiene rollos, no puede\nrealizar pruebas sobre una partida vacía.",
             )
             self.partida = None
             return
         self.partida = partida
         self.actualizar_ventana()
예제 #14
0
파일: silos.py 프로젝트: pacoqueen/bbinn
 def mostrar_silo(self, boton, silo):
     """
     Recibe el silo del que hay que mostrar el detalle de 
     cargas y descargas (consumos) y muestra una ventana con las 
     mismas ordenadas por fecha.
     """
     cd_fechas = self.leer_datos_cargas_descargas(silo)
     vpro = VentanaProgreso(padre = self.wids['ventana'])
     vpro.mostrar()
     i = 0.0
     tot = len(cd_fechas)
     datos = []
     fechas = cd_fechas.keys()
     fechas.sort()
     total_cargado = 0
     total_descargado = 0
     for fecha in fechas:
         vpro.set_valor(i/tot, 'Analizando movimientos...')
         i = i+1
         str_fecha = utils.str_fecha(fecha)
         for carga in cd_fechas[fecha]['cargas']:
             datos.append((str_fecha, carga.productoCompra.descripcion, 
                           utils.float2str(carga.cantidad), "", "", ""))
             total_cargado += carga.cantidad
         for descarga in cd_fechas[fecha]['descargas']: 
             producto_fabricado = "CLIC PARA VER [%d]" % (descarga.id)
             datos.append((str_fecha, "", "", 
                           descarga.productoCompra.descripcion, 
                           utils.float2str(descarga.cantidad), 
                           producto_fabricado))
             total_descargado += descarga.cantidad
     datos.append(("", "TOTAL CARGAS: ", utils.float2str(total_cargado), 
                   "TOTAL CONSUMOS: ", utils.float2str(total_descargado), 
                   ""))
     vpro.ocultar()
     utils.dialogo_resultado(datos, 
         titulo = "DETALLE DE CARGAS Y CONSUMOS DEL SILO", 
         padre = self.wids['ventana'], 
         cabeceras = ("Fecha", "Producto cargado", "Cantidad cargada", 
                      "Producto consumido", "Cantidad consumida", 
                      "Producto fabricado"), 
         func_change = self.mostrar_info_producto_fabricado)
예제 #15
0
 def refinar_busqueda_productos(self, resultados):
     filas_res = []
     for r in resultados:
         filas_res.append((r.id, r.codigo, r.descripcion))
     idproducto = utils.dialogo_resultado(filas_res,
                                          titulo = 'Seleccione producto',
                                          cabeceras = ('ID Interno', 'Código', 'Descripción')) 
     if idproducto < 0:
         return None
     else:
         return idproducto
예제 #16
0
 def annadir_producto_a_tarifa(self, event):
     """ 
     Solicita un producto mediante su código, id o descripción.
     Una vez seleccionado el producto, se asocia el objeto que
     lo representa con la tarifa actual mostrada en pantalla y 
     se actualiza la información de la ventana.
     NOTA: Si el producto ya está en la tarifa, se actualiza 
     con el precio por defecto del producto.
     """
     a_buscar = utils.dialogo_entrada(titulo = "BUSCAR PRODUCTO", 
                                      texto = "Introduzca texto a buscar: ", 
                                      padre = self.wids['ventana'])
     if a_buscar != None:
         criterio = sqlobject.OR(pclases.ProductoCompra.q.codigo.contains(a_buscar),
                                 pclases.ProductoCompra.q.descripcion.contains(a_buscar))
         resultados_pc = pclases.ProductoCompra.select(criterio)
         numresultados = resultados_pc.count()
         if numresultados > 1:
             ## Refinar los resultados:
             filas_res = []
             for r in resultados_pc:
                 filas_res.append(("PC:%d" % r.id, r.codigo, r.descripcion))
             idsproducto = utils.dialogo_resultado(filas_res, 
                                             'Seleccione producto', 
                                             multi = True, 
                                             padre = self.wids['ventana'])
             if idsproducto != [-1]:
                 # No ha cancelado.
                 productos = []
                 for tipo_id in idsproducto:
                     tipo, id = tipo_id.split(":")
                     id = int(id)
                     if tipo == "PC":
                         productos.append(pclases.ProductoCompra.get(id))
             else:
                 productos = []
         elif numresultados == 1:
             if resultados_pc.count() == 1:
                 productos = resultados_pc
             else:
                 productos = []
         else:
             ## La búsqueda no produjo resultados.
             utils.dialogo_info('SIN RESULTADOS', 'La búsqueda no produjo ningún resultado.\nIntente una búsqueda menos restrictiva usando un texto más corto.', padre = self.wids['ventana'])
             return
         tarifa = self.objeto
         for producto in productos:
             try:
                 defecto = producto.preciopordefecto
             except AttributeError:
                 defecto = producto.precioDefecto
             tarifa.asignarTarifa(producto, defecto)
         self.actualizar_ventana()
예제 #17
0
 def set_mp(self, w):
     a_buscar = utils.dialogo_entrada(titulo = 'BUSCAR PRODUCTO', 
                             texto = 'Introduzca código o descripción:', 
                             padre = self.wids['ventana'])
     if a_buscar != None:
         try:
             materiaprima = pclases.TipoDeMaterial.select(
                 pclases.TipoDeMaterial.q.descripcion.contains("prima"))[0]
         except IndexError:
             prods = pclases.ProductoCompra.select(
                 pclases.AND(
                  pclases.OR(
                   pclases.ProductoCompra.q.codigo.contains(a_buscar), 
                   pclases.ProductoCompra.q.descripcion.contains(a_buscar)),
                  pclases.ProductoCompra.q.obsoleto == False))
         else:
             prods = pclases.ProductoCompra.select(
               pclases.AND(
                 pclases.OR(
                   pclases.ProductoCompra.q.codigo.contains(a_buscar), 
                   pclases.ProductoCompra.q.descripcion.contains(a_buscar)
                 ), 
                 pclases.ProductoCompra.q.tipoDeMaterialID==materiaprima.id,
                 pclases.ProductoCompra.q.obsoleto == False
               )
             )
         if prods.count() == 0:
             utils.dialogo_info(titulo = 'PRODUCTO NO ENCONTRADO', 
                 texto = 'No se encontró ningún producto al buscar "%s"\n'
                         'en código y descripción.' % a_buscar, 
                 padre = self.wids['ventana'])
             return
         elif prods.count() > 1:
             filas = [(l.id, l.codigo, l.descripcion, self.proveedores(l)) 
                      for l in prods]
             # CWT: Esto es probablemente lo más guarro que he hecho nunca:
             if "050" in a_buscar:
                 filas = [i for i in filas 
                          if "SACOS" in i[2] or "GRANEL" in i[2]]
             idprod = utils.dialogo_resultado(filas, 
                 titulo = 'SELECCIONE PRODUCTO',
                 cabeceras = ('ID', 'Código', 'Descripción', 'Proveedor'), 
                 padre = self.wids['ventana'])
             if idprod < 0:
                 return
             prod = pclases.ProductoCompra.get(idprod)
         else:
             prod = prods[0]
         self.producto = prod
         self.actualizar_ventana()
예제 #18
0
 def buscar_rollo(self, txt):
     ar = None
     ars = pclases.Rollo.select(pclases.Rollo.q.numrollo.contains(txt))
     if ars.count() == 1:
         ar = ars[0]
     elif ars.count() > 1:
         filas = [(a.id, a.numrollo, a.codigo) for a in ars]
         idrollo = utils.dialogo_resultado(filas, 
                                           titulo = "Seleccione rollo", 
                                           cabeceras = ('ID', 'Número de rollo', 'Código'),
                                           padre = self.wids['ventana'])
         if idrollo > 0:
             ar = pclases.Rollo.get(idrollo)
     return ar
예제 #19
0
 def buscar_bala(self, txt):
     ar = None
     ars = pclases.Bala.select(pclases.Bala.q.numbala.contains(txt))
     if ars.count() == 1:
         ar = ars[0]
     elif ars.count() > 1:
         filas = [(a.id, a.numbala, a.codigo) for a in ars]
         idbala = utils.dialogo_resultado(filas,
                                          titulo = "Seleccione bala", 
                                          cabeceras = ('ID', 'Número de bala', 'Código'),
                                          padre = self.wids['ventana'])
         if idbala > 0:
             ar = pclases.Bala.get(idbala)
     return ar
예제 #20
0
 def set_partida(self, w):
     comprobar_y_preguntar_si_guardar(self)
     numpartida = utils.dialogo_entrada(titulo = 'Nº PARTIDA', 
                     texto = 'Introduzca número de partida:', 
                     padre = self.wids['ventana'])
     if numpartida != None:
         numpartida = numpartida.upper().replace("P-", "")
         partidas = pclases.Partida.select(
                     pclases.Partida.q.codigo.contains(numpartida))
         if partidas.count() == 0:
             utils.dialogo_info(titulo = 'PARTIDA NO ENCONTRADA', 
                 texto = 'No se encontró ninguna partida %s.' % numpartida, 
                 padre = self.wids['ventana'])
             return
         elif partidas.count() > 1:
             filas = [(l.id, 
                       l.numpartida, 
                       l.codigo, 
                       l.partidaCarga and l.partidaCarga.codigo or "" , 
                       l.longitudinal, 
                       l.transversal, 
                       l.compresion, 
                       l.perforacion, 
                       l.permeabilidad, 
                       l.poros, 
                       l.espesor, 
                       l.piramidal
                      ) for l in partidas]
             idpartida = utils.dialogo_resultado(filas, 
                 titulo = 'SELECCIONE PARTIDA',
                 cabeceras = ('ID', 'Número', 'Código', 'Partida Carga', 
                              'Longitudinal', 'Transversal', 'CBR', 
                              'Perforación', 'Permeabilidad', 'Poros', 
                              'Espesor', 'Piramidal'), 
                 padre = self.wids['ventana'])
             if idpartida < 0:
                 return
             partida = pclases.Partida.get(idpartida)
         else:
             partida = partidas[0]
         if len(partida.rollos) == 0:
             utils.dialogo_info(titulo = 'PARTIDA VACÍA', 
                 texto = 'La partida no contiene rollos, no puede\n'
                         'realizar pruebas sobre una partida vacía.', 
                 padre = self.wids['ventana'])
             self.partida = None
             return
         self.partida = partida
         self.actualizar_ventana()
예제 #21
0
 def ver_pedidos(self, boton):
     """
     Muestra todos los pedidos asignados
     al proveedor actual.
     """
     proveedor = self.objeto
     if proveedor == None: return
     pedidos = [(p.id, p.numpedido, utils.str_fecha(p.fecha)) for p in proveedor.pedidosCompra]
     idpedido = utils.dialogo_resultado(pedidos, 
                                        'PEDIDOS HECHOS AL PROVEEDOR',
                                        cabeceras = ('ID', 'Número de pedido', 'Fecha'), 
                                        padre = self.wids['ventana'])
     if idpedido > 0:
         import pedidos_de_compra
         p = pedidos_de_compra.PedidosDeCompra(pclases.PedidoCompra.get(idpedido), usuario = self.usuario)
예제 #22
0
 def ver_facturas(self, boton):
     """
     Muestra todos los facturas asignados
     al proveedor actual.
     """
     proveedor = self.objeto
     if proveedor == None: return
     facturas = [(p.id, p.numfactura, utils.str_fecha(p.fecha)) for p in proveedor.facturasCompra]
     idfactura = utils.dialogo_resultado(facturas, 
                                         'FACTUDAS DEL PROVEEDOR',
                                         cabeceras = ('ID', 'Número de factura', 'Fecha'), 
                                         padre = self.wids['ventana'])
     if idfactura > 0:
         import facturas_compra
         p = facturas_compra.FacturasDeEntrada(pclases.FacturaCompra.get(idfactura), usuario = self.usuario)
예제 #23
0
 def refinar_busqueda_pedidos(self, resultados):
     filas_res = []
     for r in resultados:
         if r.proveedor != None:
             proveedor = r.proveedor.nombre
         else:
             proveedor = ''
         filas_res.append((r.id, r.numpedido, utils.str_fecha(r.fecha), proveedor, ))
     idpedido = utils.dialogo_resultado(filas_res,
                                          titulo = 'Seleccione pedido',
                                          cabeceras = ('ID Interno', 'Num. Pedido', 'Fecha', 'Proveedor'),
                                          padre = self.wids['ventana']) 
     if idpedido < 0:
         return None
     else:
         return idpedido
예제 #24
0
 def ver_consumos(self, boton):
     """
     Muestra un diálogo de resultados con los consumos del 
     lote completo mostrado en pantalla.
     """
     if self.lote != None:
         consumos = self.lote.get_consumos()
         if consumos == {}:
             utils.dialogo_info(titulo = "SIN CONSUMO", 
                                texto = "¡El lote %s no ha consumido productos en su fabricación!\n\nCompruebe que no esté vacío." % self.lote.codigo, 
                                padre = self.wids['ventana'])
         else:
             filas = [("", p.descripcion, "%s %s" % (utils.float2str(consumos[p], 3, autodec = True), p.unidad)) for p in consumos]
             nada = utils.dialogo_resultado(filas, 
                                            titulo = 'CONSUMOS DEL LOTE %s EN PARTES DE PRODUCCIÓN' % (self.lote.codigo),
                                            cabeceras = ('', 'Producto', 'Cantidad consumida'), 
                                            padre = self.wids['ventana'])
예제 #25
0
 def add_empleado(self):
     empleados = pclases.Empleado.select(orderBy = 'apellidos')
     empleados = [(e.id, e.nombre, e.apellidos) for e in empleados \
                     if e.activo and (e.planta or (e.categoriaLaboral and e.categoriaLaboral.lineaDeProduccion))]
     ids = utils.dialogo_resultado(filas = empleados, 
                                   titulo = 'SELECCIONE EMPLEADOS', 
                                   cabeceras = ('ID', 'Nombre', 'Apellidos'),
                                   multi = True)
     if ids == [-1]:
         return
     for id in ids:
         try:
             e = pclases.Empleado.get(id)
             self.add_empleado_a_parte(e)
         except sqlobject.SQLObjectNotFound:
             utils.dialogo_info(titulo = 'NÚMERO INCORRECTO', 
                                texto = 'El empleado con código identificador %d no existe o no se pudo agregar.' % id)
예제 #26
0
 def refinar_resultados_busqueda(self, resultados):
     """
     Muestra en una ventana de resultados todos los
     registros de "resultados".
     Devuelve el id (primera columna de la ventana
     de resultados) de la fila seleccionada o None
     si se canceló.
     """
     filas_res = []
     for r in resultados:
         filas_res.append((r.id, r.codigo, r.descripcion))
     idproducto = utils.dialogo_resultado(filas_res,
                                          titulo = 'Seleccione producto',
                                          cabeceras = ('ID Interno', 'Código', 'Descripción'))
     if idproducto < 0:
         return None
     else:
         return idproducto
예제 #27
0
 def refinar_resultados_busqueda(self, resultados):
     """
     Muestra en una ventana de resultados todos los
     registros de "resultados".
     Devuelve el id (primera columna de la ventana
     de resultados) de la fila seleccionada o None
     si se canceló.
     """
     filas_res = []
     for r in resultados:
         filas_res.append((r.id,r.nombre)) 
     idcentroTrabajo = utils.dialogo_resultado(filas_res,
                                          titulo = 'Seleccione categoria laboral',
                                          cabeceras = ('Código (ID)', 'Centro de trabajo'))
     if idcentroTrabajo < 0:
         return None
     else:
         return idcentroTrabajo
예제 #28
0
 def refinar_resultados_busqueda(self, resultados):
     """
     Muestra en una ventana de resultados todos los
     registros de "resultados".
     Devuelve el id (primera columna de la ventana
     de resultados) de la fila seleccionada o None
     si se canceló.
     """
     filas_res = []
     for r in resultados:
         filas_res.append((r.id, r.numpedido, utils.str_fecha(r.fecha), r.get_nombre_cliente()))
     idpedido = utils.dialogo_resultado(filas_res,
                                        titulo = 'Seleccione pedido',
                                        cabeceras = ('ID', 'Número de pedido', 'Fecha', 'Cliente'))
     if idpedido < 0:
         return None
     else:
         return idpedido
예제 #29
0
 def refinar_resultados_busqueda(self, resultados):
     """
     Muestra en una ventana de resultados todos los
     registros de "resultados".
     Devuelve el id (primera columna de la ventana
     de resultados) de la fila seleccionada o None
     si se canceló.
     """
     filas_res = []
     for r in resultados:
         filas_res.append((r.id, r.usuario))
     idusuario = utils.dialogo_resultado(filas_res,
                                         titulo = 'Seleccione usuario',
                                         cabeceras = ('ID Interno', 'Nombre de usuario')) 
     if idusuario < 0:
         return None
     else:
         return idusuario
예제 #30
0
파일: recibos.py 프로젝트: pacoqueen/bbinn
 def buscar_factura(self, cliente, filtrar_pagadas = True):
     """
     Si filtrar_pagadas == True solo busca entre las facturas que tengan 
     algún pendiente de cobro.
     """
     fras = None
     numfra = utils.dialogo_entrada(titulo = "NÚMERO DE FACTURA", 
                                    texto = "Introduzca el número de factura", 
                                    padre = self.wids['ventana'])
     if numfra != None:
         fras = [((isinstance(f, pclases.FacturaVenta) and "FV:%d" % f.id) or \
                  (isinstance(f, pclases.Prefactura) and "PF:%d" % f.id) or "-1", 
                  f.numfactura, 
                  utils.str_fecha(f.fecha), 
                  "%s €" % (utils.float2str(f.importeTotal)), 
                  "%s €" % (utils.float2str(f.calcular_pendiente_cobro())), 
                  f) 
                  for f in cliente.facturasVenta + cliente.prefacturas if numfra.upper() in f.numfactura.upper()]
         if filtrar_pagadas:
             fras = [tupla for tupla in fras if tupla[-1].calcular_pendiente_cobro() > 0]
         if len(fras) > 1:
             idsfra = utils.dialogo_resultado([f[:-1] for f in fras],
                                              titulo = "SELECCIONE FACTURA",
                                              cabeceras = ('ID', 'Número de factura', 'Fecha', 'Importe total', 'Pendiente de cobro'),
                                              padre = self.wids['ventana'], 
                                              multi = True)
         elif len(fras) == 1:
             idsfra = [fras[0][0]]
         else:
             utils.dialogo_info(titulo = "FACTURA NO ENCONTRADA", 
                                texto = "No se encontró ninguna factura.", 
                                padre = self.wids['ventana'])
             idsfra = []
         fras = []
         if len(idsfra) > 0 and idsfra[0] != -1 and idsfra[0] != -2:
             for tipo, id in [e.split(":") for e in idsfra]:
                 idfra = int(id)
                 if tipo == "FV":
                     fras.append(pclases.FacturaVenta.get(idfra))
                 elif tipo == "PF":
                     fras.append(pclases.Prefactura.get(idfra))
     else:
         fras = None
     return fras