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 |