Identificador de Regra

CPR-410CRICO01

Módulo: CPR - Compras.

Finalidade: Permite que seja criado um critério de cotação personalizado para indicar a cotação mais vantajosa na tela F410NQC.

Tela: F410NQC.

Transação: Não se aplica.

Variáveis disponibilizadas:

Nome Tipo Observações Retorna Valor
CprNCodEmp Empresa Da Cotação   N
CprNNumCot Número da Cotação   N
CprNCodFor Código do Fornecedor indicado como o mais vantajoso É obrigatório o retorno de um código de fornecedor quando utilizado essa regra S

Regra:

Exemplo de regra:

Definir Numero CprNCodEmp;
Definir Numero CprNNumCot;
Definir Numero CprNCodFor;
Definir Cursor c_Cotacao;

@Define as pontuações por dado analisado@
Definir Numero PontuacaoValorCotado;
Definir Numero PontuacaoValorPresente;
Definir Numero PontuacaoPrazoEntrega;
Definir Numero PontuacaoMaiorFreteSeFOB;

PontuacaoValorCotado = 3;
PontuacaoValorPresente = 3;
PontuacaoPrazoEntrega = 1;
PontuacaoMaiorFreteSeFOB = -3;

Definir Numero xFornecedorVencedor;
Definir Numero xScoreVencedor;
Definir Numero xPreCotVencedor;
Definir Numero xVlrPrsVencedor;
Definir Numero xPrzEntVencedor;
Definir Alfa xCifFobVencedor;
Definir Numero xFreCotVEncedor;

Definir Numero xScoreFornecedorAnalise;
 
c_Cotacao.Sql"SELECT CODFOR, PRECOT, VLRPRS, PRZENT, CIFFOB, FRECOT \
                FROM E410COT \
               WHERE CODEMP = :CprNCodEmp \
                 AND NUMCOT = :CprNNumCot";
  c_Cotacao.AbrirCursor();
  
  Se(c_Cotacao.Achou){
    xFornecedorVencedor = c_Cotacao.CODFOR;
    xPreCotVencedor = c_Cotacao.PreCot;
    xVlrPrsVencedor = c_Cotacao.VlrPrs;
    xPrzEntVencedor = c_Cotacao.PrzEnt;
    xCifFobVencedor = c_Cotacao.CifFob;
    xFreCotVEncedor = c_Cotacao.FreCot;
  }

  
  c_Cotacao.Proximo(); 
  
Enquanto(c_Cotacao.Achou){
  xScoreVencedor = 0;
  xScoreFornecedorAnalise = 0;
  
  Se (xPreCotVencedor > c_Cotacao.PreCot)
    xScoreVencedor = xScoreVencedor + PontuacaoValorCotado;
  Senao
    xScoreFornecedorAnalise = xScoreFornecedorAnalise + PontuacaoValorCotado;
    
  Se (xVlrPrsVencedor > c_Cotacao.VlrPrs)
    xScoreVencedor = xScoreVencedor + PontuacaoValorPresente;
  Senao
    xScoreFornecedorAnalise = xScoreFornecedorAnalise + PontuacaoValorPresente;
    
  Se (xPrzEntVencedor > c_Cotacao.PrzEnt)
    xScoreVencedor = xScoreVencedor + PontuacaoPrazoEntrega;
  Senao
    xScoreFornecedorAnalise = xScoreFornecedorAnalise + PontuacaoPrazoEntrega;   

  Se ((xCIFFOBVencedor = "F") e (xCIFFOBVencedor = c_Cotacao.CifFob)){
    Se (xFreCotVencedor > c_Cotacao.FreCot)
      xScoreVencedor = xScoreVencedor + PontuacaoMaiorFreteSeFOB;
    Senao
      xScoreFornecedorAnalise = xScoreFornecedorAnalise + PontuacaoMaiorFreteSeFOB;  
  }
  Senao Se (xCIFFOBVencedor = "F"){
    xScoreVencedor = xScoreVencedor + PontuacaoMaiorFreteSeFOB;
  } Senao Se (c_Cotacao.CifFob = "F"){
    xScoreFornecedorAnalise = xScoreFornecedorAnalise + PontuacaoMaiorFreteSeFOB;
  } 
  
  Se (xScoreFornecedorAnalise > xScoreVencedor){
    xFornecedorVencedor = c_Cotacao.CODFOR;
    xPreCotVencedor = c_Cotacao.PreCot;
    xVlrPrsVencedor = c_Cotacao.VlrPrs;
    xPrzEntVencedor = c_Cotacao.PrzEnt;
    xCifFobVencedor = c_Cotacao.CifFob;
    xFreCotVEncedor = c_Cotacao.FreCot;  
  } 
  
  c_Cotacao.Proximo();
}

c_Cotacao.FecharCursor(); 

CprNCodFor = xFornecedorVencedor;

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ê?