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)