Exportar e importar datos

Exportar datos desde Odoo

Al trabajar con una base de datos a veces es necesario exportar sus datos a un archivo distinto. Hacerlo le puede ayudar a hacer reportes sobre sus actividades (incluso si Odoo ofrece una herramienta para realizar reportes precisa y fácil para cada aplicación disponible).

Con Odoo puede exportar valores desde cualquier campo en cualquier registro. Para hacerlo, active la vista de lista en elementos que se tengan que exportar, haga clic en Acción y, después, en Exportar.

Vista de las distintas cosas por habilitar o hacer clic para exportar datos

A pesar de ser sencillo, esta acción viene con diversas particularidades. Al hacer clic en Exportar, aparece una ventana emergente con varias opciones para los datos que se exportarán:

Vista general de todas las opciones a considerar al exportar datos en Odoo
  1. Con la opción quiero actualizar datos activada, el sistema solo muestra campos que se pueden importar. Esto es muy útil en caso de que quiera actualizar registros existentes. Básicamente funciona como un filtro. Si no marca la casilla le da más opciones de campo porque muestra todos los campos, no solo los que se pueden importar.

  2. Al exportar puede elegir dos formatos: .csv y .xls. Con .csv, los elementos se separan con una coma, mientras que .xls guarda información sobre todas las hojas de trabajo en un archivo, incluyendo tanto el contenido como el formato.

  3. Esos son los artículos que tal vez desee exportar. Use las flechas para mostrar más opciones de subcampos. Puede usar la barra de búsqueda para encontrar campos específicos con facilidad. Para usar la opción de buscar con mayor eficiencia, haga clic en todas las flechas para mostrar todos los campos.

  4. Con el botón de + puede agregar más campos a la lista «por exportar».

  5. Las «asas» al lado de los campos seleccionados le permiten mover los campos hacia arriba o abajo para cambiar el orden en el que se mostrarán en el archivo exportado.

  6. Puede usar la papelera para eliminar campos.

  7. Para reportes recurrentes, puede que sea interesante guardar los ajustes preestablecidos de una exportación. Seleccione todas las necesarias y haga clic en la barra de la plantilla. Ahí, haga clic en Nueva plantilla y dele un nombre a la suya. La próxima vez que necesite exportar la misma lista, simplemente seleccione la plantilla relacionada.

Truco

Es bueno tener en cuenta el identificador externo del campo. Por ejemplo, Empresa relacionada es igual a id_padre. Hacerlo ayuda a exportar lo que desee importar después.

Importar datos en Odoo

Cómo empezar

Puede importar datos en cualquier objeto empresarial de Odoo usando formatos de Excel (.xlsx) o CSV (.csv): contactos, productos, estados de cuenta bancarios e incluso órdenes.

Abra la vista del objeto que desea llenar y haga clic en Favoritos ‣ Importar registros.

../../_images/import_button.png

Ahí encontrará plantillas que puede completar con sus propios datos con facilidad. Dichas plantillas se pueden importar con solo un clic, el mapeo de datos ya está hecho.

Cómo adaptar la plantilla

  • Agregue, elimine y organice columnas para adaptarse a la estructura de su información.

  • Recomendamos no eliminar el ID (puede ver el por qué en la siguiente sección).

  • Establezca una identificación única para cada registro arrastrando hacia abajo la secuencia de identificación.

../../_images/dragdown.gif
  • Al agregar una nueva columna, es posible que Odoo no pueda mapearla automáticamente si la etiqueta no corresponde a ningún campo en Odoo. Puede mapear las nuevas columnas de forma manual cuando pruebe la importación. Busque el campo correspondiente en la lista.

    ../../_images/field_list.png

    A continuación, use la etiqueta de este campo en su archivo para hacer que funcione correctamente la próxima vez.

Cómo importar desde otra aplicación

Para volver a crear las relaciones entre registros distintos, debe usar el identificador único de la aplicación original y mapearlo con la columna ID (ID externo) en Odoo. Al importar otro registro que se relaciona con el primero, use XXX/ID (XXX/ID externo) para el identificador único original. También puede encontrar este registro al usar su nombre, pero puede encontrarse con obstáculos si por lo menos 2 registros tienen el mismo nombre.

El ID se utilizará para actualizar la importación original si necesita volver a importar los datos modificados después, por lo que es una buena práctica ser especificarlo siempre que sea posible.

No puedo encontrar el campo al que quiero mapear mi columna

Odoo trata de encontrar con heurística, según las primeras diez líneas de los archivos, el tipo del campo de cada columna dentro de su archivo. Por ejemplo, si tiene una columna que solo contiene números, solo se mostrarán los campos que son de tipo entero para que elija. Aunque este comportamiento puede ser bueno y sencillo en la mayoría de los casos, también es posible que no salga bien o que desee mapear su columna a un campo que no fue propuesto de forma predeterminada.

Si eso pasa, solo debe seleccionar la opción Mostrar campos de campos de relación (avanzado), después podrá elegir de la lista completa de campos de cada columna.

../../_images/field_list.png

¿Dónde puedo cambiar el formato de importación de la fecha?

Odoo puede detectar de forma automática si una columna es una fecha e intentará deducir el formato de fecha a partir de un conjunto de formatos de fecha más utilizados. Aunque este proceso puede funcionar para muchos formatos de fecha, no se reconocerán algunos formatos. Esto puede causar confusión debido a las inversiones día-mes; es difícil deducir qué parte de un formato de fecha es el día y qué parte es el mes en una fecha como “01-03-2016 “.

Para ver qué formato de fecha Odoo encontró en su archivo, puede revisar el formato de fecha que se muestra al hacer clic en Opciones en el selector de archivos. Si este formato es incorrecto, puede cambiarlo usando la ISO 8601 para definir el formato.

Nota

Si importa un archivo de Excel (.xls, .xlsx), puede usar celdas de fecha para almacenar fechas, ya que la visualización de fechas en Excel es diferente a la forma en que se almacenan. De esa manera, se asegurará de que el formato de fecha sea correcto en Odoo, sea cual sea su formato de fecha local.

¿Puedo importar números con el signo de divisa (por ejemplo: $32.00)?

Sí, somos totalmente compatibles con los números entre paréntesis para representar el signo negativo, así como los números con el signo de divisa. Odoo también detecta de forma automática qué separador de miles o decimales utiliza (puede cambiarlos en opciones). Si usa un símbolo de divisa que Odoo no conoce, es posible que no se reconozca como un número y se bloqueará.

Ejemplos de números admitidos (usando treinta y dos mil como ejemplo):

  • 32.000,00

  • 32000,00

  • 32,000.00

  • -32000.00

  • (32000.00)

  • $ 32.000,00

  • (32000.00 €)

Ejemplo que no servirá:

  • ABC 32.000,00

  • $ (32.000,00)

¿Qué puedo hacer si la tabla de vista previa de importación no se muestra correctamente?

Automáticamente, la vista previa de la importación se establece en comas como separadores de campo y comillas como delimitadores de texto. Si su archivo csv no tiene esta configuración, puede modificar las Opciones de formato de archivo (que se muestran debajo de la barra Examinar archivo CSV después de seleccionar su archivo).

Tenga en cuenta que si su archivo CSV tiene una tabulación como separador, Odoo no detectará las separaciones. Deberá cambiar las opciones de formato de archivo en su aplicación de hoja de cálculo. Vea la siguiente pregunta.

¿Cómo puedo cambiar las opciones de formato de archivo CSV al guardar en mi aplicación de hoja de cálculo?

Si edita y guarda archivos CSV en aplicaciones de hoja de cálculo, se aplicará la configuración regional de su computadora para el separador y el delimitador. Le sugerimos que utilice OpenOffice o LibreOffice Calc, ya que le permitirán modificar las tres opciones (en Cuadro de diálogo “Guardar como” ‣ Marque la casilla “Editar configuración de filtro” ‣ Guardar).

Microsoft Excel le permitirá modificar solo la codificación al guardar (en Cuadro de diálogo “Guardar como” ‣ haga clic en la lista desplegable “Herramientas” ‣ Pestaña Codificación).

¿Cuál es la diferencia 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 desee importar dichos campos, Odoo tendrá que volver a crear enlaces entre los diferentes registros. Para ayudarlo a importar dichos campos, Odoo proporciona tres mecanismos. Debe utilizar uno y solo un mecanismo por campo que desee importar.

Por ejemplo, para referenciar el país de un contacto, Odoo propone 3 modos diferentes de importación:

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

  • País / ID de base de datos: el ID de Odoo único 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 el país Bélgica, puede usar uno de estos 3 métodos de importación:

  • País: Bélgica

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

  • País/Id. externo: base.be

Según su necesidad, debe utilizar una de estas 3 formas de referenciar registros en relaciones. Aquí es cuando debe usar uno u otro, según su necesidad:

  • Usar País: esta es lo forma más sencilla cuando los datos provienen de archivos CSV que se han creado manualmente.

  • Usar País/ID de la base de datos: comúnmente no debería usar esta notación. Los desarrolladores son los que más la usan ya que su principal ventaja es que nunca tiene conflictos (puede que tenga varios registros con el mismo nombre, pero sólo tendrán un único ID de base de datos)

  • Usar país/ID externo: Use un ID externo cuando importe datos de una aplicación externa.

Cuando se usan identificadores externos, puede importar archivos CSV con la columna «ID externo» para definir el ID externo de cada registro a importar. Entonces, podrá hacer referencia a ese registro con columnas del tipo «campo/ID externo». Los siguientes dos archivos son un ejemplo para los productos y sus categorías.

Archivo CSV para categorías.

Archivo CSV para productos.

¿Qué puedo hacer si tengo múltiples coincidencias para un campo?

Si, por ejemplo, tiene dos categorías de productos con el nombre hijo «Se puede vender» (es decir, «Productos varios/Se puede vender» y «Otros productos/Se puede vender»), su validación se detiene, pero aún puede importar sus datos. Sin embargo, le recomendamos que no importe los datos porque todos estarán vinculados a la primera categoría “Se puede vender” que se encuentra en la lista de Categoría de producto («Productos varios/Se puede vender»). Le recomendamos que modifique uno de los valores duplicados o la jerarquía de su categoría de producto.

Sin embargo, si no desea cambiar la configuración de las categorías de productos, le recomendamos que utilice el ID externo para este campo “Categoría”.

¿Cómo puedo importar un campo de relación many2many (por ejemplo, un cliente que tiene varias etiquetas)?

Las etiquetas se deben separar por una coma sin espacios. Por ejemplo, si desea que su cliente esté vinculado a las etiquetas “Fabricante” y “Minorista”, codificará «Fabricante,Minorista» en la misma columna de su archivo CSV.

Archivo CSV para Fabricante, Minorista

¿Cómo puedo importar una relación one2many (por ejemplo, las líneas de orden de una orden de venta)?

Si desea importar una orden de venta con varias líneas de orden: para cada línea de orden debe reservar una fila específica en el archivo CSV. La primera línea de orden se importará en la misma fila que la información relativa a la orden. Cualquier línea adicional necesitará una fila adicional que no tenga ninguna información en los campos relacionados con la orden. Como ejemplo, aquí está el archivo purchase.order_functional_error_line_cant_adpat.CSV de algunas cotizaciones que puede importar, basado en datos de demostración.

Archivo para algunas cotizaciones.

El siguiente archivo CSV muestra como importar órdenes de compra con sus respectivas líneas de orden de compra:

Órdenes de compra con sus respectivas líneas de orden de compra.

El siguiente archivo CSV muestra cómo importar clientes y sus respectivos contactos:

Clientes y sus respectivos contactos.

¿Se puede importar varias veces el mismo registro?

Si importa un archivo que contiene una columna «ID externo» o «ID de base de datos», los registros que ya se hayan importado se modificarán en lugar de crearse. Esto es muy útil porque le permite importar varias veces el archivo CSV a la vez que hizo algunos cambios entre ambas importaciones. Odoo se encargará de crear o modificar cada registro dependiendo de si es nuevo o no.

Esta función le permite utilizar la herramienta de importación/exportación de Odoo para modificar un lote de registros en su aplicación de hoja de cálculo favorita.

¿Qué sucede si no proporciono un valor para un campo específico?

Si no establece todos los campos en su archivo CSV, Odoo asignará el valor predeterminado para cada uno de los campos sin definir. Pero si establece campos con valores vacíos en su archivo CSV, Odoo establecerá el valor VACÍO en el campo, en lugar de asignar el valor predeterminado.

¿Cómo exportar o importar diferentes tablas desde una aplicación SQL a Odoo?

Si necesita importar datos de diferentes tablas, tendrá que volver a crear relaciones entre registros que pertenecen a diferentes tablas. (Por ejemplo, si importa empresas y personas, tendrá que volver a crear el vínculo entre cada persona y la empresa para 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 «ID externo» debe ser único en todos los registros de todos los objetos, por lo 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 “1”)

Por ejemplo, imagine que tiene una base de datos SQL con dos tablas que desea importar: empresas y personas. Cada persona pertenece a una empresa, por lo que debe recrear el enlace entre una persona y la empresa para la que trabaja. (Si desea probar este ejemplo, consulte este dump de una base de datos PostgreSQL)

Se exportarán primero todas las empresas y sus ID externos. En PSQL, escriba el 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 creará el siguiente archivo CSV:

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

Para crear un archivo CSV para personas, vinculadas a empresas, usaremos el siguiente comando SQL en PSQL:

> 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

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

Como puede ver en este archivo, Fabien y Laurence trabajan para la empresa Bigees (empresa_1) y Eric trabaja para la empresa Organi. La relación entre personas y empresas se realiza utilizando el ID Externo de las empresas. Tuvimos que usar el nombre de la tabla como prefijo del «ID externo» para evitar un conflicto de ID entre personas y empresas (persona_1 y empresa_1 que compartían el mismo ID 1 en la base de datos original).

Los dos archivos producidos están listos para importarse en Odoo sin ninguna modificación. Después de importar estos dos archivos CSV, tendrá 4 contactos y 3 empresas (los dos primeros contactos están vinculados a la primera empresa). Debe importar primero las empresas y luego las personas.

Cómo adaptar una plantilla de importación

Las plantillas de importación se proporcionan en la herramienta de importación de los datos más comunes para importar (contactos, productos, estados de cuenta bancarios, etc.). Puede abrirlos con cualquier software de hojas de cálculo (Microsoft Office, OpenOffice, Google Drive, etc.).

Cómo personalizar el archivo

  • Elimine las columnas que no necesita. Recomendamos no eliminar el ID uno (vea por qué a continuación).

  • Establezca una identificación única para cada registro arrastrando hacia abajo la secuencia de identificación.

    ../../_images/dragdown.gif
  • Al agregar una nueva columna, es posible que Odoo no pueda mapearla automáticamente si la etiqueta no corresponde a ningún campo en el sistema. Si es así, encuentre el campo correspondiente mediante la búsqueda.

    ../../_images/field_list.png

    Posteriormente, utilice la etiqueta que encontró en la plantilla de importación para poder hacer que funcione directamente la próxima vez que intente importar.

Por qué usar una columna de “ID”

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

Establecer un ID no es obligatorio cuando importa, pero ayuda en muchos casos:

  • Actualizar importaciones: puede importar el mismo archivo varias veces sin crear duplicados.

  • Importar campos de relación (ver a continuación).

Cómo importar campos de relación

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

Puede hacerlo tanto usando el nombre del registro relacionado como su ID. El ID se espera cuando dos registros tienen el mismo nombre. En tal caso agregue «/ID» al final del título de la columna (por ejemplo, para atributos de producto: Atributos de Producto/Atributo/ID).