Pular para o conteúdo principal

Tipo do Limite de Crédito

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Notas Fiscais → Parâmetros de Notas → Limite de Crédito Tabela: PARMFATUR.TP_LIMITECREDITO Valor padrão: N (Por Empresa)

Define o escopo de controle do limite de crédito das pessoas (clientes): se cada empresa do grupo possui seu próprio limite independente (N - Por Empresa) ou se o limite é único e compartilhado entre todas as empresas que também possuem TP_LIMITECREDITO = 'S' (S - Global). Afeta a gravação/replicação dos registros nas tabelas CREDITO, CREDITOGRUPO e CREDITOPERIODICO, além da lógica de verificação de duplicatas atrasadas no bloqueio de crédito.

Telas impactadas​

MóduloCódigoDescriçãoReferência no código
Parâmetros de FaturamentoMFA001Tela de configuração do parâmetro (ComboBox cmbTP_LIMITECREDITO)source/MFA001/UMFA001.dfm:6674
Limite de Crédito por PessoaTFA002Ao salvar limite de crédito por pessoa/grupo, replica para demais empresas com limite Globalsource/TFA002/UTFA002.pas:351, 709, 779; source/TFA002/UdmTFA002.pas:511, 686, 1334, 1433
Crédito PeriódicoTFA063Ao gravar crédito periódico, replica para demais empresas quando Globalsource/TFA063/UdmTFA063.pas:144
Cadastro de PessoaCPD009SELECT/INSERT/UPDATE de PARMFATUR via query internasource/CPD009/UdmCPD009.dfm:384, 480, 550
Integração ESTABILRCA006SELECT/INSERT/UPDATE de PARMFATUR via query internasource/RCA006/UdmRCA006.dfm:3133, 3229, 3299

Procedures impactadas​

ObjetoArquivoTipoDescrição
VERIFICA_CREDITOScripts/VERIFICA_CREDITO.sqlProcedureValida limite de crédito na emissão de pedidos/NFs. Se Global (S), zera CD_EMPRESA ao contar duplicatas liquidadas após 10 dias
VERIFICA_BLOQUEIOScripts/VERIFICA_BLOQUEIO.sqlProcedureValidação central de bloqueio no faturamento. Lê TP_LIMITECREDITO junto com demais parâmetros da PARMFATUR (linha 143) e zera CD_EMPRESA ao verificar duplicatas atrasadas quando Global (linha 846)
GERA_CREDITOScripts/GERA_CREDITO.sqlProcedureConsolida informações de crédito da pessoa. Se Global, desconsidera CD_EMPRESA na busca da CREDITO
VIEW_CREDITO_ESTABILScripts/VIEW_CREDITO_ESTABIL.sqlProcedureIntegração ESTABIL → ERP. Filtra por PARMFATUR.TP_LIMITECREDITO = 'S' para replicar entre empresas Globais
VIEW_CREDITOPESSOAScripts/VIEW_CREDITOPESSOA.sqlView (Procedure)Retorna dados de crédito da pessoa respeitando o escopo (Global/Empresa)
TRGAI_PESSOAScripts/TRGAI_PESSOA.sqlTriggerAFTER INSERT em PESSOA. Se Global, cria registros em CREDITO para todas as empresas com TP_LIMITECREDITO = 'S'
TRGAIUD_CONTASScripts/TRGAIUD_CONTAS.sqlTriggerAFTER INSERT/UPDATE/DELETE em CONTAS. Atualiza DT_REGISTRO de CREDITO sem filtrar por CD_EMPRESA quando Global
CREDITOPERIODICO_AI0Scripts/CREDITOPERIODICO_AI0.sqlTriggerAFTER INSERT em CREDITOPERIODICO. Se Global, replica para as demais empresas com TP_LIMITECREDITO = 'S'
CREDITOPERIODICOGRUPO_AI0Scripts/CREDITOPERIODICOGRUPO_AI0.sqlTriggerAFTER INSERT em CREDITOPERIODICOGRUPO. Mesma lógica da CREDITOPERIODICO_AI0 para o grupo

Campos envolvidos​

TabelaCampoObservação
PARMFATURTP_LIMITECREDITOParâmetro (S/N) por empresa
CREDITOCD_EMPRESA, CD_PESSOA, VL_CREDITO, VL_CREDITOACUM, NR_DIASATRASODados de crédito da pessoa. Quando Global, replicado em todas empresas Globais
CREDITOGRUPOCD_EMPRESA, CD_PESSOA, VL_CREDITO, ...Dados de crédito por grupo. Mesma lógica de replicação
CREDITOPERIODICOCD_EMPRESA, CD_PESSOA, DT_INICIAL, DT_FINAL, ...Limite por período, replica se Global
CREDITOPERIODICOGRUPOidemidem ao anterior, para grupo
PARTICIPANTELIMITECREDITOCD_EMPRESA, CD_PESSOA, CD_PARTICIPANTE, CD_EMPRPARTICIPANTEParticipantes do grupo de limite
CONTASCD_EMPRESA, CD_PESSOA, DT_LIQUIDACAO, DT_VENCIMENTO, ST_CONTAS, TP_CONTASUsada no cálculo de duplicatas atrasadas

Opções disponíveis​

N - Por Empresa (padrão)​

O que fazDetalhe
Cada empresa possui seu próprio limite de crédito por pessoaLimites e saldo são isolados por CD_EMPRESA
Gravação da TFA002Somente grava CREDITO da empresa logada, sem replicar
VERIFICA_CREDITO / VERIFICA_BLOQUEIOMantém filtro CONTAS.CD_EMPRESA = :V_CD_EMPRESA ao contar duplicatas liquidadas atrasadas
Trigger TRGAI_PESSOAAo criar pessoa, não replica registro de CREDITO para outras empresas
Trigger TRGAIUD_CONTASAtualiza CREDITO.DT_REGISTRO filtrando por CD_EMPRESA = NEW.CD_EMPRESA
Integração ESTABILVIEW_CREDITO_ESTABIL só processa quando empresa tem Global (S), portanto em N não participa da consolidação

Simulação passo a passo​

  1. No MFA001, aba Opção 1, campo Limite de Crédito = Por Empresa.
  2. Na TFA002, inclua limite para a pessoa João na empresa 1: VL_CREDITO = 5.000,00.
  3. Troque para empresa 2 e informe para a mesma pessoa João um limite diferente: VL_CREDITO = 2.000,00.
  4. Ao emitir pedido na empresa 1, VERIFICA_CREDITO consulta CREDITO somente da empresa 1 (limite 5.000). Na empresa 2, consulta somente empresa 2 (limite 2.000).
  5. Duplicatas liquidadas atrasadas são contadas somente da empresa corrente.

Resultado esperado: limites independentes por empresa. O cadastro de CREDITO em uma empresa não replica para as outras.


S - Global​

O que fazDetalhe
O limite de crédito é compartilhado entre as empresas marcadas como GlobaisGravações da TFA002 são replicadas para todas as empresas com PARMFATUR.TP_LIMITECREDITO = 'S'
Gravação da TFA002Após post do CREDITO/CREDITOGRUPO, faz UPDATE OR INSERT em todas as demais empresas Globais (source/TFA002/UTFA002.pas:709-742, 779-812, UdmTFA002.pas:516-540, 1339-1363)
VERIFICA_CREDITOAo contar duplicatas liquidadas atrasadas, zera V_CD_EMPRESA = NULL → conta em todas as empresas
VERIFICA_BLOQUEIOMesma lógica: IF (V_TP_LIMITECREDITO = 'S') THEN V_CD_EMPRESA = NULL (linha 846) antes do COUNT na CONTAS
Trigger TRGAI_PESSOAAo inserir pessoa na empresa Global, insere CREDITO para todas as empresas Globais com os valores padrão do PARMFATUR
Trigger TRGAIUD_CONTASAtualiza CREDITO.DT_REGISTRO para todas as ocorrências da pessoa (sem filtro de CD_EMPRESA)
Triggers CREDITOPERIODICO_AI0 / CREDITOPERIODICOGRUPO_AI0Quando a DT_REGISTRO = '01.01.2000 00:00:00' (marcação da TFA002), replicam o registro para as demais empresas Globais
Integração ESTABIL (VIEW_CREDITO_ESTABIL)Só processa contas de empresas com TP_LIMITECREDITO = 'S' (Global)
Interface TFA002Label lblCD_COLCSVEMPRESA fica em estilo Bold quando N; quando S, o campo empresa vira read-only e ganha estilo cinza (source/TFA002/UTFA002.pas:351-361)

Simulação passo a passo​

  1. No MFA001, aba Opção 1, campo Limite de Crédito = Global, tanto para empresa 1 quanto empresa 2.
  2. Na TFA002, inclua limite para a pessoa João: VL_CREDITO = 5.000,00 na empresa 1.
  3. Ao salvar, o código de btnSalvarClick (UTFA002.pas:709) detecta TP_LIMITECREDITO = 'S' e executa UPDATE OR INSERT INTO CREDITO para todas as empresas Globais (empresa 2 também passa a ter limite 5.000,00).
  4. Ao emitir pedido na empresa 2, VERIFICA_CREDITO procura duplicatas liquidadas atrasadas sem filtrar por CD_EMPRESA (V_CD_EMPRESA = NULL) → soma duplicatas de todas as empresas.
  5. Se uma nova pessoa for inserida na PESSOA, a trigger TRGAI_PESSOA cria automaticamente registros em CREDITO para empresa 1 e empresa 2, com os valores VL_CREDITO, VL_CREDITOACUM e NR_DIASATRASO copiados do PARMFATUR da empresa Global logada.

Resultado esperado: limite único e saldo consolidado entre empresas Globais. Alterações/inclusões propagam-se automaticamente. Empresas com TP_LIMITECREDITO = 'N' ficam fora da consolidação, mesmo coexistindo no mesmo banco.


Tabela Comparativa Resumida​

AspectoN - Por Empresa (padrão)S - Global
Escopo do limiteIsolado por empresaCompartilhado entre empresas Globais
TFA002 ao salvarGrava só na empresa correnteReplica para demais empresas Globais
Trigger TRGAI_PESSOASó insere CREDITO da empresa logadaInsere CREDITO para todas as empresas Globais
TRGAIUD_CONTASUPDATE CREDITO WHERE CD_EMPRESA = ...UPDATE CREDITO WHERE CD_PESSOA = ... (sem CD_EMPRESA)
Duplicatas atrasadas na VERIFICA_CREDITO/VERIFICA_BLOQUEIOSó da empresa correnteSoma de todas as empresas (CD_EMPRESA = NULL)
CREDITOPERIODICO_AI0 / CREDITOPERIODICOGRUPO_AI0Não replicaReplica para demais empresas Globais
Integração VIEW_CREDITO_ESTABILNão entra na consolidaçãoParticipa
UI TFA002 - campo empresaEditávelRead-only, cinza

Referências no Código Fonte​

Delphi​

ArquivoLinhasFunção
source/MFA001/UMFA001.dfm6032, 6674-6700ComboBox cmbTP_LIMITECREDITO com Items.Strings = ('Por Empresa'#9'N', 'Global'#9'S')
source/MFA001/UdmMFA001.pas82, 460Declaração tabPARMFATURTP_LIMITECREDITO: TStringField; valor padrão no AfterInsert: := 'N'
source/MFA001/UMFA001.pas381Declaração do componente cmbTP_LIMITECREDITO no Form
source/TFA002/UTFA002.pas351, 709, 779, 1152Ajuste de UI (label bold); replicação de CREDITO e CREDITOGRUPO entre empresas Globais; filtro por TP_LIMITECREDITO = 'S' na validação de participantes
source/TFA002/UdmTFA002.pas511-540, 686-715, 1334-1363, 1433+tabCREDITOBeforePost, tabPERIODOBeforePost, tabCREDITOGRUPOBeforePost, tabPERIODOGRUPOBeforePost - replicam para demais empresas Globais
source/TFA063/UdmTFA063.pas144-170tabCREDITOBeforePost - ao mudar crédito periódico com Global, atualiza CREDITO de todas as demais empresas
source/RCA006/UdmRCA006.dfm3133, 3229, 3299Query INSERT/UPDATE/SELECT incluindo TP_LIMITECREDITO para sincronizar parâmetros
source/CPD009/UdmCPD009.dfm384, 480, 550Query INSERT/UPDATE/SELECT de PARMFATUR incluindo TP_LIMITECREDITO

SQL (Scripts)​

ArquivoLinhasFunção
Scripts/VERIFICA_CREDITO.sql19, 75-82Lê TP_LIMITECREDITO; se 'S', V_CD_EMPRESA = null antes de contar duplicatas atrasadas
Scripts/VERIFICA_BLOQUEIO.sql25, 143-152, 725, 846-849Lê TP_LIMITECREDITO junto com demais parâmetros; usa no bloco de participantes (V_ST_PARTICIPANTEGRUPO IS NULL AND V_TP_LIMITECREDITO = 'S') e ao zerar V_CD_EMPRESA para contar duplicatas liquidadas atrasadas
Scripts/GERA_CREDITO.sql14, 26-40Lê TP_LIMITECREDITO; se 'S', ignora filtro CD_EMPRESA em CREDITO
Scripts/VIEW_CREDITO_ESTABIL.sql22-26Só processa empresa com TP_LIMITECREDITO = 'S'
Scripts/VIEW_CREDITOPESSOA.sql23, 35-41Retorna dados de CREDITO da pessoa respeitando o escopo (Global/Empresa)
Scripts/TRGAI_PESSOA.sql7, 17-31, 25AFTER INSERT em PESSOA: se Global, insere CREDITO para todas as empresas Globais
Scripts/TRGAIUD_CONTAS.sql9, 87-102AFTER INSERT/UPDATE/DELETE em CONTAS: se Global atualiza CREDITO.DT_REGISTRO sem filtro de empresa
Scripts/CREDITOPERIODICO_AI0.sql7, 16-35AFTER INSERT em CREDITOPERIODICO: se Global, replica o registro para demais empresas Globais
Scripts/CREDITOPERIODICOGRUPO_AI0.sql7, 16-35AFTER INSERT em CREDITOPERIODICOGRUPO: mesma replicação para grupo