diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index ce7f1f46..259a9305 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -6,7 +6,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13"]
+ python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
diff --git a/pynfe/data/XSDs/NF-e/DFeTiposBasicos_v1.00.xsd b/pynfe/data/XSDs/NF-e/DFeTiposBasicos_v1.00.xsd
new file mode 100644
index 00000000..d204e406
--- /dev/null
+++ b/pynfe/data/XSDs/NF-e/DFeTiposBasicos_v1.00.xsd
@@ -0,0 +1,1600 @@
+
+
+
+
+
+ Tipo Chave de Documento Fiscal Eletrônico
+
+
+
+
+
+
+
+
+
+ Tipo string genérico
+
+
+
+
+
+
+
+
+ Código Situação Tributária do IBS/CBS
+
+
+
+
+
+
+
+
+ Código de Classificação Tributária do IBS e da CBS
+
+
+
+
+
+
+
+
+ Código de Classificação do Crédito Presumido do IBS e da CBS, conforme tabela cCredPres
+
+
+
+
+
+
+
+
+ Tipo Decimal com 15 dígitos, sendo 11 de corpo e 4 decimais
+
+
+
+
+
+
+
+
+ Tipo Decimal com 11 inteiros, podendo ter 4 decimais (utilizado em tags opcionais)
+
+
+
+
+
+
+
+
+ Tipo CNPJ Base
+
+
+
+
+
+
+
+
+ Tipo CNPJ
+
+
+
+
+
+
+
+
+ Tipo Decimal com 15 dígitos, sendo 13 de corpo e 2 decimais
+
+
+
+
+
+
+
+
+ Tipo Decimal com até 3 dígitos inteiros, podendo ter de 2 até 4 decimais
+
+
+
+
+
+
+
+
+ Tipo da Operação com Ente Governamental
+
+
+
+
+
+
+
+
+
+
+
+ Tipo de Receita Bruta do SN
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tipo de Ente Governamental
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tipo de classificação do Crédito Presumido IBS ZFM
+
+
+
+
+
+
+
+
+
+
+
+ Tipo Indicador de Doação
+
+
+
+
+
+
+
+ Ano e mês referência do período de apuração (AAAA-MM)
+
+
+
+
+
+
+
+ Grupo de informações da Tributação da NFCom
+
+
+
+
+ Código Situação Tributária do IBS/CBS
+
+
+
+
+
+ Indica se a operação é de doação
+
+
+
+
+
+ Informado conforme indicador no cClassTrib
+
+
+
+
+
+
+ Grupo de informações da Tributação da NF3e
+
+
+
+
+ Código Situação Tributária do IBS/CBS
+
+
+
+
+
+ Indica se a operação é de doação
+
+
+
+
+
+ Informado conforme indicador no cClassTrib
+
+
+
+
+
+
+ Grupo de informações da Tributação da NFGas
+
+
+
+
+ Código Situação Tributária do IBS/CBS
+
+
+
+
+
+
+
+ Informado conforme indicador no cClassTrib
+
+
+
+
+
+
+ Grupo de informações da Tributação da NFAg
+
+
+
+
+ Código Situação Tributária do IBS/CBS
+
+
+
+
+
+
+
+ Informado conforme indicador no cClassTrib
+
+
+
+
+
+
+ Grupo de informações da Tributação do CTe
+
+
+
+
+ Código Situação Tributária do IBS/CBS
+
+
+
+
+
+
+
+ Informado conforme indicador no cClassTrib
+
+
+
+
+
+
+ Grupo de informações da Tributação do BPe
+
+
+
+
+ Código Situação Tributária do IBS/CBS
+
+
+
+
+
+
+
+ Informado conforme indicador no cClassTrib
+
+
+
+
+
+
+ Grupo de informações da Tributação da NFCe
+
+
+
+
+ Código Situação Tributária do IBS/CBS
+
+
+
+
+
+ Indica se a operação é de doação
+
+
+
+
+
+
+
+
+
+
+ Grupo de informações da Tributação da NFe
+
+
+
+
+ Código Situação Tributária do IBS/CBS
+
+
+
+
+
+ Indica se a operação é de doação
+
+
+
+
+
+
+ Informar essa opção da Choice para Monofasia (CST 620)
+
+
+
+
+ Informar essa opção da Choice para o CST 800
+
+
+
+
+ Informar essa opção da Choice para o CST 811
+
+
+
+
+
+ Informado conforme indicador no cClassTrib
+
+
+
+
+
+ Crédito Presumido da Operação. Informado conforme indicador no cClassTrib.
+
+
+
+
+ Classificação de acordo com o art. 450, § 1º, da LC 214/25 para o cálculo do crédito presumido na ZFM. Informado conforme indicador no cClassTrib.
+
+
+
+
+
+
+
+ Grupo de informações do Imposto Seletivo
+
+
+
+
+ Código Situação Tributária do Imposto Seletivo
+
+
+
+
+
+
+ Valor do BC
+
+
+
+
+ Alíquota do Imposto Seletivo (percentual)
+
+
+
+
+ Alíquota do Imposto Seletivo (por valor)
+
+
+
+
+
+ Unidade de medida apropriada especificada em Lei Ordinaria para fins de apuração do Imposto Seletivo
+
+
+
+
+
+
+
+
+
+
+ Quantidade com abse no campo uTrib informado
+
+
+
+
+
+ Valor do Imposto Seletivo calculado
+
+
+
+
+
+
+
+ Grupo de informações de totais do Imposto Seletivo
+
+
+
+
+ Valor Total do Imposto Seletivo
+
+
+
+
+
+
+ Grupo de informações de totais da CBS/IBS
+
+
+
+
+ Total Base de Calculo
+
+
+
+
+ Totalização do IBS
+
+
+
+
+
+ Totalização do IBS de competência da UF
+
+
+
+
+
+ Total do Diferimento
+
+
+
+
+ Total de devoluções de tributos
+
+
+
+
+ Valor total do IBS Estadual
+
+
+
+
+
+
+
+ Totalização do IBS de competência Municipal
+
+
+
+
+
+ Total do Diferimento
+
+
+
+
+ Total de devoluções de tributos
+
+
+
+
+ Valor total do IBS Municipal
+
+
+
+
+
+
+
+ Valor total do IBS
+
+
+
+
+
+
+
+ Totalização da CBS
+
+
+
+
+
+ Total do Diferimento
+
+
+
+
+ Total de devoluções de tributos
+
+
+
+
+ Valor total da CBS
+
+
+
+
+
+
+
+ Totalização do estorno de crédito
+
+
+
+
+
+ Valor total do IBS estornado
+
+
+
+
+ Valor total da CBS estornada
+
+
+
+
+
+
+
+
+
+ Grupo de informações de totais da CBS/IBS com monofasia
+
+
+
+
+ Total Base de Calculo
+
+
+
+
+ Totalização do IBS
+
+
+
+
+
+ Totalização do IBS de competência da UF
+
+
+
+
+
+ Total do Diferimento
+
+
+
+
+ Total de devoluções de tributos
+
+
+
+
+ Valor total do IBS Estadual
+
+
+
+
+
+
+
+ Totalização do IBS de competência Municipal
+
+
+
+
+
+ Total do Diferimento
+
+
+
+
+ Total de devoluções de tributos
+
+
+
+
+ Valor total do IBS Municipal
+
+
+
+
+
+
+
+ Valor total do IBS
+
+
+
+
+ Total do Crédito Presumido
+
+
+
+
+ Total do Crédito Presumido Condição Suspensiva
+
+
+
+
+
+
+
+ Totalização da CBS
+
+
+
+
+
+ Total do Diferimento
+
+
+
+
+ Total de devoluções de tributos
+
+
+
+
+ Valor total da CBS
+
+
+
+
+ Total do Crédito Presumido
+
+
+
+
+ Total do Crédito Presumido Condição Suspensiva
+
+
+
+
+
+
+
+ Totais da Monofasia
+ Só deverá ser utilizado para DFe modelos 55 e 65
+
+
+
+
+
+ Valor total do IBS monofásico
+
+
+
+
+ Valor total da CBS monofásica
+
+
+
+
+ Valor total do IBS monofásico sujeito a retenção
+
+
+
+
+ Valor total da CBS monofásica sujeita a retenção
+
+
+
+
+ Valor do IBS monofásico retido anteriormente
+
+
+
+
+ Valor da CBS monofásica retida anteriormente
+
+
+
+
+
+
+
+ Totalização do estorno de crédito
+
+
+
+
+
+ Valor total do IBS estornado
+
+
+
+
+ Valor total da CBS estornada
+
+
+
+
+
+
+
+
+
+ Tipo Monofasia
+
+
+
+ Monofasia
+
+
+
+ Grupo de informações da Tributação Monofásica padrão
+
+
+
+
+
+ Quantidade tributada na monofasia
+
+
+
+
+ Alíquota ad rem do IBS
+
+
+
+
+ Alíquota ad rem da CBS
+
+
+
+
+ Valor do IBS monofásico
+
+
+
+
+ Valor da CBS monofásica
+
+
+
+
+
+
+
+ Grupo de informações da Tributação Monofásica sujeita a retenção
+
+
+
+
+
+ Quantidade tributada sujeita a retenção.
+
+
+
+
+ Alíquota ad rem do IBS sujeito a retenção
+
+
+
+
+ Valor do IBS monofásico sujeito a retenção
+
+
+
+
+ Alíquota ad rem da CBS sujeita a retenção
+
+
+
+
+ Valor da CBS monofásica sujeita a retenção
+
+
+
+
+
+
+
+ Grupo de informações da Tributação Monofásica retida anteriormente
+
+
+
+
+
+ Quantidade tributada retida anteriormente
+
+
+
+
+ Alíquota ad rem do IBS retido anteriormente
+
+
+
+
+ Valor do IBS retido anteriormente
+
+
+
+
+ Alíquota ad rem da CBS retida anteriormente
+
+
+
+
+ Valor da CBS retida anteriormente
+
+
+
+
+
+
+
+ Grupo de informações do diferimento da Tributação Monofásica
+
+
+
+
+
+ Percentual do diferimento do imposto monofásico
+
+
+
+
+ Valor do IBS monofásico diferido
+
+
+
+
+ Percentual do diferimento do imposto monofásico
+
+
+
+
+ Valor da CBS monofásica diferida
+
+
+
+
+
+
+
+ Total de IBS monofásico do item
+
+
+
+
+ Total da CBS monofásica do item
+
+
+
+
+
+
+ Tipo CBS IBS Completo
+
+
+
+ IBS / CBS
+
+
+
+ Valor do BC
+
+
+
+
+
+ Grupo de informações do IBS na UF
+
+
+
+
+
+ Aliquota do IBS de competência das UF (em percentual)
+
+
+
+
+ Grupo de campos do Diferimento
+
+
+
+
+ Grupo de Informações da devolução de tributos
+
+
+
+
+ Grupo de campos da redução de aliquota
+
+
+
+
+ Valor do IBS de competência das UF
+
+
+
+
+
+
+
+ Grupo de Informações do IBS no Município
+
+
+
+
+
+ Aliquota do IBS Municipal (em percentual)
+
+
+
+
+ Grupo de campos do Diferimento
+
+
+
+
+ Grupo de Informações da devolução de tributos
+
+
+
+
+ Grupo de campos da redução de aliquota
+
+
+
+
+ Valor do IBS Municipal
+
+
+
+
+
+
+
+ Valor do IBS
+
+
+
+
+
+ Grupo de Tributação da CBS
+
+
+
+
+
+ Aliquota da CBS (em percentual)
+
+
+
+
+ Grupo de campos do Diferimento
+
+
+
+
+ Grupo de Informações da devolução de tributos
+
+
+
+
+ Grupo de campos da redução de aliquota
+
+
+
+
+ Grupo de operações em áreas incentivadas (ALC/ZFM) - CBS (alíquota zero)
+ Grupo de informações para identificação de operações em áreas incentivadas (ALC/ZFM) com alíquota zero da CBS, conforme arts. 451 e 466 da LC 214/2025, quando fornecedor e destinatário estiverem nessas áreas, distinguindo a existência de processo aprovado na Suframa.
+
+
+
+
+ Valor da CBS
+
+
+
+
+
+
+
+ Grupo de informações da Tributação Regular. Informar como seria a tributação caso não cumprida a condição resolutória/suspensiva. Exemplo 1: Art. 442, §4. Operações com ZFM e ALC. Exemplo 2: Operações com suspensão do tributo.
+
+
+
+
+ Grupo de informações da composição do valor do IBS e da CBS em compras governamental
+
+
+
+
+
+
+ Tipo CBS IBS Completo NFe
+
+
+
+ IBS / CBS
+
+
+
+ Valor do BC
+
+
+
+
+
+ Grupo de informações do IBS na UF
+
+
+
+
+
+ Aliquota do IBS de competência das UF (em percentual)
+
+
+
+
+ Grupo de campos do Diferimento
+
+
+
+
+ Grupo de Informações da devolução de tributos
+
+
+
+
+ Grupo de campos da redução de aliquota
+
+
+
+
+ Valor do IBS de competência das UF
+
+
+
+
+
+
+
+ Grupo de Informações do IBS no Município
+
+
+
+
+
+ Aliquota do IBS Municipal (em percentual)
+
+
+
+
+ Grupo de campos do Diferimento
+
+
+
+
+ Grupo de Informações da devolução de tributos
+
+
+
+
+ Grupo de campos da redução de aliquota
+
+
+
+
+ Valor do IBS Municipal
+
+
+
+
+
+
+
+ Valor do IBS
+
+
+
+
+
+ Grupo de Tributação da CBS
+
+
+
+
+
+ Aliquota da CBS (em percentual)
+
+
+
+
+ Grupo de campos do Diferimento
+
+
+
+
+ Grupo de Informações da devolução de tributos
+
+
+
+
+ Grupo de campos da redução de aliquota
+
+
+
+
+ Grupo de operações em áreas incentivadas (ALC/ZFM) - CBS (alíquota zero)
+ Grupo de informações para identificação de operações em áreas incentivadas (ALC/ZFM) com alíquota zero da CBS, conforme arts. 451 e 466 da LC 214/2025, quando fornecedor e destinatário estiverem nessas áreas, distinguindo a existência de processo aprovado na Suframa.
+
+
+
+
+ Valor da CBS
+
+
+
+
+
+
+
+ Grupo de informações da Tributação Regular. Informar como seria a tributação caso não cumprida a condição resolutória/suspensiva. Exemplo 1: Art. 442, §4. Operações com ZFM e ALC. Exemplo 2: Operações com suspensão do tributo.
+
+
+
+
+ Grupo de informações da composição do valor do IBS e da CBS em compras governamental
+
+
+
+
+
+
+ Tipo Redução Base de Cálculo
+
+
+
+
+ Percentual de redução de aliquota do cClassTrib
+
+
+
+
+ Aliquota Efetiva que será aplicada a Base de Calculo (em percentual)
+
+
+
+
+
+
+ Tipo Crédito Presumido
+
+
+
+
+ Percentual do Crédito Presumido
+
+
+
+
+
+ Valor do Crédito Presumido
+
+
+
+
+ Valor do Crédito Presumido Condição Suspensiva, preencher apenas para cCredPres que possui indicação de Condição Suspensiva
+
+
+
+
+
+
+
+ Tipo Diferimento
+
+
+
+
+ Percentual do diferimento
+
+
+
+
+ Valor do diferimento
+
+
+
+
+
+
+ Tipo Devolução Tributo
+
+
+
+
+ Percentual de devolução do tributo, conforme LC 214/25 art. 118.
+
+
+
+
+ Valor do tributo devolvido ("cashback" de desconto na própria Nota Fiscal / Fatura)
+
+
+
+
+
+
+ Tipo Tributação Regular
+
+
+
+
+ Código da Situação Tributária do IBS e CBS
+ Informar qual seria o CST caso não cumprida a condição resolutória/suspensiva
+
+
+
+
+ Informar qual seria o cClassTrib caso não cumprida a condição resolutória/suspensiva
+
+
+
+
+ Alíquota do IBS da UF
+ Informar como seria a Alíquota caso não cumprida a condição resolutória/suspensiva
+
+
+
+
+ Valor do IBS da UF
+ Informar como seria o valor do Tributo caso não cumprida a condição resolutória/suspensiva
+
+
+
+
+ Alíquota do IBS do Município
+ Informar como seria a Alíquota caso não cumprida a condição resolutória/suspensiva
+
+
+
+
+ Valor do IBS do Município
+ Informar como seria o valor do Tributo caso não cumprida a condição resolutória/suspensiva
+
+
+
+
+ Alíquota da CBS
+ Informar como seria a Alíquota caso não cumprida a condição resolutória/suspensiva
+
+
+
+
+ Valor da CBS
+ Informar como seria o valor do Tributo caso não cumprida a condição resolutória/suspensiva
+
+
+
+
+
+
+ Tipo Tributação Compra Governamental
+
+
+
+
+
+ Valor que seria devido a UF, sem aplicação do Art. 473. da LC 214/2025
+
+
+
+
+
+ Valor que seria devido ao município, sem aplicação do Art. 473. da LC 214/2025
+
+
+
+
+
+ Valor que seria devido a CBS, sem aplicação do Art. 473. da LC 214/2025
+
+
+
+
+
+
+ Tipo Compras Governamentais
+ Cada DFe que utilizar deverá utilizar esses tipo no grupo ide
+
+
+
+
+ Para administração pública direta e suas autarquias e fundações:
+1=União
+2=Estados
+3=Distrito Federal
+4=Municípios
+5=Consórcio Público
+6=Comitê Gestor do IBS
+
+
+
+
+ Percentual de redução de aliquota em compra governamental
+
+
+
+
+ Tipo da operação com ente governamental:
+1 – Fornecimento com pagamento posterior;
+
+2 - Recebimento do pagamento com fornecimento já realizado;
+
+3 – Fornecimento com pagamento já realizado;
+
+4 – Recebimento do pagamento com fornecimento posterior;
+
+
+
+
+ Chave de acesso do documento fiscal anterior.
+
+Deverá ser informado para tpOperGov 2 e 3 e vedado para os tipos 1 e 4.
+
+No caso do tpOperGov 2 aceitará apenas uma chave referenciada, no tipo 3 poderá aceitar múltiplas chaves
+
+Obs: a chave de acesso deverá ser de um emitente com o mesmo CNPJ base
+
+
+
+
+
+
+ Tipo Compras Governamentais
+ Cada DFe que utilizar deverá utilizar esses tipo no grupo ide
+
+
+
+
+ Para administração pública direta e suas autarquias e fundações:
+1=União
+2=Estados
+3=Distrito Federal
+4=Municípios
+5=Consórcio Público
+6=Comitê Gestor do IBS
+
+
+
+
+ Percentual de redução de alíquota em compra governamental
+
+
+
+
+ Tipo da operação com ente governamental:
+1 – Fornecimento com pagamento posterior;
+2 - Recebimento do pagamento com fornecimento já realizado;
+3 – Fornecimento com pagamento já realizado;
+4 – Recebimento do pagamento com fornecimento posterior;
+
+
+
+
+ Chave de acesso do documento fiscal anterior.
+
+Deverá ser informado para tpOperGov 2 e 3 e vedado para os tipos 1 e 4.
+
+No caso do tpOperGov 2 aceitará apenas uma chave referenciada, no tipo 3 poderá aceitar múltiplas chaves
+
+Obs: a chave de acesso deverá ser de um emitente com o mesmo CNPJ base
+
+
+
+
+
+
+ Tipo Pagamento que ocorre em DFe emitdo anteriormente
+ Informado para abater as parcelas de antecipação de pagamento, conforme art. 10 §4
+
+
+
+
+ Chave de acesso do documento fiscal de antecipação de pagamento
+
+Obs: esse DFe deverá ter o indAntecipacaoPgto marcado no grupo ide
+
+
+
+
+
+
+ Tipo Transferência de Crédito
+
+
+
+
+ Valor do IBS a ser transferido
+
+
+
+
+ Valor da CBS a ser transferida
+
+
+
+
+
+
+ Tipo Operações em areas incentivadas com CBS Zero
+
+
+
+
+ Percentual efetivo sem a redução
+ Alíquota efetiva de referência da CBS aplicável à operação fora de áreas ou regimes incentivados.
+
+
+
+
+ Valor efetivo sem a redução
+ Valor da CBS calculado para a operação fora de áreas ou regimes incentivado
+
+
+
+
+
+
+ Tipo Operações em áreas incentivadas (ALC/ZFM) - CBS (alíquota zero)
+
+
+
+
+ Tipo de aplicação da alíquota zero da CBS.
+
+
+
+
+
+
+
+
+
+
+
+ Número do processo na Suframa para o item
+comercializado.
+
+
+
+
+
+
+
+
+
+
+ Percentual efetivo sem a redução
+ Alíquota efetiva de referência da CBS aplicável à operação fora de áreas ou regimes incentivados.
+
+
+
+
+ Valor efetivo sem a redução
+ Valor da CBS calculado para a operação fora de áreas ou regimes incentivado
+
+
+
+
+
+
+ Tipo Estorno de Crédito
+
+
+
+
+ Valor do IBS a ser estornado
+
+
+
+
+ Valor da CBS a ser estornada
+
+
+
+
+
+
+ Tipo Ajuste de Competência
+
+
+
+
+ Ano e mês referência do período de apuração (AAAA-MM)
+
+
+
+
+ Valor do IBS
+
+
+
+
+ Valor da CBS
+
+
+
+
+
+
+ Tipo Crédito Presumido da Operação
+
+
+
+
+ Valor da Base de Cálculo do Crédito Presumido da Operação
+
+
+
+
+ Código de Classificação do Crédito Presumido do IBS e da CBS
+
+
+
+
+ Grupo de Informações do Crédito Presumido referente ao IBS, quando aproveitado pelo emitente do documento.
+
+
+
+
+ Grupo de Informações do Crédito Presumido referente a CBS, quando aproveitado pelo emitente do documento.
+
+
+
+
+
+
+ Tipo Informações do crédito presumido de IBS para fornecimentos a partir da ZFM
+
+
+
+
+ Ano e mês referência do período de apuração (AAAA-MM)
+
+
+
+
+ Classificação de acordo com o art. 450, § 1º, da LC 214/25 para o cálculo do crédito presumido na ZFM
+ 0 - Sem crédito presumido;
+1 - Bens de consumo final (55%);
+2 - Bens de capital (75%);
+3 - Bens intermediários (90,25%);
+4 - Bens de informática e outros definidos em legislação (100%).
+OBS: Percentuais definidos no art. 450, § 1º, da LC 214/25 para o cálculo do crédito presumido
+
+
+
+
+
+ Valor do crédito presumido calculado sobre o saldo devedor apurado
+
+
+
+
+
\ No newline at end of file
diff --git a/pynfe/data/XSDs/NF-e/leiauteNFe_v4.00.xsd b/pynfe/data/XSDs/NF-e/leiauteNFe_v4.00.xsd
index e917570f..e27ed6a8 100644
--- a/pynfe/data/XSDs/NF-e/leiauteNFe_v4.00.xsd
+++ b/pynfe/data/XSDs/NF-e/leiauteNFe_v4.00.xsd
@@ -1,26 +1,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
Tipo Nota Fiscal Eletrônica
@@ -72,10 +55,7 @@
- Série do Documento Fiscal
-série normal 0-889
-Avulsa Fisco 890-899
-SCAN 900-999
+ Série do Documento Fiscal
@@ -93,6 +73,11 @@ SCAN 900-999
Data e Hora da saída ou de entrada da mercadoria / produto (AAAA-MM-DDTHH:mm:ssTZD)
+
+
+ Data da previsão de entrega ou disponibilização do bem (AAAA-MM-DD)
+
+
Tipo do Documento Fiscal (0 - entrada; 1 - saída)
@@ -123,10 +108,22 @@ SCAN 900-999
Código do Município de Ocorrência do Fato Gerador (utilizar a tabela do IBGE)
+
+
+ Informar o município de ocorrência do fato gerador do fato gerador do IBS / CBS.
+Campo preenchido somente quando "indPres = 5 (Operação presencial, fora do estabelecimento)", e não estiver preenchido o endereço do destinatário (grupo: E05) nem o local de entrega (grupo: G01).
+
+
- Formato de impressão do DANFE (0-sem DANFE;1-DANFe Retrato; 2-DANFe Paisagem;3-DANFe Simplificado;
- 4-DANFe NFC-e;5-DANFe NFC-e em mensagem eletrônica)
+ Formato de impressão do DANFE:
+0 - Sem DANFE;
+1 - DANFE Retrato;
+2 - DANFE Paisagem;
+3 - DANFE Simplificado;
+4 - DANFE NFC-e;
+5 - DANFE NFC-e em mensagem eletrônica;
+6 - DANFE Simplificado Tipo 2 (nas condições do Ajuste SINIEF 13/26).
@@ -137,20 +134,21 @@ SCAN 900-999
+
- Forma de emissão da NF-e
+ Forma de emissão da NF-e:
1 - Normal;
-2 - Contingência FS
-3 - Regime Especial NFF (NT 2021.002)
-4 - Contingência DPEC
-5 - Contingência FSDA
-6 - Contingência SVC - AN
-7 - Contingência SVC - RS
-9 - Contingência off-line NFC-e
+2 - Contingência FS;
+3 - Regime Especial NFF (NT 2021.002);
+4 - Contingência DPEC;
+5 - Contingência FSDA;
+6 - Contingência SVC - AN;
+7 - Contingência SVC - RS;
+9 - Contingência off-line da NFC-e e da NF-e com DANFE Simplificado Tipo 2.
@@ -190,7 +188,19 @@ SCAN 900-999
1 - NFe normal
2 - NFe complementar
3 - NFe de ajuste
-4 - Devolução/Retorno
+4 - Devolução/Retorno
+5 - Nota de crédito
+6 - Nota de débito
+
+
+
+
+ Tipo de Nota de Débito
+
+
+
+
+ Tipo de Nota de Crédito
@@ -207,8 +217,14 @@ SCAN 900-999
- Indicador de presença do comprador no estabelecimento comercial no momento da oepração
- (0-Não se aplica (ex.: Nota Fiscal complementar ou de ajuste;1-Operação presencial;2-Não presencial, internet;3-Não presencial, teleatendimento;4-NFC-e entrega em domicílio;5-Operação presencial, fora do estabelecimento;9-Não presencial, outros)
+ Indicador de presença do comprador no estabelecimento comercial no momento da oepração:
+0 - Não se aplica (ex.: Nota Fiscal complementar ou de ajuste);
+1 - Operação presencial;
+2 - Operação não presencial, internet;
+3 - Operação não presencial, teleatendimento;
+4 - Operação não presencial com NFC-e e NFe com DANFE Simplificado Tipo 2 (com entrega);
+5 - Operação presencial, fora do estabelecimento;
+9 - Operação não presencial, outros.
@@ -237,6 +253,17 @@ SCAN 900-999
+
+
+ Código indicador do local da operação de fornecimento
+
+
+
+
+
+
+
+
Processo de emissão utilizado com a seguinte codificação:
@@ -244,7 +271,8 @@ SCAN 900-999
1 - emissão de NF-e avulsa pelo Fisco;
2 - emissão de NF-e avulsa, pelo contribuinte com seu certificado digital, através do site
do Fisco;
-3- emissão de NF-e pelo contribuinte com aplicativo fornecido pelo Fisco.
+3 - emissão de NF-e pelo contribuinte com aplicativo fornecido pelo Fisco;
+4 - emissão de NF-e por Provedor de Assinatura e Autorização - PAA.
@@ -466,6 +494,25 @@ Preencher com "2B", quando se tratar de Cupom Fiscal emitido por máqu
+
+
+ Grupo de Compras Governamentais
+
+
+
+
+ Informado para abater as parcelas de antecipação de pagamento, conforme Art. 10. § 4º
+
+
+
+
+
+ Chave de acesso da NF-e de antecipação de pagamento
+
+
+
+
+
@@ -570,6 +617,17 @@ Este campo será obrigatoriamente preenchido com:
+
+
+ Inscrição do emitente na Suframa
+
+
+
+
+
+
+
+
@@ -949,6 +1007,11 @@ Formato ”CFOP9999”.
+
+
+ Classificação para subapuração do IBS na ZFM
+
+
Código EX TIPI (3 posições)
@@ -1037,7 +1100,7 @@ Formato ”CFOP9999”.
- Valor unitário de tributação - - alterado para aceitar 0 a 10 casas decimais e 11 inteiros
+ Valor unitário de tributação - alterado para aceitar 0 a 10 casas decimais e 11 inteiros
@@ -1074,10 +1137,20 @@ Formato ”CFOP9999”.
+
+
+ Indicador de fornecimento de bem móvel usado: 1-Bem Móvel Usado
+
+
+
+
+
+
+
+
- Delcaração de Importação
-(NT 2011/004)
+ Declaração de Importação (NT 2011/004)
@@ -2041,7 +2114,7 @@ ambiente.
Valor estimado total de impostos federais, estaduais e municipais
-
+
@@ -2497,13 +2570,15 @@ ambiente.
- Motivo da desoneração do ICMS:3-Uso na agropecuária;9-Outros;12-Fomento agropecuário
+ Motivo da desoneração do ICMS:3-Uso na agropecuária;9-Outros; 10=Deficiente Condutor (Convênio ICMS 38/12); 11=Deficiente Não Condutor (Convênio ICMS 38/12); 12-Fomento agropecuário
+
+
@@ -3337,11 +3412,39 @@ Informar o motivo da desoneração:
Percentual de redução da BC
+
+
+ Código de Benefício Fiscal na UF aplicado ao item quando houver RBC.
+
+
+
+
+
+
+
+
Alíquota do ICMS
+
+
+
+ Valor do ICMS da Operação
+
+
+
+
+ Percentual do diferemento
+
+
+
+
+ Valor do ICMS da diferido
+
+
+
Valor do ICMS
@@ -3364,6 +3467,23 @@ Informar o motivo da desoneração:
+
+
+
+ Percentual do diferimento do ICMS relativo ao Fundo de Combate à Pobreza (FCP).
+
+
+
+
+ Valor do ICMS relativo ao Fundo de Combate à Pobreza (FCP) diferido.
+
+
+
+
+ Valor efetivo do ICMS relativo ao Fundo de Combate à Pobreza (FCP).
+
+
+
@@ -3511,12 +3631,14 @@ Operação interestadual para consumidor final com partilha do ICMS devido na o
Tributação pelo ICMS
10 - Tributada e com cobrança do ICMS por substituição tributária;
+20 – Redução de base de cálculo
90 – Outros.
+
@@ -3635,6 +3757,43 @@ Operação interestadual para consumidor final com partilha do ICMS devido na o
Sigla da UF para qual é devido o ICMS ST da operação.
+
+
+ Grupo desoneração
+
+
+
+ Valor do ICMS de desoneração
+
+
+
+
+ Motivo da desoneração do ICMS:9-Outros;10=Deficiente Condutor (Convênio ICMS 38/12) 11=Deficiente Não Condutor (Convênio ICMS 38/12)
+
+
+
+
+
+
+
+
+
+
+
+
+ Indica se o valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd):
+0=Valor do ICMS desonerado (vICMSDeson) não deduz do valor do item (vProd) / total da NF-e;
+1=Valor do ICMS desonerado (vICMSDeson) deduz do valor do item (vProd) / total da NF-e.
+
+
+
+
+
+
+
+
+
+
@@ -5019,6 +5178,16 @@ Substituição Tributaria;
+
+
+ Grupo de informações do Imposto Seletivo
+
+
+
+
+ Grupo de informações dos tributos IBS, CBS e Imposto Seletivo
+
+
@@ -5117,6 +5286,36 @@ Substituição Tributaria;
+
+
+ Valor total do Item, correspondente à sua participação no total da nota. A soma dos itens deverá corresponder ao total da nota.
+
+
+
+
+ Referenciamento de item de outros DFe
+
+
+
+
+
+ Chave de Acesso do DFe referenciado
+
+
+
+
+ Número do item do documento referenciado. Corresponde ao atributo nItem do elemento det do documento original.
+
+
+
+
+
+
+
+
+
+
+
@@ -5415,6 +5614,21 @@ Substituição Tributaria;
+
+
+ Valores totais da NF com Imposto Seletivo
+
+
+
+
+ Valores totais da NF com IBS / CBS
+
+
+
+
+ Valor Total da NF considerando os impostos por fora IBS, CBS e IS
+
+
@@ -6368,6 +6582,40 @@ tipo de ato concessório:
+
+
+ Grupo de Informação do Provedor de Assinatura e Autorização
+
+
+
+
+
+ CNPJ do Provedor de Assinatura e Autorização
+
+
+
+
+ Assinatura RSA do Emitente para DFe gerados por PAA
+
+
+
+
+
+ Assinatura digital padrão RSA
+ Converter o atributo Id do DFe para array de bytes e assinar com a chave privada do RSA com algoritmo SHA1 gerando um valor no formato base64.
+
+
+
+
+ Chave Publica no padrão XML RSA Key
+
+
+
+
+
+
+
+
@@ -6380,7 +6628,7 @@ tipo de ato concessório:
-
+
@@ -6403,9 +6651,18 @@ tipo de ato concessório:
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
@@ -6479,7 +6736,7 @@ tipo de ato concessório:
Descrição literal do status do serviço solicitado.
-
+
Código da Mensagem.
@@ -6498,7 +6755,7 @@ tipo de ato concessório:
-
+
@@ -7221,6 +7478,53 @@ alterado para tamanho variavel 1-4. (NT2011/004)
+
+
+
+
+
+
+ Tipo de Nota de Débito:
+ 01=Transferência de créditos para Cooperativas;
+ 02=Anulação de Crédito por Saídas Imunes/Isentas;
+ 03=Débitos de notas fiscais não processadas na apuração;
+ 04=Multa e juros;
+ 05=Transferência de crédito na sucessão;
+ 06=Pagamento antecipado;
+ 07=Perda em estoque (Perecimento, Perda, Furto, Roubo);
+ 08=Desenquadramento do SN;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tipo de Nota de Crédito:
+ 01=Multa e juros;
+ 02=Apropriação de crédito presumido de IBS sobre o saldo devedor na ZFM (art. 450, § 1º, LC 214/25);
+ 03=Retorno por recusa na entrega ou por não localização do destinatário na tentativa de entrega;
+ 04=Redução de valores;
+ 05=Transferência de crédito na sucessão;
+ 06=Retorno por recusa parcial na entrega;
+
+
+
+
+
+
+
+
+
+
@@ -7233,6 +7537,7 @@ alterado para tamanho variavel 1-4. (NT2011/004)
+
diff --git a/pynfe/data/XSDs/NF-e/nfe_v4.00.xsd b/pynfe/data/XSDs/NF-e/nfe_v4.00.xsd
index 389c95d7..3c5780f9 100644
--- a/pynfe/data/XSDs/NF-e/nfe_v4.00.xsd
+++ b/pynfe/data/XSDs/NF-e/nfe_v4.00.xsd
@@ -1,4 +1,5 @@
+
@@ -6,4 +7,4 @@
Nota Fiscal Eletrônica
-
+
\ No newline at end of file
diff --git a/pynfe/data/XSDs/NF-e/tiposBasico_v4.00.xsd b/pynfe/data/XSDs/NF-e/tiposBasico_v4.00.xsd
index 872801e5..5fe029e9 100644
--- a/pynfe/data/XSDs/NF-e/tiposBasico_v4.00.xsd
+++ b/pynfe/data/XSDs/NF-e/tiposBasico_v4.00.xsd
@@ -1,4 +1,5 @@
+
@@ -52,7 +53,7 @@
-
+
@@ -61,8 +62,8 @@
-
-
+
+
@@ -81,8 +82,8 @@
-
-
+
+
@@ -92,17 +93,17 @@
-
+
- Tipo Número do CNPJ tmanho varíavel (3-14)
+ Tipo Número do CNPJ
-
+
@@ -112,7 +113,7 @@
-
+
@@ -521,7 +522,7 @@
-
+
@@ -595,4 +596,13 @@
-
+
+
+ Tipo que representa uma chave publica padrão RSA
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pynfe/entidades/notafiscal.py b/pynfe/entidades/notafiscal.py
index 7047138e..11da9082 100644
--- a/pynfe/entidades/notafiscal.py
+++ b/pynfe/entidades/notafiscal.py
@@ -1035,10 +1035,18 @@ class NotaFiscalProduto(Entidade):
ibscbs_p_ibs_uf = Decimal() # pIBSUF
ibscbs_v_ibs_uf = Decimal() # vIBSUF
+ # IBS estadual - gRed
+ ibscbs_ibs_uf_p_red_aliq = Decimal() # gRed - pRedAliq
+ ibscbs_ibs_uf_p_aliq_efet = Decimal() # gRed - pAliqEfet
+
# gIBSMun - IBS municipal
ibscbs_p_ibs_mun = Decimal() # pIBSMun
ibscbs_v_ibs_mun = Decimal() # vIBSMun
+ # IBS municipal - gRed
+ ibscbs_ibs_mun_p_red_aliq = Decimal() # gRed - pRedAliq
+ ibscbs_ibs_mun_p_aliq_efet = Decimal() # gRed - pAliqEfet
+
# vIBS total (UF + Mun)
ibscbs_v_ibs = Decimal()
@@ -1046,6 +1054,10 @@ class NotaFiscalProduto(Entidade):
ibscbs_p_cbs = Decimal() # pCBS
ibscbs_v_cbs = Decimal() # vCBS
+ # gCBS - gRed
+ ibscbs_cbs_p_red_aliq = Decimal() # gRed - pRedAliq
+ ibscbs_cbs_p_aliq_efet = Decimal() # gRed - pAliqEfet
+
# IS (Imposto Seletivo) - Group UB-IS
is_cst_selec = str() # CSTSelec (2-digit)
is_c_class_trib = str() # cClassTribIS 6-digit
diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py
index cb463000..794f41a7 100644
--- a/pynfe/processamento/serializacao.py
+++ b/pynfe/processamento/serializacao.py
@@ -18,6 +18,8 @@
)
from pynfe.utils.flags import (
CODIGOS_ESTADOS,
+ IBSCBS_CST_TRIBUTADOS,
+ IBSCBS_CST_GRUPO_REDUCAO,
NAMESPACE_MDFE,
NAMESPACE_NFE,
NAMESPACE_SIG,
@@ -1316,9 +1318,6 @@ def _serializar_imposto_importacao(
# Reforma Tributaria - IVA Dual (NT 2025.002-RTC)
# =============================================
- # CSTs that have taxable values (vBC, rates, amounts)
- _IBSCBS_CST_TRIBUTADOS = ("000", "010", "200", "400", "510", "600", "620", "800", "810", "900")
-
def _serializar_imposto_ibscbs(
self, produto_servico, modelo, tag_raiz="imposto", retorna_string=True
):
@@ -1347,7 +1346,7 @@ def _serializar_ibscbs(self, produto_servico, tag_raiz):
if produto_servico.ibscbs_c_class_trib:
etree.SubElement(ibscbs, "cClassTrib").text = produto_servico.ibscbs_c_class_trib
- if produto_servico.ibscbs_cst in self._IBSCBS_CST_TRIBUTADOS:
+ if produto_servico.ibscbs_cst in IBSCBS_CST_TRIBUTADOS:
gibscbs = etree.SubElement(ibscbs, "gIBSCBS")
etree.SubElement(gibscbs, "vBC").text = "{:.2f}".format(produto_servico.ibscbs_vbc or 0)
@@ -1357,6 +1356,14 @@ def _serializar_ibscbs(self, produto_servico, tag_raiz):
etree.SubElement(gibsuf, "pIBSUF").text = "{:.4f}".format(
produto_servico.ibscbs_p_ibs_uf or 0
)
+
+ if produto_servico.ibscbs_cst in IBSCBS_CST_GRUPO_REDUCAO:
+ self._serializar_ibscbs_reducao_aliquota(
+ produto_servico.ibscbs_ibs_uf_p_red_aliq,
+ produto_servico.ibscbs_ibs_uf_p_aliq_efet,
+ gibsuf,
+ )
+
etree.SubElement(gibsuf, "vIBSUF").text = "{:.2f}".format(
produto_servico.ibscbs_v_ibs_uf or 0
)
@@ -1366,6 +1373,14 @@ def _serializar_ibscbs(self, produto_servico, tag_raiz):
etree.SubElement(gibsmun, "pIBSMun").text = "{:.4f}".format(
produto_servico.ibscbs_p_ibs_mun or 0
)
+
+ if produto_servico.ibscbs_cst in IBSCBS_CST_GRUPO_REDUCAO:
+ self._serializar_ibscbs_reducao_aliquota(
+ produto_servico.ibscbs_ibs_mun_p_red_aliq,
+ produto_servico.ibscbs_ibs_mun_p_aliq_efet,
+ gibsmun,
+ )
+
etree.SubElement(gibsmun, "vIBSMun").text = "{:.2f}".format(
produto_servico.ibscbs_v_ibs_mun or 0
)
@@ -1378,8 +1393,21 @@ def _serializar_ibscbs(self, produto_servico, tag_raiz):
# gCBS
gcbs = etree.SubElement(gibscbs, "gCBS")
etree.SubElement(gcbs, "pCBS").text = "{:.4f}".format(produto_servico.ibscbs_p_cbs or 0)
+
+ if produto_servico.ibscbs_cst in IBSCBS_CST_GRUPO_REDUCAO:
+ self._serializar_ibscbs_reducao_aliquota(
+ produto_servico.ibscbs_cbs_p_red_aliq,
+ produto_servico.ibscbs_cbs_p_aliq_efet,
+ gcbs,
+ )
+
etree.SubElement(gcbs, "vCBS").text = "{:.2f}".format(produto_servico.ibscbs_v_cbs or 0)
+ def _serializar_ibscbs_reducao_aliquota(self, p_red_aliq, p_aliq_efet, tag_raiz):
+ gred = etree.SubElement(tag_raiz, "gRed")
+ etree.SubElement(gred, "pRedAliq").text = "{:.4f}".format(p_red_aliq or 0)
+ etree.SubElement(gred, "pAliqEfet").text = "{:.4f}".format(p_aliq_efet or 0)
+
def _serializar_is(self, produto_servico, tag_raiz):
"""Serializa (Imposto Seletivo) como filho direto de .
diff --git a/pynfe/utils/flags.py b/pynfe/utils/flags.py
index 0cdcc5e0..f89e4cd3 100644
--- a/pynfe/utils/flags.py
+++ b/pynfe/utils/flags.py
@@ -552,24 +552,43 @@
# =============================================
# CST para IBSCBS (IBS + CBS) — NT 2025.002-RTC (3-digit codes)
+# Atualizado de acordo com Informe Técnico 2025.002 v.1.60 - Publicado em 23/06/2026
IBS_CBS_TIPOS_TRIBUTACAO = (
("000", "Tributação integral"),
- ("010", "Tributação com alíquota reduzida"),
- ("100", "Tributação com suspensão"),
- ("110", "Imunidade — exportação"),
- ("200", "Tributação com diferimento"),
- ("222", "Isenção"),
- ("300", "Não incidência"),
- ("400", "Tributação por substituição"),
- ("410", "Tributação com alíquota zero"),
- ("510", "Tributação integral — regime específico"),
- ("600", "Tributação monofásica — incidência padrão"),
- ("620", "Tributação monofásica — demais operações"),
- ("800", "Crédito presumido"),
- ("810", "Crédito presumido — ZFM"),
- ("900", "Outros"),
+ ("010", "Tributação com alíquotas uniformes"),
+ ("011", "Tributação com alíquotas uniformes reduzidas"),
+ ("200", "Alíquota reduzida"),
+ ("220", "Alíquota fixa"),
+ ("221", "Alíquota fixa proporcional"),
+ ("222", "Redução de base de cálculo"),
+ ("400", "Isenção"),
+ ("410", "Imunidade e não incidência"),
+ ("510", "Diferimento"),
+ ("515", "Diferimento com redução de alíquota"),
+ ("550", "Suspensão"),
+ ("620", "Tributação monofásica"),
+ ("800", "Transferência de crédito"),
+ ("810", "Ajuste de IBS na ZFM"),
+ ("811", "Ajustes"),
+ ("820", "Tributação em documento específico"),
+ ("830", "Exclusão de base de cálculo"),
)
+IBSCBS_CST_TRIBUTADOS = (
+ "000",
+ "010",
+ "011",
+ "200",
+ "220",
+ "221",
+ "222",
+ "510",
+ "515",
+ "550",
+ "830",
+)
+IBSCBS_CST_GRUPO_REDUCAO = ("011", "200", "515")
+
# CST para IS (Imposto Seletivo) — CSTSelec (NT 2025.002-RTC)
IS_TIPOS_TRIBUTACAO = (
("01", "Tributada integralmente"),
diff --git a/tests/test_nfe_serializacao_reforma_tributaria.py b/tests/test_nfe_serializacao_reforma_tributaria.py
index ee042b8a..a48802d8 100644
--- a/tests/test_nfe_serializacao_reforma_tributaria.py
+++ b/tests/test_nfe_serializacao_reforma_tributaria.py
@@ -208,10 +208,98 @@ def test_cst000_ibscbs_tributacao_integral(self):
is_tag = xml.xpath("//ns:det/ns:imposto/ns:IS", namespaces=self.ns)
self.assertEqual(len(is_tag), 0)
+ # No gRed anywhere (CST 000 is not in IBSCBS_CST_GRUPO_REDUCAO)
+ gred = xml.xpath("//ns:IBSCBS/ns:gIBSCBS//ns:gRed", namespaces=self.ns)
+ self.assertEqual(len(gred), 0)
+
+ # ------------------------------------------------------------------
+ # Test 1b: CST 011 — alíquotas uniformes reduzidas (gRed em gIBSUF/gIBSMun/gCBS)
+ # ------------------------------------------------------------------
+ def test_cst011_reducao_aliquota_com_gred(self):
+ emitente = self._emitente()
+ cliente = self._cliente()
+ nf = self._nota_fiscal(emitente, cliente)
+
+ kwargs = self._base_product_kwargs()
+ kwargs.update(
+ ibscbs_cst="011",
+ ibscbs_c_class_trib="000003",
+ ibscbs_vbc=Decimal("1000.00"),
+ ibscbs_p_ibs_uf=Decimal("0.1000"),
+ ibscbs_v_ibs_uf=Decimal("1.00"),
+ ibscbs_ibs_uf_p_red_aliq=Decimal("60.0000"),
+ ibscbs_ibs_uf_p_aliq_efet=Decimal("0.0400"),
+ ibscbs_p_ibs_mun=Decimal("0.0500"),
+ ibscbs_v_ibs_mun=Decimal("0.50"),
+ ibscbs_ibs_mun_p_red_aliq=Decimal("60.0000"),
+ ibscbs_ibs_mun_p_aliq_efet=Decimal("0.0200"),
+ ibscbs_v_ibs=Decimal("1.50"),
+ ibscbs_p_cbs=Decimal("0.9000"),
+ ibscbs_v_cbs=Decimal("9.00"),
+ ibscbs_cbs_p_red_aliq=Decimal("60.0000"),
+ ibscbs_cbs_p_aliq_efet=Decimal("0.3600"),
+ )
+ nf.adicionar_produto_servico(**kwargs)
+ nf.adicionar_pagamento(t_pag="01", x_pag="Dinheiro", v_pag=1000.00, ind_pag=0)
+
+ xml = self._serializar_e_assinar()
+
+ # CST 011 is taxable — gIBSCBS present
+ gibscbs = xml.xpath("//ns:IBSCBS/ns:gIBSCBS", namespaces=self.ns)
+ self.assertEqual(len(gibscbs), 1)
+
+ # gIBSUF/gRed
+ gred_uf = xml.xpath("//ns:IBSCBS/ns:gIBSCBS/ns:gIBSUF/ns:gRed", namespaces=self.ns)
+ self.assertEqual(len(gred_uf), 1)
+ self.assertEqual(
+ xml.xpath("//ns:IBSCBS/ns:gIBSCBS/ns:gIBSUF/ns:gRed/ns:pRedAliq", namespaces=self.ns)[
+ 0
+ ].text,
+ "60.0000",
+ )
+ self.assertEqual(
+ xml.xpath("//ns:IBSCBS/ns:gIBSCBS/ns:gIBSUF/ns:gRed/ns:pAliqEfet", namespaces=self.ns)[
+ 0
+ ].text,
+ "0.0400",
+ )
+
+ # gIBSMun/gRed
+ gred_mun = xml.xpath("//ns:IBSCBS/ns:gIBSCBS/ns:gIBSMun/ns:gRed", namespaces=self.ns)
+ self.assertEqual(len(gred_mun), 1)
+ self.assertEqual(
+ xml.xpath("//ns:IBSCBS/ns:gIBSCBS/ns:gIBSMun/ns:gRed/ns:pRedAliq", namespaces=self.ns)[
+ 0
+ ].text,
+ "60.0000",
+ )
+ self.assertEqual(
+ xml.xpath("//ns:IBSCBS/ns:gIBSCBS/ns:gIBSMun/ns:gRed/ns:pAliqEfet", namespaces=self.ns)[
+ 0
+ ].text,
+ "0.0200",
+ )
+
+ # gCBS/gRed
+ gred_cbs = xml.xpath("//ns:IBSCBS/ns:gIBSCBS/ns:gCBS/ns:gRed", namespaces=self.ns)
+ self.assertEqual(len(gred_cbs), 1)
+ self.assertEqual(
+ xml.xpath("//ns:IBSCBS/ns:gIBSCBS/ns:gCBS/ns:gRed/ns:pRedAliq", namespaces=self.ns)[
+ 0
+ ].text,
+ "60.0000",
+ )
+ self.assertEqual(
+ xml.xpath("//ns:IBSCBS/ns:gIBSCBS/ns:gCBS/ns:gRed/ns:pAliqEfet", namespaces=self.ns)[
+ 0
+ ].text,
+ "0.3600",
+ )
+
# ------------------------------------------------------------------
- # Test 2: CST 222 — isenção (no vBC, values zero)
+ # Test 2: CST 400 — isenção (no vBC, values zero)
# ------------------------------------------------------------------
- def test_cst222_isencao_sem_valores(self):
+ def test_cst400_isencao_sem_valores(self):
emitente = self._emitente()
cliente = self._cliente()
nf = self._nota_fiscal(emitente, cliente)
@@ -225,7 +313,7 @@ def test_cst222_isencao_sem_valores(self):
valor_total_bruto=Decimal("50.00"),
quantidade_tributavel=Decimal("1"),
valor_unitario_tributavel=Decimal("50.00"),
- ibscbs_cst="222",
+ ibscbs_cst="400",
ibscbs_c_class_trib="000002",
)
nf.adicionar_produto_servico(**kwargs)
@@ -239,13 +327,13 @@ def test_cst222_isencao_sem_valores(self):
# CST present
cst = xml.xpath("//ns:IBSCBS/ns:CST", namespaces=self.ns)[0].text
- self.assertEqual(cst, "222")
+ self.assertEqual(cst, "400")
# cClassTrib present
cclass = xml.xpath("//ns:IBSCBS/ns:cClassTrib", namespaces=self.ns)[0].text
self.assertEqual(cclass, "000002")
- # No gIBSCBS group (CST 222 is not in taxable CSTs)
+ # No gIBSCBS group (CST 400 is not in taxable CSTs)
gibscbs = xml.xpath("//ns:IBSCBS/ns:gIBSCBS", namespaces=self.ns)
self.assertEqual(len(gibscbs), 0)