Search 1.9 billion lines of Odoo code on GitHub

dynamic_csv_importer

Author: Trustcode
License: AGPL-3
Branch: 11.0
Repository: gastonfeng/trustcode-addons
Dependencies: br_base
Languages: Markdown (101, 20.2%), PO File (98, 19.6%), Python (221, 44.2%), and XML (80, 16.0%)
Other branches: 11.0-fix-runbot, 11.0-fix-update-taxes, 11.0-nota_debito_bug, 11.0-odoo_otrs_integration, 11.0-ticket_4193, feature/books, and feature/reserve-negative
Other repositories: Alexandre-Bernardes/trustcode-addons, NewRL/trustcode-addons, Trust-Code/trustcode-addons, augustodinizl/trustcode-addons, crsilveira/trustcode-addons, detian08/trustcode-addons, enriquevago/trustcode-addons, jeffersontito1989/trustcode-addons, leonidasthe300/trustcode-addons, lryain/trustcode-addons, marcelsavegnago/trustcode-addons, popcomputadores-desenv/trustcode-addons, sasakuma/trustcode-addons, and sm2x/trustcode-addons

<h1>Dynamic CSV Importer</h1> <p>Como o próprio nome já diz, esse módulo faz a importação de dados de um arquivo .csv em todos (ou quase todos) os módulos.</p> <p><strong>Table of Contents</strong></p> <ul> <li><a href="#instala%C3%A7%C3%A3o">Instalação</a></li> <li><a href="#instru%C3%A7%C3%B5es-de-uso">Instruções de Uso</a> <ul> <li><a href="#tabela-de-importa%C3%A7%C3%A3o">Configuração da Importação</a></li> </ul></li> <li><a href="#mensagens-de-erros">Mensagens de Erros</a></li> </ul> <h2>Instalação</h2> <p>Procedimento usual, o mesmo de sempre. <em>Aplicativo &gt; &#39;dynamic<em>csv</em>importer&#39; no campo de busca &gt; Instalar</em></p> <p>Caso a busca pelo módulo não retorne nenhum resultado, <em>Ative o modo debug &gt; Atualizar Lista de Aplicativos</em> pode resolver esse problema.</p> <h2>Instruções de Uso</h2> <p>Na tela inicial do Odoo: <em>Configurações &gt; Importação CSV Dinâmica</em></p> <p>Isso irá abrir um wizard/janela. Esse carinha é o Importer.</p> <p>No campo <strong>Modelo</strong>, selecione o modelo em que serão importados registros. Lembrando que ele só irá mostrar os modelos instalados na sua base local, então caso algum modelo não esteja ali, é provável que o mesmo não tenha sido instalado na base.</p> <p>Aqui eu irei importar produtos:</p> <p><img src="./static/images/img1.png" alt="img1"></p> <p>O campo <strong>Extra</strong> mostra algumas configurações extras:<em>Caracter Delimitador</em>, <em>Caracter de Citação</em>, os quais já possuem valores default: , e &quot; respectivamente.</p> <p>O campo <strong>Arquivo CSV</strong> é para selecionar o arquivo .csv a ser importado.</p> <p>Após selecionar o arquivo, o wizard ficará algo parecido com isso:</p> <p><img src="./static/images/img2.png" alt="img2"></p> <p>Na primeira tabela mostra as 5 primeiras linhas do arquivo.</p> <p>Já na segunda tabela é onde será configurado os dados da importação.</p> <p>Caso tenha selecionado um arquivo por engano, é possivel trocar o arquivo sem ter que fechar e abrir o wizard novamente.</p> <p>O campo <strong>Criar objeto caso não for encontrado</strong> é para casos onde não há registros no sistema com os dados informados nas linhas selecionadas como <strong>Identificador</strong>. Nesses casos, um registro será criado, com os atributos passados como identificadores.</p> <h3>Tabela de Importação</h3> <p>Cada linha dessa tabela é uma coluna do arquivo .csv importado. Logo, se o arquivo tinha as colunas <em>id, name, unidade_tributacao</em>, a tabela terá essas mesmas 3 linhas.</p> <p>Nesse exemplo, usarei um arquivo .csv com 3 colunas: <em>nome, NCM, preço</em></p> <p>Em cada linha da tabela terão:</p> <p><strong>Campo Odoo</strong>: Selection com os campos do modelo selecionado.</p> <p><strong>Domínio</strong>: É como o campo é referenciado dentro do sistema. Esse campo geralmente é setado automaticamente. Porém, há a possibilidade de modificá-lo se for preciso. Isso é útil quando a importação de registros está ligada a um outro objeto do sistema, para informar qual atributo do objeto que temos em mãos. Para descobrir qual atributo que o mesmo está ligado, basta buscar no Modelo:</p> <p><img src="./static/images/model.png" alt=""></p> <p>Neste exemplo, eu tenho apenas o código do NCM. Portanto, é preciso informar ao importador qual campo que corresponde o dado do arquivo .csv. Para isso, eu posso selecionar NCM no <strong>Campo Odoo</strong> e depois adicionar &#39;.code&#39; no final do dominio, pois o dado que eu tenho corresponde ao campo &#39;code&#39; do NCM.</p> <p><strong>Usar como identificador?</strong>: As linhas que tiverem essa opção selecionada serão usadas como dados para a busca do registro. Exemplo: Se a linha &#39;name&#39; for selecionada como identificadora, na hora de importar, o sistema irá procurar pro um registro do modelo selecionado que tenha o nome igual ao valor passado no arquivo .csv. <strong>PS: É altamente recomendável selecionar a opção <em>Campo não nulo</em> nesses campos!</strong> Isso porque não é possivel, e também faz pouco sentido atualizar/criar/identificar qualquer objeto com valor nulo.</p> <p><strong>Campo não nulo?</strong>: As linhas que tiverem essa opção selecionada não poderão ter valores vazios. Caso tenha, será mostrado na tela as linhas que tiveram problemas. É altamente recomendado que selecione essa opção em linhas com informações importantes, como linhas identificadoras.</p> <p><strong>Criar caso não encontrar?</strong>: Essa opção permite que o usuário crie um registro com o valor passado caso ele não exista no sistema. <strong>Porém, tenha cuidado ao usar essa opção.</strong> Podem ocorrer casos onde algum campo obrigatório não esteja selecionado e então dar erro. Outro caso possível é criar registros duplicados, quando o mesmo é um objeto.</p> <p>Ex: Digamos que haja um registro NCM código 99999999 com nome Teste. Houve uma importação de Produtos. O valor da coluna NCM é o código dele e o código &#39;99999999&#39; não estava cadastrado no sistema. O sistema então irá criar um registro com esse código. Numa outra importação de Produtos, a coluna NCM estava com valores do tipo &#39;nome NCM&#39;. Em uma das linhas, tinha o valor &#39;Teste&#39;. O sistema então irá perceber que não há nenhum registro com esse nome. Ele irá, então, criar outro registro apenas com o nome Teste.</p> <p>O exemplo foi meio forçado, mas passa a ideia de que podem ser criados registros duplicados de um mesmo objeto, caso esse campo seja usado de fora errada.</p> <p><em>Caso alguma linha da segunda tabela não precise ser importada, apenas deixe o campo</em> <strong>Domínio</strong> <em>vazio.</em></p> <p>Nesse exemplo, os domínios ficarão assim:</p> <p><img src="./static/images/img3.png" alt=""></p> <p>Quando tudo estiver pronto, só clicar no botão <strong>IMPORTAR</strong>, que as coisas irão acontecer.</p> <h2>Mensagens de Erros</h2> <ul> <li><p><strong>Nenhum arquivo CSV selecionado!</strong> Indica que não foi selecionado um arquivo .csv</p></li> <li><p><strong>Nenhum caracter de citação informado. Por favor, coloque um caracter de citação antes de prosseguir.</strong> Significa que o campo <strong>Caracter de citação</strong> está vazio. Para verificar isso, selecione o checkbox <strong>Extra</strong> que irá surgir o campo para colocar o caracter de citação.</p></li> <li><p><strong>Não há linhas de identificação! Por favor, selecione pelo menos uma linha como identificadora antes de prosseguir.</strong> Indica que não há linhas com o checkbox <strong>Usar como identificador?</strong> selecionado.</p></li> <li><p><strong>Não há linhas para importação com domínio detectadas! Por favor selecione um campo odoo ou coloque um domínio em pelo menos uma linha antes de prosseguir.</strong> Indica que não há linhas com o campo <strong>Domínio</strong> preenchido.</p></li> </ul> <p><strong>PS: Linhas sem domínio são ignoradas na importação</strong></p> <ul> <li><p><strong>Linha nº: x - Valor vazio em campo não nulo</strong> Isso significa que na linha x, há um valor vazio num campo em quem não é aceito tal valor (Checkbox não nulo selecionado)</p></li> <li><p><strong>Linha nº: x com valor &#39;valor&#39; não foi encontrado no sistema</strong> Na linha x, o valor indicado não foi encontrado no sistema. Ele aparece quando é fornecido um atributo de um objeto (id, name, int_ref) que não está presente no sistema. Em caso de nomes, prestem atenção em acentos, espaços antes/depois extras, etc.</p></li> </ul>