Ordenação das Etiquetas LET100 (MNF001)
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Ambos → Opção 1 (rótulo "Ordena LET100[MNF001]") Tabela:
PARMFATUR.TP_ORDENALET100Valor padrão:N(Nenhuma)
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| NF Entrada | MNF001 | Rotina Imprime_Etiqueta — define Order by da consulta que alimenta o layout de etiquetas LET100 |
Pré-requisito de uso: o parâmetro só produz efeito quando o layout de etiquetas configurado na empresa é o
LET100(PARMFATUR.CD_LAYETIQUETA = 'LET100'). Para qualquer outro layout, o valor deTP_ORDENALET100é ignorado.
Campos envolvidos
| Campo | Descrição |
|---|---|
PARMFATUR.CD_LAYETIQUETA | Código do layout de etiqueta usado pela empresa. Só 'LET100' aciona a lógica de ordenação. |
ITEM.CD_ITEM | Código do produto — usado quando TP_ORDENALET100 = 'A'. |
ITEM.DS_ITEM | Descrição do produto — usada quando TP_ORDENALET100 = 'D'. |
NOTA.NR_SEQUENCIA (alias N.NR_SEQUENCIA) | Sequência de inserção do item na nota — usada quando TP_ORDENALET100 = 'I' (também entra no GROUP BY). |
Opções disponíveis
N - Nenhuma (sem ordenação)
| O que faz | Detalhe |
|---|---|
Order by aplicado | Nenhum — variável iOrderby fica em branco |
| Ordem efetiva das etiquetas | A ordem natural devolvida pelo Firebird (sem garantia) |
| Quando usar | Quando não importa a ordem de impressão das etiquetas |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Ambos → Opção 1 → "Ordena LET100[MNF001]" = Nenhuma
- Certifique-se que a empresa tem
CD_LAYETIQUETA = 'LET100' - Salve os parâmetros (F6)
- Abra uma NF de Entrada em MNF001 com vários itens lançados
- Dispare a impressão de etiquetas
- Na confirmação "Deseja Emitir as Etiquetas dos Produtos da Nota?", clique Sim
- As etiquetas saem na ordem natural do banco (sem
Order by)
Resultado esperado: as etiquetas são impressas sem ordenação explícita — a ordem pode variar entre execuções.
Este é o valor padrão ao criar um novo registro no MFA001 (ver
UdmMFA001.pas—tabPARMFATURAfterInsert).
A - Código do Item
| O que faz | Detalhe |
|---|---|
Order by aplicado | Order by ITEM.CD_ITEM |
| Ordem efetiva das etiquetas | Ascendente pelo código do produto |
| Quando usar | Quando o operador quer agrupar/encontrar etiquetas pelo código do item |
Simulação passo a passo
- MFA001 → "Ordena LET100[MNF001]" = Código do Item
- Salve os parâmetros (F6)
- Abra uma NF em MNF001 com itens de códigos variados (ex.: 1001, 2002, 500)
- Imprima as etiquetas (
LET100) e confirme o diálogo - A consulta adiciona
Order by ITEM.CD_ITEMaoSELECT
Resultado esperado: as etiquetas são geradas em ordem crescente de CD_ITEM (500, 1001, 2002 no exemplo).
D - Descrição do Item
| O que faz | Detalhe |
|---|---|
Order by aplicado | Order by ITEM.DS_ITEM |
| Ordem efetiva das etiquetas | Ascendente (alfabética) pela descrição do produto |
| Quando usar | Quando o operador separa/confere etiquetas pela descrição |
Simulação passo a passo
- MFA001 → "Ordena LET100[MNF001]" = Descrição do Item
- Salve os parâmetros (F6)
- Abra uma NF em MNF001 com itens de descrições variadas (ex.: "Parafuso", "Arruela", "Porca")
- Imprima as etiquetas (
LET100) - A consulta adiciona
Order by ITEM.DS_ITEM
Resultado esperado: etiquetas saem em ordem alfabética pela descrição ("Arruela", "Parafuso", "Porca").
I - Inserção (sequência na nota)
| O que faz | Detalhe |
|---|---|
Order by aplicado | Order by N.NR_SEQUENCIA |
GROUP BY ajustado | Adiciona N.NR_SEQUENCIA ao grupo (iGroup := ' N.NR_SEQUENCIA, ') |
| Ordem efetiva das etiquetas | Mesma ordem em que os itens foram lançados na nota |
| Quando usar | Quando o operador quer as etiquetas na ordem de digitação dos itens |
Simulação passo a passo
- MFA001 → "Ordena LET100[MNF001]" = Inserção
- Salve os parâmetros (F6)
- Abra uma NF em MNF001 e lance os itens em uma ordem específica (ex.: item B, depois item A, depois item C)
- Imprima as etiquetas (
LET100) - A consulta aplica
Order by N.NR_SEQUENCIAe agrupa porNR_SEQUENCIA
Resultado esperado: etiquetas saem na mesma ordem em que os itens foram digitados na nota (B, A, C no exemplo).
Tabela Comparativa Resumida
| Valor | Descrição | Order by aplicado | Ajuste em GROUP BY |
|---|---|---|---|
| N | Nenhuma (padrão) | (nenhum) | — |
| A | Código do Item | Order by ITEM.CD_ITEM | — |
| D | Descrição do Item | Order by ITEM.DS_ITEM | — |
| I | Inserção | Order by N.NR_SEQUENCIA | Adiciona N.NR_SEQUENCIA |
Referências no Código Fonte
Delphi - MFA001 (tela de parâmetros)
source/MFA001/UMFA001.dfm(linhas 2605-2617): labellblTP_ORDENALET100comCaption = 'Ordena LET100[MNF001]', posicionado noTabSheetpagFatOp1 (Ambos → Opção 1).source/MFA001/UMFA001.dfm(linhas 3462-3490): combocmbTP_ORDENACAOcomDataField = 'TP_ORDENALET100'eItems.Strings:'Nenhuma' #9 'N''Código do Item' #9 'A''Descrição do Item' #9 'D''Inserção' #9 'I'source/MFA001/UdmMFA001.pas(linha 275): declaraçãotabPARMFATURTP_ORDENALET100: TStringField;.source/MFA001/UdmMFA001.pas(linha 566, dentro detabPARMFATURAfterInsert): valor padrão ao inserir novo registro:tabPARMFATURTP_ORDENALET100.AsString := 'N';source/MFA001/UdmMFA001.dfm(linhas 287, 1927-1929, 2442, 2614, 2868, 3167): campo incluído noSELECT,INSERTeUPDATEdo datasettabPARMFATUR.
Delphi - MNF001 (único consumidor do parâmetro)
source/MNF001/UdmMNF001.pas(linha 1108): declaração da variável de sessãoiST_ORDENALET100: String;.source/MNF001/UdmMNF001.pas(linhas 1370-1417): leitura do valor daPARMFATURjunto aos demais parâmetros de faturamento:Consulta :='Select ... TP_ORDENALET100, ... From PARMFATUR Where CD_EMPRESA = ' + IntToStr(sessao.empresa.cd_Empresa);...dmMNF001.iST_ORDENALET100 := Resultado[25];source/MNF001/UMNF001.pas(linhas 699-721): uso efetivo dentro da rotinaImprime_Etiqueta, somente quando o layout éLET100:if (Trim(dmMNF001.iCD_LAYETIQUETA) = 'LET100') thenbeginif (dmMNF001.iST_ORDENALET100 = 'A') theniOrderby := ' Order by ITEM.CD_ITEM';if (dmMNF001.iST_ORDENALET100 = 'D') theniOrderby := ' Order by ITEM.DS_ITEM';if (dmMNF001.iST_ORDENALET100 = 'I') thenbeginiOrderby := ' Order by N.NR_SEQUENCIA';iGroup := ' N.NR_SEQUENCIA, ';end;if (dmMNF001.iST_ORDENALET100 = 'N') theniOrderby := '';end;
SQL (Scripts)
- Nenhuma referência a
TP_ORDENALET100emScripts/— o parâmetro é avaliado apenas no código Delphi do MNF001, não em stored procedures nem views.