Identificador de Regra

CHA-909VBMCP01

Módulo: CHA - Chão de Fábrica.

Finalidade: validar a baixa manual dos componentes que constam na tela F900BAC. É executado ao sair da tela, sendo válido apenas ao baixar os componentes de uma OP. Quando ele está ativo, é necessário baixar pelo menos um componente.

Importante

O identificador será executado ao sair da tela F900BAC quando ela for chamada a partir da tela de Apontamento de O.P./O.S (F909MIF) e o identificador de regras CHA-900VBQTC01 estiver ativo com as variáveis UsaIde = S e BxaCmp = N. Ou seja, a baixa deve ocorrer dentro da transação de banco de dados onde é feito o apontamento da OP.

Tela: F909MIF e F909MOA.

Características: é obrigatório possuir uma regra associada onde é passada uma variável que contém o número do ponteiro de memória, dessa forma permitindo ao usuário acessar a lista dos componentes da OP, que possui os seguintes campos:

A lista contém os componentes que constam na tela F900BAC e os componentes selecionados para processar, possuindo o indicativo S na variável SelBxa. Caso contrário, terá N. Com base nela é possível efetuar validações e apresentar mensagens de erro. Para iteração, leitura e manipulação dessa lista, existem várias funções de programador que começam com ListaRegra. Por exemplo: ListaRegraPrimeiro (VenNLista, VenA_S_N) e ListaRegraProximo (VenNLista, VenA_S_N).

A regra deve retornar a variável ChaARetorno igual a S ao validar com sucesso e igual a N para abortar a baixa dos componentes e o apontamento de produção.

Ao sair da tela F900BAC sem clicar no botão Processar, a lista dos componentes ficará vazia, ficando a critério do usuário tratar essa situação dentro da regra.

Para abortar o processo de apontamento da OP, a regra deve retornar a variável ChaARetorno igual a N. Assim, o sistema apresentará a mensagem Necessário baixar componentes quando o identificador de regra CHA-909VBMCP01 está ativo.

Regra:

Definir Alfa ChaACodOri;
Definir Numero ChaNNumOrp;
Definir Numero ChaNCodEtg;

ChaA_S_N = "N";
xTemCmpBxa = "N"; @Indicador se tem componente selecionado para baixar@
ChaARetorno = "N"; @Inicializar retorno, pois se a lista estiver vazia, deve retornar N para o sistema criticar@
ListaRegraPrimeiro(ChaNLista, ChaA_S_N); @Posiciona no primeiro registro da lista@
se (ChaA_S_N = "N") @indica que não processou itens na tela F900BAC@
Cancel; @sai fora de regra@

@Verifica se OP tem componente com baixa Manual@
Cur_E900Cmo.SQL "SELECT E900CMO.CODEMP, E900CMO.CODORI, E900CMO.NUMORP, E900CMO.CODETG, E900CMO.CODCMP, \
E900CMO.CODDER, E900CMO.QTDPRV, E900CMO.QTDUTI \
FROM E900CMO \
WHERE E900CMO.CODEMP=:ChaNCodEmp \
AND E900CMO.CODORI=:ChaACodOri \
AND E900CMO.NUMORP=:ChaNNumOrp \
AND E900CMO.CODETG=:ChaNCodEtg \
AND E900CMO.FRMBXA <> 'A' ";

Cur_E900Cmo.AbrirCursor();
Enquanto (Cur_E900Cmo.Achou)
inicio
xTemCmpBxa = "S";
Pare;
fim
Cur_E900Cmo.FecharCursor();
se (xTemCmpBxa = "N")
inicio
ChaARetorno = "S"; @Se OP não tem componentes com baixa manual, então não irá criticar exigindo baixar componentes@
Cancel; @sai fora de regra@
fim

xTemCmpBxa = "N"; @Inicializa@
ChaA_S_N = "N";
enquanto (ChaA_S_N <> "S") @Enquanto não estiver no final da lista entra no laço.@
inicio
ListaRegraObterValorAlfa(ChaNLista, "SelBxa", xSelBxa, ChaA_S_N); @Obtém o valor da coluna da linha posicionada.@
se (ChaA_S_N = "N")
Mensagem(Erro,"Erro ao obter o campo SelBxa na regra do idenficador CHA-909VBMCP01");
ListaRegraObterValorNumero(ChaNLista, "QtdUti", xQtdUti, ChaA_S_N);
se (ChaA_S_N = "N")
Mensagem(Erro,"Erro ao obter o campo QtdUti na regra do idenficador CHA-909VBMCP01");
se ((xSelBxa = "S") e (xQtdUti = 0))
Mensagem(Erro,"Necessário informar a quantidade a utilizar nos componentes selecionados para baixar");
se (xSelBxa = "S") @indica que o componente foi selecionado para baixa@
xTemCmpBxa = "S";
ListaRegraProximo(ChaNLista, ChaA_S_N); @Posiciona no próximo registro@
ListaRegraFim(ChaNLista, ChaA_S_N); @Atualiza variável final de lista@
fim
se (xTemCmpBxa = "S")
ChaARetorno = "S"; @Após validar todos os componentes e existir pelo menos um componenente selecionado para baixar, retorna que processou com sucesso@

Variáveis Disponibilizadas:

Nome Tipo Observações Retorna Valor
ChaNLista NÚMERO Esta variável é um ponteiro de memória onde se encontra a lista dos componentes da OP, sendo necessária para as funções de programador (ListaRegra) usadas para acessar o conteúdo da lista dos componentes da OP. N
ChaARetorno ALFA Deve retonar igual a "S" quando validou com sucesso e "N" quando deseja abortar a baixa dos componentes e o apontamento de produção. S
ChaNCodEmp NÚMERO Código da empresa N
ChaACodOri ALFA Código da origem da ordem de produção N
ChaNNumOrp NÚMERO Número da ordem de produção N
ChaNCodEtg NÚMERO Código do estágio N

Este artigo ajudou você?