PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Preencher campo
Versão:
12.1.7
Plataforma:
.
Complemento:
DB:
.
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário IVAN26 IVAN26 em 10/01/2019, 12:04 h
Local: PR  Registro: 30/10/2017  Postagens: 28
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


Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário NATAN NATAN em 10/01/2019, 12:37 h
Local: GO  Registro: 30/10/2012  Postagens: 3
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

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário IVAN26 IVAN26 em 10/01/2019, 13:56 h
Local: PR  Registro: 30/10/2017  Postagens: 28
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.

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário NATAN NATAN em 10/01/2019, 14:37 h
Local: GO  Registro: 30/10/2012  Postagens: 3
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 Enviar e-mail Abrir o Perfil do usuário JUNIORPLAC JUNIORPLAC em 10/01/2019, 15:12 h
Local: BA  Registro: 19/02/2015  Postagens: 31
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

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário MARCOSSTAR MARCOSSTAR em 10/01/2019, 17:46 h
Local: SP  Registro: 26/06/2015  Postagens: 16
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

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal