ST_BASESUBST - Modelo de Base de Substituição Tributária
Tela de configuração: ADM010 - Parâmetros do Sistema Tabela:
PARMSISTEMA.ST_BASESUBSTTipo:CHAR(1)— DomínioDOM_CHAR1Valor padrão:N
Descrição
Define o modelo de tratamento do valor de base de substituição tributária nas operações fiscais. Quando ativado (S), o sistema separa o valor de "Outras" para o campo VL_BASESUBST em operações cujo CFOP contenha "SUBST". Isso afeta a importação de arquivos magnéticos, a contabilização de impostos e a geração de notas fiscais.
Telas impactadas
| Tela / Rotina | Impacto |
|---|---|
| ADM010 - Parâmetros do Sistema | Configuração do parâmetro |
| TFI005 - Cadastro de Impostos | Default de ST_BASESUBSTITUICAO = 'N' na inserção de novo imposto |
| MNF013 - Nota Fiscal | Cálculo de totais (exclui base ST quando V_ST_BASESUBST = 'S') |
Campos envolvidos
| Campo | Tabela | Descrição |
|---|---|---|
ST_BASESUBST | PARMSISTEMA | Parâmetro global — separa valor de base ST |
ST_BASESUBSTITUICAO | IMPOSTO | Flag por imposto — inclui valor da base ST na base de cálculo (configurado em TFI005 — Cadastro de Impostos) |
VL_BASESUBST | IMPOSTONOTACTB | Valor gravado como base de substituição |
VL_OUTRAS | IMPOSTONOTACTB | Valor de "Outras" — pode receber a base ST quando ST_BASESUBST = 'N' |
Nota: Os campos
ST_BASESUBST(PARMSISTEMA) eST_BASESUBSTITUICAO(IMPOSTO) atuam em conjunto. O primeiro controla a separação global do valor; o segundo controla se o valor da base ST compõe a base de cálculo de cada imposto individualmente.
Opções disponíveis
N - Não separa base de substituição (padrão)
| O que faz | Detalhe |
|---|---|
Não gera valor em VL_BASESUBST | O valor permanece em "Outras" ou "Isento" conforme regra de alíquota |
| Sem restrição | Comportamento padrão do sistema |
Simulação passo a passo
- Acesse ADM010 - Parâmetros do Sistema.
- Verifique que
ST_BASESUBSTestá com valorN. - Importe um arquivo magnético com CFOP de substituição tributária (ex.: CFOP "1.401 SUBST TRIBUTARIA").
- Confira o registro gerado em
IMPOSTONOTACTB— o campoVL_BASESUBSTestará zerado (0,00). - O valor correspondente será registrado em
VL_OUTRASouVL_ISENTO.
Resultado esperado: O valor da base de substituição tributária NÃO é separado — fica agrupado nos campos de Outras/Isento.
Exceção / Importante: Mesmo com
ST_BASESUBST = 'N', o campoIMPOSTO.ST_BASESUBSTITUICAO(configurado por imposto na TFI005) ainda controla se o valor da base ST é adicionado à base de cálculo de cada imposto na rotinaCALCULA_IMPOSTOS.
S - Separa base de substituição tributária
| O que faz | Detalhe |
|---|---|
Gera valor em VL_BASESUBST | Quando o CFOP contém "SUBST", o valor de Outras é redirecionado |
| Exige CFOP com "SUBST" | A separação só ocorre se a descrição do CFO contiver a palavra "SUBST" |
| Zera alíquota na contabilização | Na inclusão de impostos contábeis, PC_ALIQUOTA é zerada e o valor vai para VL_BASESUBST |
Simulação passo a passo
- Acesse ADM010 - Parâmetros do Sistema.
- Altere
ST_BASESUBSTparaS. - Salve o parâmetro.
- Importe um arquivo magnético com CFOP de substituição (ex.: CFOP "2.403 SUBST TRIB").
- Confira o registro em
IMPOSTONOTACTB— o campoVL_BASESUBSTreceberá o valor que seria deVL_OUTRAS. - Na geração de notas fiscais, os impostos com
V_ST_BASESUBST = 'S'são excluídos do totalizador geral de base.
Resultado esperado: O valor da base de substituição tributária é separado e gravado no campo VL_BASESUBST, enquanto a alíquota é zerada na contabilização do imposto.
Exceção / Importante: Na rotina
INCLUI_IMPOSTONOTACTB, a separação só acontece quando o tipo do imposto éI(ICMS), o CFOP contém "SUBST" e o campoST_SUBSTITUICAOdo imposto éN. SeST_SUBSTITUICAO = 'S', o sistema já trata como substituição integral, independentemente deste parâmetro.
Regra geral de separação
O parâmetro atua em duas frentes principais:
-
Importação e Contabilização (
IMPORTA_ARQUIVOMAGNETICO,INCLUI_IMPOSTONOTACTB): lêPARMSISTEMA.ST_BASESUBST. QuandoSe o CFOP contém "SUBST", redireciona o valor paraVL_BASESUBST. -
Cálculo de Impostos (
CALCULA_IMPOSTOS): lêIMPOSTO.ST_BASESUBSTITUICAO(flag por imposto). QuandoS, adiciona o valor da base ST à base de cálculo do imposto. QuandoN, adiciona ao campo de Outras/Isento. -
Geração de Nota Fiscal (
GERA_NOTAFISCAL, rotinas DelphiPersistenciaDao.pas,UdmMNF013.pas): usaV_ST_BASESUBSTcomo filtro para excluir impostos de base ST dos totalizadores gerais.
Procedures impactadas
Rotinas Delphi com referência direta
| Rotina | Arquivo | Evidência |
|---|---|---|
PedidoPneuDAO.GerarPedidosNotas | source/JunsoftServiceFatApp/PersistenciaDao.pas | Filtra V_ST_BASESUBST <> 'S' no totalizador |
PedidoPneuDAO.GerarPedidosNotasSaida | source/JunsoftServiceFatApp/PersistenciaDao.pas | Filtra V_ST_BASESUBST <> 'S' no totalizador |
Calcula_Totais | source/MNF013/UdmMNF013.pas | Filtra V_ST_BASESUBST <> 'S' no totalizador |
TdmTFI005.tabIMPOSTOAfterInsert | source/TFI005/UdmTFI005.pas | Default ST_BASESUBSTITUICAO := 'N' na inserção |
Procedures SQL com referência direta ao campo
| Procedure | Arquivo | Evidência |
|---|---|---|
CALCULA_IMPOSTOS | Scripts/CALCULA_IMPOSTOS.sql | Lê IMPOSTO.ST_BASESUBSTITUICAO para compor base de cálculo |
GERA_NOTAFISCAL | Scripts/GERA_NOTAFISCAL.sql | Filtra V_ST_BASESUBST <> 'S' no totalizador |
IMPORTA_ARQUIVOMAGNETICO | Scripts/IMPORTA_ARQUIVOMAGNETICO.sql | Lê PARMSISTEMA.ST_BASESUBST para gerar VL_BASESUBST |
INCLUI_IMPOSTONOTACTB | Scripts/INCLUI_IMPOSTONOTACTB.sql | Lê PARMSISTEMA.ST_BASESUBST para separar base ST |
VALOR_IMPOSTO | Scripts/VALOR_IMPOSTO.sql | Recebe V_ST_BASESUBST como parâmetro de filtro |
Tabela comparativa resumida
| Valor | Nome | Base ST separada? | Efeito na contabilização | Efeito no cálculo de impostos |
|---|---|---|---|---|
N | Não separa | Não — valor fica em Outras/Isento | Comportamento padrão | IMPOSTO.ST_BASESUBSTITUICAO controla composição da base |
S | Separa | Sim — valor vai para VL_BASESUBST | Alíquota zerada, valor redirecionado | Excluído dos totalizadores gerais |