× Linguagem de Programação ADVPL

Perguntas Atribuir conteudo do campo a uma variavel no pedido de venda

Mais
9 anos 6 meses atrás #26024 por Lemos
Pessoal bom dia,

Estou necessitando que no momento da inclusao/alteração do pedido de venda, o sistema realize a validação do conteudo do campo C6_ITEMPC(Item do pedido de compra) quando o campo C6_NUMPCOM(Numero do pedido de compra) estiver preenchido. Ou seja, o conteudo do campo C6_ITEMPC não pode estar vazio, quando o campo C6_NUMPCOM estiver preenchido. Utilizei o ponto de entrada M410LIOK() que faz a validação antes de passar para proxima linha. O que não estou conseguindo é atribuir o conteudo do campo C6_NUMPCOM para a variavel.

Segue abaixo o fonte:

User Function M410LIOK()
Local cNumPC := SC6->C6_NUMPCOM
Local cItPC := SC6->C6_ITEMPC
Local lRetorno:=.F.


If cNumPC =' '
lRetorno:= .T.

Elseif cItPC =' '
Alert("Preencher o item do pedido de compra.")
lRetorno:= .F.
Else
lRetorno:= .T.

EndIf

Return(lRetorno)

No aguardo,

Lemos

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 6 meses atrás - 9 anos 6 meses atrás #26029 por cchenrique2009
Bom dia,

Como você já está posicionado no C6, poderia usar diretamente !Empty(Nome_do_Campo) para verificar se está preenchido, sem necessitar atribuir valores a variáveis. Atribuir valor a variável neste seu caso seria dar uma volta a mais para o mesmo resultado.

Se não estou enganado, para alteração seria !Empty(SC6->C6_NUMPCOM) e para Inclusão !Empty(M->C6_NUMPCOM)

Abraços
Ultima edição: 9 anos 6 meses atrás por cchenrique2009.

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 6 meses atrás #26032 por kanaamlrr
Bom dia Lemos,
Sempre que você está validando alguma informação que está na tela, você deve utilizar as variáveis de memória e não a tabela.
Dessa forma ficaria M->C6_NUMPCOM

Outro detalhe é que se você estiver utilizando um grid, e sua validação é na troca de linha, você tem que pegar a informação do array aCols utilizando o array aHeader como base para saber em qual coluna está o seu campo que irá pegar a informação.
Por exemplo:

nPos := aScan(aHeader,{|x| x[2]=="C6_NUMPCOM"})
//
cNumPC := aCols[n][nPos]

Por favor Acessar ou Registrar para participar da conversa.

Mais
9 anos 6 meses atrás #26093 por Lemos
Pessoal bom dia,

Realizei as alterações necessárias e deu certo.

Obrigado.

Ficou assim:


User Function M410LIOK()

Local nPos:= aScan(aHeader,{|x| AllTrim(x[2]) == "C6_NUMPCOM"})
Local cNumPC:=acols[n][nPos]

Local nPos1:= aScan(aHeader,{|x| AllTrim(x[2]) == "C6_ITEMPC"})
Local cItemPC:=acols[n][nPos1]

Local lRetorno

If cNumPC =' ' .And. cItemPC=' '
lRetorno:= .T.

Elseif cNumPC <>' ' .And. cItemPC<>' '
lRetorno:= .T.
Else
Alert("Favor preencher o pedido/item do pedido de compra.")
lRetorno:= .F.

EndIf

Return(lRetorno)

Por favor Acessar ou Registrar para participar da conversa.

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