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:
Ponto de Entrada F460CANC
Versão:
12.1.17
Plataforma:
Microsoft
Complemento:
DB:
SQL Server
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário LUIZWALKER LUIZWALKER em 14/05/2019, 09:25 h
Local: PR  Registro: 26/04/2018  Postagens: 3
Bom dia meus amigos, sou aspirante em advPL e estou com algumas dificuldades, se trata do ponto de entrada F460CANC, o qual em primeiro momento tenho outro ponto de entrada que gera um titulo a pagar da taxa bancária na liquidação.

A situação é que ao cancelar a liquidação preciso que a função F460CANC cancele este titulo a pagar.

Porem, o meu PE cancela o titulo, mas quando vai cancelar a liquidação estou recebendo uma THREAD ERROR.

"THREAD ERROR ([7032], LuizWalker, LUIZWALKER)   14/05/2019 09:22:04
type mismatch on compare on FA460CAN(FINA460.PRX) 19/02/2019 18:22:30 line : 1296

[TOTVS build: 7.00.131227A-20180727 NG]
Called from FA460CAN(FINA460.PRX) 19/02/2019 18:22:30 line : 1296"


Segue meu código:

#include ‘protheus.ch‘
#include ‘parmtype.ch‘

user function F460CANC()


Local cNum      := SE1->E1_NUM
//Local cNumLiq := SE1->E1_NUMLIQ
Local cTipo     := SE1->E1_TIPO
Local cCli     := SE1->E1_CLIENTE
Local cLoja     := SE1->E1_LOJA


     DbSelectArea("SE2")
     DbSetOrder(18)
     SE2->(dbgotop())
     dbseek(xFilial("SE2") + cNum + cTipo + cCli + cLoja)
     
          if found()
          
               if MsgYesNo("A tarifa " + cNum + " foi encontrada! Deseja cancelar também?", "ATENÇÃO!")          
               
                    recLock("SE2", .F.)
                    SE2->(dbDelete())
                    SE2->(MsUnLock())
               
                    alert("Tarifa cancelada! ")
                    
               else
                    
                    alert("A tarifa não será cancelada!")
               
               endIf
               
          else
          
          alert("Não há tarifas bancárias para cancelamento ou não foram encontradas!!")
          
          endIf
     
     SE2->(dbCloseArea())
     

return .T.


Se alguem puder me ajudar, fico lisonjeado! :D

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 14/05/2019, 10:58 h
Local: SP  Registro: 20/08/2010  Postagens: 468
sugestão de alteração (não sei se vai resolver o problema):

#include ‘protheus.ch‘
#include ‘parmtype.ch‘

user function F460CANC()
Local AreaSE2     := SE2->(GetArea())
Local cNum     := SE1->E1_NUM
//Local cNumLiq     := SE1->E1_NUMLIQ
Local cTipo     := SE1->E1_TIPO
Local cCli     := SE1->E1_CLIENTE
Local cLoja     := SE1->E1_LOJA

     SE2->(dbSetOrder(18)) // o indice existe?
     if SE2->(dbseek(xFilial() + cNum + cTipo + cCli + cLoja))

          if MsgYesNo("A tarifa " + cNum + " foi encontrada! Deseja cancelar também?", "ATENÇÃO!")
               RecLock("SE2", .F.)
               SE2->(dbDelete())
               SE2->(MsUnLock())
               alert("Tarifa cancelada! ")
          else
               alert("A tarifa não será cancelada!")
          endif
     else
          alert("Não há tarifas bancárias para cancelamento!!")
     endif

     //SE2->(dbCloseArea()) // JAMAIS FECHE UMA ÁREA DE TRABALHO PADRÃO.
     SE2->(RestArea(AreaSE2))

Return .T.

Por favor indique qual das linhas da função é a linha 1296 do fonte. Ficaria mais fácil tentar ajudar.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário LUIZWALKER LUIZWALKER em 14/05/2019, 14:50 h
Local: PR  Registro: 26/04/2018  Postagens: 3
Obrigado pela ajuda e ainda mais pelas dicas, porém o erro ainda persiste, no caso eu não tenho o fonte padrão FINA460.PRX, pelo que compreendi a linha 1296 está esperando algum retorno correto?

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 14/05/2019, 16:58 h
Local: SP  Registro: 20/08/2010  Postagens: 468
exatamente. o retorno precisa ser um valor numérico.
tente assim:

user function F460CANC()
Local AreaSE2     := SE2->(GetArea())
Local cNum     := SE1->E1_NUM
//Local cNumLiq     := SE1->E1_NUMLIQ
Local cTipo     := SE1->E1_TIPO
Local cCli     := SE1->E1_CLIENTE
Local cLoja     := SE1->E1_LOJA
Local nOpct     := PARAMIXB[1] // parâmetro passado para o ponto de entrada pela rotina FINA460

     SE2->(dbSetOrder(18)) // o indice existe?
     if SE2->(dbseek(xFilial() + cNum + cTipo + cCli + cLoja))

          if MsgYesNo("A tarifa " + cNum + " foi encontrada! Deseja cancelar também?", "ATENÇÃO!")
               RecLock("SE2", .F.)
               SE2->(dbDelete())
               SE2->(MsUnLock())
               alert("Tarifa cancelada! ")
          else
               alert("A tarifa não será cancelada!")
          endif
     else
          alert("Não há tarifas bancárias para cancelamento!!")
     endif

     //SE2->(dbCloseArea()) // JAMAIS FECHE UMA ÁREA DE TRABALHO PADRÃO.
     SE2->(RestArea(AreaSE2))

Return nOpct


Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário LUIZWALKER LUIZWALKER em 14/05/2019, 21:56 h
Local: PR  Registro: 26/04/2018  Postagens: 3
Show de bola meu amigo! Era o que estava faltando mesmo.

Adicionando a linha:

Local nOpct     := PARAMIXB[1] // parâmetro passado para o ponto de entrada pela rotina FINA460

e retornando a variável, funcionou perfeitamente!


Muito obrigado pela ajuda!

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