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

../../../_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 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.

CSV file for categories.

CSV file for Products.

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

CSV file for Manufacturer, Retailer

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

If you want to import sales order having several order lines; for each order line, you need to reserve a specific row in the CSV file. The first order line will be imported on the same row as the information relative to order. Any additional lines will need an additional row that does not have any information in the fields relative to the order. As an example, here is purchase.order_functional_error_line_cant_adpat.CSV file of some quotations you can import, based on demo data.

File for some Quotations.

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

Purchase orders with their respective purchase order lines.

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

Customers and their respective contacts.

¿Se puede importar varias veces el mismo registro?

If you import a file that contains one of the column «External ID» or «Database ID», records that have already been imported will be modified instead of being created. This is very useful as it allows you to import several times the same CSV file while having made some changes in between two imports. Odoo will take care of creating or modifying each record depending if it’s new or not.

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»).

As an example, suppose you have a SQL database with two tables you want to import: companies and persons. Each person belong to one company, so you will have to recreate the link between a person and the company he work for. (If you want to test this example, here is a dump of such a PostgreSQL database)

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