|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Ponto de Entrada F460CANC |
|
Versão: |
12.1.17 |
|
Plataforma: |
Microsoft |
Complemento: |
|
|
DB: |
SQL Server |
Complemento: |
|
|
|
|
|
Mensagem do
LUIZWALKER
em 14/05/2019, 09:25 h
Local: PR Registro: 26/04/2018 Postagens: 14 |
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 |
|
|
Mensagem do
EMERSON.EN
em 14/05/2019, 10:58 h
Local: SP Registro: 20/08/2010 Postagens: 669 |
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. |
|
|
Mensagem do
LUIZWALKER
em 14/05/2019, 14:50 h
Local: PR Registro: 26/04/2018 Postagens: 14 |
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? |
|
|
Mensagem do
EMERSON.EN
em 14/05/2019, 16:58 h
Local: SP Registro: 20/08/2010 Postagens: 669 |
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
|
|
|
Mensagem do
LUIZWALKER
em 14/05/2019, 21:56 h
Local: PR Registro: 26/04/2018 Postagens: 14 |
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
|
|