Identificador de Regra
GER-075DERAO01
Módulo: GER - Gerais.
Finalidade: Permitir processamentos específicos após operações realizadas sobre um registro de derivação de produto (E075DER). Chamado ao incluir, alterar ou excluir uma derivação de produto nas telas em que foi implementado.
Importante
Este identificador de regras não atua para campos de usuário.
Características:
- Para a regra são passados todos os campos da tabela "E075DER" com os dados antigos da derivação, 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, logo estes campos possuem valor nulo.
Estes dados são passados através de variáveis que seguem a nomenclatura "VS" + (Ex.: para o campo "SitDer" a variável se chama "VSSitDer"). 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 o registro foi excluído. - É disponibilizada a variável "VSEstado" que indica a operação sendo realizada e pode assumir os seguintes valores:
a) "INSERINDO": indica que o registro de derivação está sendo inserido;
b) "ALTERANDO": indica que o registro de derivação está sendo alterado;
c) "EXCLUINDO": indica que o registro de derivação está sendo excluído; - Este identificador é chamado antes da comitação das operações no base de dados, logo qualquer erro que ocorra na regra cancelará a operação.
- Na inclusão de produtos sem máscara de derivação (E075PRO.CodMdp = '') é incluído um registro único de derivação automaticamente (E075DER.CodDer = ' '). Na inclusão deste registro este identificador NÃO é chamado, para tratar este caso deve-se usar em conjunto o identificador "GER/075PROAO01".
- A partir da versão 5.5.1.12 (27/03/09) foi disponibilizada a variável" VSTela", a qual conterá o código da tela de onde partiu a execução da regra. 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".
- Utilizando a função "CriarEstoque" (versão 5.5.2.3), é possível fazer a ligação automática do produto e depósito, dependendo da regra que o usuário fizer é possível ligar o produto a depósitos específicos ou fazer a ligação com todos depósitos da base.
Tela: F075PRO, F075GFP, F075DPO, F075DPE, F075PFF, F075PPG, F075GRD.
Transação: Não se aplica.
Regra:
Definir Alfa VSEstado;
Definir Numero VSCodEmp;
Definir Alfa VSCodPro;
Definir Alfa VSCodDer;
Definir Alfa VSSitDer;
Definir Numero VSPesLiq;
Definir Numero VSPesBru;
Definir Numero VSVolDer;
Definir Alfa ENTER;
CaracterParaAlfa(10, ENTER);
Definir Alfa vCodEmp;
Definir Alfa vMsg;
Definir Alfa VStrAux1;
Definir Alfa VStrAux2;
IntParaAlfa(VSCodEmp, vCodEmp);
se (VSEstado = "INSERINDO")
vMsg = "Produto '" + VSCodPro + "', derivação '" + VSCodDer + "' criada para a empresa " + vCodEmp + "!";
senao
se (VSEstado = "ALTERANDO")
vMsg = "Produto '" + VSCodPro + "', derivação '" + VSCodDer + "' alterada na empresa " + vCodEmp + "!";
senao
se (VSEstado = "EXCLUINDO")
vMsg = "Produto '" + VSCodPro + "', derivação '" + VSCodDer + "' excluída da empresa " + vCodEmp + "!";
se (VSEstado <> "EXCLUINDO") {
vMsg = vMsg + ENTER +
"Valores antigos X novos:" + ENTER;
Definir Cursor xCur075Der;
xCur075Der.SQL "SELECT SITDER, PESLIQ, PESBRU, VOLDER
FROM E075DER
WHERE
CODEMP = :VSCodEmp AND
CODPRO = :VSCodPro AND
CODDER = :VSCodDer";
xCur075Der.AbrirCursor();
vMsg = vMsg + "SitDer: " + VSSitDer + " - " + xCur075Der.SitDer + ENTER;
IntParaAlfa(VSPesLiq, vStrAux1);
IntParaAlfa(xCur075Der.PesLiq, vStrAux2);
vMsg = vMsg + "PesLiq: " + vStrAux1 + " - " + vStrAux2 + ENTER;
IntParaAlfa(VSPesBru, vStrAux1);
IntParaAlfa(xCur075Der.PesBru, vStrAux2);
vMsg = vMsg + "PesBru: " + vStrAux1 + " - " + vStrAux2 + ENTER;
IntParaAlfa(VSVolDer, vStrAux1);
IntParaAlfa(xCur075Der.VolDer, vStrAux2);
vMsg = vMsg + "VolDer: " + vStrAux1 + " - " + vStrAux2;
xCur075Der.FecharCursor();
}
Mensagem(Retorna, vMsg);
definir alfa VSEstado;
definir alfa VSCodPro;
definir alfa VSCodDer;
definir numero VSCodEmp;
se (VSEstado = "INSERINDO")
inicio
definir cursor Cur_Dep;
definir alfa vCodDep;
@ -- Utilizando cursor .... Buscando todos depósitos da base, conforme a empresa-- @
Cur_Dep.Sql "SELECT CODDEP,TIPDEP FROM E205DEP WHERE CODEMP = :VSCodEmp";
Cur_Dep.AbrirCursor();
Enquanto (Cur_Dep.Achou)
inicio
se (Cur_Dep.TipDep <> 2) @ Possível também tratar pelo select, o mais viável @
inicio
vCodDep = Cur_Dep.CodDep;
CriarEstoque(VSCodPro, VSCodDer, vCodDep); @ - Função Liga Produto x Depósito - @
fim;
Cur_Dep.Proximo();
fim;
Cur_Dep.FecharCursor();
fim;
Variáveis Disponibilizadas:
Nome | Tipo | Observações | Retorna Valor |
---|---|---|---|
GerNCodBar | NÚMERO | Código de barras (campo E075DER.CodBar). Variável disponibilizada a partir das versões 5.10.2.98 e 5.10.3.7 para tratar uma questão de compatibilidade em relação a mesma variável (VSCODBAR) de outros identificadores de regras que possuem o tipo como sendo "ALFA", o que gera incompatibilidade de tipos na compilação das regras. | S |
VSEstado | ALFA | Indicativo da operação sendo realizada sobre a derivação ("INSERINDO", "ALTERANDO" ou "EXCLUINDO") | N |
VSTela | ALFA | Tela de onde partiu a chamada da regra | N |
VSCodEmp | NÚMERO | Código da empresa (chave da derivação) | N |
VSCodPro | ALFA | Código do produto (chave da derivação) | N |
VSCodDer | ALFA | Código da derivação (chave da derivação) | 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.