× Linguagem de Programação ADVPL

Perguntas Validação de Campo - regra para que não seja permitida a digitação de qtd que seja fora do múltiplo

Mais
11 anos 4 meses atrás #9052 por Alessandro Villar
Olá pessoal, primeiramente feliz Ano Novo!! :)

eu preciso de uma ajuda, eu não manjo muito de programação, eu preciso criar uma rotina para validação de um campo no cadastro de produtos, foi criado um campo de quantidade múltipla no cadastro de produtos,eu preciso criar uma regra para que não seja permitida a digitação de quantidade que esteja fora do múltiplo definido no campo, se alguém puder me ajudar eu agradeço muito.


Obrigado !!

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 4 meses atrás #9055 por kanaamlrr
Acho que esse trecho abaixo resolve seu problema.
(Obs: não testei)


User Function vldQtd(nValDig, nMultip)
lRet := .T.

If (nValDig % nMultip) <> 0
lRet := .F.
MsgAlert("Não é múltiplo")
EndIf

Return lRet

Os valores que estão como parâmetro seria o valor digitado e o número que esse valor deve ser multiplo.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 4 meses atrás #9065 por Alessandro Villar
Então vamos ver se eu consigo explicar melhor, eu irei ter que utilizar 3 tabelas SB1, SUA, SUB, no módulo Call Center.
Eu tenho que criar uma rotina que eu consiga fazer esse calculo utilizando essas tabelas. Eu acho que essa rotina que você me passou está faltando algo não está? Me desculpe mais é que eu não manjo de programação rsrs..

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 4 meses atrás #9067 por kanaamlrr
Certo!
Seguinte, você vai precisar adicionar a função U_VLDQTD() no validação de usuário do campo UB_QUANT.

Depois disso você vai compilar a função abaixo no seu ambiente.

User Function vldQtd()
Local lRet := .T.

SB1->(dbSetOrder(1))
SB1->(dbSeek(xFilial("SB1")+aCols[n][aScan(aHeaders,{|x| x[1]=="UB_PRODUTO"})]))//TEM QUE VERIFICAR ESSE SEEK

If (M->UB_QUANT % SB1->B1_X_MULT) <> 0//ACERTAR COM O NOME DO SEU CAMPO MULTIPLO DA SB1
lRet := .F.
MsgAlert("Não é múltiplo")
EndIf

Return lRet

Se não funcionar posta em qual rotina você está tentando fazer isso, ou o nome do fonte da rotina para poder verificar melhor os nomes das variáveis.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 4 meses atrás #9072 por Alessandro Villar
Eu fiz da seguinte forma veja se está correto assim por favor:


dbSelectArea ("SB1")
dbSetOrder (1)
If dbSeek (xFilial ("SB1")+ _cProd)
_nMultip:= SB1->B1_QTMULT
EndIf

_cProd := aCols[n][_nPQtde]


eu acho que até esse trecho deve estar correto, agora qual é o calculo que devo fazer? Por que assim, pra entender melhor, criei um campo na SB1 chamado B1_QTMULT que é para quantidade múltipla, o valor que tiver nesse campo não pode ser diferente do que tiver lá, agora teria que fazer o cáculo correto?

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 4 meses atrás #9073 por Alessandro Villar
Cara eu fiz o trecho do calculo, mais está dando erro o que pode ser? erro de syntax

dbSelectArea ("SB1")
dbSetOrder (1)
If dbSeek (xFilial ("SB1")+ _cProd)
_nMultip:= SB1->B1_QTMULT
EndIf

_cProd := aCols[n][_nPQtde]

If (B1_QTD_MULT / UB_QUANT) <> INT (B1_QTD_MULT / UB_QUANT) // Se valor informado for diferente do digitado
Return (.F.)
MsgAlert("Não é múltiplo")
Else
Return (.T.)
EndIF

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.134 segundos
Joomla templates by a4joomla