Parâmetro de Impressão de Comprovante de Comissão
Tela de configuração: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Notas Fiscais → Parâmetros de Notas (label "Imprime Comprovante de Comissão") Tabela:
PARMFATUR.ST_IMPRIMERECIBOCOMISSAOValor padrão:N(Não)
Controla se, ao salvar uma Nota Fiscal de Saída (MNF002), o sistema dispara automaticamente a impressão do relatório RECIBOCOMISSAO (Comprovante/Recibo de Comissão) contendo data de emissão, número da nota, vendedor(es) e valor total da comissão calculada para os itens da nota.
Telas impactadas
| Módulo | Código | Descrição |
|---|---|---|
| Parâmetros | MFA001 | Cadastro do parâmetro (ComboBox cmbST_IMPRIMERECIBOCOMISSAO) |
| Nota Fiscal Saída | MNF002 | Ao gravar a nota, gera o relatório RECIBOCOMISSAO quando ativo |
| Config. Pedido Outros | MCO006 | Apenas carrega o campo do PARMFATUR no SELECT (sem uso lógico direto) |
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
ST_IMPRIMERECIBOCOMISSAO | PARMFATUR | Flag S/N - se imprime o recibo automaticamente ao salvar NF |
ST_VARIOSVENDEDORES | PARMFATUR | Define se a consulta lê ITEMNOTAVENDEDOR (múltiplos vendedores) ou NOTA.CD_VENDEDOR (vendedor único) |
VL_COMISSAO | ITEMNOTA / ITEMNOTAVENDEDOR | Valor de comissão por item somado no recibo |
CD_VENDEDOR | NOTA / ITEMNOTAVENDEDOR | Vendedor(es) da nota que recebem o comprovante |
ST_IMPRIMERECCOMISSAO | TIPOVENDEDOR | Filtro adicional apenas no modo múltiplos vendedores - só agrupa vendedores cujo tipo tenha ST_IMPRIMERECCOMISSAO = 'S' |
NM_PESSOA, NR_CNPJCPF | PESSOA | Dados do cliente e do vendedor exibidos no recibo |
Opções disponíveis
S - Sim
| O que faz | Detalhe |
|---|---|
| Imprime recibo ao salvar NF? | SIM - dispara GeraRelatorio(..., 'RECIBOCOMISSAO', Consulta) dentro do btnSalvarClick da MNF002 |
| Consulta montada | Varia conforme ST_VARIOSVENDEDORES ('S' = join em ITEMNOTAVENDEDOR + TIPOVENDEDOR; caso contrário, usa NOTA.CD_VENDEDOR diretamente) |
| Filtro obrigatório no modo multi-vendedor | TIPOVENDEDOR.ST_IMPRIMERECCOMISSAO = 'S' (vendedores com tipo não marcado ficam de fora do recibo) |
| Só imprime se houver registros | Se dtSet.RecordCount = 0, GeraRelatorio não é chamado |
| Agrupamento | GROUP BY por data de emissão, número da nota, vendedor, cliente e CPF/CNPJ; soma de VL_COMISSAO |
Simulação passo a passo
- Vá em MFA001 → Parâmetros → Faturamento → Opção 1 → Imprime Comprovante de Comissão =
Sim. - Salve os parâmetros (F6).
- Abra a Emissão de Nota Fiscal de Saída (MNF002) e monte uma NF com itens que geram comissão (ou seja,
VL_COMISSAO > 0nos itens). - Informe um vendedor (se
ST_VARIOSVENDEDORES = 'N') ou distribua itens entre vendedores emITEMNOTAVENDEDOR(seST_VARIOSVENDEDORES = 'S'). - Clique em Salvar (
btnSalvar). - Após o commit da nota, o sistema executa a consulta e, havendo resultado, gera automaticamente o relatório
RECIBOCOMISSAOexibindo a comissão do(s) vendedor(es) para aquela nota.
Resultado esperado: O comprovante de comissão é impresso/visualizado automaticamente sempre que uma NF de saída é gravada, servindo como recibo para o vendedor.
N - Não
| O que faz | Detalhe |
|---|---|
| Imprime recibo ao salvar NF? | NÃO - o bloco if (ParmFatur.Values['ST_IMPRIMERECIBOCOMISSAO'] = 'S') é ignorado |
| Impacto no fluxo de gravação | Nenhum - a NF é salva normalmente, apenas sem disparar o relatório |
| Como imprimir manualmente? | O recibo de comissão pode ser gerado por relatórios convencionais da área de comissão (ver ST_COMISSAO) |
Simulação passo a passo
- Vá em MFA001 → Imprime Comprovante de Comissão =
Não. - Salve os parâmetros (F6).
- Abra a Emissão de Nota Fiscal de Saída (MNF002) e grave uma NF com itens que geram comissão.
- Clique em Salvar.
- A nota é gravada normalmente, porém nenhum relatório é impresso automaticamente após o salvamento.
Resultado esperado: O salvamento da NF não dispara a impressão do recibo de comissão. Este é o valor padrão ao criar um novo registro no MFA001.
Tabela Comparativa Resumida
| Opção | Descrição | Dispara RECIBOCOMISSAO ao salvar NF? | Consulta a ITEMNOTAVENDEDOR? | Filtra por TIPOVENDEDOR.ST_IMPRIMERECCOMISSAO? |
|---|---|---|---|---|
| S | Sim | Sim | Somente se ST_VARIOSVENDEDORES = 'S' | Somente no modo multi-vendedor |
| N | Não (padrão) | Não | — | — |
Referências no Código Fonte
ComboBox da tela MFA001
-
Arquivo:
source/MFA001/UMFA001.dfm(linhas 7196-7222)object cmbST_IMPRIMERECIBOCOMISSAO: TwwDBComboBoxDataField = 'ST_IMPRIMERECIBOCOMISSAO'DataSource = dmMFA001.dsPARMFATURItems.Strings = ('Sim'#9'S''Não'#9'N')end -
Arquivo:
source/MFA001/UMFA001.dfm(linhas 6300-6314) - Labellbl4comCaption = 'Imprime Comprovante de Comissão'eFocusControl = cmbST_IMPRIMERECIBOCOMISSAO. -
Arquivo:
source/MFA001/UMFA001.pas(linha 401) - declaração do ComboBox. -
Arquivo:
source/MFA001/UdmMFA001.dfm(linhas 1478-1483) - TFieldtabPARMFATURST_IMPRIMERECIBOCOMISSAO(FixedChar = True,Size = 1). -
Arquivo:
source/MFA001/UdmMFA001.dfm(linha 2404) - SELECT doPARMFATUR. -
Arquivo:
source/MFA001/UdmMFA001.dfm(linha 2569) - INSERT doPARMFATUR. -
Arquivo:
source/MFA001/UdmMFA001.dfm(linha 2796) - UPDATE doPARMFATUR. -
Arquivo:
source/MFA001/UdmMFA001.pas(linha 197) - declaração do TField. -
Arquivo:
source/MFA001/UdmMFA001.pas(linha 517) - valor padrão emAfterInsert:tabPARMFATURST_IMPRIMERECIBOCOMISSAO.AsString := 'N';
Uso na Emissão de NF de Saída (MNF002)
-
Arquivo:
source/MNF002/UMNF002.pas(linhas 4598-4662) - dentro deTfrmMNF002.btnSalvarClick. Após o commit da nota, quando o parâmetro está ativo, monta a consulta apropriada e chamaGeraRelatorio(..., 'RECIBOCOMISSAO', Consulta):if (ParmFatur.Values['ST_IMPRIMERECIBOCOMISSAO'] = 'S')thenbeginIf (ParmFatur.Values['ST_VARIOSVENDEDORES'] = 'S') ThenbeginConsulta := 'SELECT N.DT_EMISSAO, COALESCE(N.NR_NOTAFOR, N.NR_NOTAFISCAL) NR_NOTAFISCAL, ' + #10 +'ITV.CD_VENDEDOR, V.NM_PESSOA NM_VENDEDOR, SUM( ITV.VL_COMISSAO) VL_COMISSAO, ' + #10 +'P.NM_PESSOA, P.NR_CNPJCPF' + #10 +'FROM NOTA N ' + #10 +'INNER JOIN PESSOA P ON (P.CD_PESSOA = N.CD_PESSOA) ' + #10 +'INNER JOIN ITEMNOTA T ON (...) ' + #10 +'INNER JOIN ITEMNOTAVENDEDOR ITV ON (...) ' + #10 +'INNER JOIN PESSOA V ON (V.CD_PESSOA = ITV.CD_VENDEDOR) ' + #10 +'LEFT JOIN TIPOVENDEDOR E ON (E.CD_TIPO = ITV.CD_TIPO) ' + #10 +'WHERE N.CD_EMPRESA = ... ' + #10 +'AND E.ST_IMPRIMERECCOMISSAO = ''S'' ' + #10 +'GROUP BY ...';dtSet := ExecutaQuery(dmMNF002.transactionNota, Consulta);tryif (dtSet.RecordCount > 0)thenGeraRelatorio(dmMNF002.transactionNota, 'RECIBOCOMISSAO', Consulta);finallyFreeDataset(dtSet);end;endelsebeginConsulta := 'SELECT N.DT_EMISSAO, COALESCE(N.NR_NOTAFOR, N.NR_NOTAFISCAL) NR_NOTAFISCAL, ' + #10 +'N.CD_VENDEDOR, V.NM_PESSOA NM_VENDEDOR, SUM( T.VL_COMISSAO) VL_COMISSAO,' + #10 +'P.NM_PESSOA, P.NR_CNPJCPF' + #10 +'FROM NOTA N ' + #10 +'INNER JOIN PESSOA P ON (P.CD_PESSOA = N.CD_PESSOA) ' + #10 +'INNER JOIN ITEMNOTA T ON (...) ' + #10 +'INNER JOIN PESSOA V ON (V.CD_PESSOA = N.CD_VENDEDOR) ' + #10 +'WHERE N.CD_EMPRESA = ... ' + #10 +'GROUP BY ...';dtSet := ExecutaQuery(dmMNF002.transactionNota, Consulta);tryif (dtSet.RecordCount > 0) thenGeraRelatorio(dmMNF002.transactionNota, 'RECIBOCOMISSAO', Consulta);finallyFreeDataset(dtSet);end;end;end;
Outras referências (apenas leitura do campo)
- Arquivo:
source/MNF002/UdmMNF002.pas(linha 10505) - campo incluído no SELECT que carregaPARMFATURpara o cacheParmFatur.Values. - Arquivo:
source/MCO006/UdmMCO006.pas(linha 2114) - campo incluído no SELECT dePARMFATUR(sem uso lógico adicional na MCO006).
Observações
- Nenhuma referência em
Scripts/(stored procedures/views). O comportamento é totalmente controlado pela camada Delphi (MNF002) e pelo template de relatórioRECIBOCOMISSAO. - O relatório
RECIBOCOMISSAOé um template do sistema de relatórios - seu layout é responsável pela formatação do comprovante (não está definido neste parâmetro). - No modo multi-vendedor (
ST_VARIOSVENDEDORES = 'S'), somente vendedores cujoTIPOVENDEDOR.ST_IMPRIMERECCOMISSAO = 'S'entram no recibo. Revise o cadastro de tipos de vendedor caso o recibo saia em branco inesperadamente. - O recibo só é impresso se a consulta retornar registros, portanto notas com
VL_COMISSAO = 0em todos os itens (ou sem vendedor elegível) não disparam o relatório mesmo com o parâmetro ativo.