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 NULLValor 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ódulo | Código | Papel |
|---|---|---|
| Parâmetros de Faturamento | MFA001 | Tela onde o parâmetro é configurado (ComboBox Sim/Não) |
| Recebimento x Expedição de Produtos | MPD049 | Único consumidor — bloqueia seleção do cliente no romaneio quando há duplicatas em atraso |
Campos envolvidos
| Campo | Descrição |
|---|---|
PARMFATUR.ST_BLOQPESSOACARREG | O parâmetro em si (DOM_CHAR1, default 'N', NOT NULL). Valores: 'S' ou 'N' |
CREDITO.NR_MAIORVENC | Número de dias do maior vencimento em atraso do cliente (consultado via COALESCE(NR_MAIORVENC,0)) |
CREDITO.NR_DIASATRASO | Quantidade 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 faz | Detalhe |
|---|---|
| Regra geral | Ao 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âmetro | Em 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 cliente | Regularizar 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ções | Cliente inativo (PESSOA.ST_ATIVA = 'N') e outras regras do romaneio continuam ativas independentemente deste parâmetro. |
Simulação passo a passo
- MFA001 → aba "Parâmetros" → sub-aba "Faturamento" → sub-aba "Opção 1" → campo "Bloqueia Pessoa com Atrasos no Carregamento" = Sim
- Salve (F6)
- Garanta que o cliente A tenha duplicatas em atraso registradas em
CREDITOcomNR_MAIORVENC > NR_DIASATRASO(ex.:NR_MAIORVENC = 15,NR_DIASATRASO = 5) - Abra o MPD049 - Recebimento x Expedição de Produtos
- Inicie um novo romaneio e informe o cliente A no campo "Cliente"
- 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
- Regularize as duplicatas do cliente A (baixa em CONTAS) →
NR_MAIORVENCfica ≤NR_DIASATRASO - 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 faz | Detalhe |
|---|---|
| Regra geral | A 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ções | Ativação do cliente e validações seguintes (romaneio em aberto para o cliente, pedido vinculado, etc.) continuam executando normalmente. |
| Cenário típico | Empresas 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
- MFA001 → "Bloqueia Pessoa com Atrasos no Carregamento" = Não (default)
- Salve (F6)
- Abra o MPD049 e informe um cliente com duplicatas em atraso
- 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
| Valor | Nome | Consulta CREDITO | Comportamento com atraso (NR_MAIORVENC > NR_DIASATRASO) | Mensagem exibida |
|---|---|---|---|---|
| S | Sim (bloqueia) | Sim | Aborta digitação do cliente no MPD049 | "A Pessoa (cd - nome) Possui Duplicatas Pendentes em Atraso!" |
| N | Não (default) | Não | Permite cliente normalmente | — |
Referências no Código Fonte
Tela MFA001 (definição do parâmetro)
source/MFA001/UdmMFA001.pas:147— declaração do TFieldtabPARMFATURST_BLOQPESSOACARREG: TStringFieldsource/MFA001/UdmMFA001.pas:500—tabPARMFATURST_BLOQPESSOACARREG.AsString := 'N';(valor default noAfterInsert)source/MFA001/UdmMFA001.dfm:152— coluna do SELECT principal databPARMFATURsource/MFA001/UdmMFA001.dfm:1194-1199— definição do TField (FieldNameST_BLOQPESSOACARREG, Size 1, FixedChar)source/MFA001/UdmMFA001.dfm:2384— coluna no INSERT databPARMFATURsource/MFA001/UdmMFA001.dfm:2544— parâmetro:ST_BLOQPESSOACARREGno INSERTsource/MFA001/UdmMFA001.dfm:2760— cláusula do UPDATE databPARMFATURsource/MFA001/UdmMFA001.dfm:3032— coluna no SELECT de releiturasource/MFA001/UMFA001.pas:249—cmbST_BLOQPESSOACARREG: TwwDBComboBox;source/MFA001/UMFA001.dfm:2562-2575—TLabel Label20com 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→SNão→N
Consumo do parâmetro
source/MPD049/UdmMPD049.pas:246-247— declaração do campo de cacheiST_BLOQPESSOACARREG: Stringna seção public deTdmMPD049source/MPD049/UdmMPD049.pas:293-320— procedureBusca_Parametroscarrega o parâmetro daPARMFATURe armazena emdmMPD049.iST_BLOQPESSOACARREG := Resultado[2]source/MPD049/UdmMPD049.pas:617-632— validação emtabEMPRESACD_PESSOAValidate: quandoiST_BLOQPESSOACARREG = 'S', consultaCREDITO(NR_MAIORVENC,NR_DIASATRASO) e dispararaise JException.Create('W-0000', ['A Pessoa (cd - nome) Possui Duplicatas Pendentes em Atraso!'])seNR_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.