Histórico da Página
...
A princípio, como primeira solução, fomos orientados a utilizarmos apenas a função LockByName, sem a criação da tabela de semáforo contábil. Com isto surgiram questões como a ocorrência de um bombardeio dessa função e a preocupação de ocasionar uma lentidão generalizada no sistema e/ou a perda de dados. Outra questão trazida a tona foi a função Ca100Incl ser chamada dentro de transação.
Como segunda solução, a sugestão da Controladoria, pela perspectiva de Produto, era a de criar a tabela do semáforo contábil no dicionário de dados, assim não impactaria no que hoje já existe. Essa solução foi rejeitada pelo time da Engenharia que questionou a necessidade de uma tabela para controle de semáforo.
Após entendimento de todas as questões acima citadas entre as áreas de Controladoria e Tecnologia, fomos orientados a uma terceira solução.
...
Outro ponto é na chamada da função que gera o número do próximo documento contábil, ProxDoc. Como esta função pode estar dentro de uma transação, caso ela não consiga pegar um número de documento contábil disponível, utilizar a função Starjob para gerar 5 ( definido em conjunto com time TEC ) executá-la e gerar os números de documento contábil e novamente tentar pegar um número de documento disponível e bloquear e marcar como usado.
caso ela não consiga pegar um número de documento contábil disponível
04. Pontos de atençãodas funções escolhidas e nas formas de bloqueio de registros
...
A função ProxDoc que verifica qual o número do próximo documento contábil disponível e faz o seu bloqueio pode estar dentro de uma transação. Por isso, caso ela não consiga pegar um número de documento contábil disponível, devemos criar uma função utilizando a função Starjob para gerar 5 10 ( definido em conjunto com time TEC ) números de documento contábil e voltar para a função ProxDoc até que consiga pegar e bloquear um número de documento disponível.
...
08. Desenvolvimento/Codificação
Criar uma função, CallProxD, FunCallProxD. por exemplo, para chamar a ProxDoc. Esta por sua vez irá tentar bloquear um número de documento. Caso consiga o bloqueio , irá gravar no novo campo, CTF_USADO, um indicador de que está usado. Pode ser o caracter 'S' e mantê-lo bloqueado até a gravação dos lançamentos contábeis (CT2). Caso não consiga, esta função exemplo, FunCallProx, deverá inciar um Job para gravar 5 números de documentos e, novamente, tentar bloquear um número de documento.
...