コード例 #1
0
ファイル: albaran_multipag.py プロジェクト: pacoqueen/bbinn
def go(titulo, 
       ruta_archivo, 
       datos_cliente, 
       datos_albaran, 
       lineas_contenido, 
       totales, 
       datos_de_la_empresa):
    """
    Recibe el título del documento y la ruta completa del archivo PDF, 
    los datos del cliente en un diccionario, los del albarán también como 
    diccionario, las líneas como lista de listas, los totales como lista 
    y otra lista con la ruta al logotipo como primer elemento y tantas líneas 
    como datos de la empresa se quieran mostrar junto al logo.
    Devuelve uno o dos nombres de ficheros en PDF con el albarán/carta de 
    porte y (opcionalmente) el documento de recogida de envases.
    """
    doc = SimpleDocTemplate(ruta_archivo, 
                            title = titulo, 
                            topMargin = 4.30*cm, 
                            bottomMargin = 2*cm) 
                            #leftMargin = 1*cm, 
                            #rigthMargin = 1*cm)
    contenido = build_tabla_contenido(lineas_contenido)
    totales = build_tabla_totales(totales)
    #texto = build_texto()
    story = [#Spacer(1, 1.60 * cm),   # Chispa más o menos los datos de cliente.
             #encabezado, 
             Spacer(1, 3.50 * cm), 
             contenido, 
             Linea((1.05*cm, 24.5*cm - 3*cm), 
                   (1.05*cm, 2.5*cm + 0.25*cm)), 
             Linea((PAGE_WIDTH - 1.05*cm, 24.5*cm - 3*cm), 
                   (PAGE_WIDTH - 1.05*cm, 2.5*cm + 0.25*cm)), 
             Spacer(1, 0.15 * cm), 
             totales, 
             lastPageNumberFlowable(0.9*PAGE_WIDTH - 0.5*cm + 1, 1.0*cm)] 
             #Spacer(1, 0.15 * cm), 
             # Línea doble.
             #KeepTogether([LineaHorizontal(0.9 * PAGE_WIDTH), 
             #              Spacer(1, 0.05 * cm), 
             #              LineaHorizontal(0.9 * PAGE_WIDTH)]), 
             #Spacer(1, 0.15 * cm), 
             #CondPageBreak(13*cm), 
             #logo_y_empresa, 
             #Spacer(1, 0.25 * cm), 
             #texto]
    story = utils.aplanar([i for i in story if i])
    _cabecera_y_cliente = lambda c, d: cabecera_y_cliente(c, 
                                                          d, 
                                                          datos_cliente, 
                                                          datos_de_la_empresa, 
                                                          datos_albaran)
    _solo_cabecera = lambda c, d: solo_cabecera(c, 
                                                d, 
                                                datos_de_la_empresa, 
                                                datos_albaran)
    doc.build(story, 
              onFirstPage = _cabecera_y_cliente, 
              onLaterPages = _solo_cabecera)
    return ruta_archivo
コード例 #2
0
def go(ruta_archivo, producto, dic_valores, datos_de_la_empresa, albaran, 
       orden = None):
    """
    Genera, a partir de los datos recibidos, el PDF del certificado de calidad.
    Solo un producto.

    IN:
        ruta_archivo: Nombre del PDF que se generará.
        producto : Objeto pclases del producto.
        dic_valores: diccionario con las características a mostrar, el 
                     método de ensayo, la unidad y el valor numérico (como 
                     texto).
        albaran: Albarán de salida implicado en el certificado.
        datos_de_la_empresa: Registro de pclases con los datos de la empresa.

    OUT: 
        ruta_archivo: La ruta completa en el dir. temp. del archivo generado.
    """
    ruta_archivo = os.path.join(gettempdir(), ruta_archivo)
    doc = SimpleDocTemplate(ruta_archivo, 
                            title = "CERTIFICADO DE CALIDAD", 
                            topMargin = 2.5*cm, 
                            bottomMargin = 3*cm) 
                            #leftMargin = 1*cm, 
                            #rigthMargin = 1*cm)
    denominacion = build_denominacion(producto, albaran)
    marcado = build_marcado(datos_de_la_empresa)
    caracteristicas = build_caracteristicas(dic_valores, orden)
    pie = build_pie(datos_de_la_empresa)
    story = [denominacion, 
             Spacer(1, 0.30 * cm), 
             marcado, 
             Spacer(1, 0.30 * cm), 
             caracteristicas, 
             Spacer(1, 1.00 * cm), 
             pie]
    story = utils.aplanar([i for i in story if i])
    _encabezado = lambda c, d: cabecera(c, datos_de_la_empresa)
    _pie = lambda c, d: pie(c, datos_de_la_empresa)
    doc.build(story, 
              onFirstPage = _encabezado, 
              onLaterPages = _pie)
    return ruta_archivo
コード例 #3
0
ファイル: presupuesto.py プロジェクト: pacoqueen/upy
def go(titulo, 
       ruta_archivo, 
       lineas_datos_empresa, 
       datos_cliente, 
       lineas_contenido, 
       fecha_entradilla, 
       totales = {}, 
       texto = None, 
       despedida = None, 
       ruta_logo = None, 
       validez = None, 
       numpresupuesto = ""):
    """
    Recibe el título del documento y la ruta completa del archivo.
    Si validez != None escribe una frase con la validez del presupuesto.
    """
    doc = SimpleDocTemplate(ruta_archivo, title = titulo)
    encabezado = build_encabezado(lineas_datos_empresa)
    datos_cliente = build_datos_cliente(datos_cliente)
    entradilla = build_entradilla(fecha_entradilla, numpresupuesto)
    texto = build_texto(texto)
    contenido = build_tabla_contenido(lineas_contenido)
    totales = build_tabla_totales(totales)
    despedida = build_texto(despedida)
    story = [encabezado, 
             datos_cliente, 
             entradilla, 
             Spacer(1, 0.2 * cm), 
             texto, 
             Spacer(1, 0.2 * cm), 
             contenido, 
             Spacer(1, 0.25 * cm), 
             totales, 
             Spacer(1, 2 * cm), 
             despedida]
    if validez:
        story.insert(9, build_validez(validez))
    story = utils.aplanar([i for i in story if i])
    _dibujar_logo = lambda c, d: dibujar_logo(c, d, ruta_logo)
    doc.build(story, onFirstPage = _dibujar_logo)
    return ruta_archivo
コード例 #4
0
ファイル: albaran_porte.py プロジェクト: pacoqueen/bbinn
def go(titulo, 
       ruta_archivo, 
       datos_cliente, 
       datos_albaran, 
       lineas_contenido, 
       totales, 
       datos_de_la_empresa, 
       titular, 
       recogida = True):
    """
    Recibe el título del documento y la ruta completa del archivo PDF, 
    los datos del cliente en un diccionario, los del albarán también como 
    diccionario, las líneas como lista de listas, los totales como lista 
    y otra lista con la ruta al logotipo como primer elemento y tantas líneas 
    como datos de la empresa se quieran mostrar junto al logo.
    Devuelve uno o dos nombres de ficheros en PDF con el albarán/carta de 
    porte y (opcionalmente) el documento de recogida de envases.
    «titular» es el nombre legal del responsable de la mercancía.
    """
    # CWT: ¡JODER! Lo juro, en el CVS hay una versión de este fichero que era 
    # una joyita y usaba ReportLab/Platypus en todo su esplendor para 
    # construir una más que decente carta de portes. 
    doc = SimpleDocTemplate(ruta_archivo, 
                            title = titulo, 
                            topMargin = 6.00*cm, 
                            bottomMargin = 13.2*cm) 
                            #leftMargin = 1*cm, 
                            #rigthMargin = 1*cm)
    #encabezado = build_encabezado(datos_albaran)
    contenido = build_tabla_contenido(lineas_contenido)
    totales = build_tabla_totales(totales)
    #texto = build_texto()
    story = [#Spacer(1, 1.60 * cm),   # Chispa más o menos los datos de cliente.
             #encabezado, 
             #Spacer(1, 0.15 * cm), 
             contenido, 
             Spacer(1, 0.15 * cm), 
             totales, 
             lastPageNumberFlowable(PAGE_WIDTH - 1.5*cm, 12.7*cm)] 
             #Spacer(1, 0.15 * cm), 
             # Línea doble.
             #KeepTogether([LineaHorizontal(0.9 * PAGE_WIDTH), 
             #              Spacer(1, 0.05 * cm), 
             #              LineaHorizontal(0.9 * PAGE_WIDTH)]), 
             #Spacer(1, 0.15 * cm), 
             #CondPageBreak(13*cm), 
             #logo_y_empresa, 
             #Spacer(1, 0.25 * cm), 
             #texto]
    story = utils.aplanar([i for i in story if i])
    _cabecera_y_cliente = lambda c, d: cabecera_y_cliente(c, 
                                                          d, 
                                                          datos_cliente, 
                                                          datos_de_la_empresa, 
                                                          titular, 
                                                          datos_albaran)
    doc.build(story, 
              onFirstPage = _cabecera_y_cliente, 
              onLaterPages = _cabecera_y_cliente)
    if recogida:
        ruta_archivo_envases = ruta_archivo[::-1].replace(".pdf"[::-1], 
                                                          "_env.pdf"[::-1], 
                                                          1)[::-1] 
        doc2 = SimpleDocTemplate(ruta_archivo_envases, 
                                 title = titulo + " (doc. recogida envases)") 
        mas_texto = build_mas_texto(titular)
        logo_y_empresa = build_marco_logo_y_empresa(datos_de_la_empresa)
        story = [#Última página: más texto genérico y cosas rellenables a mano.
                 #PageBreak(), 
                 logo_y_empresa, 
                 mas_texto, 
                 Spacer(1, 4 * cm), # firmas, 
                 KeepTogether([LineaHorizontal(0.9 * PAGE_WIDTH), 
                               Spacer(1, 0.05 * cm), 
                               LineaHorizontal(0.9 * PAGE_WIDTH)]), 
                 cuadritos_en_ruta(), 
                 Spacer(1, 2*cm), 
                 build_todavia_mas_texto(), 
                ]
        story = utils.aplanar([i for i in story if i])
        doc2.build(story) 
    else:
        ruta_archivo_envases = None
    return ruta_archivo, ruta_archivo_envases
コード例 #5
0
ファイル: factura_multipag.py プロジェクト: pacoqueen/bbinn
def go(titulo,
       ruta_archivo,
       datos_cliente,
       datos_factura,
       lineas_contenido,
       totales,
       datos_de_la_empresa,
       observaciones = "",
       vencimientos = [],
       forma_de_pago = ""):
    """
    Recibe el título del documento y la ruta completa del archivo PDF,
    los datos del cliente en un diccionario, los del factura también como
    diccionario, las líneas como lista de listas, los totales como lista
    y otra lista con la ruta al logotipo como primer elemento y tantas líneas
    como datos de la empresa se quieran mostrar junto al logo.
    """
    doc = SimpleDocTemplate(ruta_archivo,
                            title = titulo,
                            topMargin = 4.30*cm,
                            #bottomMargin = 2*cm)
                            bottomMargin = 4*cm)
                            #leftMargin = 1*cm,
                            #rigthMargin = 1*cm)
    contenido = build_tabla_contenido(lineas_contenido)
    tabla_totales = build_tabla_totales(totales)
    vencimientos = build_tabla_vencimientos(observaciones,
                                            vencimientos,
                                            forma_de_pago)
    #texto = build_texto()
    story = [#Spacer(1, 1.60 * cm),   # Chispa más o menos los datos de cliente.
             #encabezado,
             Spacer(1, 3.50 * cm),
             contenido,
             Linea((1.05*cm, 24.5*cm - 3*cm),
                   (1.05*cm, 2.5*cm + 3*cm + 0.25*cm)),
             Linea((PAGE_WIDTH - 1.05*cm, 24.5*cm - 3*cm),
                   (PAGE_WIDTH - 1.05*cm, 2.5*cm + 3*cm + 0.25*cm)),
             Spacer(1, 0.15 * cm),
             tabla_totales,
             Spacer(1, 0.25 * cm),
             vencimientos,
             lastPageNumberFlowable(0.9*PAGE_WIDTH - 0.5*cm + 1, 1.0*cm)]
             #Spacer(1, 0.15 * cm),
             # Línea doble.
             #KeepTogether([LineaHorizontal(0.9 * PAGE_WIDTH),
             #              Spacer(1, 0.05 * cm),
             #              LineaHorizontal(0.9 * PAGE_WIDTH)]),
             #Spacer(1, 0.15 * cm),
             #CondPageBreak(13*cm),
             #logo_y_empresa,
             #Spacer(1, 0.25 * cm),
             #texto]
    story = utils.aplanar([i for i in story if i])
    _cabecera_y_cliente = lambda c, d: cabecera_y_cliente(c,
                                                          d,
                                                          datos_cliente,
                                                          datos_de_la_empresa,
                                                          datos_factura)
    _solo_cabecera = lambda c, d: solo_cabecera(c,
                                                d,
                                                datos_de_la_empresa,
                                                datos_factura)
    doc.build(story,
              onFirstPage = _cabecera_y_cliente,
              onLaterPages = _solo_cabecera)
    return ruta_archivo