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 artículos que se tengan que exportar, haga clic en Acción y, después, en Exportar.

view of the different things to enable/click to export data

Muy simple, esta acción viene con diversas especificidades. De hecho, cuando se hace click en Exportar, aparece una ventana emergente con varias opciones para la información a exportar.

overview of all the options to take into account when exporting data in 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 artículos se separan con una coma, mientras que .xls guarda información sobre todas las hojas de cálculo en un archivo, incluyendo tanto el contenido como el formato.

  3. Esos son los artículos que querrá exportar. Use las flechas para mostrar más opciones de subcampos. Claro, 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 las flechas para mostrar todos los campos!

  4. El botón de + está ahí para agregar más campos a la lista «para exportar».

  5. Las «asas» junto con los campos seleccionados le permite mover los campos hacia arriba o abajo para cambiar el orden en el que se mostrarán en el archivo exportado.

  6. Si necesita quitar campos, tiene disponible la papelera

  7. Para reportes recurrentes, puede que sea interesante guardar los ajustes preestablecidos para guardar 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 querría importar después.

Importe sus datos a Odoo

Cómo empezar

Puedes importar datos en cualquier objeto de negocio de Odoo usando tanto formatos de Excel (.xlsx) o CSV (.csv): contactos, productos, resguardos bancarios e incluso pedidos!

Abre la vista del objeto que quieras popular y selecciona Importar

../../_images/import_button.png

Ahí se te provee de plantillas que puedes popular fácilmente con tu propia información. Dichas plantillas se pueden importar en un solo clic; el mapeo de información ya está hecho.

Cómo añadir la plantilla

  • Añade, elimina y organiza columnas para adaptarse a la estructura de tu información.

  • Aconsejamos no eliminar el ID (averigua por qué en la siguente sección).

  • Establece un ID único a cada uno de los registros arrastrando hacia abajo la secuencia de ID.

../../_images/dragdown.gif
  • Al añadir una nueva columna, es posible que Odoo no pueda mapearlo automáticamente si la etiqueta no corresponde a ningún campo en el sistema. Si es así, puedes mapear las nuevas columnas manualmente cuando testees la importación. Encuentra el campo correspondiente usando la búsqueda.

    ../../_images/field_list.png

    A continuación, usa la etiqueta de este campo en tu archivo para hacerlo funcionar bien la siguiente vez.

Cómo importar desde otra aplicación

Para re-crear las relaciones entre los distintos registros, deberías usar el identificador único de la aplicación original y mapearlo con la columna ID (ID Externo) en Odoo. Cuando importas otro registor que se relaciona con el primero, usa XXX/ID (XXX/ID Externo) para el identificador original. Puedes también encontrar este registro usando su nombre pero te vas a encontrar con al menos 2 registros con el mismo nombre.

El ID será usado para actualizar la importacion original si necesitas re-importar los datos después, aunque es buena práctica especificarlo cuando sea posible.

No puedo encontrar este campo y quiero mapear mi columna a

Odoo trata de buscar con algo de heurística, basado en las primeras diez líneas de los archivos, el tipo del campo por cada columna dentro de tu archivo. Por ejemplo si tienes una columna que solo contiene númetos, solo los campos que son de tipo Entero se mostrarán para que escojas. Miestras que este comportamiento puede resultar bueno y fácil para muchos casos, es también posible que no salga bien o que quieras mapear tu columna con un campo que no es propuesto por defecto.

Si eso pasa, solo tienes que seleccionar la opción Mostrar campos de campos de relación (avanzado), despúes podrás elegir de la lista completa de cada columna.

../../_images/field_list.png

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

Odoo puede detectar automáticamente si una columna es una fecha e intentará adivinar el formato de fecha a partir de un conjunto de formatos de fecha más utilizados. Si bien este proceso puede funcionar para muchos formatos de fecha, no se reconocerán algunos formatos de fecha. Esto puede causar confusión debido a las inversiones día-mes; es difícil adivinar 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 cuáles formatos de fecha ha encontrado Odoo en tu archvico, puedes revisar Formato de fecha que es mostrado cuando haces clic en Opciones bajo el selector de archivos. Si el formato es incorrecto puedes cambiarlo a tu preferencia usando el ISO 8601 para definir el formato.

Nota

Si estás importando un archivo de excel (.xls, .xlsx), puedes usar celdad tipo fecha ya que las fechas se muestran de manera distinta a como se almacenan. De esa forma te puedes asegurar que el formato de fecha está correcto independientemente del formato de fecha de la localización.

¿Puedo importar números con signos de divisa (p.e.: $32.00)?

Sí, soportamos números con paréntesis que representan signos negativos así como números con el signo de moneda. Odoo detecta automáticamtte cual separador miles/decimal usas (puedes cambiar eso bajo opciones). Si usas un símbolo de moneda que no es conocido por Odoo, puede no ser reconocido como un número y podrá dar error.

Ejemplos de números soportados (usadndo 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 cuando la tabla de vista previa de Importar no se muestra correctamente?

Por defecto, la previsualización de la importación se establece con comas como separadores de campo y comillas como delimitadores de texto. Si su archivo CSV no tiene estos parámetros, puede modificar las opciones de formato de archivo (mostradas bajo la barra de “Seleccionar archivo CSV” después de seleccionar el archivo).

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

¿Cómo puede cambiar el formato del archivo CSV cuando se guarda 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 id. de la BD e 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 único de Odoo para un registro, definido por la columna ID de PostgreSQL

  • País/ID Externo: el ID de este registro referenciado en otra aplicación (o del archivo .XML que lo importó)

Para el país Bélgica, puede usar uno de estos3 métodos de importación:

  • País: Bélgica

  • País/Id. de la BD: 21

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

De acuerdo a sus necesidades, puede usar una de estas 3 formas de referenciar registros en las relaciones. Aquí es donde debe usar una u otra, conforme a sus necesidades:

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

  • Usar País/Id. de la BD: Raramente debería usar esta notación. Se usa más a menudo por los desarrolladores puesto que su principal ventaja es la de no tener nunca 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 id. externo cuando importa 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 «Id. de campo/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 producto con el nombre hijo de «Vendibles» (por ejemplo «Productos miscelánea/Vendibles» y «Otros productos/Vendibles»), la validación se para, pero aún podrá importar los datos. Sin embargo, recomendamos no importar los datos porque estarán vinculados todos a la primera categoría «Vendibles» encontrada en la lista de categorías de producto («Misc. Productos/Vendibles»). Recomendamos modificar uno de los valores duplicados o la jerarquía de categorías.

Sin embargo, si no desea cambiar la configuración de las categorías de producto, le recomendamos que haga uso de id. externo para este campo “Categoría”.

¿Cómo puedo importar un campo de relación many2many (muchos a muchos; por ejemplo: un cliente que tiene múltiples etiquetas)?

Las etiquetas deben de ir separadas por comas sin espacios. Por ejemplo, si quieres que tu cliente sea vinculado con ambas etiquetas “Fabricante” y “Mayorista”, entonces debes codificar “Fabricante,Mayorista» en la misma columna del archivo CSV.

Archivo CSV para Fabricante, Minorista

¿Cómo puedo importar una relación uno a muchos (one2many - por ejemplo: las líneas de pedido del pedido de venta)?

Si desea importar un pedido de cliente con varias líneas de pedido; para cada línea de pedido, debe reservar una fila específica en el archivo CSV. La primera línea de pedido se importará en la misma fila que la información relativa al pedido. Cualquier línea adicional necesitará una fila adicional que no tenga ninguna información en los campos relacionados con el pedido. 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 pedidos de compra con sus respectivas líneas de pedido 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 características permite usar 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é pasa si no proveo de un valor para un campo específico?

Si no ha establecido todos los campos en su archivo CSV, Odoo asignará el valor por defecto para cada uno de los campos no definidos. 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 por defecto.

¿Cómo exportar/importar diferentes tablas de una aplicación SQL a Odoo?

Si necesita importar datos de diversas tablas, puede recrear relaciones entre los registros pertenecientes a diferentes tablas (por ejemplo, si importa compañías y personas, tendrá que recrear el enlace entre cada persona y la compañía para la que trabaja).

Para gestionar las relaciones entre tablas, puede utilizar las funciones de «ID externa» 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 ejemplo de una base de datos PostgreSQL)

Se exportará primero todas las compañías 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, enlazadas a compañías, 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 están trabajando para la empresa Bigees (empresa_1) y Eric está trabajando para la empresa Organi. La relación entre personas y empresas se realiza utilizando el ID Externo de las empresas. Tuvimos que anteponer el «ID externo» al nombre de la tabla 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 producidos están listos para ser importados en Odoo sin ninguna modificación. Después de haber importado estos dos archivos CSV, tendrá 4 contactos y 3 compañías (los dos primeros contactos están enlazados a la primer compañía). Debe importar primero las compañías y luego los contactos.

Cómo adaptar la plantilla de importación

Importa plantillas provistas en la herramienta de importación de la información más común (contactos, productos, resguardos bancarios, etc.). Puedes abrirlos con cualquier software de hojas de cálculo (Microsoft Office, OpenOffice, Google Drive, etc.).

Cómo customizar el archivo

  • Elimina columnas que no necesitas. Te recomendamos no eliminar la de ID (a continuación puedes ver por qué).

  • Establece un ID único a cada uno de los registros arrastrando hacia abajo la secuencia de ID.

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

    ../../_images/field_list.png

    Después utiliza la etiqueta que hayas encontrado en la plantilla de importación para poder hacer que funcione directamente la próxima vez que intentes importar.

Why an «ID» column

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

Estableciendo un ID no es obligatorio cuando estás importando pero ayuda en muchos casos:

  • Actualiza importaciones: puedes importar el mismo archivo varias veces sin crear duplicados;

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

Cómo importar campos de relación

Un objeto de Odoo siempre está relacionado a muchos otros objetos (p.e. un producto está relacionado a categorías de productos, atributos, vendedores, etc.). Para importar esas relaciones necesitas importar los registros del objeto relacionado primero desde su propio menú.

Puedes hacerlo tanto usando el nombre del registro relacionado o su ID. El ID se espera cuando dos registros tienen el mismo nombre. En tal caso añade «/ID» al final del título de la columna (p.e. para atributos de producto: Atributos de Producto/Atributo/ID).