Identificador de Regra

GER-075PROAO01

Módulo: GER - Gerais.

Finalidade: Disponibilizar um ponto onde possam ser feitos processamentos específicos após operações realizadas sobre um registro de produto (E075PRO). É chamado ao incluir, alterar ou excluir um produto.

Características:

Para a regra são passados todos os campos da tabela Cadastros - Produtos (E075PRO) com os dados antigos do produto, ou seja, dados de antes da realização da operação.

Tais dados servem, principalmente, para verificar as mudanças ocorridas.

Nota-se que em uma inserção não existem dados antigos do registro (possuem valor nulo), logo será utilizado o conteúdo do novos registros.

Estes dados são passados através de variáveis que seguem a nomenclatura "VS" + (exemplo: para o campo "SitPro" a variável se chama "VSSitPro"). A tipagem das variáveis é análoga a dos campos na tabela.

Assim, para se ter acesso aos novos dados do registro deve-se criar um cursor que busque tais dados já gravados no banco de dados.

Nota-se que em uma exclusão não existem dados novos do registro, sendo que a busca por estes dados via cursor é ilógica e inviável, já que registro foi excluído.

É disponibilizada a variável VSEstado que indica a operação sendo realizada e pode assumir os seguintes valores:

  1. "INSERINDO": indica que o registro de produto está sendo inserido;
  2. "ALTERANDO": indica que o registro de produto está sendo alterado;
  3. "EXCLUINDO": indica que o registro de produto está sendo excluído;

Chamado antes da gravação das operações na base de dados (ou seja, antes do commit), logo qualquer erro que ocorra na regra cancelará a operação.

Quando é realizada uma duplicação de produto/serviço entre empresas pela tela Duplicação do Produto/Serviço entre Empresas (F075DPE) .

Na regra deste identificador, é utilizada a função de programador DuplicarProdutoServicoEmpresa, poderá ser apresentada a mensagem "Regra x: Função de programador DuplicarProdutoServicoEmpresa: Empresa de destino não pode ser igual à empresa de origem!".

Caso isto ocorra, é porque na tela Duplicação do Produto/Serviço entre Empresas (F075DPE) a empresa de destino está definida para realizar a duplicação, enquanto na função de programador definida na regra também é realizada a duplicação para a mesma empresa. Ou seja, na regra não deverá ser processada a mesma empresa informada na tela.

Tela: F075PRO, F075GFP, F075DPO, F075DPE, F075PFF, F075PPG, F075GRD

Transação: Não se aplica.

Regra:

Neste caso, o valor da variável da regra (VSSitPro) irá conter o valor antigo do campo e o valor da variável do cursor (xCur075Pro.SitPro) irá conter o valor novo:

Definir Alfa VSEstado;
Definir Numero VSCodEmp;
Definir Alfa VSCodPro;
Definir Alfa VSSitPro;
Definir Alfa VSUniMed;
Definir Alfa VSUniMe2;
Definir Alfa VSUniMe3;

Definir Alfa ENTER;
CaracterParaAlfa(10, ENTER);

Definir Alfa vCodEmp;
Definir Alfa vMsg;
IntParaAlfa(VSCodEmp, vCodEmp);

se (VSEstado = "INSERINDO")
vMsg = "Produto '" + VSCodPro + "' criado para a empresa " + vCodEmp + "!";
senao
se (VSEstado = "ALTERANDO")
vMsg = "Produto '" + VSCodPro + "' alterado na empresa " + vCodEmp + "!";
senao
se (VSEstado = "EXCLUINDO")
vMsg = "Produto '" + VSCodPro + "' excluído da empresa " + vCodEmp + "!";

se (VSEstado <> "EXCLUINDO")
{vMsg = vMsg + ENTER +
"Valores antigos X novos:" + ENTER;
Definir Cursor xCur075Pro;
xCur075Pro.SQL "SELECT SITPRO, UNIMED, UNIME2, UNIME3 FROM E075PRO
WHERE
CODEMP = :VSCodEmp AND
CODPRO = :VSCodPro";
xCur075Pro.AbrirCursor();
vMsg = vMsg + "SitPro: " + VSSitPro + " - " + xCur075Pro.SitPro + ENTER;
vMsg = vMsg + "UniMed: " + VSUniMed + " - " + xCur075Pro.UniMed + ENTER;
vMsg = vMsg + "UniMe2: " + VSUniMe2 + " - " + xCur075Pro.UniMe2 + ENTER;
vMsg = vMsg + "UniMe3: " + VSUniMe3 + " - " + xCur075Pro.UniMe3;
xCur075Pro.FecharCursor();
}

Mensagem(Retorna, vMsg);

Variáveis Disponibilizadas:

Nome Tipo Observações Retorna Valor
VSEstado ALFA Indicativo da operação sendo realizada sobre o produto ("INSERINDO", "ALTERANDO" ou "EXCLUINDO") N
VSTela ALFA O único detalhe é na tela F075DPE (duplicação de produtos entre empresas, onde ao invés de conter o valor "F075DPE", essa variável terá o valor "DUPLICARPRODUTOSERVICOEMPRESA" N
VSCodEmp NÚMERO Código da empresa (chave do produto) N
VSCodPro ALFA Código do produto (chave do produto) N

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