Identificador de Regra
VEN-000CRECL01
Módulo: VEN - Vendas.
Finalidade: personalizar a forma de verificação de bloqueio do cliente. É acionado para a nota fiscal de saída, pedidos e pré-faturas após a análise de crédito do cliente pelo sistema, por meio dos parâmetros aplicados para a análise. O resultado é 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 ERP, de acordo com os parâmetros e situação do cliente). Esses valores podem ser manipulados por meio de outras consistências executadas através desse identificador, podendo liberar ou acrescentar possibilidades de bloqueios às rotinas e entidades que chamam a regra, levando as informações para o ERP e as atribuindo aos campos de Bloqueio e Observação do Motivo dos Pedidos, Notas de Saída e Pré-Faturas.
Características: a variável VSORIBLO informa para a regra qual a origem da chamada da verificação de crédito do cliente (no caso de pedido):
- 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";
- quando o pedido for alterado após ser fechado de forma que o seu valor fique maior (caso o parâmetro Verifica Crédito ao Alterar Pedido/NF for "S - Sim"): a variável assume o valor "Alteração".
Importante
Caso o documento fechado (pedido/nota fiscal/outros) possua 1. condição de pagamento, 2. forma de pagamento do tipo Dinheiro e 3. o parâmetro Analisar Crédito Vendas em Dinheiro na guia Vendas 2 da tela F070FVE for "N - Não", o sistema fechará o documento sem acionar o identificador de regras. Isso ocorre porque ele interpreta que não deve fazer a análise de crédito de pedidos cujo pagamento é em dinheiro, não acionando a regra para uma análise de crédito personalizada.
Caso queira que o identificador seja chamado nesses casos, transferindo para a regra a responsabilidade de bloquear ou não o documento, altere o parâmetro Analisar Crédito Vendas em Dinheiro para "S - Sim". Se a chamada do IR for feita por meio de outras rotinas do ERP (nota ou pré-faturas), a variável assume o valor "Outros".
Observação
O parâmetro global AnlPedBlo, juntamente com o identificador de regras VEN-000CRECL01, pode ser utilizado para indicar que o sistema deve verificar o crédito do cliente mesmo quando o pedido entrar bloqueado (Pedido entra Bloqueado igual a S na tela F070FVE). Isso é feito por meio das variáveis VSBLOQUE e VSMOTIVO.
Condições de pagamento com dia fixo podem ser tratadas na própria regra do identificador. Para isso, o parâmetro Analisar Crédito Vendas em Dinheiro no cadastro da filial precisa ser igual a "S - Sim" e deve haver uma condição na regra para que, nas condições de pagamento sem dia fixo informado, o bloqueio não seja realizado no fechamento da nota fiscal. A variável VsCodCpg apresenta o código da condição de pagamento usada na nota fiscal, sendo possível fazer um cursor em Tabelas - Condição de Pagamento - Parcelas (E028ICP) para verificar se existe ou não uma data no campo DatFix, conforme exemplo de regra abaixo. É necessário, porém, avaliar a melhor forma de tratar a questão com base nas regras específicas de negócio.
Definir NUMERO VSCODEMP;
Definir ALFA VSORIGEM;
Definir ALFA VSBLOQUE;
Definir ALFA VSMOTIVO;
Definir ALFA VSCODCPG;
Definir Data dDatFix;
Definir Alfa DatAux;
Definir Cursor CUR_E028ICP;
Inicio
se (VSORIGEM = "NFS") @ origem da chamada via NF @
{
@Buscar na condição de pagamento se tem data fixa informada@
CUR_E028ICP.SQL "SELECT DATFIX FROM E028ICP WHERE CODEMP = :VSCODEMP and CODCPG = :VSCODCPG";
CUR_E028ICP.AbrirCursor();
se (CUR_E028ICP.Achou)
dDatFix=CUR_E028ICP.DATFIX;
CUR_E028ICP.FecharCursor();
ConverteMascara(3,dDatFix,DatAux,"DD/MM/YYYY");
Se (DatAux = "00/00/0000") @ Quando não existe data fixa o padrão gravado no banco é 31/12/1900 que no caso é 00/00/0000 @
{ VSBLOQUE = "N"; VSMOTIVO = ""; }
Fim;
Se (DatAux <> "00/00/0000") @ Faz a análise de crédito conforme a necessidade do cliente e bloqueio ou não a NF @
{ x=y; }
Fim;
A variável VSEXEWEB indica se o sistema está sendo utilizado na versão web ou nocliente-servidor. Essa variável visa não gerar um erro quando o ambiente é web e for inserido um cliente em um pedido, pois nesse momento é feita a análise de crédito. Devido a impossibilidade de serem exibidas mensagens de aviso para a web, será gerado um erro (na aplicação cliente-servidor será apenas um aviso). Caso não queira gerar o erro, deixando a análise de crédito bloquear o pedido no fechamento, altere a regra observando a seguintes sequência lógica:
Se a variável VSORIGEM possui o valor "PED" (pedido), a variável VSORIBLO possui o valor "Cliente", a variável VSEXEWEB possui o valor "S - Sim" e o cliente esteja bloqueado (seja por alguma consistência na regra ou pela consistência prévia do ERP em que a variável VSBLOQUE possui valor igual a "S - Sim"), atribua o valor "N" para a variável VSBLOQUE e vazio ou nulo ("") para a variável VSMOTIVO. Dessa forma, o ERP não apresentará a mensagem de erro. No fechamento, a mesma verificação de crédito é feita e a regra será chamada. Caso existam restrições, o pedido será bloqueado. Utilize essa consistência na regra antes de qualquer outra, para evitar que a regra faça consistências que sejam descartadas pela lógica acima.
Quando a variável VSDESBLOMOT estiver como "S - Sim", será possível manter um motivo de bloqueio, alterar este motivo ou informar um motivo de desbloqueio, sem bloquear o pedido. Já se a variável VSBLOQUE estiver como "S - Sim", o pedido será bloqueado. Mas caso esta mesma variável estiver como "N - Não":
- Se existe valor na variável VSMOTIVO e a VSDESBLOMOT for "N - Não", o pedido será bloqueado;
- Se existe valor na variável VSMOTIVO e a VSDESBLOMOT for "S - Sim", o pedido não será bloqueado e o valor da variável VSMOTIVO será mantido.
Na alteração do pedido, o identificador será acionado apenas se o pedido não estiver bloqueado. Ou seja, não será possível desbloquear um pedido pela regra.
Tela: Pedidos, NFV e Pré-Faturas.
Transação: não se aplica.
Regra:
Verifique na regra 000CRECL01 se o limite de crédito está sendo testado ao inserir o cliente no pedido e se é via um processo automático. Com essa combinação, o que foi verificado na rotina de limite de crédito pode ser descartada no momento de atribuir o cliente, deixando para o fechamento analisar depois. Lembrando que esse procedimento afeta outras rotinas automáticas de geração de pedido (ERP SID, ERP WEB, rotinas internas etc.).
*/
Definir ALFA VSORIGEM;
Definir ALFA VSORIBLO;
Definir ALFA VSEXEWEB;
Definir ALFA VSBLOQUE;
Definir ALFA VSMOTIVO;
se (VSORIGEM = "PED") @ origem do pedido @
inicio
se (VSORIBLO = "Cliente")
inicio
se (VSEXEWEB = "S")
inicio
VSBLOQUE = "N";
VSMOTIVO = "";
fim;
fim;
fim;
*/
Definir Numero nCodEmp;
Definir Numero nCodFil;
Definir Numero nNumPed;
Definir Numero nMotCom;
Definir Numero nMotFin;
Definir Numero nBloCom;
Definir Numero nBloFin;
Definir Alfa aObsCom;
Definir Alfa aObsFin;
Definir Alfa aAreCom;
Definir Alfa aAreFin;
Definir Alfa aBloCom;
Definir Alfa aBloFin;
Definir Alfa aSitCom;
Definir Alfa aSitFin;
Definir Alfa VSOriBlo;
Definir Alfa VSOrigem;
Definir Alfa VSBloque;
@ *** BLOQUEIO COMERCIAL *** @
nBloCom = 1;
nCodEmp = VsCodEmp; @ buscando o código da empresa do pedido @
nCodFil = VsCodFil; @ buscando o código da filial do pedido @
nNumPed = VsNumero; @ buscando o número do pedido @
aObsCom = "*** BLOQUEIO COMERCIAL ***"; @ texto que irá aparecer na observação que será gerada @
nMotCom = 104; @ código do motivo que será vinculado à observação @
aAreCom = "VEN"; @ área da observação que será gerada @
aBloCom = "S"; @ "S" para bloquear a área do pedido ou "N" para liberar a área do pedido @
aSitCom = "R"; @ indica que a observação está resolvida @
@ *** BLOQUEIO FINANCEIRO *** @
nBloFin = 1;
nCodEmp = VsCodEmp; @ buscando o código da empresa do pedido @
nCodFil = VsCodFil; @ buscando o código da filial do pedido @
nNumPed = VsNumero; @ buscando o número do pedido @
aObsFin = "*** BLOQUEIO FINANCEIRO ***";
nMotFin = 107; @ código do motivo que será vinculado à observação @
aAreFin = "FIN";
aBloFin = "N"; @ "S" para bloquear a área do pedido ou "N" para liberar a área do pedido @
aSitFin = "R"; @ indica que a observação está resolvida @
@se o origem da chamada do identificador VEN-000CRECL01 for igual a "PED" (pedido) e se o momento da chamada for "Fechamento", as observações podem ser gravadas @
Se((VSOrigem = "PED") e (VsOriBlo = "Fechamento"))
{
/*Antes de gerar cada uma, porém, sugerimos consistir as regras de negócio
*/
GeraObsBloPed(nCodEmp, nCodFil, nNumPed, aObsCom, nMotCom, aAreCom, aBloCom, aSitCom);
GeraObsBloPed(nCodEmp, nCodFil, nNumPed, aObsFin, nMotFin, aAreFin, aBloFin, aSitFin);
}
@ como o bloqueio será feito por meio das observações do pedido, não é necessário alterar esse campo @
VSBloque = "N";
Variáveis disponibilizadas:
Nome | Tipo | Observações | Retorna Valor |
---|---|---|---|
VSORIGEM | ALFA | Origem da chamada de regra "PED" (Pedido) ou "NFS" (Nota Fiscal de Saída) ou "PFA" (Pré-Fatura) | N |
VSCODEMP | NÚMERO | Código da Empresa | N |
VSCODFIL | NÚMERO | Código da Filial | N |
VSCODSNF | ALFA | Série da Nota Fiscal, só existe se VSOrigem for "NFS" | N |
VSNUMERO | NÚMERO | Número da Nota Fiscal, Pedido ou Pré-Fatura | N |
VSCODCLI | NÚMERO | Código do Cliente | N |
VSCODREP | NÚMERO | Código do Representante | N |
VSVLRLIQ | NÚMERO | Valor líquido do pedido, na nota fiscal esta variável irá considerar pedidos em aberto conforme parametrizado nos parâmetros de vendas da filial e para pré-fatura também será considerado as pré-faturas em aberto caso esteja configurado nos parâmetros. | N |
VSCODCPG | ALFA | Código da condição de pagamento | N |
VSORIBLO | ALFA | Indicativo de onde está sendo originada a chamada da regra | N |
VSEXEWEB | ALFA | Indica se o sistema está sendo executado na Web (a variável assume o valor "S") ou executado via ERP cliente-servidor normal (a variável assume o valor "N") | N |
VSNUMANE | NÚMERO | Número da Análise de Embarque. Só possui valor a ser considerado se VSORIGEM for "PFA" (Pré-Fatura) | N |
VSCODFPG | NÚMERO | Código da forma de pagamento | N |
VSCODTNS | ALFA | Código da Transação | N |
VSTIPNFS | NÚMERO | Tipo da nota fiscal | N |
VSPROAUT | ALFA | Executado via processo automático | N |
VSDESBLOMOT | ALFA | Permite definir se mantem o motivo de bloqueio sem bloquear o pedido. Valor S ou N | N |
VSVALORREAL | NÚMERO | Esta variável irá sempre considerar o valor líquido da pré-fatura e da nota fiscal mesmo que a filial esteja parametrizada para considerar o valor em aberto de pré-faturas e pedidos. | N |
VSMOTIVO | ALFA | Descrição do motivo do bloqueio | S |
VSBLOQUE | ALFA | Indicativo se o cliente está bloqueado. Assume "S" (Sim) ou "N" (Nã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.