Identificador de Regra

CPR-000TORTC01

Finalidade: Permitir que a customização decida se tolera (ignora) ou bloqueia divergências entre o valor calculado pelo ERP e o valor recebido no XML da NF-e, para os tributos da Reforma Tributária (IBS, CBS e Imposto Seletivo), item a item, no Recebimento Eletrônico. O objetivo é evitar que pequenas diferenças de arredondamento no cálculo item a item — que não representam erro tributário real — bloqueiem o recebimento da nota. O valor gravado na nota permanece sempre o calculado pelo ERP; este identificador não altera o valor gravado, apenas decide se a divergência impede ou não o processamento.

Módulo: CPR - Compras.

Rotinas:

Transação: Não se aplica.

Características:

Atenção!

Dependência com o identificador CPR-000INECN01: este identificador só é executado quando o item apresenta divergência na consistência de valores dos Impostos RTC. Essa consistência depende da parametrização definida no CPR-000INECN01:

  • CprATransfereImpostosRTCDoXMLProduto / CprATransfereImpostosRTCDoXMLServico: quando configuradas como S, o sistema assume os valores do XML sem compará-los ao calculado pelo ERP. Nesse caso, a consistência de valores nunca é executada e o CPR-000TORTC01 nunca é chamado para aquele item.
  • CprAImpostosRTCProduto / CprAImpostosRTCServico: definem quais impostos RTC (CBS, IBS, IS) são ignorados na consistência. Se o Imposto Seletivo (IS) estiver incluído nessa lista, as divergências desse imposto não são verificadas e a tolerância configurada para IS no CPR-000TORTC01 nunca será avaliada.

Variáveis Disponibilizadas:

Nome Tipo Observações Retorna Valor
CprACgcFil ALFA CNPJ/CPF da filial que está recebendo a nota fiscal. N
CprACgcFor ALFA CNPJ/CPF do fornecedor que emitiu a nota fiscal. N
CprAChvNel ALFA Chave eletrônica da nota. N
CprAProSer ALFA Indica se o item é um produto ou serviço. Valores: PRODUTO, SERVICO. N
CprNSeqIte NÚMERO Sequência do item de produto/serviço na nota fiscal (SeqIpc/SeqIsc). N
CprNLista LISTA Lista das divergências encontradas entre o valor calculado pelo ERP e o valor recebido no XML, para o item atual. N

Campos da lista CprNLista:

Lista das divergências de base de cálculo, alíquota ou valor encontradas entre o calculado pelo ERP e o recebido no XML, para cada imposto do item atual (IBS, CBS ou Imposto Seletivo).

Nome Tipo Observações Retorna Valor
CprACodImp ALFA Código do imposto (E051IMP.CODIMP). N
CprAGrdDvg ALFA Grandeza divergente. Valores: BASE, ALIQUOTA, VALOR. N
CprNVlrCal NÚMERO Valor calculado pelo ERP para a grandeza indicada em CprAGrdDvg. N
CprNVlrXml NÚMERO Valor informado no XML da NF-e para a grandeza indicada em CprAGrdDvg. N
CprNValDif NÚMERO Valor da diferença absoluta entre o calculado e o do XML, já arredondada. N
CprATolDvg ALFA Tolerar a divergência encontrada. Valores: S, N. Valor padrão: N (bloqueia). Deve ser alterado para S por meio de ListaRegraAlterarLinhaAlfa quando a customização decidir tolerar aquela divergência específica. S

Regra:

definir alfa CprACgcFil;
definir alfa CprACgcFor;
definir alfa CprAChvNel;
definir alfa CprAProSer;
definir numero CprNSeqIte;
@ Variaveis da Lista de divergencias @
definir numero CprNLista;
Definir Alfa RetornouValor;
Definir Alfa FimDaLista;
Definir Alfa obtValorAlfa_CodImp;
Definir Alfa obtValorAlfa_GrdDvg;
Definir Numero obtValorNumero_VlrCal;
Definir Numero obtValorNumero_VlrXml;
Definir Numero obtValorNumero_ValDif;
Definir Alfa AlterouValor;

@ Varre a lista de divergencias do item atual @
ListaRegraPrimeiro(CprNLista, RetornouValor);
se (RetornouValor = "S")
inicio
  FimDaLista = "N";
  enquanto (FimDaLista <> "S")
  inicio
    ListaRegraObterValorAlfa(CprNLista, "CprACodImp", obtValorAlfa_CodImp, RetornouValor);
    ListaRegraObterValorAlfa(CprNLista, "CprAGrdDvg", obtValorAlfa_GrdDvg, RetornouValor);
    ListaRegraObterValorNumero(CprNLista, "CprNVlrCal", obtValorNumero_VlrCal, RetornouValor);
    ListaRegraObterValorNumero(CprNLista, "CprNVlrXml", obtValorNumero_VlrXml, RetornouValor);
    ListaRegraObterValorNumero(CprNLista, "CprNValDif", obtValorNumero_ValDif, RetornouValor);

    @ Exemplo de tolerancia especifica por imposto: IS tolera ate R$ 0,05 na BASE @
    se ((obtValorAlfa_CodImp = "IS") e (obtValorAlfa_GrdDvg = "BASE") e (obtValorNumero_ValDif <= 0.05))
    inicio
      ListaRegraAlterarLinhaAlfa(CprNLista, "CprATolDvg", "S", AlterouValor);
    fim

    @ Exemplo de tolerancia: tolera ate R$ 0,15 na ALIQUOTA @
    se ((obtValorAlfa_GrdDvg = "ALIQUOTA") e (obtValorNumero_ValDif <= 0.15))
    inicio
      ListaRegraAlterarLinhaAlfa(CprNLista, "CprATolDvg", "S", AlterouValor);
    fim

    @ Exemplo de tolerancia: tolera R$ 0,01 no VALOR do imposto @
    se ((obtValorAlfa_GrdDvg = "VALOR") e (obtValorNumero_ValDif <= 0.01))
    inicio
      ListaRegraAlterarLinhaAlfa(CprNLista, "CprATolDvg", "S", AlterouValor);
    fim

    ListaRegraProximo(CprNLista, RetornouValor);
    ListaRegraFim(CprNLista, FimDaLista);
  fim
fim

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ê?