Class SeqPcpc020

java.lang.Object
br.com.intersys.systextil.function.SeqPcpc020

public class SeqPcpc020 extends Object
Implementa a função f_seq_pcpc_020. Tudo indica que a lógica deste processo em Vision foi feita para contornar inconsistências. Ela faz o seguinte:
  1. Bloqueia o registro da tabela empr_001.
  2. Lê o número desse registro.
  3. Lê também o número de uma sequência do banco.
  4. Se existir ordem de confecção com o número da sequência, volta ao passo 2 (não precisava: bastava repetir o passo 3).
  5. Se não existir, então, se esse número ainda não for maior que o número do registro, volta ao passo 2 (também não precisava: bastava repetir o passo 3).
  6. Se for maior, então, atualiza o registro com o número encontrado.

Já dá pra ver alguns problemas:

  1. Só precisava ler o registo da tabela uma vez, no início.
  2. Se a sequência não é maior que o número do registro, não precisa verificar nada: tem que incrementar a sequência até que supere o número do registro.

No fim das contas, a regra funciona desta forma: incrementando o sequencial e o número do registro, o que vai valer é o maior deles, desde que não exista ordem de confecção com esse número; se existir, valerá o seguinte que não estiver em uso.

Aí eu pergunto:

  1. Como pode o número do registro da tabela ser maior que o sequencial?
  2. Como pode existir ordem de produção com um número maior que todos eles?
  3. Por que estão usando dois - ou três! - sistemas de numeração?!

É preciso abandonar o uso da coluna empr_001.ordem_confeccao. Essa coluna deveria ser eliminada, e é preciso assegurar que nenhum lugar do sistema a esteja usando. Isso já resolveria também outros problemas com bloqueio de registro.

A função em Vision executa este processo numa transação em uma conexão separada. Esta classe Java não controla transação: isto fica a cargo da aplicação que a usa. Basta que a aplicação forneça uma AppConnection conveniente e controle a transação em cima dela.

Author:
sergio
  • Field Details

    • versao_systextilweb_f

      public int versao_systextilweb_f
  • Constructor Details

    • SeqPcpc020

      public SeqPcpc020()
  • Method Details

    • executar

      public static int executar(br.com.intersys.systextil.connection.AppConnection conn)