Pular para o conteúdo principal

TP_MODELOBLOQUEIO - Modelo de bloqueio de faturamento

Tela: MFA001 - Parâmetros de Faturamento Localização: Parâmetros → Faturamento → Opção 2 (pagFatOp2 em UMFA001.dfm:3656) → campo Modelo de Bloqueio de Faturamento (label em UMFA001.dfm:3941, ComboBox cmbTP_MODELOBLOQUEIO em UMFA001.dfm:4588-4615, posicionado em Left=328, Top=361) Tabela: PARMFATUR.TP_MODELOBLOQUEIO Tipo: Caractere único — DOM_CHAR1 no DDL (docs/schema/tables/PARMFATUR.sql); TStringField com FixedChar = True, Size = 1 no client (UdmMFA001.dfm:1883-1886). ComboBox TwwDBComboBox com Style = csDropDownList e MapList = True — o texto exibido é traduzido para o caractere armazenado via Items.Strings (UMFA001.dfm:4607-4610). Valor padrão: 'N' (Normal) — atribuído em AfterInsert de tabPARMFATUR:

tabPARMFATURTP_MODELOBLOQUEIO.AsString := 'N'; // UdmMFA001.pas:560

Validação (MFA001): não há OnValidate — o ComboBox com csDropDownList garante que apenas 'N', 'A' ou 'L' sejam gravados.

O que o parâmetro faz​

PARMFATUR.TP_MODELOBLOQUEIO define qual motor de bloqueio o faturamento (NF, Pedido, OS) e o recebimento aplicam quando um cliente ultrapassa limites de crédito, atraso ou desconto. Ele funciona como um interruptor de três estados que altera o comportamento das procedures VERIFICA_BLOQUEIO, VALIDA_MODELOBLOQUEIOVLLIMITE, VALIDA_MODELOBLOQUEIODIASATRASO e VALIDA_MODELOBLOQUEIOPCDESCMAX (todas em Scripts/), e é consultado diretamente pelos módulos Delphi de fechamento de pedido/NF/OS para decidir se exigem liberação por alçada e se a página "Lib. Venda (Alçada)" da tela ADM012 fica visível.

  • N — Normal: bloqueio "cru". Se o cliente está configurado com bloqueio e ultrapassar qualquer limite (crédito em R$, crédito acumulado, dias de atraso, % de desconto), o faturamento é travado sem alternativa — o usuário precisa liberar o documento na tela de Liberação (MPD003, MRC005, MOF007, etc.) usando PC_DESCMAXLIBERACAO da PARMUSUARIO como teto.
  • A — Alçada: o bloqueio só ocorre se o limite ultrapassado também ultrapassar o teto do usuário logado (PARMUSUARIO.VL_LIMITECREDACUMULADO, PARMUSUARIO.NR_DIASATRASO, PARMUSUARIO.PC_MAXDESCONTO). Cria uma aba "Lib. Venda (Alçada)" na ADM012 onde se parametrizam os tetos por usuário. Na liberação do pedido (MPD003/MRC005/MOF007/MNF003) o sistema barra totalmente se o usuário que está liberando também estiver abaixo da alçada necessária, obrigando a escalonar para um usuário com alçada maior.
  • L — Alçada com Atualização de Valor de Crédito na TFA002: híbrido — o bloqueio acontece como no modelo N (qualquer excesso trava), mas também marca o tipo de alçada (O_TP_BLOQUEIOALCADA) para que o fluxo de liberação na TFA002 (Análise de Crédito) possa atualizar o valor de crédito do cliente em vez de só autorizar a venda daquela nota.

Resumindo: N = tranca e libera por usuário; A = só tranca se exceder a alçada do liberador; L = tranca como N, mas permite ajustar o limite do cliente na liberação.

Telas impactadas​

MóduloCódigoPapel
Parâmetros de FaturamentoMFA001Produtora — grava o modelo em cmbTP_MODELOBLOQUEIO (UMFA001.dfm:4588-4615), Opção 1
Parâmetros do UsuárioADM012Consumidora-chave — a aba Lib. Venda (Alçada) (pagLibVenda) só aparece quando TP_MODELOBLOQUEIO <> 'N' (UADM012.pas:254-257). Além disso, quando o modelo é alçada, edtPC_DESCMAXLIBERACAO é desabilitado (UdmADM012.pas:756-765, chamado 161946) para evitar conflito com PC_MAXDESCONTO da alçada
Liberação de PedidoMPD003Consumidora — após chamar VERIFICA_BLOQUEIO, se o resultado contiver L/D/P no O_TP_BLOQUEIOALCADA e TP_MODELOBLOQUEIO = 'A', lança exceção pedindo escalonamento por alçada (UdmMPD003.pas:248-266). Se TP_MODELOBLOQUEIO = 'L', mensagem diferente orienta a atualização do crédito do cliente (UdmMPD003.pas:259-271)
Liberação Pedido/OS pneuMPD081Idem MPD003, mas no contexto de pneus (UdmMPD081.pas:578-592)
Liberação RecebimentoMRC005Idem — chama VERIFICA_BLOQUEIO e ramifica mensagem por TP_MODELOBLOQUEIO = 'A' vs 'L' (UdmMRC005.pas:254-267)
Liberação RecebimentoMRC040Idem MRC005 (UdmMRC040.pas:661-675)
Liberação Ordem de ServiçoMOF007, MOF008Idem — ramificam mensagem por modelo de bloqueio (UdmMOF007.pas:196-212, UdmMOF008.pas:958-974)
Liberação de NFMNF003Idem (UdmMNF003.pas:246-262)
Análise de CréditoTFA002Consumidora indireta — quando TP_MODELOBLOQUEIO = 'L', o fluxo de liberação roteia para atualização de CREDITO.VL_CREDITO nesta tela (o código 'L' retornado por VALIDA_MODELOBLOQUEIOVLLIMITE sinaliza o comportamento)

Procedures impactadas​

ProcedureUso de TP_MODELOBLOQUEIO
VERIFICA_BLOQUEIOLê o parâmetro em V_TP_MODELOBLOQUEIO (Scripts/VERIFICA_BLOQUEIO.sql:143-152). Quando <> 'N' busca PC_MAXDESCONTO / ST_HABILITADESCMAXSUBGRUPO da PARMUSUARIO do usuário logado (linha 164-170). Quando = 'N' usa PC_DESCMAXLIBERACAO tradicional (linha 266-273). Orquestra as três validações de modelo de bloqueio abaixo
VALIDA_MODELOBLOQUEIOVLLIMITERelê TP_MODELOBLOQUEIO (linha 26-30) e aplica a matriz de decisão para limite de crédito em R$ e crédito acumulado (Scripts/VALIDA_MODELOBLOQUEIOVLLIMITE.sql:26-170). Nos modelos N/L trava ao ultrapassar I_VL_CREDITO ou I_VL_CREDITOACUM; no modelo A só trava se também ultrapassar PARMUSUARIO.VL_LIMITECREDACUMULADO. No L, marca O_TP_BLOQUEIOALCADA com L para indicar que o crédito pode ser atualizado na TFA002
VALIDA_MODELOBLOQUEIODIASATRASOMesma mecânica para dias de atraso: N/L travam ao ultrapassar I_NR_DIASATRASO; A só trava se também ultrapassar PARMUSUARIO.NR_DIASATRASO (Scripts/VALIDA_MODELOBLOQUEIODIASATRASO.sql:23-92)
VALIDA_MODELOBLOQUEIOPCDESCMAXMesma mecânica para % de desconto: N/L travam se I_PC_DESC > I_PC_MAXIMOUSUARIO; A só trava se também ultrapassar PARMUSUARIO.PC_MAXDESCONTO (Scripts/VALIDA_MODELOBLOQUEIOPCDESCMAX.sql:22-60)
TRGPARMFATUR_BUTrigger BEFORE UPDATE em PARMFATUR — rastreia alterações de TP_MODELOBLOQUEIO em LOGPARAMETROS (auditoria)

Campos envolvidos​

CampoTabelaPapel
TP_MODELOBLOQUEIOPARMFATUREste parâmetro — seletor do motor de bloqueio (N/A/L)
ST_BLOQUEIONF / ST_BLOQUEIOPEDPARMFATURPolíticas por documento (NF / Pedido) — definem o que causa o bloqueio (código C/T/D/A/O/Q/B/F/G/Y/E); o TP_MODELOBLOQUEIO define como ele se resolve
VL_CREDITOCREDITOLimite de crédito em R$ por cliente — insumo do VALIDA_MODELOBLOQUEIOVLLIMITE
VL_CREDITOACUMCREDITOLimite acumulado por cliente — insumo do mesmo procedure
NR_DIASATRASOCREDITOTolerância em dias por cliente — insumo do VALIDA_MODELOBLOQUEIODIASATRASO
PC_DESCONTOMAX / PC_DESCONTOPEDPARMFATURDesconto máximo (NF/Pedido) — insumo do VALIDA_MODELOBLOQUEIOPCDESCMAX
VL_LIMITECREDACUMULADOPARMUSUARIOAlçada em R$ do usuário — só consultada quando TP_MODELOBLOQUEIO = 'A'
NR_DIASATRASOPARMUSUARIOAlçada em dias do usuário — só consultada quando TP_MODELOBLOQUEIO = 'A'
PC_MAXDESCONTOPARMUSUARIOAlçada em % de desconto do usuário — lida em VERIFICA_BLOQUEIO sempre que TP_MODELOBLOQUEIO <> 'N' e usada nos três modelos via I_PC_MAXIMOUSUARIO
PC_DESCMAXLIBERACAOPARMUSUARIOTeto de desconto para liberação no modelo N (VERIFICA_BLOQUEIO.sql:266-273); na MFA001-ADM012 este campo é desabilitado quando o modelo é A/L
O_TP_BLOQUEIOsaída de proceduresString com códigos de bloqueio (C=crédito, T=acumulado, D=dias, U=% usuário, P=% pedido, etc.)
O_TP_BLOQUEIOALCADAsaída de proceduresString com códigos de alçada (L/D/P) que o cliente Delphi usa para decidir a mensagem e, no modelo L, abrir a TFA002

Opções disponíveis​

N - Normal (padrão)​

O que fazDetalhe
Modelo "bloqueio direto"Qualquer excesso em limite/atraso/desconto trava o documento imediatamente
Desabilita a aba Lib. Venda (Alçada)frmADM012.pagLibVenda.TabVisible := False (UADM012.pas:254-255)
Habilita PC_DESCMAXLIBERACAOedtPC_DESCMAXLIBERACAO editável na ADM012 (UdmADM012.pas:761-765) — é o teto usado nas telas de liberação
Usa PC_DESCMAXLIBERACAO como teto de liberaçãoEm VERIFICA_BLOQUEIO (Scripts/VERIFICA_BLOQUEIO.sql:266-273) lê PARMUSUARIO.PC_DESCMAXLIBERACAO — não PC_MAXDESCONTO
Nos VALIDA_MODELOBLOQUEIO* sempre travaSe o excesso ocorreu, emite O_TP_BLOQUEIO com o código correspondente e não preenche O_TP_BLOQUEIOALCADA
Liberação feita pelo próprio usuário que tenta faturarMesmo usuário pode liberar desde que PC_DESCMAXLIBERACAO permita; o sistema não exige escalonamento

Simulação passo a passo​

  1. Cliente Alpha com CREDITO.VL_CREDITO = R$ 1.000,00, ST_BLOQUEIO = 'C' (bloqueia por limite de crédito).
  2. Vendedor João lança pedido de R$ 1.500,00 na MPD003.
  3. VERIFICA_BLOQUEIO chama VALIDA_MODELOBLOQUEIOVLLIMITE — modelo N entra no branch IF (V_TP_MODELOBLOQUEIO IN ('N', 'L')) (VALIDA_MODELOBLOQUEIOVLLIMITE.sql:111-120).
  4. Como 1500 > 1000, grava O_TP_BLOQUEIO = 'C' com mensagem "Ultrapassou o Limite de Crédito. Valor Documento: 1.500,00. Valor do Limite: 1.000,00".
  5. Pedido trava. Na tela de liberação (MPD003), João (ou outro usuário) consulta seu PARMUSUARIO.PC_DESCMAXLIBERACAO. Se tiver, libera; se não, aguarda.

Resultado esperado: bloqueio imediato, sem análise de alçada; liberação depende apenas de PC_DESCMAXLIBERACAO; a tela TFA002 não é envolvida.


A - Alçada​

O que fazDetalhe
Modelo "bloqueio por alçada"O excesso só trava se também ultrapassar o teto do usuário logado
Habilita a aba Lib. Venda (Alçada) na ADM012pagLibVenda.TabVisible := True (UADM012.pas:256-257) — exibe os campos VL_LIMITECREDACUMULADO, NR_DIASATRASO, PC_MAXDESCONTO por usuário
Desabilita PC_DESCMAXLIBERACAOedtPC_DESCMAXLIBERACAO.Enabled := False (UdmADM012.pas:756-760) para não conflitar com PC_MAXDESCONTO da alçada
VERIFICA_BLOQUEIO usa PC_MAXDESCONTO como tetoLinha 164-170 — lê PARMUSUARIO.PC_MAXDESCONTO em vez de PC_DESCMAXLIBERACAO
Bloqueio condicional em cada VALIDA_MODELOBLOQUEIO*Branch IF (V_TP_MODELOBLOQUEIO = 'A') com IF (I_VL_DOCUMENTO > I_VL_CREDITO) AND (V_VL_LIMITEACUMPARMUSUARIO > I_VL_CREDITO) — trava e marca O_TP_BLOQUEIOALCADA
Liberação exige escalonamentoMPD003/MRC005/MOF007/MNF003 lançam JException W-0000 pedindo "usuário com Maior Limite ou Maior Número de Dias por Alçada! [ADM012]" (UdmMPD003.pas:254-257)

Simulação passo a passo​

  1. Cliente Alpha com CREDITO.VL_CREDITO = R$ 1.000,00, ST_BLOQUEIO = 'C'.
  2. João tem PARMUSUARIO.VL_LIMITECREDACUMULADO = R$ 1.200,00 (alçada).
  3. João lança pedido de R$ 1.500,00.
  4. VALIDA_MODELOBLOQUEIOVLLIMITE entra no branch V_TP_MODELOBLOQUEIO = 'A' (VALIDA_MODELOBLOQUEIOVLLIMITE.sql:136-166).
  5. 1500 > 1000 ✔ e 1200 > 1000 ✔ → grava O_TP_BLOQUEIO = 'T'/'C' + O_TP_BLOQUEIOALCADA = 'L'.
  6. MPD003 detecta L em O_TP_BLOQUEIOALCADA e, como TP_MODELOBLOQUEIO = 'A', lança exceção "Solicite a Liberação da Venda a um Usuário com Maior Limite ou Maior Número de Dias por Alçada!".
  7. Se João tivesse alçada de R$ 1.600,00 (VL_LIMITECREDACUMULADO > I_VL_DOCUMENTO), 1600 > 1000 = true mas 1500 > 1600 = false — nesta leitura de VALIDA_MODELOBLOQUEIOVLLIMITE o fluxo é não trava (o IF de alçada exige que tanto o documento quanto a alçada superem o limite para travar). Vendedor com alçada alta não vê o bloqueio.

Resultado esperado: o bloqueio é discriminado por usuário. Usuários com alçada abaixo do limite do cliente travam; usuários com alçada alta passam direto; quando trava, exige escalonamento para outro usuário (a TFA002 não é tocada).


L - Alçada com Atualização de Valor de Crédito na TFA002​

O que fazDetalhe
Modelo "híbrido"Trava como o modelo N (qualquer excesso), mas sinaliza que a liberação pode atualizar o crédito do cliente
Habilita a aba Lib. Venda (Alçada) na ADM012Mesma regra do modelo A (<> 'N' → aba visível)
Desabilita PC_DESCMAXLIBERACAOMesma regra do modelo A
Nos VALIDA_MODELOBLOQUEIO* trava e marca alçadaBranch IF (V_TP_MODELOBLOQUEIO IN ('N', 'L')) trava normalmente; em seguida, branch extra IF (V_TP_MODELOBLOQUEIO IN ('L')) adiciona L/D/P em O_TP_BLOQUEIOALCADA (VALIDA_MODELOBLOQUEIOVLLIMITE.sql:122-132, VALIDA_MODELOBLOQUEIODIASATRASO.sql:51-57, VALIDA_MODELOBLOQUEIOPCDESCMAX.sql:47-53)
Liberação roteia para TFA002MPD003/MRC005/MOF007/MNF003 exibem exceção "Solicite a Liberação da Venda Atualizando o Limite do Cliente na TFA002" (UdmMPD003.pas:259-267, UdmMRC005.pas:260-267, UdmMNF003.pas:254-262)

Simulação passo a passo​

  1. Cliente Alpha com CREDITO.VL_CREDITO = R$ 1.000,00, ST_BLOQUEIO = 'C'.
  2. João lança pedido de R$ 1.500,00.
  3. VALIDA_MODELOBLOQUEIOVLLIMITE entra em V_TP_MODELOBLOQUEIO IN ('N', 'L'). 1500 > 1000 → O_TP_BLOQUEIO = 'T'/'C'.
  4. Em seguida, branch V_TP_MODELOBLOQUEIO IN ('L') (linha 122-132) adiciona O_TP_BLOQUEIOALCADA = 'L'.
  5. MPD003 detecta L em O_TP_BLOQUEIOALCADA e, como TP_MODELOBLOQUEIO = 'L' (não A), lança exceção orientando o liberador a ir à TFA002 e atualizar CREDITO.VL_CREDITO do cliente.
  6. Após a atualização na TFA002, o novo limite passa a valer e o bloqueio não ocorre mais.

Resultado esperado: o bloqueio sempre ocorre (independe de alçada do usuário), mas a orientação ao liberador é aumentar o limite do cliente na TFA002 em vez de apenas autorizar o documento pontualmente. Ideal para operações onde a política é "cliente bom sempre tem limite renegociado, não liberação caso a caso".


Interação com ST_BLOQUEIOPED / VL_CREDITO / VL_CREDITOACUM​

TP_MODELOBLOQUEIO não bloqueia sozinho — ele apenas modula como o bloqueio acontece. A existência do bloqueio é decidida por:

  1. PARMFATUR.ST_BLOQUEIOPED / ST_BLOQUEIONF — indicam quais categorias de bloqueio estão ativas na empresa (crédito em R$, acumulado, dias, desconto, subgrupo, etc.). Os códigos são letras: C = crédito em R$, T = acumulado, D = dias de atraso, U = % usuário, etc. Se estiverem vazios, nada bloqueia, e TP_MODELOBLOQUEIO é inócuo.
  2. CREDITO.VL_CREDITO / VL_CREDITOACUM / NR_DIASATRASO — valores por cliente que definem o limite real. Sem esses valores preenchidos (ou com I_VL_CREDITO IS NULL), o VALIDA_MODELOBLOQUEIOVLLIMITE nem entra no IF (linha 40) — novamente, TP_MODELOBLOQUEIO não é consultado.
  3. PARMUSUARIO.VL_LIMITECREDACUMULADO / NR_DIASATRASO / PC_MAXDESCONTO — só relevantes no modelo A. Se o usuário liberador não tem alçada cadastrada, o modelo A cai no ELSE (VALIDA_MODELOBLOQUEIOVLLIMITE.sql:93-104) e se comporta como N (trava direto).

A ordem de avaliação é: o cliente/pessoa precisa estar com política de bloqueio ativa (PESSOA.ST_BLOQUEIO) e com limite definido em CREDITO; o parâmetro do faturamento (ST_BLOQUEIOPED/NF) precisa incluir o código da categoria; só então o TP_MODELOBLOQUEIO decide se é bloqueio direto (N), por alçada (A) ou com atualização de crédito (L).

Encadeamento prático​

PESSOA.ST_BLOQUEIO (cliente) → PARMFATUR.ST_BLOQUEIOPED/NF → CREDITO.VL_* → TP_MODELOBLOQUEIO → PARMUSUARIO.*
(quem entra no jogo?) (quais categorias valem?) (quais tetos?) (como resolver?) (alçada do liberador)

Tabela Comparativa Resumida​

AspectoN (Normal)A (Alçada)L (Alçada c/ TFA002)
Bloqueia ao exceder limite do cliente?Sim, sempreSó se também exceder alçada do usuárioSim, sempre
Aba "Lib. Venda (Alçada)" na ADM012OcultaVisívelVisível
edtPC_DESCMAXLIBERACAO na ADM012EditávelDesabilitadoDesabilitado
Teto usado em VERIFICA_BLOQUEIOPARMUSUARIO.PC_DESCMAXLIBERACAOPARMUSUARIO.PC_MAXDESCONTOPARMUSUARIO.PC_MAXDESCONTO
Preenche O_TP_BLOQUEIOALCADA?NãoSim (L/D/P) — quando travaSim (L/D/P) — sempre que trava
Fluxo de liberaçãoUsuário com PC_DESCMAXLIBERACAO libera na própria tela (MPD003/MRC005/MNF003…)Escalonamento para usuário com alçada maior (erro "[ADM012]")Atualização de CREDITO.VL_CREDITO na TFA002
Mensagem no cliente Delphi"Valor Documento… Limite…""…Solicite a Liberação…a um Usuário com Maior Limite ou Maior Número de Dias por Alçada! [ADM012]""…Solicite a Liberação da Venda Atualizando o Limite do Cliente na TFA002"
GranularidadeEmpresaEmpresa + usuário liberadorEmpresa + cliente

Referências no Código Fonte​

Delphi (D:/Desenvolvimento/JunsoftERP_V2/source/)​

  • MFA001/UMFA001.dfm:4588-4615 — ComboBox cmbTP_MODELOBLOQUEIO (Opção 1 do faturamento)
  • MFA001/UMFA001.dfm:3939-3941 — Label "Modelo de Bloqueio de Faturamento"
  • MFA001/UMFA001.pas:508 — declaração cmbTP_MODELOBLOQUEIO: TwwDBComboBox
  • MFA001/UdmMFA001.dfm:1883-1886 — TStringField tabPARMFATURTP_MODELOBLOQUEIO (FixedChar, Size=1)
  • MFA001/UdmMFA001.dfm:2437, 2609, 2861 — TP_MODELOBLOQUEIO nos SQL de SELECT/INSERT/UPDATE do dataset
  • MFA001/UdmMFA001.pas:267 — declaração do field
  • MFA001/UdmMFA001.pas:560 — AfterInsert define 'N' como default
  • ADM012/UADM012.pas:252-257 — esconde/mostra aba pagLibVenda conforme TP_MODELOBLOQUEIO
  • ADM012/UdmADM012.pas:750-766 — verificaComponentesLiberacaoVenda habilita/desabilita edtPC_DESCMAXLIBERACAO
  • MPD003/UdmMPD003.pas:248-271 — ramifica mensagem de liberação por 'A' vs 'L'
  • MPD081/UdmMPD081.pas:575-598 — idem no módulo de pneus
  • MRC005/UdmMRC005.pas:254-273 — idem no recebimento
  • MRC040/UdmMRC040.pas:661-680 — idem
  • MOF007/UdmMOF007.pas:193-215 — idem na oficina
  • MOF008/UdmMOF008.pas:955-977 — idem
  • MNF003/UdmMNF003.pas:243-265 — idem na liberação de NF

SQL (D:/Desenvolvimento/JunsoftERP_V2/Scripts/)​

  • VERIFICA_BLOQUEIO.sql:89 — declaração V_TP_MODELOBLOQUEIO
  • VERIFICA_BLOQUEIO.sql:143-152 — leitura do campo de PARMFATUR
  • VERIFICA_BLOQUEIO.sql:164-170 — quando <> 'N', busca PC_MAXDESCONTO da PARMUSUARIO
  • VERIFICA_BLOQUEIO.sql:266-273 — quando = 'N', busca PC_DESCMAXLIBERACAO
  • VALIDA_MODELOBLOQUEIOVLLIMITE.sql:19, 26-30 — leitura do parâmetro
  • VALIDA_MODELOBLOQUEIOVLLIMITE.sql:40-170 — matriz de decisão N/L vs A para VL_CREDITO e VL_CREDITOACUM
  • VALIDA_MODELOBLOQUEIODIASATRASO.sql:17, 23-27 — leitura
  • VALIDA_MODELOBLOQUEIODIASATRASO.sql:37-92 — matriz de decisão para NR_DIASATRASO
  • VALIDA_MODELOBLOQUEIOPCDESCMAX.sql:15, 22-26 — leitura
  • VALIDA_MODELOBLOQUEIOPCDESCMAX.sql:36-80 — matriz de decisão para PC_DESC
  • TRGPARMFATUR_BU.sql — trigger que audita alterações do campo em LOGPARAMETROS

APIs REST (Java)​

  • source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/JunsoftBuilder.java — expõe o campo no SELECT builder
  • source/Server/JunsoftWebAPI/src/main/java/junsoft/erp/repository/queries/ParmFaturSQL.java — query de leitura do parâmetro