Cómo importar 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

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.

  • 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.

    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.

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

Odoo puede detectar automáticamente si una columna es una fecha y tratar de inferir el formato de la fecha de un set de formatos de fechas más usuados. Mientras este proceso puede funcionar para muchos formatos de fecha simples, algunos más exóticos not podrán ser reconocidos y por lo tanto es posible tener algún tipo de confusión (día y mes invertido por ejemplo) ya que es difícil saber cual parte es el día y cual es el mes en fechas 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.

¿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 en las aplicaciones de hoja de cálculo, se aplicará la configuración regional del ordenador para el separador y el delimitador. Le sugerimos usar OpenOffice o LibreOffice Calc, que permiten modificar dichas opciones (en 'Guardar como...' > Marcar casilla 'Editar filtro' > Gurdar).

Microsoft Excel permite modificar solamente la codificación cuando guarda un archivo CSV (en el cuadro de diálogo 'Guardar como' > pulsar 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 objeto 'País'. Cuando quiere importar esos campos, Odoo tendrá que recrear los enlaces entre los correspondientes campos. Odoo provee 3 mecanismos. Debe usar uno y sólo uno de esos mecanismos por campo a 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 quiere importar los pedidos de venta teniendo varias líneas de pedido; para cada línea de pedido, necesita reservar una fila específica en el archivo CSV. La primera línea de pedido será importada en la misma fila que la información relativa al pedido. Cualquier línea adicional necesitará una fila adicional que no tenga información en los campos relativos al pedido.

Archivo para algunas Cotizaciones.

El siguiente archivo CSV muestra como importar pedidos de compra con sus respectivas líneas de pedido de compra:

Pedidos de compra con sus respectivas líneas de pedido 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 importas un fichero que contiene uno de las siguientes columnas "External ID" o "Database ID", los registros que ya han sido importados serán modificados en lugar de ser creados de nuevo. Esto es bastante útil, ya que le permitirá importar varias veces el mismo CSV realizando cambios entre dos importaciones. Odoo tendrá cuidado 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 relaciones entre tablas, puede utilizar el "External ID" facilitado por Odoo. El "External ID" de un registro es el identificador único de ese registro en otra aplicación. Este "External ID" debe ser único entre todos los registros de todos los objetos, así que es una buena practica para prefijar este "External ID" con el nombre de la aplicación o la tabla (como "company _1", "contact_1", en lugar de "1").

Como ejemplo, supongo que tiene una base de datos SQL con dos tablas que quiere importar: compañías y personas. Cada persona pertenece a una compañía, por lo que tendrá que recrear el enlace entre la persona y la compañía en la que trabaja. (Si quiere comprobar este ejemplo, aquí hay un<a href="/base_import/static/csv/database_import_test.sql">dump de dicha base de datos PostgreSQL</a>)

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

Se creará 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 compañía Bigees (company_1) y Eric está trabajando para la compañía Organi. La relación entre las personas y las compañías se hace usando el id. externo de las compañías. Hemos tenido que prefijar el id. externo con el nombre de la tabla para evitar un conflicto de id. entre las personas y las compañías (person_1 y company_1 comparten 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.