Ajuda por telas > Mercado > Gestão de Vendas > Contratos > Parcelas Processadas dos Contratos - Problemas, Diagnóstico e Correção

Parcelas Processadas dos Contratos - Problemas, Diagnóstico e Correção

1. Parcelas Processadas do contrato

Tanto a tabela de dados gerais do contrato (E160CTR) como a tabela de itens de produto (E160CVP) e/ou itens de serviço (E160CVS), possuem o campo propar, que indica quantas competências já foram processadas para aquele contrato/item.

Uma competência é considerada processada quando:

2. Problemas nas Parcelas Processadas do contrato

Erros no campo propar podem causar:

3. Recomendação

Recomendamos utilizar inicialmente o parâmetro CorCtrPro igual a "LL" na tela Manutenção dos parâmetros globais do sistema (F000PGS), para que o sistema registre todas as inconsistências encontradas sem alterar a base de dados.

Após analisar o log gerado e confirmar as divergências, altere o parâmetro para "UPP" para que o sistema execute a correção automaticamente.

Para validar e corrigir as Parcelas Processadas durante o próprio faturamento do contrato, consulte o tópico 8. Validação e correção automática no faturamento do contrato.

4. Pré-requisito para execução da correção de Parcelas Processadas

Antes de utilizar o botão Corrigir Parcelas Processadas, é necessário garantir que todas as notas fiscais vinculadas ao contrato possuam a Competência Faturada preenchida corretamente.

A rotina de correção recalcula o valor de Parcelas Processadas com base nas competências faturadas das notas fiscais do contrato. Quando uma ou mais notas estão sem a Competência Faturada ou com esse valor incorreto, a rotina não consegue contabilizá-las, e a execução do botão pode gerar divergência no campo Parcelas Processadas — inclusive zerando o valor.

Atenção
Sempre valide a Competência Faturada das notas do contrato antes de executar a correção. Executar o botão com notas sem competência correta pode agravar a divergência em vez de corrigi-la.

Como validar a Competência Faturada das notas

Utilize o comando SQL abaixo para verificar as notas fiscais do contrato e identificar aquelas com a Competência Faturada ausente ou divergente:

SELECT ISV.CODEMP,
       ISV.CODFIL,
       ISV.CODSNF,
       ISV.NUMNFV,
       ISV.NUMCTR,
       ISV.DATCPT   AS COMPETENCIA_CONTRATO,
       ISV.CPTFAT   AS COMPETENCIA_FATURADA,
       E140NFV.SITNFV
  FROM E140ISV ISV
 INNER JOIN E140NFV
         ON E140NFV.CODEMP = ISV.CODEMP
        AND E140NFV.CODFIL = ISV.CODFIL
        AND E140NFV.CODSNF = ISV.CODSNF
        AND E140NFV.NUMNFV = ISV.NUMNFV
 WHERE ISV.CODEMP = [CODEMP]
   AND ISV.CODFIL = [CODFIL]
   AND ISV.NUMCTR = [NUMCTR]
 ORDER BY ISV.NUMNFV;

Observação
Substitua os campos entre colchetes com os valores desejados.

Na coluna COMPETENCIA_FATURADA (CptFat), verifique se todas as notas possuem valor preenchido e coerente com a competência do contrato.

Caso alguma nota apresente esse campo vazio ou incorreto, ajuste a Competência Faturada da nota antes de executar o botão de correção.

5. Como encontrar as Parcelas Processadas atuais do contrato

Abaixo seguem comandos SQL para verificar a situação atual das Parcelas Processadas dos dados gerais de contrato, itens de produto e/ou itens de serviço.

O que deve ser verificado:

5.1 Parcelas Processadas atuais dos dados gerais do contrato

SELECT 'Dados gerais do contrato', codemp, codfil, numctr, propar
FROM e160ctr
WHERE codemp = [CODEMP]
AND codfil = [CODFIL]
AND numctr = [NUMCTR];

Observação
Substitua os campos entre colchetes com os valores desejados.

5.2 Parcelas Processadas atuais dos itens de produto do contrato

SELECT 'Itens de produto do contrato', codemp, codfil, numctr, seqcvp, datcpt, propar
FROM e160cvp
WHERE codemp = [CODEMP]
AND codfil = [CODFIL]
AND numctr = [NUMCTR];

Observação
Substitua os campos entre colchetes com os valores desejados.

5.3 Parcelas Processadas atuais dos itens de serviço do contrato

SELECT 'Itens de serviço do contrato', codemp, codfil, numctr, seqcvs, datcpt, propar
FROM e160cvs
WHERE codemp = [CODEMP]
AND codfil = [CODFIL]
AND numctr = [NUMCTR];

Observação
Substitua os campos entre colchetes com os valores desejados.

6. Como encontrar as Parcelas Processadas corretas do contrato

Abaixo seguem comandos SQL para calcular os dados corretos de faturamento dos dados gerais de contrato, itens de produto e/ou itens de serviço.

O valor correto é calculado pela fórmula:

6.1 Parcelas Processadas corretas para os dados gerais do contrato

SELECT COUNT(*) AS PROPAR_CORRETO
FROM (
    SELECT DISTINCT ISV.CPTFAT AS DATAFATURAMENTO
    FROM E140ISV ISV
    INNER JOIN E140NFV NFV
        ON NFV.CODEMP = ISV.CODEMP AND NFV.CODFIL = ISV.CODFIL
        AND NFV.NUMNFV = ISV.NUMNFV AND NFV.CODSNF = ISV.CODSNF
    WHERE ISV.CODEMP = {CODEMP} AND ISV.FILCTR = {FILCTR} AND ISV.NUMCTR = {NUMCTR}
    AND (
        (NFV.SITNFV = '1') OR (NFV.SITNFV = '2') OR
        (
            (NFV.SITNFV = '3') AND EXISTS (
                SELECT 1 FROM E140IDE
                WHERE E140IDE.CODEMP = NFV.CODEMP AND E140IDE.CODSNF = NFV.CODSNF
                AND E140IDE.NUMNFV = NFV.NUMNFV AND E140IDE.SITDOE NOT IN (8, 9)
            )
        )
    )
    UNION
    SELECT DISTINCT IPV.CPTFAT AS DATAFATURAMENTO
    FROM E140IPV IPV
    INNER JOIN E140NFV NFV
        ON NFV.CODEMP = IPV.CODEMP AND NFV.CODFIL = IPV.CODFIL
        AND NFV.NUMNFV = IPV.NUMNFV AND NFV.CODSNF = IPV.CODSNF
    WHERE IPV.CODEMP = {CODEMP} AND IPV.FILCTR = {FILCTR} AND IPV.NUMCTR = {NUMCTR}
    AND (
        (NFV.SITNFV = '1') OR (NFV.SITNFV = '2') OR
        (
            (NFV.SITNFV = '3') AND EXISTS (
                SELECT 1 FROM E140IDE
                WHERE E140IDE.CODEMP = NFV.CODEMP AND E140IDE.CODSNF = NFV.CODSNF
                AND E140IDE.NUMNFV = NFV.NUMNFV AND E140IDE.SITDOE NOT IN (8, 9)
            )
        )
    )
) COMPETENCIAS

Observação
Substitua os campos entre chaves com os valores desejados:

6.2 Parcelas Processadas corretas para os itens de serviço do contrato

SELECT COUNT(DISTINCT ISV.CPTFAT) AS PROPAR_CORRETO
FROM E140ISV ISV
INNER JOIN E140NFV NFV
    ON NFV.CODEMP = ISV.CODEMP AND NFV.CODFIL = ISV.CODFIL
    AND NFV.NUMNFV = ISV.NUMNFV AND NFV.CODSNF = ISV.CODSNF
WHERE ISV.CODEMP = {CODEMP} AND ISV.FILCTR = {FILCTR} AND ISV.NUMCTR = {NUMCTR}
AND ISV.DATCPT = {DATCPT} AND ISV.SEQCVS = {SEQCVS}
AND (
    (NFV.SITNFV = '1') OR (NFV.SITNFV = '2') OR
    (
        (NFV.SITNFV = '3') AND EXISTS (
            SELECT 1 FROM E140IDE
            WHERE E140IDE.CODEMP = NFV.CODEMP AND E140IDE.CODSNF = NFV.CODSNF
            AND E140IDE.NUMNFV = NFV.NUMNFV AND E140IDE.SITDOE NOT IN (8, 9)
        )
    )
)

Observação
Substitua os campos entre chaves com os valores desejados:

6.3 Parcelas Processadas corretas para os itens de produto do contrato

SELECT COUNT(DISTINCT IPV.CPTFAT) AS PROPAR_CORRETO
FROM E140IPV IPV
INNER JOIN E140NFV NFV
    ON NFV.CODEMP = IPV.CODEMP AND NFV.CODFIL = IPV.CODFIL
    AND NFV.NUMNFV = IPV.NUMNFV AND NFV.CODSNF = IPV.CODSNF
WHERE IPV.CODEMP = {CODEMP} AND IPV.FILCTR = {FILCTR} AND IPV.NUMCTR = {NUMCTR}
AND IPV.DATCPT = {DATCPT} AND IPV.SEQCVP = {SEQCVP}
AND (
    (NFV.SITNFV = '1') OR (NFV.SITNFV = '2') OR
    (
        (NFV.SITNFV = '3') AND EXISTS (
            SELECT 1 FROM E140IDE
            WHERE E140IDE.CODEMP = NFV.CODEMP AND E140IDE.CODSNF = NFV.CODSNF
            AND E140IDE.NUMNFV = NFV.NUMNFV AND E140IDE.SITDOE NOT IN (8, 9)
        )
    )
)

Observação
Substitua os campos entre chaves com os valores desejados:

7. Diagnóstico e correção das Parcelas Processadas de forma automatizada

O sistema disponibiliza uma ferramenta para diagnosticar inconsistências e/ou corrigir as Parcelas Processadas do contrato e seus itens, de forma automatizada, executando todos os comandos que foram expostos anteriormente.

7.1 Configurando a rotina

Na tela Manutenção dos parâmetros globais do sistema (F000PGS), configure o parâmetro CorCtrPro com os valores abaixo:

Valor Ação executada
N Não registrar nem corrigir
LL Apenas registrar as inconsistências em log
UPP Corrigir automaticamente os contratos
LL, UPP Registrar as inconsistências em log e corrigir automaticamente

Os valores para validar e corrigir as Parcelas Processadas durante o faturamento do contrato estão descritos no tópico 8. Validação e correção automática no faturamento do contrato.

Atenção!
O escopo do parâmetro é por empresa e filial, assim como a sua execução. Ou seja, ao executar a rotina para todos os contratos, serão verificados e corrigidos apenas os contratos da empresa/filial logada. Contratos do tipo 12 (logística) são excluídos do processamento.

7.2 Recomendações

Recomenda-se utilizar inicialmente apenas a opção "LL", para que o sistema registre todas as inconsistências e apresente um log em formato texto, que é gravado na pasta de Logs padrão (aquela definida no arquivo CFG).

O log deve ser analisado. Neste, serão gerados arquivos de texto separados para o Contrato, Produto e Serviço.

7.3 Log — Diagnóstico e/ou correção

O log representa o resultado da execução da rotina em dois possíveis cenários, conforme abaixo:

Em ambos os casos o sistema grava um arquivo de log na pasta de Logs padrão (aquela definida no arquivo CFG), com as inconsistências encontradas/corrigidas, desde que existam inconsistências.

Caso ocorra algum erro durante a execução da rotina, isso também é gravado no log.

As informações apresentadas no log dizem respeito às operações de diagnóstico/correção efetuadas pela rotina com base nos contratos analisados.

7.4 Log — Composição

O log é composto por arquivos de texto separados para Contrato, Produto e Serviço, com as seguintes nomenclaturas:

Cada arquivo conterá:

7.5 Executando a rotina

  1. Acesse a tela Contratos de Venda (F160NOV);
  2. No rodapé da tela, clique no botão Corrigir Parcelas Processadas;
    • Caso um contrato específico tenha sido carregado em tela, será exibida a seguinte pergunta: "Deseja executar a rotina para quais contratos?"
      • Atual: Corrige apenas o contrato carregado em tela desde que apresente inconsistências;
      • Todos: Corrige todos os contratos que apresentarem inconsistências.
    • Após a escolha, o sistema exibirá uma mensagem de confirmação. Se selecionado "Atual" anteriormente, será exibida a seguinte pergunta: "O sistema irá Corrigir o contrato atual. Deseja continuar?"
      • Sim: Executa o processo;
      • Não: Interrompe a execução.
    • Se selecionado "Todos" anteriormente, a seguinte pergunta será exibida: "O sistema irá Corrigir todos os contratos. Deseja continuar?"
      • Sim: Executa o processo;
      • Não: Interrompe a execução.

    Observação
    O botão Corrigir Parcelas Processadas só estará disponível caso o valor do parâmetro global CorCtrPro seja um dos valores permitidos, exceto "N - Não".

  3. Após a escolha, o sistema exibirá uma mensagem de confirmação, de acordo com o valor do parâmetro CorCtrPro:
    Parâmetro CorCtrProMensagem exibidaOpções exibidas
    Somente Logar (LL)O sistema irá logar o contrato atual ou todos. Qual operação deseja realizar?Logar, Nenhuma
    Somente Corrigir (UPP)O sistema irá corrigir o contrato atual ou todos. Qual operação deseja realizar?Corrigir, Nenhuma
    Logar e Corrigir (LL, UPP)O sistema irá corrigir e logar o contrato atual ou todos. Qual operação deseja realizar?Corrigir, Logar, Ambas, Nenhuma
    NNão habilita o botão na telaNenhuma opção exibida
  4. Após a confirmação, o sistema executa a rotina conforme a opção selecionada e exibe uma mensagem de resultado (Sucesso ou Erro). Quando a opção de log estiver ativa, a mensagem inclui a instrução "Verifique os Logs".

8. Validação e correção automática no faturamento do contrato

Além da correção pelo botão Corrigir Parcelas Processadas da tela Contratos de Venda (F160NOV), o sistema permite validar e/ou corrigir automaticamente o campo propar das tabelas E160CTR (dados gerais do contrato), E160CVP (itens de produto) e E160CVS (itens de serviço) durante o faturamento do contrato.

A validação pode ocorrer em dois momentos do processo de faturamento:

Dessa forma, as divergências nas Parcelas Processadas são tratadas no próprio fluxo de faturamento, sem depender de uma execução manual posterior.

8.1 Pré-requisitos

Antes de habilitar a automação, observe os mesmos cuidados da correção manual, descritos no tópico 4. Pré-requisito para execução da correção de Parcelas Processadas:

Atenção
Executar a correção com notas sem competência correta pode agravar a divergência em vez de corrigi-la. Valide a Competência Faturada das notas antes de ativar a correção automática.

8.2 Configurando a automação

A automação é controlada pelo parâmetro global CorCtrPro, configurado na tela Manutenção dos parâmetros globais do sistema (F000PGS). O escopo do parâmetro é por empresa e filial.

O parâmetro aceita a combinação de códigos que definem a ação a ser executada (avisar, corrigir ou interromper com erro) e o momento do faturamento em que ela ocorre (antes ou depois de processar).

8.3 Códigos para validação antes de processar o faturamento

Código Comportamento
APA Antes de Processar - Avisar: exibe uma mensagem de advertência informando que há inconsistência nas Parcelas Processadas, permitindo continuar, corrigir ou cancelar o processo.
APC Antes de Processar - Corrigir: corrige automaticamente as Parcelas Processadas antes de iniciar o faturamento.
APE Antes de Processar - Erro: interrompe o faturamento quando é encontrada inconsistência nas Parcelas Processadas.

8.4 Códigos para validação depois de processar o faturamento

Código Comportamento
DPA Depois de Processar - Avisar: exibe uma mensagem de advertência após o faturamento, permitindo continuar, corrigir ou cancelar.
DPC Depois de Processar - Corrigir: corrige automaticamente as Parcelas Processadas após a conclusão do faturamento, antes da efetivação no banco de dados.
DPE Depois de Processar - Erro: interrompe o processo quando é encontrada inconsistência nas Parcelas Processadas após o faturamento.

8.5 Combinando os códigos

É possível informar mais de um código no parâmetro, separados por vírgula, para validar tanto antes quanto depois do faturamento. Exemplos:

Observação
Não é permitido o uso da opção "N" em conjunto com as outras opções.

8.6 Funcionamento durante o faturamento

Com o parâmetro habilitado, no momento do faturamento o sistema:

  1. Lê o parâmetro global CorCtrPro;
  2. Identifica os códigos de validação (APA, APC ou APE para antes de processar e DPA, DPC ou DPE para depois de processar);
  3. Restringe a análise ao contrato que está sendo faturado (empresa, filial e número do contrato);
  4. Calcula o valor correto das Parcelas Processadas com base nas competências faturadas e saltadas e compara com o valor atual gravado nas tabelas E160CTR, E160CVP e E160CVS;
  5. Executa a ação conforme o código configurado:
    • Avisar: exibe a mensagem de inconsistência, com as opções Continuar, Corrigir ou Cancelar;
    • Corrigir: ajusta automaticamente o valor das Parcelas Processadas e registra o log da operação;
    • Erro: interrompe o faturamento informando a inconsistência nas parcelas processadas do contrato.

Observação
A mensagem com as opções Continuar, Corrigir e Cancelar é exibida apenas em execução interativa. Em execuções não interativas, por web service ou por rotinas automáticas/agendadas, a mensagem de confirmação não é apresentada.

8.7 Mensagem de inconsistência

Quando há divergência e o modo de aviso está ativo, o sistema apresenta a mensagem:

Consistência do parâmetro global CorCtrPro
Problema nas parcelas processadas do contrato.

Com as opções:

8.8 Recomendações

  1. Habilite inicialmente apenas o modo de aviso (APA e/ou DPA), para identificar as inconsistências sem alterar os dados;
  2. Analise os logs e confirme as divergências;
  3. Após validar, habilite a correção automática (APC e/ou DPC), para que o sistema ajuste as Parcelas Processadas no próprio fluxo de faturamento;
  4. Utilize o modo de erro (APE e/ou DPE) quando desejar impedir o faturamento enquanto houver divergência pendente.

Este artigo ajudou você?