Pular para o conteúdo principal

ST_BLOQPESSOACARREG - Bloqueia Pessoa com Atrasos no Carregamento

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → aba Parâmetros → sub-aba Faturamento → sub-aba Opção 1 → campo "Bloqueia Pessoa com Atrasos no Carregamento" Tabela: PARMFATUR.ST_BLOQPESSOACARREG — DOM_CHAR1 DEFAULT 'N' NOT NULL Valor padrão: N (Não bloqueia)

Este parâmetro controla se o módulo de Recebimento x Expedição de Produtos (MPD049) deve bloquear a pessoa (cliente) que possui duplicatas em atraso no momento em que ela é informada no romaneio de carregamento.

A regra é aplicada no evento de validação do campo CD_PESSOA da tabela EMPRESA dentro do MPD049: se o parâmetro estiver ligado e o cliente tiver o maior vencimento de duplicata em atraso maior que o número de dias de atraso configurado em CREDITO, o sistema aborta a digitação com a mensagem "A Pessoa (X - Nome) Possui Duplicatas Pendentes em Atraso!".

O parâmetro não é consultado por stored procedures — toda a lógica mora no código Delphi do consumidor.

Telas impactadas​

MóduloCódigoPapel
Parâmetros de FaturamentoMFA001Tela onde o parâmetro é configurado (ComboBox Sim/Não)
Recebimento x Expedição de ProdutosMPD049Único consumidor — bloqueia seleção do cliente no romaneio quando há duplicatas em atraso

Campos envolvidos​

CampoDescrição
PARMFATUR.ST_BLOQPESSOACARREGO parâmetro em si (DOM_CHAR1, default 'N', NOT NULL). Valores: 'S' ou 'N'
CREDITO.NR_MAIORVENCNúmero de dias do maior vencimento em atraso do cliente (consultado via COALESCE(NR_MAIORVENC,0))
CREDITO.NR_DIASATRASOQuantidade de dias de tolerância antes de considerar atraso (consultado via COALESCE(NR_DIASATRASO,0))
EMPRESA.CD_PESSOA (via tabEMPRESA do MPD049)Cliente que está sendo informado no romaneio — valor validado

Opções disponíveis​

S - Sim (bloqueia pessoa com atraso no carregamento)​

O que fazDetalhe
Regra geralAo informar o CD_PESSOA no romaneio do MPD049, o sistema consulta a tabela CREDITO para a empresa/cliente e compara NR_MAIORVENC com NR_DIASATRASO. Se NR_MAIORVENC > NR_DIASATRASO, dispara raise JException.Create('W-0000', ['A Pessoa (cd - nome) Possui Duplicatas Pendentes em Atraso!']).
Ponto de consumo (UdmMPD049.pas:617-632)Dentro de tabEMPRESACD_PESSOAValidate, após validar a existência/ativação do cliente (PESSOA.ST_ATIVA), entra no IF if (Trim(iST_BLOQPESSOACARREG) = 'S') then e executa o SELECT em CREDITO.
Cache do parâmetroEm UdmMPD049.pas:293-320, a procedure global Busca_Parametros lê o parâmetro via SELECT ... ST_BLOQPESSOACARREG ... FROM PARMFATUR WHERE CD_EMPRESA = ... e grava em dmMPD049.iST_BLOQPESSOACARREG. A validação usa essa variável em memória — não relê o banco a cada digitação.
Fluxo para liberar o clienteRegularizar as duplicatas em atraso do cliente (baixa/renegociação em CONTAS) de modo que NR_MAIORVENC fique menor ou igual a NR_DIASATRASO.
Demais validaçõesCliente inativo (PESSOA.ST_ATIVA = 'N') e outras regras do romaneio continuam ativas independentemente deste parâmetro.

Simulação passo a passo​

  1. MFA001 → aba "Parâmetros" → sub-aba "Faturamento" → sub-aba "Opção 1" → campo "Bloqueia Pessoa com Atrasos no Carregamento" = Sim
  2. Salve (F6)
  3. Garanta que o cliente A tenha duplicatas em atraso registradas em CREDITO com NR_MAIORVENC > NR_DIASATRASO (ex.: NR_MAIORVENC = 15, NR_DIASATRASO = 5)
  4. Abra o MPD049 - Recebimento x Expedição de Produtos
  5. Inicie um novo romaneio e informe o cliente A no campo "Cliente"
  6. Resultado: o sistema exibe a mensagem "A Pessoa (A - Nome do Cliente) Possui Duplicatas Pendentes em Atraso!" e não aceita o cliente no romaneio
  7. Regularize as duplicatas do cliente A (baixa em CONTAS) → NR_MAIORVENC fica ≤ NR_DIASATRASO
  8. Repita a digitação no MPD049 — o cliente agora é aceito normalmente

Resultado esperado: o romaneio de carregamento só pode ser emitido para clientes adimplentes conforme a tolerância configurada em CREDITO.


N - Não (não bloqueia — valor padrão)​

O que fazDetalhe
Regra geralA tabela CREDITO não é consultada para fins de bloqueio. O IF if (Trim(iST_BLOQPESSOACARREG) = 'S') then em UdmMPD049.pas:617 avalia como falso e pula todo o bloco de SELECT + raise.
Demais validaçõesAtivação do cliente e validações seguintes (romaneio em aberto para o cliente, pedido vinculado, etc.) continuam executando normalmente.
Cenário típicoEmpresas que não usam o controle de duplicatas em atraso como trava no carregamento, ou que usam o bloqueio por outro canal (ex.: bloqueio de pedido na tela de venda — ST_BLOQUEIOPED).

Simulação passo a passo​

  1. MFA001 → "Bloqueia Pessoa com Atrasos no Carregamento" = Não (default)
  2. Salve (F6)
  3. Abra o MPD049 e informe um cliente com duplicatas em atraso
  4. Resultado: o cliente é aceito normalmente — o fluxo segue para a escolha de produto, placa, peso etc.

Resultado esperado: o romaneio aceita qualquer cliente ativo, sem consultar a situação financeira em CREDITO.


Interação com outros parâmetros​

  • ST_BLOQUEIOPED: bloqueia a criação do pedido (não o romaneio). Atua em outro ponto do fluxo e é ortogonal — uma empresa pode ligar só um, só o outro, ambos ou nenhum.
  • ST_BLOQUEIAORDEMCARREG (ver parâmetro): bloqueia a emissão de NF a partir de uma Ordem de Carregamento ainda não liberada. Trata de liberação comercial da ordem, não da situação financeira do cliente.

Tabela Comparativa Resumida​

ValorNomeConsulta CREDITOComportamento com atraso (NR_MAIORVENC > NR_DIASATRASO)Mensagem exibida
SSim (bloqueia)SimAborta digitação do cliente no MPD049"A Pessoa (cd - nome) Possui Duplicatas Pendentes em Atraso!"
NNão (default)NãoPermite cliente normalmente—

Referências no Código Fonte​

Tela MFA001 (definição do parâmetro)​

  • source/MFA001/UdmMFA001.pas:147 — declaração do TField tabPARMFATURST_BLOQPESSOACARREG: TStringField
  • source/MFA001/UdmMFA001.pas:500 — tabPARMFATURST_BLOQPESSOACARREG.AsString := 'N'; (valor default no AfterInsert)
  • source/MFA001/UdmMFA001.dfm:152 — coluna do SELECT principal da tabPARMFATUR
  • source/MFA001/UdmMFA001.dfm:1194-1199 — definição do TField (FieldName ST_BLOQPESSOACARREG, Size 1, FixedChar)
  • source/MFA001/UdmMFA001.dfm:2384 — coluna no INSERT da tabPARMFATUR
  • source/MFA001/UdmMFA001.dfm:2544 — parâmetro :ST_BLOQPESSOACARREG no INSERT
  • source/MFA001/UdmMFA001.dfm:2760 — cláusula do UPDATE da tabPARMFATUR
  • source/MFA001/UdmMFA001.dfm:3032 — coluna no SELECT de releitura
  • source/MFA001/UMFA001.pas:249 — cmbST_BLOQPESSOACARREG: TwwDBComboBox;
  • source/MFA001/UMFA001.dfm:2562-2575 — TLabel Label20 com caption "Bloqueia Pessoa com Atrasos no Carregamento"
  • source/MFA001/UMFA001.dfm:3380-3406 — definição do ComboBox (DataField = 'ST_BLOQPESSOACARREG', DataSource = dmMFA001.dsPARMFATUR) com os 2 itens:
    • Sim → S
    • Não → N

Consumo do parâmetro​

  • source/MPD049/UdmMPD049.pas:246-247 — declaração do campo de cache iST_BLOQPESSOACARREG: String na seção public de TdmMPD049
  • source/MPD049/UdmMPD049.pas:293-320 — procedure Busca_Parametros carrega o parâmetro da PARMFATUR e armazena em dmMPD049.iST_BLOQPESSOACARREG := Resultado[2]
  • source/MPD049/UdmMPD049.pas:617-632 — validação em tabEMPRESACD_PESSOAValidate: quando iST_BLOQPESSOACARREG = 'S', consulta CREDITO (NR_MAIORVENC, NR_DIASATRASO) e dispara raise JException.Create('W-0000', ['A Pessoa (cd - nome) Possui Duplicatas Pendentes em Atraso!']) se NR_MAIORVENC > NR_DIASATRASO

DDL​

  • docs/schema/tables/PARMFATUR.sql:109 — ST_BLOQPESSOACARREG DOM_CHAR1 DEFAULT 'N' NOT NULL

Procedures impactadas​

Nenhuma. O parâmetro é consumido apenas no código Delphi do MPD049 — grep por ST_BLOQPESSOACARREG em Scripts/ retorna vazio.