Example #1
0
def build_tabla_contenido(dic_material, lineas_ensayo, dic_peticion):
    """
    Devuelve una lista de párrafos y líneas horizontales con las cuatro filas 
    de material, ensayos, observaciones y persona que recogió el pedido. 
    Extrae los datos que necesita de los diccionarios recibidos.
    """
    linea = LineaHorizontal(ANCHO)# - MARGEN_IZQUIERDO - MARGEN_IZQUIERDO - 1*cm) 
    # Para que la última línea de "recibido" esté pegada al fondo de la página 
    # hay que meter espacio en observaciones (dejando, de paso, espacio para 
    # anotaciones a boli). Como la página se construye dinámicamente, tengo 
    # que estimar el espacio que falta en función a la información escrita 
    # hasta ahora.
    #restante = 2*cm
    # TODO: Empiezo con una estimación al azar. Ya afinaré o acabaré 
    # metiendo la línea "Recibido" como pie de página igual que hice con 
    # los totales de factura_multipag.
    #espacio = Spacer(ANCHO, restante)
    estilos["Normal"].leading = 8
    estilos["Normal"].leftIndent = 10
    estilos["BodyText"].leftIndent = 30
    #estilos["Normal"].fontSize -= 2
    material0 = Paragraph("<u>MATERIAL A ENSAYAR:</u>", estilos["Normal"])
    material1 = Paragraph(escribe(dic_material["material"]), 
                          estilos["BodyText"])
    #material = Table([[material0], [material1]], hAlign = enums.TA_LEFT, 
    #    colWidths = (ANCHO))
    #material.setStyle(TableStyle([
    #    ("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
    #    ('LINEABOVE', (0, 0), (-1, 0), 1, colors.black),  
    #    ('LINEBELOW', (0, 1), (-1, 1), 1, colors.black),  
    #    ]))
    ensayos0 = Paragraph("<u>ENSAYOS SOLICITADOS:</u>", estilos["Normal"])
    ensayos1 = []   # Después se "aplanará"
    if not lineas_ensayo:
        lineas_ensayo = [""]    # Que haya al menos un huequín que haga bonito.
    for ensayo in lineas_ensayo:
        ensayos1.append(Paragraph(escribe(ensayo), estilos["BodyText"]))
    observaciones0 = Paragraph("<u>OBSERVACIONES:</u>", estilos["Normal"])
    observaciones1 = Paragraph(escribe(dic_peticion["observaciones"]), 
                               estilos["BodyText"])
    recibido0 = Paragraph("Recibido por:", estilos["Normal"])
    recibido1 = Paragraph(escribe(dic_peticion["recibido por"]), 
                          estilos["BodyText"])
    res = [linea, Spacer(1, 0.05*cm), material0, material1, Spacer(1, 0.2*cm),
           linea, Spacer(1, 0.05*cm), ensayos0, ensayos1, Spacer(1, 0.2*cm),
           linea, Spacer(1, 0.05*cm), observaciones0, observaciones1]
           # , espacio, linea, recibido0, 
           # recibido1, Spacer(1, 0.2*cm), linea]
    recibido = TablaFija(MARGEN_IZQUIERDO + 4*cm, 1*cm, 
        [[recibido0], [recibido1]], hAlign = enums.TA_LEFT, 
        colWidths = (ANCHO)
        ) 
    recibido.setStyle(TableStyle([
        ("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
        ('LINEABOVE', (0, 0), (-1, 0), 1, colors.black),  
        ('LINEBELOW', (0, 1), (-1, 1), 1, colors.black),  
        ]))
    res.append(recibido)
    return res
Example #2
0
def build_encabezado(lineas_empresa, dpeticion):
    """
    Cuadro de encabezado con el logotipo de la empresa (posición 0 de 
    lineas_empresa) y los datos recibidos (posiciones 1 en adelante).
    """
    logo = lineas_empresa[0]
    info = lineas_empresa[1:]
    #estilos["h6"].fontSize -= 2
    estilos["h6"].spaceAfter = 0
    estilos["h6"].spaceBefore = 0
    if lineas_empresa [0]:
        logo = Image(lineas_empresa[0])
        logo.drawHeight = 1.5*cm * logo.drawHeight / logo.drawWidth
        logo.drawWidth = 1.5*cm
    else:
        logo = Paragraph("", estilos["h6"])
    lineas_empresa = lineas_empresa[1:]
    #if len(lineas_empresa) <= 3:
    #    empresa = Preformatted("\n".join(lineas_empresa) + 
    #        "\nHoja n.º: {hoja}"
    #        "\nFecha pedido: {fecha pedido}".format(**dpeticion),
    #        estilos["h6"])
    #else:
    #    texto_empresa = lineas_empresa[0] + "\n"
    #    resto_lineas = lineas_empresa[1:]
    #    pivot = len(resto_lineas)/2
    #    r1, r2 = resto_lineas[:pivot], resto_lineas[pivot:]
    #    texto_empresa += ". ".join(r1) + "\n" + ". ".join(r2)
    #    empresa = Preformatted(texto_empresa + 
    #        "\nHoja n.º: {hoja:d}"
    #        "\nFecha pedido: {fecha pedido:s}".format(**dpeticion), 
    #        estilos["h6"])
    empresa = []
    for l in lineas_empresa:
        empresa.append(Paragraph(l, estilos["h6"]))
    estilos["h2"].spaceAfter = 0
    estilos["h2"].spaceBefore = 0
    estilos["h2"].alignment = enums.TA_LEFT
    estilos["h2"].fontSize = 10
    estilos["h2"].leading = 10
    empresa.append(Paragraph("Hoja n.º: {hoja:d}".format(**dpeticion), 
                             estilos["h2"]))
    empresa.append(Paragraph(
                    "Fecha pedido: {fecha pedido:s}".format(**dpeticion), 
                    estilos["h2"]))
    estilos["h5"].alignment = enums.TA_CENTER
    datos = ([logo, 
              Paragraph("SOLICITUD DE RECOGIDA", estilos["h5"]), 
              empresa], 
            )
    #encabezado = TablaFija(MARGEN_IZQUIERDO + 5.9*cm, ALTO - 3*cm, 
    encabezado = TablaFija(MARGEN_IZQUIERDO + 4*cm, ALTO - 3*cm, 
        datos, hAlign = enums.TA_CENTER, colWidths = (
            (ANCHO - MARGEN_IZQUIERDO - MARGEN_DERECHO - 4*cm) * (1/4.), 
            (ANCHO - MARGEN_IZQUIERDO - MARGEN_DERECHO) * (1/4.), 
            (ANCHO - MARGEN_IZQUIERDO - MARGEN_DERECHO) * (1/2.)))
    encabezado.setStyle(TableStyle([
        ("ALIGN", (0, 0), (1, 0), "CENTER"),
        ("ALIGN", (2, 0), (2, 0), "LEFT"),
        ("VALIGN", (0, 0), (-1, -1), "MIDDLE"),
        ('GRID', (0, 0), (-1, -1), 1, colors.black),  
        ]))
    return encabezado