Histórico da Página
...
03. Integração novos tributos via Configurador de Tributos (FISA170)
| Aviso | ||
|---|---|---|
| ||
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 | ||||
|---|---|---|---|---|
| ||||
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["000060"] := 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 |
...
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
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 | ||||
|---|---|---|---|---|
| ||||
{ "000060": { "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 | ||
|---|---|---|
| ||
Caso a estrutura não seja respeitada o processamento será interrompido. |
Propriedades do Tributo (F2D)
| Propriedade | Descrição | Type |
|---|
| Obrigatório? | |||
|---|---|---|---|
| base_valor | Valor da base do imposto | number | Sim |
| base_quantidade | Valor da base quando é operação com quantidade | number | Não* |
| base_um | Unidade de medida |
| character |
| Não* | |||
| aliquota | Alíquota do tributo | number | Sim |
Valor da base do imposto
| valor | Valor do imposto | number | Sim |
Propriedades de escrituração (CJ3)
| Propriedade | Descrição | Type | Obrigatório? |
|---|---|---|---|
| esc_CST | Classificação fiscal | character | Não |
| esc_CCT | CCT IBS/CBS | character | Não |
| esc_vl_tributado | Valor tributado | number | Sim |
| esc_vl_isento | Valor isento | number | Sim |
| esc_vl_outros | Valor outros | number | Sim |
esc_vl_diferido | Valor diferido | number | Não |
esc_pc_diferido | Percentual do diferimento | number | Não |
esc_pc_reducao_base | Percentual da redução | number | Não |
esc_base_original | Base original | number | Não |
esc_pc_reducao_aliq | Percentual de redução de alíquota | number | Não |
esc_aliquota_original | Alíquota original | number | Nã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_quantidade | Valor da base quando é operação com quantidade | number |
| base_um | Unidade de medida (preenchimento obrigatório caso haja valor na propriedade base_quantidade) | character |
| aliquota | Alíquota do tributo | number |
| valor | Valor do imposto | number |
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 | ||||
|---|---|---|---|---|
| ||||
id_tributo
|_base_valor
|_base_quantidade
|_base_um
|_aliquota
|_valor |
Composição JSON
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
{
"000021": {
"base_valor": 0,
"base_quantidade": 10000,
"base_um": "UM",
"aliquota": 10,
"valor": 500,
}
} |
Propriedades de escrituração (CJ3)
Propriedade | Descrição | Type |
|---|---|---|
tab_CST | Tabela CST | character |
| CST | CST | character |
| vl_tributado | Valor tributado | number |
| vl_isento | Valor isento | number |
| vl_outros | Valor outros | number |
vl_diferido | Valor diferido | number |
pc_diferido | Percentual do diferimento | number |
pc_reducao_base | Percentual da redução | number |
base_original | Base original | number |
pc_reducao_aliq | Percentual de redução de alíquota | number |
aliquota_original | Alíquota original | numbe |
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 | ||||
|---|---|---|---|---|
| ||||
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_quantidade | Valor da base quando é operação com quantidade | number | Não* |
| base_um | Unidade de medida (preenchimento obrigatório caso haja valor na propriedade base_quantidade) | character | Não* |
| aliquota | Alíquota do tributo | number | Sim |
| valor | Valor do imposto | number | Sim |
mva | Índice de cálculo MVA | number | Não |
aux_mva | Índice de cálculo auxiliar do MVA | number | Não |
pauta | Pauta | number | Não |
vl_majorado | Percentual de Majoração | number | Não |
aux_majoracao | Indice auxiliar do percentual de majorção | number | Não |
vl_majoracao | Valor Majoração | number | Não |
pc_majorcao | Alíquota Majoração | number | Não |
aliquota_tribut | Alíquota do Tributo por regra de NCM | number | Não |
ded_dep | Dedução por dependentes | number | Nã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 | ||||
|---|---|---|---|---|
| ||||
id_tributo
|_base_valor
|_base_quantidade
|_base_um
|_aliquota
|_valor |
Composição JSON
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
{
"000021": {
"base_valor": 0,
"base_quantidade": 10000,
"base_um": "UM",
"aliquota": 10,
"valor": 500,
}
} |
Propriedades de escrituração (CJ3)
| Propriedade | Descrição | type | Obrigatório? |
|---|---|---|---|
esc_tab_CST | Tabela CST | character | Não |
| esc_CST | CST | character | Não |
| esc_vl_tributado | Valor tributado | number | Sim |
| esc_vl_isento | Valor isento | number | Sim |
| esc_vl_outros | Valor outros | number | Sim |
esc_vl_diferido | Valor diferido | number | Não |
esc_pc_diferido | Percentual do diferimento | number | Não |
esc_pc_reducao_base | Percentual da redução | number | Não |
esc_base_original | Base original | number | Não |
esc_pc_reducao_aliq | Percentual de redução de alíquota | number | Não |
esc_aliquota_original | Alíquota original | number | Não |
Estrutura JSON tributos legados completa
| Bloco de código | ||||
|---|---|---|---|---|
| ||||
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 | ||||
|---|---|---|---|---|
| ||||
{
"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 | ||||
| ||||
{ "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.
...