def test_pales(): from formularios.reports import abrir_pdf pales = pclases.Pale.select(orderBy = "-id")[:2] abrir_pdf(crear_etiquetas_pales(pales)) import time time.sleep(1) abrir_pdf(crear_etiquetas_pales(pales, lang = "en"))
def imprimir_ausencia(self, b): from formularios import reports model, itr = self.wids['tv_ausencias'].get_selection().get_selected() if itr != None: ide = model[itr][-1] ausencia = pclases.Ausencia.get(ide) empleado = (ausencia.empleado.nombre + ' ' + ausencia.empleado.apellidos) centro = ausencia.empleado.centroTrabajo if centro != None: centro = centro.nombre else: centro = '' fecha = ausencia.fecha turno = '______' grupo = ausencia.empleado.grupo if grupo != None: for l in grupo.laborables: if l.fecha == ausencia.fecha: turno = l.turno.nombre motivo = ausencia.motivo motivos = pclases.Motivo.select() reports.abrir_pdf(geninformes.ausencia( empleado,centro,fecha,turno,motivo,motivos)) else: utils.dialogo_info(titulo = "SELECCIONE AUSENCIA", texto = "Seleccione la ausencia a imprimir.", padre = self.wids['ventana'])
def imprimir(self, boton): """ Crea un impreso del albarán """ self.guardar(None) # Si se ha olvidado guardar, guardo yo. from formularios import reports albaran = self.objeto if albaran.proveedor != None: proveedor = albaran.proveedor.nombre else: proveedor = '' pedidos = [] lineas = [] for l in albaran.lineasDeCompra: if l.pedidoCompra != None: numpedido = l.pedidoCompra.numpedido else: numpedido = '-' lineas.append({'codigo': l.productoCompra.codigo, 'descripcion': l.productoCompra.descripcion, 'cantidad': l.cantidad, 'numped': numpedido }) if l.pedidoCompra != None and l.pedidoCompra.numpedido not in pedidos: pedidos.append(l.pedidoCompra.numpedido) cadenaPedidos = ','.join(pedidos) general = {'albnum':albaran.numalbaran, 'fecha':utils.str_fecha(albaran.fecha), 'proveedor':proveedor, 'pednum':cadenaPedidos} observaciones = utils.dialogo_entrada(titulo = 'OBSERVACIONES', texto = '¿Desea incluir alguna observación en el albarán?', padre = self.wids['ventana']) if observaciones == None: return reports.abrir_pdf(geninformes.albaranEntrada(general, lineas, observaciones))
def imprimir(self,boton): """ Prepara la vista preliminar para la impresión del informe """ from formularios import reports datos = [] total = 0 self.resultados.sort(self.por_fecha_ldc) for ldc in self.resultados: subtotal = ldc.cantidad * ldc.precio datos.append((ldc.nombre_proveedor, ldc.albaranEntrada.numalbaran, utils.str_fecha(ldc.albaranEntrada.fecha), ldc.descripcion_productoCompra, utils.float2str(ldc.cantidad), utils.float2str(ldc.precio), utils.float2str(subtotal) )) total += subtotal if len(self.resultados) > 0: datos.append(("", "", "", "", "", "", "-"*20)) datos.append(("", "", "", "", "", "", utils.float2str(total))) if (self.inicio) == None: fechaInforme = 'Hasta '+utils.str_fecha(self.fin) else: fechaInforme = utils.str_fecha(self.inicio)+' - '+utils.str_fecha(self.fin) if datos != []: reports.abrir_pdf(geninformes.entradasAlmacen(datos,fechaInforme, cols_a_derecha=(4, 5, 6)))
def imprimir(self, boton): """ Prepara la vista preliminar para la impresión del informe """ from informes.treeview2pdf import treeview2pdf from formularios.reports import abrir_pdf idcliente = utils.combo_get_value(self.wids['cmbe_cliente']) if idcliente == None: utils.dialogo_info(titulo = 'ERROR', texto = 'Seleccione un cliente', padre = self.wids['ventana']) else: idcliente = utils.combo_get_value(self.wids['cmbe_cliente']) self.cliente = pclases.Cliente.get(idcliente) cliente = self.cliente if not self.inicio: fechaInforme = 'Hasta ' + utils.str_fecha(time.strptime(self.fin, "%Y/%m/%d")) else: fechaInforme = utils.str_fecha(time.strptime(self.inicio, "%Y/%m/%d")) + ' - ' + utils.str_fecha(time.strptime(self.fin, "%Y/%m/%d")) strfecha = fechaInforme informe = treeview2pdf(self.wids['tv_datos'], titulo = "Productos comprados por " + cliente.nombre, fecha = strfecha) if informe: abrir_pdf(informe)
def imprimir(self,boton): """ Prepara la vista preliminar para la impresión del informe """ from formularios import reports if self.resultado != []: datos = [] if isinstance(self.resultado[0],tuple): # Listado de productos de venta titulo = 'Productos bajo mínimos' for item in self.resultado: datos.append((item[0].codigo, item[0].descripcion, item[0].minimo, item[1])) else: # Listado de productos de compra (materiales) titulo = 'Materiales bajo mínimos' for item in self.resultado: datos.append((item.codigo, item.descripcion, item.minimo, item.existencias)) reports.abrir_pdf(geninformes.bajoMinimos( titulo, datos, utils.str_fecha(time.localtime()), self.wids['cbe_proveedor'].child.get_text()))
def imprimir(self, boton): """ Prepara la vista preliminar para la impresión del informe. """ resp = utils.dialogo(titulo = "¿IMPRIMIR DESGLOSE?", texto = "Puede imprimir un resumen o todo el " "contenido de la consulta\n" "¿Desea imprimir toda la información " "desglosada?", padre = self.wids['ventana']) if resp: tv = self.wids['tv_datos'] tv.expand_all() while gtk.events_pending(): gtk.main_iteration(False) colstotales = [] else: tv = self.wids['tv_datos'] tv.collapse_all() while gtk.events_pending(): gtk.main_iteration(False) from consulta_ventas_por_producto import convertir_a_listview tv = convertir_a_listview(tv) colstotales = [2, 3, 4] strfecha = "De %s a %s" % (self.wids['e_fechainicio'].get_text(), self.wids['e_fechafin'].get_text()) abrir_pdf(treeview2pdf(tv, titulo = "Beneficio sobre tarifa (tickets)", fecha = strfecha, numcols_a_totalizar = colstotales))
def imprimir(self, boton): """ Prepara la vista preliminar para la impresión del informe """ from formularios import reports from informes.treeview2pdf import treeview2pdf tv = self.wids['tv_datos'] titulo = "Ofertas" totales = [6] extra_data = [] if self.inicio: titulo += " desde %s" % utils.str_fecha(self.inicio) if self.fin: titulo += " hasta %s" % utils.str_fecha(self.fin) #import tempfile #ruta_grafico = tempfile.NamedTemporaryFile(suffix = ".png").name #win = self.wids['eventbox_chart'].window #ancho, alto = win.get_size() #pb = gtk.gdk.Pixbuf(gtk.gdk.COLORSPACE_RGB, False, 8, ancho, alto) #captura = pb.get_from_drawable(win, win.get_colormap(), 0, 0, 0, 0, # ancho, alto) # Por algún motivo, que tendrá que ver con los dpi, ppp o cualquiera # sabe qué complejo cálculo gráfico, la imagen sale muy grande en el # PDF. La reduzco cutremente: #escalado = captura.scale_simple(int(ancho * 0.75), int(alto * 0.75), # gtk.gdk.INTERP_TILES) #escalado.save(ruta_grafico, "png") reports.abrir_pdf(treeview2pdf(tv, titulo = titulo, numcols_a_totalizar = totales, #graficos = [ruta_grafico], extra_data = extra_data))
def imprimir(self, boton): """ Prepara la vista preliminar para la impresión del informe. """ from informes.treeview2pdf import treeview2pdf from formularios.reports import abrir_pdf strfecha = "%s - %s" % (self.wids["e_fechainicio"].get_text(), self.wids["e_fechafin"].get_text()) pactiva = self.wids["notebook1"].get_current_page() if pactiva == 0: tv = self.wids["tv_fibra"] totales = range(1, tv.get_model().get_n_columns() - 1) elif pactiva == 1: tv = self.wids["tv_gtx"] totales = range(1, tv.get_model().get_n_columns() - 1) elif pactiva == 2: tv = self.wids["tv_cem"] totales = range(1, tv.get_model().get_n_columns() - 1) elif pactiva == 3: tv = self.wids["tv_otros"] totales = [] abrir_pdf( treeview2pdf( tv, titulo="Salidas de almacén agrupadas" "por producto", fecha=strfecha, numcols_a_totalizar=totales ) )
def imprimir_listado(self, widget): """ Muestra la vista previa de un pdf con el listado de empleados junto al código asociado a cada uno """ from formularios import reports reports.abrir_pdf(geninformes.empleados())
def imprimir(self, boton): """ Imprime la tarifa en pantalla. """ from formularios import reports datos = [] model = self.wids['tabla_productos'].get_model() for itr in model: datos.append((itr[0], itr[1], "%s €" % (utils.float2str(itr[2], 3)), "%s €" % (utils.float2str(itr[3], 3)) )) def cmp_func(x, y): """ Para ordenar por nombre de producto. """ if x[1] < y[1]: return -1 if x[1] > y[1]: return 1 return 0 datos.sort(cmp_func) if datos != []: nombre_tarifa = self.wids['cb_nombre_tarifa'].child.get_text() reports.abrir_pdf(geninformes.imprimir_tarifa(datos, nombre_tarifa, utils.str_fecha(mx.DateTime.localtime())))
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). """ from formularios import reports import tempfile exportar_a_csv_a = None if utils.dialogo(titulo = "FILTRAR EXISTENCIAS NULAS", texto = "¿Desea filtrar ignorando los productos con" " existencias a cero?"): func_informe = geninformes.repuestos_no_nulos else: func_informe = geninformes.repuestos if utils.dialogo(titulo = "EXPORTAR A CSV", texto = "A continuación se generará el informe en " "PDF.\n¿Desa también que se exporte a CSV?", defecto = "No", tiempo = 10): exportar_a_csv_a = os.path.join(tempfile.gettempdir(), "%s_repuestos" % ( mx.DateTime.localtime().strftime("%Y%m%d"))) pdfs = func_informe(exportar_a_csv_a = exportar_a_csv_a) for pdf in pdfs: reports.abrir_pdf(pdf)
def imprimir(self, boton): """ Imprime un listado del consumo de balas. """ partida_carga = self.get_partida() datos = {'partida': partida_carga} datos['partidas_gtx'] = ", ".join( [p.codigo for p in partida_carga.partidas]) model = self.wids['tv_balas'].get_model() datos['balas'] = [] for itr in model: datos['balas'].append((itr[0], itr[1], "")) datos['balas'].append(("-" * 20, "-" * 20, "")) # El último campo # vacío es para que no queden los datos tan separados al imprimir. datos['balas'].append( ("TOTAL CONSUMO FIBRA", self.wids['e_total'].get_text(), "")) datos['balas'].append( ("TOTAL GEOTEXTILES PRODUCIDOS", self.wids['e_peso_gtx'].get_text(), "")) datos['balas'].append( ("(para toda la partida, sin embalaje y con merma)", "", "")) model = self.wids['tv_resumen'].get_model() datos['balas'].append(("", "", "")) datos['balas'].append(("", "", "")) datos['balas'].append(("Resumen por lotes:", "", "")) for itr in model: datos['balas'].append(("%d balas (%s kg)." % ( itr[0], utils.float2str(itr[1], 1)), "Lote %s." % (itr[2]), itr[3])) reports.abrir_pdf(geninformes.consumo_fibra_partida(datos, utils.str_fecha(mx.DateTime.localtime()), cols_a_derecha=(0, 1, )))
def imprimir(self, boton): """ Prepara la vista preliminar para la impresión del informe """ from formularios import reports datos = [] lista = self.resultado for elem in lista: datos.append( ( elem.numpartida, "%.2f" % elem.longitudinal, "%.2f" % elem.transversal, "%.2f" % elem.compresion, "%.2f" % elem.perforacion, "%.2f" % elem.permeabilidad, "%.2f" % elem.poros, "%.2f" % elem.piramidal, "%.2f" % elem.espesor, ) ) if (self.inicio) == None: fechaInforme = "Hasta " + utils.str_fecha(self.fin) else: fechaInforme = utils.str_fecha(self.inicio) + " - " + utils.str_fecha(self.fin) if datos != []: reports.abrir_pdf(geninformes.laboratorioPartidas(datos, fechaInforme))
def imprimir(self, boton): """ Prepara la vista preliminar para la impresión del informe """ from formularios import reports from informes.treeview2pdf import treeview2pdf pagina_activa = self.wids['nb_tipo'].get_current_page() almacenid = utils.combo_get_value(self.wids['cb_almacen']) if almacenid != 0: almacen = pclases.Almacen.get(almacenid) else: almacen = None if pagina_activa == 0: tv = self.wids['tv_fibra'] titulo = "Existencias de productos por tipo: fibra" elif pagina_activa == 1: tv = self.wids['tv_gtx'] titulo = "Existencias de productos por tipo: geotextiles" elif pagina_activa == 2: tv = self.wids['tv_cemento'] titulo = "Existencias de productos por tipo: fibra de cemento" else: return try: titulo += " (%s)" % almacen.nombre except AttributeError: pass totales = range(1, tv.get_model().get_n_columns()-1) extra_data = [] reports.abrir_pdf(treeview2pdf(tv, titulo = titulo, apaisado = False, pijama = True, numcols_a_totalizar = totales, extra_data = extra_data))
def imprimir(self, boton): """ Prepara la vista preliminar para la impresión del informe. """ pagina_activa = self.wids['notebook'].get_current_page() if pagina_activa == 0: tv = self.wids['tv_por_producto'] titulo = "Existencias por almacén" else: pagina = 0 almacenes = pclases.Almacen.select(pclases.Almacen.q.activo==True, orderBy = "id") for a in almacenes: pagina += 1 if pagina == pagina_activa: tv = self.wids['tv_%d' % a.id] titulo = "Existencias por almacén: %s" % a.nombre from informes.treeview2pdf import treeview2pdf from formularios.reports import abrir_pdf strfecha = "%s - %s" % (utils.str_fecha(mx.DateTime.localtime()), utils.str_hora(mx.DateTime.localtime())) fichpdf = treeview2pdf(tv, titulo = titulo, fecha = strfecha) abrir_pdf(fichpdf)
def imprimir(self, boton): """ Crea un PDF con el contenido del TreeView. """ datos = [] model = self.wids['tv_rollos'].get_model() for i in model: pas = pclases.AlbaranSalida if i[4] == "-" or pas.str_tipos[pas.MOVIMIENTO] in i[4]: en_almacen = i[6] else: en_almacen = "" if ( (self.wids['ch_filtrar'].get_active() and i[4] == "-" or pas.str_tipos[pas.MOVIMIENTO] in i[4]) or (not self.wids['ch_filtrar'].get_active())): datos.append((i[0], i[1], i[3], i[4], en_almacen, i[5])) datos.append(("---", ) * 6) datos.append(("Total almacén (no defectuosos):", self.wids['e_total_almacen'].get_text(), "Total fabricado (incluye defectuosos):", self.wids['e_total_fabricado'].get_text(), "")) if not self.inicio: fechaInforme = 'Hasta: %s' % (utils.str_fecha(self.fin)) else: fechaInforme = utils.str_fecha(self.inicio) + ' - ' + utils.str_fecha(self.fin) if datos != []: desc_producto = self.wids['e_descripcion'].get_text() listado_pdf = geninformes.listado_rollos(datos, desc_producto, fechaInforme) from formularios import reports reports.abrir_pdf(listado_pdf)
def imprimir(self, boton): """ Genera y muestra el PDF del recibo bancario. """ from formularios import reports numrecibo = self.wids['e_numrecibo'].get_text() lugar_libramiento = self.wids['e_lugar_libramiento'].get_text() importe = self.wids['e_importe'].get_text() fecha_libramiento = self.wids['e_fecha_libramiento'].get_text() vencimiento = self.wids['e_fecha_vencimiento'].get_text() codigo_cliente = self.wids['e_codcliente'].get_text() numfactura = self.wids['e_numfactura'].get_text() fechafactura = self.wids['e_fecha_factura'].get_text() persona_pago = self.wids['e_persona_pago'].get_text() domicilio_pago = self.wids['e_domicilio_pago'].get_text() # cuenta_pago = self.wids['cbe_cuenta_origen'].child.get_text() cuenta_pago = self.wids['cbe_cuenta_bancaria_cliente'].child.get_text() nombre_librado = self.wids['e_nombre_librado'].get_text() direccion_librado = self.wids['e_direccion_librado'].get_text() pdf = geninformes.recibo(numrecibo, lugar_libramiento, importe, fecha_libramiento, vencimiento, codigo_cliente, numfactura, fechafactura, persona_pago, domicilio_pago, cuenta_pago, nombre_librado, direccion_librado) reports.abrir_pdf(pdf)
def test_bigbags(): """ Pruebas de impresión de etiquetas de bigbag. """ from formularios.reports import abrir_pdf bigbags = pclases.Bigbag.select(orderBy="-id")[:2] abrir_pdf(crear_etiquetas_bigbags(bigbags)) import time time.sleep(1) abrir_pdf(crear_etiquetas_bigbags(bigbags, lang="en"))
def test_balas(): """ Pruebas de impresión de etiquetas de balas. """ from formularios.reports import abrir_pdf balas = (pclases.Articulo.get_articulo("B215047"), ) abrir_pdf(crear_etiquetas_balas(balas)) import time time.sleep(1) abrir_pdf(crear_etiquetas_balas(balas, lang="en"))
def test_pales(): """ Pruebas de impresión de etiquetas de palé. """ from formularios.reports import abrir_pdf pales = [pclases.Pale.selectBy(codigo="H7880/20")[0]] abrir_pdf(crear_etiquetas_pales(pales)) import time time.sleep(1) abrir_pdf(crear_etiquetas_pales(pales, lang="en"))
def imprimir(self, boton): """ Imprime el TreeView de la ventana. """ from informes.treeview2pdf import treeview2pdf from formularios.reports import abrir_pdf strfecha = self.wids['e_fecha'].get_text() abrir_pdf(treeview2pdf(self.wids['tv_horas'], titulo = "Horas trabajadas", fecha = strfecha))
def test_rollos(): """ Pruebas de impresión de rollos. """ from formularios.reports import abrir_pdf todos = pclases.Rollo.select(orderBy="-id") from random import randrange rollos = (todos[randrange(todos.count())], todos[randrange(todos.count())]) #abrir_pdf(etiqueta_rollos_norma13(rollos, False)) abrir_pdf(etiqueta_rollos_norma13_en(rollos))
def imprimir(self,boton): """ Prepara la vista preliminar para la impresión del informe """ from formularios import reports fechastr = self.wids['e_fecha'].get_text() fecha = utils.parse_fecha(fechastr) reports.abrir_pdf( geninformes.existencias(hasta = fecha, ventana_padre = self.wids['ventana']))
def imprimir(self, boton): from informes.treeview2pdf import treeview2pdf from formularios.reports import abrir_pdf tv = self.wids['tv_datos'] abrir_pdf(treeview2pdf(tv, titulo = "Resumen horas por empleado y día", fecha = self.wids['e_fechainicio'].get_text() + " - " + self.wids['e_fechafin'].get_text(), apaisado = False))
def imprimir(self, boton): """ "Vuerca-vuerca" el TreeView en un PDF. """ from informes.treeview2pdf import treeview2pdf from formularios.reports import abrir_pdf import mx.DateTime strfecha = utils.str_fecha(mx.DateTime.localtime()) tv = self.wids['tv_datos'] abrir_pdf(treeview2pdf(tv, titulo = "Productos", fecha = strfecha, apaisado = True))
def imprimir(self, boton): """ Imprime el TreeView de la ventana. """ from informes.treeview2pdf import treeview2pdf from formularios.reports import abrir_pdf mes = utils.combo_get_value(self.wids['cb_mes']) anno = int(self.wids['sp_anno'].get_value()) strfecha = "%s de %s (%s a %s)" % (mes, anno, self.wids['e_fechaini'].get_text(), self.wids['e_fechafin'].get_text()) tv = self.crear_fake_treeview(self.wids['tv_nominas'], catlaboral = False) abrir_pdf(treeview2pdf(tv, titulo = "Pluses y nóminas", fecha = strfecha, apaisado = True))
def imprimir(self, boton): """ Imprime el TreeView de la ventana. """ from informes.treeview2pdf import treeview2pdf from formularios.reports import abrir_pdf strdiaini = self.wids['e_fecha_ini'].get_text() strdiafin = self.wids['e_fecha_fin'].get_text() abrir_pdf(treeview2pdf(self.wids['tv_horas'], titulo = "Horas trabajadas", fecha = "Del %s al %s" % (strdiaini, strdiafin)))
def imprimir(self, boton): """ Imprime la información en pantalla. """ from formularios import reports from informes import geninformes txt = "LOTE: %s\n" % (self.wids['e_codigo'].get_text()) txt += "PRODUCTO: %s\n\n" % (self.wids['e_nombre'].get_text()) txt += "\nCaracterísticas del lote:\n" txt += " DTEX: %s\n" % (self.wids['e_dtex'].get_text()) txt += " Tenacidad: %s\n" % (self.wids['e_tenacidad'].get_text()) txt += " Alargamiento: %s\n" % (self.wids['e_elongacion'].get_text()) txt += " Corte: %s\n" % (self.wids['e_corte'].get_text()) txt += " Grasa: %s\n" % (self.wids['e_grasa'].get_text()) txt += " Encogimiento: %s\n" % (self.wids['e_encogimiento'].get_text()) txt += " Color: %s\n" % (self.wids['e_color'].get_text()) txt += " Humedad: %s\n" % (self.wids['e_rizo'].get_text()) loteCem = self.loteCem try: dtex = loteCem.bigbags[0].articulos[0].productoVenta.camposEspecificosBala.dtex tolerancia = loteCem.tolerancia mediatitulo = loteCem.mediatitulo except: utils.dialogo_info(titulo = 'ERROR', texto = 'Ocurrió un error buscando el tipo de fibra.', padre = self.wids['ventana']) dtex = 0 tolerancia = 0 mediatitulo = 0 difmax = dtex * tolerancia diferencia = abs(mediatitulo - dtex) if round(diferencia, 2) > difmax: ok = False else: ok = True txt += " Media de título: %s (%s)\n" % (self.wids['e_media'].get_text(), ok and "dentro del %s%% de tolerancia" % utils.float2str(self.wids['sp_tolerancia'].get_value(), 0) or "no cumple el %s%% de tolerancia" % utils.float2str(self.wids['sp_tolerancia'].get_value(), 0) ) txt += " Desviación típica: %s\n" % (self.wids['e_desvtipica'].get_text()) txt += "\nResultados de las pruebas:\n" model = self.wids['tv_pruebas'].get_model() for fila in model: txt += " %s\n" % (fila[0]) txt += " Título (dtex): %s\n" % (fila[1]) txt += " Alargamiento (%%): %s\n" % (fila[2]) txt += " Tenacidad (cN/tex): %s\n" % (fila[3]) txt += " Grasa (%%): %s\n" % (fila[4]) txt += " Encogimiento (%%): %s\n" % (fila[5]) txt += " Humedad (%%): %s\n" % (fila[6]) buff = self.wids['txt_observaciones'].get_buffer() txt += "\nObervaciones: %s\n" % buff.get_text(buff.get_start_iter(), buff.get_end_iter()) reports.abrir_pdf(geninformes.texto_libre(txt, "Resultados de laboratorio: %s" % (self.objeto and self.objeto.codigo or "")))
def imprimir(self, boton): """ "Vuerca-vuerca" el TreeView en un PDF. """ from informes.treeview2pdf import treeview2pdf from formularios.reports import abrir_pdf strfecha = utils.str_fecha(mx.DateTime.localtime()) tv = self.wids['tv_datos'] abrir_pdf(treeview2pdf(tv, titulo = "Resultados de proceso de búsqueda por lote", fecha = strfecha, apaisado = False))