Identificador de Regra

CPR-000CONVR01

Módulo: CPR - Compras.

Finalidade: Permitir ao usuário decidir se deseja exibir as diferenças entre os valores calculados e os valores recebidos no XML, deixando a situação da nota como "Inconsistente", ou ignorar essas diferenças, deixando a nota como processada com "Sucesso". Isso proporciona maior flexibilidade na validação, além do que já é oferecido pelas parametrizações do sistema. Também serve para tratar casos em que o valor no XML não corresponde aos valores que serão pagos nas parcelas.

Características: O identificador será executado apenas quando houver diferença entre o valor calculado e o valor recebido no XML, e essa diferença for maior que os limites definidos nas parametrizações do sistema. Nenhuma mensagem ou consistência deve ser utilizada neste identificador, apenas retornar se as diferenças devem ser apresentadas ou não, através da variável "CprAExiDif".

Tela: Recebimento eletrônico (F000INE, Processo Agendado 67 e webservice com.senior.g5.co.mcm.cpr.recebimentoeletronico, porta Processar)

Regra:

definir numero CprNCgcFil;
definir numero CprNCgcFor;
definir alfa CprAChvNel;
definir numero CprNTotCal;
definir numero CprNTotXml;
definir numero DiferencaTotal;
definir alfa CprAExiDif;
@ Variáveis da Lista de diferenças @
definir numero CprNLista;
Definir Alfa RetornouValor;
Definir Alfa FimDaLista;
Definir Alfa obtValorAlfa_ProSer;
Definir Alfa obtValorAlfa_Campo;
Definir Numero obtValorNumero_SeqIte;
Definir Numero obtValorNumero_VlrXml;
Definir Numero obtValorNumero_VlrCal;
@ Calcula a diferença total de valores@
DiferencaTotal = CprNTotXml - CprNTotCal;
se (DiferencaTotal < 0)

{ DiferencaTotal = DiferencaTotal * -1; }
@ Caso a diferença for menor que 10 reais e for uma nota de serviço, não exibe a diferença @
se ((DiferencaTotal < 10) e (E440NFC.CodSnf = "NFS"))

{ CprAExiDif = "N"; }
@ Varre a lista de diferenças de valores encontradas @
ListaRegraPrimeiro(CprNLista, RetornouValor); /Posiciona no primeiro registro da lista/
se (RetornouValor = "S")
inicio
FimDaLista = "N";
enquanto (FimDaLista <> "S") /Enquanto não estiver no final da lista entra no laço./
inicio
ListaRegraObterValorAlfa(CprNLista, "ProSer", obtValorAlfa_ProSer, RetornouValor);
ListaRegraObterValorAlfa(CprNLista, "Campo", obtValorAlfa_Campo, RetornouValor);
ListaRegraObterValorNumero(CprNLista, "SeqIte", obtValorNumero_SeqIte, RetornouValor);
ListaRegraObterValorNumero(CprNLista, "VlrCal", obtValorNumero_VlrCal, RetornouValor);
ListaRegraObterValorNumero(CprNLista, "VlrXml", obtValorNumero_VlrXml, RetornouValor);
ListaRegraProximo(CprNLista, RetornouValor); /Posiciona no próximo registro;/
ListaRegraFim(CprNLista, FimDaLista); /Atualiza variável final de lista/

@ Exemplo de consistência com os valores da lista@
se ((obtValorAlfa_ProSer = "PRODUTO") e (obtValorAlfa_Campo = "VLRIMP") e (obtValorNumero_VlrXml = 0))

{ CprAExiDif = "N"; }

fim
fim

Variáveis disponibilizadas:

Nome Tipo Observações Retorna Valor
CprNCgcFil Número Código do CNPJ/CPF da Filial N
CprNCgcFor Número Código do CNPJ/CPF do Fornecedor N
CprAChvNel Alfa Chave eletrônica da nota N
CprNTotCal Número Valor Financeiro Total calculado pelo sistema N
CprNTotXml Número Valor Financeiro Total recebido no XML N
CprNLista Lista Lista com N
E440NFC Tabela Tabela dos dados gerais da nota com os dados atualizados N
CprAExiDif Alfa Exibir diferença de valores encontrada. Valores (S-N). Valor padrão "S" S

Campos encontrados nas listas:

CprNLista
Lista dos campos que estão diferentes entre o que foi calculado e o que este veio no XML.

Nome Tipo Observações Retorna Valor
ProSer Alfa Indica se é um produto/serviço. Valores: (PRODUTO - SERVICO). N
SeqIte Número Sequência do item de produto/serviço na nota fiscal N
Campo Alfa Nome do campo que está com diferença. OBS.: Virá sempre em maiúsculo, ex: (VLRICM, VLRIPI, etc). N
VlrCal Número Valor calculado pelo sistema N
VlrXml Número Valor recebido no XML N

Este artigo ajudou você?