ST_BLOQCLIENTETRANSFPEDIDO - Bloquear Cliente na Transferência entre Empresas
Tela de configuração: MFA001 — Parâmetros de Faturamento Localização: Parâmetros → Ambos → Opção 2 Tabela:
PARMFATUR.ST_BLOQCLIENTETRANSFPEDIDOTipo: Checkbox (S/N) Valor padrão:N(Desmarcado)
Telas impactadas
| Tela | Descrição | Impacto |
|---|---|---|
| MPD002 | Pedido de Venda | Bloqueia o campo Cliente (CD_PESSOA) quando o pedido é identificado como transferência entre empresas |
Campos envolvidos
| Campo | Tabela | Efeito |
|---|---|---|
CD_PESSOA | PEDIDO | Tornado somente leitura — não pode ser alterado após a detecção de transferência |
Opções disponíveis
S — Marcado (Bloqueia Cliente)
| O que faz | Detalhe |
|---|---|
| Bloqueia o campo Cliente | Quando o pedido é identificado como transferência entre empresas, o campo CD_PESSOA é travado para edição |
Independente de ST_TRANSFERENCIA | Funciona mesmo se ST_TRANSFERENCIA = 'N' |
| Comportamento | Torna edtCD_PESSOA ReadOnly, altera cor/fonte e remove TabStop |
Simulação passo a passo
- Acesse MFA001 → Parâmetros → Opção 2 e marque "Bloquear Cliente na Transferência entre Empresas [MPD002]".
- Salve os parâmetros (
<F9>ou botão Salvar). - Abra um Pedido de Venda na tela MPD002.
- Digite o número de um pedido e pressione
<Tab>para sair do campo. - Confirme "Sim" na pergunta "Este Pedido é uma Transferência entre Empresas?" — ou o sistema detecte automaticamente (matriz/filial pelo CNPJ).
- Observe que o campo Cliente fica travado (cor alterada, não recebe foco por
<Tab>).
Resultado esperado: O campo Cliente não pode ser alterado enquanto o pedido permanecer aberto. Isso evita que o operador troque o cliente em um pedido de transferência entre empresas.
Exceção / Importante: Ao salvar e reabrir o pedido, se
ST_TRANSFERENCIAEMPRESAS = 'S'no registro, o campo será bloqueado novamente automaticamente na abertura. Se o operador precisar alterar o cliente, é necessário desmarcar a transferência ou cancelar o pedido e criar um novo.
N — Desmarcado (Não Bloqueia Cliente por este Parâmetro)
| O que faz | Detalhe |
|---|---|
| Não bloqueia o campo Cliente por esta flag | O bloqueio passa a depender exclusivamente de ST_TRANSFERENCIA |
| Dependência | Se ST_TRANSFERENCIA for N, o campo Cliente ficará livre mesmo em transferências |
Simulação passo a passo
- Acesse MFA001 → Parâmetros → Opção 2 e mantenha desmarcado o checkbox.
- Salve os parâmetros.
- Abra um Pedido de Venda na tela MPD002.
- Digite o número de um pedido e confirme a transferência entre empresas.
- Com
ST_TRANSFERENCIA(configurado em MFA001 → Parâmetros → Opção 2) igual aN, o campo Cliente permanecerá editável.
Resultado esperado: O campo Cliente permanece livre para alteração, a menos que ST_TRANSFERENCIA esteja em S ou C (que possuem bloqueio próprio).
Regra de Bloqueio Combinada
O bloqueio do campo CD_PESSOA em MPD002 obedece à condição OR:
ST_TRANSFERENCIA = 'S' OU ST_TRANSFERENCIA = 'C' OU ST_BLOQCLIENTETRANSFPEDIDO = 'S'
ST_TRANSFERENCIA | ST_BLOQCLIENTETRANSFPEDIDO | Campo Cliente bloqueado? |
|---|---|---|
| N | N | Não |
| N | S | Sim |
| S | N | Sim (por ST_TRANSFERENCIA) |
| S | S | Sim (ambos) |
| C | N | Sim (por ST_TRANSFERENCIA) |
| C | S | Sim (ambos) |
ST_TRANSFERENCIA(configurado em MFA001 → Parâmetros → Opção 2) controla o comportamento geral de transferência entre empresas.ST_BLOQCLIENTETRANSFPEDIDOatua de forma independente para forçar o bloqueio do cliente.
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Linha | Descrição |
|---|---|---|---|
TdmMFA001.tabPARMFATURAfterInsert | UdmMFA001.pas | 587 | Atribui valor padrão 'N' ao campo |
TfrmMPD002.edtNR_PEDIDOExit | UMPD002.pas | 4296 | Verifica o parâmetro ao sair do campo de pedido |
TfrmMPD002.edtNR_PEDIDOExit | UMPD002.pas | 4313 | Re-verifica ao abrir pedido já marcado como transferência |
TdmMPD002.tabPEDIDOCD_PESSOAValidate | UdmMPD002.pas | 1814 | Verifica o parâmetro na validação do campo Cliente |
TdmMPD002.BuscaParametros_MPD002 | UdmMPD002.pas | 5756 | Carrega o parâmetro na lista ParmFatur |
Referências SQL diretas ao campo
Nenhuma procedure/view SQL em Scripts/ referencia diretamente a coluna ST_BLOQCLIENTETRANSFPEDIDO. O parâmetro é consumido exclusivamente nas rotinas Delphi listadas acima.