Pular para o conteúdo principal

Parâmetro de Ordem de Carregamento (Modelo de Faturamento por Embarque)

Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Notas Fiscais → Parâmetros de Notas → Ordem Carregamento Tabela: PARMFATUR.ST_ORDEMCARREG Valor padrão: N (Gera NF por Pessoa)

Este parâmetro controla como o módulo de faturamento por Ordem de Carregamento (MPD011) consolida itens de pedidos em notas fiscais a partir de um embarque, e também qual motor de NF (padrão ou recapadora) é utilizado no encerramento da ordem (MRC049).

O parâmetro não é consultado por stored procedures — toda a lógica mora no código Delphi dos módulos de faturamento/embarque.

Telas impactadas​

MóduloCódigoPapel
Faturamento por Ordem de CarregamentoMPD011Tela principal que muda de comportamento conforme o parâmetro (abre consulta de pedidos, exibe botão "Gerar Automático", liga/desliga campos de produto similar e fator)
Emissão de NF da Ordem (janela auxiliar)MPD011 (UNFORDEM / UdmNFORDEM)Gravação da NF a partir da ordem — usa o parâmetro para decidir se grava impostos por item ou por nota, se aplica troca por produto similar e se atualiza o número do documento do contas a receber
NF Fatura de EmbarqueMRC020Rotina AtendePedido_Nota monta SQL diferente para buscar itens do embarque quando o parâmetro é "S"
Confirmação de Ordem de Carregamento (Recap)MRC049Quando o parâmetro é "R" (Gera NF Recapadora), pula a geração de Estoque e Financeiro no encerramento da ordem, pois esse fluxo é responsabilidade da recapadora

Campos envolvidos​

CampoDescrição
PARMFATUR.ST_ORDEMCARREGO parâmetro em si (CHAR(1)), DOM_CHAR1, default 'N', NOT NULL
PARMFATUR.TPENVIO (derivado de CONFIGNFE.TPENVIO)Lido junto em MPD011. Somente quando ST_ORDEMCARREG = 'S' E TPENVIO = 'L' o botão "Gerar Automático" é exibido
ORDEMCARREG.ST_ORDEMCARREGCampo homônimo, porém DIFERENTE — é o status da ordem (N=Não atendida, A=Atendida, C=Cancelada). Não confundir com o parâmetro da PARMFATUR
PARMFATUR.CD_LAYORDCARREGLayout de impressão da ordem de carregamento (configurável no mesmo formulário, campo relacionado)

Opções disponíveis​

S - Gera NF por Pedido​

O que fazDetalhe
Critério de consolidaçãoUma NF é gerada para cada pedido do embarque
Consulta de itens (MPD011, UMPD011.pas:655)tabORDEMPESSOA recebe o SQL tabPEDIDOORDEM — a grid da aba "Ordem/Pessoa" passa a exibir a coluna NR_PEDIDO (Columns[0].Visible := True) e reduz a largura da coluna de pessoa para 224px
Botão "Gerar Automático"Exibido somente quando ST_ORDEMCARREG = 'S' E TPENVIO = 'L' (gerador automático da NFe local) — ver UMPD011.pas:179
Consulta de itens na NF da ordem (UdmNFORDEM.pas:1045 e UdmMRC020NFORDEM.pas:651)Monta SQL direto em ORDEMCARREG O INNER JOIN ITEMPEDIDO I INNER JOIN PEDIDO P filtrando O.ST_ORDEMCARREG = 'N' (status da ordem ainda não atendido)
Similar / VL_FATOR (UdmNFORDEM.pas:573 e UNFORDEM.pas:1901)Mostra os campos edtCD_ITEMSIMILAR, lblCD_ITEMSIMILAR, edtDS_ITEMSIMILAR e liga edtVL_FATOR.DataField := 'VL_FATOR'. Também ativa o recálculo item-a-item de VL_UNITARIO via VL_FATOR
Impostos na NF (UdmNFORDEM.pas:2179)Como ST_ORDEMCARREG <> 'F', os impostos são gravados em IMPOSTONOTA por nota (loop a partir de tabIMPOSTONOTA), e não por item

Simulação passo a passo​

  1. MFA001 → aba Notas Fiscais → sub-aba Parâmetros de Notas → Ordem Carregamento = "Gera NF por Pedido"
  2. Salve (F6)
  3. Crie 2 pedidos de venda para o mesmo cliente e vincule ambos ao mesmo Embarque
  4. Abra o MPD011 - Faturamento por Ordem de Carregamento
  5. Observe: se CONFIGNFE.TPENVIO = 'L', o botão "Gerar Automático" aparece na toolbar
  6. Na aba de seleção, a grid de Pessoa/Ordem agora mostra a coluna NR_PEDIDO
  7. Selecione o embarque e avance para a emissão da NF
  8. Observe: campos de Produto Similar (CD_ITEMSIMILAR) e VL_FATOR aparecem na tela de NF

Resultado esperado: o sistema emite uma NF por pedido do embarque (granularidade pedido). Os impostos ficam no nível de nota (IMPOSTONOTA) e o cliente pode receber várias NFs de um mesmo embarque.


N - Gera NF por Pessoa​

O que fazDetalhe
Critério de consolidaçãoUma única NF por pessoa (cliente) — itens de vários pedidos do mesmo cliente são agrupados em uma NF só
Consulta de itens (MPD011, UMPD011.pas:655)tabORDEMPESSOA mantém o SQL padrão iSqlOrdemPessoa; coluna NR_PEDIDO da grid fica oculta e a coluna de pessoa ocupa 288px
Botão "Gerar Automático"Não é exibido
Consulta de itens da NF (UdmNFORDEM.pas:1070, else do ST_ORDEMCARREG = 'S')Usa a query padrão da tabPEDIDONOTA via ParamByName (CD_EMPRESA, NR_EMBARQUE, CD_PESSOA) — consulta parametrizada do DFM
Similar / VL_FATOROcultos — edtVL_FATOR.DataField := 'PC_FATOR' (fator percentual em vez de valor)
Impostos na NFGrava em IMPOSTONOTA por nota (mesma lógica de S, pois ST_ORDEMCARREG <> 'F')
CONTAS a Receber (UNFORDEM.pas:1044)Como não é 'F', entra no ELSE e atualiza apenas NR_EMBARQUE e CD_EMPREMB em CONTAS, sem sobrescrever NR_DOCUMENTO

Simulação passo a passo​

  1. MFA001 → ST_ORDEMCARREG = "Gera NF por Pessoa" (padrão)
  2. Salve (F6)
  3. Crie 3 pedidos de venda para o mesmo cliente e coloque todos no mesmo Embarque
  4. Abra o MPD011 e selecione o embarque
  5. A grid de pessoa não mostra coluna de pedido — apenas o cliente agrupando todos os itens
  6. Emita a NF → uma única nota com todos os itens dos 3 pedidos é gerada para aquele cliente
  7. Os campos de Produto Similar e VL_FATOR não aparecem na tela da NF

Resultado esperado: uma NF por pessoa consolidando itens de todos os pedidos do embarque daquele cliente. É o valor default e o comportamento clássico de faturamento por embarque.


F - Gera NF com (Similar)​

O que fazDetalhe
Critério de consolidaçãoIgual ao "N" (uma NF por pessoa), mas permite troca de produto por um "similar" antes de gravar
Campos extras exibidos (UdmNFORDEM.pas:573)Mostra edtCD_ITEMSIMILAR, lblCD_ITEMSIMILAR, edtDS_ITEMSIMILAR e liga edtVL_FATOR.DataField := 'VL_FATOR' — idem modo "S"
Troca efetiva do produto (UdmNFORDEM.pas:1486)Se ST_ORDEMCARREG = 'F' E o campo tabITEMNOTACD_ITEMSIMILAR está preenchido, o INSERT em ITEMNOTA usa CD_ITEMSIMILAR no lugar do CD_ITEM original. Ou seja, a NF sai com o código do produto similar
Impostos na NF (UdmNFORDEM.pas:1629)Grava em IMPOSTONOTA POR ITEM (loop dentro de cada item iterando tabIMPOSTOITEM), e não por nota. Este é o único modo em que o imposto é montado item-a-item a partir da base de impostos do item
Impostos consolidados da nota (UdmNFORDEM.pas:2179)Como ST_ORDEMCARREG = 'F', o bloco que grava IMPOSTONOTA a partir de tabIMPOSTONOTA é pulado (para não duplicar, já foi feito item-a-item)
CONTAS a Receber (UNFORDEM.pas:1044)Atualiza NR_EMBARQUE, CD_EMPREMB e NR_DOCUMENTO = NR_PEDIDO — ou seja, o título financeiro passa a referenciar o número do pedido original (rastreabilidade)
VL_FATORRateio do valor do fator é aplicado item-a-item no edtVL_FATOREXIT (UNFORDEM.pas:1901)

Simulação passo a passo​

  1. MFA001 → ST_ORDEMCARREG = "Gera NF com (Similar)"
  2. Salve (F6)
  3. Crie um pedido de venda com o produto A (ex.: pneu novo) e vincule-o a um embarque
  4. No cadastro do produto A, configure um código similar (ex.: produto B — o pneu recapado/reformado)
  5. Abra o MPD011, selecione o embarque e avance para a emissão da NF
  6. Na grade de itens da NF, informe o CD_ITEMSIMILAR = B na linha do item A
  7. Preencha o VL_FATOR para aplicar rateio de desconto/valor sobre os itens
  8. Grave a NF
  9. Consulte ITEMNOTA: o item foi gravado com CD_ITEM = B (similar), não A
  10. Consulte IMPOSTONOTA: os impostos foram inseridos linha-a-linha para cada item
  11. Consulte CONTAS: o título financeiro tem NR_DOCUMENTO = NR_PEDIDO

Resultado esperado: a NF é emitida substituindo os produtos do pedido por seus similares configurados, os impostos são calculados item-a-item e o título financeiro recebe o número do pedido como documento.

Este modo é tipicamente usado por recapadoras que precisam entregar pneus reformados (similares) contra pedidos de pneus novos, mantendo rastreabilidade do pedido no financeiro.


R - Gera NF Recapadora​

O que fazDetalhe
Critério de faturamentoReservado ao fluxo da recapadora — a geração de Estoque e Financeiro é feita por outras rotinas (módulos MRC), não pelo faturamento por ordem de carregamento
Confirmação da ordem (MRC049, UMRC049.pas:827)No momento do "Confirmar/Encerrar" da ordem de carregamento, se ST_ORDEMCARREG <> 'R' → chama Gera_Estoque e Gera_Financeiro. Quando ST_ORDEMCARREG = 'R', esses dois passos são pulados, pois o fluxo de estoque/financeiro da recapadora é disparado em outro ponto do ciclo (ordem de produção, movimentação de bem, etc.)
Demais telas (MPD011, MRC020)Recebem tratamento de "caso default" (cai nos else de S, F) — grid sem coluna de pedido, consulta parametrizada padrão, campos de similar ocultos, impostos por nota

Simulação passo a passo​

  1. MFA001 → ST_ORDEMCARREG = "Gera NF Recapadora"
  2. Salve (F6)
  3. Crie e confirme um embarque/ordem de carregamento vinculado a um pedido de recapagem
  4. Abra o MRC049 - Encerramento de Ordem de Carregamento
  5. Selecione a ordem e clique em Confirmar
  6. O sistema valida notas fiscais bloqueadas, atende o pedido, muda status para A em ORDEMCARREG e EMBARQUE — mas não chama Gera_Estoque nem Gera_Financeiro neste ponto
  7. A movimentação de estoque e a geração do financeiro ocorrem em outro momento do fluxo da recapadora (ex.: baixa do produto reformado)

Resultado esperado: o encerramento da ordem de carregamento apenas muda status e atende pedido, sem gerar estoque/financeiro — delegando esses passos ao fluxo específico de recapagem.

Este modo é exclusivo de clientes que operam como recapadora e possuem o módulo MRC instalado. Fora desse contexto, não deve ser selecionado.


Observação importante — não confundir com o campo homônimo da tabela ORDEMCARREG​

Existe um campo com o mesmo nome (ST_ORDEMCARREG) na tabela ORDEMCARREG (e também em ITEMPEDIDO/TROCAPED.PS_/QT_/ST_ORDEMCARREG derivados). Esse campo é o status da ordem e usa domínio diferente do parâmetro:

Valor em ORDEMCARREG.ST_ORDEMCARREGSignificado
NOrdem Não atendida (ainda aberta)
AOrdem Atendida / Confirmada
COrdem Cancelada

Esses valores não têm relação com os valores do parâmetro PARMFATUR.ST_ORDEMCARREG (S, N, F, R). Vários lugares no código e procedures (CANCELA_NOTAFISCAL, GERA_NOTAFISCALORDEMCARREG, GERA_NFORDEMCARREGMRC049, VALIDA_PEDIDOFATURADORECAP, TRGBIU_NFE, VIEW_COMISSAOPEDIDO, etc.) filtram por ORDEMCARREG.ST_ORDEMCARREG, e essas chamadas não são afetadas pelo parâmetro de faturamento documentado aqui.

Interação com outros parâmetros​

  • TPENVIO (de CONFIGNFE): em MPD011 o botão "Gerar Automático" só aparece com ST_ORDEMCARREG = 'S' e TPENVIO = 'L'. Sem o 'L', mesmo com 'S' o botão permanece oculto.
  • ST_MOSTRAFATOR: em todos os modos, controla independentemente se lblVL_FATOR/edtVL_FATOR são visíveis. Porém, ST_ORDEMCARREG muda o DataField do edit (VL_FATOR para S/F, PC_FATOR para N/R).

Tabela Comparativa Resumida​

ValorNomeGranularidade da NFProduto SimilarImpostosVL_FATOR (campo)NR_DOCUMENTO no CONTASGera Estoque/Financeiro no MRC049Botão "Gerar Automático" (se TPENVIO='L')
SGera NF por Pedido1 NF por pedidoExibe (mas não substitui no INSERT)Por notaVL_FATOREmbarque/Empresa apenasSimSim
NGera NF por Pessoa (default)1 NF por pessoaOcultoPor notaPC_FATOREmbarque/Empresa apenasSimNão
FGera NF com (Similar)1 NF por pessoaExibe E substitui o CD_ITEM pelo similar no INSERTPor itemVL_FATOREmbarque/Empresa + NR_DOCUMENTO = NR_PEDIDOSimNão
RGera NF Recapadora(cai no default)OcultoPor notaPC_FATOREmbarque/Empresa apenasNão (pulado)Não

Referências no Código Fonte​

Tela MFA001 (definição do parâmetro)​

  • source/MFA001/UdmMFA001.dfm:726-729 — declaração do TField tabPARMFATURST_ORDEMCARREG: TStringField, FieldName ST_ORDEMCARREG, Size 1
  • source/MFA001/UdmMFA001.dfm:88 — SELECT que lê PARMFATUR.ST_ORDEMCARREG
  • source/MFA001/UdmMFA001.dfm:2344 — INSERT da PARMFATUR (AfterInsert)
  • source/MFA001/UdmMFA001.dfm:2719 — UPDATE da PARMFATUR (persistência)
  • source/MFA001/UdmMFA001.pas:62 — TField publicado no TDataModule
  • source/MFA001/UdmMFA001.pas:457 — tabPARMFATURST_ORDEMCARREG.AsString := 'N'; (valor default no AfterInsert)
  • source/MFA001/UMFA001.pas:386 — cmbST_ORDEMCARREG: TwwDBComboBox;
  • source/MFA001/UMFA001.dfm:6816-6844 — definição do ComboBox (DataField = 'ST_ORDEMCARREG') com os 4 itens:
    • Gera NF por Pedido → S
    • Gera NF por Pessoa → N
    • Gera NF com (Similar) → F
    • Gera NF Recapadora → R

Consumo do parâmetro (leitura via ParmFatur.Values['ST_ORDEMCARREG'])​

  • source/MPD011/UMPD011.pas:179 — exibe btnGerarAutomatico se ST_ORDEMCARREG='S' E TPENVIO='L'
  • source/MPD011/UMPD011.pas:655 — troca SQL da tabORDEMPESSOA e mostra coluna NR_PEDIDO quando 'S'
  • source/MPD011/UdmMPD011.pas:1577-1583 — SQL BuscaParametros_MPD011 que lê PF.ST_ORDEMCARREG da PARMFATUR (inclusive duas vezes na mesma query)
  • source/MPD011/UdmNFORDEM.pas:573 — mostra/oculta campos de similar e muda DataField do VL_FATOR quando 'F' Or 'S'
  • source/MPD011/UdmNFORDEM.pas:1045 — monta SQL direto para tabPEDIDONOTA (ORDEMCARREG + ITEMPEDIDO + PEDIDO) quando 'S'
  • source/MPD011/UdmNFORDEM.pas:1486-1489 — substitui CD_ITEM por CD_ITEMSIMILAR no INSERT em ITEMNOTA quando 'F'
  • source/MPD011/UdmNFORDEM.pas:1629 — grava impostos item-a-item em IMPOSTONOTA quando 'F'
  • source/MPD011/UdmNFORDEM.pas:2047 — monta SQL direto para consulta de itens quando 'S'
  • source/MPD011/UdmNFORDEM.pas:2179 — grava impostos por nota em IMPOSTONOTA quando ST_ORDEMCARREG <> 'F'
  • source/MPD011/UNFORDEM.pas:1044 — atualiza NR_DOCUMENTO = NR_PEDIDO em CONTAS quando 'F'
  • source/MPD011/UNFORDEM.pas:1901 — edtVL_FATOR.OnExit aplica rateio por valor quando 'F' Or 'S'
  • source/MRC020/UdmMRC020NFORDEM.pas:651 — rotina AtendePedido_Nota monta SQL direto (ORDEMCARREG + ITEMPEDIDO + PEDIDO) quando 'S'
  • source/MRC049/UMRC049.pas:827 — pula Gera_Estoque e Gera_Financeiro no encerramento da ordem quando 'R'

DDL​

  • docs/schema/tables/PARMFATUR.sql:22 — ST_ORDEMCARREG DOM_CHAR1 default 'N' NOT NULL