Log de operações da Nota Fiscal de Saída

1) Contextualização

Abaixo segue a lista de Operações efetuadas na Nota Fiscal de Saída que a rotina possibilita mapear:

Abaixo segue a lista de Operações Eletrônicas efetuadas na Nota Fiscal de Saída que a rotina possibilita mapear:

Em qual versão o recurso está disponível?

O recurso foi disponibilizado a partir da versão 5-10-3-37. A recomendação da Senior é que o recurso seja utilizado com o sistema atualizado, ou seja, com a versão 5-10-3-70, visto que nessa versão foram liberadas diversas correções de melhorias. É importante estar com essa versão ou em versões posteriores para que o log contemple todas as interfaces (Telas, web service, Processos Automáticos) e também para que a higienização da tabela de Log ocorra corretamente, evitando lentidão na geração da Notas Fiscais de Saída.

Para conhecimento

SELECT VLRCMP

FROM E000PXF

WHERE CODEMP = 0

AND CODFIL = 0

AND CODUSU = 0

AND IDFFRM = '$PARAMETROS_GLOBAIS_SAPIENS$'

AND CMPFRM = 'GerLogNfs'

2) Novas necessidades e/ou sugestões

3) Clientes que já utilizavam o recurso

4) Erros durante o uso do recurso

“A estrutura da tabela USU_T140NFVLOG, necessária para o log de operações da nota fiscal de saída não está coerente. Pode-se desabilitar o log por meio do parâmetro ‘GerLogNfs’ na tela F000PGS”.

4.1) Como desabilitar o recurso de log em emergências

UPDATE E000PXF

SET VLRCMP = 'N'

WHERE CODEMP = 0

AND CODFIL = 0

AND CODUSU = 0

AND IDFFRM = '$PARAMETROS_GLOBAIS_SAPIENS$'

AND CMPFRM = 'GerLogNfs'

5) Habilitando o recurso

Importante

A tabela, todos os campos e o índice precisam ser criados pelo CBDS para que uma consistência de base ou mesmo uma atualização de versão não exclua essa tabela, seus campos e índices.

5.1) Criar a tabela de usuário USU_T140NFVLOG conforme especificado abaixo:

Nome: USU_T140NFVLOG;

Descrição: Tabela de Log de Operações da Nota Fiscal de Saída;

Permissão de Usuário: Acesso Completo;

Monitoramento: Não monitorar.

5.2) criar o campo de usuário USU_SEQUENCIAL conforme especificado abaixo:

Nome do Campo: USU_SEQUENCIAL;

Máscara: Z[11]9;

Tipo: Number;

Tamanho: 12;

Precisão: 0;

Título Curto: USU_SEQUENCIAL;

Título: USU_SEQUENCIAL;

Descrição: USU_SEQUENCIAL;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.3) criar o campo de usuário USU_DATA conforme especificado abaixo:

Nome do Campo: USU_DATA;

Máscara: DD/MM/YYY;

Tipo: Date;

Tamanho: 0;

Precisão: 0;

Título Curto: USU_DATA;

Título: USU_DATA;

Descrição: USU_DATA;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.4) criar o campo de usuário USU_CODEMP conforme especificado abaixo:

Nome do Campo: USU_CODEMP;

Máscara: ZZZ9;

Tipo: Number;

Tamanho: 4;

Precisão: 0;

Título Curto: USU_CODEMP;

Título: USU_CODEMP;

Descrição: USU_CODEMP;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.5) criar o campo de usuário USU_CODFIL conforme especificado abaixo:

Nome do Campo: USU_CODFIL;

Máscara: ZZZZ9;

Tipo: Number;

Tamanho: 5;

Precisão: 0;

Título Curto: USU_CODFIL;

Título: USU_CODFIL;

Descrição: USU_CODFIL;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.6) criar o campo USU_USUARIO conforme especificado abaixo:

Nome do Campo: USU_USUARIO;

Máscara: Z[9]9;

Tipo: Number;

Tamanho: 10;

Precisão: 0;

Título Curto: USU_USUARIO;

Título: USU_USUARIO;

Descrição: USU_USUARIO;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.7) criar o campo USU_USU_ERP conforme especificado abaixo:

Nome do Campo: USU_USU_ERP;

Máscara: A[100];

Tipo: String;

Tamanho: 100;

Precisão: 0;

Título Curto: USU_USU_ERP;

Título: USU_USU_ERP;

Descrição: USU_USU_ERP;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.8) criar o campo USU_ORIGEM conforme especificado abaixo:

Nome do Campo: USU_ORIGEM;

Máscara: A[100];

Tipo: String;

Tamanho: 100;

Precisão: 0;

Título Curto: USU_ORIGEM;

Título: USU_ORIGEM;

Descrição: USU_ORIGEM;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.9) criar o campo USU_OPERACAO conforme especificado abaixo:

Nome do Campo: USU_OPERACAO;

Máscara: A[100];

Tipo: String;

Tamanho: 100;

Precisão: 0;

Título Curto: USU_OPERACAO;

Título: USU_OPERACAO;

Descrição: USU_OPERACAO;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.10) criar o campo USU_OBSERVACAO conforme especificado abaixo:

Nome do Campo: USU_OBSERVACAO;

Máscara: #(40,3)#;

Tipo: String;

Tamanho: 999;

Precisão: 0;

Título Curto: USU_OBSERVACAO;

Título: USU_OBSERVACAO;

Descrição: USU_OBSERVACAO;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.11) criar o campo USU_ROTINA conforme especificado abaixo:

Nome do Campo: USU_ROTINA;

Máscara: 9[9];

Tipo: Number;

Tamanho: 9;

Precisão: 0;

Título Curto: USU_ROTINA;

Título: USU_ROTINA;

Descrição: USU_ROTINA;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.12) criar o campo USU_WEBSERVICE conforme especificado abaixo:

Nome do Campo: USU_WEBSERVICE;

Máscara: A[250];

Tipo: String;

Tamanho: 250;

Precisão: 0;

Título Curto: USU_WEBSERVICE;

Título: USU_WEBSERVICE;

Descrição: USU_WEBSERVICE;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.13) criar o campo USU_TRANSACOES conforme especificado abaixo:

Nome do Campo: USU_TRANSACOES;

Máscara: 9[3];

Tipo: Number;

Tamanho: 3;

Precisão: 0;

Título Curto: USU_TRANSACOES;

Título: USU_TRANSACOES;

Descrição: USU_TRANSACOES;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.14) criar o campo USU_CONEXAO conforme especificado abaixo:

Nome do Campo: USU_CONEXAO;

Máscara: A[100];

Tipo: String;

Tamanho: 100;

Precisão: 0;

Título Curto: USU_CONEXAO;

Título: USU_CONEXAO;

Descrição: USU_CONEXAO;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.15) criar o campo USU_COMPUTADOR conforme especificado abaixo:

Nome do Campo: USU_COMPUTADOR;

Máscara: A[100];

Tipo: String;

Tamanho: 100;

Precisão: 0;

Título Curto: USU_COMPUTADOR;

Título: USU_COMPUTADOR;

Descrição: USU_COMPUTADOR;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.16) criar o campo USU_USU_SO conforme especificado abaixo:

Nome do Campo: USU_USU_SO;

Máscara: A[100];

Tipo: String;

Tamanho: 100;

Precisão: 0;

Título Curto: USU_USU_SO;

Título: USU_USU_SO;

Descrição: USU_USU_SO;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.17) criar o campo USU_REGRA conforme especificado abaixo:

Nome do Campo: USU_REGRA;

Máscara: #(40, 3)#;

Tipo: String;

Tamanho: 999;

Precisão: 0;

Título Curto: USU_REGRA;

Título: USU_REGRA;

Descrição: USU_REGRA;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.18) criar o campo de usuário USU_EMPNFV conforme especificado abaixo:

Nome do Campo: USU_EMPNFV;

Máscara: ZZZ9;

Tipo: Number;

Tamanho: 4;

Precisão: 0;

Título Curto: USU_EMPNFV;

Título: USU_EMPNFV;

Descrição: USU_EMPNFV;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.19) criar o campo de usuário USU_FILNFV conforme especificado abaixo:

Nome do Campo: USU_FILNFV;

Máscara: ZZZZ9;

Tipo: Number;

Tamanho: 5;

Precisão: 0;

Título Curto: USU_FILNFV;

Título: USU_FILNFV;

Descrição: USU_FILNFV;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.20) criar o campo USU_SNFNFV conforme especificado abaixo:

Nome do Campo: USU_SNFNFV;

Máscara: u[3];

Tipo: String;

Tamanho: 3;

Precisão: 0;

Título Curto: USU_SNFNFV;

Título: USU_SNFNFV;

Descrição: USU_SNFNFV;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.21) criar o campo USU_ABRNFV conforme especificado abaixo:

Nome do Campo: USU_ABRNFV;

Máscara: #(40, 3)#;

Tipo: String;

Tamanho: 999;

Precisão: 0;

Título Curto: USU_ABRNFV;

Título: USU_ABRNFV;

Descrição: USU_ABRNFV;

Permite Nulo: S;

Permite Zero/Espaço: S;

Permissão o Usuário: Acesso Completo.

5.22) criar o índice USU_USU_IDATA com o campo USU_DATA:

Nome do Índice: USU_USU_IDATA;

Campos: USU_DATA;

Único: N.

Importante

O índice é essencial para otimizar a limpeza dos registros, que é feita pelo próprio recurso com base na data deles.

5.23) abaixo um resumo de como deve ficar a tabela de usuário:

Tabela: USU_T140NFVLOG

Campos:

6) Configurando o sistema

6.1) Acessar a tela Manutenção dos parâmetros globais do sistema (F000PGS) e atribuir “S - Sim” ao parâmetro global GerLogNfs:

Importante

6.2) Acessar a tela Parâmetros da Filial para Vendas (F070FVE) e inserir/alterar o parâmetro dinâmico NOTAFISCALSAIDA.LOG.OPERACOES:

6.3) Na tela Configuração de parâmetros dinâmicos (F000PPD) configurar as operações que podem efetuar log:

6.4) Operações Disponíveis:

Indica que o sistema deve logar toda inclusão dos Dados Gerias das Notas Fiscais de Saída.

Indica que o sistema deve logar toda alteração realizada nos Dados Gerias da Nota Fiscal de Saída.

Indica que o sistema deve logar os pontos de depuração existentes na Nota Fiscal de Saída.

Indica que o sistema deve logar toda exclusão de Nota Fiscal de Saída.

Indica que o sistema deve logar todo fechamento de Nota Fiscal de Saída.

Indica que o sistema deve logar toda emissão de Documentos Eletrônicos de Notas Fiscais de Saída.

Indica que o sistema deve logar todas as Operações Eletrônicas executadas nas Notas Fiscais de Saída.

Indica que o sistema pode invocar o identificador de regras VEN-140LOGNF01 a cada geração de log que for efetuada;

Indica que o sistema deve logar todo cancelamento de Nota Fiscal de Saída.

Indica que o sistema deve logar toda reabilitação de Nota Fiscal de Saída.

Identificador de regras VEN140LOGNF01

A rotina de log de operações da Nota Fiscal de Saída disponibiliza um ponto de regra para ser utilizado da forma como for necessário. Para que o identificador execute é necessário que exista a opção “R” cadastrada no parâmetro dinâmico NOTAFISCALSAIDA.LOG.OPERACOES da filial da empresa que estiver gerando o documento. Em 99,99% dos casos a empresa/filial do documento é também a empresa/filial logada.

Importante

Não recomenda-se executar consistências por meio do identificador.

Para conhecimento

SELECT CODREG, SITREG

FROM E098REG

WHERE MODSIS = 'VEN'

AND IDEREG = '140LOGNF01'

AND SITREG = 'A';

7.1) Como desabilitar o Identificador de Regras em emergências.

UPDATE e098reg

SET SITREG = 'I'

WHERE CODEMP = Informe o Código da Empresa aqui.

AND MODSIS = 'VEN'

AND IDEREG = '140LOGNF01'

7.2) Variáveis disponíveis no identificador

Nome: VLOP_NCodEmp
Descrição: Código da empresa logada no ERP
Retorna Valor: Não
Tipo: Numero

Nome: VLOP_NCodFil;
Descrição: Código da filial logada no ERP;
Retorna Valor: Não;
Tipo: Numero.

Nome: VLOP_NUsuario;
Descrição: Código do usuário logado no ERP;
Retorna Valor: Não;
Tipo: Numero.

Nome: VLOP_AUsuario_ERP;
Descrição: Nome do usuário logado no ERP;
Retorna Valor: Não;
Tipo: Alfa.

Nome: VLOP_AOrigem;
Descrição: Origem da execução;
Retorna Valor: Não;
Tipo: Alfa.

Nome: VLOP_AOperacao;
Descrição: Operação executada;
Retorna Valor: Não;
Tipo: Alfa.

Nome: VLOP_AObservacao;
Descrição: Observação da operação;
Retorna Valor: Não;
Tipo: Alfa.

Nome: VLOP_NRotina;
Descrição: Número da rotina em execução (Processo Automático);
Retorna Valor: Não;
Tipo: Numero.

Nome: VLOP_AWebservice;
Descrição: Web service em execução;
Retorna Valor: Não;
Tipo: Alfa.

Nome: VLOP_NTransacoes;
Descrição: Transações em aberto;
Retorna Valor: Não;
Tipo: Numero.

Nome: VLOP_NConexao;
Descrição: Código da conexão;
Tipo: Numero;
Retorna Valor: Não.

Nome: VLOP_AComputador;
Descrição: Nome do computador;
Retorna Valor: Não;
Tipo: Alfa.

Nome: VLOP_AUsuario_SO;
Descrição: Usuário do sistema operacional;
Retorna Valor: Não;
Tipo: Alfa.

Nome: VLOP_ARegra;
Descrição: Variável de retorno do identificador de regras;
Essa é a única variável do Identificador de Regras que permite o retorno de valor.
O valor informado nessa variável será gravado no campo USU_REGRA da tabela USU_T140NFVLOG.
A quantidade máxima de caracteres suportada pelo campo é 999.
Retorna Valor: Sim;
Tipo: Alfa.

Nome: VLOP_Nfv_NEmpNfv;
Descrição: Código da empresa da nota fiscal de saída;
Tipo: Numero;
Retorna Valor: Não;

Nome: VLOP_Nfv_NFilNfv;
Descrição: Código da filial da nota fiscal de saída;
Tipo: Numero;
Retorna Valor: Não;

Nome: VLOP_Nfv_ASnfNfv;
Descrição: Código da série da nota fiscal de saída;
Tio: Alfa;
Retorna Valor: Não.

Nome: VLOP_Nfv_AAbrNfv;
Descrição: Abrangência de notas fiscais de saída;
Tipo: Alfa;
Retorna Valor: Não

7.3) Variáveis devolvidas pelo identificador

7.4) Exemplo de regra para o identificador

Definir Numero VLOP_NCodEmp;

Definir Numero VLOP_NCodFil;

Definir Numero VLOP_NUsuario;

Definir Alfa VLOP_AUsuario_ERP;

Definir Alfa VLOP_AOrigem;

Definir Alfa VLOP_AOperacao;

Definir Alfa VLOP_AObservacao;

Definir Numero VLOP_NRotina;

Definir Alfa VLOP_AWebservice;

Definir Numero VLOP_NTransacoes;

Definir Numero VLOP_NConexao;

Definir Alfa VLOP_AComputador;

Definir Alfa VLOP_AUsuario_SO;

Definir Alfa VLOP_ARegra;

Definir Numero VLOP_Nfv_NEmpNfv;

Definir Numero VLOP_Nfv_NFilNfv;

Definir Alfa VLOP_Nfv_ASnfNfv;

Definir Alfa VLOP_Nfv_AAbrNfv;

Definir Alfa VAEmpNfv;

IntParaAlfa(VLOP_Nfv_NEmpNfv, VAEmpNfv);

Definir Alfa VAFilNfv;

IntParaAlfa(VLOP_Nfv_NFilNfv, VAFilNfv);

Definir Alfa VAMensagem;

VAMensagem = "Empresa: " + VAEmpNfv + " Filial: " + VAFilNfv + " Serie: " +

VLOP_Nfv_ASnfNfv + " Numero/s: " + VLOP_Nfv_AAbrNfv;

VLOP_ARegra = VAMensagem;

x = y;

8) Limpeza periódica de registros da tabela de log

8.1) Configuração da Limpeza de Registros da tabela de Log

Importante

8.2) A limpeza pode gerar lentidão?

Este artigo ajudou você?