Funcionamento básico
Para importar dados no Odoo, basta clicar no botão Import da página do tipo de objeto desejado e selecionar o arquivo Excel com os dados do objeto a ser importado.
Para saber como preencher esse arquivo Excel (nome e conteúdo das colunas), um método básico é de primeiro exportar um arquivo .xls de uma lista de objetos existentes com a opção ‘Update data (import-compatible export)’ e a lista dos campos que você quer importar.
Exportar dados
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 :
Uma vez que você tiver exportado esse arquivo .xls, você pode realizar uma cópia com os mesmos títulos de colunas e formatar os dados para serem importados da mesma maneira que os itens exportados.
Agora, a complexidade da importação de dados no Odoo vem da complexidade em registrar no Odoo as relações entre os objetos importados.
Como importar relações entre objetos ?
Vamos tomar um exemplo. Um dos campos dos objetos do tipo 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 temos que :
- Importar todos os Marcadores antes de importar os Contatos.
- Na coluna dos Marcadores do arquivo Excel de importação dos Contatos, indicar os External ID dos Marcadores de cada Contato importado , para indicar qual Marcador está associado a qual Contato.
O External ID, chamado também de XML ID, é o identificador de um objeto presente no Odoo. Ele permite fazer a diferença por exemplo entre dois Marcadores que teriam o mesmo nome no Odoo apesar de serem dois objetos distintos do mesmo tipo ‘Marcador’.
🔎 É 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 identificadores únicos 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.
É possível conhecer o External ID de um objeto diretamente pela interface do Odoo ou quando exporta dados do Odoo para arquivos (Excel ou CSV).
External ID pela interface
Primeiro é preciso 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
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 :
⚠️ Apesar do título da coluna ser “id”, é uma cadeia de caracteres, então é a coluna do nosso External ID.
Criação do External ID durante a importação
Um bom hábito para facilitar o processo de importação é de você escolher/escrever os próprios External ID dos objetos que você está importando. Desta maneira quando precisar importar outros tipos de objetos relacionados com os primeiros, você já conhecerá os External ID de referencias deles.
Por exemplo, se eu importar alguns Marcadores com o seguinte arquivo Excel :
Basta clicar no botão Import > Carregar Arquivo da página ‘Tags do Contato’ e selecionar o arquivo para importar. O Odoo reconhece o significação das colunas do meu arquivo mas é sempre possível escolher manualmente o destino de cada uma :
🔎 Caso não estiver preenchida a coluna “External ID”, o Odoo criará automaticamente e importará o objeto mesmo assim.
Podemos finalmente verificar pela interface que o External ID de cada Marcador importado corresponde a 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” :
📝 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.
🔎 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 uma vírgula, sem espaço. Exemplo :
marcador_de_contato_1,marcardor_de_contato2
⚠️ Se um filho para importar não tem pai, deixar a célula vazia. Se escrever “0” ou False vai retornar um erro de importação.
FAQ oficial da Odoo S.A.
Para questões técnicas específicas sobre a importação :
https://www.odoo.com/documentation/user/12.0/general/base_import/import_faq.html