Pular para o conteúdo principal

Parâmetro de Integração Pedido de Venda x Nota Fiscal

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Pedidos / O.S. → Opção 1 (label "Pedido de Venda") Tabela: PARMFATUR.ST_PEDVENDA Valor padrão: N (Não Integrado)

Controla como o Pedido de Venda é integrado à Nota Fiscal de Saída no momento do faturamento. Define qual base de cálculo é transportada do pedido para a nota (bruto, líquido por imposto, líquido por valor, líquido por desconto, líquido por IPI, etc.) e se o campo "Nr. Pedido" fica visível na tela da nota fiscal. O valor escolhido também é gravado em NOTA.ST_INTEGRADO pela procedure GERA_NOTAFISCAL, identificando historicamente como cada nota foi gerada.

Telas impactadas​

MóduloCódigoDescrição
Nota Fiscal SaídaMNF002Faturamento de NF de saída a partir de pedidos (principal consumidora)
Conhecimento de Transporte (CT-e)MNF008Emissão de CT-e com integração de pedido
Nota de Serviço / NFS-eMNF013Emissão de nota fiscal de serviço com integração de pedido
Nota Fiscal ConsumidorMNF014NF ao consumidor integrada com pedido
Nota de TrocaMNF026Nota fiscal de troca com integração de pedido
NF Ordem (Pedidos)MPD011Geração de NF a partir de ordem de carregamento / pedidos consolidados
NF Ordem (Recapadora)MRC020Geração de NF de serviço recapadora a partir de ordem
NF Pré-EmitidaMCO006Emissão de nota fiscal com mesmo conjunto de parâmetros
NF Entrada com PedidoMTR008Emissão de nota de entrada integrada a pedido
NF Entrada com PedidoMTR009Emissão de nota de entrada integrada a pedido
Bloqueio de SeriaisMNF002 (USERIAL2)Esconde o botão "Marcar" de série quando o pedido está integrado
Listagem NF RecapLNF168Relatório usa NOTA.ST_INTEGRADO / PARMFATUR.ST_PEDVENDA para recalcular descontos históricos

Procedures impactadas​

Geração / Gravação de Nota Fiscal​

ProcedureArquivoDescrição
GERA_NOTAFISCALScripts/GERA_NOTAFISCAL.sqlLê PARMFATUR.ST_PEDVENDA em :V_ST_PEDVENDA (linha 268) e grava o valor em NOTA.ST_INTEGRADO (linha 1366), registrando historicamente o método usado para gerar cada nota fiscal.

Campos envolvidos​

CampoDescrição
PARMFATUR.ST_PEDVENDADefine o modo de integração pedido → nota (A, S, L, V, D, P, I, N)
NOTA.ST_INTEGRADOFlag gravado pela GERA_NOTAFISCAL com o valor vigente de ST_PEDVENDA no momento do faturamento
NOTA.NR_PEDIDO / ITEMNOTA.NR_PEDIDONúmero do pedido de origem (visível/obrigatório apenas quando ST_PEDVENDA <> 'N')
PEDIDO.VL_TOTAL, PEDIDO.VL_DESCONTO, PEDIDO.VL_IPIValores do pedido que alimentam ITEMNOTA.VL_TOTAL / VL_DESCONTO conforme a opção
ITEMNOTA.VL_TOTALValor total do item na nota, calculado conforme a opção escolhida
ITEMNOTA.VL_DESCONTOValor de desconto; opções L/V/P/I/D zeram esse campo após embutir o desconto no total
IMPOSTONOTA.VL_SUBSTRIB / VL_IMPOSTOValores de ST e imposto reprocessados quando o parâmetro exige recalcular

Opções disponíveis​

S - Integrado (Bruto)​

O que fazDetalhe
Campo "Nº Pedido" na NFVisível
Valor total do itemCopiado do pedido sem embutir desconto nem imposto
Valor de descontoMantém VL_DESCONTO do pedido como desconto
Imposto/ICMS-STNão há reprocessamento adicional de imposto
Botão "Marcar" de serialOculto quando ST_BLOQUEIASERIAL='S'

Simulação passo a passo​

  1. MFA001 → ST_PEDVENDA = "Integrado"
  2. Salve os parâmetros (F6)
  3. Abra um Pedido de Venda em MPD002 com um item de R$ 100,00 e desconto de R$ 10,00 (total líquido R$ 90,00, IPI R$ 5,00)
  4. Vá em MNF002 e gere a NF a partir do pedido
  5. Observe o item na NF

Resultado esperado: O campo "Nº Pedido" aparece na NF. ITEMNOTA.VL_TOTAL = 100,00 e ITEMNOTA.VL_DESCONTO = 10,00 (mantidos como no pedido, sem reprocessamento).


L - Integrado Líquido (% Imposto)​

O que fazDetalhe
Campo "Nº Pedido" na NFVisível
Valor total do itemRecalculado como (VL_TOTAL - VL_DESCONTO) / (1 + PC_IPI/100) → desconto e IPI embutidos no valor unitário
Valor de descontoZerado (VL_DESCONTO = NULL)
Base de impostoConsulta CALCULA_IMPOSTOPEDIDO para recalcular V_PC_IMPOSTO e V_VL_SUBSTITUICAO
Validação pós-itemCompara soma VL_TOTAL - VL_DESCONTO + VL_FRETE + VL_DESPESA + IMPOSTO do item ao valor líquido do pedido; se houver diferença, ajusta IMPOSTONOTA.VL_SUBSTRIB
Botão "Marcar" serialOculto quando ST_BLOQUEIASERIAL='S'

Simulação passo a passo​

  1. MFA001 → ST_PEDVENDA = "Integrado Líquido (% Imposto)"
  2. Salve os parâmetros (F6)
  3. Abra um pedido com item de R$ 100,00, desconto R$ 10,00, IPI 10%
  4. Gere a NF em MNF002
  5. Confira o item na NF

Resultado esperado: ITEMNOTA.VL_TOTAL = (100 - 10) / 1,10 = 81,82, ITEMNOTA.VL_DESCONTO fica em branco. O sistema chama CALCULA_IMPOSTOPEDIDO e, se o líquido da NF não bater com o do pedido, ajusta IMPOSTONOTA.VL_SUBSTRIB com ST_MANUAL='S'.


V - Integrado Líquido (Valor)​

O que fazDetalhe
Campo "Nº Pedido" na NFVisível
Valor total do itemRecalculado como VL_TOTAL - VL_DESCONTO - VL_IPI → desconto e IPI embutidos em valor (não em percentual)
Valor de descontoZerado
Base de impostoChama CALCULA_IMPOSTOPEDIDO e reprocessa impostos (reprocessaImposto)
Botão "Marcar" serialOculto quando ST_BLOQUEIASERIAL='S'

Simulação passo a passo​

  1. MFA001 → ST_PEDVENDA = "Integrado Líquido (Valor)"
  2. Salve os parâmetros (F6)
  3. Abra um pedido com item R$ 100,00, desconto R$ 10,00, VL_IPI R$ 5,00
  4. Gere a NF em MNF002
  5. Confira o item

Resultado esperado: ITEMNOTA.VL_TOTAL = 100 - 10 - 5 = 85,00, ITEMNOTA.VL_DESCONTO em branco. reprocessaImposto é executado para recalcular a base fiscal.


D - Integrado Líquido (Desconto)​

O que fazDetalhe
Campo "Nº Pedido" na NFVisível
Valor total do itemVL_TOTAL - VL_DESCONTO → desconto embutido no valor, mas IPI permanece separado
Valor de descontoZerado (VL_DESCONTO = NULL, PC_DESCONTO = NULL)
Validação adicionalEm MNF002 (linha 7848): se o desconto do item for ≥ 100% do total OU maior que o valor total, bloqueia com mensagem "O Valor de Desconto deve ser Menor que o Valor Total do Item!"
Botão "Marcar" serialOculto quando ST_BLOQUEIASERIAL='S'

Simulação passo a passo​

  1. MFA001 → ST_PEDVENDA = "Integrado Líquido (Desconto)"
  2. Salve os parâmetros (F6)
  3. Abra um pedido com item R$ 100,00, desconto R$ 10,00, IPI R$ 5,00
  4. Gere a NF em MNF002

Resultado esperado: ITEMNOTA.VL_TOTAL = 100 - 10 = 90,00, ITEMNOTA.VL_DESCONTO e PC_DESCONTO em branco. Diferente da opção L/V, o valor do IPI não é descontado do total.


P - Integrado Líquido (IPI)​

O que fazDetalhe
Campo "Nº Pedido" na NFVisível
Valor total do itemCalculado com divisão por IPI (similar ao L), mas com tratamento específico para IPI: Resultado[1] := VL_IPI, PC_IPI := VL_IPI * 100 / VL_TOTAL
Valor de descontoZerado
Diferença para LNo reprocessamento, não soma VL_SUBSTRIB ao imposto (ST_PEDVENDA <> 'P' é condição para somar ST) e usa VL_IPI diretamente em vez de percentual

Simulação passo a passo​

  1. MFA001 → ST_PEDVENDA = "Integrado Líquido (IPI)"
  2. Salve os parâmetros (F6)
  3. Abra um pedido com item R$ 100,00 e IPI R$ 5,00
  4. Gere a NF em MNF002

Resultado esperado: Item gravado com o valor líquido do IPI embutido via valor absoluto (não percentual), e a VL_SUBSTRIB não é incluída no cálculo de imposto do item (tratamento específico do IPI).


I - Integrado Líq. c/ Desc. (% Imp.)​

O que fazDetalhe
Campo "Nº Pedido" na NFVisível
Valor total do itemRecalculado como em L mas a base do % Imposto é VL_TOTAL - VL_DESCONTO (em vez de VL_TOTAL), o que produz alíquota de ST proporcionalmente maior sobre o líquido
Valor de descontoMantido em ITEMNOTA.VL_DESCONTO
Validação pós-itemSempre ajusta IMPOSTONOTA.VL_SUBSTRIB (condição or parmfatur.values['ST_PEDVENDA'] = 'I' na linha 2390)

Simulação passo a passo​

  1. MFA001 → ST_PEDVENDA = "Integrado Líq. c/Desc. (% Imp.)"
  2. Salve os parâmetros (F6)
  3. Abra um pedido com item R$ 100,00, desconto R$ 10,00
  4. Gere a NF em MNF002

Resultado esperado: A base do imposto é R$ 90,00 (líquido, VL_TOTAL - VL_DESCONTO) e não R$ 100,00 (bruto). O ajuste de IMPOSTONOTA.VL_SUBSTRIB é feito em toda integração, mesmo que a diferença seja zero.


N - Não Integrado​

O que fazDetalhe
Campo "Nº Pedido" na NFOculto (lblNR_PEDIDO.Visible := False, edtNR_PEDIDO.Visible := False)
Integração de pedidoDesativada – não há botão / fluxo de importar pedido
Bloqueio específicoEm MNF002 (linha 708): se a tela for aberta com TP_DOCTO='P' (faturar pedido) e ST_PEDVENDA='N', dispara erro "O Pedido de Venda Não Está Integrado. Verifique! [MFA001]"
MNF008 (CT-e)Esconde lblNR_PEDIDO e edtNR_PEDIDO quando iST_PEDVENDA = 'N'

Simulação passo a passo​

  1. MFA001 → ST_PEDVENDA = "Não Integrado"
  2. Salve os parâmetros (F6)
  3. Abra MNF002 em modo emissão manual → não há campo "Nº Pedido"
  4. Tente chamar a tela passando TP_DOCTO='P' (via botão de faturar pedido) → ERRO: "O Pedido de Venda Não Está Integrado. Verifique! [MFA001]"

Resultado esperado: Emissão apenas manual. Qualquer rotina que tente importar pedido é bloqueada, sinalizando ao usuário para revisar o parâmetro em MFA001.

Este é o valor padrão ao criar um novo registro em MFA001 (tabPARMFATURST_PEDVENDA.AsString := 'N', UdmMFA001.pas:441).


Observação Importante​

Embora o ComboBox do MFA001 apresente 7 opções (S, L, V, D, P, I, N), o código verifica adicionalmente a letra A em alguns pontos (ex.: if (Resultado[8] = 'S') or (Resultado[8] = 'A') em MNF008/MNF013/MNF014/MTR008 – esses testes, porém, são sobre ST_CODIGOBARRA, não sobre ST_PEDVENDA; confira o contexto antes de assumir que A é um valor válido para este parâmetro).

O valor de ST_PEDVENDA é gravado em NOTA.ST_INTEGRADO pela procedure GERA_NOTAFISCAL (linha 1366 do Scripts/GERA_NOTAFISCAL.sql), permitindo rastrear historicamente como cada nota foi faturada mesmo que o parâmetro mude depois. O relatório LNF168 usa COALESCE(NOTA.ST_INTEGRADO, PARMFATUR.ST_PEDVENDA) para reconstruir cálculos de desconto em ordens de produção recap.

Interação com outros parâmetros​

  • ST_BLOQUEIASERIAL: quando ='S' e ST_PEDVENDA estiver em {S, L, D, V}, o botão "Marcar" de seriais (USERIAL2.pas linha 252) é escondido para evitar alteração manual do serial após integração do pedido.
  • ST_BLOQNOTAPEDJABLOQ: controla se a NF herda o bloqueio do pedido quando integrada (complementar a ST_PEDVENDA).
  • ST_TABPRECO: a combinação de ST_PEDVENDA com ST_TABPRECO bloqueada (B, V, L) define se é possível editar tabela/preço mesmo em nota integrada.

Tabela Comparativa Resumida​

OpçãoDescriçãoNº Pedido visível?Embute desconto no total?Embute IPI no total?Zera VL_DESCONTO?Base de ST
SIntegrado (Bruto)SimNãoNãoNãoValor bruto
LIntegrado Líquido (% Imp.)SimSimSim (÷(1+%IPI))SimVL_TOTAL
VIntegrado Líquido (Valor)SimSimSim (−VL_IPI)SimVL_TOTAL
DIntegrado Líquido (Desconto)SimSimNãoSimValor bruto
PIntegrado Líquido (IPI)SimSimSim (via VL_IPI)SimSem VL_SUBSTRIB somado
IIntegrado Líq. c/ Desc. (% Imp.)SimSim (reduz base)SimNãoVL_TOTAL − VL_DESCONTO
NNão IntegradoNãoN/AN/AN/AN/A

Referências no Código Fonte​

ArquivoLinhasFunção
source/MFA001/UMFA001.dfm9146-9177Definição do TwwDBComboBox cmbST_PEDVENDA com 7 Items.Strings
source/MFA001/UdmMFA001.dfm682-687Campo persistente tabPARMFATURST_PEDVENDA (DisplayLabel "Pedido de Venda Integrado")
source/MFA001/UdmMFA001.pas39, 441Declaração do campo e default 'N' em AfterInsert
source/MFA001/UdmMFA001.dfm78, 2340, 2484, 2724, 2958SELECT, INSERT e UPDATE de PARMFATUR.ST_PEDVENDA
source/MNF002/UdmMNF002.pas7848-7854, 10491Validação de desconto (ST_PEDVENDA='D') e leitura em parmfatur
source/MNF002/UMNF002.pas627-631Esconde campo NR_PEDIDO quando ST_PEDVENDA='N'
source/MNF002/UMNF002.pas708-709Bloqueio "Pedido não integrado" ao tentar faturar pedido com ST_PEDVENDA='N'
source/MNF002/UMNF002.pas1144, 1166, 1177Cálculo de PC_SUBST com bases diferentes conforme L/V/P/I
source/MNF002/UMNF002.pas1568Chamada de CALCULA_IMPOSTOPEDIDO para L/V
source/MNF002/UMNF002.pas2269, 2287, 2305, 2315Transformações de VL_TOTAL / VL_DESCONTO por opção (L/P, V, D, I)
source/MNF002/UMNF002.pas2370-2396Ajuste de IMPOSTONOTA.VL_SUBSTRIB para L/I
source/MNF002/UMNF002.pas2492, 2739, 2761, 2778Seleção de cálculo no loop CarregaPedido por opção
source/MNF002/USERIAL2.pas252-254Esconde botão "Marcar" serial para S/L/D/V
source/MNF008/UdmMNF008.pas474, 651, 666, 756Declaração e SELECT iST_PEDVENDA em CT-e
source/MNF008/UdmMNF008.pas700-703Oculta labels NR_PEDIDO quando iST_PEDVENDA='N'
source/MNF008/UMNF008.pas641-642, 795-797, 928, 937Cálculo de impostos L/V/S e aplicação de desconto/IPI (L/V)
source/MNF008/UMNF008.pas2315reprocessaImposto quando ST_PEDVENDA='V'
source/MNF008/UMNF008PEDIDO.pas367, 379Aplicação de fórmula L e V ao importar itens do pedido
source/MNF013/UdmMNF013.pas532, 698, 711Declaração e SELECT iST_PEDVENDA em nota de serviço
source/MNF014/UdmMNF014.pas267, 322, 334Declaração e SELECT iST_PEDVENDA em NF consumidor
source/MNF026/UMNF026.pas3072, 3087, 3101, 3139, 3247, 3275Fórmulas L/P, V, D e reprocessa imposto em nota de troca
source/MPD011/UdmMPD011.pas1582SELECT ST_PEDVENDA da PARMFATUR em ordem de carregamento
source/MPD011/UdmNFORDEM.pas511, 812, 831, 834, 850, 865, 873, 882, 892, 898, 950Cálculo completo de impostos e fórmulas L/V/P/I/D ao gerar NF de ordem
source/MRC020/UdmMRC020NFORDEM.pas430, 564, 582, 1255, 1293, 1304, 1313, 1351Declaração, SELECT e aplicação das opções L/V/D no fluxo Recapadora
source/MCO006/UdmMCO006.pas2100SELECT ST_PEDVENDA em pré-emissão de NF
source/MTR008/UdmMTR008.pas168, 224, 237Declaração e SELECT iST_PEDVENDA em NF entrada de transporte
source/MTR009/UdmMTR009.pas136SELECT ST_PEDVENDA em NF entrada de transporte (variante)
source/LNF168/ULNF168.pas151, 160, 167COALESCE(NOTA.ST_INTEGRADO, PARMFATUR.ST_PEDVENDA) = 'S' para recalcular descontos históricos
source/CPD009/UdmCPD009.dfm313, 470, 532CRUD de PARMFATUR (cópia entre empresas)
source/RCA006/UdmRCA006.dfm3062, 3219, 3281CRUD de PARMFATUR (restauração de cadastros)
Scripts/GERA_NOTAFISCAL.sql185, 261, 268, 1366Lê ST_PEDVENDA em V_ST_PEDVENDA e grava em NOTA.ST_INTEGRADO ao faturar