1. DADOS GERAIS

Produto:

TOTVS Varejo Franquias e Redes

Linha de Produto:

 Franquias e Redes

Segmento:

Varejo 

Módulo:

TOTVS PDV Omni

Função:Mapeamento Banco de dados
Ticket:
Requisito/Story/Issue (informe o requisito relacionado) :DVARLIVEPDV-44177


02. SITUAÇÃO/REQUISITO

O PDV Omni deve permitir o recebimento e armazenamento das informações de tributos IBS Municipal, IBS Federal, IS e CBS, e vinculação dos dados de impostos a entidade Produto e NCM garantindo conformidade com a Reforma tributária e os novos requisitos legais.

03. SOLUÇÃO

Informações Armazenadas no PDV

Para atender a esse requisito, foram criadas novas tabelas no banco de dados e realizado o mapeamento de acordo com as especificações da integração.

Abaixo está a estrutura das tabelas criadas e dos objetos JSON correspondentes.


O sistema armazenará as seguintes informações conforme a documentação de integração: Imposto fiscal

tabela imposto_fiscal


A tabela imposto_fiscal se relaciona com as tabelas produto e ncm por meio das tabelas de junção imposto_fiscal_produto e imposto_fiscal_ncm. Esses relacionamentos permitem que um imposto fiscal seja vinculado a vários produtos ou códigos NCM.

Após a criação de um registro em imposto_fiscal, o vínculo com a origem (produto ou NCM) deve ser feito através da tabela de junção correspondente, de acordo com a origem da aplicação do imposto.


tabela imposto_fiscal_ncm - Responsável por realizar o relacionamento entre a entidade imposto_fiscal e o ncm,.

tabela imposto_fiscal_produto -  Responsável por realizar o relacionamento entre a entidade imposto_fiscal e produto.


Também existe o relacionamento do imposto por meio dos campos padrao e local_consumo, que funciona da seguinte forma, caso não haja nenhum relacionamento do imposto diretamente com o produto ou com o NCM, o vínculo poderá ocorrer por meio da coluna Padrão, que o define como padrão para todos os produtos, e do campo Local de Consumo, que deve carregar o código do local e seguirá esta ordem de prioridade município, estado e, por último, país.

Os códigos utilizados para comparação com o Local de Consumo serão obtidos a partir dos dados cadastrais da loja e corresponderão exatamente aos dados utilizados para preenchimento do XML, segue exemplo:


Geração das tags de IS, IBS (Municipal e Estadual) e CBS nos itens

Para habilitar a reforma tributária temos duas validações a primeira é através do parâmetro, acessivel a partir do configurador do PDV: Menu Configurações do sistema → Parâmetros → Configuração Fiscal → "Habilitar reforma tributária":


A segunda é a partir das informações integradas ao banco de dados, Para isso, serão consideradas as datas de vigência (início e fim) e a situação do imposto, conforme registrado na tabela imposto_fiscal.

A seguir, apresentamos exemplos dos XMLs gerados com seus respectivos valores conforme os dados do banco.


Exemplo do banco de dados:


Resumo banco de dados:


1 - IS (Imposto Seletivo)

Para o imposto IS temos duas formas de geração da XML


Com pISEspec

<IS>
	<CSTIS>000</CSTIS>
	<cClassTribIS>123456</cClassTribIS>
	<vBCIS>2500.00</vBCIS>
	<pIS>18.00</pIS>
	<pISEspec>4.59</pISEspec>
	<uTrib>PC</uTrib>
	<qTrib>1.0000</qTrib>
	<vIS>450.05</vIS>
</IS>

Tag: <vBCIS> Valor: 2500.00 É o valor do produto sobre o qual os tributos serão aplicados.

Tag <pIS>: Alíquota = 18.00%

Tag <pISEspec>: Alíquota específica por unidade = 4.59

Tag <qTrib>: Quantidade tributada = 1.0000

Tag <uTrib>: Unidade tributável = PC 

Cálculo:  2500.00 * 18% + 1.0000  * 4.59% = 450.05

Tag <vIS>: Valor do imposto IS = 4.59


Sem pISEspec

<IS>
	<CSTIS>000</CSTIS>
	<cClassTribIS>123456</cClassTribIS>
	<vBCIS>2500.00</vBCIS>
	<pIS>18.00</pIS>
 	<uTrib>PC</uTrib>
	<qTrib>1.0000</qTrib>
	<vIS>450.00</vIS>
</IS>

Tag: <vBCIS> Valor: 2500.00 É o valor do produto sobre o qual os tributos serão aplicados.

Tag <pIS>: Alíquota = 18.00%

Tag <qTrib>: Quantidade tributada = 1.0000

Tag <uTrib>: Unidade tributável = PC

Cálculo: 2500.00 * 18% = 450.00

Tag <vIS>: Valor do imposto IS = 450

Obs.: Esse exemplo sem o pISEspec não reflete o banco acima, pois para isso acontecer a coluna percentual_aliquota_especifica_unidade_medida deve ser nula ou zero.



2 - IBS Estadual e IBS Municipal e CBS

<IBSCBS>
	<CST>000</CST>
	<cClassTrib>654321</cClassTrib>
	<gIBSCBS>
		<vBC>2500.00</vBC>
		<gIBSUF>
			<pIBSUF>18.00</pIBSUF>
			<vIBSUF>450.00</vIBSUF>
		</gIBSUF>
		<gIBSMun>
			<pIBSMun>18.00</pIBSMun>
			<gRed>
				<pRedAliq>50.00</pRedAliq>
				<pAliqEfet>9.00</pAliqEfet>
			</gRed>
			<vIBSMun>225.00</vIBSMun>
		</gIBSMun>
		<gCBS>
			<pCBS>18.00</pCBS>
			<gRed>
				<pRedAliq>40.00</pRedAliq>
				<pAliqEfet>10.80</pAliqEfet>
			</gRed>
			<vCBS>270.00</vCBS>
		</gCBS>
	</gIBSCBS>
</IBSCBS>

Tag: <vBC> Valor: 2500.00 É o valor do produto sobre o qual os tributos serão aplicados.


2.1 IBS Estadual

Tag <pIBSUF>: Alíquota = 18%

Cálculo: 2500.00 * 18% = 450.00

Tag <vIBSUF>: Valor do imposto = 450.00

Sem redução, valor direto sobre a base.


2.2 IBS Municipal

Tag <pIBSMun>: Alíquota = 18%

Tag <pRedAliq>: Redução = 50%

Tag <pAliqEfet>: Alíquota efetiva calculada = 9.00%

Cálculo: 2500.00 * 9% = 225.00

Tag <vIBSMun>: Valor do imposto = 225.00

Com redução de 50%, a alíquota efetiva aplicada foi 9%.


2.3 CBS

Tag <pCBS>: Alíquota = 18%

Tag <pRedAliq>: Redução = 40%

Tag <pAliqEfet>: Alíquota efetiva calculada = 10.80%

Cálculo: 2500.00 * 10.80% = 270.00

Tag <vCBS>: Valor do imposto = 270.00

Com redução de 40%, a alíquota efetiva aplicada foi 10.80%.


3 - Valor do item <vItem>


<det nItem="1">
	<prod>
		<cProd></cProd>
		<cEAN></cEAN>
		<xProd>NOTA FISCAL EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xProd>
		<NCM>33072010</NCM>
		<CFOP>5102</CFOP>
		<uCom>PC</uCom>
		<qCom>1.0000</qCom>
		<vUnCom>15.9000000000</vUnCom>
		<vProd>15.90</vProd>
		<cEANTrib></cEANTrib>
		<uTrib>PC</uTrib>
		<qTrib>1.0000</qTrib>
		<vUnTrib>15.9000000000</vUnTrib>
		<indTot>1</indTot>
	</prod>
	<imposto>
		<vTotTrib>0.00</vTotTrib>
		<ICMS>
			<ICMS20>
				<orig>0</orig>
				<CST>20</CST>
				<modBC>3</modBC>
				<pRedBC>33.3300</pRedBC>
				<vBC>10.60</vBC>
				<pICMS>18.0000</pICMS>
				<vICMS>1.91</vICMS>
				<vICMSDeson>1.91</vICMSDeson>
				<motDesICMS>9</motDesICMS>
				<indDeduzDeson>1</indDeduzDeson>
			</ICMS20>
		</ICMS>
		<PIS>
			<PISNT>
				<CST>04</CST>
			</PISNT>
		</PIS>
		<COFINS>
			<COFINSNT>
				<CST>04</CST>
			</COFINSNT>
		</COFINS>
	</imposto>
	<vItem>13.99</vItem>
</det>

Tag <vItem>: É a soma e subtração de varias tags , conforme a NT v1.10 de junho/2025:

Para o cenário demostrado acima temos:


Tag: <vProd>: 15.90

Tag: <vICMSDeson>: 1.91

Cálculo 15.90 - 1.91 = 13.99

Tag <vItem>: 13.99


Obs.: A partir do momento em que for ativado o parâmetro da reforma tributária a tag vItem passará a ser gerada na XML independente tags novas tags da reforma tributária (IS,IBS,CBS).


Geração das tags de IS, IBS (Municipal e Estadual) e CBS no Total


Após a geração das tags dos itens, deve-se proceder com a geração das tags de totais. Abaixo segue um exemplo, considerando os XMLs apresentados anteriormente:

<total>
	<ICMSTot>
	</ICMSTot>
	<ISTot>
		<vIS>4.59</vIS>
	</ISTot>
	<IBSCBSTot>
		<vBCIBSCBS>2500.00</vBCIBSCBS>
		<gIBS>
			<gIBSUF>
				<vDif>0.00</vDif>
				<vDevTrib>0.00</vDevTrib>
				<vIBSUF>450.00</vIBSUF>
			</gIBSUF>
			<gIBSMun>
				<vDif>0.00</vDif>
				<vDevTrib>0.00</vDevTrib>
				<vIBSMun>225.00</vIBSMun>
			</gIBSMun>
			<vIBS>675.00</vIBS>
			<vCredPres>0</vCredPres>
			<vCredPresCondSus>0</vCredPresCondSus>
		</gIBS>
		<gCBS>
			<vDif>0.00</vDif>
			<vDevTrib>0.00</vDevTrib>
			<vCBS>270.00</vCBS>
			<vCredPres>0.00</vCredPres>
			<vCredPresCondSus>0.00</vCredPresCondSus>
		</gCBS>
	</IBSCBSTot>
	<vNFTot>3449.59</vNFTot>
</total>

Tag <ISTot.vIS>: Soma de todos os Impostos Seletivos vIS dos itens.

Tag <IBSCBSTot.vBCIBSCBS>: Soma de todas as bases de cálculo (gIBSCBS.vBC) dos itens.

Tag <IBSCBSTot.gIBS.gIBSUF.vIBSUF>: Soma de todas as tags vIBSUF.

Tag <IBSCBSTot.gIBS.gIBSMun.vIBSMun>: Soma de todas as tags vIBSMun.

Tag <IBSCBSTot.gCBS.vCBS>: Soma de todas as tags vCBS.

Tag <vNFTot>: Soma de todas as tags vItem.


Obs.: As tags vDif, vDevTrib, vCredPres, vCredPresCondSus devem ser geradas sempre com valor 0, pois a partir do momento que criamos o grupo é obrigatório a geração das mesmas, mesmo que não existam nos itens. 



04. DEMAIS INFORMAÇÕES

Como existem diferentes caminhos para a obtenção do imposto, foi criado um log para registrar de onde o imposto foi obtido. Esse log está localizado no nosso repositório padrão C:\TotvsPDV\Logs e possui o nome TOTVS.Omnishop.API.Fiscal.Zeus.Helpers.FiscalHelper.log[aaaaMMdd].clef. O conteúdo seguirá o formato abaixo:

05. ASSUNTOS RELACIONADOS

Não se aplica

06. ANÁLISE DE IMPACTO

Instalação de novos ambientes/Atualização de novos ambientes

Consulta de produtos

Finalização de vendas

Integração Fiscal

07. VERSÃO

PRODUTO

VERSÃO

TOTVS PDV Omni4.2.84.0