Histórico da Página
Ajuste de Controle de Numeração automática
Produto: | Microsiga Protheus | ||||||||
Ocorrência: | Procedimentos para ajustar o Controle de Numeração automática de Documento de saída e ALIAS Tabelas (ALIAS) diversos no Protheus | ||||||||
Ambiente: | SIGAFAT - Faturamento | PROD. 1 |
View file | ||||
---|---|---|---|---|
|
OBSERVAÇÃO - Principais Pontos de Entrada que permitem tratar a Numeração do Documento de Saída:
M467FILT - Filtrar séries a serem mostradas (Não é válida para o módulo Loja): http://tdn.totvs.com/pages/releaseview.action?pageId=6784228
SX5NOTA - Validação das séries que deseja considerar no momento da geração da NF: http://tdn.totvs.com/pages/releaseview.action?pageId=6784448
FTVDCHGX5FIL - Filial específica para busca da série da NF: http://tdn.totvs.com/pages/releaseview.action?pageId=6784604
M460NUM - Seleção da série - Executado após a seleção da série para permitir a troca através de customização local: http://tdn.totvs.com/pages/releaseview.action?pageId=6784193
M461SER - Série e Número Nota Fiscal Saída: http://tdn.totvs.com/pages/releaseview.action?pageId=46072846
M468ASER - Chamado durante o processamento da nota fiscal, para a obtenção da série da NF: http://tdn.totvs.com/pages/releaseview.action?pageId=6784231MA461NNF - Visualização do número da nota gerada pelo SD9: http://tdn.totvs.com/pages/releaseview.action?pageId=6784608
ATENÇÃO: MENSAGEM: A460FLOCK - Ocorreu algum problema na última geração de notas fiscais
(Detalhes em: FAT0002_Soluções possíveis para o Help A460FLOCK (MATA461))
O alerta "A460FLOCK - Ocorreu algum problema na última geração de notas fiscais" acontece em 3 situações:
1- Falta da tabela SX5
2- Falta do parâmetro mv_numiten
3- Arquivo SX5 corrompido
Sendo assim,
1- Acesse o Configurador e o Banco de Dados e valide se em ambas é localizada a tabela;
2- Verifique se o parâmetro MV_NUMITEN está criado e com conteúdo válido;
3- E para a última situação, será necessário realizar o procedimento abaixo:
A- Primeiramente validar que o controle de numeração é via SX5:
Verifique o parâmetro MV_TPNRNFS: Indica de que forma será controlada a numeração dos documentos de saída e entrada com formulário próprio.
As opções disponíveis são:
1. Controle de numeração pelo SX5 - Tabelas Genéricas.
2. Controle de numeração pelo SXE / SXF
3. Controle de numeração dos documentos de entrada e saída pelo SD9.
B- Realizar um Backup da tabela SX5
C- Abir o backup para validar o arquivo, aplicar o utilitário PACK sobre ele (para excluir registros deletados), e salvar com outro nome para manter o backup original intacto
D- Aplicar um ZAP na tabela SX5 (truncate table) que irá deletar a tabela mantendo apenas a estrutura
E- Executar um APPEND na SX5 do backup no qual foi aplicado PACK
Obs IMPORTANTE:
- Atente-se se o SX5 é exclusivo ou compartilhado. Se SF2 e SD2 são exclusivas, ou seja, cada Filial tem seu próprio controle de Notas de saída; então, o controle de numeração da nota de saída também deve ser exclusivo. Neste caso, se o MV_TPNRNFS = 1 então o controle de numeração é via SX5, a qual também deve ser exclusiva. Se for imprescindível utilizar a SX5 compartilhada, deixando apenas a TABELA 01 exclusiva, é necessário utilizar Ponto de Entrada: CHGX5FIL - CHGX5FIL+-+Utiliza+Tabela+01+Exclusiva+em+um+SX5+Compartilhado (Utilizando SX5 compartilhado, cada filial deverá possuir um mv_numiten).
- Outra situação que deve ser levada em consideração para este tipo de problema, é se o configurador estiver aberto na tabela 01 de série notas fiscais e tentar faturar a nota, o sistema também exibe o mesmo help, sendo necessário, fechar o configurador durante o processo.
Importante : Todo procedimento deve ser primeiramente realizado em base teste. Somente realizar na base de produção após o processo ser validado pela equipe de TI da empresa juntamente com o usuário final. Havendo dúvidas ou dificuldade em relação ao procedimento, acionar um consultor Totvs.
PROCEDIMENTO 2 - CONTROLE DE NUMERAÇÃO AUTOMÁTICA PARA TABELAS (ALIAS) DIVERSAS POR SXE/SXF ou HARDLOCK
IMPORTANTE: PROTHEUS 12 o controle deve ser somente via Hardlock. Para validar em seu ambiente, consulte abaixo:
Validação do Controle de Numeração
Como está definido o controle(ENABLENUMER)? É pelo hardlock ou pelo SXE e SXF? Para analisar como é controlada, verificar como está configurado no licenseserver:
Ex
[LICENSESERVER]
Enable=1
Port=5555
ShowStatus=1
ENABLENUMBER= 0 ou 1
ENABLENUMBER= 0 = SXE e SXF
ENABLENUMBER= 1 = Hard Lock
Seguir esta ordem de verificação para acerto de numeração automática:
1 - Usuário ADMIN
O usuário que inicializa o serviço do Protheus Server (que usa hardlock) deve ser o ADMINISTRADOR.
Se estiver ok, passe ao item seguinte.
2 - Pasta SYSTEM
2.1. SXE e SXF ou Hardlock.
Mais de uma pasta System = USO OBRIGATÓRIO DE HARDLOCK. NÃO FUNCIONA com SXE e SXF para mais de um SYSTEM.
2.2. Possui mais de um ambiente apontando para o mesmo banco de dados e o mesmo License Server (configuração no ini do server) como por exemplo ambiente Produção e Teste? É necessário:
a) Obrigatório uso da chave SpecialKey (detalhes em http://tdn.totvs.com/display/tec/SpecialKey).
Exemplo:
[ENVDBF]
SourcePath=C:\Protheus10\APO\R13
RootPath=C:\Protheus10\Protheus_Data\R13
StartPath=\system\\13
x2_path=
RpoDb=dbf
RpoLanguage=portuguese
RpoVersion=101
LocalFiles=ads
Trace=0
localdbextension=.dbf
SPECIALKEY=ENVDBF
com a chave CheckSpecialKey
[general]
CheckSpecialKey=0
b) Ambientes DIFERENTES.
Ambiente DBF: Se os ambientes forem DBF/CDX eles devem apontar para endereços no X2_PATH, obrigatoriamente, diferentes.
Ambiente TOP: Se os ambientes forem TOPConnect/TOTVSDBAcess, os alias dos ambientes devem ser, obrigatoriamente, diferentes.
Se 2.1 e 2.2 estiverem ok, passe ao item seguinte.
3 - Configuração do Campo para geração de número automático
Para que, por exemplo, o cadastro de clientes, traga na inclusão automaticamente o próximo número disponível, utiliza-se a seguinte sintaxe no inicializador padrão do campo A1_COD: GetSx8Num("SA1","A1_COD").
Validar se o X3 está com esta informação no inicializador padrão!
Obs: Na maioria das vezes o inicializador padrão do campo está cadastrado como: GetSx8Num("SA1").
Quando uma tabela tiver MAIS DE UM CAMPO com numeração automática, a função deve estar conforme exemplo:
CAMPO: A1_COD û GETSXENUM(SA1, A1_COD, A1_COD)
CAMPO: A1_CODTST û GETSXENUM(SA1, A1_CODTST, A1_CODTST)
Se não repetir o campo na função, o sistema só assume a numeração pelo Alias.
- IMPORTANTE: Esta configuração no SX3 para geração automática de numeração sequencial deve ser utilizada apenas por campos nos quais já consta a definição no nativo do Protheus. Não deve ser incluída manualmente em campos que não possuem este controle automático por padrão, como por exemplo no campo C5_NUM
Isto porque, este tratamento por si só não trata abandono de numeração reservada não utilizada (este tratamento é realizado no código fonte das rotinas). Ou seja, ao reservar a próxima numeração clicando em "Incluir" (registro 000010 por exemplo) mas não efetivar a gravação, abandonando o registro, depois de já ter sido utilizada a numeração seguinte (depois de outra instância ter gravado a 000011 por exemplo) serão provocadas lacunas fazendo com que o controle automático se perca. Desta forma, seria necessário verificar a possibilidade de uso de ponto de entrada na rotina que deseja implementar o uso de numeração automática para o fiel comportamento da ferramenta, de forma a tratar abandonos de reserva de numeração
Se estiver ok, passe ao item seguinte.
4 - Procedimento para Acerto de Numeração Automática
IMPORTANTE: Quando a numeração é controlada pelo HARDLOCK, ao reiniciar o License Server não será mais criado o arquivo lsnumber.val ; obrigando assim a regeração a partir da numeração do banco de dados. Detalhes em: Criação do LSNumber.val / Numeração automática pelo License Server
Deste modo o HARDLOCK irá varrer a Tabela em questão (exemplo SC5) no Banco de Dados e irá se basear na maior numeração que possui gravada e incrementar em +1
Exemplo: A sequência do campo está na numeração 000096 , 000097 , 000098 , 000099 , 000100 .... Mas, por algum motivo, essa tabela já possui um registro gravado com a numeração 142535. Ao reiniciar o LS, irá varrer a tabela para encontrar a última numeração e como o número 142535 é maior que o 000100, seguirá a numeração a partir do 142535 respeitando a regra da maior numeração que possui gravada e incrementar em +1
Observação: Para ambientes que possuam lacunas na numeração automática como exemplificado acima, é possível utilizar o ponto de entrada CRIASXE, que consegue varrer a tabela e setar a numeração.Maiores informações: CriaSXE - Controle de Numeração
Conferência: Verifique na tabela em questão qual é a maior numeração já gerada na Tabela (ou qual a última numeração gerada na sequência que deseja dar contiuidade) - Exemplo: 000100
4.1. Ajuste SXE / SXF
- Na tabela SXF - deixe o campo do código com o próximo número a ser gerado - Exemplo: 000101
- Na tabela SXE - deixe o campo do código com SXF+1 - Exemplo: 000102
- Deixe apenas uma linha para o ALIAS tanto na SXF quanto na SXE. Se houver outras linhas, delete.
4.2. Ajuste HARDLOCK
a) Inclusão da rotina APCFG110 no MENU
- Configurador SIGACFG > Ambiente > Ccadastro > Menu;
- Selecionar somente o menu no configurador clicar em OK;
- Adicionar o menu para a coluna "novo menu";
- Selecionar onde deverá ser salva a rotina
- Clicar em novo item
- Preencher o nome em port/ ingl e esp
- Em "programa" APCFG110 selecionar o módulo de configurador clicar em ok
- Gerar como sigacfg/ sair do configurador e entrar novamente para visualizar a nova rotina
OBS: A rotina APCFG110 também pode ser consultada executando a fórmula: apcfg110() em campo macro executável como por exemplo campo CT5_VLR01
b) Linhas únicas por ALIAS / Filial
- Verificar na rotina APCFG110 a sessão "Próximos números" e principalmente a sessão "EM USO". Deverá conter apenas uma linha para cada ALIAS (por Filial).
Exemplo, ALIAS SC5, pode haver apenas uma linha de numeração para a SC5 para cada Filial. Caso esteja exibindo mais de uma linha para o mesmo ALIAS, reiniciar o License Server.
c) Correção
- Na sessão "Números em uso / números liberados" deixe o campo do código com o próximo número a ser gerado - Exemplo: 000101
- Na sessão "Próximos números" deixe o campo do código com +1 - Exemplo: 000102
5 - Nota complementar sobre Uso simultâneo
O uso simultâneo da Tabela faz com que o sistema se comporte de forma a atender todas as chamadas de numeração. O resultado da ordem da numeração está sujeito à efetivação realizada pelo usuário que a reservou.
A reserva de numeração compromete a ordem quando há mais de um usuário manipulando a tabela ao mesmo tempo, se determinado usuário já reservou a numeração e não efetivou o registro, após um segundo usuário ter reservado a numeração seguinte; podendo ocasionar em duplicidade de registros na SXF para garantir todas as reservas feitas. Desta forma, a não efetivação das reservas, compromete a numeração subsequente.