- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- X3_VLDUSER / C5_CONDPAG X C5_DESC3
×
Linguagem de Programação ADVPL
Perguntas X3_VLDUSER / C5_CONDPAG X C5_DESC3
- eduardo.araujo
- Autor do Tópico
- Desconectado
- Membro Júnior
Menos
Mais
- Postagens: 23
- Obrigados Recebidos: 0
11 anos 4 meses atrás #15446
por eduardo.araujo
X3_VLDUSER / C5_CONDPAG X C5_DESC3 foi criado por eduardo.araujo
Boa tarde.
Estou precisando de uma ajuda. Não sou desenvolvedor mas preciso criar uma função a ser aplicada no X3_VLDUSER do campo C5_DESC3.
Temos o campo C5_DESC3 no pedido de vendas. Este campo é de Desconto. Porém este desconto só poderá ser preenchido caso o campo C5_CONDPAG esteja com os códigos 001 ou 002. Do contrário ele deverá trazer uma mensagem informando o bloqueio. A mensagem pode ser bem pequena pois o X3_VLDUSER tem limitações.
Estou tentando aplicar a função abaixo mas tá dando erro após aparecer o alerta.
IIf (M->C5_CONDPAG="001" .OR. M->C5_CONDPAG="002",Alert("DESCONTO PERMITIDO P/ COND PAGTO 001/002"),.F.)
Este é o erro que está acontecendo logo após confirmar o Alerta:
THREAD ERROR (Eduardo, LIVIOIT) 10/07/2013 12:49:17
type mismatch on .AND. on {|x,lResValid,o| o := Self:aEntryCtrls[27],(lResValid := If(o:lModified .or. (o:Cargo <> NIL .and. o:Cargo <> M->C5_DESC3),(IIf (M->C5_CONDPAG="001" .OR. M->C5_CONDPAG="002",Alert("DESCONTO PERMITIDO P/ COND PAGTO 001/002"),.F.)) .AND. ((Positivo() .or. vazio()) .and. a410Recalc()),.T.)),(If(Type('lRefresh') == 'L' .and. lRefresh,Self:EnchRefreshAll(),)),lResValid} line : 1497
Alguém pode me ajudar?
Desde já agradeço.
Abs.
Eduardo Araujo - Consultor / Analista Protheus
(21) 9524-9365
Estou precisando de uma ajuda. Não sou desenvolvedor mas preciso criar uma função a ser aplicada no X3_VLDUSER do campo C5_DESC3.
Temos o campo C5_DESC3 no pedido de vendas. Este campo é de Desconto. Porém este desconto só poderá ser preenchido caso o campo C5_CONDPAG esteja com os códigos 001 ou 002. Do contrário ele deverá trazer uma mensagem informando o bloqueio. A mensagem pode ser bem pequena pois o X3_VLDUSER tem limitações.
Estou tentando aplicar a função abaixo mas tá dando erro após aparecer o alerta.
IIf (M->C5_CONDPAG="001" .OR. M->C5_CONDPAG="002",Alert("DESCONTO PERMITIDO P/ COND PAGTO 001/002"),.F.)
Este é o erro que está acontecendo logo após confirmar o Alerta:
THREAD ERROR (Eduardo, LIVIOIT) 10/07/2013 12:49:17
type mismatch on .AND. on {|x,lResValid,o| o := Self:aEntryCtrls[27],(lResValid := If(o:lModified .or. (o:Cargo <> NIL .and. o:Cargo <> M->C5_DESC3),(IIf (M->C5_CONDPAG="001" .OR. M->C5_CONDPAG="002",Alert("DESCONTO PERMITIDO P/ COND PAGTO 001/002"),.F.)) .AND. ((Positivo() .or. vazio()) .and. a410Recalc()),.T.)),(If(Type('lRefresh') == 'L' .and. lRefresh,Self:EnchRefreshAll(),)),lResValid} line : 1497
Alguém pode me ajudar?
Desde já agradeço.
Abs.
Eduardo Araujo - Consultor / Analista Protheus
(21) 9524-9365
Por favor Acessar ou Registrar para participar da conversa.
- kanaamlrr
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 1576
- Obrigados Recebidos: 4
11 anos 4 meses atrás #15447
por kanaamlrr
Respondido por kanaamlrr no tópico X3_VLDUSER / C5_CONDPAG X C5_DESC3
Para o seu caso, acho que o ideal seria criar uma user function
Pois o campo X3_VLDUSER espera um retorno lógico (.T./.F.) e da forma que você fez, ele estava retornando a mensagem e não o valor lógico.
User Function SUAFUNCAO()
If M->C5_CONPAG $ "001/002"
Return .T.
EndIf
MsgInfo("DESCONTO PERMITIDO P/ COND PAGTO 001/002")
Return .F.
Pois o campo X3_VLDUSER espera um retorno lógico (.T./.F.) e da forma que você fez, ele estava retornando a mensagem e não o valor lógico.
Por favor Acessar ou Registrar para participar da conversa.
- emnovaes
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 1
- Obrigados Recebidos: 0
11 anos 4 meses atrás #15498
por emnovaes
Respondido por emnovaes no tópico X3_VLDUSER / C5_CONDPAG X C5_DESC3
Boa tarde,
Realmente deve-se retornar um valor lógico (.T. / .F.) em um campo X3_VLDUSER.
Mas se não desejar criar uma função, utilizando comandos em linha, pode-se usar da seguinte forma:
IIf((M->C5_CONDPAG="001" .OR. M->C5_CONDPAG="002"),(Alert("DESCONTO PERMITIDO P/ COND PAGTO 001/002"),.T.),.F.)
Realmente deve-se retornar um valor lógico (.T. / .F.) em um campo X3_VLDUSER.
Mas se não desejar criar uma função, utilizando comandos em linha, pode-se usar da seguinte forma:
IIf((M->C5_CONDPAG="001" .OR. M->C5_CONDPAG="002"),(Alert("DESCONTO PERMITIDO P/ COND PAGTO 001/002"),.T.),.F.)
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- X3_VLDUSER / C5_CONDPAG X C5_DESC3
Tempo para a criação da página:0.090 segundos