Pular para o conteúdo principal

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 a dmFNC001.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 via USUARIOEMPRESA.

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​

TelaDescrição
FNC001Parâ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)
MNF002Emissão de Nota Fiscal — consulta de contas para compensação financeira ao salvar nota
MRC020NFORDEMOrdem de compra / nota fiscal de entrada — carrega parâmetro de compensação

Campos envolvidos​

CampoTipoDefaultTabelaDescrição
ST_COMPENSACAOEMPRESACHAR(1)'N'PARMFINANCFlag que permite ou bloqueia compensação entre empresas
ST_COMPENSACAOFINANCCHAR(1)'N'PARMFINANCFlag geral de compensação financeira (pré-requisito usado junto a ST_COMPENSACAOEMPRESA)
CD_EMPRCONTACOMPENSINTEGERPARMFINANCCódigo da empresa padrão para conta de compensação

Opções disponíveis​

O que fazDetalhe
N — Não (padrão)Compensação restrita à empresa atual. Campo empresa bloqueado na tela de compensação.
S — SimCompensaçã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​

  1. Acesse FNC001 — Parâmetros Financeiros.
  2. Localize a aba "Financeiro 2" e o campo "Permite Compensação entre Empresas".
  3. Selecione a opção "Não".
  4. Salve a configuração (<Ctrl+S> ou botão Salvar).
  5. Abra a rotina de compensação financeira (jFinanceiro).
  6. Observe que o campo de empresa (edtCD_EMRESA) aparece bloqueado (fundo cinza, fonte em tom escuro) no formulário de filtros.
  7. 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'), se ST_COMPENSACAOEMPRESA = 'N', a consulta de contas sempre inclui WHERE 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​

  1. Acesse FNC001 — Parâmetros Financeiros.
  2. Localize a aba "Financeiro 2" e o campo "Permite Compensação entre Empresas".
  3. Selecione a opção "Sim".
  4. Salve a configuração.
  5. Abra a rotina de compensação financeira (jFinanceiro).
  6. Observe que o campo de empresa (edtCD_EMRESA) agora fica editável (fundo branco, fonte preta).
  7. Altere o valor do empresa para o código de outra empresa (ex: de 1 para 2).
  8. Informe a nota ou conta para compensar — o sistema filtra contas sem restrição de empresa (C.CD_EMPRESA = C.CD_EMPRESA).
  9. 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ção JException W-0010 ("usuário não tem acesso à empresa selecionada"). Essa validação é feita via tabela USUARIOEMPRESA (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). Se ST_COMPENSACAOFINANC = 'N', nenhuma compensação é executada ao salvar a nota — independente de ST_COMPENSACAOEMPRESA.

Tabela comparativa resumida​

ValorNomeCampo empresa editável?Escopo da consulta de contasValidação de acesso por empresa
NNãoNão (readonly, fundo cinza)Apenas empresa da sessãoNão se aplica
SSimSim (fundo branco)Todas as empresasSim (USUARIOEMPRESA)

Procedures impactadas​

Rotinas Delphi com referência direta ao campo​

RotinaArquivoEvidência
TdmFNC001.tabPARMFINANCAfterInsertsource/FNC001/UdmFNC001.pas:414Default 'N' na inserção de novo registro em PARMFINANC
CarregarCompensacaosource/jFinanceiro/UCompensacao.pas:135-245Define 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-698Lê ST_COMPENSACAOEMPRESA de PARMFINANC via ExecutaConsulta
TfrmMNF002.btnSalvarClicksource/MNF002/UMNF002.pas:4664-4687Monta SQL de contagem de contas com/sin filtro de empresa conforme flag
TfrmMRC020NFORDEM.btnSalvarClicksource/MRC020/UMRC020NFORDEM.pas:1285Lê 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).