Novos campos da Reforma Tributária
IMPORTANTE
Pessoal, estou implementando isso, ainda não finalizado, serve apenas de referência.
Conferindo com os schemas do xmls ainda, ok!
AGRADECIMENTOS
Este DER foi iniciado após conversas com meu concorrente (rs), porém BROTHER de desenvolvimento, amigo verdadeiro (daqueles que se conta numa única mão), cara mais do que parceiro: GLENIO DUARTE.
Estrutura para a Reforma baseada nos schemas de xml
vBCIBSCBSgIBSgIBSUF:vDif,vDevTrib,vIBSUFgIBSMun:vDif,vDevTrib,vIBSMunvIBSvCredPres,vCredPresCondSus
gCBSvDif,vDevTrib,vCBSvCredPres,vCredPresCondSus
gMonovIBSMono,vCBSMono,vIBSMonoReten,vCBSMonoReten,
Campos documentados
- ✅
vbcibscbs→vBCIBSCBS - ✅ IBS UF:
vibsdifuf,vibsdevtribuf,vibsuf - ✅ IBS Mun:
vibsdifmun,vibsdevtribmun,vibsmun - ✅ IBS total:
vibs - ✅ CBS total:
vcbs - ✅ Crédito presumido IBS:
vcredpres,vcredprescondsus - ✅ Crédito presumido CBS:
vcbscredpres,vcbscredprescondsus - ✅ Monofásico:
vibsmono,vcbsmono,vibsmonoreten,vcbsmonoreten,vibsmonoret,vcbsmonoret
- ✅ IS total:
vis - ✅
vnftotbatendo com a fórmula da NT (vProd – vDesc + … + vIBS + vCBS + vIS).
No item, olhando o grupo IBSCBS (vBCIBSCBS, gIBS, gCBS, gMono, gIBSCredPres, gCBSCredPres, etc.):
- ✅ Base combinada:
ibscbs_vbc→vBCIBSCBS - ✅ IBS UF:
pibs_uf,vibs_uf,ibs_pdif_uf,vibs_vdif_uf,ibs_predaliq_uf,ibs_paliqefet_uf,ibs_devtrib_uf - ✅ IBS Mun:
pibs_mun,vibs_mun,ibs_pdif_mun,vibs_vdif_mun,ibs_predaliq_mun,ibs_paliqefet_mun,ibs_devtrib_mun - ✅ IBS total item:
vibs - ✅ CBS item:
pcbs,vcbs,cbs_pdif,vcbs_vdif,cbs_predaliq,cbs_paliqefet,cbs_devtrib - ✅ Crédito presumido IBS:
ccredpres,ibs_pcredpres,ibs_vcredpres,ibs_vcredprescondsus - ✅ Monofásico IBS:
ibs_mono_base,ibs_mono_aliq,ibs_mono_valor - ✅ Monofásico CBS:
cbs_mono_base,cbs_mono_aliq,cbs_mono_valor - ✅ Classificação:
cst_ibs_cbs,cclasstrib,origmerc
Estamos com isso cobrindo o “miolo duro” de base, alíquota, valor e diferimento tanto de IBS quanto CBS, mais classe tributária e monofásico.
Fonte:
Postagem no Forum do ACBR
DER
Banco Mysql
Alinhando campos do DER com os schemas do xml para o banco Mysql:
-
- Tipo:
TDec_0302_04RTC→NUMERIC(7,4).
- Tipo:
ibs_vcredpres→<gIBSCredPres>/<vCredPres>- Tipo:
TDec1302RTC→NUMERIC(15,2).
- Tipo:
ibs_vcredprescondsus→<gIBSCredPres>/<vCredPresCondSus>
-- TABELA: nota cabeçalho
-- Natureza da NF quanto a debitos/creditos (uso interno)
ADD COLUMN tpnfdebito TINYINT NULL COMMENT 'Indicador de NF de debito',
ADD COLUMN tpnfcredito TINYINT NULL COMMENT 'Indicador de NF de credito',
-- Base combinada IBS/CBS da NF
ADD COLUMN vbcibscbs DECIMAL(15,2) NULL COMMENT 'base de calculo combinada IBS/CBS',
-- Credito Presumido
ADD COLUMN vcredpres DECIMAL(15,2) NULL COMMENT 'valor total de credito presumido (ibs/cbs) da NF',
ADD COLUMN vcredprescondsus DECIMAL(15,2) NULL COMMENT 'credito presumido condicionado a suficiencia',
-- Totais IBS - UF (IBSCBSTot/gIBS/gIBSUFTot)
ADD COLUMN vibsdifuf DECIMAL(15,2) NULL COMMENT 'diferença IBS UF (ajuste/DIFAL)',
ADD COLUMN vibsdevtribuf DECIMAL(15,2) NULL COMMENT 'IBS devido a UF',
ADD COLUMN vibsuf DECIMAL(15,2) NULL COMMENT 'IBS devido total UF de destino',
-- Totais IBS - Município (IBSCBSTot/gIBS/gIBSMunTot)
ADD COLUMN vibsdifmun DECIMAL(15,2) NULL COMMENT 'Diferenca IBS Municipio',
ADD COLUMN vibsdevtribmun DECIMAL(15,2) NULL COMMENT 'IBS devido ao Municipio',
ADD COLUMN vibsmun DECIMAL(15,2) NULL COMMENT 'IBS devido total ao Municipio',
-- Credito presumido consolidado IBS/CBS (IBSCBSTot/gIBS e gCBS)
ADD COLUMN vcredpres DECIMAL(15,2) NULL COMMENT 'Valor total crédito presumido IBS/CBS (vCredPres)',
ADD COLUMN vcredprescondsus DECIMAL(15,2) NULL COMMENT 'Valor total crédito presumido cond. suspensa IBS/CBS (vCredPresCondSus)',
-- Totais CBS (IBSCBSTot/gCBS)
ADD COLUMN vcbsdif DECIMAL(15,2) NULL COMMENT 'Diferenca CBS',
ADD COLUMN vcbscredpres DECIMAL(15,2) NULL COMMENT 'Credito presumido CBS',
ADD COLUMN vcbscredprescondsus DECIMAL(15,2) NULL COMMENT 'Credito presumido CBS condicionado suficiencia',
ADD COLUMN vcbsdevtrib DECIMAL(15,2) NULL COMMENT '*CBS devolvido (vDevTrib CBS)';
-- Totais monofasicos da NF (IBSCBSTot/gMono)
ADD COLUMN vibsmono DECIMAL(15,2) NULL COMMENT 'Valor IBS monofasico',
ADD COLUMN vcbsmono DECIMAL(15,2) NULL COMMENT 'Valor CBS monofasico',
ADD COLUMN vcbsmonoreten DECIMAL(15,2) NULL COMMENT 'IBS monofasico retido (responsabilidade de terceiros)',
ADD COLUMN vibsmonoreten DECIMAL(15,2) NULL COMMENT 'CBS monofásico retido (responsabilidade de terceiros)',
ADD COLUMN vibsmonoret DECIMAL(15,2) NULL COMMENT 'IBS monofasico a reter',
ADD COLUMN vcbsmonoret DECIMAL(15,2) NULL COMMENT 'CBS monofásico a reter',
-- IBS / CBS / IS totais da NF
ADD COLUMN vibs DECIMAL(15,2) NULL COMMENT 'valor total do IBS da NF',
ADD COLUMN vcbs DECIMAL(15,2) NULL COMMENT 'valor total do CBS na NF',
ADD COLUMN vis DECIMAL(15,2) NULL COMMENT 'valor total do imposto seletivo IS (somente 2027)';
-- vnftot - valor total da NF com IBS/CBS/IS
ADD COLUMN vnftot DECIMAL(15,2) NULL COMMENT 'Valor total da NF no modelo IBS/CBS',
-- Regimes (opcional)
ADD COLUMN regime_tributario_ibs TINYINT NULL COMMENT 'Regime IBS (0=geral,1=mono,2=susp,...)',
ADD COLUMN regime_tributario_cbs TINYINT NULL COMMENT 'Regime CBS (0=geral,1=mono,2=susp,...)';
-- TABELA: nota_itens
-- Identificacao / classificacao IBS/CBS do item
ADD COLUMN cst_ibs_cbs VARCHAR(3) NULL COMMENT 'CST unificado IBS/CBS',
ADD COLUMN cclasstrib VARCHAR(6) NULL COMMENT 'codigo da classificacao tributaria',
ADD COLUMN origmerc TINYINT NULL COMMENT 'Origem da mercadoria (0=nacional,1=importada,...)',
-- Base combinada IBS/CBS
ADD COLUMN ibscbs_vbc DECIMAL(15,2) NULL COMMENT 'Base de calculo IBS/CBS do item',
-- IBS - UF (gIBSUF)
ADD COLUMN pibs_uf DECIMAL(7,4) NULL COMMENT 'Aliquota IBS UF',
ADD COLUMN vibs_uf DECIMAL(15,2) NULL COMMENT 'Valor IBS UF',
ADD COLUMN ibs_pdif_uf DECIMAL(7,4) NULL COMMENT 'Percentual diferenca UF (DIFAL IBS)',
ADD COLUMN vibs_vdif_uf DECIMAL(15,2) NULL COMMENT 'Valor diferenca IBS UF',
ADD COLUMN ibs_predaliq_uf DECIMAL(7,4) NULL COMMENT 'Aliquota de referencia IBS UF',
ADD COLUMN ibs_paliqefet_uf DECIMAL(7,4) NULL COMMENT 'Aliquota efetiva IBS UF',
ADD COLUMN ibs_devtrib_uf DECIMAL(15,2) NULL COMMENT 'IBS devido UF',
-- IBS - Municipio (gIBSMun)
ADD COLUMN pibs_mun DECIMAL(7,4) NULL COMMENT 'Aliquota IBS Municipio',
ADD COLUMN vibs_mun DECIMAL(15,2) NULL COMMENT 'Valor IBS Municipio',
ADD COLUMN ibs_pdif_mun DECIMAL(7,4) NULL COMMENT 'Percentual diferenca Municipio',
ADD COLUMN vibs_vdif_mun DECIMAL(15,2) NULL COMMENT 'Valor difernca IBS Municipio',
ADD COLUMN ibs_predaliq_mun DECIMAL(7,4) NULL COMMENT 'Aliquota de referencia IBS Municipio',
ADD COLUMN ibs_paliqefet_mun DECIMAL(7,4) NULL COMMENT 'Aliquota efetiva IBS Municipio' ,
ADD COLUMN ibs_devtrib_mun DECIMAL(15,2) NULL COMMENT 'IBS devido Municipio',
-- IBS - total do item (consolidado)
ADD COLUMN vibs DECIMAL(15,2) NULL COMMENT 'Valor IBS total do item',
-- CBS - total do item (gCBS)
ADD COLUMN pcbs DECIMAL(7,4) NULL COMMENT 'Alíquota CBS',
ADD COLUMN vcbs DECIMAL(15,2) NULL COMMENT 'Valor CBS',
ADD COLUMN cbs_pdif DECIMAL(7,4) NULL COMMENT 'Percentual diferença CBS',
ADD COLUMN vcbs_vdif DECIMAL(15,2) NULL COMMENT 'Valor diferença CBS',
ADD COLUMN cbs_predaliq DECIMAL(7,4) NULL COMMENT 'Alíquota de referencia CBS',
ADD COLUMN cbs_paliqefet DECIMAL(7,4) NULL COMMENT 'Aliquota efetiva CBS',
ADD COLUMN cbs_devtrib DECIMAL(15,2) NULL COMMENT 'CBS devido';
-- Credito presumido por item (IBS)
ADD COLUMN ccredpres VARCHAR(2) NULL COMMENT 'Indicador se gera credito presumido',
ADD COLUMN ibs_pcredpres DECIMAL(7,4) NULL COMMENT 'Percentual credito presumido IBS',
ADD COLUMN ibs_vcredpres DECIMAL(15,2) NULL COMMENT 'Valor credito presumido IBS',
ADD COLUMN ibs_vcredprescondsus DECIMAL(15,2) NULL COMMENT 'Credito IBS condicionado a suficiencia',
ADD COLUMN ibs_vbc_credpres DECIMAL(15,2) NULL COMMENT '*Base crédito presumido IBS (vBC gIBSCredPres)';
-- Monofasico por item - IBS
ADD COLUMN ibs_mono_base DECIMAL(15,2) NULL COMMENT 'Base IBS monofasico item',
ADD COLUMN ibs_mono_aliq DECIMAL(7,4) NULL COMMENT 'Aliquota IBS monofasico item',
ADD COLUMN ibs_mono_valor DECIMAL(15,2) NULL COMMENT 'Valor IBS monofasico item',
-- Monofasico por item - CBS
ADD COLUMN cbs_mono_base DECIMAL(15,2) NULL COMMENT 'Base CBS monofasico item',
ADD COLUMN cbs_mono_aliq DECIMAL(7,4) NULL COMMENT 'Aliquota CBS monofasico item',
ADD COLUMN cbs_mono_valor DECIMAL(15,2) NULL COMMENT 'Valor CBS monofasico item',
ADD COLUMN cbs_ccredpres VARCHAR(2) NULL COMMENT '*Código de crédito presumido CBS (cCredPres CBS)',
ADD COLUMN cbs_vbc_credpres DECIMAL(15,2) NULL COMMENT '*Base crédito presumido CBS (vBC gCBSCredPres)',
ADD COLUMN cbs_pcredpres DECIMAL(7,4) NULL COMMENT '*Percentual crédito presumido CBS (pCredPres CBS)',
ADD COLUMN cbs_vcredpres DECIMAL(15,2) NULL COMMENT '*Valor crédito presumido CBS (vCredPres CBS)',
ADD COLUMN cbs_vcredprescondsus DECIMAL(15,2) NULL COMMENT '*Crédito CBS cond. suspensiva (vCredPresCondSus CBS)';
ADD COLUMN is_cenq VARCHAR(3) NULL COMMENT '*Código de enquadramento IS (cEnqIS)',
ADD COLUMN is_vbc DECIMAL(15,2) NULL COMMENT '*Base de cálculo do IS (vBC IS)',
ADD COLUMN is_pis DECIMAL(7,4) NULL COMMENT '*Alíquota do IS (pIS)',
ADD COLUMN is_vis DECIMAL(15,2) NULL COMMENT '*Valor do IS no item (vIS)';
-- Lembrando que, pela NT, o IS é "por fora" e entra na composicao do vNF somando ao total.
-- vTribOp = vBC × alíquota vigente (com tolerância de 0,01)
ADD COLUMN cbs_vtribop DECIMAL(15,2) NULL COMMENT 'Tributo bruto CBS da operação (gCBS/vTribOp)';
ADD COLUMN ibs_vtribop DECIMAL(15,2) NULL COMMENT 'Tributo bruto IBS da operação (quando aplicavel)';
ADD COLUMN ibs_vbc_dif_uf DECIMAL(15,2) NULL COMMENT '' ;
ADD COLUMN ibs_vbc_dif_mun DECIMAL(15,2) NULL COMMENT '' ;
ADD COLUMN cbs_vbc_dif DECIMAL(15,2) NULL COMMENT '' ;
Tipos básicos baseado no schema do xml
Mapeamento conceitual (campos → tipos XSD)
Usando os tipos do DFeTiposBasicos_v1.00.xsd:
<!-- natureza da NF quanto a débitos/créditos -->
<xs:element name="tpNFdebito" type="xs:integer" minOccurs="0"/>
<xs:element name="tpNFcredito" type="xs:integer" minOccurs="0"/>
<!-- Base de cálculo IBS/CBS (total da NF) -->
<xs:element name="vBCIBSCBS" type="TDec1302RTC" minOccurs="0"/>
<!-- Crédito Presumido total da NF -->
<xs:element name="vCredPres" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vCredPresCondSus" type="TDec1302RTC" minOccurs="0"/>
<!-- Relacionados a UF -->
<xs:element name="vIBSDifUF" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vIBSDevTribUF" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vIBSUF" type="TDec1302RTC" minOccurs="0"/>
<!-- Município -->
<xs:element name="vIBSDifMun" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vIBSDevTribMun" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vIBSMun" type="TDec1302RTC" minOccurs="0"/>
<!-- CBS -->
<xs:element name="vCBSDif" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vCBSCredPres" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vCBSCredPresCondSus"type="TDec1302RTC" minOccurs="0"/>
<!-- Monofásico / retenção – totais da NF -->
<xs:element name="vIBSMono" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vCBSMono" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vCBSMonoReten" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vIBSMonoReten" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vIBSMonoRet" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vCBSMonoRet" type="TDec1302RTC" minOccurs="0"/>
<!-- Valor total da NF no modelo IBS/CBS -->
<xs:element name="vNFTot" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vIBS" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vCBS" type="TDec1302RTC" minOccurs="0"/>
<xs:element name="vIS" type="TDec1302RTC" minOccurs="0"/>
<!-- Regimes (opcional) -->
<xs:element name="regimeTributarioIBS" type="xs:integer" minOccurs="0"/>
<xs:element name="regimeTributarioCBS" type="xs:integer" minOccurs="0"/>
Mapeamento conceitual (campos → tipos XSD)
<!-- CST unificado IBS/CBS -->
<xs:element name="CST_IBS_CBS" type="xs:string" minOccurs="0"/> <!-- 3 dígitos -->
<!-- Classificação tributária -->
<xs:element name="cClassTrib" type="xs:string" minOccurs="0"/> <!-- até 6 dígitos -->
<!-- Origem da mercadoria/serviço -->
<xs:element name="origMerc" type="xs:integer" minOccurs="0"/>
<!-- Base combinada IBS/CBS do item -->
<xs:element name="vBCIBSCBS" type="TDec1104RTC" minOccurs="0"/>
<!-- IBS – UF -->
<xs:element name="pIBSUF" type="TDec_0302_04RTC" minOccurs="0"/> <!-- alíquota -->
<xs:element name="vIBSUF" type="TDec1104RTC" minOccurs="0"/> <!-- valor -->
<xs:element name="pDifUF" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vDifUF" type="TDec1104RTC" minOccurs="0"/>
<xs:element name="pRedAliqUF" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="pAliqEfetUF" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vDevTribUF" type="TDec1104RTC" minOccurs="0"/>
<!-- IBS – Município -->
<xs:element name="pIBSMun" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vIBSMun" type="TDec1104RTC" minOccurs="0"/>
<xs:element name="pDifMun" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vDifMun" type="TDec1104RTC" minOccurs="0"/>
<xs:element name="pRedAliqMun" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="pAliqEfetMun" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vDevTribMun" type="TDec1104RTC" minOccurs="0"/>
<!-- IBS – total do item -->
<xs:element name="vIBS" type="TDec1104RTC" minOccurs="0"/>
<!-- CBS – total do item -->
<xs:element name="pCBS" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vCBS" type="TDec1104RTC" minOccurs="0"/>
<xs:element name="pDifCBS" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vDifCBS" type="TDec1104RTC" minOccurs="0"/>
<xs:element name="pRedAliq" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="pAliqEfet" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vDevTrib" type="TDec1104RTC" minOccurs="0"/>
<!-- Crédito presumido por item -->
<xs:element name="indCredPres" type="xs:integer" minOccurs="0"/>
<xs:element name="pCredPresIBS" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vCredPresIBS" type="TDec1104RTC" minOccurs="0"/>
<xs:element name="vCredPresCondSusIBS" type="TDec1104RTC" minOccurs="0"/>
<!-- Monofásico por item -->
<xs:element name="vBCIBSMono" type="TDec1104RTC" minOccurs="0"/>
<xs:element name="pIBSMono" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vIBSMono" type="TDec1104RTC" minOccurs="0"/>
<xs:element name="vBCCBSMono" type="TDec1104RTC" minOccurs="0"/>
<xs:element name="pCBSMono" type="TDec_0302_04RTC" minOccurs="0"/>
<xs:element name="vCBSMono" type="TDec1104RTC" minOccurs="0"/>