Manual de Atualização — ENFE — Produto 4.1 Saídas
6 min
Criado por Luigi Monteiro Giavara em 01/12/2025 09:58
Atualizado por Luigi Monteiro Giavara em 01/12/2025 11:41

Este manual tem como objetivo orientar o processo de atualização do ENFE, garantindo que os novos componentes (executável e schemas) sejam aplicados corretamente, bem como aplicar as alterações necessárias nas consultas SQL do Gerador de Notas.

Novas tabelas e legenda de dados 

Para os cálculos do IBS e CBS, criamos duas novas tabelas no banco de dados:

  1. FISCALIMPOSTO: responsável pelo dados de cabeçalho da nota.
  2. FISCALITEMIMPOSTO: responsável pelo detalhe das notas.

A ligação direta entre as duas são as respectivas tabelas de cabeçalhos e detalhes das notas de saída e entrada. Na tabela FISCALIMPOSTO fica o agrupamento de valores por documento fiscais e por abrangência:

  • 0 - CBS Federal
  • 1 - IBS Estadual
  • 2 - IBS Municipal

Na tabela FISCALITEMIMPOSTO ficam os valores dos impostos por detalhamento de item do documento fiscal. O campo FLORIGEMDIC armazena as origem das notas com a seguinte legenda:

  • 0 - Outros lançamentos
  • 1 - Cupom fiscal
  • 2 - NF saída
  • 3 - Conhec. frete
  • 4 - NF saída estoque
  • 5 - NF saída estoque ajuste
  • 6 - NF saída estoque transferência
  • 7 - NF entrada
  • 8 - NF devolução
  • 9 - NF importação Micros-Opera
  • 10 - Outros lançamentos importação Micros-Opera

O campo CDORIGEMDOC forma a chave ligado ao FLORIGEMDIC, exemplo:

  • Na tabela está o campo CDORIGEMDOC e, caso o campo FLORIGEMDIC for 2, isso demonstra que é uma nota de saída. Então é a ligação entre a tabela NOTASFISCAIS.CODNOTA.
  • Já o campo CDORIGEMDOCITEM é o campo chave ligado ao detalhamento do documento FLORIGEMDIC/CDORIGEMDOC, como por exemplo o DETNOTAFISCAL.CODDETNOTA, MOVESTOQUE.CHAVE.

Tabelas de replicação que serão utilizadas no futuro 

Essas tabelas vão atender as finalidades de exportações ou apurações, assim como as tabelas docfiscalitem e docfiscalitemEF fazem. O nome delas seguem a mesma lógica das DOC atuais.

  1. DOCFISCALITEMIMPOSTO: Tabela FISCALITEMIMPOSTO gerada para a DOCFISCALITEM
  2. DOCFISCALITEMIMPOSTOEF: Tabela FISCALITEMIMPOSTO gerada para a DOCFISCALITEMEF
  3. DOCFISCALIMPOSTO: Tabela FISCALIMPOSTO gerada para a DOCFISCAL
  4. DOCFISCALIMPOSTOEF: Tabela FISCALIMPOSTO gerada para a DOCFISCALEF

Ajustes no gerador

O conteúdo a seguir é feito com base no ENFE versão 17.08:

SQL de Totalizadores de Impostos

Inclua os seguintes totalizadores no gerador do cabeçalho das notas de saída:

(SELECT fiscalimposto.vlbase FROM fiscalimposto
JOIN notasfiscais as notasfiscais_ibs
ON fiscalimposto.cdorigemdoc = notasfiscais_ibs.codnota
AND fiscalimposto.codhotel = notasfiscais_ibs.codhotel
AND fiscalimposto.florigemdoc = 2
AND fiscalimposto.flimpostoabrangencia = 0
AND notasfiscais_ibs.codnota = notasfiscais.codnota )
AS VALBASECBSIBS,

(SELECT sum(fiscalimposto.vlimposto) FROM fiscalimposto
JOIN notasfiscais as notasfiscais_ibs
ON fiscalimposto.cdorigemdoc = notasfiscais_ibs.codnota
AND fiscalimposto.codhotel = notasfiscais_ibs.codhotel
AND fiscalimposto.florigemdoc = 2
AND fiscalimposto.flimpostoabrangencia in (1,2)
AND notasfiscais_ibs.codnota = notasfiscais.codnota
) AS VALIBS,

(SELECT fiscalimposto.vlimposto FROM fiscalimposto
JOIN notasfiscais as notasfiscais_ibs
ON fiscalimposto.cdorigemdoc = notasfiscais_ibs.codnota
AND fiscalimposto.codhotel = notasfiscais_ibs.codhotel
AND fiscalimposto.florigemdoc = 2
AND fiscalimposto.flimpostoabrangencia = 1
AND notasfiscais_ibs.codnota = notasfiscais.codnota
) AS VALIBSESTADUAL,

(SELECT fiscalimposto.vlimposto FROM fiscalimposto
JOIN notasfiscais as notasfiscais_ibs
ON fiscalimposto.cdorigemdoc = notasfiscais_ibs.codnota
AND fiscalimposto.codhotel = notasfiscais_ibs.codhotel
AND fiscalimposto.florigemdoc = 2
AND fiscalimposto.flimpostoabrangencia = 2
AND notasfiscais_ibs.codnota = notasfiscais.codnota
) AS VALIBSMUNICIPAL,

(SELECT fiscalimposto.vlimposto FROM fiscalimposto
JOIN notasfiscais as notasfiscais_ibs
ON fiscalimposto.cdorigemdoc = notasfiscais_ibs.codnota
AND fiscalimposto.codhotel = notasfiscais_ibs.codhotel
AND fiscalimposto.florigemdoc = 2
AND fiscalimposto.flimpostoabrangencia = 0
AND notasfiscais_ibs.codnota = notasfiscais.codnota
) AS VALCBS,

SQL dos Itens

Devido a uma mudança no CST para os produtos, é necessário ajustar a fora, que utilizamos na ligação dos CSTs gravados no sistema, com os CSTs utilizados no ENFE. Por isso, no detalhamento da nota, altere primeiramente os itens sobre CST:

  1. Atualmente, na grande maioria dos geradores existe um DE-PARA dos códigos de CST de ICMS, CSOSN, CSTPIS e CSTCOFINS.
  2. Retire o DE-PARA e envie o código como armazenado.
  3. Depois, separe os dados de CST e CSOSN:
CASE WHEN DETNOTAFISCAL.CODCST IN ('00','10','20','30','40','41','50','51','60','70','90','61')
THEN DETNOTAFISCAL.CODCST END AS CST ,

CASE WHEN DETNOTAFISCAL.CODCST NOT IN ('00','10','20','30','40','41','50','51','60','70','90','61')
THEN DETNOTAFISCAL.CODCST END AS CSOSN ,


Para o PIS e COFINS, siga a mesma regra, mas como são campos destinos, envie somente o valor do campo:

DETNOTAFISCAL.CSTPIS AS CSTPIS,
DETNOTAFISCAL.CSTCOFINS AS CSTCOFINS,


Na na questão da reforma, inclua os seguintes campos e joins na query de itens da nota:

/* ********************************** DADOS REFORMA TRIBUTARIA ********************************** */
fiscalitemimposto.idcst AS IDCSTIVADUAL,
fiscalitemimposto.idclassificacao AS IDCLASSIFICACAOTRIBUTARIA,

/* ********************************** DADOS IBS ********************************** */
IBSESTADUAL.vlbase,
IBSESTADUAL.VLIMPOSTO + coalesce (IBSMUNICIPAL.VLIMPOSTO,0) AS IBSVALOR,

/* ********************************** DADOS IBS ESTADUAL ********************************** */
IBSESTADUAL.pcaliquota AS IBSESTADUALALIQUOTABRUTA,
IBSESTADUAL.VLIMPOSTO AS IBSESTADUALVALOR,
IBSESTADUAL.PCREDUCAO AS IBSESTADUALREDUCAOALIQUOTA,
IBSESTADUAL.PCALIQUOTAREAL AS IBSESTADUALALIQUOTAEFETIVA,

/* ********************************** DADOS IBS MUNICIPAL ********************************** */
IBSMUNICIPAL.PCALIQUOTA AS IBSMUNICIPALALIQUOTABRUTA,
IBSMUNICIPAL.VLIMPOSTO AS IBSMUNICIPALVALOR,
IBSMUNICIPAL.PCREDUCAO AS IBSMUNICIPALREDUCAOALIQUOTA,
IBSMUNICIPAL.PCALIQUOTAREAL AS IBSMUNICIPALALIQUOTAEFETIVA,

/* ********************************** DADOS CBS ********************************** */
CBS.PCALIQUOTA AS ALIQUOTACBS,
CBS.VLIMPOSTO AS CBSVALOR,
CBS.PCREDUCAO AS CBSREDUCAOALIQUOTA,
CBS.PCALIQUOTAREAL AS CBSALIQUOTABRUTA

Joins no SQL:

LEFT JOIN fiscalitemimposto on fiscalitemimposto.CDORIGEMDOCITEM = DETNOTAFISCAL.detCODNOTA and fiscalitemimposto.codhotel = detnotafiscal.codhotel and fiscalitemimposto.flimpostoabrangencia = 0

left JOIN
fiscalitemimposto CBS on CBS.CDORIGEMDOCITEM = DETNOTAFISCAL.detCODNOTA and CBS.codhotel = detnotafiscal.codhotel and CBS.flimpostoabrangencia = 0

left JOIN
fiscalitemimposto IBSESTADUAL on IBSESTADUAL.CDORIGEMDOCITEM = DETNOTAFISCAL.detCODNOTA and IBSESTADUAL.codhotel = detnotafiscal.codhotel and IBSESTADUAL.flimpostoabrangencia = 1

left JOIN fiscalitemimposto IBSMUNICIPAL on IBSMUNICIPAL.CDORIGEMDOCITEM = DETNOTAFISCAL.detCODNOTA and IBSMUNICIPAL.codhotel = detnotafiscal.codhotel and IBSMUNICIPAL.flimpostoabrangencia = 2


Importação de Layout

  1. Acesse o menu Layout Produto no sistema.
  2. Clique em Importar Layout.
  3. Após a importação, selecione as tags do IBS e CBS.
  4. Configure o DE-PARA no gerador, vinculando corretamente as tags XML aos campos do SQL.
Este artigo foi útil para você?
Últimos artigos visitados