PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Codigo sequencial para Titulos a Pagar
Versão:
12.1.8
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário GRAVATAL GRAVATAL em 10/05/2018, 18:16 h
Local: SP  Registro: 14/02/2012  Postagens: 2
Boa tarde pessoal, gostaria de uma ajuda de vocês, meu cenário é o seguinte, minha SE5010 é compartilhada, minha SE2010 é exclusiva, ao efetuar uma baixa em um dos títulos ele gera dois registros na SE5, sequencia 1 e 2, mas somente deveria haver um, isso acontece por que os títulos tem as mesmas informações: SE5->E5_FILIAL+SE5->E5_PREFIXO+SE5->E5_NUMERO+SE5->E5_PARCELA+SE5->E5_CLIFOR... Por incrível que pareça, os títulos tinham essas mesmas informações. E ao cancelarmos essa baixa, o sistema trás as duas baixas para serem canceladas, pois o índice usado não contempla o CAMPO SE5->E5_MSFIL ou o campo SE5->E5_FILORI, poderia resolver isso se gerasse um único numero sequencial na SE2010, mas o GetSxeNum() pega da Filial, podendo acontecer de ter dois números de títulos iguais em filiais diferentes. Tentei tratar da seguinte forma no inicializador do campo SE2->E2_NUM = u_nnNumSE2()(fonte esta mais abaixo), só que gera um problema em duas pessoas estarem criando um titulo ao mesmo tem, o numero da primeira ainda não foi gravado no banco, sendo assim não é contemplado com a inclusão do titulo da segunda pessoa, as duas terão titulos com mesmo numero. Essa é a via sacra que estou.

A Solução mais correta seria deixar tudo como exclusivo, mas não posso devido a algumas regras de negocio da empresa, como resolver?


user function nnNumSE2()
     Local cAliasSE2     := GetNextAlias()
     Local aLastQry     := {}
     Local cNumSE2     := ""

     If Select(cAliasSE2) > 0
          dbSelecArea(cAliasSE2)
          (cAliasSE2)->(dbCloseArea())
     EndIf

     BeginSql alias cAliasSE2
          SELECT      Max (SE2.E2_NUM) AS cXNumSE2
          FROM %table:SE2% SE2 (NOLOCK)
          WHERE
          SE2.%NotDel%
     EndSql

     aLastQry := GetLastQuery()
     cNumSE2 := Soma1( (cAliasSE2)->cXNumSE2 )

return(cNumSE2)


Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal