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