Imprimi Página | Fechar janela

Preencher campo

Impresso de: Helpfacil - Portal do conhecimento
Nome do Forum: ADVPL
Descrição do Forum: Dúvidas sobre a programação em ADVPL
URL:http://www.helpfacil.com.br/display_topic_threads.asp?ForumID=1&TopicID=42468
Data da Impressão: domingo, 16 de junho de 2019 at 22:10


Topico: Preencher campo

Postado por: IVAN26
Assunto: Preencher campo
Data Postagem: quinta-feira, 10 de janeiro de 2019 at 12:04

Bom dia, sou novo no ramo de ADVPL e estou com uma duvida. Preciso que quando inserir um pedido de vendas com o cliente 000769 pegue e preenche o campo de liberação com "S". Queria fazer via ADVPL e ate agora não consegui, segue meu codigo. Não queria fazer por gatilho

user function LIBPARCE()

Local ccliente := M->C5_CLIENTE
Local cloja     := M->C5_LOJACLI
Local cueco     := M->C5_UECO
Local nlbcred   := Posicione("SA1",1,xFilial("SA1")+ccliente+cloja,"A1_LC")

if M->C5_CLIENTE ="000769" .and. (‘S‘,M->C5_UECO)
   
   return .f.
endif

return .t.      
return




Respostas:

Postado Por: NATAN
Data Postagem: quinta-feira, 10 de janeiro de 2019 at 12:37

Boa tarde.

Você quer que quando antender essa condição if M->C5_CLIENTE ="000769" .and. ('S',M->C5_UECO) retorne falso.

Se for você pode fazer essa validação direto no campo colocando assim IIF( M->C5_CLIENTE =="000769" .and. (‘S‘,M->C5_UECO),.T. , .F.)

Agora se quer continuar com o codigo seu acima, tem um pequeno erro de logica, o return .t. voce esqueceu de colocar entre o else, que ficaria assim:


user function LIBPARCE()

Local ccliente := M->C5_CLIENTE
Local cloja     := M->C5_LOJACLI
Local cueco     := M->C5_UECO
Local nlbcred   := Posicione("SA1",1,xFilial("SA1")+ccliente+cloja,"A1_LC")

if M->C5_CLIENTE ="000769" .and. ('S',M->C5_UECO)
   
   return .f.
else

return .t.
endif

    
return


Estou a disposição, caso precise de algo mais



Postado Por: IVAN26
Data Postagem: quinta-feira, 10 de janeiro de 2019 at 13:56

Acho que não fui muito claro, o campo C5_UECO vem vazio, sem nada preenchido, Quando eu inserir o cliente 000769, ele ja mudo o campo c5_ueco = S e quando não for o cliente 000769 ele fique em branco.



Postado Por: NATAN
Data Postagem: quinta-feira, 10 de janeiro de 2019 at 14:37

Assim, entendi errado

Tenta assim então

coloca esse comando na validação de usuário do C5_CLIENTE ou C5_LOJA

IIF(M->C5_CLIENTE==‘000769‘.and.ALLTRIM(M->C5_UECO)==‘‘,M->C5_UECO:=‘S‘,)



Postado Por: JUNIORPLAC
Data Postagem: quinta-feira, 10 de janeiro de 2019 at 15:12

Você é analista, consultor, trabalha com Protheus, Sistemas de informação? Se SIM! Se inscreva neste canal, conteúdo bom e de GRAÇAAAAAAAAAAAAA!

Canal Protheus e SQL - Conteúdo GRATUITO



Postado Por: MARCOSSTAR
Data Postagem: quinta-feira, 10 de janeiro de 2019 at 17:46

IVAN26 está um pouco complicado de compreender o que você está querendo fazer de fato, se é uma validação de operação ou uma modificação do valor de um campo.

Fiz o fonte com base no que consegui compreender de suas palavras:

#include "totvs.ch"

//se você quer alterar no momento da inclusão o valor do campo C5_UECO com base no código do cliente use assim...

User Function LIBPARCE()

Local ccliente      := M->C5_CLIENTE
Local cloja     := M->C5_LOJACLI
Local cueco     := M->C5_UECO
Local cCodCli     := GetMv("ZZ_CODCLI", , "000769") //Crie um parametro para que você não fixe o dado no fonte!
Local aArea     := GetArea()
Local nlbcred   := Posicione("SA1", 1, xFilial("SA1") + ccliente + cloja, "A1_LC")

//Se o codigo do cliente estiver contido na variavel: cCodCli
If M->C5_CLIENTE $ cCodCli .and. Empty(M->C5_UECO)
     M->C5_UECO := "S"
EndIf


RestArea(aArea)

Return

//Também pode ser feito por gatilho SX7 colocando disparador o campo C5_LOJA para o contra domínio: C5_UECO
//aí você faz a seguinte regra:
IIF(M->C5_UECO $ GETMV("ZZ_CODCLI"),"S","")

//Se você quer fazer uma validação é melhor realizar a mesma no campo x3_vldusr com a seguinte setença:
IIF(M->C5_UECO $ GETMV("ZZ_CODCLI"),.F.,.T.)


PS: Evite ficar "chumbando" informação no meio do fonte ou até mesmo dos campos das tabelas dos dicionarios, isso não é uma boa prática! e pode ter certeza de que algum dia irá te causar problemas.


Espero ter ajudado.


Att,

Marcos Vieira
Ing. Consultor ERP




Imprimir Página | Fechar Janela