Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

03. Integração novos tributos via Configurador de Tributos (FISA170)

Aviso
titleAtenção

Esta atualização será disponibilizada na Expedição contínua de DEZEMBRO/2025 e o pacote poderá ser acessado através dos links disponibilizados na documentação Pacotes de Atualização - Fiscal.

Informações sobre a Expedição contínua acessar: http://tdn.totvs.com/x/H4uCEw.

Informações sobre o compatibilizador UPDDISTR acessar: Atualizador de dicionário e base de dados - UPDDISTR.

Visando a reforma tributária, o método descrito abaixo tem por objetivo possibilitar o envio dos novos tributos cadastrados no Configurador de Tributos com Operandos de Integração via MSExecAuto Visando a reforma tributária, o método descrito abaixo tem por objetivo possibilitar o envio dos novos tributos cadastrados no Configurador de Tributos com Operandos de Integração via MSExecAuto gravando os tributos diretamente nas tabelas F2D e CJ3.

...

Bloco de código
languagejs
themeMidnight
User Function ExecM910()
    Local aCabec := {}
    Local aItens := {}
    Local aLinha := {}
    Local jId := jsonObject():New()
    Local jPropri := jsonObject():New()
    //Local nX cDoc := " 0900001"

    //Local nY PRIVATE lMsErroAuto := 0
    Local cDoc := " 900001"

    PRIVATE lMsErroAuto := ..F.

    //--Abertura do ambiente --//
    PREPARE ENVIRONMENT EMPRESA "T1" FILIAL "XIFIS26" MODULO "FIS" TABLES "SF1","SD1","SA1","SA2","SB1","SB2","SF4","SED","SE1"

    //--Monta a capa do documento fiscal--//
    aadd(aCabec, {"F1_TIPO"   , "N"})
    aadd(aCabec, {"F1_DOC"    , cDoc})
    aadd(aCabec, {"F1_SERIE"  , "001"})
    aadd(aCabec, {"F1_EMISSAO", dDataBase})
    aadd(aCabec, {"F1_FORNECE", "SP0002"})
    aadd(aCabec, {"F1_LOJA"   , "01"})
    aadd(aCabec, {"F1_ESPECIE", "SPED"})
    aadd(aCabec, {"F1_COND"   , "001"})
    aadd(aCabec, {"F1_DESCONT", 0})
    aadd(aCabec, {"F1_FRETE"  , 0})
    aadd(aCabec, {"F1_SEGURO" , 0})
    aadd(aCabec, {"F1_DESPESA", 0})

    //--Montagem dos itens do documento fiscal--//
    aadd(aLinha,{"D1_ITEM" ,"0001",Nil})
    aadd(aLinha,{"D1_COD"  ,"PA0000000000000000000000000002",Nil}) 
    aadd(aLinha,{"D1_QUANT",1,Nil})
    aadd(aLinha,{"D1_VUNIT",1000,Nil}) 
    aadd(aLinha,{"D1_TOTAL",1000,Nil})
    aadd(aLinha,{"D1_TES","00C",Nil})

	//--Montagem do Json de Tributos
    jPropri["base_valor"]        := 1000
    jPropri["base_quantidade"]   := 0
    jPropri["base_um"]           := ""
    jPropri["aliquota"]          := 18
    jPropri["valor"]             := 180
    jPropri["CST"]               := "000"
    jPropri["CCT"]               := "003"
    jPropri["vl_tributado"]      := 6.55
    jPropri["vl_isento"]         := 0.00
    jPropri["vl_outros"]         := 0.00
    jPropri["vl_diferido"]       := 0.00
    jPropri["pc_diferido"]       := 0
    jPropri["pc_reducao_base"]   := 0
    jPropri["base_original"]     := 0
    jPropri["pc_reducao_aliq"]   := 0
    jPropri["aliquota_original"] := 0.00

    jId["000062000060"]                := jPropri // 000060 sendo o ID do IBS Estadual

    jPropri                      := jsonObject():New()

    jPropri["base_valor"]        := 1000
    jPropri["base_quantidade"]   := 0
    jPropri["base_um"]           := ""
    jPropri["aliquota"]          := 18
    jPropri["valor"]             := 180

    jId["000021"]                := jPropri // 000021 sendo o ID do ICMS

 	//--Inclusão do JSON dos tributos junto com a propriedade TRIBUTOS (obrigatória)
    aadd(aLinha, {"TRIBUTOS", jId})

    aadd(aItens,aLinha)

    //--Teste de inclusao do documento fiscal--//

    MSExecAuto({|x,y,z| mata910(x,y,z)}, aCabec, aItens, 3)

    If !lMsErroAuto
        Conout("Incluido com sucesso! "+cDoc)
    Else
        Conout("Erro na inclusao do documento!")
    EndIf

    ConOut("Fim do processamento!"+ Time())

    RESET ENVIRONMENT

return

No exemplo demonstrado acima estão sendo utilizados os Id's 000060 e 000021, ou seja, o produto PA0000000000000000000000000002 terá os tributos IBS ESTADUAL e ICMS gravados. Para mais informações sobre os ID's Totvs consulte aqui.

Estrutura do JSON

Novos Tributos

...

Bloco de código
languagejs
themeMidnight
		 id_tributo
           |_base_valor
           |_base_quantidade
           |_base_um
           |_aliquota
           |_valor
           |_esc_CST
           |_esc_CCT
  |_vl_tributado
  |_vl_isento
         |_esc_vl_outrostributado
           |_esc_vl_diferidoisento
           |_pcesc_vl_diferidooutros
           |_pcesc_reducaovl_base
diferido
           |_esc_basepc_originaldiferido
           |_esc_pc_reducao_aliq
  |_aliquota_originalbase
           |_esc_base_original
           |_esc_pc_reducao_aliq
           |_esc_aliquota_original

Composição JSON

Bloco de código
languagejs
themeMidnight
 {
      "000062000060": {
        "base_valor": 0,
        "base_quantidade": 10000,
        "base_um": "UM",
        "aliquota": 10,
        "valor": 500,
        "esc_CST": "000",
        "esc_CCT": "003",
        "esc_vl_tributado": 6.55,
        "esc_vl_isento": 0.00,
        "esc_vl_outros": 0.00,
        "esc_vl_diferido": 0.00,
        "esc_pc_diferido": 0,
        "esc_pc_reducao_base": 0,
        "esc_base_original": 0,
        "esc_pc_reducao_aliq": 0,
        "esc_aliquota_original": 0.00
        }
 } 
Aviso
titleAtenção

Caso a estrutura não seja respeitada o processamento será interrompido.

Propriedades do Tributo (F2D)

PropriedadeDescriçãoType
aliquotaAlíquota do tributo
Obrigatório?
base_valor

Valor da base do imposto

number

Sim

base_quantidadeValor da base quando é operação com quantidadenumberNão*
base_umUnidade de medida
(preenchimento obrigatório caso haja valor na propriedade base_quantidade)
character
Não*
aliquotaAlíquota do tributo
base_valorValor da base do imposto
numberSim
valorValor do impostonumberSim

Propriedades de escrituração (CJ3)

PropriedadeDescriçãoTypeObrigatório?
esc_CSTClassificação fiscalcharacter
CCT
Não
esc_CCTCCT IBS/CBScharacterNão
esc_vl_tributadoValor tributadonumberSim
esc_vl_isentoValor isentonumberSim
esc_vl_outrosValor outrosnumberSim

esc_vl_diferido

Valor diferidonumberNão

esc_pc_diferido

Percentual do diferimentonumberNão

esc_pc_reducao_base

Percentual da reduçãonumberNão

esc_base_original

Base originalnumberNão

esc_pc_reducao_aliq

Percentual de redução de alíquotanumberNão

esc_aliquota_original

Alíquota originalnumberNão

Tributos legados

Para o funcionamento correto, os tributos legados (tributos correntes atualmente, antes da reforma) precisam ter pelo menos a seguinte estrutura:

...

Propriedades do Tributo (F2D)

Propriedade

Descrição 

Type

base_valor

Valor da base do imposto

number

base_quantidadeValor da base quando é operação com quantidadenumber
base_umUnidade de medida (preenchimento obrigatório caso haja valor na propriedade base_quantidade)character
aliquotaAlíquota do tributonumber
valorValor do impostonumber

Base quantidade

Em casos onde é necessário enviar o valor da base por quantidade é obrigatório o envio de todas as propriedades do tributo, sendo necessário também o preenchimento da propriedade base_um, exemplo:

Bloco de código
languagejs
themeMidnight
id_tributo
  |_base_valor
  |_base_quantidade
  |_base_um
  |_aliquota
  |_valor

Composição JSON

Bloco de código
languagejs
themeMidnight
{
      "000021": {
        "base_valor": 0,
        "base_quantidade": 10000,
        "base_um": "UM",
        "aliquota": 10,
        "valor": 500,           
        }
    }

Propriedades de escrituração (CJ3)

Propriedade

DescriçãoType

tab_CST

Tabela CSTcharacter
CSTCSTcharacter
vl_tributadoValor tributadonumber
vl_isentoValor isentonumber
vl_outrosValor outrosnumber

vl_diferido

Valor diferidonumber

pc_diferido

Percentual do diferimentonumber

pc_reducao_base

Percentual da reduçãonumber

base_original

Base originalnumber

pc_reducao_aliq

Percentual de redução de alíquotanumber

aliquota_original

Alíquota originalnumbe

Em casos onde é necessário enviar a escrituração é obrigatório que todas as propriedades de escrituração estejam no JSON:

Estrutura JSON tributos legados completa

Bloco de código
languagejs
themeMidnight
id_tributo
   |_base_valor
   |_base_quantidade
   |_base_um
   |_aliquota
   |_valor
   |_tab_CST
   |_CST
   |_vl_tributado
   |_vl_isento
   |_vl_outros
   |_vl_diferido
   |_pc_diferido
   |_pc_reducao_base
   |_base_original
   |_pc_reducao_aliq
   |_aliquota_original

Composição JSON

Propriedade

Descrição

type

Obrigatório

base_valor

Valor da base do imposto

number

Sim

base_quantidadeValor da base quando é operação com quantidadenumberNão*
base_umUnidade de medida (preenchimento obrigatório caso haja valor na propriedade base_quantidade)characterNão*
aliquotaAlíquota do tributonumberSim
valorValor do impostonumberSim

mva

Índice de cálculo MVAnumberNão

aux_mva

Índice de cálculo auxiliar do MVAnumberNão

pauta

PautanumberNão

vl_majorado

Percentual de MajoraçãonumberNão

aux_majoracao

Indice auxiliar do percentual de majorçãonumberNão

vl_majoracao

Valor MajoraçãonumberNão

pc_majorcao

Alíquota MajoraçãonumberNão

aliquota_tribut

Alíquota do Tributo por regra de NCMnumberNão

ded_dep

Dedução por dependentesnumberNão

Base quantidade

* Em casos onde é necessário enviar o valor da base por quantidade é obrigatório o envio de todas as propriedades do tributo, sendo necessário também o preenchimento da propriedade base_um, exemplo:

Bloco de código
languagejs
themeMidnight
id_tributo
  |_base_valor
  |_base_quantidade
  |_base_um
  |_aliquota
  |_valor

Composição JSON

Bloco de código
languagejs
themeMidnight
{
      "000021": {
        "base_valor": 0,
        "base_quantidade": 10000,
        "base_um": "UM",
        "aliquota": 10,
        "valor": 500,           
        }
    }

Propriedades de escrituração (CJ3)

PropriedadeDescriçãotypeObrigatório?

esc_tab_CST

Tabela CSTcharacterNão
esc_CSTCSTcharacterNão
esc_vl_tributadoValor tributadonumberSim
esc_vl_isentoValor isentonumberSim
esc_vl_outrosValor outrosnumberSim

esc_vl_diferido

Valor diferidonumberNão

esc_pc_diferido

Percentual do diferimentonumberNão

esc_pc_reducao_base

Percentual da reduçãonumberNão

esc_base_original

Base originalnumberNão

esc_pc_reducao_aliq

Percentual de redução de alíquotanumberNão

esc_aliquota_original

Alíquota originalnumberNão

Estrutura JSON tributos legados completa

Bloco de código
languagejs
themeMidnight
		id_tributo 
 			|_base_valor
		 	|_base_quantidade
        	|_base_um
        	|_aliquota
        	|_valor
 		 	|_mva
			|_aux_mva
			|_pauta
			|_vl_majorado
			|_aux_majoracao
			|_vl_majoracao
			|_pc_majorcao
			|_aliquota_tribut
			|_ded_dep 
            |_esc_tab_CST
        	|_esc_CST
        	|_esc_vl_tributado
        	|_esc_vl_isento
        	|_esc_vl_outros
        	|_esc_vl_diferido
        	|_esc_pc_diferido
        	|_esc_pc_reducao_base
        	|_esc_base_original
        	|_esc_pc_reducao_aliq
        	|_esc_aliquota_original

Composição JSON

Bloco de código
languagejs
themeMidnight
{
      "000021": {          
	    "base_valor": 0,
        "base_quantidade": 10000,
        "base_um": "UM",
        "aliquota": 10,
        "valor": 500,
		"mva": 0,
		"aux_mva": 0,
		"pauta" : 0,
		"vl_majorado": 0,
		"aux_majoracao": 0,
		"vl_majoracao": 0,
		"pc_majorcao": 0,
		"aliquota_tribut": 0,
		"ded_dep": 0
Bloco de código
languagejs
themeMidnight
{
      "000021": {
        "base_valor": 0,
        "base_quantidade": 10000,
        "base_um": "UM",
        "aliquota": 10,
        "valor": 500,
        "esc_tab_CST": "000001",
        "esc_CST": "001",
        "esc_vl_tributado": 6.55,
        "esc_vl_isento": 0.00,
        "esc_vl_outros": 0.00,
        "esc_vl_diferido": 0.00,
        "esc_pc_diferido": 0,
        "esc_pc_reducao_base": 0,
        "esc_base_original": 0,
        "esc_pc_reducao_aliq": 0,
        "esc_aliquota_original": 0.00
            }
    }

Regras Operandos de Integração

Novos tributos

Para que a integração funcione é necessário que o Operandos de integração esteja configurado nas seguintes regras:

  • Regra de Base
  • Regra de Alíquota
  • Regra de Escrituração
  • Regra de Cálculo

Caso alguma dessas configurações não esteja de acordo será retornada uma mensagem de warning e o processamento será interrompido.

...

Para que a integração funcione é necessário que o Operando de integração esteja configurado nas seguintes regras:

  • Regra de Base
  • Regra de Alíquota
  • Regra de Cálculo

No caso da Regra de Escrituração ela só será necessária, caso no JSON, seja informada alguma propriedade de escrituração. Caso o contrário a classe respeitará a regra de escrituração amarrada ao tributo, se houver.

...