ST_COMPENSACAOEMPRESA - Parâmetro de Compensação entre Empresas
Tela de configuração: FNC001 - Parâmetros Financeiros
Localização: Aba "Financeiro 2" — campo "Dados do Parâmetro"
Tabela:PARMFINANC.ST_COMPENSACAOEMPRESA
Tipo:CHAR(1)| Valor padrão:'N'(Não)
Componente:wwDBComboBox3(combobox vinculado admFNC001.dsoPARMFINANC)
Visão geral
Controla se as rotinas de compensação financeira do ERP podem operar com contas de empresas diferentes dentro da mesma instalação.
'N'— compensação restrita à empresa atual; o campo de empresa fica bloqueado (readonly) e com fundo cinza.'S'— compensação permite selecionar outra empresa; o campo de empresa fica editável e a validação de acesso do usuário é aplicada viaUSUARIOEMPRESA.
Quando 'S', o sistema filtra contas e notas ignorando a restrição CD_EMPRESA do WHERE (a condição é substituída pela coluna da própria tabela, ex: C.CD_EMPRESA = C.CD_EMPRESA), ampliando o escopo da consulta para todas as empresas. Quando 'N', o filtro usa a empresa da sessão (cd_Empresa).
Telas impactadas
| Tela | Descrição |
|---|---|
| FNC001 | Parâmetros Financeiros — tela de configuração do parâmetro |
jFinanceiro — Compensação (UCompensacao.pas) | Tela principal de compensação de contas (contas a pagar/recebimentos via nota) |
| MNF002 | Emissão de Nota Fiscal — consulta de contas para compensação financeira ao salvar nota |
| MRC020NFORDEM | Ordem de compra / nota fiscal de entrada — carrega parâmetro de compensação |
Campos envolvidos
| Campo | Tipo | Default | Tabela | Descrição |
|---|---|---|---|---|
ST_COMPENSACAOEMPRESA | CHAR(1) | 'N' | PARMFINANC | Flag que permite ou bloqueia compensação entre empresas |
ST_COMPENSACAOFINANC | CHAR(1) | 'N' | PARMFINANC | Flag geral de compensação financeira (pré-requisito usado junto a ST_COMPENSACAOEMPRESA) |
CD_EMPRCONTACOMPENS | INTEGER | PARMFINANC | Código da empresa padrão para conta de compensação |
Opções disponíveis
| O que faz | Detalhe |
|---|---|
N — Não (padrão) | Compensação restrita à empresa atual. Campo empresa bloqueado na tela de compensação. |
S — Sim | Compensação pode abranger contas de qualquer empresa. Campo empresa fica editável; acesso do usuário é validado. |
N — Não (compensação restrita à empresa)
Simulação passo a passo
- Acesse
FNC001— Parâmetros Financeiros. - Localize a aba
"Financeiro 2"e o campo"Permite Compensação entre Empresas". - Selecione a opção
"Não". - Salve a configuração (
<Ctrl+S>ou botão Salvar). - Abra a rotina de compensação financeira (
jFinanceiro). - Observe que o campo de empresa (
edtCD_EMRESA) aparece bloqueado (fundo cinza, fonte em tom escuro) no formulário de filtros. - Informe uma nota ou conta para compensar — o sistema filtra contas usando
CD_EMPRESA = <empresa da sessão>.
Resultado esperado: Apenas contas pertencentes à empresa da sessão atual aparecem disponíveis para compensação. O usuário não consegue trocar a empresa.
Importante: Mesmo com compensação financeira habilitada (
ST_COMPENSACAOFINANC = 'S'), seST_COMPENSACAOEMPRESA = 'N', a consulta de contas sempre incluiWHERE C.CD_EMPRESA = <empresa da sessão>. As duas flags são independentes e atuam em conjunto (MNF002:4664-4687).
S — Sim (compensação entre empresas permitida)
Simulação passo a passo
- Acesse
FNC001— Parâmetros Financeiros. - Localize a aba
"Financeiro 2"e o campo"Permite Compensação entre Empresas". - Selecione a opção
"Sim". - Salve a configuração.
- Abra a rotina de compensação financeira (
jFinanceiro). - Observe que o campo de empresa (
edtCD_EMRESA) agora fica editável (fundo branco, fonte preta). - Altere o valor do empresa para o código de outra empresa (ex: de
1para2). - Informe a nota ou conta para compensar — o sistema filtra contas sem restrição de empresa (
C.CD_EMPRESA = C.CD_EMPRESA). - Selecione a(s) conta(s) a compensar e confirme a operação.
Resultado esperado: Contas de todas as empresas são listadas. O usuário pode escolher de qual empresa compensar contas. Ao trocar o código da empresa no filtro, a validação de acesso (USUARIOEMPRESA) é executada.
Exceção / Importante: Quando
ST_COMPENSACAOEMPRESA = 'S', o usuário que abrir a compensação precisa ter cadastro de acesso na empresa destino. Caso contrário, o sistema eleva exceçãoJException W-0010("usuário não tem acesso à empresa selecionada"). Essa validação é feita via tabelaUSUARIOEMPRESA(UCompensacao.pas:748-754).
Combinado com
ST_COMPENSACAOFINANC: Na rotina de emissão de nota (MNF002), a busca de contas para compensação só ocorre quando ambas flags estão'S'(MNF002:4664-4667). SeST_COMPENSACAOFINANC = 'N', nenhuma compensação é executada ao salvar a nota — independente deST_COMPENSACAOEMPRESA.
Tabela comparativa resumida
| Valor | Nome | Campo empresa editável? | Escopo da consulta de contas | Validação de acesso por empresa |
|---|---|---|---|---|
N | Não | Não (readonly, fundo cinza) | Apenas empresa da sessão | Não se aplica |
S | Sim | Sim (fundo branco) | Todas as empresas | Sim (USUARIOEMPRESA) |
Procedures impactadas
Rotinas Delphi com referência direta ao campo
| Rotina | Arquivo | Evidência |
|---|---|---|
TdmFNC001.tabPARMFINANCAfterInsert | source/FNC001/UdmFNC001.pas:414 | Default 'N' na inserção de novo registro em PARMFINANC |
CarregarCompensacao | source/jFinanceiro/UCompensacao.pas:135-245 | Define i_cd_Empresa, constrói SQL da compensação com Se() para remover filtro empresa, habilita campo empresa na UI |
iniciar (MNF002) | source/MNF002/UMNF002.pas:691-698 | Lê ST_COMPENSACAOEMPRESA de PARMFINANC via ExecutaConsulta |
TfrmMNF002.btnSalvarClick | source/MNF002/UMNF002.pas:4664-4687 | Monta SQL de contagem de contas com/sin filtro de empresa conforme flag |
TfrmMRC020NFORDEM.btnSalvarClick | source/MRC020/UMRC020NFORDEM.pas:1285 | Lê ST_COMPENSACAOEMPRESA como parte do SELECT de parâmetros |
Referências SQL diretas ao campo em Scripts/
Não foi encontrada referência direta ao campo ST_COMPENSACAOEMPRESA nos scripts SQL de Scripts/.
Candidatas por uso da tabela PARMFINANC
As rotinas SQL abaixo usam a tabela PARMFINANC mas não referenciam o campo ST_COMPENSACAOEMPRESA literalmente. Devem ser validadas caso a caso antes de afirmar impacto funcional direto:
CALCULA_CAPITAL, CALCULA_JURO, CALCULA_JUROMORA, CALCULA_JUROMORA_RFC019, CANCELA_CONTAS, CONTABILIZA_REPARCELAMENTO, CONTROLE_CAIXA, ESTORNA_MOVTOCAIXA, EXECUTA_PROCESSO, GERA_DUPLICATAS, GERA_INTEGRACAO, GERA_INTEGRACAOFISCAL, GERA_MOVTOCONTABIL, GRAVA_CHEQUECARTAO, GRAVA_CONTAS, GRAVA_MOVTOCAIXA, GRAVA_MOVTOCAIXAINDIVIDUAL, GRAVA_MOVTOPROCESSO, GRAVA_PROCESSOSMART, PROCESSA_FATURA.
Regra geral
ST_COMPENSACAOEMPRESA funciona como um modulador de escopo dentro da compensação financeira. Sozinho, ele não habilita compensação — depende de ST_COMPENSACAOFINANC (configurado na mesma tela FNC001, aba "Financeiro 2") estar 'S'. Quando ambos estão 'S', o usuário pode compensar contas entre empresas, desde que possua acesso cadastrado na tabela USUARIOEMPRESA (configurado em ADM004/ACESSO).