Funcionamento básico
Para importar dados no Odoo, basta clicar no botão Import da página do tipo de objeto desejado.
A complexidade da importação de dados no Odoo vem da complexidade em registrar em Odoo as relações entre os objetos importados.
Como importar relações entre objetos ?
Um exemplo : um dos campos de um Contato é o campo Marcadores (chamado também de “categoria de contato”, ou “Tag do contato”). Para associar cada contato importado com um Marcador específico teremos que :
- Importar todos os Marcadores antes de importar os Contatos.
- Durante a importação dos Contatos teremos que indicar os External ID dos Marcadores de cada Contato importado, para indicar qual Marcador vai ser associado a qual Contato.
O External ID, chamado também de XML ID, é o identificador de um objeto presente em Odoo. Ele permite permite fazer a diferença por exemplo entre dois Marcadores que teriam o mesmo nome no Odoo apesar de ser dois objetos distintos do mesmo tipo ‘Marcador’.
{% hint style=”info” %} É importante anotar a diferença entre o External ID de um de um objeto e o ID no banco de dados desse mesmo objeto.
Os dois são um identificador único do mesmo objeto, porém o ID no banco de dados é um número (único) dado automaticamente por Odoo quando cria (ou importa) esse novo objeto, enquanto o External ID é uma cadeia de caracteres que pode ser dada pelo usuário durante a importação do objeto. {% endhint %}
É possível conhecer o External ID de um objeto diretamente pela interface do Odoo ou quando exporta dados Odoo para arquivos (Excel ou CSV).
External ID pela interface
Primeiro precisa ativar o modo “desenvolvedor” do Odoo no painel de Configurações gerais :
Depois ir na página do objeto desejado, por exemplo esse Marcador de contato (chamado também de “Tag do contato”, acessível pelo menu Contatos > Configuração > Tags do contato), clicar na barata que apareceu (encima na direita), e abrir Visualizar Metadata do objeto corrente :
Aparece então as suas Metadatas, incluindo o ID XML (outro nome para o External ID), diferente do ID ‘simples’ que é o identificador do objeto no banco de dados (que não precisamos usar) :
External ID na exportação
Para exportar dados do Odoo para arquivos Excel (ou CSV), é preciso fazer aparecer os objetos para ser exportados em visualização ‘lista’. Isso permite selecionar os objetos para serem exportados. Quando selecionar um objeto aparece o botão Ação que permite, entre outras coisas, exportar os dados dos objetos selecionados :
Ao exportar Marcadores de contato, para seguir o nosso exemplo, basta selecionar a opção ‘Update data’ para fazer aparecer o campo ‘ID Externo’ dentro dos campos disponíveis :
O resultado é um arquivo Excel com a lista dos External ID de cada Marcador :
Criação do External ID durante a importação
A força desse External ID é que ele pode ser dado a um objeto pelo usuário durante a importação.
Por exemplo, se eu importar o seguinte arquivo Excel :
Basta clicar no botão Import > Carregar Arquivo da página ‘Tags do Contato’ e selecionar o arquivo para importar. Odoo reconhece o significação das colunas do meu arquivo mas é sempre possível escolher manualmente o destino de cada uma :
{% hint style=”info” %} Caso não preencher a coluna “External ID”, Odoo criará-lo automaticamente e importará o objeto mesmo assim. {% endhint %}
Podemos verificar pela interface que o External ID de cada Marcador importado corresponde à cadeia de caracteres indicada no arquivo de importação. Será então possível usar esse mesmo External ID no futuro, por exemplo durante a importação dos Contatos para indicar o Marcador de cada Contato :
Relação pai / filho
Na mesma ideia que para importar a informação da relação entre dois objetos de tipos diferentes, o jeito mais simples e seguro de importar as relações entre dois objetos do mesmo tipo é de :
- importar os pais
- importar os filhos, indicando para cada filho o External ID do(s) pai(s) previamente importados
Por exemplo, importando o arquivo :
Eu vou poder importar 2 Marcadores como sub-categorias de contato da categoria pai “Meu Marcador importado 1” :
{% hint style=”info” %} Na teoria é possível importar junto no mesmo arquivo .xls ou .CSV os objetos filhos e os pais relacionados de uma vez. Porém é mais complexo e é fonte de erros, por isso recomendamos de realizar esse tipo de importações pai/filho em duas vezes. {% endhint %}
{% hint style=”info” %} Alguns objetos Odoo podem ter 2 pais ou mais (o tipo de campo ligando um filho aos seus pais é então chamado de “one2many” ou “many2many”), como os marcadores de Contato por exemplo.
Nesta situação é só indicar os 2 (ou mais) External ID, separados por um coma, sem espaço. Exemplo :
marcador_de_contato_1,marcardor_de_contato2 {% endhint %}
{% hint style=”warning” %} Se um filho para importar não tem pai, deixar a célula vazia. Se escrever “0” ou False vai puxar um erro de importação. {% endhint %}
FAQ oficial da Odoo S.A.
Para questões técnicas específicas sobre a importação :
{% embed url=”https://www.odoo.com/documentation/user/12.0/general/base_import/import_faq.html” %}