Identificador de Regra

VEN-000CREGR01

Módulo: VEN - Vendas.

Finalidade: Personalizar a forma de verificação de bloqueio do grupo de clientes.

Chamada para a Nota Fiscal de Saída, Pedidos e Pré-Faturas, após feita a análise de crédito do grupo do cliente pelo ERP através dos parâmetros aplicados para essa análise. O resultado da análise é passado para a regra através das variáveis VSBLOQUE (se está bloqueado) e VSMOTIVO (concatenação dos motivos de bloqueio resultantes da análise de crédito do grupo do cliente pelo Gestão Empresarial | ERP, de acordo com os parâmetros na filial e das definições do grupo do cliente). Esses valores podem ser manipulados através de outras consistências que podem ser executadas através deste identificador, podendo liberar ou acrescentar possibilidades de bloqueios às rotinas e entidades que chamam esta regra. Podem ser retornados valores nas variáveis VSBLOQUE e VSMOTIVO, que são levadas para o ERP e atribuídas aos campos de Bloqueio e Observação do Motivo dos Pedidos, Notas de Saída e Pré-Faturas. Assim, pode-se ampliar a gama de consistências no que se refere ao conceito de bloqueio dessas entidades.

A variável VSORIBLO informa para a regra de onde é originada a chamada da verificação de crédito do cliente, somente no caso do pedido. Os valores que essa variável pode assumir são:
- no momento da digitação do Código do Cliente: a variável assume o valor "Cliente";
No fechamento do Pedido: a variável assume o valor "Fechamento";
- na alteração do valor do Pedido após fechado (caso o parâmetro "Indicativo se o crédito do cliente deve ser verificado na alteração de um pedido ou nota fiscal de saída" possuir o valor "S" atribuído) : a variável assume o valor "Alteracao".
Caso a chamada seja feita de outras rotinas do ERP (Nota ou Pré-Faturas), a variável assume o valor "Outros".

O campo VSDESBLONOT quando definido valor "S" permite manter o motivo de bloqueio sem bloquear o pedido. Ess funcionalidade foi criada para permitir nesse caso informar um motivo de desbloqueio. Isso porque se não for definido valor para a variavel VSDESBLOMOT ou for definido o valor "N" estiver definido motivo e o campo VSBloqueio estiver com "N" o pedido vai ser bloqueado da mesma forma.

Características: A variável VSEXEWEB indica se está sendo utilizado na WEB ou no Cliente-Servidor.

Essa variável visa não gerar um erro quando o ambiente é WEB e se está digitando o cliente em um pedido, momento em que é feita a análise de crédito e houver restrições a esse grupo de cliente. Devido a impossibilidade de serem exibidas mensagens de aviso para a WEB, é gerado um erro neste momento (na aplicação cliente-servidor é apenas gerado um aviso). Caso não se deseje gerar erro na WEB devido a verificação de crédito no momento de se digitar o cliente, deixando a análise
de crédito bloquear o pedido no fechamento, deve-se proceder a programação na regra observando a seguintes seqüência lógica:

Se a variável VSORIGEM possui o valor "PED" (é pedido) e a variável VSORIBLO possui o valor "CLIENTE" e a variável VSEXEWEB possui o valor "S" e caso o cliente esteja bloqueado (seja por alguma consistência na regra ou pela consistência prévia do ERP onde a variável VSBLOQUE possui valor igual a "S"), deve-se atribuir o valor "N" para a variável VSBLOQUE e vazio ou nulo ("") para a variável VSMOTIVO, para que o ERP não gere a mensagem de erro nesse momento e situação. Desse modo, no fechamento, a mesma verificação de crédito é feita e a regra é chamada e caso existam restrições, o pedido é bloqueado. Recomenda-se utilizar essa consistência na regra logo antes de qualquer outra consistência, para evitar que a regra faça consistências que, no caso da WEB e digitação do cliente, sejam descartadas pela lógica acima.

Essa é apenas uma sugestão, a manipulação de variáveis é livre para o programador das regras efetuar as consistências possíveis e necessárias.

Observação: A rotina de análise de crédito do grupo do cliente é feita juntamente com a da análise de crédito do cliente, em seguida a esta. Então, é primeiro analisado o crédito do cliente, e em seguida o crédito do grupo. A regra 000CRECL01 é executada antes de ser analisado o crédito do grupo e, para este, foi criada a regra 000CREGR01, executada somente com os motivos de bloqueio do grupo, independente se houve ou não bloqueio pela análise de crédito do cliente. A regra 000CREGR01 permite inclusive bloquear ou desbloquear conforme a lógica definida na regra. Porém a regra só afeta o bloqueio e motivo do grupo, não age sobre o bloqueio ou motivo do cliente, que deve ser tratado pela regra 000CRECL01. Por exemplo, se o cliente tiver problema de crédito e o grupo também, mas via regra o bloqueio desse grupo foi omitido, o pedido será bloqueado pois houve bloqueio na análise do cliente.

A regra 000CREGR01 já existia para algumas rotinas de pedido antes de ser incluída a possibilidade de análise de crédito do grupo, e para essas rotinas continua sendo executada. Agora porém foram criadas mais variáveis para contemplar a análise para notas e pré-faturas, com indicativo de origem da chamada e as chaves dessas tabela, e incluído o motivo do bloqueio.

Tela: Pedidos, Pré-Faturas e NFV

Transação: Pode ser ligado à transação.

Regra:

definir Alfa VSOrigem;
definir Numero VSCodEmp;
definir Numero VSCodFil;
definir Numero VSNumero;
definir Numero VSCodGre;
definir Numero VSCodCli;
definir Numero VSCodRep;
definir Numero VSVlrLiq;
definir Alfa VSCodCpg;
definir Alfa VSCodFpg;
definir Numero VSZonFra;
definir Numero VSDatSuf;
definir Alfa VSBloque;
definir Alfa VSExeWeb;
definir Alfa VSOriBlo;
definir Alfa msg1;
definir Alfa msg2;

@ se for pedido @
se (VSOrigem = "PED")
inicio
@ se for na informação do cliente @
se (VSOriBlo = "Cliente")
inicio
@ se for o cliente 3 e estiver executando na web e bloquear então desbloqueia @
se ((VSCodCli = 3) e (VSExeWeb = "S") e (VSBloque = "S"))
VSBloque = "N";
fim;
fim;

@ apenas exibe mensagem para verificar se todas as variáveis recebem valor @
IntParaAlfa(VSCodEmp, msg2);
Msg1 = " Empresa: " + msg2;
IntParaAlfa(VSCodFil, msg2);
Msg1 = Msg1 + " Filial: " + msg2;
IntParaAlfa(VSNumero, msg2);
Msg1 = Msg1 + " Numero: " + msg2;
IntParaAlfa(VSCodGre, msg2);
Msg1 = Msg1 + " Grupo: " + msg2;
IntParaAlfa(VSCodCli, msg2);
Msg1 = Msg1 + " Cliente: " + msg2;
IntParaAlfa(VSCodRep, msg2);
Msg1 = Msg1 + " Rep.: " + msg2;
IntParaAlfa(VSVlrLiq, msg2);
Msg1 = Msg1 + " Vlr. Ped.: " + msg2;
IntParaAlfa(VSZonFra, msg2);
Msg1 = Msg1 + " Zona Franca: " + msg2;
IntParaAlfa(VSDatSuf, msg2);
Msg1 = Msg1 + " Data Suf.: " + msg2;

Msg1 = Msg1 + " Origem:" + VSOrigem;
Msg1 = Msg1 + " Cond: " + VSCodCpg;
Msg1 = Msg1 + " Forma: " + VSCodFpg;
Msg1 = Msg1 + " Web: " + VSExeWeb;
Msg1 = Msg1 + " Origem: " + VSOriBlo;
Msg1 = Msg1 + " Bloqueias: " + VSBloque;
Msg1 = Msg1 + "[OK]";

se (VSExeWeb <> "S")
Mensagem(Retorna,Msg1);

Variáveis Disponibilizadas:

Nome Tipo Observações Retorna Valor
VSOrigem ALFA Origem da chamada à regra (até o momento assume somente "PED", de Pedido) N
VSCodEmp NÚMERO Código da Empresa N
VSCodFil NÚMERO Código da Filial N
VSNumero NÚMERO Número (pode ser do pedido, pré-fatura ou nota fiscal, confome a origem) N
VSCodGre NÚMERO Código do Grupo de Empresa do Cliente N
VSCodCli NÚMERO Código do Cliente N
VSCodRep NÚMERO Código do Representante. No caso do pedido, só está presente no fechamento ou alteração do cliente do pedido N
VSVlrLiq NÚMERO Valor líquido na moeda da empresa N
VSCodCpg ALFA Condição de pagamento. Quando for pedido só possui valor no fechamento ou alteração do cliente do pedido N
VSCodFpg NÚMERO Forma de pagamento. Quando for pedido só possui valor no fechamento ou alteração do cliente do pedido N
VSZonFra NÚMERO Indicativo se o benefício fiscal do cliente é da Zona Franca N
VSDatSuf NÚMERO Data de validade do registro do SUFRAMA N
VSExeWeb ALFA Se esta executando via WEB (assume o valor "S") ou não ("N"). Até o momento, a variável vai sempre assumir "S", pois só é executava via WEB N
VSOriBlo ALFA Origem do bloqueio: Assume o valor "Cliente" quando chama da consistência do cliente e o valor "Fechamento", quando chama do fechamento N
VSNumAna NÚMERO Número da análise de embarque da pré-fatura, quando a origem é pré-fatura N
VSCodSnf ALFA Código da série da nota fiscal de saída, somente quando a origem é nota fiscal N
VSTipNfs NÚMERO Tipo da Nota Fiscal N
VSDesBloMot ALFA Permite definir se mantem o motivo de bloqueio sem bloquear o pedido. Valor S ou N N
VSBloque ALFA Indicativo se bloqueia ou não o processo. Assume o valor "S" por padrão e pode ser alterado para "N" para não bloquear o processo. S
VSMotivo ALFA Contem o conjunto de mensagens de bloqueio do grupo na análise efetuada pelo Gestão Empresarial | ERP. Pode se editada 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ê?