• Se o processo é iniciado através da tela Ordens de Compra, armazena o código da Ordem de Compra selecionada;
  • Se o processo é iniciado através da tela Declarações de Importação, armazena o código da DI selecionada;
  • Se o processo é iniciado através da tela de Notas de Entrada, nenhuma informação de origem é armazenada e o resultado será uma nota de entrada avulsa.
  • Abre o XML em memória;
  • Verifica se já não existe uma chave de acesso da NF-e cadastrada e caso já exista, cancela a importação com a mensagem Já existe uma nota fiscal de entrada com a chave de acesso!;
  • Busca o tipo de operação do XML;
  • Localiza o tipo de operação do XML no cadastro de tipos de operação. Tal qual como está no XML;
    • Caso não encontre, solicita para o usuário selecionar o tipo de operação do XML;
    • Verifica se o tipo de operação indicado pelo usuário está dentro de algum grupo de operações;
    • Inclui na lista de sinônimos dos tipos de operação o texto do XML para na próxima vez utilizar o mesmo;
  • Verifica se o tipo de operação não é de importação;
  • Se for de importação, utiliza o próprio tipo de operação;
    • Se não encontrar. O processo é suspenso nesse ponto, até que um usuário adicione manualmente o tipo de operação do XML na lista de sinônimos da operação de importação correta.
  • Se não for de importação, busca o tipo de operação inverso;
  • Armazena o tipo de operação definido pelos passos anteriores no cabeçalho de uma nova nota de entrada;


Diagrama1 do Mermaid


  • Busca pela filial do XML;
  • Se for importação, busca a filial do CNPJ do campo Emitente da NF-e;
  • Se não for de importação, busca a filial do CNPJ do campo Destinatário da NF-e;
  • Verifica se a filial do XML é a filial logada;


Diagrama2 do Mermaid


  • Busca pelo fornecedor/pessoa da nota de entrada;
  • Se for importação, busca o fornecedor/pessoa da nota de entrada pelo nome do destinatário que aparece no XML;
  • Se não for importação, busca pelo CNPJ do emitente que aparece no XML;
  • Se o fornecedor possuir uma condição de pagamento padrão, armazena;
  • Se for importação, busca as informações da DI;
  • Se não for importação, verifica se a configuração de OC obrigatória está ligada
  • Se está ligada, busca o valor do frete, transportadora, data prevista de entrega, condição de pagamento, observação interna e observação pública da ordem de compra selecionada no início do processo;
  • Se está ligada, e não foi selecionada uma ordem de compra no início do processo. A importação é cancelada com a mensagem de erro Não foi encontrada uma Ordem de Compra como origem!
  • Se não está ligada, verifica os itens.
  • Se não há uma condição de pagamento armazenada (do fornecedor ou da ordem de compra), busca a condição de pagamento configurada como Nenhuma da configuração do sistema;


Diagrama3 do Mermaid


  • Verifica os itens do XML;
  • Se for importação, verifica se a DI possui um item para o número da adição e sequencial dentro da adição em cada item do XML;
    • Caso não exista, cancela a importação com a mensagem de erro Não foi encontrado um mapeamento para as adições e sequencial da adição!
  • Se não for importação, verifica se no cadastro Itens dos Fornecedores existe um item com o código do item do XML para o fornecedor;
    • Caso não exista, insere um item com este código no cadastro Itens dos Fornecedores para o fornecedor e cancela a importação com a mensagem de erro Não foi encontrado um mapeamento para os codigos dos fornecedor!


Diagrama4 do Mermaid


  • Preenche as informações do cabeçalho da Nota Fiscal de Entrada a partir do XML e salva o cabeçalho da Nota Fiscal de Entrada sem itens:
    • Cliente/Fornecedor com o fornecedor/pessoa armazenado;
    • Filial com a filial armazenada;
    • Tipo de Operação com a operação armazenada;
    • Condição de pagamento com a condição de pagamento armazenada;
    • Código com o campo NNF do XML;
    • Status com o valor Inicial;
    • Emissão com a data de emissão do XML ou a atual do servidor, caso não tenha a DHEMI no XML;
    • Entrega com a data atual do servidor;
    • Série com o campo Serie do XML;
    • Chave de acesso com o campo ChaveAcesso do XML;
    • Marca a opção Cálculo Manual de Impostos;
    • Transação de origem com a DI ou OC do início do processo;
    • Transportadora com a transportadora armazenada;
    • Valor do frete com o campo VFrete do XML;
  • Para as notas que não são de importação nas importações que começaram na tela Ordens de Compra preenche os seguintes campos a partir da OC:
    • Data Prevista de Entrega;
    • Condição de pagamento;
    • Obs. Interna;
    • Obs. Pública;
  • Para as notas de importação com vínculo com a DI:
    • Via de Transporte;
    • Forma de Importação;
    • Tipo de Nota A Emitir;
    • DI;
    • DI Data;
    • DI Data de Desembaraço;
    • DI Local de Desembarque;
    • Marca os campos Peso Bruto Digitado e Peso Líquido Digitado;
  • Se existe no XML informações de volume, pega o primeiro volume e usa para preencher os campos
    • Peso Bruto;
    • Peso Líquido;
    • Marca;
    • Espécie;
    • Qtd. Volumes;
  • Se não existe no XML informações de volume, preenche os seguintes campos a partir da DI:
    • Peso Bruto;
    • Peso Líquido;
    • Limpa o campo Marca;
    • Limpa o campo Espécie;
    • Limpa o campo Qtd. Volumes;
  • Recarrega a Nota Fiscal de Entrada recém cadastrada a partir do banco de dados;


Diagrama5 do Mermaid


  • Adiciona os itens do XML na Nota Fiscal de Entrada recém cadastrada. Para item executa:
  • Busca o CFOP;
    • Se não for importação, busca o CFOP inverso do CFOP do XML e caso não exista um CFOP inverso cancela a importação com a mensagem Não foi encontrado um CFOP inverso para o CFOP!;
    • Se for importação, copia o CFOP do XML e caso não exista no cadastro de CFOP cancela a importação com a mensagem Não foi encontrado o CFOP!;


Diagrama6 do Mermaid


  • Se for importação, busca as informações do item a partir do Número da Adição e Sequencial da Adição na DI. Item, Número da DI, Ordem na DI, Fabricante e Exportador;
  • Se não for importação, busca no cadastro Itens dos Fornecedores, a partir do fornecedor e do código do item no XML o Item do Fornecedor a ser inserido;
    • Se encontrar apenas um, utiliza este Item do Fornecedor;
    • Se encontrar mais de um, apresenta a lista para o usuário selecionar qual o Item do Fornecedor deve ser utilizado;
    • Com o Item do Fornecedor definido, avalia o campo tipo de vínculo do Item do Fornecedor:
      • Se for SKU, utiliza o SKU configurado;
      • Se for Item Pai, apresenta a lista dos SKU do item pai configurado na tela nova de itens dos forneedores, fltrado pela unidade.

No momento de buscar o item, ele busca apenas pelo fornecedor e código do item do fornecedor. Se não achar um SKU (pode ser que tenha o item do fornecedor em branco). Ele inclui um novo item do fornecedor com a descrição do XML e o SKU/Item Pai em branco.

Ao incluir um em branco, ele inclui um novo com o código e nova descrição. Se a descrição já existir, ele só reativa ela.
O sistema nunca altera a descrição de um que já existe. Apenas reativa.


Diagrama7 do Mermaid


  • Busca o NCM do item no XML;
  • Busca o NCM do item no cadastro;
  • Verifica a configuração que permite ou não divergência entre NCM da NF e do cadastro;
    • Se está configurado para permitir apenas para uma lista de perfis, verifica se o perfil está na lista dos permitidos. Senão cancela a importação com a mensagem NCM do item diferente do NCM do item do xml!;
    • Se está configurado para atualizar o item, atualiza o item com o NCM do XML;
    • Se está configurado para sempre permitir, utiliza o NCM do item;
      • Preenche o NCM do item após a verificação acima;


Diagrama8 do Mermaid


  • Se for importação
  • Preenche o campo Exportador do cabeçalho (atenção, ficará o exportador do último item neste caso);
  • Preenche o número da DI;
  • Preenche o número sequencial da adição;
  • Preenche o campo Fabricante;
  • Preenche o Item com o SKU indicado;
  • Preenche o CFOP com o CFOP armazenado;
  • Preenche o campo Ordem;
  • Preenche o campo Qtd. com a multiplicação do campo múltiplo do cadastro de Itens do Fornecedor com o campo Quantidade do XML;
  • Preenche o campo Valor Unitário a partir do XML;
  • Preenche o campo Valor Total a partir do XML;


Diagrama9 do Mermaid


  • Se não for importação, e o processo tiver iniciado por uma Ordem de Compra tenta vincular o item da Nota de Entrada com o item da Ordem de Compra:
    • Busca pelo campo NItemPed no XML. Se estiver preenchido, busca pelo item de mesma ordem que o NItemPed mas na OC;
    • Se não houver NItemPed, busca pelo campo NItem do XML e busca pelo item de mesma ordem que o NItem mas na OC;
    • Se não encontrar através do NItem busca pelo Código do item no XML e busca pelo item da ordem de compra que possui o mesmo código de item do fornecedor através do campo Item do Fornecedor nos itens da Ordem de Compra;
  • Preenche os impostos do item a partir dos impostos do XML;
  • Recarrega a Nota Fiscal de Entrada recém cadastrada a partir do banco de dados para ter as informações atualizadas de impostos;
  • Se for importação, ajusta o campo de observações e de despesas adicionais de importação da Nota Fiscal de Entrada recém cadastrada;
  • Salva a nova nota de entrada;


Diagrama10 do Mermaid