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: sexta-feira, 29 de março de 2024 at 01:50 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 |