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:
- CodEmp Número (código da empresa)
- CodOri Alfa (código da origem)
- NumOrp Número (número da ordem de produção)
- CodEtg Número (código do estágio)
- SeqCmp Número (sequência do componente)
- CodCmp Alfa (código do componente)
- CodDer Alfa (código da derivação do componente)
- QtdPrv Número (quantidade prevista do componente)
- QtdUti Número (quantidade a utilizar)
- QtdMvp Número (quantidade já movimentada)
- SelBxa Alfa (componente selecionado para baixar na F900BAC)
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 |