Ajuda por telas > Recursos > Processos Automáticos > Cadastro > Processos automáticos disponíveis > 67 - Importação de documentos eletrônicos de entrada

Processo automático 67 - Importação de documentos eletrônicos de entrada

Processo

Tipo do Processo: 04 - Rotina.

O processo automático 67 (recebimento eletrônico) executa a tela Via Recebimento de Documento Eletrônico (F000INE) que, por sua vez, faz a carga das tabelas intermediárias de Recebimento de Documentos Eletrônicos:

Já no processamento, o processo automático faz a geração das notas fiscais de entrada nas tabelas de Compras:

Assim, a nota permanecerá na situação digitada e o seu fechamento será feito pela tela Nota Fiscal de Entrada Agrupada (F440GNE).

No entanto, mesmo havendo um processo automático corretamente parametrizado, se uma nota fiscal que tenha sido integrada com tributos for cancelada, será imprescindível proceder com o estorno dos tributos de forma manual.

Destacamos que quanto menos chamadas forem feitas, melhor, pois assim a rotina pode armazenar em cache as informações, melhorando o desempenho.

Parâmetros do processo

FECHARNOTA
Define se a nota deve ser fechada após processada de acordo com o funcionamento da opção Fechar nota após processar da tela F000INE. Opções:

FILIAL
O comportamento padrão dessa rotina é executar o processo na empresa e filial logadas, porém é possível definir uma abrangência de filiais a serem processadas.

Exemplo:

O processo utiliza a filial informada nesse parâmetro como critério de "desempate" quando houver mais de uma filial cadastrada como o mesmo CNPJ e Inscrição Estadual. Se não houver uma filial informada, a filial logada será utilizada para esse fim.

SQLSTRING
Através desse parâmetro é possível acrescentar uma cláusula que será concatenada ao comando de filtro utilizado para busca dos documentos na tabela intermediária de Notas Fiscais de Entrada (E000NFC). Assim, sistema acrescenta automaticamente o comando 'AND' e concatena a cláusula recebida ao final do comando nativo.

Exemplo: para processar apenas os documentos cuja Espécie do Documento seja 55 ou 57: SqlString=E000NFC.CODEDC IN ("55", "57")

Importante

Acrescente a tabela E000NFC antes do campo desejado para filtro.

CONTROLAREXCECAOREGRA
Define se a nota fiscal de entrada é gerada ou fica pendente em caso de erro no fechamento ou na execução do Identificador de regra CPR-000INECM03. O parâmetro tem as opções 0 - Não e 1 - Sim, sendo 0 - Não o valor padrão. Quando o campo estiver definido como 1 - Sim, se ocorrer algum erro a nota fiscal de entrada não será gerada, ficando pendente com a situação Inconsistente. Caso o campo esteja definido com a opção padrão, mesmo se ocorrer um erro a nota fiscal é gerada normalmente.

Além disso, quando definido como 1 - Sim o sistema faz um controle de transações para a regra: se ela gerar alguma exceção, essa deverá ser retornada para a variável CPRAGEREXC do identificador CPR-000INECM03 igual a S - Sim e o sistema encerrará a transação do banco sem gravar as informações na base.

DUPLICARDEFINICAOFORNECEDOR
Possibilita parametrizar o sistema para duplicar as definições do fornecedor caso ele não exista na filial em que o documento está sendo gerado.

PARCELASORDEMCOMPRA
Indica o uso das parcelas da ordem de compra na execução via agendamento. Opções:

CADASTRARFORNECEDORAUTOMATICO
Permite o cadastro automático do fornecedor, quando habilitado. O parâmetro tem as opções "0 - Não habilitado" e "1 - Habilitado", sendo "0 - Não habilitado" o valor padrão.

CADASTRARTRANSPORTADORAUTOMATICO
Permite o cadastro automático de transportadora, quando habilitado. O parâmetro tem as opções "0 - Não habilitado" e "1 - Habilitado", sendo "0 - Não habilitado" o valor padrão.

CRIARLIGACAOPRODUTOXFORNECEDOR
Permite o cadastro automático da ligação produto X fornecedor, quando habilitado. O parâmetro tem as opções "0 - Não habilitado" e "1 - Habilitado", sendo "0 - Não habilitado" o valor padrão. Para habilitar o cadastro da ligação, acesse a tela F000INE > botão Seleção (F000SDV) e selecione o campo Criar ligação de fornecedor com produto ao processar.

Orientações adicionais para utilização do processo

Importante

As orientações a seguir são essenciais para a utilização do processo agendado em ambientes com grande volume de documentos a serem processados pela rotina. O não atendimento dessas orientações poderá causar problemas na execução da rotina, impactando o Middleware Senior e causando outras situações como, por exemplo, erro de "OutOfMemory / Out of Memory" na execução do processo.

As orientações a seguir são baseadas na utilização do parâmetro SqlString, que permite concatenar parâmetros SQL no comando padrão do processo agendado. Estas informações oferecem dicas para otimizar a parametrização do processo agendado, garantindo uma melhor utilização e desempenho. Caso você tenha dúvidas das melhores condições personalizadas a serem adicionadas no parâmetro SqlString, consulte o DBA responsável pelo ambiente onde o sistema está instalado.

Caso seja necessário coletar o Select que o sistema utiliza para buscar os documentos a serem processados pela rotina, o Log do SQLMon pode ser coletado para a execução manual do processo agendado. Para isso, siga as instruções detalhadas no artigo ERP - Processo Agendado - Como efetuar a depuração de uma regra ou efetuar a coleta de um log de SQLMon em um Processo Agendado/Processo Automático (-agendador:?).

O processo agendado, quando executado, executa um select no banco de dados para buscar os documentos que serão processados pela rotina. Quanto maior o número de documentos, maior é o tempo de processamento da rotina. O período de agendamento do processo (a cada quantos minutos ele será executado) precisa ser parametrizado pensando na quantidade média de registros que o processo buscará na base de dados. Lembre-se de que para grande volume de registros é necessário seguir as orientações indicadas abaixo, principalmente no que tange limitar a quantidade de registros que a rotina vai buscar da base de dados a cada ciclo de execução do processo.

Como garantir que a ativação do processo agendado não busque NFs antigas que não devem ser verificadas pelo processo

Neste caso, a orientação é utilizar o parâmetro SqlString para concatenar no processo agendado um filtro pelo campo DATEMI (data de emissão) ou outro campo que permita um filtro de NF recentes de maneira mais dinâmica. Isso ajudará a limitar a quantidade de documentos que o processo localizará para processamento.

Como garantir que o processo agendado busque um número limitado de registros para processar a cada execução

Neste caso, a orientação é utilizar o parâmetro SqlString para concatenar no processo agendado uma função do próprio banco de dados, o que limitará o número de registros a serem retornados. Essa função variará de acordo com o banco de dados utilizado, e o formato de uso da função também será alterado para não interferir no select principal da rotina.

Importante

Além de utilizar o parâmetro SqlString, é importante fazer utilização de processos distintos para cada Empresa/Filial que tenha grande volume de registros a serem processados. Ou, pelo menos, agrupar o processamento de algumas filiais de acordo com o volume de dados.

No caso do banco de dados Oracle, é possível utilizar a função ROWNUM para fazer essa limitação.

Importante

Verifique também o tópico sobre como garantir que o processo automático não entre em looping, processando apenas registros inconsistentes. Essa parametrização é importante e deve ser realizada juntamente com a limitação de registros a serem processados pelo processo automático.

Como garantir um processamento paralelizado de registros sem que os processos paralelos leiam os mesmos registros

Nesse caso, uma das melhores maneiras de paralelizar a execução da rotina em dois processos agendados, sem causar impactos negativos, é parametrizar um processo para ler apenas documentos cuja numeração seja par e outro processo para ler apenas documentos cuja numeração seja ímpar.

Caso você precise, ainda, paralelizar o processamento em mais de dois processos agendados, considere a possibilidade de criar outros filtros personalizados, que podem ou não ser baseados no número do documento. Solicite o apoio do DBA da sua empresa para validar comandos SQL que possam auxiliar nesse tipo de parametrização da rotina.

Como garantir que o processo agendado não ficará em looping de processamento de registros que contenham erros

Neste caso, é necessária a realização de um filtro no campo E000NFC.StaNfv de forma que a rotina busque apenas os registros que tenham o status "1 - Pendente". Consulte a descrição deste campo no TBS do sistema para obter detalhes sobre as opções disponíveis.

Se o filtro for sempre aplicado ao status "1 - Pendente", a rotina automática executará apenas os registros pendentes. Registros inconsistentes poderão ser tratados manualmente através da tela F000INE, evitando que esses registros fiquem em looping no processo automático até que um usuário resolva as pendências.

Esse tipo de filtro é essencial ao parametrizar um limite de registros a serem processados pela rotina. Caso seja definido um limite, como os 10 primeiros registros, e esses registros sejam inconsistentes, a rotina ficará processando repetidamente os mesmos 10 registros inconsistentes, sem encontrar outros registros para processar.

Identificadores de regras

Módulo Código
CPR 000CONVR01
CPR 000INECM03

Parâmetros globais

Nome Descrição
UtiViaCep

Utilizar o web service ViaCep para buscar dados de CEPs não cadastrados na tela F008CEP.

Este artigo ajudou você?