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:
- FISCALIMPOSTO: responsável pelo dados de cabeçalho da nota.
- 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.
- DOCFISCALITEMIMPOSTO: Tabela FISCALITEMIMPOSTO gerada para a DOCFISCALITEM
- DOCFISCALITEMIMPOSTOEF: Tabela FISCALITEMIMPOSTO gerada para a DOCFISCALITEMEF
- DOCFISCALIMPOSTO: Tabela FISCALIMPOSTO gerada para a DOCFISCAL
- 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:
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:
- Atualmente, na grande maioria dos geradores existe um DE-PARA dos códigos de CST de ICMS, CSOSN, CSTPIS e CSTCOFINS.
- Retire o DE-PARA e envie o código como armazenado.
- Depois, separe os dados de CST e CSOSN:
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.CSTCOFINS AS CSTCOFINS,
Na na questão da reforma, inclua os seguintes campos e joins na query de itens da nota:
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 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
- Acesse o menu Layout Produto no sistema.
- Clique em Importar Layout.
- Após a importação, selecione as tags do IBS e CBS.
- Configure o DE-PARA no gerador, vinculando corretamente as tags XML aos campos do SQL.