Pular para o conteúdo principal

RNF002 — Comissão sobre Notas Fiscais

Fonte​

  • Source: source/RNF002/
  • Form: source/RNF002/URNF002.pas
  • DataModule: source/RNF002/UdmRNF002.pas

Objetivo​

Relatório analitico/sintetico de comissoes de vendedores sobre notas fiscais emitidas. Permite filtrar por periodo, empresa, vendedores, grupos/subgrupos, marcas, secao, produtos, pessoas (cliente), perfil, regiao/area comercial, tipo de vendedor e modelo fiscal. Suporta quebras por vendedor, area comercial e regiao comercial, alem de exibicao da comissao por item da nota fiscal e cruzamento com meta do vendedor via VIEW_RNF002_META. A carga massiva de filtros usa CAMPOSTEMPORARIOS como staging para passar listas de codigos aos VIEW_*.

Modelos de Relatorio​

O combo "Modelo" (cmbTP_MODELO) define o layout impresso e o SQL executado. O handler btnImprimirClick monta um isqlSALDO base com todos os filtros e, conforme o valor selecionado, embrulha esse SQL em um SELECT ... FROM VIEW_COMISSAO(...) com o segundo parametro da view indicando o modo. Ao final chama GeraRelatorio(transaction, iLayout, isqlSALDO).

Modelo 1: Data, N Nota e Cliente (padrao)​

Quando usado: cmbTP_MODELO.Value = 'N' (item "Data, Nº Nota e Cliente" — default ao abrir a tela). Layout RNF002 (ou RNF002_R quando ha quebra por Area/Regiao Comercial).

Relatorio analitico padrao: uma linha por nota do vendedor, com totalizadores. E o unico modelo que expoe os filtros "Quebra por Area Comercial" e "Quebra por Regiao Comercial".

SQL Base:

SELECT V.*, <iCamposQuebra>, <VL_BONUS> VL_BONUS
FROM VIEW_COMISSAO(<isqlSALDO>, 'N', <iQUEBRA>, NULL,
<chkST_DEMONSTRAPEDIDO>, NULL, <CD_EMPRESA_SESSAO>) V
<iLeft> -- JOIN NOTA + LEFT JOIN RETORNA_DADOSCADASTRAIS p/ END_C (area/regiao)
<iCanhoto> -- INNER JOIN CANHOTONOTAFISCAL quando chkCanhoto
<iWhere> -- filtros Area/Regiao Comercial aplicados sobre END_C
ORDER BY NM_EMPRESA <iOrder>, [NM_VENDEDOR,] DT_EMISSAO, NR_NOTA, NM_PESSOA

Modelo 2: Cliente​

Quando usado: cmbTP_MODELO.Value = 'C' (item "Cliente"). Layout RNF002_CLI.

Mesma base de VIEW_COMISSAO(..., 'N', ...) do Modelo 1 com layout orientado a agrupamento por cliente. Nao expoe quebras de Area/Regiao Comercial.

SQL Base: identico ao Modelo 1 (layout RNF002_CLI troca a apresentacao).

Modelo 3: Indice Sobre Desconto​

Quando usado: cmbTP_MODELO.Value = 'D' (item "Índice Sobre Desconto"). Layout RNF002_D.

Nao usa VIEW_COMISSAO. Monta um SELECT direto sobre NOTA/ITEMNOTA/ITEM/MOVIMENTACAO/PESSOA agregando por nota, calculando percentual medio de desconto e valor liquido. Este modelo oculta o checkbox "Quebra por Vendedor". Quando informado Tipo de Vendedor, adiciona INNER JOIN ITEMNOTAVENDEDOR ITV na base.

SQL Base:

SELECT N.CD_EMPRESA, N.NR_NOTAFISCAL, N.DT_EMISSAO, C.NM_PESSOA,
SUM(COALESCE(NI.PS_ITEMNOTA, NI.QT_ITEMNOTA)) QTDE,
SUM(NI.QT_ITEMNOTA) QT_ITEMNOTA,
SUM(NI.PS_ITEMNOTA) PS_ITEMNOTA,
AVG((COALESCE(NI.VL_DESCONTO,0) * 100) / COALESCE(NI.VL_TOTAL,0)) PC_DESCONTO,
SUM(COALESCE(NI.VL_TOTAL,0) - COALESCE(NI.VL_DESCONTO,0)) VL_LIQUIDO,
SUM(COALESCE(NI.VL_TOTAL,0)) VL_TOTAL,
AVG(COALESCE(NI.PC_COMISSAO,0)) PC_COMISSAO,
SUM(CAST(((COALESCE(NI.VL_TOTAL,0) - COALESCE(NI.VL_DESCONTO,0))
* COALESCE(NI.PC_COMISSAO,0)) / 100 AS NUMERIC(15,2))) VL_COMISSAO
<iCamposQuebra>
FROM NOTA N
LEFT JOIN PESSOA V ON V.CD_PESSOA = N.CD_VENDEDOR
INNER JOIN PESSOA C ON C.CD_PESSOA = N.CD_PESSOA
INNER JOIN ENDERECOPESSOA E ON E.CD_PESSOA = N.CD_PESSOA
AND E.CD_ENDERECO = N.CD_ENDERECO
INNER JOIN MUNICIPIO Mu ON Mu.CD_MUNICIPIO = E.CD_MUNICIPIO
INNER JOIN ITEMNOTA NI ON NI.CD_EMPRESA = N.CD_EMPRESA
AND NI.NR_LANCAMENTO = N.NR_LANCAMENTO
AND NI.TP_NOTA = N.TP_NOTA
AND NI.CD_SERIE = N.CD_SERIE
<iinner> -- CANHOTONOTAFISCAL, PESSOAPERFIL, ITEMNOTAVENDEDOR, PESSOAVENDEDOR conforme filtros
INNER JOIN MOVIMENTACAO M ON M.CD_MOVIMENTACAO = NI.CD_MOVIMENTACAO
INNER JOIN ITEM I ON I.CD_ITEM = NI.CD_ITEM
WHERE N.ST_NOTA = 'V'
AND N.TP_NOTA = 'S'
AND M.ST_COMISSAO = 'S'
AND (COALESCE(NI.VL_TOTAL,0) - COALESCE(NI.VL_DESCONTO,0)) > 0
<isqlSALDO> -- filtros (empresa, periodo, perfil, pessoa, vendedor, marca, grupo, secao)
GROUP BY N.CD_EMPRESA, N.NR_NOTAFISCAL, N.DT_EMISSAO, I.CD_ITEM, I.DS_ITEM, C.NM_PESSOA
<iGroup>
ORDER BY N.CD_EMPRESA <iOrder>, N.DT_EMISSAO, N.NR_NOTAFISCAL

Modelo 4: Rateio Sobre Nota/Cliente​

Quando usado: cmbTP_MODELO.Value = 'S' (item "Rateio Sobre Nota/Cliente"). Layout RNF002_S.

SQL Base:

SELECT /*RNF002_S*/ *
FROM VIEW_COMISSAO(<isqlSALDO>, 'S', <iQUEBRA>, NULL, 'N', NULL, <CD_EMPRESA_SESSAO>) V
<iLeft>
<iCanhoto>
<iWhere>
ORDER BY NM_EMPRESA, NM_VENDEDOR, DT_EMISSAO, NR_NOTA, NM_PESSOA

Modelo 5: Comissao por Metas​

Quando usado: cmbTP_MODELO.Value = 'M' (item "Comissão por Metas"). Layout RNF002_M.

Unico modelo que usa VIEW_RNF002_META (nao VIEW_COMISSAO). Obriga empresa + data inicial + data final preenchidas. Usa iWhereMeta separado (aplicado dentro da procedure).

SQL Base:

SELECT DISTINCT V.O_CD_EMPRESA, V.O_NM_EMPRESA, V.O_NM_VENDEDOR, V.O_DS_MES,
V.O_VL_VENDA, V.O_VL_META, V.O_PC_META,
V.O_PC_METAALCANCADA, V.O_VL_COMISSAO, V.O_PC_COMISSAO
FROM VIEW_RNF002_META(<CD_EMPRESA>, <iWhereMeta>, <DT_INICIAL>, <DT_FINAL>) V
ORDER BY V.O_NM_VENDEDOR, V.O_DT_INIC

Modelo 6: Sintetico​

Quando usado: cmbTP_MODELO.Value = 'A' (item "Sintético"). Layout RNF002_A.

Analitico por item de nota via VIEW_COMISSAO com modo 'T' (total por nota/vendedor), expondo VL_COMISSAODISTR, VL_COMISSAOPAGA e dados de parcela/cond. pagto. Com quebra Area/Regiao comercial ativa, passa a usar layout RNF002_R.

SQL Base:

SELECT V.NM_EMPRESA <iCamposQuebra>, V.NM_VENDEDOR, V.CD_VENDEDOR, V.CD_EMPRESA,
V.NR_LANCAMENTO, V.CD_SERIE, V.TP_NOTA, V.DT_EMISSAO, V.DT_VENCIMENTO,
V.CD_PESSOA, V.NM_PESSOA, V.NR_NOTA,
V.VL_TOTAL, V.VL_SALDO, V.VL_LIQUIDO, V.PC_COMISSAO, V.VL_COMISSAO,
V.VL_LIQUIDO_DIST,
V.VL_COMISSAO_DIST VL_COMISSAODISTR,
V.VL_COMISSAOTOTAL, V.VL_COMISSAOPAGA,
V.CD_ITEM, V.DS_ITEM, V.DS_ESTADO, V.ST_ITEMPEDIDO, V.NR_DOCUMENTO,
V.COND_PAGTO, V.DT_FATURADO, V.NM_PREPOSTO, V.NM_DISTRIBUIDOR, V.DS_APELIDO,
V.NR_PARCELA, V.DT_LIQUIDACAO, V.VL_PARCELA, V.VL_SALDODOCUMENTO,
CASE V.NM_VENDEDOR WHEN '' THEN V.VL_TOTAL ELSE 0 END VL_TOTALDISTR,
V.PC_COMISSAOPARM, V.VL_COMISSAOPARM
FROM VIEW_COMISSAO(<isqlSALDO>, 'T', <iQUEBRA>, NULL, 'N', NULL, <CD_EMPRESA_SESSAO>) V
<iLeft>
<iWhere>
ORDER BY NM_EMPRESA <iOrder>, NM_VENDEDOR, NM_DISTRIBUIDOR, DT_EMISSAO, NR_NOTA, NM_PESSOA

Modelo 7: Comissao Sobre Produtos e Despesas​

Quando usado: cmbTP_MODELO.Value = 'Y' (item "Comissão Sobre Produtos e Despesas"). Layout RNF002.

Chama VIEW_COMISSAO com modo 'W' se "Exibir Comissao por Item da Nota Fiscal" estiver marcado, caso contrario modo 'Y'.

SQL Base:

SELECT DISTINCT V.* <iCamposQuebra>, <VL_BONUS> VL_BONUS
FROM VIEW_COMISSAO(<isqlSALDO>, <'W'|'Y'>, <iQUEBRA>, NULL, 'N', NULL, <CD_EMPRESA_SESSAO>) V
<iLeft>
<iCanhoto>
<iWhere>
ORDER BY NM_EMPRESA <iOrder>, NM_VENDEDOR, DT_EMISSAO, NR_NOTA, NM_PESSOA

Modelo 8: Comissao Sobre Notas​

Quando usado: cmbTP_MODELO.Value = 'V' (item "Comissão Sobre Notas"). Layout RNF002_B.

Agrega por data e vendedor, incluindo comparacao com tabela de preco (O_VL_TABPRECO) e calculando diferenca (desvio da tabela).

SQL Base:

SELECT V.DT_EMISSAO, V.NM_VENDEDOR,
SUM(COALESCE(V.VL_TOTAL,0)) VLTOTALDIA,
SUM(COALESCE(V.VL_COMISSAO,0)) VL_COMISSAO,
SUM(COALESCE(V.O_VL_TABPRECO,0)) VL_TABELA,
SUM(V.VL_TOTAL - V.O_VL_DIFTABPRECO) DIFERENCA,
CASE WHEN SUM(COALESCE(V.VL_TOTAL,0)) = 0 THEN 0
ELSE (SUM(COALESCE(V.VL_COMISSAO,0))*100 /
SUM(COALESCE(V.VL_TOTAL,0))) END PC_COMISSAO
FROM VIEW_COMISSAO(<isqlSALDO>, 'V', <iQUEBRA>, 'N', 'N', NULL, <CD_EMPRESA_SESSAO>) V
<iLeft>
<iWhere>
GROUP BY V.DT_EMISSAO, V.NM_VENDEDOR
ORDER BY V.NM_VENDEDOR, V.DT_EMISSAO

Modelo 9: Comissao X Deducao de Imposto​

Quando usado: cmbTP_MODELO.Value = 'L' (item "Comissão X Dedução de Imposto"). Layout RNF002_L.

Compara comissao bruta contra comissao liquida (liquida de impostos) por nota.

SQL Base:

SELECT V.NM_EMPRESA||' - '||V.CD_EMPRESA NMEMPRESA,
V.NM_VENDEDOR||' - '||V.CD_VENDEDOR NMVENDEDOR,
V.DT_EMISSAO,
V.VL_COMISSAOTOTAL COMISSAOBRUTA,
V.VL_COMISSAOPAGA COMISSAOLIQUIDA,
V.NR_NOTA,
V.NM_PESSOA||' - '||V.CD_PESSOA NMPESSOA
FROM VIEW_COMISSAO(<isqlSALDO>, 'L', <iQUEBRA>, 'N', 'N', NULL, <CD_EMPRESA_SESSAO>) V
ORDER BY V.NM_EMPRESA, V.CD_EMPRESA, V.NM_VENDEDOR, V.CD_VENDEDOR,
V.DT_EMISSAO, V.NR_NOTA, V.NM_PESSOA, V.CD_PESSOA

Modelo 10: Comissao por Cliente/Nota/Produtos​

Quando usado: cmbTP_MODELO.Value = 'X' (item "Comissão por Cliente/Nota/Produtos"). Layout RNF002_X.

Antes de imprimir, insere um registro de controle em CAMPOSTEMPORARIOS (chaveado por CURRENT_CONNECTION + CD_MODULO='RNF002') usado pelo layout como flag de sessao.

SQL Base:

SELECT DISTINCT V.* <iCamposQuebra>, <VL_BONUS> VL_BONUS
FROM VIEW_COMISSAO(<isqlSALDO>, 'X', <iQUEBRA>, NULL, 'N', NULL, <CD_EMPRESA_SESSAO>) V
<iLeft>
<iCanhoto>
<iWhere>
ORDER BY NM_EMPRESA <iOrder>, NM_VENDEDOR, NM_PESSOA, CD_PESSOA, DT_EMISSAO, NR_NOTA
-- Controle auxiliar executado antes do relatorio:
INSERT INTO CAMPOSTEMPORARIOS (NR_CONEXAO, NM_CAMPO, CD_MODULO, VL_CAMPO, DT_REGISTRO)
VALUES (CURRENT_CONNECTION, '', 'RNF002', '', CURRENT_TIMESTAMP);

Filtros​

Campos simples:

  • Empresa (Lista de Empresas F9) — default = empresa da sessao, validado contra RETORNA_EMPRESA(usuario, '1').
  • Dt Emissao Inicial (data).
  • Final (data) — valida DT_INICIAL <= DT_FINAL.
  • Valor de Bonus por Vendedor (numerico; nao aceita negativo).
  • Tipo Produto (Produtos / Serviços / Todos) — default "Todos"; internamente filtra ITEM.TP_ITEM.
  • Gera Receita (Sim / Nao / Todos) — default "Todos"; filtra MOVIMENTACAO.ST_RECEITA.
  • Modelo (10 opcoes — ver "Modelos de Relatório") — default "Data, Nº Nota e Cliente".
  • Somente Vendedor Comissionado (checkbox, default ligado) — aplica NI.PC_COMISSAO > 0 ou ITV.PC_COMISSAO > 0 quando PARMFATUR.ST_VARIOSVENDEDORES='S'.
  • Exibir Comissao por Item da Nota Fiscal (checkbox) — no modelo "Comissao Sobre Produtos e Despesas" alterna entre modo 'W' (com item) e 'Y' (sem item) da VIEW_COMISSAO.
  • Demonstrar Pedidos da Nota (checkbox) — repassa 'S'/'N' para o parametro de pedido da VIEW_COMISSAO nos modelos que exibem pedidos.
  • Notas Relacionadas Com Canhoto (checkbox) — ativa INNER JOIN CANHOTONOTAFISCAL.
  • Quebra por Vendedor (checkbox, default ligado; forcado ligado + desabilitado se PARMFATUR.ST_VARIOSVENDEDORES='S'; oculto no modelo "Indice Sobre Desconto") — concatena 'V' em iQUEBRA e adiciona NM_VENDEDOR na ordenacao.
  • Quebra por Area Comercial (checkbox; visivel apenas no modelo "Data, Nº Nota e Cliente") — adiciona colunas/ordenacao por END_C.CD_AREACOMERCIAL e forca layout RNF002_R.
  • Quebra por Regiao Comercial (checkbox; visivel apenas no modelo "Data, Nº Nota e Cliente") — adiciona colunas/ordenacao por END_C.CD_REGIAOCOMERCIAL e forca layout RNF002_R.

Filtros de grid (multi-selecao via F9):

  • Vendedores (Lista de Vendedores F9) — filtra N.CD_VENDEDOR IN (...) (ou ITV.CD_VENDEDOR no modelo 'M').
  • Grupos (Lista de Grupos F9) + checkbox "Exclusao de Grupos" — inclui ou exclui I.CD_GRUPO IN/NOT IN (...).
  • Vendedores da Pessoa (Lista de Vendedores F9) — aplica PV.CD_VENDEDOR IN (...) com join em PESSOAVENDEDOR (quando ST_VARIOSVENDEDORES='S') ou VENDEDOR (caso contrario).
  • Produtos (Lista de Produtos F9) — filtra I.CD_ITEM IN (...).
  • Marcas (Lista de Marcas F9) — filtra I.CD_MARCA IN (...).
  • Secao de Produtos (Lista de Seção de Produtos F9) — filtra I.CD_SECAO IN (...).
  • Pessoa (Lista de Pessoas F9) — filtra N.CD_PESSOA IN (...).
  • Tipo de Vendedor (Lista de Tipo de Vendedor F9; aba "Filtros 1", visivel apenas quando PARMFATUR.ST_VARIOSVENDEDORES='S') — filtra ITV.CD_TIPO IN (...) (no modelo 'D' adiciona INNER JOIN ITEMNOTAVENDEDOR).
  • Perfil (Lista de Perfis F9; aba "Filtros 2") + checkbox "Nao listar os perfis informados" — inclui ou exclui COALESCE(PP.CD_PERFIL,-99999) IN/NOT IN (...) com LEFT JOIN PESSOAPERFIL.
  • Area Comercial (Lista de Áreas Comerciais F9; aba "Filtros 2"; visivel so no modelo "Data, Nº Nota e Cliente") — filtra END_C.CD_AREACOMERCIAL IN (...).
  • Regioes Comerciais (Lista de Regiões Comerciais F9; aba "Filtros 2"; visivel so no modelo "Data, Nº Nota e Cliente") — filtra END_C.CD_REGIAOCOMERCIAL IN (...).

Parametros que Influenciam​

TabelaCampoEfeito
PARMFATURST_VARIOSVENDEDORESSe 'S': forca "Quebra por Vendedor" marcada e desabilitada, exibe o grupo "Tipo de Vendedor", troca o JOIN de VENDEDOR para PESSOAVENDEDOR no filtro Vendedor da Pessoa e avalia comissao em ITEMNOTAVENDEDOR.PC_COMISSAO em vez de ITEMNOTA.PC_COMISSAO. Se 'N': grupo "Tipo de Vendedor" fica oculto.

Perguntas Frequentes​

P: Qual e a finalidade da tela RNF002? R: A tela RNF002 e utilizada para gerar relatorios de comissao de vendedores. Ela oferece diversos modelos de relatorio: Normal, Detalhado, por Metas, por Bonus, Nota a Nota, entre outros. O módulo utiliza a VIEW_COMISSAO para calcular as comissoes com base nas notas fiscais emitidas. Os filtros disponiveis incluem empresa, periodo, vendedor, produto, grupo, marca, secao, pessoa, perfil, regiao comercial e area comercial. Tambem permite configurar o tipo de comissao (sobre venda ou sobre recebimento) e o calculo de bonus por vendedor.


P: Ao tentar gerar o relatorio de Comissao por Metas, o sistema apresenta a mensagem "E obrigatorio informar a Empresa para o tipo de relatorio Comissao por Metas!". Como proceder? R: Para o modelo de relatorio "Comissao por Metas", o campo Empresa e obrigatorio. Informe o codigo da empresa no campo correspondente antes de gerar o relatorio.

P: Ao gerar o relatorio de Metas, recebo a mensagem "E obrigatorio informar a data Inicial e Final!". O que devo fazer? R: Para o modelo de relatorio "Comissao por Metas", as datas inicial e final sao obrigatorias. Preencha ambos os campos de data antes de gerar o relatorio.

P: Ao informar a Empresa, o sistema exibe a mensagem "O Usuario Logado nao pertence a Empresa Selecionada. Verifique! [ADM001]". Como resolver? R: O usuario atual nao possui acesso a empresa informada. Verifique se o codigo da empresa esta correto ou solicite ao administrador do sistema que vincule seu usuario a empresa desejada na tela ADM001.

P: Ao informar a Empresa, recebo a mensagem "A Empresa nao esta Cadastrada [ADM002]!". O que significa? R: O codigo de empresa informado nao existe no cadastro do sistema. Verifique o codigo digitado ou utilize a tecla F9 para buscar uma empresa valida na tela ADM002.

P: O sistema apresenta a mensagem "O Produto nao esta Ativo [TPO001]!". Como proceder? R: O produto informado esta com status inativo no cadastro. Verifique se o codigo esta correto. Caso precise utilizar este produto, acesse a tela TPO001 para verificar e reativar o cadastro.

P: Recebi a mensagem "O Código do Produto nao esta Cadastrado [TPO001]!". Como resolver? R: O codigo de produto informado nao existe no cadastro de produtos. Verifique o codigo digitado ou use a tecla F9 para buscar um produto valido na tela TPO001.

P: Ao informar as datas, recebo a mensagem "A Data Inicial nao pode ser Maior que a Data Final!". O que devo fazer? R: A data informada no campo "Data Inicial" e posterior a "Data Final". Corrija as datas para que a data inicial seja igual ou anterior a data final.

P: O sistema exibe a mensagem "A Data Final nao pode ser Menor que a Data Inicial!". Como corrigir? R: A data informada no campo "Data Final" e anterior a "Data Inicial". Ajuste a data final para que seja igual ou posterior a data inicial.

P: Ao informar o Grupo, o sistema apresenta a mensagem "O Grupo nao esta Cadastrado [TPO006]!". O que significa? R: O codigo de grupo informado nao existe no cadastro de grupos de produtos. Verifique o codigo digitado ou use a tecla F9 para buscar um grupo valido na tela TPO006.

P: Recebi a mensagem "O Vendedor nao esta Cadastrado [TFA007]!". Como proceder? R: O codigo de vendedor informado nao existe no cadastro de vendedores. Verifique o codigo digitado ou utilize a tecla F9 para localizar um vendedor valido na tela TFA007.

P: Ao informar a Marca, o sistema exibe a mensagem "A Marca nao esta Cadastrada [TPO002]!". Como resolver? R: O codigo de marca informado nao existe no cadastro de marcas. Verifique o codigo digitado ou use a tecla F9 para buscar uma marca valida na tela TPO002.

P: Recebi a mensagem "A Secao nao esta Cadastrada [TPO008]!". O que devo fazer? R: O codigo de secao informado nao existe no cadastro de secoes. Verifique o codigo digitado ou use a tecla F9 para buscar uma secao valida na tela TPO008.

P: Ao informar a Pessoa, o sistema apresenta a mensagem "A Pessoa nao esta Cadastrada [TFA001]!". Como proceder? R: O codigo de pessoa informado nao existe no cadastro de pessoas fisicas/juridicas. Verifique o codigo digitado ou use a tecla F9 para buscar uma pessoa valida na tela TFA001.

P: Recebi a mensagem "Perfil nao cadastrado! Verifique[TPO033]!". Como resolver? R: O codigo de perfil informado nao existe no cadastro de perfis. Verifique o codigo digitado ou use a tecla F9 para buscar um perfil valido na tela TPO033.

P: O sistema exibe a mensagem "Valor de Bonus por Vendedor nao pode ser negativo. Verifique!". O que devo fazer? R: O valor informado no campo de bonus por vendedor e negativo. Informe um valor igual ou superior a zero para o campo de bonus.

P: Ao informar a Regiao Comercial, recebo a mensagem "A Regiao Comercial nao esta Cadastrada! Verifique [TFA014]". Como proceder? R: O codigo de regiao comercial informado nao existe no cadastro. Verifique o codigo digitado ou use a tecla F9 para buscar uma regiao comercial valida na tela TFA014.

P: Recebi a mensagem "A Area Comercial nao esta Cadastrada! Verifique [TFA080]". Como resolver? R: O codigo de area comercial informado nao existe no cadastro. Verifique o codigo digitado ou use a tecla F9 para buscar uma area comercial valida na tela TFA080.

Mensagens exibidas​

Levantadas de source/RNF002/ pela camada 0 (commit 96fc51e236).

Mais 18 mensagens com texto literal no código: RNF002.

Parâmetros lidos​

Campos PARM* lidos via values[] em source/RNF002/ (commit 96fc51e236).

ParâmetroTabela
ST_VARIOSVENDEDORESPARMFATUR

Tabelas de Escrita (INSERT/UPDATE/DELETE)​

TabelaOperacoes
CAMPOSTEMPORARIOSINSERT
EMPRESADELETE, INSERT, SELECT, UPDATE
GRUPODELETE, INSERT, SELECT, UPDATE
HISTORICODELETE, INSERT, SELECT, UPDATE
ITEMDELETE, INSERT, SELECT, UPDATE
MARCADELETE, INSERT, SELECT, UPDATE
PESSOADELETE, INSERT, SELECT, UPDATE
SECAODELETE, INSERT, SELECT, UPDATE

As operacoes DELETE/INSERT/UPDATE nas tabelas-mestras (EMPRESA, GRUPO, HISTORICO, ITEM, MARCA, PESSOA, SECAO) vem de infraestrutura compartilhada do framework, nao de gravacoes transacionais da tela. A unica gravacao de negocio real e o INSERT em CAMPOSTEMPORARIOS para passagem de filtros para as procedures.

Tabelas de Leitura (SELECT)​

TabelaOperacoes
AREACOMERCIALSELECT
CANHOTONOTAFISCALSELECT
CFOSELECT
ENDERECOPESSOASELECT
ITEMNOTASELECT
ITEMNOTAVENDEDORSELECT
MOVIMENTACAOSELECT
MUNICIPIOSELECT
NOTASELECT
PERFILSELECT
PESSOAPERFILSELECT
PESSOAVENDEDORSELECT
REGIAOCOMERCIALSELECT
TIPOVENDEDORSELECT
VENDEDORSELECT

Procedures Chamadas​

ProcedureTabelas Acessadas
RETORNA_DADOSCADASTRAISAREACOMERCIAL (SELECT), ENDERECOPESSOA (SELECT), ESTADO (SELECT), FORMAPAGTO (SELECT), GRUPOPCP (SELECT), MUNICIPIO (SELECT) +4
RETORNA_EMPRESAEMPRESA (SELECT), USUARIOEMPRESA (SELECT)
VIEW_COMISSAOEMPRESA (SELECT), PARMFATUR (SELECT), SESSAO (INSERT/SELECT)
VIEW_RNF002_METACOMISSAOVENDEDOR (SELECT), EMPRESA (SELECT), GRUPO (SELECT), ITEM (SELECT), ITEMNOTA (SELECT), ITEMNOTAVENDEDOR (SELECT) +11

Tabelas via Procedures (acesso indireto)​

TabelaOperacoes
AREACOMERCIALSELECT
COMISSAOVENDEDORSELECT
EMPRESASELECT
ENDERECOPESSOASELECT
ESTADOSELECT
FORMAPAGTOSELECT
GRUPOSELECT
GRUPOPCPSELECT
ITEMSELECT
ITEMNOTASELECT
ITEMNOTAVENDEDORSELECT
MARCASELECT
METAVENDEDORSELECT
MOVESTOQUESELECT
MOVIMENTACAOSELECT
MUNICIPIOSELECT
NOTASELECT
PAISBACENSELECT
PARMFATURSELECT
PESSOASELECT
...+8 tabelas

Dependencias Aferentes (quem alimenta esta tela)​

Telas que escrevem em tabelas lidas por esta tela. Limitado a 30 entradas mais acopladas.

TelaTítuloTabelas em Comum
RNF005Demonstrativo de Notas FiscaisAREACOMERCIAL, CFO, EMPRESA, GRUPO, HISTORICO +5
CNF001Consulta de Notas FiscaisEMPRESA, GRUPO, ITEM, ITEMNOTA, ITEMNOTAVENDEDOR +4
MNF001Recebimento de Notas Fiscais de CompraEMPRESA, ENDERECOPESSOA, GRUPO, ITEM, ITEMNOTA +4
MNF011Alteração de ComissõesEMPRESA, ENDERECOPESSOA, ITEM, ITEMNOTA, ITEMNOTAVENDEDOR +4
CNF009Programação/Fechamento de ComissõesEMPRESA, GRUPO, ITEM, ITEMNOTAVENDEDOR, MARCA +2
RRC023EMPRESA, GRUPO, ITEM, MARCA, PERFIL +2
TFA001Pessoas Física / JurídicaAREACOMERCIAL, ENDERECOPESSOA, PESSOA, PESSOAPERFIL, PESSOAVENDEDOR +2
TFA006Tabelas de PreçoEMPRESA, GRUPO, ITEM, MARCA, PERFIL +2
CEQ001Saldo em EstoqueEMPRESA, GRUPO, ITEM, MARCA, PERFIL +1
CNF007EMPRESA, GRUPO, ITEM, MARCA, NOTA +1
CNF008Demonstrativo de Margens sobre VendasEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
CNF012Consulta de CTRCEMPRESA, ITEM, ITEMNOTA, MOVIMENTACAO, NOTA +1
MNF024EMPRESA, ITEM, ITEMNOTA, ITEMNOTAVENDEDOR, MOVIMENTACAO +1
MNF030EMPRESA, ENDERECOPESSOA, ITEM, ITEMNOTA, NOTA +1
MPD011Confirmação Ordem CarregamentoEMPRESA, ITEMNOTA, ITEMNOTAVENDEDOR, NOTA, PESSOA +1
MRC020Confirmação de Ordem de Carregamento RecapadoraEMPRESA, ITEMNOTA, ITEMNOTAVENDEDOR, NOTA, PESSOA +1
REQ001Saldo em Estoque por ProdutoEMPRESA, GRUPO, ITEM, MARCA, PERFIL +1
REQ012Relação de Entradas e Saídas do EstoqueEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
RNF010Curva ABC de ProdutosGRUPO, ITEM, MARCA, PERFIL, PESSOA +1
RNF014Demonstrativo de Movimentação de ItensEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
RRC020EMPRESA, GRUPO, ITEM, PERFIL, PESSOA +1
CEQ004Sugestão de ProduçãoEMPRESA, GRUPO, ITEM, MARCA, SECAO
CEQ005Movimentos EstoqueEMPRESA, GRUPO, ITEM, MARCA, SECAO
CFA003Gerenciamento de Margens sobre ProdutosEMPRESA, GRUPO, ITEM, MARCA, SECAO
CNF005Análise de Produtos para CompraEMPRESA, GRUPO, ITEM, MARCA, PESSOA
CNF006Gerenciamento de Preços para VendaEMPRESA, GRUPO, ITEM, MARCA, SECAO
CPD001Consulta de PedidosEMPRESA, GRUPO, ITEM, MOVIMENTACAO, PESSOA
MCB015Envio de EmailEMPRESA, MUNICIPIO, PESSOA, REGIAOCOMERCIAL, VENDEDOR
MEQ074Simulação de ProduçãoEMPRESA, GRUPO, ITEM, MARCA, SECAO
MNF032Importação de XML TransmitidoENDERECOPESSOA, ITEMNOTA, ITEMNOTAVENDEDOR, NOTA, PESSOA
...+543 telas

Dependencias Eferentes (quem consome dados desta tela)​

Apenas CAMPOSTEMPORARIOS e escrito de forma transacional (staging descartavel). As demais tabelas na lista de escrita sao compartilhadas. Lista abaixo mostra telas que leem algumas delas.

TelaTítuloTabelas em Comum
jCommonCAMPOSTEMPORARIOS, EMPRESA, GRUPO, HISTORICO, ITEM +3
CEQ001Saldo em EstoqueEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
CEQ005Movimentos EstoqueEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
CNF001Consulta de Notas FiscaisEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
CNF007EMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
CNF009Programação/Fechamento de ComissõesEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
MCO006Compra de Peças (Oficina)CAMPOSTEMPORARIOS, EMPRESA, GRUPO, ITEM, MARCA +2
MNF001Recebimento de Notas Fiscais de CompraEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
REQ005Ordens de ProduçãoEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
REQ006Movimentos do EstoqueEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
REQ012Relação de Entradas e Saídas do EstoqueEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
RNF005Demonstrativo de Notas FiscaisEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
TFA007VendedoresEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
TPO001ProdutosEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +2
CNF005Análise de Produtos para CompraEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
CNF008Demonstrativo de Margens sobre VendasEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
CPD001Consulta de PedidosEMPRESA, GRUPO, HISTORICO, ITEM, PESSOA +1
JunsoftIntegracaoEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
LOP018EMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
LOP031EMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
MCO008COMPRA DE ITENSEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
MEQ013Acerto de Saldo em EstoqueEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +1
MNF036Transferência por Estoque MínimoEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
REQ017Estatística de ProdutosEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
REQ024Relatório de Estoque por GradeEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
RNF006Relação de Custo X Lucro sobre VendasEMPRESA, GRUPO, HISTORICO, ITEM, MARCA +1
RNF010Curva ABC de ProdutosEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
RNF013Etiquetas de Volume sobre Nota FiscalEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
RNF014Demonstrativo de Movimentação de ItensEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
RPD001Relação Analítica de PedidosEMPRESA, GRUPO, ITEM, MARCA, PESSOA +1
...+1382 telas

Regras de Negocio​

  1. Filtro obrigatorio de periodo por data de emissao da nota (inicial/final).
  2. Filtro por empresa respeita USUARIOEMPRESA do usuario corrente (via RETORNA_EMPRESA).
  3. Opcao "Somente Vendedor Comissionado" (chkCOMISSAO) restringe o resultado a linhas onde ha comissao atribuida em ITEMNOTAVENDEDOR.
  4. "Valor de Bonus por Vendedor" e "Gera Receita" modificam o calculo de base de comissao.
  5. Quebras disponiveis: por Vendedor (chkVENDEDOR), Area Comercial (chkAreaComercial), Regiao Comercial (chkRegiaoComercial).
  6. "Exibir Comissao por Item da Nota Fiscal" (chkITEM) alterna layout sintetico x analitico por item.
  7. "Notas Relacionadas Com Canhoto" filtra somente notas com assinatura em CANHOTONOTAFISCAL.
  8. "Demonstrar Pedidos da Nota" acrescenta rastreio do pedido origem da nota.
  9. Exclusao de grupos (chkGrupo + lista de grupos marcados) funciona como filtro negativo.
  10. Exclusao de perfis (chkPerfil) permite omitir perfis especificos na listagem.
  11. Listas de filtros (vendedores, grupos, produtos, marcas, secao, pessoa, tipo de vendedor, perfil, regiao, area) sao transferidas para o banco via insert em CAMPOSTEMPORARIOS (staging ligado a SESSAO).
  12. A procedure VIEW_RNF002_META cruza as vendas com METAVENDEDOR para apurar atingimento de meta.

Modelos de Relatório​

O combo "Modelo" (cmbTP_MODELO) define o layout impresso e o SQL executado. O handler btnImprimirClick monta um isqlSALDO base com todos os filtros e, conforme o valor selecionado, embrulha esse SQL em um SELECT ... FROM VIEW_COMISSAO(...) com o segundo parametro da view indicando o modo. Ao final chama GeraRelatorio(transaction, iLayout, isqlSALDO).

Modelo 1: Data, N Nota e Cliente (padrao)​

Quando usado: cmbTP_MODELO.Value = 'N' (item "Data, Nº Nota e Cliente" — default ao abrir a tela). Layout RNF002 (ou RNF002_R quando ha quebra por Area/Regiao Comercial).

Relatório analitico padrao: uma linha por nota do vendedor, com totalizadores. E o unico modelo que expoe os filtros "Quebra por Area Comercial" e "Quebra por Regiao Comercial".

SQL Base:

SELECT V.*, <iCamposQuebra>, <VL_BONUS> VL_BONUS
FROM VIEW_COMISSAO(<isqlSALDO>, 'N', <iQUEBRA>, NULL,
<chkST_DEMONSTRAPEDIDO>, NULL, <CD_EMPRESA_SESSAO>) V
<iLeft> -- JOIN NOTA + LEFT JOIN RETORNA_DADOSCADASTRAIS p/ END_C (area/regiao)
<iCanhoto> -- INNER JOIN CANHOTONOTAFISCAL quando chkCanhoto
<iWhere> -- filtros Area/Regiao Comercial aplicados sobre END_C
ORDER BY NM_EMPRESA <iOrder>, [NM_VENDEDOR,] DT_EMISSAO, NR_NOTA, NM_PESSOA

Modelo 2: Cliente​

Quando usado: cmbTP_MODELO.Value = 'C' (item "Cliente"). Layout RNF002_CLI.

Mesma base de VIEW_COMISSAO(..., 'N', ...) do Modelo 1 com layout orientado a agrupamento por cliente. Nao expoe quebras de Area/Regiao Comercial.

SQL Base: identico ao Modelo 1 (layout RNF002_CLI troca a apresentacao).

Modelo 3: Indice Sobre Desconto​

Quando usado: cmbTP_MODELO.Value = 'D' (item "Índice Sobre Desconto"). Layout RNF002_D.

Nao usa VIEW_COMISSAO. Monta um SELECT direto sobre NOTA/ITEMNOTA/ITEM/MOVIMENTACAO/PESSOA agregando por nota, calculando percentual medio de desconto e valor liquido. Este modelo oculta o checkbox "Quebra por Vendedor". Quando informado Tipo de Vendedor, adiciona INNER JOIN ITEMNOTAVENDEDOR ITV na base.

SQL Base:

SELECT N.CD_EMPRESA, N.NR_NOTAFISCAL, N.DT_EMISSAO, C.NM_PESSOA,
SUM(COALESCE(NI.PS_ITEMNOTA, NI.QT_ITEMNOTA)) QTDE,
SUM(NI.QT_ITEMNOTA) QT_ITEMNOTA,
SUM(NI.PS_ITEMNOTA) PS_ITEMNOTA,
AVG((COALESCE(NI.VL_DESCONTO,0) * 100) / COALESCE(NI.VL_TOTAL,0)) PC_DESCONTO,
SUM(COALESCE(NI.VL_TOTAL,0) - COALESCE(NI.VL_DESCONTO,0)) VL_LIQUIDO,
SUM(COALESCE(NI.VL_TOTAL,0)) VL_TOTAL,
AVG(COALESCE(NI.PC_COMISSAO,0)) PC_COMISSAO,
SUM(CAST(((COALESCE(NI.VL_TOTAL,0) - COALESCE(NI.VL_DESCONTO,0))
* COALESCE(NI.PC_COMISSAO,0)) / 100 AS NUMERIC(15,2))) VL_COMISSAO
<iCamposQuebra>
FROM NOTA N
LEFT JOIN PESSOA V ON V.CD_PESSOA = N.CD_VENDEDOR
INNER JOIN PESSOA C ON C.CD_PESSOA = N.CD_PESSOA
INNER JOIN ENDERECOPESSOA E ON E.CD_PESSOA = N.CD_PESSOA
AND E.CD_ENDERECO = N.CD_ENDERECO
INNER JOIN MUNICIPIO Mu ON Mu.CD_MUNICIPIO = E.CD_MUNICIPIO
INNER JOIN ITEMNOTA NI ON NI.CD_EMPRESA = N.CD_EMPRESA
AND NI.NR_LANCAMENTO = N.NR_LANCAMENTO
AND NI.TP_NOTA = N.TP_NOTA
AND NI.CD_SERIE = N.CD_SERIE
<iinner> -- CANHOTONOTAFISCAL, PESSOAPERFIL, ITEMNOTAVENDEDOR, PESSOAVENDEDOR conforme filtros
INNER JOIN MOVIMENTACAO M ON M.CD_MOVIMENTACAO = NI.CD_MOVIMENTACAO
INNER JOIN ITEM I ON I.CD_ITEM = NI.CD_ITEM
WHERE N.ST_NOTA = 'V'
AND N.TP_NOTA = 'S'
AND M.ST_COMISSAO = 'S'
AND (COALESCE(NI.VL_TOTAL,0) - COALESCE(NI.VL_DESCONTO,0)) > 0
<isqlSALDO> -- filtros (empresa, periodo, perfil, pessoa, vendedor, marca, grupo, secao)
GROUP BY N.CD_EMPRESA, N.NR_NOTAFISCAL, N.DT_EMISSAO, I.CD_ITEM, I.DS_ITEM, C.NM_PESSOA
<iGroup>
ORDER BY N.CD_EMPRESA <iOrder>, N.DT_EMISSAO, N.NR_NOTAFISCAL

Modelo 4: Rateio Sobre Nota/Cliente​

Quando usado: cmbTP_MODELO.Value = 'S' (item "Rateio Sobre Nota/Cliente"). Layout RNF002_S.

SQL Base:

SELECT /*RNF002_S*/ *
FROM VIEW_COMISSAO(<isqlSALDO>, 'S', <iQUEBRA>, NULL, 'N', NULL, <CD_EMPRESA_SESSAO>) V
<iLeft>
<iCanhoto>
<iWhere>
ORDER BY NM_EMPRESA, NM_VENDEDOR, DT_EMISSAO, NR_NOTA, NM_PESSOA

Modelo 5: Comissao por Metas​

Quando usado: cmbTP_MODELO.Value = 'M' (item "Comissão por Metas"). Layout RNF002_M.

Unico modelo que usa VIEW_RNF002_META (nao VIEW_COMISSAO). Obriga empresa + data inicial + data final preenchidas. Usa iWhereMeta separado (aplicado dentro da procedure).

SQL Base:

SELECT DISTINCT V.O_CD_EMPRESA, V.O_NM_EMPRESA, V.O_NM_VENDEDOR, V.O_DS_MES,
V.O_VL_VENDA, V.O_VL_META, V.O_PC_META,
V.O_PC_METAALCANCADA, V.O_VL_COMISSAO, V.O_PC_COMISSAO
FROM VIEW_RNF002_META(<CD_EMPRESA>, <iWhereMeta>, <DT_INICIAL>, <DT_FINAL>) V
ORDER BY V.O_NM_VENDEDOR, V.O_DT_INIC

Modelo 6: Sintetico​

Quando usado: cmbTP_MODELO.Value = 'A' (item "Sintético"). Layout RNF002_A.

Analitico por item de nota via VIEW_COMISSAO com modo 'T' (total por nota/vendedor), expondo VL_COMISSAODISTR, VL_COMISSAOPAGA e dados de parcela/cond. pagto. Com quebra Area/Regiao comercial ativa, passa a usar layout RNF002_R.

SQL Base:

SELECT V.NM_EMPRESA <iCamposQuebra>, V.NM_VENDEDOR, V.CD_VENDEDOR, V.CD_EMPRESA,
V.NR_LANCAMENTO, V.CD_SERIE, V.TP_NOTA, V.DT_EMISSAO, V.DT_VENCIMENTO,
V.CD_PESSOA, V.NM_PESSOA, V.NR_NOTA,
V.VL_TOTAL, V.VL_SALDO, V.VL_LIQUIDO, V.PC_COMISSAO, V.VL_COMISSAO,
V.VL_LIQUIDO_DIST,
V.VL_COMISSAO_DIST VL_COMISSAODISTR,
V.VL_COMISSAOTOTAL, V.VL_COMISSAOPAGA,
V.CD_ITEM, V.DS_ITEM, V.DS_ESTADO, V.ST_ITEMPEDIDO, V.NR_DOCUMENTO,
V.COND_PAGTO, V.DT_FATURADO, V.NM_PREPOSTO, V.NM_DISTRIBUIDOR, V.DS_APELIDO,
V.NR_PARCELA, V.DT_LIQUIDACAO, V.VL_PARCELA, V.VL_SALDODOCUMENTO,
CASE V.NM_VENDEDOR WHEN '' THEN V.VL_TOTAL ELSE 0 END VL_TOTALDISTR,
V.PC_COMISSAOPARM, V.VL_COMISSAOPARM
FROM VIEW_COMISSAO(<isqlSALDO>, 'T', <iQUEBRA>, NULL, 'N', NULL, <CD_EMPRESA_SESSAO>) V
<iLeft>
<iWhere>
ORDER BY NM_EMPRESA <iOrder>, NM_VENDEDOR, NM_DISTRIBUIDOR, DT_EMISSAO, NR_NOTA, NM_PESSOA

Modelo 7: Comissao Sobre Produtos e Despesas​

Quando usado: cmbTP_MODELO.Value = 'Y' (item "Comissão Sobre Produtos e Despesas"). Layout RNF002.

Chama VIEW_COMISSAO com modo 'W' se "Exibir Comissao por Item da Nota Fiscal" estiver marcado, caso contrario modo 'Y'.

SQL Base:

SELECT DISTINCT V.* <iCamposQuebra>, <VL_BONUS> VL_BONUS
FROM VIEW_COMISSAO(<isqlSALDO>, <'W'|'Y'>, <iQUEBRA>, NULL, 'N', NULL, <CD_EMPRESA_SESSAO>) V
<iLeft>
<iCanhoto>
<iWhere>
ORDER BY NM_EMPRESA <iOrder>, NM_VENDEDOR, DT_EMISSAO, NR_NOTA, NM_PESSOA

Modelo 8: Comissao Sobre Notas​

Quando usado: cmbTP_MODELO.Value = 'V' (item "Comissão Sobre Notas"). Layout RNF002_B.

Agrega por data e vendedor, incluindo comparacao com tabela de preco (O_VL_TABPRECO) e calculando diferenca (desvio da tabela).

SQL Base:

SELECT V.DT_EMISSAO, V.NM_VENDEDOR,
SUM(COALESCE(V.VL_TOTAL,0)) VLTOTALDIA,
SUM(COALESCE(V.VL_COMISSAO,0)) VL_COMISSAO,
SUM(COALESCE(V.O_VL_TABPRECO,0)) VL_TABELA,
SUM(V.VL_TOTAL - V.O_VL_DIFTABPRECO) DIFERENCA,
CASE WHEN SUM(COALESCE(V.VL_TOTAL,0)) = 0 THEN 0
ELSE (SUM(COALESCE(V.VL_COMISSAO,0))*100 /
SUM(COALESCE(V.VL_TOTAL,0))) END PC_COMISSAO
FROM VIEW_COMISSAO(<isqlSALDO>, 'V', <iQUEBRA>, 'N', 'N', NULL, <CD_EMPRESA_SESSAO>) V
<iLeft>
<iWhere>
GROUP BY V.DT_EMISSAO, V.NM_VENDEDOR
ORDER BY V.NM_VENDEDOR, V.DT_EMISSAO

Modelo 9: Comissao X Deducao de Imposto​

Quando usado: cmbTP_MODELO.Value = 'L' (item "Comissão X Dedução de Imposto"). Layout RNF002_L.

Compara comissao bruta contra comissao liquida (liquida de impostos) por nota.

SQL Base:

SELECT V.NM_EMPRESA||' - '||V.CD_EMPRESA NMEMPRESA,
V.NM_VENDEDOR||' - '||V.CD_VENDEDOR NMVENDEDOR,
V.DT_EMISSAO,
V.VL_COMISSAOTOTAL COMISSAOBRUTA,
V.VL_COMISSAOPAGA COMISSAOLIQUIDA,
V.NR_NOTA,
V.NM_PESSOA||' - '||V.CD_PESSOA NMPESSOA
FROM VIEW_COMISSAO(<isqlSALDO>, 'L', <iQUEBRA>, 'N', 'N', NULL, <CD_EMPRESA_SESSAO>) V
ORDER BY V.NM_EMPRESA, V.CD_EMPRESA, V.NM_VENDEDOR, V.CD_VENDEDOR,
V.DT_EMISSAO, V.NR_NOTA, V.NM_PESSOA, V.CD_PESSOA

Modelo 10: Comissao por Cliente/Nota/Produtos​

Quando usado: cmbTP_MODELO.Value = 'X' (item "Comissão por Cliente/Nota/Produtos"). Layout RNF002_X.

Antes de imprimir, insere um registro de controle em CAMPOSTEMPORARIOS (chaveado por CURRENT_CONNECTION + CD_MODULO='RNF002') usado pelo layout como flag de sessao.

SQL Base:

SELECT DISTINCT V.* <iCamposQuebra>, <VL_BONUS> VL_BONUS
FROM VIEW_COMISSAO(<isqlSALDO>, 'X', <iQUEBRA>, NULL, 'N', NULL, <CD_EMPRESA_SESSAO>) V
<iLeft>
<iCanhoto>
<iWhere>
ORDER BY NM_EMPRESA <iOrder>, NM_VENDEDOR, NM_PESSOA, CD_PESSOA, DT_EMISSAO, NR_NOTA
-- Controle auxiliar executado antes do relatorio:
INSERT INTO CAMPOSTEMPORARIOS (NR_CONEXAO, NM_CAMPO, CD_MODULO, VL_CAMPO, DT_REGISTRO)
VALUES (CURRENT_CONNECTION, '', 'RNF002', '', CURRENT_TIMESTAMP);