Informes en PDF

Con Studio, puedes editar informes PDF existentes (por ejemplo, facturas, presupuestos, etc.) o crear nuevos.

Diseño predeterminado

El diseño predeterminado de los informes se gestiona fuera de Studio. Ve a Ajustes y luego, en la sección Empresas de la página principal, haz clic en Configurar diseño de documento. Los ajustes de diseño son específicos de cada empresa, pero se aplican a todos los informes.

Truco

Puedes ver cómo afectan los diferentes ajustes al diseño del informe en la vista previa del informe en el lado derecho de la ventana Configura el diseño de tu documento. Al crear o editar un informe, puedes ver una vista previa del informe haciendo clic en Vista previa de impresión en el lado izquierdo de la pantalla.

Use los siguientes ajustes:

  • Diseño: Hay siete diseños disponibles:

    Ejemplo del diseño de informe Light
  • Fondo: Están disponibles los siguientes fondos:

    • En blanco: No se muestra nada.

    • Logo de demostración: Se muestra un logo de demostración en el fondo.

    • Personalizado: Sube una imagen de fondo personalizada.

  • Texto: Hay ocho fuentes disponibles: Lato, Roboto, Open Sans, Montserrat, Oswald, Raleway, Tajawal (que admite escrituras árabe y latina) y Fira Mono. Visita el sitio web de Google Fonts para previsualizarlas.

  • Colores: cambie los colores primarios y secundarios que se utilizan para estructurar los informes. Los colores predeterminados se generan de forma automática con los colores del logotipo.

  • Dirección: El nombre y la dirección de la empresa se muestran en el encabezado de los informes externos. Puedes añadir múltiples líneas de texto.

  • Eslogan: Se muestra en el encabezado de los informes externos que usan los diseños Light, Striped, Bubble, Wave y Folder, y en el pie de página de los informes externos que usan los diseños Boxed y Bold. Puedes añadir múltiples líneas de texto.

  • Formato de papel: Define el tamaño de papel predeterminado de los informes. Puedes seleccionar A4 (21 cm x 29,7 cm) y US Letter (21,59 cm x 27,54 cm). Esto también se puede definir para informes individuales en el campo Formato de papel en Studio.

    Nota

    Pueden estar disponibles otros formatos de papel dependiendo de qué aplicaciones o módulos tengas instalados, por ejemplo, hojas de etiquetas para la aplicación Inventario o credenciales de eventos para la aplicación Eventos.

Crear nuevos informes PDF

Para crear un nuevo informe para un modelo, (por ejemplo, pedidos de venta) accede al modelo, haz clic en el botón (Activar Studio), luego haz clic en Informes. Haz clic en Nuevo y, en la ventana emergente que se abre, selecciona el tipo de informe. Esto se usa únicamente para determinar qué se muestra en el encabezado y el pie de página:

Después de que creó el informe podrá comenzar a editarlo.

Editar informes PDF

Para acceder a los informes disponibles para un modelo, accede al modelo, haz clic en el botón (Activar Studio), luego haz clic en Informes. Selecciona un informe existente para abrirlo.

También puede abrir Studio, hacer clic en Informes y buscar un informe o modelo en particular.

Importante

Se recomienda encarecidamente duplicar el informe estándar y realizar cambios en la versión duplicada. Para duplicar un informe, coloca el puntero del ratón en la esquina superior derecha del informe, haz clic en el icono (elipsis vertical) y luego selecciona Duplicar.

Duplicación de un informe PDF

Opciones

Una vez que hayas seleccionado o creado un informe, puedes usar las opciones en la parte izquierda de la pantalla para:

  • Cambiar el nombre del informe: el nuevo nombre se aplica en todas partes (en Studio, en el menú Imprimir bajo el icono (engranaje) en la vista de formulario y en el nombre del archivo PDF).

  • Modificar el formato de papel: si no se selecciona ningún valor, se usa el formato definido en el diseño predeterminado.

  • Mostrar en menú de impresión: para añadir el informe al menú Imprimir en la vista de formulario.

  • Volver a cargar desde archivo adjunto: para guardar el informe como un archivo adjunto en el registro la primera vez que se genera y volver a cargar la versión original del informe después. Esto es necesario de forma legal para las facturas y por lo general se utiliza en este caso.

  • Limitar visibilidad a grupos: para limitar la disponibilidad del informe en PDF a grupos de usuarios específicos.

  • Editar fuentes: para modificar el informe directo desde el archivo XML.

  • Restablecer informe: para descartar todos los cambios realizados en el informe y restablecerlo a su versión estándar.

  • Vista previa de impresión: para generar y descargar una vista previa del informe.

Editor de informes

El editor de informes te permite modificar el contenido y formato del informe.

Truco

  • Puedes Deshacer o Rehacer cambios usando los botones relacionados o los atajos CTRL + Z y CTRL + Y.

  • Los cambios se guardan en automático cuando sale del informe, también puede guardarlos de forma manual con el botón Guardar.

  • Puede restablecer el informe a su versión estándar si hace clic en el botón Restablecer informe que está situado en la parte izquierda de la pantalla.

Importante

Editar el encabezado y el pie de página de un informe afectara a los informes estándar y a los personalizados.

Bloques condicionales

Los rectángulos punteados representan bloques condicionales (sentencias if-else). Estos se utilizan para mostrar u ocultar contenido según condiciones específicas. Haga clic en el bloque para ver las condiciones.

Ver las condiciones aplicadas a un bloque.

Seleccione un valor para previsualizar el resultado correspondiente y edítelo si es necesario.

Previsualizar el resultado de otra condición.

Nota

Las condiciones solo se pueden editar en el XML.

Otro contenido

Hay dos tipos de contenido de texto en los informes:

  • Texto estático, es decir, el texto que no está resaltado en azul, que se puede modificar directamente en el editor.

  • Texto dinámico, es decir, el texto que está resaltado en azul, que es reemplazado por valores de campo cuando se genera el informe, por ejemplo, el número de pedido de venta o la fecha de presupuesto.

Puedes añadir contenido (por ejemplo, campos, listas, tablas, imágenes, banners, etc.) al informe usando comandos. Escribe / para abrir el powerbox, luego escribe el nombre del comando o selecciónalo de la lista.

Para agregar texto estático solo deberá escribirlo en donde sea necesario.

En caso de que necesite realizar cambios más avanzados, puede editar el informe directo en el XML.

Agregar un campo

Para añadir un campo, escribe / y selecciona el comando Campo. En la lista que se abre, selecciona o busca el campo; haz clic en la flecha derecha junto al nombre del campo para acceder a la lista de campos relacionados si es necesario. Luego, especifica el valor predeterminado que se mostrará si el campo no está completado en el registro y pulsa Enter.

Seleccione un campo relacionado.
Añadir o editar una tabla

Hay dos tipos de tablas en los informes:

  • Tablas estáticas, que se usan para mostrar texto estático o campos. Para este tipo de tabla, defines el número de columnas y filas al añadir la tabla.

  • Tablas dinámicas, que se usan para mostrar datos de campos relacionales. Para este tipo de tabla, solo defines el número de columnas al añadir la tabla. El número de filas en el informe generado estará determinado por el número de registros en el modelo relacionado que están vinculados con el modelo actual.

    Example

    En un informe de pedido de venta, se usa una tabla dinámica para mostrar las líneas de pedido relacionadas con el pedido de venta. Si el pedido de venta contiene 10 líneas de pedido, la tabla en el informe generado tiene 10 filas; si contiene dos líneas de pedido, la tabla tiene dos filas.

Añadir o editar una tabla estática

Para añadir una tabla estática, escribe / y selecciona el comando Tabla. Determina el número de columnas y filas para la tabla. Una vez que se ha añadido la tabla, puedes empezar a editarla.

Puedes insertar, mover y eliminar columnas y filas usando las herramientas de tabla. Posiciona el cursor encima de la columna o a la izquierda de la fila, luego haz clic en el rectángulo morado y selecciona una opción.

Lista de opciones disponibles para editar la estructura de la tabla.

Para redimensionar una columna, arrastra el borde de la columna hasta la posición deseada; restablece todas las columnas a su tamaño estándar seleccionando Restablecer tamaño en las herramientas de tabla.

Añade el campo de tu elección en una celda o añade texto estático escribiendo.

Truco

Para añadir texto de forma estructurada sin usar una tabla, puedes usar columnas. Añade columnas escribiendo / y seleccionando el comando apropiado: 2 columnas, 3 columnas o 4 columnas.

Añadir o editar una tabla dinámica

Nota

  • Solo las relaciones de tipo one2many o many2many pueden mostrarse como tablas dinámicas.

  • Una tabla dinámica existente en un informe estándar tiene una estructura más compleja que una tabla dinámica que añades tú mismo. Para dichas tablas, es posible insertar o eliminar columnas; no es posible mover columnas o insertar, mover o eliminar filas.

Para añadir una tabla dinámica, escribe / y selecciona el comando Tabla dinámica. En la lista que se abre, selecciona o busca la relación en la que se basará la tabla y pulsa Intro. Una vez añadida la tabla, puedes empezar a editarla.

Puedes insertar, mover y eliminar columnas usando las herramientas de tabla, como en una tabla estática. También es posible insertar filas estáticas que aparecerán encima o debajo de las filas generadas.

Para añadir un campo a una celda, elimina cualquier texto de marcador de posición y luego añade el campo de tu elección. El cuadro de diálogo que se abre muestra el objeto de origen del campo (p. ej., el modelo Líneas de pedido) y la lista de campos disponibles.

Lista de campos disponibles para el modelo de líneas de pedido de venta.

Reemplaza la etiqueta Nombre de columna por la etiqueta de tu elección.

Nota

La fila predeterminada itera automáticamente sobre el contenido del campo, generando una fila en el informe por cada valor del campo (p. ej., una fila por línea de pedido).

Formato

Para dar formato al texto en el informe, selecciónalo y luego dale formato usando las opciones del editor de texto.

Proporcionar formato al texto con el editor de texto.

Editar el XML de un informe

Advertencia

Modificar el XML podría ocasionar errores en los informes durante la actualización. Si esto ocurre, solo copie los cambios de la base de datos anterior en su base de datos actualizada.

Haga clic en Editar fuentes en el panel izquierdo para editar el XML del informe.

Ejemplos

Para cambiar cómo se presentan los datos en tu informe, puedes modificar el widget predeterminado de un campo manualmente. En el ejemplo siguiente, la fecha del pedido muestra la fecha y hora por defecto, mientras que el precio unitario tiene por defecto una precisión de dos decimales.

<div class="oe_structure">
 <span t-field="doc.date_order"/>
 <span t-field="doc.price_unit"/>
</div>

Usando t-options, en este caso la opción widget, estos campos pueden modificarse para mostrar solo la fecha y una precisión de cuatro decimales, respectivamente:

<div class="oe_structure">
 <span t-field="doc.date_order" t-options="{'widget': 'date'}"/>
 <span t-field="doc.price_unit" t-options="{'widget': 'float', 'precision': 4}"/>
</div>

Si desea mostrar u ocultar contenido según condiciones específicas puede agregar declaraciones de control if/else de forma manual al XML del informe.

Por ejemplo, si desea ocultar una tabla de datos personalizada en caso de que no haya etiquetas, puede utilizar el atributo t-if para definir la condición. Esta se evaluará como True o False y la tabla no aparecerá si no hay etiquetas en la cotización.

<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
    <!-- thead = table header, the row with column titles -->
    <thead>
        <!-- table row element -->
        <tr>
            <!-- table header element -->
            <th>ID</th>
            <th>Name</th>
        </tr>
    </thead>
    <!-- table body, the main content -->
    <tbody>
        <!-- we create a row for each subrecord with t-foreach -->
        <tr t-foreach="doc.tag_ids" t-as="tag">
            <!-- for each line, we output the name and price as table cells -->
            <td t-out="tag.id"/>
            <td t-out="tag.name"/>
        </tr>
    </tbody>
</table>

Si desea mostrar otro bloque en caso de que la declaración t-if se evalúe como False, puede especificarlo con la declaración t-else. El bloque t-else debe estar inmediatamente después del bloque t-if en la estructura del documento. No es necesario que especifique alguna condición en el atributo t-else. Como ejemplo, veamos cómo mostrar un mensaje rápido que explique que la cotización no tiene etiquetas:

<!-- table root element -->
<table class="table" t-if="len(doc.tag_ids) > 0">
    <!-- thead = table header, the row with column titles -->
    <thead>
        <!-- table row element -->
        <tr>
            <!-- table header element -->
            <th>ID</th>
            <th>Name</th>
        </tr>
    </thead>
    <!-- table body, the main content -->
    <tbody>
        <!-- we create a row for each subrecord with t-foreach -->
        <tr t-foreach="doc.tag_ids" t-as="tag">
            <!-- for each line, we output the name and price as table cells -->
            <td t-out="tag.id"/>
            <td t-out="tag.name"/>
        </tr>
    </tbody>
</table>
<div class="text-muted" t-else="">No tag present on this document.</div>

Al utilizar la notación t-if/t-else, el editor de informes reconoce que estas secciones se excluyen entre sí y deben aparecer como bloques condicionales:

Previsualización del resultado en caso de que haya etiquetas.

Puede alternar entre condiciones con el editor para previsualizar los resultados:

Previsualización del resultado en caso de que no haya etiquetas.

En caso de que desee tener varias opciones también puede utilizar las directivas t-elif para agregar condiciones intermedias. Por ejemplo, aquí el título de los informes de las órdenes de venta cambia según la condición del documento correspondiente.

<h2 class="mt-4">
    <span t-if="env.context.get('proforma', False) or is_pro_forma">Pro-Forma Invoice # </span>
    <span t-elif="doc.state in ['draft','sent']">Quotation # </span>
    <span t-else="">Order # </span>
    <span t-field="doc.name">SO0000</span>
</h2>

El título Factura proforma se utiliza en función de algunas condiciones contextuales. Si estas condiciones no se cumplen y el estado del documento es draft o sent, entonces se utiliza Cotización. Si ninguna de esas condiciones se cumple, el título del informe es Orden.

Trabajar con imágenes en un informe puede ser complicado, ya que el control preciso sobre el tamaño y comportamiento de la imagen no siempre es obvio. Puedes insertar campos de imagen usando el editor de informes (usando el comando Campo), pero insertarlas en XML usando la directiva t-field y los atributos t-options acompañantes proporciona un mejor control de tamaño y posicionamiento.

Por ejemplo, el siguiente código muestra el campo image_128 del producto de la línea como una imagen de 64 píxeles de ancho (con una altura automática según la relación de aspecto de la imagen).

<span t-field="line.product_id.image_128" t-options-widget="image" t-options-width="64px"/>

Las siguientes opciones están disponibles para los widgets de imagen:

  • width: ancho de la imagen. Por lo general se usan píxeles o unidades de longitud CSS (por ejemplo, rem) (no lo use si desea que el ancho se establezca de forma automática).

  • height: altura de la imagen. Por lo general se usan píxeles o unidades de longitud CSS (por ejemplo, rem) (no lo use si desea que la altura se establezca de forma automática).

  • class: las clases CSS aplicadas en la etiqueta img. También están disponibles las clases de Bootstrap.

  • alt: texto alternativo de la imagen.

  • style: atributo de estilo. Le permite anular estilos con mayor libertad que con las clases de Bootstrap.

Estos atributos deben contener cadenas, es decir, texto entrecomillado dentro de otras comillas, por ejemplo, t-options-width="'64px'" (o una expresión Python válida como alternativa).

Nota

No puede utilizar el widget de imagen en una etiqueta img. Use t-field en un nodo span (para contenido en línea) o div (para contenido en bloque).

Por ejemplo, es necesario agregar una columna con la imagen del producto a la tabla de la cotización:

<table class="table table-sm o_main_table table-borderless mt-4">
    <thead style="display: table-row-group">
        <tr>
            <th>Image</th>
            <th name="th_description" class="text-start">Description</th>
            <th>Product Category</th>
            <th name="th_quantity" class="text-end">Quantity</th>
            <th name="th_priceunit" class="text-end">Unit Price</th>
[...]
        <t t-foreach="lines_to_report" t-as="line">
            <t t-set="current_subtotal" t-value="current_subtotal + line.price_subtotal"/>
            <tr t-att-class="'bg-200 fw-bold o_line_section' if line.display_type == 'line_section' else 'fst-italic o_line_note' if line.display_type == 'line_note' else ''">
                <t t-if="not line.display_type">
                   <td>
                       <span t-field="line.product_template_id.image_128"
                             t-options-widget="'image'"
                             t-options-width="'64px'"
                             t-options-class="'rounded-3 shadow img-thumbnail'"
                           />
                   </td>
                    <td name="td_name"><span t-field="line.name">Bacon Burger</span></td>
                    <td t-out="line.product_id.categ_id.display_name"/>

El atributo t-options-width restringe el ancho de la imagen a 64 píxeles y las clases de Bootstrap que se utilizan en t-options-class crean un borde similar a una miniatura con las esquinas redondeadas y una sombra.

Agregar una columna con la imagen del producto a la tabla de la cotización.