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_ORDEMCARREGValor 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ódulo | Código | Papel |
|---|---|---|
| Faturamento por Ordem de Carregamento | MPD011 | Tela 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 Embarque | MRC020 | Rotina AtendePedido_Nota monta SQL diferente para buscar itens do embarque quando o parâmetro é "S" |
| Confirmação de Ordem de Carregamento (Recap) | MRC049 | Quando 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
| Campo | Descrição |
|---|---|
PARMFATUR.ST_ORDEMCARREG | O 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_ORDEMCARREG | Campo 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_LAYORDCARREG | Layout 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 faz | Detalhe |
|---|---|
| Critério de consolidação | Uma 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
- MFA001 → aba Notas Fiscais → sub-aba Parâmetros de Notas → Ordem Carregamento = "Gera NF por Pedido"
- Salve (F6)
- Crie 2 pedidos de venda para o mesmo cliente e vincule ambos ao mesmo Embarque
- Abra o MPD011 - Faturamento por Ordem de Carregamento
- Observe: se
CONFIGNFE.TPENVIO = 'L', o botão "Gerar Automático" aparece na toolbar - Na aba de seleção, a grid de Pessoa/Ordem agora mostra a coluna
NR_PEDIDO - Selecione o embarque e avance para a emissão da NF
- Observe: campos de Produto Similar (
CD_ITEMSIMILAR) eVL_FATORaparecem 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 faz | Detalhe |
|---|---|
| Critério de consolidação | Uma ú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_FATOR | Ocultos — edtVL_FATOR.DataField := 'PC_FATOR' (fator percentual em vez de valor) |
| Impostos na NF | Grava 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
- MFA001 → ST_ORDEMCARREG = "Gera NF por Pessoa" (padrão)
- Salve (F6)
- Crie 3 pedidos de venda para o mesmo cliente e coloque todos no mesmo Embarque
- Abra o MPD011 e selecione o embarque
- A grid de pessoa não mostra coluna de pedido — apenas o cliente agrupando todos os itens
- Emita a NF → uma única nota com todos os itens dos 3 pedidos é gerada para aquele cliente
- 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 faz | Detalhe |
|---|---|
| Critério de consolidação | Igual 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_FATOR | Rateio do valor do fator é aplicado item-a-item no edtVL_FATOREXIT (UNFORDEM.pas:1901) |
Simulação passo a passo
- MFA001 → ST_ORDEMCARREG = "Gera NF com (Similar)"
- Salve (F6)
- Crie um pedido de venda com o produto A (ex.: pneu novo) e vincule-o a um embarque
- No cadastro do produto A, configure um código similar (ex.: produto B — o pneu recapado/reformado)
- Abra o MPD011, selecione o embarque e avance para a emissão da NF
- Na grade de itens da NF, informe o
CD_ITEMSIMILAR = Bna linha do item A - Preencha o
VL_FATORpara aplicar rateio de desconto/valor sobre os itens - Grave a NF
- Consulte
ITEMNOTA: o item foi gravado comCD_ITEM = B(similar), não A - Consulte
IMPOSTONOTA: os impostos foram inseridos linha-a-linha para cada item - Consulte
CONTAS: o título financeiro temNR_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 faz | Detalhe |
|---|---|
| Critério de faturamento | Reservado 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
- MFA001 → ST_ORDEMCARREG = "Gera NF Recapadora"
- Salve (F6)
- Crie e confirme um embarque/ordem de carregamento vinculado a um pedido de recapagem
- Abra o MRC049 - Encerramento de Ordem de Carregamento
- Selecione a ordem e clique em Confirmar
- O sistema valida notas fiscais bloqueadas, atende o pedido, muda status para
Aem ORDEMCARREG e EMBARQUE — mas não chamaGera_EstoquenemGera_Financeironeste ponto - 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_ORDEMCARREG | Significado |
|---|---|
N | Ordem Não atendida (ainda aberta) |
A | Ordem Atendida / Confirmada |
C | Ordem 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 comST_ORDEMCARREG = 'S'eTPENVIO = 'L'. Sem o'L', mesmo com'S'o botão permanece oculto.ST_MOSTRAFATOR: em todos os modos, controla independentemente selblVL_FATOR/edtVL_FATORsão visíveis. Porém,ST_ORDEMCARREGmuda o DataField do edit (VL_FATORparaS/F,PC_FATORparaN/R).
Tabela Comparativa Resumida
| Valor | Nome | Granularidade da NF | Produto Similar | Impostos | VL_FATOR (campo) | NR_DOCUMENTO no CONTAS | Gera Estoque/Financeiro no MRC049 | Botão "Gerar Automático" (se TPENVIO='L') |
|---|---|---|---|---|---|---|---|---|
| S | Gera NF por Pedido | 1 NF por pedido | Exibe (mas não substitui no INSERT) | Por nota | VL_FATOR | Embarque/Empresa apenas | Sim | Sim |
| N | Gera NF por Pessoa (default) | 1 NF por pessoa | Oculto | Por nota | PC_FATOR | Embarque/Empresa apenas | Sim | Não |
| F | Gera NF com (Similar) | 1 NF por pessoa | Exibe E substitui o CD_ITEM pelo similar no INSERT | Por item | VL_FATOR | Embarque/Empresa + NR_DOCUMENTO = NR_PEDIDO | Sim | Não |
| R | Gera NF Recapadora | (cai no default) | Oculto | Por nota | PC_FATOR | Embarque/Empresa apenas | Nã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 TFieldtabPARMFATURST_ORDEMCARREG: TStringField, FieldNameST_ORDEMCARREG, Size 1source/MFA001/UdmMFA001.dfm:88— SELECT que lêPARMFATUR.ST_ORDEMCARREGsource/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 TDataModulesource/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→SGera NF por Pessoa→NGera NF com (Similar)→FGera NF Recapadora→R
Consumo do parâmetro (leitura via ParmFatur.Values['ST_ORDEMCARREG'])
source/MPD011/UMPD011.pas:179— exibebtnGerarAutomaticoseST_ORDEMCARREG='S'ETPENVIO='L'source/MPD011/UMPD011.pas:655— troca SQL databORDEMPESSOAe mostra colunaNR_PEDIDOquando'S'source/MPD011/UdmMPD011.pas:1577-1583— SQLBuscaParametros_MPD011que lêPF.ST_ORDEMCARREGda 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 paratabPEDIDONOTA(ORDEMCARREG + ITEMPEDIDO + PEDIDO) quando'S'source/MPD011/UdmNFORDEM.pas:1486-1489— substituiCD_ITEMporCD_ITEMSIMILARno INSERT emITEMNOTAquando'F'source/MPD011/UdmNFORDEM.pas:1629— grava impostos item-a-item emIMPOSTONOTAquando'F'source/MPD011/UdmNFORDEM.pas:2047— monta SQL direto para consulta de itens quando'S'source/MPD011/UdmNFORDEM.pas:2179— grava impostos por nota emIMPOSTONOTAquandoST_ORDEMCARREG <> 'F'source/MPD011/UNFORDEM.pas:1044— atualizaNR_DOCUMENTO = NR_PEDIDOemCONTASquando'F'source/MPD011/UNFORDEM.pas:1901—edtVL_FATOR.OnExitaplica rateio por valor quando'F' Or 'S'source/MRC020/UdmMRC020NFORDEM.pas:651— rotinaAtendePedido_Notamonta SQL direto (ORDEMCARREG + ITEMPEDIDO + PEDIDO) quando'S'source/MRC049/UMRC049.pas:827— pulaGera_EstoqueeGera_Financeirono encerramento da ordem quando'R'
DDL
docs/schema/tables/PARMFATUR.sql:22—ST_ORDEMCARREG DOM_CHAR1 default 'N' NOT NULL