Ejemplo n.º 1
0
 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.
Ejemplo n.º 2
0
 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"))))
Ejemplo n.º 3
0
 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)