|
Bem Vindo, Visitante
|
Todos os Fórums
ADVPL
|
Imprimir
Enviar Para um Amigo Precisa estar Logado
|
|
|
Assunto: |
Preencher campo |
|
Versão: |
12.1.7 |
|
Plataforma: |
. |
Complemento: |
|
|
DB: |
. |
Complemento: |
|
|
|
|
|
Mensagem do
IVAN26
em 10/01/2019, 12:04 h
Local: PR Registro: 30/10/2017 Postagens: 33 |
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
|
|
|
Mensagem do
NATAN
em 10/01/2019, 12:37 h
Local: GO Registro: 30/10/2012 Postagens: 5 |
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 |
|
|
Mensagem do
IVAN26
em 10/01/2019, 13:56 h
Local: PR Registro: 30/10/2017 Postagens: 33 |
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. |
|
|
Mensagem do
NATAN
em 10/01/2019, 14:37 h
Local: GO Registro: 30/10/2012 Postagens: 5 |
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‘,) |
|
|
Mensagem do
JUNIORPLAC
em 10/01/2019, 15:12 h
Local: BA Registro: 19/02/2015 Postagens: 32 |
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 |
|
|
Mensagem do
MARCOSSTAR
em 10/01/2019, 17:46 h
Local: SP Registro: 26/06/2015 Postagens: 27 |
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 |
|
Para postar no Fórum você precisa efetuar o seu login ou se registrar
|
|