ST_CONSOLPED - Consolida Pedidos na Emissão de NF (Comportamento)
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Notas Fiscais → Parâmetros de Notas (Label "Consolida Pedidos na Emissão de NF",
UMFA001.dfm:5986) Tabela:PARMFATUR.ST_CONSOLPEDValor padrão:S(Sim) - definido noAfterInsertdo dataset (UdmMFA001.pas:456)
Telas impactadas
| Módulo | Código | Descrição | Uso do parâmetro |
|---|---|---|---|
| NF Entrada | MNF001 | Emissão de NF de entrada | Define se os pedidos trazidos para a nota podem ser de múltiplas empresas ou apenas da empresa logada |
| NF Saída | MNF002 | Emissão de NF de saída | Idêntico ao MNF001 (consolidação por cliente ou por empresa) |
| NF Saída (variante) | MNF008 | Emissão de NF de saída (variante) | Consolidação de pedidos durante vínculo na nota |
| NF Saída (variante) | MNF013 | Emissão de NF de saída | Carrega iST_CONSOLPED para lógica interna |
| NF Saída (variante) | MNF014 | Emissão de NF de saída | Carrega iST_CONSOLPED para lógica interna |
| Histórico/Auditoria | MCO006 | Lê ST_CONSOLPED no SELECT de PARMFATUR | Somente leitura |
| Parâmetros (captação) | CPD009 | Edita campos de PARMFATUR via UPDATE PARMFATUR SET ST_CONSOLPED = :ST_CONSOLPED | Persistência |
Campos envolvidos
| Campo | Descrição |
|---|---|
PEDIDO.CD_EMPRESA | Empresa do pedido (filtro-chave controlado pelo parâmetro) |
PEDIDO.NR_PEDIDO | Número do pedido informado na NF |
PEDIDO.CD_PESSOA | Cliente/fornecedor do pedido |
NOTA.CD_EMPRPEDIDO | Empresa do pedido vinculado à nota (só faz sentido quando consolida) |
NOTA.NR_PEDIDO | Número do pedido vinculado à nota |
Opções disponíveis
S - Sim (consolida pedidos de outras empresas)
| O que faz | Detalhe |
|---|---|
| Busca de pedidos por cliente | Filtra apenas por CD_PESSOA (sem exigir CD_EMPRESA) |
| Pedidos de outras empresas | Aparecem na seleção / podem ser vinculados à nota |
Campo "Empresa do Pedido" (CD_EMPRPEDIDO) | Se informado, restringe manualmente a uma empresa; se vazio, aceita qualquer uma |
| Quando há mais de um pedido com mesmo número em empresas diferentes | Abre TfrmPedEmpresas / TfrmPedidoEmpresas para o usuário escolher a empresa |
Validação NR_PEDIDO (MNF001) | Pula o filtro P.CD_EMPRESA = <empresa logada> na consulta base (UdmMNF001.pas:5968) |
| XML / Importação de pedido | Campo CD_EMPRESA do pedido XML fica editável (não trava na empresa logada) |
Simulação passo a passo
- MFA001 → Parâmetros → Ambos → Opção 1 → "Consolida Pedidos na Emissão de NF" = Sim
- Salve os parâmetros (F6)
- Supondo que a Empresa 1 e a Empresa 2 tenham pedidos para o cliente X (NR 100 e NR 200)
- Abra uma NF de Saída (MNF002) emitida pela Empresa 1
- Informe o cliente X → ao carregar pedidos, aparecem tanto o pedido 100 (Empresa 1) quanto o 200 (Empresa 2)
- Se existir mais de um pedido com o mesmo número em empresas diferentes, o sistema abre uma janela de seleção de empresa antes de trazer o pedido
- No importador XML (MNF001 → DadosXML), o campo "Empresa" do pedido fica editável (pode importar pedido de outra empresa)
Resultado esperado: A empresa logada não restringe os pedidos; qualquer pedido do cliente/fornecedor pode ser usado na nota, independentemente da empresa de origem.
N - Não (apenas pedidos da empresa logada)
| O que faz | Detalhe |
|---|---|
| Busca de pedidos por cliente | Filtra por CD_PESSOA E CD_EMPRESA = sessao.empresa.cd_Empresa |
| Pedidos de outras empresas | Não aparecem (filtrados fora da consulta) |
Validação NR_PEDIDO | Acrescenta AND P.CD_EMPRESA = <empresa logada> à query base (UdmMNF001.pas:5969, UdmMNF002.pas:8290) |
| XML / Importação de pedido | Campo CD_EMPRESA é preenchido automaticamente com a empresa logada e marcado como ReadOnly (UdmMNF001.pas:10129-10133) |
| Seleção manual de empresa do pedido | Se o usuário informar CD_EMPRPEDIDO diferente da empresa logada, a consulta passa a usar esse valor como filtro único (UdmMNF001.pas:5977, UdmMNF002.pas:8296) |
Simulação passo a passo
- MFA001 → "Consolida Pedidos na Emissão de NF" = Não
- Salve os parâmetros (F6)
- Logue na Empresa 1 e abra uma NF de Saída (MNF002)
- Informe o cliente X → a busca de pedidos traz apenas os pedidos da Empresa 1
- Pedidos do cliente X feitos na Empresa 2 não aparecem na lista
- No importador XML (MNF001 → DadosXML), o campo "Empresa" do pedido vem preenchido com a empresa logada e não pode ser trocado
- Se tentar informar manualmente um
NR_PEDIDOque existe apenas em outra empresa, o sistema responde que o pedido não foi encontrado
Resultado esperado: O sistema isola cada empresa: uma NF emitida pela Empresa 1 só consegue vincular pedidos da Empresa 1.
Observação
- Interação com MPD001/MPD002: o parâmetro afeta apenas a etapa de vincular pedidos à NF. A criação de pedidos em si não depende de
ST_CONSOLPED. - Pedidos com mesmo
NR_PEDIDOem empresas diferentes: quandoST_CONSOLPED = 'S', o sistema identifica o conflito e abreTfrmPedEmpresas(MNF001) ouTfrmPedidoEmpresas(MNF008) para o usuário escolher qual empresa (UdmMNF008.pas:3832-3849). - MNF001 (entrada) lê
ST_CONSOLPEDemiST_CONSOLPED(UdmMNF001.pas:1395) e também consultaparmFatur.Values['ST_CONSOLPED']diretamente em alguns pontos (UdmMNF001.pas:5977,UdmMNF001.pas:10129,UMNF001DadosXML.pas:2113,UMNF001DadosXML.pas:2118). - MNF008/MNF013/MNF014 armazenam o valor em
iST_CONSOLPED(UdmMNF008.pas:675,UdmMNF013.pas:720,UdmMNF014.pas:343).
Tabela Comparativa Resumida
| Opção | Descrição | Filtra por empresa logada? | Aceita pedido de outra empresa? | CD_EMPRESA do pedido XML |
|---|---|---|---|---|
| S | Sim (padrão) | Não | Sim | Editável |
| N | Não | Sim | Não | ReadOnly (empresa logada) |
Referências no Código Fonte
MFA001 (tela de configuração)
source/MFA001/UMFA001.dfm:5986- Label "Consolida Pedidos na Emissão de NF"source/MFA001/UMFA001.dfm:6603-6629- ComboBoxcmbST_CONSOLPEDcomItems.Strings = ('Sim'#9'S', 'Não'#9'N')source/MFA001/UMFA001.pas:378- DeclaraçãocmbST_CONSOLPED: TwwDBComboBoxsource/MFA001/UdmMFA001.pas:63-tabPARMFATURST_CONSOLPED: TStringFieldsource/MFA001/UdmMFA001.pas:456- Valor default'S'noAfterInsertsource/MFA001/UdmMFA001.dfm:87, 730-733, 2343, 2489, 2706, 2967- SELECT/INSERT/UPDATE deST_CONSOLPED
MNF001 (NF de entrada)
source/MNF001/UdmMNF001.pas:1108- Declaração variáveliST_CONSOLPED: Stringsource/MNF001/UdmMNF001.pas:1373- SELECT incluindoST_CONSOLPEDde PARMFATURsource/MNF001/UdmMNF001.pas:1395- CarregaiST_CONSOLPED := Resultado[8]source/MNF001/UdmMNF001.pas:5968-5969- Pula filtroCD_EMPRESAquando<> 'S'source/MNF001/UdmMNF001.pas:5977- Adiciona filtroCD_EMPRESAquando'N'source/MNF001/UdmMNF001.pas:10129-10135-cdsPEDIDOXMLAfterInsert: preenche e travaCD_EMPRESAquando'N'source/MNF001/UMNF001.pas:1197-1211-Consulta_Pedidos: quando'S'usa só CD_PESSOA; quando'N'adicionaCD_EMPRESAsource/MNF001/UMNF001DadosXML.pas:2113-2119- F9 do pedido: travamento de CD_EMPRESA quando'N'
MNF002 (NF de saída)
source/MNF002/UdmMNF002.pas:8289-8290- Adiciona filtroCD_EMPRESAquando'N'source/MNF002/UdmMNF002.pas:8296- Filtro adicional porCD_EMPRPEDIDOquando'N'source/MNF002/UdmMNF002.pas:10492- SELECT PARMFATUR incluindoST_CONSOLPEDsource/MNF002/UMNF002.pas:2500-2514-Consulta_Pedidos: ramifica filtro por empresa conforme valor
MNF008 (NF de saída - variante)
source/MNF008/UdmMNF008.pas:476- DeclaraçãoiST_CONSOLPED: Stringsource/MNF008/UdmMNF008.pas:652, 757- SELECT PARMFATUR incluindoST_CONSOLPEDsource/MNF008/UdmMNF008.pas:675-iST_CONSOLPED := Resultado[11]source/MNF008/UdmMNF008.pas:3832-3849- Lógica de seleção de empresa quando há pedidos homônimos (ativa quando'S')source/MNF008/UMNF008.pas:804-819-Consulta_Pedidos: ramificação da consulta
MNF013 / MNF014 (variantes)
source/MNF013/UdmMNF013.pas:535, 699, 720- Declaração, SELECT e carga deiST_CONSOLPEDsource/MNF014/UdmMNF014.pas:269, 323, 343- Declaração, SELECT e carga deiST_CONSOLPED
Outras referências (somente leitura do campo)
source/MCO006/UdmMCO006.pas:2101- SELECT PARMFATUR incluindoST_CONSOLPEDsource/CPD009/UdmCPD009.dfm:303, 452, 541- SELECT/UPDATE em PARMFATUR (persistência)