Pular para o conteúdo principal

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_IMPRIMERECIBOCOMISSAO Valor 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óduloCódigoDescrição
ParâmetrosMFA001Cadastro do parâmetro (ComboBox cmbST_IMPRIMERECIBOCOMISSAO)
Nota Fiscal SaídaMNF002Ao gravar a nota, gera o relatório RECIBOCOMISSAO quando ativo
Config. Pedido OutrosMCO006Apenas carrega o campo do PARMFATUR no SELECT (sem uso lógico direto)

Campos envolvidos​

CampoTabelaDescrição
ST_IMPRIMERECIBOCOMISSAOPARMFATURFlag S/N - se imprime o recibo automaticamente ao salvar NF
ST_VARIOSVENDEDORESPARMFATURDefine se a consulta lê ITEMNOTAVENDEDOR (múltiplos vendedores) ou NOTA.CD_VENDEDOR (vendedor único)
VL_COMISSAOITEMNOTA / ITEMNOTAVENDEDORValor de comissão por item somado no recibo
CD_VENDEDORNOTA / ITEMNOTAVENDEDORVendedor(es) da nota que recebem o comprovante
ST_IMPRIMERECCOMISSAOTIPOVENDEDORFiltro adicional apenas no modo múltiplos vendedores - só agrupa vendedores cujo tipo tenha ST_IMPRIMERECCOMISSAO = 'S'
NM_PESSOA, NR_CNPJCPFPESSOADados do cliente e do vendedor exibidos no recibo

Opções disponíveis​

S - Sim​

O que fazDetalhe
Imprime recibo ao salvar NF?SIM - dispara GeraRelatorio(..., 'RECIBOCOMISSAO', Consulta) dentro do btnSalvarClick da MNF002
Consulta montadaVaria conforme ST_VARIOSVENDEDORES ('S' = join em ITEMNOTAVENDEDOR + TIPOVENDEDOR; caso contrário, usa NOTA.CD_VENDEDOR diretamente)
Filtro obrigatório no modo multi-vendedorTIPOVENDEDOR.ST_IMPRIMERECCOMISSAO = 'S' (vendedores com tipo não marcado ficam de fora do recibo)
Só imprime se houver registrosSe dtSet.RecordCount = 0, GeraRelatorio não é chamado
AgrupamentoGROUP BY por data de emissão, número da nota, vendedor, cliente e CPF/CNPJ; soma de VL_COMISSAO

Simulação passo a passo​

  1. Vá em MFA001 → Parâmetros → Faturamento → Opção 1 → Imprime Comprovante de Comissão = Sim.
  2. Salve os parâmetros (F6).
  3. 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 > 0 nos itens).
  4. Informe um vendedor (se ST_VARIOSVENDEDORES = 'N') ou distribua itens entre vendedores em ITEMNOTAVENDEDOR (se ST_VARIOSVENDEDORES = 'S').
  5. Clique em Salvar (btnSalvar).
  6. Após o commit da nota, o sistema executa a consulta e, havendo resultado, gera automaticamente o relatório RECIBOCOMISSAO exibindo 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 fazDetalhe
Imprime recibo ao salvar NF?NÃO - o bloco if (ParmFatur.Values['ST_IMPRIMERECIBOCOMISSAO'] = 'S') é ignorado
Impacto no fluxo de gravaçãoNenhum - 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​

  1. Vá em MFA001 → Imprime Comprovante de Comissão = Não.
  2. Salve os parâmetros (F6).
  3. Abra a Emissão de Nota Fiscal de Saída (MNF002) e grave uma NF com itens que geram comissão.
  4. Clique em Salvar.
  5. 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çãoDescriçãoDispara RECIBOCOMISSAO ao salvar NF?Consulta a ITEMNOTAVENDEDOR?Filtra por TIPOVENDEDOR.ST_IMPRIMERECCOMISSAO?
SSimSimSomente se ST_VARIOSVENDEDORES = 'S'Somente no modo multi-vendedor
NNã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: TwwDBComboBox
    DataField = 'ST_IMPRIMERECIBOCOMISSAO'
    DataSource = dmMFA001.dsPARMFATUR
    Items.Strings = (
    'Sim'#9'S'
    'Não'#9'N')
    end
  • Arquivo: source/MFA001/UMFA001.dfm (linhas 6300-6314) - Label lbl4 com Caption = 'Imprime Comprovante de Comissão' e FocusControl = cmbST_IMPRIMERECIBOCOMISSAO.

  • Arquivo: source/MFA001/UMFA001.pas (linha 401) - declaração do ComboBox.

  • Arquivo: source/MFA001/UdmMFA001.dfm (linhas 1478-1483) - TField tabPARMFATURST_IMPRIMERECIBOCOMISSAO (FixedChar = True, Size = 1).

  • Arquivo: source/MFA001/UdmMFA001.dfm (linha 2404) - SELECT do PARMFATUR.

  • Arquivo: source/MFA001/UdmMFA001.dfm (linha 2569) - INSERT do PARMFATUR.

  • Arquivo: source/MFA001/UdmMFA001.dfm (linha 2796) - UPDATE do PARMFATUR.

  • Arquivo: source/MFA001/UdmMFA001.pas (linha 197) - declaração do TField.

  • Arquivo: source/MFA001/UdmMFA001.pas (linha 517) - valor padrão em AfterInsert:

    tabPARMFATURST_IMPRIMERECIBOCOMISSAO.AsString := 'N';

Uso na Emissão de NF de Saída (MNF002)​

  • Arquivo: source/MNF002/UMNF002.pas (linhas 4598-4662) - dentro de TfrmMNF002.btnSalvarClick. Após o commit da nota, quando o parâmetro está ativo, monta a consulta apropriada e chama GeraRelatorio(..., 'RECIBOCOMISSAO', Consulta):

    if (ParmFatur.Values['ST_IMPRIMERECIBOCOMISSAO'] = 'S')then
    begin
    If (ParmFatur.Values['ST_VARIOSVENDEDORES'] = 'S') Then
    begin
    Consulta := '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);
    try
    if (dtSet.RecordCount > 0)then
    GeraRelatorio(dmMNF002.transactionNota, 'RECIBOCOMISSAO', Consulta);
    finally
    FreeDataset(dtSet);
    end;
    end
    else
    begin
    Consulta := '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);
    try
    if (dtSet.RecordCount > 0) then
    GeraRelatorio(dmMNF002.transactionNota, 'RECIBOCOMISSAO', Consulta);
    finally
    FreeDataset(dtSet);
    end;
    end;
    end;

Outras referências (apenas leitura do campo)​

  • Arquivo: source/MNF002/UdmMNF002.pas (linha 10505) - campo incluído no SELECT que carrega PARMFATUR para o cache ParmFatur.Values.
  • Arquivo: source/MCO006/UdmMCO006.pas (linha 2114) - campo incluído no SELECT de PARMFATUR (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ório RECIBOCOMISSAO.
  • 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 cujo TIPOVENDEDOR.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 = 0 em todos os itens (ou sem vendedor elegível) não disparam o relatório mesmo com o parâmetro ativo.