× Linguagem de Programação ADVPL

Perguntas gatilho campo C6_ROYALT

Mais
11 anos 2 semanas atrás #18219 por fejuchem
Boa Tarde

Fiz um gatilho no campo c6_royalt que chama a funcao = u_valid_fam_roy()

Que após incluir um produto no cadastro de pedidos, e estiver posicionado no campo c6_royalt, ele verifique o campo b1_fam.

Se b1_fam = 02 o range vai ser de 0 a 10... senão o campo c6_royalt deve ficar zerado

user function valid_fam_roy()

Local lRet := .F.

if POSICIONE("SB1",1,xFilial("SB1") + M->C6_PRODUTO,"B1_FAM") == "02"
If (M->C6_ROYALT >= 0 .and. M->C6_ROYALT <= 10)
lRet := .T.
EndIf
else
M->C6_ROYALT := 0
lRet := .T.
endif

return lRet

mas esta retornando erro de variavel nao existe c6_produto

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 2 semanas atrás #18238 por THALESCOTR
Respondido por THALESCOTR no tópico gatilho campo C6_ROYALT
Boa tarde Felipe,

primeiramente se é gatilho você não pode retornar .T. ou .F., você tem que retornar o valor que o conterá.
Utilize o acols para buscar o valor do campo na C6.

Tente assim:

user function valid_fam_roy()

Local _nPosCod := aScan(aHeader,{|x| Alltrim(x[2]) == "C6_PRODUTO" })
Local lRet := 0 //se não estiver entre 0 e 10 retorna 0

if POSICIONE("SB1",1,xFilial("SB1") + Acols[n][_nPosCod],"B1_FAM") == "02"
If (M->C6_ROYALT >= 0 .and. M->C6_ROYALT <= 10) //se estiver entre 0 e 10 retorna o valor
lRet := M->C6_ROYALT
EndIf
EndIf

return lRet



Att
Thales

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.123 segundos
Joomla templates by a4joomla