Exportar e importar datos

En Odoo, a veces es necesario exportar o importar datos para crear reportes o modificar datos. En esta documentación se hablará sobre la exportación e importación de datos a y desde Odoo.

Importante

Es posible que los usuarios obtengan un error de “tiempo de espera agotado”, o que no se procese un registro debido al tamaño. Esto puede ocurrir con exportaciones grandes, o en casos donde el archivo es muy grande. Para evitar esta limitación en el tamaño de los archivos, es necesario procesar exportaciones o importaciones en lotes pequeños.

Exportar datos desde Odoo

Al trabajar con una base de datos, a veces es necesario exportar los datos a otro archivo. Esto ayuda a crear reportes de actividades, aunque Odoo cuenta con una herramienta de reportes precisa para cada aplicación disponible.

With Odoo, the values can be exported from any field in any record. To do so, activate the list view with the (List) icon, on the items that need to be exported, and then select the records that should be exported. To select a record, tick the checkbox next to the corresponding record. Finally, click the Actions button, and select Export.

Captura de pantalla del proceso para exportar datos.

Truco

Records can also be exported from the (Kanban) view. To select a first record, hold Alt and click its card; while the key is held, a Click to select tooltip is displayed on the cards. Once a record is selected, click another card to add it to the selection, or hold Shift while clicking to select a whole range. Then, click the Actions button, and select Export.

When clicking on Export, an Export Data pop-up window appears. The left side lists the Available fields of the records, and the right side the Fields to export, i.e., the columns of the generated file.

Captura de pantalla de las diferentes opciones que se deben considerar al exportar datos en Odoo.
  1. With the Updatable fields only switch enabled, only the fields that can be imported back into Odoo are listed. This is helpful in the case where the existing records need to be updated. This works like a filter on the Available fields list only; the Fields to export list is left untouched. Leaving the switch disabled gives many more field options because it shows all the fields, not only the ones that can be imported.

  2. Use the Search… bar to find specific fields. Matching sub-fields are displayed as well, with their parent field expanded automatically.

  3. These are the items that can be exported. Use the (Show sub-fields) icon to display more sub-field options. To add a field to the Fields to export list, click the (Select field) icon at the right of the field, or double-click a field that has no sub-fields.

  4. Select the Format of the generated file: Excel Workbook (.xlsx), which holds information about all the worksheets in a file, including both content and formatting, or Plain Text (.csv), where items are separated by a comma.

  5. The Fields to export list holds the columns of the exported file, in order. Use the (Sort) icon at the left of a field to drag and drop it up or down, changing the order in which the columns are displayed in the exported file. Click the (Remove field) icon to remove a field from the list.

  6. For recurring reports, save the current selection as an export template and select it from the drop-down menu the next time the same list needs to be exported.

  7. If the database has several languages installed and at least one selected field is translatable, a Languages field is displayed to export translations.

Once everything is set, click Export to download the file.

Truco

Es útil saber el identificador externo del campo. Por ejemplo, el identificador externo de Empresa relacionada en la interfaz de exportación del usuario es parent_id. Esto es útil porque así los únicos datos exportados serán los que se deban modificar y volver a importar.

Export templates

Export templates save a set of fields, their order, and the languages to export, so that the same file structure can be reused later. They are saved per model, and are shared with the other users of the database.

To create a template, select the needed fields, click the (Save as export template) icon next to the template drop-down menu, type a unique name, and click the (Apply changes) icon. Press Enter to save, or Escape to discard.

Naming an export template before saving it.

To edit an existing template, select it from the drop-down menu, then click the (Edit template name and/or fields) icon. Its name, fields, field order, and languages can then all be changed, and are saved with the (Apply changes) icon. Click the (Discard changes) icon to leave the template as it was.

Buttons to edit or delete the selected export template.

To delete a template, select it from the drop-down menu, click the (Delete the template) icon, and confirm.

Nota

Changing the fields, their order, or the languages while a template is selected, but not being edited, clears the template selection and keeps the current selection as an unsaved working set. This makes it possible to build a new template on top of an existing one without altering it.

Export translations

When more than one language is installed on the database, and at least one field of the Fields to export list is translatable, a Languages field is displayed below that list. By default, no language is selected and translatable fields are exported in the user’s own language.

Click the Languages field and select one or several languages to export the translations of every translatable field in those languages. Each selected language is displayed as a tag, and can be removed by clicking the (Remove) icon on it.

Two languages selected in the Languages field of the export dialog.

In the generated file, every translatable field is then replaced by one column per selected language, named after the field and the language code, e.g., Name@fr_FR. This is the same convention as the one used by the import, so an export made with the Updatable fields only switch enabled can be re-imported with its translations directly.

Importar datos a Odoo

Importar datos a Odoo es muy útil, sobre todo durante la implementación o cuando necesita actualizar datos en lote. La documentación a continuación menciona cómo importar datos a una base de datos de Odoo.

Advertencia

Las importaciones son permanentes y no se pueden deshacer. Sin embargo, es posible usar filtros (Creado el o Última modificación) para identificar registros que se cambiaron o se crearon con la importación.

Truco

Al activar el modo de desarrollador se cambian los ajustes de importación visibles en el menú de la izquierda y se mostrará el menú Avanzado. En este menú se incluyen dos opciones: Registrar historial durante la importación y Permitir emparejamiento con subcampos.

Captura de pantalla de las opciones de importación avanzadas que aparecen cuando se activa el modo de desarrollador.

Si el modelo utiliza openchatter, la opción Registrar historial durante la importación configura las suscripciones y envía notificaciones durante la importación, pero la importación será más lenta.

Si selecciona la opción Permitir emparejamiento con subcampos, entonces todos los subcampos dentro de un campo se usan para coincidir con el Campo Odoo al realizar la importación.

Información básica

Puede importar datos a cualquier objeto empresarial de Odoo con formatos Excel (.xlsx) o CSV (.csv). Esto incluye: contactos, productos, estados de cuenta, asientos y órdenes.

Abre la vista del objeto al que deseas importar o subir los datos, haz clic en el icono (Acción) y, en el menú desplegable, selecciona (Importar registros).

Captura de pantalla del menú de acción con la opción para importar registros resaltada.

Haz clic en Importar plantilla para clientes en el centro de la página para descargar una plantilla y completarla con los datos de la empresa. Puedes importar estas plantillas con un solo clic porque el mapeo de datos ya está configurado.

Sigue estos pasos para subir la plantilla descargada o un archivo existente:

  1. Haga clic en Subir archivo de datos y seleccione el archivo deseado.

  2. Ajuste las opciones de Formato como sea necesario (solo para archivos CSV).

  3. Asegúrese de que todos los datos en la columna de archivo estén mapeados de forma correcta a su campo de Odoo y no tenga errores.

  4. (Opcional) Haga clic en Cargar datos del archivo para volver a cargar el mismo archivo o subir uno diferente.

  5. Haga clic en Probar para verificar que los datos sean válidos.

  6. Haga clic en Load Data File Importar.

Nota

Las opciones de formato no aparecen al importar el tipo de archivo propietario de Excel (es decir, .xls o .xlsx).

Adaptar una plantilla

En la herramienta de importación se proporcionan las plantillas para importar los datos más comunes (contactos, productos, estados de cuenta bancarios, entre otros). Puede abrirlas con cualquier software de hojas de cálculo (Microsoft Office, OpenOffice, Google Drive y otros).

Una vez que se descargue la plantilla, siga los siguientes pasos:

  • Agregue, elimine y organice columnas para que se adapten mejor a la estructura de su información.

  • Se le recomienda no quitar la columna ID externo (ID) (vea por qué en la siguiente sección).

  • Configure un ID único para cada registro, solo tiene que arrastrar hacia abajo la secuencia de ID en la columna ID externo (ID).

Animación de un cursor arrastrando la selección hacia abajo en la columna de ID para que cada registro tenga un ID único.

Nota

Al agregar una nueva columna, es posible que Odoo no pueda mapearla automáticamente si la etiqueta no corresponde a ningún campo dentro de Odoo. Sin embargo, puede mapear las nuevas columnas de forma manual cuando pruebe la importación. Busque el campo correspondiente en el menú desplegable.

Captura de pantalla de un menú desplegable expandido en la pantalla principal de importación en Odoo.

Después, use la etiqueta de este campo para asegurar que las importaciones futuras serán exitosas.

Truco

Otra forma útil de identificar los nombres correctos de las columnas para importar consiste en exportar un archivo de ejemplo con los campos a importar. De esta forma, si no existe una plantilla de importación de ejemplo, los nombres son precisos.

Importar desde otra aplicación

El ID externo (ID) es un identificador único para el artículo de una línea. Puedes usar un ID externo (ID) de un software anterior para facilitar la transición a Odoo.

No es obligatorio establecer un ID al momento de la importación, pero es de gran ayuda en muchos casos:

Para recrear relaciones entre diferentes registros, debe usarse el identificador único de la aplicación original para mapearlo a la columna ID Externo (ID) en Odoo.

Cuando se importe otro registro vinculado al primero, utilice XXX/ID (XXX/ID externo) para el identificador único original. Este registro también se puede encontrar utilizando su nombre.

Advertencia

Es importante mencionar que habrá conflictos si dos (o más) registros tienen el mismo ID externo.

Campo faltante para mapear una columna

Odoo intenta encontrar el tipo de campo heurísticamente para cada columna dentro del archivo importado, según las primeras diez líneas de los archivos.

Por ejemplo, si hay una columna que solo contiene números, las opciones que se presenten solo serán de tipo número entero.

Aunque en la mayoría de los casos este comportamiento puede ser favorable, también es posible que ocurra un error o que la columna se asigne a un campo que no está propuesto de forma predeterminada.

Si esto pasa, marque la opción Mostrar campos de campos relacionados (avanzado). Después, en cada columna habrá disponible una lista completa de campos.

Captura de pantalla donde se muestra la búsqueda de un campo para coincidir con la columna de impuestos.

Cambiar el formato de importación de datos

Nota

Odoo puede detectar de forma automática si una columna es una fecha e intentará deducir el formato de fecha mediante un conjunto de los formatos de fecha que se usan con mayor frecuencia. Aunque este proceso puede funcionar para varios formatos de fecha, algunos no se reconocerán. Esto puede causar confusión debido a las inversiones de día y mes. Hay ocaciones en las que es difícil deducir qué parte del formato de la fecha es el día y qué parte es el mes, como en 01-03-2016.

Al importar un archivo CSV, Odoo le da opciones de formato.

Para ver qué formato de fecha encontró Odoo en el archivo, puede revisar el formato de fecha que aparece al hacer clic en las opciones en el selector de archivos. Si este formato no es correcto, puede cambiarlo usando la ISO 8601 para definirlo.

Importante

ISO 8601 es una norma internacional que rige el intercambio mundial y la comunicación de datos relacionados con fechas y horas. Por ejemplo, el formato de fecha debe ser AAAA-MM-DD. En el caso del 24 de julio de 1981, debes escribir 1981-07-24.

Truco

Cuando importe archivos Excel (.xls, .xlsx), considere usar celdas de fecha para almacenar fechas. Esto mantiene los formatos de fecha locales para su visualización, independientemente de cuál sea el formato de la fecha en Odoo. Cuando importe un archivo CSV, use la sección Formato de Odoo para seleccionar las columnas de formato de fecha a importar.

Importar números con signos de divisa

Odoo es compatible con los números entre paréntesis para representar los signos negativos, así como los números con los signos de divisa. Odoo también detecta de forma automática qué separador de miles o decimales utiliza. Si usa un símbolo de divisa que Odoo no conoce, es posible que no se reconozca como un número y se bloqueará.

Nota

Al importar un archivo CSV, aparece el menú Formato en la columna de la izquierda. En estas opciones, se puede cambiar el Separador de miles.

Ejemplos de números compatibles (se usará treinta y dos mil como ejemplo):

  • 32.000,00

  • 32000,00

  • 32,000.00

  • -32000.00

  • (32000.00)

  • $ 32,000.00

  • (32000.00 €)

Ejemplos que no son compatibles:

  • ABC 32,000.00

  • $ (32,000.00)

Importante

Un () (paréntesis) alrededor del número indica que el número es un valor negativo. El símbolo de moneda debe colocarse dentro del paréntesis para que Odoo lo reconozca como un valor de moneda negativo.

La tabla de previsualización de la importación no se muestra correctamente

De forma predeterminada, la vista previa de importación está configurada con comas como separadores de campo y con comillas como delimitadores de texto. Si el archivo CSV no cuenta con estos ajustes, modifique las opciones de formato que aparecen en la barra de importación del archivo CSV después de seleccionar el archivo CSV.

Importante

Si el archivo CSV tiene una tabulación como separador, Odoo no detecta las separaciones. Las opciones de formato de archivo necesitan modificarse en la aplicación de hoja de cálculo. Consulte la siguiente sección Cambiar formato de archivo CSV.

Cambiar el formato del archivo CSV en una aplicación de hoja de cálculo

Al editar y guardar archivos CSV en aplicaciones de hojas de cálculo, se aplica la configuración regional del ordenador para el separador y el delimitador. Odoo sugiere usar OpenOffice o LibreOffice, ya que ambas aplicaciones permiten modificar las tres opciones (en la aplicación LibreOffice, ir al cuadro de diálogo “Guardar como” ‣ Marcar la casilla “Editar configuración de filtro” ‣ Guardar).

Microsoft Excel puede modificar la codificación al guardar (Cuadro de diálogo «Guardar como» ‣ Menú desplegable «Herramientas» ‣ Pestaña «Codificación»).

Diferencias entre el ID de la base de datos y el ID externo

Algunos campos definen una relación con otro objeto. Por ejemplo, el país de un contacto es un enlace a un registro del objeto “País”. Cuando se importan estos campos, Odoo tendrá que volver a crear enlaces entre los diferentes registros. Odoo proporciona tres mecanismos para ayudarle a importar dichos campos.

Importante

Solo se debe usar un mecanismo por campo importado.

Por ejemplo, para referenciar el país de un contacto, Odoo propone tres campos distintos para importar:

  • País: el nombre o código del país.

  • País/ID de la base de datos: el ID único de Odoo para un registro, definido por la columna ID PostgreSQL.

  • País/ID externo: el ID de este registro al que se hace referencia en otra aplicación (o el archivo .XML que lo importó).

Para Bélgica, por ejemplo, use una de estas tres maneras de importar:

  • País: Bélgica

  • País/ID de la base de datos: 21

  • País/ID externo: base.be

Según las necesidades de la empresa, utilice una de estas 3 formas de referenciar registros en relaciones. Deberá usar una u otra, según sea necesario, aquí tiene un ejemplo:

  • Usar país: esta es la forma más sencilla cuando los datos provienen de archivos CSV que se crearon de forma manual.

  • Usar país/ID de la base de datos: es poco probable que use esta notación, ya que en su mayoría la utilizan los desarrolladores. Su principal ventaja es que nunca tiene conflictos (puede tener varios registros con el mismo nombre, pero solo tendrán un ID de base de datos único).

  • Usar país/ID externo: utilice el ID externo cuando importe datos desde una aplicación de terceros.

Cuando se utilicen ID externos, importe archivos CSV con la columna ID externos (ID) que define el ID externo de cada registro que se importa. A continuación, se puede hacer referencia a ese registro con columnas como Campo/ID externo. Los dos archivos CSV a continuación ofrecen un ejemplo de productos y sus categorías.

Importar campos de relación

Un objeto de Odoo siempre se relaciona con muchos otros (por ejemplo, un producto está vinculado a categorías de productos, atributos, proveedores y más). Para importar esas relaciones, primero debe importar los registros del objeto relacionado desde su propio menú de lista.

Esto puede hacerse mediante el nombre del registro relacionado o por su ID, este último se espera cuando dos registros tienen el mismo nombre. En ese caso, agregue /ID al final del título de la columna (por ejemplo, para atributos de producto: Atributos de producto / Atributo / ID).

Opciones para varias coincidencias en campos

Si, por ejemplo, hay dos categorías de producto con el nombre secundario Se puede vender (por ejemplo, Productos varios/Se puede vender y Otros productos/Se puede vender), la validación se detendrá, pero aún podrá importar los datos. Le recomendamos que no importe los datos pues todos se vincularán a la primera categoría, Se puede vender, que a su vez pertenece a la categoría Lista de producto (Productos varios/Se puede vender). Le sugerimos que modifique uno de los valores duplicados, o la jerarquía de la categoría del producto.

Sin embargo, si la empresa no quiere cambiar la configuración de las categorías de los productos, recomendamos usar el ID externo para este campo, «Categoría».

Importar campos de relación many2many

Las etiquetas se deben separar con coma y sin espacios. Por ejemplo, si se debe vincular un cliente a las etiquetas Fabricante y Vendedor minorista entonces debe poner las etiquetas “Fabricante,Vendedor minorista” en la misma columna del archivo CSV.

Importar relaciones one2many

Si una empresa desea importar una orden de venta con varias líneas de orden, es necesario que aparten una fila específica en el archivo CSV para cada línea de la orden. La primera línea de la orden se importa en la misma fila que la información relacionada a la orden. Las líneas adicionales necesitan otras filas que no tengan información en los campos de esa orden.

Example

Una empresa importa cotizaciones con un archivo CSV, basado en los datos de demostración:

Una empresa importa órdenes de compra con sus respectivas líneas de órdenes de compra con un archivo CSV:

Una empresa importa clientes y sus respectivos contactos con un archivo CSV:

Importar archivos de imagen

Para importar archivos de imagen con el archivo CSV o Excel subido siga los pasos a continuación:

  1. Agregue los nombres de archivo de la imagen a la columna Imagen correspondiente en el archivo de datos.

  2. Suba el archivo de datos o haga clic en Cargar archivo de datos para volver a subirlo.

  3. Haga clic en Suba sus archivos en la sección Archivos a importar.

  4. Seleccione los archivos de imagen correspondientes. El número de archivos seleccionados aparecerá a un lado del botón.

  5. Haga clic en Probar para verificar que todos los datos sean válidos.

  6. Haga clic en Importar. Durante el proceso de importación, Odoo realiza una revisión de archivo para vincular, de forma automática, las imágenes subidas con el archivo de datos importado. Si no encuentra una coincidencia, el archivo de datos se importará sin la imagen.

Nota

  • La sección Archivos por importar se habilita si la plantilla del producto tiene una columna Imagen con todos los campos completos.

  • El nombre de los archivos de imágenes en el campo de datos deben corresponder a los archivos de imágenes subidos.

  • Al importar una gran cantidad de imágenes, especifica el tamaño máximo del lote en megabytes y define un retraso para evitar que el sistema se sobrecargue. Para ello, activa el modo de desarrollador y completa los campos Tamaño máximo por lote y Retraso después de cada lote en la sección Archivos por importar. De forma predeterminada, el retraso cumplirá con el límite de llamadas RPC/API definido en la Política de uso aceptable de la nube de Odoo.

Importar registros varias veces

Si un archivo importado contiene la columna ID externo o la columna ID de la base de datos, los registros que ya se importaron se modificarán y no se crearán desde cero. Esto es muy útil ya que permite que los usuarios importen el mismo archivo CSV varias veces si se hicieron cambios durante dos importaciones.

Odoo se asegura de crear o modificar cada registro, dependiendo de si es nuevo o no.

Esta función permite que la empresa use la herramienta de importación o exportación para modificar un grupo de registros en la aplicación Hoja de cálculo.

Valor no proporcionado en un campo específico

Si no defines todos los campos en el archivo CSV, Odoo asigna el valor predeterminado a cada campo que no esté definido. Sin embargo, si defines campos con valores vacíos en el archivo CSV, Odoo deja el campo vacío en lugar de asignar el valor predeterminado.

Exportar o importar diferentes tablas de una aplicación SQL a Odoo

Si necesita importar datos de diferentes tablas, tendrá que recrear las relaciones entre registros que pertenecen a diferentes tablas. Por ejemplo, si importa empresas y personas, deberá volver a crear el vinculo entre cada persona y la empresa en la que trabaja.

Para gestionar las relaciones entre tablas, puede utilizar las funciones de ID externo de Odoo. El ID externo de un registro es el identificador único de este registro en otra aplicación. Este debe ser único en todos los registros de todos los objetos, así que es una buena práctica anteponer este ID externo al nombre de la aplicación o tabla, (como “empresa_1”, “persona_1” en lugar de solo “1”).

Por ejemplo, supongamos que hay una base de datos SQL con dos tablas que se necesitan importar: empresas y personas. Cada persona pertenece a una empresa, entonces se debe volver a crear el vínculo entre una persona y la empresa para la que trabajan.

Pruebe este ejemplo con un ejemplo de una base de datos PostgreSQL.

Primero, exporte todas las empresas y sus ID externos. En PSQL escriba al siguiente comando:

> copy (select 'company_'||id as "External ID",company_name as "Name",'True' as "Is a Company" from companies) TO '/tmp/company.csv' with CSV HEADER;

Este comando SQL crea el siguiente archivo CSV:

External ID,Name,Is a Company
company_1,Bigees,True
company_2,Organi,True
company_3,Boum,True

Usaremos el siguiente comando SQL en PSWL para crear el archivo CSV para personas vinculadas a empresas:

> copy (select 'person_'||id as "External ID",person_name as "Name",'False' as "Is a Company",'company_'||company_id as "Related Company/External ID" from persons) TO '/tmp/person.csv' with CSV

Esto producirá el siguiente archivo CSV:

External ID,Name,Is a Company,Related Company/External ID
person_1,Fabien,False,company_1
person_2,Laurence,False,company_1
person_3,Eric,False,company_2
person_4,Ramsy,False,company_3

En el archivo anterior, Fabien y Laurence trabajan para la empresa Bigees (company_1) y Eric trabaja para la empresa Organi. La relación entre personas y empresas se realiza mediante el ID externo de las empresas. Se usa el nombre de la tabla como prefijo del ID externo para evitar un conflicto de ID entre personas y empresas (person_1 y company_1 que compartían el mismo ID, 1, en la base de datos original).

Los dos archivos que se generaron están listos para importarse a Odoo sin ninguna modificación. Tras importar estos dos archivos CSV, tendrá cuatro contactos y tres empresas, los dos primeros contactos están vinculados a la primera empresa. Primero debe importar las empresas y luego las personas.

Actualizar datos en Odoo

Es posible hacer una actualización en lote de datos existentes con una importación de datos, siempre y cuando el ID externo sea consistente.

Preparar la exportación de datos

Para actualizar los datos mediante una importación, primero ve a los datos que deseas actualizar y selecciona el icono (Lista) para activar la vista de lista. En el extremo izquierdo de la lista, selecciona la casilla de cualquier registro que quieras actualizar. Luego, haz clic en el botón Acciones y elige Exportar en el menú desplegable.

On the resulting Export Data pop-up window, enable the Updatable fields only switch. This automatically includes the External ID in the export. Additionally, it limits the Available fields list to only include fields that are able to be imported.

Nota

The External ID field does not appear in the Fields to export list unless it is manually added. However, if the Updatable fields only switch is enabled, it is included in the export.

Seleccione los campos que se deben incluir en la exportación usando las opciones de la ventana emergente y después haga clic en Exportar.

Importar datos actualizados

Haga los cambios necesarios en el archivo de datos después de exportarlo. Una vez que el archivo esté listo, podrá importarlo con el mismo proceso que realiza para cualquier otra importación.

Peligro

Al actualizar los datos es muy importante que conserven su ID externo, pues este dato es lo que permite que el sistema identifique un registro. Si lo modifica o elimina, el sistema podría agregar un registro duplicado en lugar de actualizar el existente.