Histórico da Página
...
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 ) números de documento contábil e novamente tentar pegar um número de documento disponível e bloquear e marcar como usado.
04. Pontos de atençãodas funções escolhidas e nas formas de bloqueio de registros
...
a. Ca100Incl e SimpleLock
...
Outro ponto, é onde a função Gravalanc é chamada. Essa função é chamada em alguns pontos em que um procedimento e/ou regra de execução deverá ser definido, estamos falando das rotinas de rateio contábil, consolidação, Apuração de Resultados. Por exemplo, se faz sentido processar ao mesmo tempo os mesmos rateios em períodos diferentes mas subsequentes onde os lançamentos do primeiro influenciam na do segundo.
a.1 Como fazer
Em relação às dúvidas e questionamentos sobre as funções Ca100Incl e SimpleLock abaixo seguem os esclarecimentos.
O Bloqueio no conteúdo campo CTK_RECORI deve ser feito quando o vetor aFlagCTB estiver vazio. E quando Quando o aFlagCTB estiver preenchido efetuar o bloqueio pelo conteúdo deste vetor.
Em relação a SimpleLock não há problema em chamar a função duas vezes e não utiliza a função LockByname de forma oculta.
Único cuidado a ser tomado é no momento de tirar o bloqueio de um registro com a função MsRUnlock. Caso esteja dentro de transação não há necessidade de executar essa função ( segundo a TEC não existe problema ).
...
Em relação a definição e/ou regra de execução de alguns processos contábeis o Product Owner será o responsável.
...
Nessa situação em que o número do documento será gerado por um Job, poderá e provavelmente ocorrerá de o número do documento não ser sequencial. Quais são ou existem restrições em relação a geração de números de documentos não sequenciais?
b.1 Como fazer
As dúvidas relacionadas às funções StartJob e RpcSetEnv seguem abaixo
Não há necessidade de chamar a função RpcSetEnv. Na função StarJob, no segundo parâmetro, informar GetEnvServer(), assim o job será executado no mesmo ambiente (environment) da conexão (thread) atual. Informar no terceiro parâmetro, true, assim a conexão pai espera a finalização do job. Chamar como Como abaixo:
StarJob("cNomeJob", GertEnvServ(), .T., "Parâmetros a serem passados para o JOB" ).
Existe a possibilidade finalizar a conexão de uma sessão com a função KillUser. A Considerar que conexão principal pode irá esperar o término da execução do job, caso Job . Caso este não termine tem a opção de , finalizar o job com a função KillUser.
...