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:
- É faturada: gerada em nota fiscal com situação válida; ou
- É saltada: descartada intencionalmente sem faturamento, registrando uma observação de controle em E160OBS.
2. Problemas nas Parcelas Processadas do contrato
Erros no campo propar podem causar:
- Faturamento duplicado de competências já processadas;
- Bloqueio do faturamento de competências ainda não processadas;
- Informações incorretas em relatórios e controles de faturamento de contratos.
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:
- propar: quantidade de competências processadas atualmente gravada no contrato/item.
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:
- Parcelas Processadas Corretas = Competências Faturadas + Competências Saltadas
- Competências Faturadas: COUNT de competências distintas (CPTFAT) em notas fiscais com situação válida — SITNFV=1 (digitada), SITNFV=2 (fechada) ou SITNFV=3 com cancelamento não autorizado pela SEFAZ (SITDOE NOT IN (8, 9)).
- Competências Saltadas: COUNT de registros em E160OBS com TIPOBS='A' e texto contendo #CTRL_SLT ou saltad, filtrados pelo item e competência específica.
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:
- CodEmp: Código da empresa do contrato;
- FilCtr: Filial do contrato;
- NumCtr: Número do contrato.
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:
- CodEmp: Código da empresa do contrato;
- FilCtr: Filial do contrato;
- NumCtr: Número do contrato;
- DatCpt: Data de competência do item de serviço do contrato;
- SeqCvs: Sequência do item de serviço do contrato.
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:
- CodEmp: Código da empresa do contrato;
- FilCtr: Filial do contrato;
- NumCtr: Número do contrato;
- DatCpt: Data de competência do item de produto do contrato;
- SeqCvp: Sequência do item de produto do contrato.
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:
- Quando o parâmetro global CorCtrPro possui apenas a opção "LL" sozinha, o log apresenta as Parcelas Processadas atuais e as corretas, para que essas possam ser conferidas antes de executar a correção da base de dados;
- Quando o parâmetro global CorCtrPro possuir a opção "LL" em conjunto com a opção "UPP", o log apresenta as Parcelas Processadas atuais e as corretas, que foram aplicadas na base de dados.
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:
- CONTRATO_PROPAR - CONTRATO - DATA — Exemplo: CONTRATO_PROPAR - CONTRATO - 09-05-2025.LOG
- CONTRATO_PROPAR - PRODUTO - DATA — Exemplo: CONTRATO_PROPAR - PRODUTO - 09-05-2025.LOG
- CONTRATO_PROPAR - SERVICO - DATA — Exemplo: CONTRATO_PROPAR - SERVICO - 09-05-2025.LOG
Cada arquivo conterá:
- Os "Dados do Contrato", conforme abaixo:
- Empresa: Empresa do contrato analisado;
- Filial: Filial do contrato analisado;
- Número: Número do contrato analisado.
- As "Parcelas Processadas Atuais":
- Data da Competência: data de competência do item (somente nos logs de item);
- Sequência: sequência do item (somente nos logs de item);
- ProPar Atual: valor de Parcelas Processadas atualmente gravado.
- As "Parcelas Processadas Corretas":
- ProPar Correto: valor correto calculado pela rotina (competências faturadas + competências saltadas).
7.5 Executando a rotina
- Acesse a tela Contratos de Venda (F160NOV);
- 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". - Caso um contrato específico tenha sido carregado em tela, será exibida a seguinte pergunta: "Deseja executar a rotina para quais contratos?"
- Após a escolha, o sistema exibirá uma mensagem de confirmação, de acordo com o valor do parâmetro CorCtrPro:
Parâmetro CorCtrPro Mensagem exibida Opçõ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 N Não habilita o botão na tela Nenhuma opção exibida - 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:
- Antes de processar o faturamento;
- Depois de processar o 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:
- Garanta que todas as notas fiscais vinculadas ao contrato possuam a Competência Faturada (CptFat) preenchida corretamente. A rotina recalcula o propar com base nas competências faturadas; notas sem competência ou com competência incorreta podem gerar divergência no valor calculado;
- Inicie sempre no modo de aviso, analise as inconsistências encontradas e só então habilite a correção automática.
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:
- APA: apenas avisa antes de processar;
- APC,DPC: corrige automaticamente antes e depois de processar;
- APA,DPE: avisa antes de processar e interrompe com erro depois de processar;
- N: não valida (automação desabilitada).
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:
- Lê o parâmetro global CorCtrPro;
- Identifica os códigos de validação (APA, APC ou APE para antes de processar e DPA, DPC ou DPE para depois de processar);
- Restringe a análise ao contrato que está sendo faturado (empresa, filial e número do contrato);
- 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;
- 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:
- Continuar: prossegue o faturamento registrando o log da inconsistência, sem alterar a base de dados;
- Corrigir: corrige as Parcelas Processadas, registra o log e prossegue o faturamento;
- Cancelar: cancela o processo.
8.8 Recomendações
- Habilite inicialmente apenas o modo de aviso (APA e/ou DPA), para identificar as inconsistências sem alterar os dados;
- Analise os logs e confirme as divergências;
- 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;
- Utilize o modo de erro (APE e/ou DPE) quando desejar impedir o faturamento enquanto houver divergência pendente.
English
Español
English
Español


