ST_COBRANCAAUTOFRETE - Cobrança Automática de Frete
Tela de configuração: MFA001 — Parâmetros de Faturamento Localização: aba Pedidos / O.S. Tabela:
PARMFATUR.ST_COBRANCAAUTOFRETE(CHAR(1)) Valor padrão:N(Não) Controle: ComboBoxcmbST_COBRANCAAUTOFRETE
Telas impactadas
| Tela | Rotina | Efeito |
|---|---|---|
| MPD002 — Pedidos de Venda | iniciar, btnSalvarClick | Campo de frete fica somente leitura; frete calculado automaticamente ao salvar |
| MNF002 — Nota Fiscal | carrega_Nota, Consulta_Pedidos | Campo de frete fica somente leitura; frete recalculado ao carregar pedido |
| MNF002 — Nota Fiscal | CalculaFreteAutomatico | Executa cálculo/_rateio do frete |
| TFA001 — Cadastro de Pessoas | iniciar | Exibe/oculta campos de frete no cadastro |
| TFA001 — Cadastro de Pessoas | tabPESSOABeforePost | Valida percentual de frete ≤ 100% |
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
ST_COBRANCAAUTOFRETE | PARMFATUR | Habilita/desabilita cobrança automática de frete |
TP_VALORFRETE | PARMFATUR | Tipo do frete: P (Percentual) ou V (Valor Fixo) — configurado na mesma aba |
VL_FRETE | PARMFATUR | Valor ou percentual do frete padrão — configurado na mesma aba |
VL_FRETEISENTO | PARMFATUR | Valor mínimo de faturamento para isenção de frete — configurado na mesma aba |
TP_VALORFRETE | PESSOA | Tipo do frete específico da pessoa (sobrescreve PARMFATUR) |
VL_FRETE | PESSOA | Valor do frete específico da pessoa |
VL_FRETEISENTO | PESSOA | Valor de isenção específico da pessoa |
Opções disponíveis
S — Sim (Cobrança automática de frete)
| O que faz | Detalhe |
|---|---|
| Habilita cálculo automático de frete | Ao gerar pedido ou NF a partir de pedido, o frete é calculado e rateado automaticamente |
| Campo de frete bloqueado | O campo VL_FRETE em Pedidos e NF torna-se somente leitura |
| Campos de frete visíveis no cadastro de pessoa | Exibe TP_VALORFRETE, VL_FRETE e VL_FRETEISENTO em TFA001 |
| Validação de percentual | Ao salvar pessoa com frete percentual, bloqueia valor > 100% |
| Isenção por valor | Pedidos com valor líquido abaixo do limite de isenção ficam sem frete |
Simulação passo a passo
- Acesse MFA001 → aba Pedidos / O.S. e configure
Isento a partir decomo Sim. - Defina o Tipo do Frete (
% s/ FaturamentoouValor Fixo), o Valor do Frete (ex.: R$ 15,00) e o Valor de Isenção (ex.: R$ 500,00). - Abra TFA001 — Cadastro de Pessoas e confirme que os campos de frete estão visíveis na aba Dados Adicionais.
- No cadastro de um cliente, defina frete personalizado (ex.:
Valor Fixo/ R$ 10,00) ou deixe em branco para usar o padrão de PARMFATUR. - Crie um Pedido de Venda (MPD002) para esse cliente com valor líquido de R$ 300,00 (abaixo de R$ 500,00).
- Ao salvar o pedido, o sistema calcula: como R$ 300,00
<R$ 500,00 (isenção), o frete será R$ 0,00. - Crie outro pedido com valor líquido de R$ 600,00. O sistema calcula: R$ 600,00
>=R$ 500,00, então aplica o frete do cliente (R$ 10,00 fixo). - Gere uma NF (MNF002) a partir desse pedido — o campo de frete aparecerá preenchido automaticamente e travado para edição.
Resultado esperado: Frete calculado e preenchido automaticamente em pedidos e notas fiscais; campo de frete fica bloqueado para edição manual.
Exceção / Importante:
- O sistema prioriza os valores de frete configurados no cadastro da pessoa (PESSOA). Se estiverem em branco, utiliza os valores de PARMFATUR.
- Se
TP_VALORFRETEforP(percentual) e o valor informado no cadastro da pessoa ultrapassar 100%, o sistema bloqueia com erro ao salvar.- Parâmetros complementares:
TP_VALORFRETE,VL_FRETEeVL_FRETEISENTO(todos configurados em MFA001 — Parâmetros de Faturamento, aba Pedidos / O.S.).
N — Não (Frete manual) — padrão
| O que faz | Detalhe |
|---|---|
| Frete digitado manualmente | O campo VL_FRETE em Pedidos e NF permanece editável |
| Campos de frete ocultos no cadastro de pessoa | TP_VALORFRETE, VL_FRETE e VL_FRETEISENTO ficam invisíveis em TFA001 |
| Sem cálculo automático | O cálculo automático de frete não é executado |
Simulação passo a passo
- Acesse MFA001 → aba Pedidos / O.S. e mantenha
Isento a partir decomo Não (padrão). - Abra TFA001 — Cadastro de Pessoas e confirme que os campos de frete estão ocultos.
- Crie um Pedido de Venda (MPD002) — o campo de frete estará liberado para digitação.
- Digite manualmente o valor de frete desejado (ex.: R$ 20,00) e salve.
- Gere uma NF (MNF002) a partir do pedido — o campo de frete também estará editável.
Resultado esperado: Frete digitado manualmente pelo operador; campos de frete ficam ocultos no cadastro de pessoas e editáveis em pedidos e notas.
Exceção / Importante: Os campos
TP_VALORFRETE,VL_FRETEeVL_FRETEISENTOde PARMFATUR continuam presentes na tela MFA001 mesmo comST_COBRANCAAUTOFRETE = N, porém não têm efeito prático.
Lógica de cálculo do frete automático
Quando ST_COBRANCAAUTOFRETE = S e o pedido está sendo processado (salvar pedido ou carregar pedido na NF):
- Valor de isenção: Busca primeiro de
PESSOA.VL_FRETEISENTO; se vazio, usaPARMFATUR.VL_FRETEISENTO. - Valor líquido sem frete: Total líquido do pedido − valor de frete − valor de IPI.
- Verificação de isenção: Se não houver isenção configurada (
-1) ou se o valor de isenção for maior que o valor líquido sem frete → frete = R$ 0,00. - Valor do frete: Busca primeiro de
PESSOA.VL_FRETEePESSOA.TP_VALORFRETE; se vazio, usaPARMFATUR.VL_FRETEePARMFATUR.TP_VALORFRETE. - Cálculo: Se tipo =
P(percentual), frete = valor líquido × (percentual / 100). Se tipo =V(fixo), frete = valor direto. - Rateio: O valor do frete é rateado entre os itens do pedido/nota.
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Linha | Contexto |
|---|---|---|---|
TdmMFA001.tabPARMFATURAfterInsert | UdmMFA001.pas | 599 | Define valor padrão N |
iniciar (MPD002) | UMPD002.pas | 752 | Trava/libera campo de frete |
TfrmMPD002.btnSalvarClick | UMPD002.pas | 2441 | Calcula frete ao salvar pedido |
carrega_Nota (MNF002) | UMNF002.pas | 2410 | Trava campo e calcula frete ao carregar pedido na NF |
Consulta_Pedidos (MNF002) | UMNF002.pas | 2895 | Trava campo de frete após consulta |
TdmMNF002.CalculaFreteAutomatico | UdmMNF002.pas | 8705 | Cálculo e rateio do frete |
TdmMNF002.BuscaParametros_MNF002 | UdmMNF002.pas | 10507 | Carrega parâmetro na memória |
TdmMPD002.BuscaParametros_MPD002 | UdmMPD002.pas | 5757 | Carrega parâmetro na memória |
iniciar (TFA001) | UTFA001.pas | 1184 | Oculta campos de frete quando N |
TdmTFA001.tabPESSOABeforePost | UdmTFA001.pas | 1324 | Valida frete percentual ≤ 100% |
Referências SQL
Não foi encontrada referência direta ao campo ST_COBRANCAAUTOFRETE em scripts SQL (procedures/views). As procedures listadas na análise de tabela acessam PARMFATUR para outros fins.