TP_VALORFRETE - Frete por Pedido
Tela de configuração: MFA001 — Parâmetros de Faturamento Localização: Aba Pedidos / O.S. → sub-aba de frete Tabela:
PARMFATUR.TP_VALORFRETE(CHAR(1)) Valor padrão:V(Valor Fixo) Componente:cmbTP_VALORFRETE(combobox)
Telas impactadas
| Tela | Módulo | Impacto |
|---|---|---|
| MFA001 | Faturamento | Configuração do parâmetro |
| MNF002 | Nota Fiscal | Cálculo automático do frete na nota fiscal |
| MPD002 | Pedido de Venda | Cálculo automático do frete no pedido |
| TFA001 | Cadastro de Pessoas | Mesmo campo existe na tabela PESSOA; validação ao salvar pessoa |
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
TP_VALORFRETE | PARMFATUR | Tipo de cálculo do frete (parâmetro global) |
VL_FRETE | PARMFATUR | Valor do frete (fixo ou percentual) |
TP_VALORFRETE | PESSOA | Tipo de cálculo do frete por pessoa (sobrepõe o global) |
VL_FRETE | PESSOA | Valor do frete por pessoa |
VL_FRETEISENTO | PESSOA | Valor de frete isento por pessoa |
Relação com o cadastro de Pessoas
O campo TP_VALORFRETE também existe na tabela PESSOA com valor padrão V. Na nota fiscal (MNF002) e no pedido (MPD002), o sistema primeiro verifica se a pessoa possui o campo preenchido; caso contrário, utiliza o parâmetro global de PARMFATUR.
Opções disponíveis
V - Valor Fixo
| O que faz | Detalhe |
|---|---|
| Usa o valor informado diretamente | O valor de VL_FRETE é aplicado como valor absoluto (R$) no frete |
| Editável | Sem restrição de valor |
Simulação passo a passo
- Acesse MFA001 → aba Pedidos / O.S..
- No campo Frete por Pedido, selecione Valor Fixo.
- No campo Valor do Frete, digite
15,00. - Salve os parâmetros.
- Ao emitir uma nota fiscal para um cliente sem frete personalizado, o sistema adicionará R$ 15,00 de frete rateado entre os itens.
Resultado esperado: O valor de R$ 15,00 é rateado entre os itens da nota fiscal/pedido, independentemente do total faturado.
P - % s/ Faturamento
| O que faz | Detalhe |
|---|---|
| Calcula o frete como percentual sobre o total faturado | VL_FRETE representa o percentual; valor máximo permitido: 100% |
Exige ST_COBRANCAAUTOFRETE | O frete automático só é calculado se ST_COBRANCAAUTOFRETE estiver ativo |
| Validação ao salvar | Se o percentual informado for maior que 100, o sistema bloqueia a gravação (erro W-1818) |
Simulação passo a passo
- Acesse MFA001 → aba Pedidos / O.S..
- No campo Frete por Pedido, selecione % s/ Faturamento.
- No campo Valor do Frete, digite
5,00(representando 5%). - Salve os parâmetros.
- Ao emitir uma nota fiscal de R$ 1.000,00 para um cliente sem frete personalizado, o sistema calculará:
1000 × 5% = R$ 50,00de frete, rateado entre os itens.
Resultado esperado: O frete é calculado como percentual sobre o valor líquido (sem frete) da nota/pedido e rateado entre os itens.
Exceção / Importante:
- Se o valor informado for superior a 100, o sistema exibe o erro W-1818 e bloqueia a gravação. Essa validação ocorre tanto em MFA001 (no BeforePost dos parâmetros) quanto em TFA001 (no BeforePost da pessoa), desde que
ST_COBRANCAAUTOFRETE=S(configurado em MFA001 — Parâmetros de Faturamento).- Na tela TFA001 (Cadastro de Pessoas), o mesmo campo
TP_VALORFRETEexiste por pessoa. A validação de máximo 100% só é aplicada quandoST_COBRANCAAUTOFRETE=S.
Regra Geral de Cálculo
A lógica de cálculo segue esta ordem de precedência em MNF002 (Nota Fiscal) e MPD002 (Pedido de Venda):
- Frete da Pessoa — Se o cliente (
PESSOA) possuiVL_FRETEpreenchido, o sistema utilizaTP_VALORFRETEeVL_FRETEda pessoa. - Frete Global — Se a pessoa não possui frete configurado, o sistema utiliza
TP_VALORFRETEeVL_FRETEdePARMFATUR. - Cálculo:
- Se
TP_VALORFRETE = 'V': o valor é aplicado diretamente. - Se
TP_VALORFRETE = 'P': o valor é multiplicado pelo total líquido sem frete (vlFrete = vlLiqSemFrete * (vlFrete / 100)).
- Se
Após o cálculo, o frete é rateado entre os itens da nota/pedido.
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Descrição |
|---|---|---|
TdmMFA001.tabPARMFATURAfterInsert | UdmMFA001.pas | Define valor padrão 'V' ao inserir novo registro |
TdmMFA001.tabPARMFATURBeforePost | UdmMFA001.pas | Valida se TP_VALORFRETE = 'P' e VL_FRETE > 100 (erro W-1818) |
TdmMNF002.CalculaFreteAutomatico | UdmMNF002.pas | Lê TP_VALORFRETE da pessoa ou de PARMFATUR para cálculo do frete |
TdmMNF002.tabNOTACD_PESSOAValidate | UdmMNF002.pas | Busca TP_VALORFRETE e VL_FRETE da pessoa ao selecionar cliente na nota |
TdmMNF002.BuscaParametros_MNF002 | UdmMNF002.pas | Carrega TP_VALORFRETE de PARMFATUR para uso global |
TfrmMPD002.btnSalvarClick | UMPD002.pas | Lê TP_VALORFRETE da pessoa ou de PARMFATUR para cálculo do frete no pedido |
TdmMPD002.tabPEDIDOCD_PESSOAValidate | UdmMPD002.pas | Busca TP_VALORFRETE e VL_FRETE da pessoa ao selecionar cliente no pedido |
TdmMPD002.BuscaParametros_MPD002 | UdmMPD002.pas | Carrega TP_VALORFRETE de PARMFATUR para uso global |
TdmTFA001.tabPESSOAAfterInsert | UdmTFA001.pas | Define valor padrão 'V' para pessoa |
TdmTFA001.tabPESSOABeforePost | UdmTFA001.pas | Valida se ST_COBRANCAAUTOFRETE = 'S' e TP_VALORFRETE = 'P' com VL_FRETE > 100 |
TdmTFA001.bloqueiaCamposAutorizador | UdmTFA001.pas | Libera edição do campo para usuário autorizador |
Referências SQL diretas ao campo
Não foi encontrada referência direta ao campo TP_VALORFRETE em scripts SQL (Scripts/). As procedures SQL listadas nos candidatas referenciam a tabela PARMFATUR mas não acessam este campo especificamente.