| 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 |
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.
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
id_retaguarda – Identificador único do imposto no ERP.
cst – Código de Situação Tributária
descricao_cst- – Significado do Código de Situação Tributária.
cClassTrib – Classificação Tributária (os três primeiros dígitos devem ser idênticos ao CST-IBS/CBS).
percentual_reducao_aliquota– Percentual de redução de alíquota,
data_inicio_vigencia – Data a partir da qual o imposto entra em vigor na loja.
data_fim_vigencia– Data de término da vigência do imposto.
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:

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:
IS possui uma alíquota específica: 4.59.
CBS e IBS Municipal têm reduções de alíquota: 40% e 50%, respectivamente.
Todos com alíquota base de 18%.
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. |
<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.
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.
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%.
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%.
<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). |
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. |
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:
Não se aplica
Instalação de novos ambientes/Atualização de novos ambientes
Consulta de produtos
Finalização de vendas
Integração Fiscal
PRODUTO | VERSÃO |
|---|---|
| TOTVS PDV Omni | 4.2.84.0 |