def __init__(self, objeto = None, usuario = None, gui = True): """ 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). Si `gui` es True, tira de Gtk para preguntar, exportar y abrir los PDF. En otro caso devuelve los nombres de fichero por salida estándar. """ if gui: if utils.dialogo(titulo = "¿EXPORTAR A CSV?", texto = "¿Quiere generar también un archivo CSV por " "cada PDF que se cree a continuación?", defecto = False, tiempo = 15): csv = True ruta_csv = tempfile.NamedTemporaryFile(suffix = ".csv").name else: csv = False ruta_csv = None else: csv = False ruta_csv = None ruta_pdf = geninformes.existencias_productos( 'rollos', "%s, %s" % (utils.str_fecha(time.localtime()), time.strftime("%H:%M")), ruta_csv = ruta_csv) self.fich_generados = [ruta_pdf] if gui: from formularios import reports reports.abrir_pdf(ruta_pdf) if pclases.Almacen.select(pclases.Almacen.q.activo==True).count() > 1: for a in pclases.Almacen.select(pclases.Almacen.q.activo == True): if csv: ruta_csv = tempfile.NamedTemporaryFile( suffix = "_%s.csv" % a.nombre, delete = False).name ruta_pdf = geninformes.existencias_productos('rollos', "%s, %s" % ( utils.str_fecha(time.localtime()), time.strftime("%H:%M")), almacen = a, ruta_csv = ruta_csv) self.fich_generados.append(ruta_pdf) if gui: reports.abrir_pdf(ruta_pdf) if not gui: try: sys.stdout.write("\n".join(self.fich_generados)) sys.stdout.write("\n") except IOError: pass # No tengo salida estándar.
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). """ if utils.dialogo(titulo = "¿EXPORTAR A CSV?", texto = "¿Quiere generar también un archivo CSV por " "cada almacén?", defecto = False, tiempo = 15): csv = True ruta_csv = tempfile.NamedTemporaryFile(suffix = ".csv").name else: csv = False ruta_csv = None from formularios import reports reports.abrir_pdf(geninformes.existencias_productos( 'balas', "%s, %s" % (utils.str_fecha(time.localtime()), time.strftime("%H:%M")), ruta_csv = ruta_csv)) if pclases.Almacen.select(pclases.Almacen.q.activo==True).count() > 1: for a in pclases.Almacen.select(pclases.Almacen.q.activo == True): if csv: ruta_csv = tempfile.NamedTemporaryFile( suffix = "_%s.csv" % a.nombre, delete = False).name reports.abrir_pdf( geninformes.existencias_productos( 'balas', "%s, %s" % ( utils.str_fecha(time.localtime()), time.strftime("%H:%M")), almacen = a, ruta_csv = ruta_csv)) if utils.dialogo(titulo = "¿IMPRIMIR DESGLOSE?", texto = "¿Desea imprimir un desglose por lote de la" " fibra en almacén? \n\nNOTA: Puede " "tardar algún tiempo.", defecto = "No"): reports.abrir_pdf( geninformes.existencias_fibra_por_lote("%s, %s" % ( utils.str_fecha(time.localtime()), time.strftime("%H:%M"))))
def imprimir(self,boton): """ Prepara la vista preliminar para la impresión del informe """ fechastr = self.wids['e_fecha'].get_text() fecha = utils.parse_fecha(fechastr) fechastr = utils.str_fecha(fecha) fechas = pclases.HistorialExistenciasA.get_fechas_cacheadas() if fecha not in fechas: res = utils.dialogo( titulo = "EXISTENCIAS NO CACHEADAS. ¿CONTINUAR?", texto = "La fecha seleccionada no se encuentra precalculada.\n" "Esto implica que el recuento de existencias puede\n" "demorarse incluso horas. Durante este tiempo es \n" "posible que la aplicación no responda.\n\n" "¿Está seguro de que desea continuar?", padre = self.wids['ventana']) else: res = utils.dialogo(titulo = "¿CONTINUAR?", texto = "La operación puede demorarse durante algún tiempo\n" "y dar la impresión de que la aplicación no responde.\n" "¿Desea continuar?", padre = self.wids['ventana']) if not res: return vpro = ventana_progreso.VentanaProgreso(padre = self.wids['ventana']) self.wids['ventana'].window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) vpro.mostrar() act = 0.0 tot = 2 + pclases.Almacen.select( pclases.Almacen.q.activo == True).count() msgtexto = 'Calculando existencias a %s.' % fechastr vpro.set_valor(act/tot, msgtexto) vpro._ventana.realize() vpro._ventana.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.WATCH)) while gtk.events_pending(): gtk.main_iteration(False) from formularios import reports try: vpro.set_valor(act/tot, msgtexto) reports.abrir_pdf(geninformes.existencias_productos('rollos', fechastr, hasta = fecha)) act += 1 vpro.set_valor(act/tot, msgtexto) reports.abrir_pdf(geninformes.existencias_productos('balas', fechastr, hasta = fecha)) act += 1 vpro.set_valor(act/tot, msgtexto) for a in pclases.Almacen.select(pclases.Almacen.q.activo == True, orderBy = "id"): reports.abrir_pdf(geninformes.existencias_productos('rollos', fechastr, hasta = fecha, almacen = a)) act += 1 vpro.set_valor(act/tot, msgtexto) reports.abrir_pdf(geninformes.existencias_productos('balas', fechastr, hasta = fecha, almacen = a)) act += 1 vpro.set_valor(act/tot, msgtexto) finally: vpro.ocultar() vpro._ventana.window.set_cursor(None) self.wids['ventana'].window.set_cursor(None)