Identificador de Regra

CHA-900IRPCO01

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

Finalidade: Auxiliar no controle de pesagem dos componentes.

Características: A variável ChaNDecRel será disponibilizada na versão 5.6.4.4.

Alterado a forma de cálculo de quantidade de pesagens quando ser utilizada a variável ChaNDecRel.

Sem utilizar a variável ChaNDecRel, o cálculo de pesagens é feito dividindo a quantidade total pelo base de fórmula, arredondando o resultado para cima.
Ex.:
- Quantidade da OP: 69,992 KG
- Base fórmula: 34,99579 KG
- Resultado divisão: 2,000012
- Resultado final: 3 (2,000012 arredondado para cima)

Utilizando a variável ChaNDecRel, o cálculo de pesagens é feito dividindo a quantidade total pelo base de fórmula e o resto dessa divisão será multiplicada pela base de fórmula, arredondando para baixo pela quantidade de casas decimais definida na variável ChaNDecRel.
Se o resultado for 0 é considerado erro de arredondamento e a divisão será arredondada para baixo, porém se o resultado for maior que 0 será feito o arredondamento para cima.

Ex.:
- Quantidade da OP: 69,992 KG
- Base fórmula: 34,99579 KG
- Resultado divisão: 2,000012
- Resto da divisão (parte não inteira): 0,000012
- Resto X fórmula: 0,00041994948
- Resto X fórmula arredondado para baixo (considerando ChaNDecRel de 3 casa decimais): 0,000
- Como a cálculo acima deu 0, o valor da divisão original (2,000012) será arredondado para baixo, dando 2.

Tela: F900PCO

Transação: Não se aplica.

Regra:

Exemplo:
Definir Alfa xSql; @ Variável Sql para busca qtde da formula @
Definir Alfa xCmdSql; @ Variável para definição do comando select @
Definir Alfa CHAACodOri; @ Código da Origem da OP @
Definir Alfa CHAACodCmp; @ Código do Componente @
Definir Alfa CHAACodDer; @ Código da Derivação do Componente @
Definir Alfa CHAARefAgr; @ Retorno do código do agrupamento - indicativo do que é embalado junto @
Definir Alfa CHAACodEmb; @ Código da Embalagem @
Definir Alfa CHAADerEmb; @ Derivação da Embalagem @
Definir Alfa CHAATipEve; @ Tipo do Evento @

CHANCodEmp = CodEmp;
ChaNPesFor = 0;
ChaNNumPes = 0;
CHANTamFon = 0;

Se (CHAATipEve = "O") @ Definir peso de uma fórmula @
Inicio
xCmdSql = "SELECT E700MOD.QTDBAS FROM E700MOD,E900QDO
WHERE E900QDO.CODEMP = :CODEMP
AND E900QDO.CODORI = :CODORI
AND E900QDO.NUMORP = :NUMORP
AND E900QDO.CODEMP = E700MOD.CODEMP
AND E900QDO.CODMOD = E700MOD.CODMOD";
SQL_Criar(xSql);
SQL_DefinirComando(xSql,xCmdSql);
SQL_DefinirInteiro(xSql, "CODEMP", CHANCodEmp);
SQL_DefinirAlfa(xSql, "CODORI", CHAACodOri);
SQL_DefinirInteiro(xSql, "NUMORP", CHANNumOrp);
SQL_AbrirCursor(xSql);
Se (SQL_EOF(xSql) = 0)
SQL_RetornarFlutuante(xSql, "QTDBAS", ChaNPesFor);
SQL_FecharCursor(xSql);
SQL_Destruir(xSql);
Fim
Senao
Se (CHAATipEve = "M") @ Definir quais componentes são embalados de forma conjunta e qual o número de pesagens @
Inicio
xCmdSql = "SELECT E700CMM.USU_CODEMB,E700CMM.USU_DEREMB,E700CMM.USU_NUMPES
FROM E700CMM,E700CTM,E900QDO
WHERE E900QDO.CODEMP = :CODEMP
AND E900QDO.CODORI = :CODORI
AND E900QDO.NUMORP = :NUMORP
AND E900QDO.CODEMP = E700CMM.CODEMP
AND E900QDO.CODMOD = E700CMM.CODMOD
AND E700CMM.CODETG = :CODETG
AND E700CMM.CODCMP = :CODCMP
AND E700CMM.CODEMP = E700CTM.CODEMP
AND E700CMM.CODMOD = E700CTM.CODMOD
AND E700CMM.CODETG = E700CTM.CODETG
AND E700CMM.SEQMOD = E700CTM.SEQMOD
AND E700CMM.CODCMP = E700CTM.CODCMP
AND E700CTM.DERCMP = :DERCMP";
SQL_Criar(xSql);
SQL_DefinirComando(xSql,xCmdSql);
SQL_DefinirInteiro(xSql, "CODEMP", CHANCodEmp);
SQL_DefinirAlfa(xSql, "CODORI", CHAACodOri);
SQL_DefinirInteiro(xSql, "NUMORP", CHANNumOrp);
SQL_DefinirInteiro(xSql, "CODETG", CHANCodEtg);
SQL_DefinirAlfa(xSql, "CODCMP", CHAACodCmp);
SQL_DefinirAlfa(xSql, "DERCMP", CHAACodDer);
SQL_AbrirCursor(xSql);
Se (SQL_EOF(xSql) = 0)
Inicio
SQL_RetornarAlfa(xSql, "USU_CODEMB", CHAACodEmb);
SQL_RetornarAlfa(xSql, "USU_DEREMB", CHAADerEmb);
SQL_RetornarInteiro(xSql, "USU_NUMPES", CHANNumPes);
Concatena(CHAACodEmb, CHAADerEmb, "", CHAARefAgr);
Fim;
SQL_FecharCursor(xSql);
SQL_Destruir(xSql);
Fim
Senao
Se (CHAATipEve = "E")
Inicio
ChaNTamFon = 9;
Fim;

Variáveis Disponibilizadas:

Nome Tipo Observações Retorna Valor
ChaATipEve ALFA Evento da tela ('E' = Entrada tela, 'O' = Ao informar OP/estágio, 'M' = Ao mostrar os dados na grid) N
ChaNTamFon ALFA Tamanho da fonte da tela N
ChaACodOri ALFA Código da origem da OP (quando ChaATipEve = 'O' ou 'M') N
ChaNNumOrp NÚMERO Número da OP (quando ChaATipEve = 'O' ou 'M') N
ChaNCodEtg NÚMERO Código do Estágio (quando ChaATipEve = 'O' ou 'M') N
ChaNSeqCmp NÚMERO Seqüência do componente na OP - E900CMO.SeqCmp (quando ChaATipEve = 'M') N
ChaACodCmp ALFA Código do componente da OP (quando ChaATipEve = 'M') N
ChaACodDer ALFA Código da derivação do componente (quando ChaATipEve = 'M') N
ChaACodAgp ALFA Código do agrupamento N
ChaNPesFor NÚMERO Peso total da fórmula (quando ChaATipEve = 'O') S
ChaARefAgr ALFA Referência definição pacotes - quem será embalado junto (quando ChaATipEve = 'M') S
ChaNNumPes NÚMERO Número de vezes que o componente será adicionado na máquina (quando ChaATipEve = 'M') S
ChaNDecRel NÚMERO Decimais da relação Quantidade x Peso da Fórmula, para cálculo da quantidade de pesagens (quando ChaATipEve = 'O') S

Atenção

Caso o parâmetro global LisVarReg esteja habilitado, a variável ListaVariaveis estará disponível em todos os identificadores de regras do sistema. O conteúdo desta variável lista os campos disponibilizados no identificador de regras em questão.

Não é aconselhada a ativação desse parâmetro global para o uso cotidiano. Esse recurso de listagem dos campos de identificadores auxilia a construção de regras e o Suporte para, por exemplo, depuração ou quando não houver acesso à documentação dos identificadores de regras.

Este artigo ajudou você?