diff --git a/CTe.AppTeste/CTe.AppTeste.csproj b/CTe.AppTeste/CTe.AppTeste.csproj
index e7087b778..a1c168627 100644
--- a/CTe.AppTeste/CTe.AppTeste.csproj
+++ b/CTe.AppTeste/CTe.AppTeste.csproj
@@ -302,6 +302,9 @@
Designer
Always
+
+ Designer
+
Designer
Always
@@ -326,6 +329,9 @@
Designer
Always
+
+ Designer
+
Designer
Always
@@ -382,6 +388,9 @@
Designer
Always
+
+ Designer
+
Designer
Always
@@ -590,6 +599,9 @@
Designer
Always
+
+ Designer
+
Designer
Always
@@ -690,6 +702,9 @@
Designer
Always
+
+ Designer
+
Designer
Always
diff --git a/CTe.AppTeste/CTeTesteModel.cs b/CTe.AppTeste/CTeTesteModel.cs
index 0e5f2fef4..3add5291d 100644
--- a/CTe.AppTeste/CTeTesteModel.cs
+++ b/CTe.AppTeste/CTeTesteModel.cs
@@ -84,6 +84,7 @@
using infTribFed = CTe.Classes.Informacoes.Impostos.infTribFed;
using OpenFileDialog = Microsoft.Win32.OpenFileDialog;
using rodoOS = CTe.Classes.Informacoes.infCTeNormal.infModals.rodoOS;
+using CTe.Classes.Informacoes.Impostos.IBSCBS;
namespace CTe.AppTeste
{
@@ -602,6 +603,7 @@ private static void CarregarConfiguracoes(Configuracao config)
var configuracaoCertificado = new ConfiguracaoCertificado
{
Arquivo = config.CertificadoDigital.CaminhoArquivo,
+ TipoCertificado = TipoCertificado.A1Repositorio,
ManterDadosEmCache = config.CertificadoDigital.ManterEmCache,
Serial = config.CertificadoDigital.NumeroDeSerie
};
@@ -1031,6 +1033,32 @@ public void CriarEnviarCTe2e3()
icmsSimplesNacional.CST = CST.ICMS90;
}
+ cteEletronico.infCte.imp.IBSCBS = new IBSCBS()
+ {
+ cClassTrib = "000001",
+ CST = CSTIBSCBS.cst000,
+ gIBSCBS = new gIBSCBS()
+ {
+ vBC = 0m,
+ vIBS = 0m,
+ gIBSUF = new gIBSUF()
+ {
+ pIBSUF = 0.1m,
+ vIBSUF = 0m,
+ },
+ gIBSMun = new gIBSMun()
+ {
+ pIBSMun = 0,
+ vIBSMun = 0,
+ },
+ gCBS = new gCBS()
+ {
+ pCBS = 0.09m,
+ vCBS = 0
+ },
+ }
+ };
+
#endregion
#region infCTeNorm
@@ -1094,9 +1122,7 @@ public void CriarEnviarCTe2e3()
cteEletronico.infCte.infCTeNorm.infModal.ContainerModal = rodoviario;
#endregion
-
-
-
+
var servicoRecepcao = new ServicoCTeRecepcao();
diff --git a/CTe.AppTeste/schemas/DFeTiposBasicos_v1.00.xsd b/CTe.AppTeste/schemas/DFeTiposBasicos_v1.00.xsd
new file mode 100644
index 000000000..ea6eab8e8
--- /dev/null
+++ b/CTe.AppTeste/schemas/DFeTiposBasicos_v1.00.xsd
@@ -0,0 +1,1293 @@
+
+
+
+
+
+ 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 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 Ente Governamental
+
+
+
+
+
+
+
+
+
+
+
+ Tipo de classificação do Crédito Presumido IBS ZFM
+
+
+
+
+
+
+
+
+
+
+
+ Tipo Indicador de Doação
+
+
+
+
+
+
+
+ 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 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 da Tributação da NFGas
+
+
+
+
+ Código Situação Tributária do IBS/CBS
+
+
+
+
+
+
+
+
+ Informar essa opção da Choice para Monofasia
+
+
+
+
+
+ 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
+
+
+
+
+ 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
+
+
+
+
+ Valor do tributo devolvido. No fornecimento de energia elétrica, água, esgoto e
+gás natural e em outras hipóteses definidas no regulamento
+
+
+
+
+
+
+ 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
+
+
+
+
+ Percentual de redução de aliquota em compra governamental
+
+
+
+
+
+
+ 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
+
+
+
+
+ Percentual de redução de aliquota em compra governamental
+
+
+
+
+ Tipo da operação com ente governamental:
+1 - Fornecimento
+2 - Recebimento do Pagamento
+
+
+
+
+
+
+ Tipo Transferência de Crédito
+
+
+
+
+ Valor do IBS a ser transferido
+
+
+
+
+ Valor da CBS a ser transferida
+
+
+
+
+
+
+ Tipo Estorno de Crédito
+
+
+
+
+ Valor do IBS a ser estornado
+
+
+
+
+ Valor da CBS a ser estornada
+
+
+
+
+
+
+ Ano e mês referência do período de apuração (AAAA-MM)
+
+
+
+
+
+
+
+ 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/CTe.AppTeste/schemas/cteModalDutoviario_v4.00.xsd b/CTe.AppTeste/schemas/cteModalDutoviario_v4.00.xsd
index bc9c8940a..bb75ffd76 100644
--- a/CTe.AppTeste/schemas/cteModalDutoviario_v4.00.xsd
+++ b/CTe.AppTeste/schemas/cteModalDutoviario_v4.00.xsd
@@ -24,6 +24,68 @@
Data de Fim da prestação do serviço
+
+
+ Classificação do Dutoviário
+ Informar: 1 - Gasoduto 2 - Mineroduto 3 - Oleoduto
+
+
+
+
+
+
+
+
+
+
+
+ Tipo de contratação do serviço de transporte (apenas para gasoduto)
+ Informar:
+0 - Ponta a ponto
+1 - Capacidade de Entrada
+2 - Capacidade de Saida
+
+
+
+
+
+
+
+
+
+
+
+ Código do Ponto de Entrada
+
+
+
+
+
+
+
+
+
+
+ Código do Ponto de Saída
+
+
+
+
+
+
+
+
+
+
+ Número do Contrato de Capacidade
+
+
+
+
+
+
+
+
diff --git a/CTe.AppTeste/schemas/cteSimp_v4.00.xsd b/CTe.AppTeste/schemas/cteSimp_v4.00.xsd
new file mode 100644
index 000000000..a6b23e03f
--- /dev/null
+++ b/CTe.AppTeste/schemas/cteSimp_v4.00.xsd
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+ Conhecimento de Transporte Eletrônico Simplificado
+
+
+
diff --git a/CTe.AppTeste/schemas/cteTiposBasico_v4.00.xsd b/CTe.AppTeste/schemas/cteTiposBasico_v4.00.xsd
index 3cf5e8845..389b6391d 100644
--- a/CTe.AppTeste/schemas/cteTiposBasico_v4.00.xsd
+++ b/CTe.AppTeste/schemas/cteTiposBasico_v4.00.xsd
@@ -1,8 +1,9 @@
-
+
+
Tipo Modal transporte GTVe
@@ -120,17 +121,13 @@
Forma de emissão da GTV-e
Preencher com:
1 - Normal;
- 2- Contingencia offline
-7 - Autorização pela SVC-RS;
- 8 - Autorização pela SVC-SP
+2- Contingencia offline
-
-
@@ -882,7 +879,7 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc
-
+
@@ -903,7 +900,7 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc
-
+
@@ -1191,6 +1188,46 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc
+
+
+ Tipo Retorno do Pedido de Autorização de CT-e Simplificado (Modelo 57)
+
+
+
+
+ Identificação do Ambiente:
+1 - Produção
+2 - Homologação
+
+
+
+
+ Identificação da UF
+
+
+
+
+ Versão do Aplicativo que processou a CT-e
+
+
+
+
+ código do status do retorno da consulta.
+
+
+
+
+ Descrição literal do status do do retorno da consulta.
+
+
+
+
+ Reposta ao processamento do CT-e
+
+
+
+
+
Tipo Retorno do Pedido de Autorização de CT-e (Modelo 57)
@@ -1213,10 +1250,15 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc
Versão do Aplicativo que processou a CT-e
-
+
código do status do retorno da consulta.
+
+
+
+
+
@@ -1303,13 +1345,1370 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc
Descrição literal do status do do retorno da consulta.
-
+
+
+ Reposta ao processamento do CT-e
+
+
+
+
+
+
+
+ Tipo Conhecimento de Transporte Eletrônico (Modelo 57) - Modelo Simplificado
+
+
+
+
+ Informações do CT-e
+
+
+
+
+
+ Identificação do CT-e
+
+
+
+
+
+ Código da UF do emitente do CT-e.
+ Utilizar a Tabela do IBGE.
+
+
+
+
+ Código numérico que compõe a Chave de Acesso.
+ Número aleatório gerado pelo emitente para cada CT-e, com o objetivo de evitar acessos indevidos ao documento.
+
+
+
+
+
+
+
+
+
+
+ Código Fiscal de Operações e Prestações
+
+
+
+
+ Natureza da Operação
+
+
+
+
+
+
+
+
+
+
+ Modelo do documento fiscal
+ Utilizar o código 57 para identificação do CT-e, emitido em substituição aos modelos de conhecimentos em papel.
+
+
+
+
+ Série do CT-e
+ Preencher com "0" no caso de série única
+
+
+
+
+
+
+
+ Número do CT-e
+
+
+
+
+ Data e hora de emissão do CT-e
+ Formato AAAA-MM-DDTHH:MM:DD TZD
+
+
+
+
+
+
+
+ Formato de impressão do DACTE
+ Preencher com: 1 - Retrato; 2 - Paisagem.
+
+
+
+
+
+
+
+
+
+
+
+ Forma de emissão do CT-e
+ Preencher com:
+1 - Normal;
+3 - Regime Especial NFF;
+4 - EPEC pela SVC;
+7 - Autorização pela SVC-RS;
+8 - Autorização pela SVC-SP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Digito Verificador da chave de acesso do CT-e
+ Informar o dígito de controle da chave de acesso do CT-e, que deve ser calculado com a aplicação do algoritmo módulo 11 (base 2,9) da chave de acesso.
+
+
+
+
+
+
+
+
+
+
+ Tipo do Ambiente
+ Preencher com:1 - Produção; 2 - Homologação.
+
+
+
+
+ Tipo do CT-e Simplificado
+ Preencher com:
+5 - CTe Simplificado
+6 - Substituição CTe Simplificado
+
+
+
+
+ Identificador do processo de emissão do CT-e
+ Preencher com:
+ 0 - emissão de CT-e com aplicativo do contribuinte;
+ 3- emissão CT-e pelo contribuinte com aplicativo fornecido pelo SEBRAE.
+
+
+
+
+ Versão do processo de emissão
+ Informar a versão do aplicativo emissor de CT-e.
+
+
+
+
+
+
+
+
+
+
+ Código do Município de envio do CT-e (de onde o documento foi transmitido)
+ Utilizar a tabela do IBGE. Informar 9999999 para as operações com o exterior.
+
+
+
+
+ Nome do Município de envio do CT-e (de onde o documento foi transmitido)
+ Informar PAIS/Municipio para as operações com o exterior.
+
+
+
+
+
+
+
+
+
+
+ Sigla da UF de envio do CT-e (de onde o documento foi transmitido)
+ Informar 'EX' para operações com o exterior.
+
+
+
+
+ Modal
+ Preencher com:
+01-Rodoviário
+02-Aéreo
+03-Aquaviário
+
+
+
+
+ Tipo do Serviço
+ Preencher com:
+0 - Normal;
+1 - Subcontratação;
+2 - Redespacho;
+
+
+
+
+
+
+
+
+
+
+
+
+ UF do início da prestação
+ Informar 'EX' para operações com o exterior.
+
+
+
+
+ UF do término da prestação
+ Informar 'EX' para operações com o exterior.
+
+
+
+
+ Indicador se o Recebedor retira no Aeroporto, Filial, Porto ou Estação de Destino?
+ Preencher com: 0 - sim; 1 - não
+
+
+
+
+
+
+
+
+
+
+
+ Detalhes do retira
+
+
+
+
+
+
+
+
+
+
+ Informar apenas
+para tpEmis diferente de 1
+
+
+
+ Data e Hora da entrada em contingência
+ Informar a data e hora no formato AAAA-MM-DDTHH:MM:SS
+
+
+
+
+ Justificativa da entrada em contingência
+
+
+
+
+
+
+
+
+
+
+
+ Grupo de Compras Governamentais
+
+
+
+
+
+
+
+ Dados complementares do CT-e para fins operacionais ou comerciais
+
+
+
+
+
+ Característica adicional do transporte
+ Texto livre:
+REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc
+
+
+
+
+
+
+
+
+
+
+ Característica adicional do serviço
+ Texto livre:
+ ENTREGA EXPRESSA; LOGÍSTICA REVERSA; CONVENCIONAL; EMERGENCIAL; etc
+
+
+
+
+
+
+
+
+
+
+ Previsão do fluxo da carga
+ Preenchimento obrigatório para o modal aéreo.
+
+
+
+
+
+ Sigla ou código interno da Filial/Porto/Estação/ Aeroporto de Origem
+ Observações para o modal aéreo:
+ - Preenchimento obrigatório para o modal aéreo.
+ - O código de três letras IATA do aeroporto de partida deverá ser incluído como primeira anotação. Quando não for possível, utilizar a sigla OACI.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sigla ou código interno da Filial/Porto/Estação/Aeroporto de Passagem
+ Observação para o modal aéreo:
+ - O código de três letras IATA, referente ao aeroporto de transferência, deverá ser incluído, quando for o caso. Quando não for possível, utilizar a sigla OACI. Qualquer solicitação de itinerário deverá ser incluída.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sigla ou código interno da Filial/Porto/Estação/Aeroporto de Destino
+ Observações para o modal aéreo:
+ - Preenchimento obrigatório para o modal aéreo.
+ - Deverá ser incluído o código de três letras IATA do aeroporto de destino. Quando não for possível, utilizar a sigla OACI.
+
+
+
+
+
+
+
+
+
+
+ Código da Rota de Entrega
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Observações Gerais
+
+
+
+
+
+
+
+
+
+
+ Campo de uso livre do contribuinte
+ Informar o nome do campo no atributo xCampo e o conteúdo do campo no XTexto
+
+
+
+
+
+ Conteúdo do campo
+
+
+
+
+
+
+
+
+
+
+
+ Identificação do campo
+
+
+
+
+
+
+
+
+
+
+
+
+ Campo de uso livre do contribuinte
+ Informar o nome do campo no atributo xCampo e o conteúdo do campo no XTexto
+
+
+
+
+
+ Conteúdo do campo
+
+
+
+
+
+
+
+
+
+
+
+ Identificação do campo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Identificação do Emitente do CT-e
+
+
+
+
+
+
+ CNPJ do emitente
+ Informar zeros não significativos
+
+
+
+
+ CPF do emitente
+ Informar zeros não significativos.
+
+Usar com série específica 920-969 para emitente pessoa física com inscrição estadual
+
+
+
+
+
+ Inscrição Estadual do Emitente
+ A IE do emitente somente ficará sem informação para o caso do Regime Especial da NFF (tpEmis=3)
+
+
+
+
+
+
+
+ Inscrição Estadual do Substituto Tributário
+
+
+
+
+
+
+
+ Razão social ou Nome do emitente
+
+
+
+
+
+
+
+
+
+
+ Nome fantasia
+
+
+
+
+
+
+
+
+
+
+ Endereço do emitente
+
+
+
+
+ Código do Regime Tributário
+ Informar: 1=Simples Nacional;
+2=Simples Nacional, excesso sublimite de receita bruta;
+3=Regime Normal.
+4=Simples Nacional - Microempreendedor Individual – MEI.
+
+
+
+
+
+
+
+
+ Identificação do tomador do serviço no CT-e
+
+
+
+
+
+ Tomador do Serviço
+ Preencher com:
+
+0-Remetente;
+1-Expedidor;
+2-Recebedor;
+3-Destinatário
+4-Terceiro
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Indicador do papel do tomador na prestação do serviço:
+1 – Contribuinte ICMS;
+2 – Contribuinte isento de inscrição;
+9 – Não Contribuinte
+ Aplica-se ao tomador que for indicado no toma
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Número do CNPJ
+ Em caso de empresa não estabelecida no Brasil, será informado o CNPJ com zeros.
+Informar os zeros não significativos.
+
+
+
+
+ Número do CPF
+ Informar os zeros não significativos.
+
+
+
+
+
+ Inscrição Estadual
+ Informar a IE do tomador ou ISENTO se tomador é contribuinte do ICMS isento de inscrição no cadastro de contribuintes do ICMS. Caso o tomador não seja contribuinte do ICMS não informar o conteúdo.
+
+
+
+
+
+
+
+ Razão Social ou Nome
+
+
+
+
+
+
+
+
+
+
+ Inscrição na SUFRAMA
+ (Obrigatório nas operações com as áreas com benefícios de incentivos fiscais sob controle da SUFRAMA)
+
+
+
+
+
+
+
+
+
+
+ Telefone
+
+
+
+
+ Dados do endereço
+
+
+
+
+ Endereço de email
+
+
+
+
+
+
+
+ Informações da Carga do CT-e
+
+
+
+
+
+ Valor total da carga
+
+
+
+
+ Produto predominante
+ Informar a descrição do produto predominante
+
+
+
+
+
+
+
+
+
+
+ Outras características da carga
+ "FRIA", "GRANEL", "REFRIGERADA", "Medidas: 12X12X12"
+
+
+
+
+
+
+
+
+
+
+ Informações de quantidades da Carga do CT-e
+ Para o Aéreo é obrigatório o preenchimento desse campo da seguinte forma.
+1 - Peso Bruto, sempre em quilogramas (obrigatório);
+2 - Peso Cubado; sempre em quilogramas;
+3 - Quantidade de volumes, sempre em unidades (obrigatório);
+4 - Cubagem, sempre em metros cúbicos (obrigatório apenas quando for impossível preencher as dimensões da(s) embalagem(ens) na tag xDime do leiaute do Aéreo).
+
+
+
+
+
+ Código da Unidade de Medida
+ Preencher com:
+00-M3;
+01-KG;
+02-TON;
+03-UNIDADE;
+04-LITROS;
+05-MMBTU
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Tipo da Medida
+ Informar com:
+00-Cubagem da NF-e
+01-Cubagem Aferida pelo Transportador
+02-Peso Bruto da NF-e
+03-Peso Bruto Aferido pelo Transportador
+04-Peso Cubado
+05-Peso Base do Cálculo do Frete
+06-Peso para uso Operacional
+07-Caixas
+08-Paletes
+09-Sacas
+10-Containers
+11-Rolos
+12-Bombonas
+13-Latas
+14-Litragem
+15-Milhão de BTU (British Thermal Units)
+99-Outros
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Quantidade
+
+
+
+
+
+
+
+ Valor da Carga para efeito de averbação
+ Normalmente igual ao valor declarado da mercadoria, diferente por exemplo, quando a mercadoria transportada é isenta de tributos nacionais para exportação, onde é preciso averbar um valor maior, pois no caso de indenização, o valor a ser pago será maior
+
+
+
+
+
+
+
+ Detalhamento das entregas / prestações do CTe Simplificado
+
+
+
+
+
+
+ Código do Município de início da prestação
+ Utilizar a tabela do IBGE. Informar 9999999 para operações com o exterior.
+
+
+
+
+ Nome do Município do início da prestação
+ Informar 'EXTERIOR' para operações com o exterior.
+
+
+
+
+
+
+
+
+
+
+
+
+ Código do Município de término da prestação
+ Utilizar a tabela do IBGE. Informar 9999999 para operações com o exterior.
+
+
+
+
+ Nome do Município do término da prestação
+ Informar 'EXTERIOR' para operações com o exterior.
+
+
+
+
+
+
+
+
+
+
+
+ Valorl da Prestação do Serviço
+ Pode conter zeros quando o CT-e for de complemento de ICMS
+
+
+
+
+ Valor a Receber
+
+
+
+
+ Componentes do Valor da Prestação
+
+
+
+
+
+ Nome do componente
+ Exxemplos: FRETE PESO, FRETE VALOR, SEC/CAT, ADEME, AGENDAMENTO, etc
+
+
+
+
+
+
+
+
+
+
+ Valor do componente
+
+
+
+
+
+
+
+
+ Informações das NF-e
+
+
+
+
+
+ Chave de acesso da NF-e
+
+
+
+
+
+
+
+
+
+ PIN SUFRAMA
+ PIN atribuído pela SUFRAMA para a operação.
+
+
+
+
+
+
+
+
+
+
+
+
+ Data prevista de entrega
+ Formato AAAA-MM-DD
+
+
+
+
+
+ Informações das Unidades de Carga (Containeres/ULD/Outros)
+ Dispositivo de carga utilizada (Unit Load Device - ULD) significa todo tipo de contêiner de carga, vagão, contêiner de avião, palete de aeronave com rede ou palete de aeronave com rede sobre um iglu.
+
+
+
+
+ Informações das Unidades de Transporte (Carreta/Reboque/Vagão)
+ Deve ser preenchido com as informações das unidades de transporte utilizadas.
+
+
+
+
+
+
+
+
+ Documentos anteriores
+
+
+
+
+
+ Chave de acesso do CT-e
+
+
+
+
+ indica se a prestação é total ou parcial em relação as notas do documento anterior
+ Preencher com:
+
+1 - Total
+2 - Parcial
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Chave de acesso da NF-e
+ Informando o tpPrest com “2 – Parcial” deve-se informar as chaves de acesso das NF-e que acobertam a carga transportada.
+
+
+
+
+
+
+
+
+
+
+
+
+ Número identificador do item agrupador da prestação
+
+
+
+
+
+
+
+
+
+
+
+
+ Informações do modal
+
+
+
+
+
+ XML do modal
+Insira neste local o XML específico do modal (rodoviário, aéreo, ferroviário, aquaviário ou dutoviário).
+ O elemento do tipo -any- permite estender o documento XML com elementos não especificados pelo schema.
+ Insira neste local - any- o XML específico do modal (rodoviário, aéreo, ferroviário, aquaviário ou dutoviário). A especificação do schema XML para cada modal pode ser encontrada nos arquivos que acompanham este pacote de liberação:
+ Rodoviário - ver arquivo CTeModalRodoviario_v9.99
+ Aéreo - ver arquivo CTeModalAereo_v9.99
+ Aquaviário - arquivo CTeModalAquaviario_v9.99
+ Ferroviário - arquivo CTeModalFerroviario_v9.99
+ Dutoviário - arquivo CTeModalDutoviario_v9.99
+
+Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, o arquivo para o schema do modal Rodoviário na versão 1.04 será denominado "CTeModalRodoviario_v1.04".
+
+
+
+
+
+ Versão do leiaute específico para o Modal
+
+
+
+
+
+
+
+
+
+
+
+
+ Dados da cobrança do CT-e
+
+
+
+
+
+ Dados da fatura
+
+
+
+
+
+ Número da fatura
+
+
+
+
+
+
+
+
+
+
+ Valor original da fatura
+
+
+
+
+ Valor do desconto da fatura
+
+
+
+
+ Valor líquido da fatura
+
+
+
+
+
+
+
+ Dados das duplicatas
+
+
+
+
+
+ Número da duplicata
+
+
+
+
+
+
+
+
+
+
+ Data de vencimento da duplicata (AAAA-MM-DD)
+
+
+
+
+ Valor da duplicata
+
+
+
+
+
+
+
+
+
+
+ Informações do CT-e de substituição
+
+
+
+
+
+ Chave de acesso do CT-e a ser substituído (original)
+
+
+
+
+
+
+
+
+
+ Indicador de CT-e Alteração de Tomador
+
+
+
+
+
+
+
+
+
+
+
+
+ Informações relativas aos Impostos
+
+
+
+
+
+ Informações relativas ao ICMS
+
+
+
+
+
+ Valor Total dos Tributos
+
+
+
+
+ Informações adicionais de interesse do Fisco
+ Norma referenciada, informações complementares, etc
+
+
+
+
+
+
+
+
+
+
+ Informações do ICMS de partilha com a UF de término do serviço de transporte na operação interestadual
+ Grupo a ser informado nas prestações interestaduais para consumidor final, não contribuinte do ICMS
+
+
+
+
+
+ Valor da BC do ICMS na UF de término da prestação do serviço de transporte
+
+
+
+
+ Percentual do ICMS relativo ao Fundo de Combate à pobreza (FCP) na UF de término da prestação do serviço de transporte
+ Alíquota adotada nas operações internas na UF do destinatário
+
+
+
+
+ Alíquota interna da UF de término da prestação do serviço de transporte
+ Alíquota adotada nas operações internas na UF do destinatário
+
+
+
+
+ Alíquota interestadual das UF envolvidas
+ Alíquota interestadual das UF envolvidas
+
+
+
+
+
+ Valor do ICMS relativo ao Fundo de Combate á Pobreza (FCP) da UF de término da prestação
+
+
+
+
+ Valor do ICMS de partilha para a UF de término da prestação do serviço de transporte
+
+
+
+
+ Valor do ICMS de partilha para a UF de início da prestação do serviço de transporte
+
+
+
+
+
+
+
+ Grupo de informações do IBS e CBS
+
+
+
+
+
+
+
+ Valores Totais do CTe
+
+
+
+
+
+ Valor Total da Prestação do Serviço
+ Pode conter zeros quando o CT-e for de complemento de ICMS
+
+
+
+
+ Valor total a Receber
+
+
+
+
+ Valor total do documento fiscal
+(vTPrest + total do IBS + total da CBS)
+
+
+
+
+
+
+
+
+ Autorizados para download do XML do DF-e
+ Informar CNPJ ou CPF. Preencher os zeros não significativos.
+
+
+
+
+
+
+ CNPJ do autorizado
+ Informar zeros não significativos
+
+
+
+
+ CPF do autorizado
+ Informar zeros não significativos
+
+
+
+
+
+
+
+
+ Informações do Responsável Técnico pela emissão do DF-e
+
+
+
+
+ Grupo de informações do pedido de emissão da Nota Fiscal Fácil
+
+
+
+
+
+ Solicitação do pedido de emissão da NFF.
+ Será preenchido com a totalidade de campos informados no aplicativo emissor serializado.
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+
+
+
+
+
+
+
+ Versão do leiaute
+ Ex: "4.00"
+
+
+
+
+
+
+
+ Identificador da tag a ser assinada
+ Informar a chave de acesso do CT-e e precedida do literal "CTe"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- Reposta ao processamento do CT-e
+ Informações suplementares do CT-e
+
+
+
+
+ Texto com o QR-Code impresso no DACTE
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -1518,8 +2917,11 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc
Tipo do Serviço
Preencher com:
-0 - Normal;1 - Subcontratação;
-2 - Redespacho;3 - Redespacho Intermediário; 4 - Serviço Vinculado a Multimodal
+0 - Normal;
+1 - Subcontratação;
+2 - Redespacho;
+3 - Redespacho Intermediário;
+4 - Serviço Vinculado a Multimodal
@@ -1761,6 +3163,11 @@ para tpEmis diferente de 1
+
+
+ Grupo de Compras Governamentais
+
+
@@ -2628,6 +4035,18 @@ Usar com série específica 920-969 para emitente pessoa física com inscrição
+
+
+ Grupo de informações do IBS e CBS
+
+
+
+
+ Valor total do documento fiscal
+(vTPrest + total do IBS + total da CBS)
+
+
+
@@ -3024,6 +4443,20 @@ Opcional para Redespacho Intermediario e Serviço vinculado a multimodal.
+
+
+ Informações das DCe
+
+
+
+
+
+ Chave de acesso da DCe
+
+
+
+
+
@@ -3478,7 +4911,7 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo,
-
+
@@ -3536,7 +4969,7 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo,
-
+
@@ -3557,7 +4990,7 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo,
-
+
@@ -3703,7 +5136,6 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo,
Preencher com:
0 - CT-e Normal;
1 - CT-e Complementar;
-
3 - CT-e de Substituição.
@@ -3882,6 +5314,11 @@ para tpEmis diferente de 1
+
+
+ Grupo de Compras Governamentais
+
+
@@ -4307,6 +5744,18 @@ REENTREGA; DEVOLUÇÃO; REFATURAMENTO; etc
+
+
+ Grupo de informações do IBS e CBS
+
+
+
+
+ Valor total do documento fiscal
+(vTPrest + total do IBS + total da CBS)
+
+
+
@@ -4732,7 +6181,7 @@ Somente para Transporte de Valores
-
+
@@ -4753,7 +6202,7 @@ Somente para Transporte de Valores
-
+
@@ -5371,6 +6820,29 @@ Somente para Transporte de Valores
Valor do ICMS
+
+
+ Sequencia XML
+
+
+
+ Valor do ICMS de desoneração
+
+
+
+
+ Código de Benefício Fiscal na UF
+ Código de Benefício Fiscal utilizado pela UF
+
+
+
+
+
+
+
+
+
+
@@ -5397,6 +6869,29 @@ Somente para Transporte de Valores
+
+
+ Sequencia XML
+
+
+
+ Valor do ICMS de desoneração
+
+
+
+
+ Código de Benefício Fiscal na UF
+ Código de Benefício Fiscal utilizado pela UF
+
+
+
+
+
+
+
+
+
+
@@ -5442,6 +6937,29 @@ Somente para Transporte de Valores
Preencher somente quando o transportador substituído, for optante pelo crédito outorgado previsto no Convênio 106/96 e corresponde ao percentual de 20% do valor do ICMS ST retido.
+
+
+ Sequencia XML
+
+
+
+ Valor do ICMS de desoneração
+
+
+
+
+ Código de Benefício Fiscal na UF
+ Código de Benefício Fiscal utilizado pela UF
+
+
+
+
+
+
+
+
+
+
@@ -5488,6 +7006,29 @@ Somente para Transporte de Valores
Valor do Crédito Outorgado/Presumido
+
+
+ Sequencia XML
+
+
+
+ Valor do ICMS de desoneração
+
+
+
+
+ Código de Benefício Fiscal na UF
+ Código de Benefício Fiscal utilizado pela UF
+
+
+
+
+
+
+
+
+
+
@@ -5529,6 +7070,29 @@ Somente para Transporte de Valores
Valor do ICMS devido outra UF
+
+
+ Sequencia XML
+
+
+
+ Valor do ICMS de desoneração
+
+
+
+
+ Código de Benefício Fiscal na UF
+ Código de Benefício Fiscal utilizado pela UF
+
+
+
+
+
+
+
+
+
+
@@ -5645,6 +7209,29 @@ Somente para Transporte de Valores
Valor do ICMS
+
+
+ Sequencia XML
+
+
+
+ Valor do ICMS de desoneração
+
+
+
+
+ Código de Benefício Fiscal na UF
+ Código de Benefício Fiscal utilizado pela UF
+
+
+
+
+
+
+
+
+
+
@@ -5671,6 +7258,29 @@ Somente para Transporte de Valores
+
+
+ Sequencia XML
+
+
+
+ Valor do ICMS de desoneração
+
+
+
+
+ Código de Benefício Fiscal na UF
+ Código de Benefício Fiscal utilizado pela UF
+
+
+
+
+
+
+
+
+
+
@@ -5717,6 +7327,29 @@ Somente para Transporte de Valores
Valor do Crédito Outorgado/Presumido
+
+
+ Sequencia XML
+
+
+
+ Valor do ICMS de desoneração
+
+
+
+
+ Código de Benefício Fiscal na UF
+ Código de Benefício Fiscal utilizado pela UF
+
+
+
+
+
+
+
+
+
+
@@ -5758,6 +7391,29 @@ Somente para Transporte de Valores
Valor do ICMS devido outra UF
+
+
+ Sequencia XML
+
+
+
+ Valor do ICMS de desoneração
+
+
+
+
+ Código de Benefício Fiscal na UF
+ Código de Benefício Fiscal utilizado pela UF
+
+
+
+
+
+
+
+
+
+
@@ -6226,6 +7882,16 @@ Observação: 28 caracteres são representados no schema como 20 bytes do tipo b
+
+
+ Tipos Finalidade de CT-e Simplificado
+
+
+
+
+
+
+
Tipo Identificador de controle do envio do lote. Número seqüencial auto-incremental, de controle correspondente ao identificador único do lote enviado. A responsabilidade de gerar e controlar esse número é do próprio contribuinte.
@@ -6298,6 +7964,17 @@ Observação: 28 caracteres são representados no schema como 20 bytes do tipo b
+
+
+ Tipo Modal transporte do CTe Simplificado
+
+
+
+
+
+
+
+
Tipo RNTRC - Registro Nacional Transportadores Rodoviários de Carga
@@ -6358,4 +8035,4 @@ Observação: 28 caracteres são representados no schema como 20 bytes do tipo b
-
+
\ No newline at end of file
diff --git a/CTe.AppTeste/schemas/evCancPrestDesacordo_v4.00.xsd b/CTe.AppTeste/schemas/evCancPrestDesacordo_v4.00.xsd
new file mode 100644
index 000000000..a3404d254
--- /dev/null
+++ b/CTe.AppTeste/schemas/evCancPrestDesacordo_v4.00.xsd
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+ Schema XML de validação do evento Cancelamento Prestação do Serviço em Desacordo 610111
+
+
+
+
+
+ Descrição do Evento - “Cancelamento Prestação do Serviço em Desacordo”
+
+
+
+
+
+
+
+
+
+
+
+ Protocolo do evento que será cancelado
+ Informar o número do protocolo de autorização do evento de prestação de serviço em desacordo que será cancelado
+
+
+
+
+
+
diff --git a/CTe.AppTeste/schemas/eventoCTeTiposBasico_v4.00.xsd b/CTe.AppTeste/schemas/eventoCTeTiposBasico_v4.00.xsd
index 71ce7421d..ae2e98b8b 100644
--- a/CTe.AppTeste/schemas/eventoCTeTiposBasico_v4.00.xsd
+++ b/CTe.AppTeste/schemas/eventoCTeTiposBasico_v4.00.xsd
@@ -107,7 +107,7 @@ Insira neste local o XML específico do tipo de evento (cancelamento, encerramen
-
+
@@ -156,7 +156,7 @@ Insira neste local o XML específico do tipo de evento (cancelamento, encerramen
-
+
diff --git a/CTe.AppTeste/schemas/procCTeSimp_v4.00.xsd b/CTe.AppTeste/schemas/procCTeSimp_v4.00.xsd
new file mode 100644
index 000000000..ae7e19cb5
--- /dev/null
+++ b/CTe.AppTeste/schemas/procCTeSimp_v4.00.xsd
@@ -0,0 +1,37 @@
+
+
+
+
+
+
+ CT-e Simplificado processado
+
+
+
+
+
+
+
+
+
+ IP do transmissor do documento fiscal para o ambiente autorizador
+
+
+
+
+ Porta de origem utilizada na conexão (De 0 a 65535)
+
+
+
+
+
+
+
+
+
+ Data e Hora da Conexão de Origem
+
+
+
+
+
diff --git a/CTe.AppTeste/schemas/retCTeSimp_v4.00.xsd b/CTe.AppTeste/schemas/retCTeSimp_v4.00.xsd
new file mode 100644
index 000000000..8140961c8
--- /dev/null
+++ b/CTe.AppTeste/schemas/retCTeSimp_v4.00.xsd
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+ Schema XML de validação do retorno do recibo de envio do CT-e Simplificado (Modelo 57)
+
+
+
diff --git a/CTe.AppTeste/schemas/tiposGeralCTe_v4.00.xsd b/CTe.AppTeste/schemas/tiposGeralCTe_v4.00.xsd
index 20f80af49..f3757bab2 100644
--- a/CTe.AppTeste/schemas/tiposGeralCTe_v4.00.xsd
+++ b/CTe.AppTeste/schemas/tiposGeralCTe_v4.00.xsd
@@ -121,7 +121,7 @@
-
+
@@ -130,7 +130,7 @@
-
+
@@ -142,22 +142,13 @@
-
-
- Tipo Número do CNPJ tamanho varíavel (3-14)
-
-
-
-
-
-
Tipo Número do CNPJ Opcional
-
+
@@ -509,7 +500,7 @@
-
+
diff --git a/CTe.Classes/CTeOutrosServicos/Informacoes/Impostos/impOs.cs b/CTe.Classes/CTeOutrosServicos/Informacoes/Impostos/impOs.cs
index 64d234b4d..058428168 100644
--- a/CTe.Classes/CTeOutrosServicos/Informacoes/Impostos/impOs.cs
+++ b/CTe.Classes/CTeOutrosServicos/Informacoes/Impostos/impOs.cs
@@ -22,5 +22,7 @@ public decimal? vTotTrib
public ICMSUFFim ICMSUFFim { get; set; }
public infTribFed infTribFed { get; set; }
+
+ public IBSCBS IBSCBS { get; set; }
}
}
\ No newline at end of file
diff --git a/CTe.Classes/Informacoes/Identificacao/gCompraGov.cs b/CTe.Classes/Informacoes/Identificacao/gCompraGov.cs
new file mode 100644
index 000000000..1c75654bb
--- /dev/null
+++ b/CTe.Classes/Informacoes/Identificacao/gCompraGov.cs
@@ -0,0 +1,19 @@
+using CTe.Classes.Informacoes.Tipos;
+using DFe.Classes;
+
+namespace CTe.Classes.Informacoes.Identificacao
+{
+ public class gCompraGov
+ {
+ private decimal _pRedutor;
+
+ public TipoEnteGov tpEnteGov { get; set; }
+
+ public decimal pRedutor
+ {
+ get => _pRedutor.Arredondar(4);
+ set => _pRedutor = value.Arredondar(4);
+ }
+
+ }
+}
diff --git a/CTe.Classes/Informacoes/Identificacao/ide.cs b/CTe.Classes/Informacoes/Identificacao/ide.cs
index 94bee15cf..52528c0cf 100644
--- a/CTe.Classes/Informacoes/Identificacao/ide.cs
+++ b/CTe.Classes/Informacoes/Identificacao/ide.cs
@@ -248,5 +248,8 @@ public string ProxydhCont
}
public string xJust { get; set; }
+
+ public gCompraGov gCompraGov { get; set; }
+
}
}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS.cs
index eac0359bf..662e47fe7 100644
--- a/CTe.Classes/Informacoes/Impostos/IBSCBS.cs
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS.cs
@@ -1,4 +1,4 @@
-/********************************************************************************/
+/********************************************************************************/
/* Projeto: Biblioteca ZeusNFe */
/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */
/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */
@@ -31,29 +31,44 @@
/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */
/********************************************************************************/
-using CTe.Classes.Informacoes.Impostos.InformacoesIbsCbs;
-using CTe.Classes.Informacoes.Impostos.Tipos;
+using CTe.Classes.Informacoes.Impostos.IBSCBS;
+using CTe.Classes.Informacoes.Tipos;
+using System.Xml.Serialization;
-namespace CTe.Classes.Informacoes.Impostos
+namespace CTe.Classes.Informacoes.Impostos.Tributacao
{
- ///
- /// Grupo do IBS e CBS
- ///
public class IBSCBS
{
- ///
- /// Código de Situação Tributária do IBS e CBS
- ///
- public CstIbsCbs CST { get; set; }
+ private string _cClassTrib;
- ///
- /// Código de Classificação Tributária do IBS e CBS
- ///
- public string cClassTrib { get; set; }
+ [XmlElement(Order = 1)]
+ public CSTIBSCBS CST { get; set; }
+
+ [XmlElement(Order = 2)]
+ public string cClassTrib
+ {
+ get => _cClassTrib;
+ set => _cClassTrib = value;
+ }
+
+ [XmlElement(Order = 3)]
+ public short? indDoacao { get; set; }
+
+ [XmlElement(Order = 4)]
+ public gIBSCBS gIBSCBS { get; set; }
+
+ //define se o campo indDoacao deve ser serializado
+ public bool ShouldSerializeindDoacao()
+ {
+ return indDoacao.HasValue;
+ }
///
- /// Grupo de Informações do IBS e da CBS
+ /// Define o valor de cClassTrib a partir de um inteiro
///
- public gIBSCBS gIBSCBS { get; set; }
+ public void SetcClassTrib(int intValue)
+ {
+ _cClassTrib = intValue.ToString("D6");
+ }
}
}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS/gCBS.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS/gCBS.cs
new file mode 100644
index 000000000..efcad234a
--- /dev/null
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS/gCBS.cs
@@ -0,0 +1,34 @@
+using DFe.Classes;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Informacoes.Impostos.IBSCBS
+{
+ public class gCBS
+ {
+ private decimal _pGBS;
+ private decimal _vGBS;
+
+ [XmlElement(Order = 1)]
+ public decimal pCBS
+ {
+ get => _pGBS.Arredondar(4);
+ set => _pGBS = value.Arredondar(4);
+ }
+
+ [XmlElement(Order = 2)]
+ public gDif gDif { get; set; }
+
+ [XmlElement(Order = 3)]
+ public gDevTrib gDevTrib { get; set; }
+
+ [XmlElement(Order = 4)]
+ public gRed gRed { get; set; }
+
+ [XmlElement(Order = 5)]
+ public decimal vCBS
+ {
+ get => _vGBS.Arredondar(2);
+ set => _vGBS = value.Arredondar(2);
+ }
+ }
+}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS/gDevTrib.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS/gDevTrib.cs
new file mode 100644
index 000000000..4a185edc9
--- /dev/null
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS/gDevTrib.cs
@@ -0,0 +1,15 @@
+using DFe.Classes;
+
+namespace CTe.Classes.Informacoes.Impostos.IBSCBS
+{
+ public class gDevTrib
+ {
+ private decimal _vDevTrib { get; set; }
+
+ public decimal vDevTrib
+ {
+ get => _vDevTrib.Arredondar(2);
+ set => _vDevTrib = value.Arredondar(2);
+ }
+ }
+}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS/gDif.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS/gDif.cs
new file mode 100644
index 000000000..c83dafdc0
--- /dev/null
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS/gDif.cs
@@ -0,0 +1,22 @@
+using DFe.Classes;
+
+namespace CTe.Classes.Informacoes.Impostos.IBSCBS
+{
+ public class gDif
+ {
+ private decimal _pDif;
+ private decimal _vDif;
+
+ public decimal pDif
+ {
+ get => _pDif.Arredondar(4);
+ set => _pDif = value.Arredondar(4);
+ }
+
+ public decimal vDif
+ {
+ get => _vDif.Arredondar(2);
+ set => _vDif = value.Arredondar(2);
+ }
+ }
+}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS/gEstornoCred.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS/gEstornoCred.cs
new file mode 100644
index 000000000..bf73ce1a5
--- /dev/null
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS/gEstornoCred.cs
@@ -0,0 +1,25 @@
+using DFe.Classes;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Informacoes.Impostos.IBSCBS
+{
+ public class gEstornoCred
+ {
+ private decimal _vIBSEstCred;
+ private decimal _vCBSEstCred;
+
+ [XmlElement(Order = 1)]
+ public decimal vIBSEstCred
+ {
+ get => _vIBSEstCred.Arredondar(2);
+ set => _vIBSEstCred = value.Arredondar(2);
+ }
+
+ [XmlElement(Order = 2)]
+ public decimal vCBSEstCred
+ {
+ get => _vCBSEstCred.Arredondar(2);
+ set => _vCBSEstCred = value.Arredondar(2);
+ }
+ }
+}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS/gIBSCBS.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS/gIBSCBS.cs
new file mode 100644
index 000000000..9c1bf0136
--- /dev/null
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS/gIBSCBS.cs
@@ -0,0 +1,48 @@
+using DFe.Classes;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Informacoes.Impostos.IBSCBS
+{
+ public class gIBSCBS
+ {
+ private decimal _vBc;
+ private decimal? _vIbs;
+
+ [XmlElement(Order = 1)]
+ public decimal vBC
+ {
+ get => _vBc.Arredondar(2);
+ set => _vBc = value.Arredondar(2);
+ }
+
+ [XmlElement(Order = 2)]
+ public gIBSUF gIBSUF { get; set; }
+
+ [XmlElement(Order = 3)]
+ public gIBSMun gIBSMun { get; set; }
+
+ [XmlElement(Order = 4)]
+ public decimal? vIBS
+ {
+ get => _vIbs.Arredondar(2);
+ set => _vIbs = value.Arredondar(2);
+ }
+
+ [XmlElement(Order = 5)]
+ public gCBS gCBS { get; set; }
+
+ [XmlElement(Order = 6)]
+ public gTribRegular gTribRegular { get; set; }
+
+ [XmlElement(Order = 7)]
+ public gTribCompraGov gTribCompraGov { get; set; }
+
+ [XmlElement(Order = 8)]
+ public gEstornoCred gEstornoCred { get; set; }
+
+ public bool vIBSSpecified
+ {
+ get { return vIBS.HasValue; }
+ }
+ }
+}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS/gIBSMun.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS/gIBSMun.cs
new file mode 100644
index 000000000..afbdb5b3e
--- /dev/null
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS/gIBSMun.cs
@@ -0,0 +1,34 @@
+using DFe.Classes;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Informacoes.Impostos.IBSCBS
+{
+ public class gIBSMun
+ {
+ private decimal _pIbsMun;
+ private decimal _vIbsMun;
+
+ [XmlElement(Order = 1)]
+ public decimal pIBSMun
+ {
+ get => _pIbsMun.Arredondar(4);
+ set => _pIbsMun = value.Arredondar(4);
+ }
+
+ [XmlElement(Order = 2)]
+ public gDif gDif { get; set; }
+
+ [XmlElement(Order = 3)]
+ public gDevTrib gDevTrib { get; set; }
+
+ [XmlElement(Order = 4)]
+ public gRed gRed { get; set; }
+
+ [XmlElement(Order = 5)]
+ public decimal vIBSMun
+ {
+ get => _vIbsMun.Arredondar(2);
+ set => _vIbsMun = value.Arredondar(2);
+ }
+ }
+}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS/gIBSUF.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS/gIBSUF.cs
new file mode 100644
index 000000000..e0a5600e2
--- /dev/null
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS/gIBSUF.cs
@@ -0,0 +1,35 @@
+using DFe.Classes;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Informacoes.Impostos.IBSCBS
+{
+ public class gIBSUF
+ {
+ private decimal _pIbsUf;
+ private decimal _vIbsUf;
+
+ [XmlElement(Order = 1)]
+ public decimal pIBSUF
+ {
+ get => _pIbsUf.Arredondar(4);
+ set => _pIbsUf = value.Arredondar(4);
+ }
+
+ [XmlElement(Order = 2)]
+ public gDif gDif { get; set; }
+
+ [XmlElement(Order = 3)]
+ public gDevTrib gDevTrib { get; set; }
+
+ [XmlElement(Order = 4)]
+ public gRed gRed { get; set; }
+
+ [XmlElement(Order = 5)]
+ public decimal vIBSUF
+ {
+ get => _vIbsUf.Arredondar(2);
+ set => _vIbsUf = value.Arredondar(2);
+ }
+ }
+
+}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS/gRed.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS/gRed.cs
new file mode 100644
index 000000000..bed8183a1
--- /dev/null
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS/gRed.cs
@@ -0,0 +1,22 @@
+using DFe.Classes;
+
+namespace CTe.Classes.Informacoes.Impostos.IBSCBS
+{
+ public class gRed
+ {
+ private decimal _pRedAliq;
+ private decimal _pAliqEfet;
+
+ public decimal pRedAliq
+ {
+ get => _pRedAliq.Arredondar(4);
+ set => _pRedAliq = value.Arredondar(4);
+ }
+
+ public decimal pAliqEfet
+ {
+ get => _pAliqEfet.Arredondar(4);
+ set => _pAliqEfet = value.Arredondar(4);
+ }
+ }
+}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS/gTribCompraGov.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS/gTribCompraGov.cs
new file mode 100644
index 000000000..cf8ef7abf
--- /dev/null
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS/gTribCompraGov.cs
@@ -0,0 +1,57 @@
+using DFe.Classes;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Informacoes.Impostos.IBSCBS
+{
+ public class gTribCompraGov
+ {
+ private decimal _pAliqIbsUf;
+ private decimal _vTribIbsUf;
+ private decimal _pAliqIbsMun;
+ private decimal _vTribIbsMun;
+ private decimal _pAliqCbs;
+ private decimal _vTribCbs;
+
+ [XmlElement(Order = 1)]
+ public decimal pAliqIBSUF
+ {
+ get => _pAliqIbsUf.Arredondar(4);
+ set => _pAliqIbsUf = value.Arredondar(4);
+ }
+
+ [XmlElement(Order = 2)]
+ public decimal vTribIBSUF
+ {
+ get => _vTribIbsUf.Arredondar(2);
+ set => _vTribIbsUf = value.Arredondar(2);
+ }
+
+ [XmlElement(Order = 3)]
+ public decimal pAliqIBSMun
+ {
+ get => _pAliqIbsMun.Arredondar(4);
+ set => _pAliqIbsMun = value.Arredondar(4);
+ }
+
+ [XmlElement(Order = 4)]
+ public decimal vTribIBSMun
+ {
+ get => _vTribIbsMun.Arredondar(2);
+ set => _vTribIbsMun = value.Arredondar(2);
+ }
+
+ [XmlElement(Order = 5)]
+ public decimal pAliqCBS
+ {
+ get => _pAliqCbs.Arredondar(4);
+ set => _pAliqCbs = value.Arredondar(4);
+ }
+
+ [XmlElement(Order = 6)]
+ public decimal vTribCBS
+ {
+ get => _vTribCbs.Arredondar(2);
+ set => _vTribCbs = value.Arredondar(2);
+ }
+ }
+}
diff --git a/CTe.Classes/Informacoes/Impostos/IBSCBS/gTribRegular.cs b/CTe.Classes/Informacoes/Impostos/IBSCBS/gTribRegular.cs
new file mode 100644
index 000000000..43600dfbd
--- /dev/null
+++ b/CTe.Classes/Informacoes/Impostos/IBSCBS/gTribRegular.cs
@@ -0,0 +1,77 @@
+using CTe.Classes.Informacoes.Tipos;
+using DFe.Classes;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Informacoes.Impostos.IBSCBS
+{
+ public class gTribRegular
+ {
+ private string _cClassTribReg;
+ private decimal _pAliqEfetRegIbsUf;
+ private decimal _vTribRegIbsUf;
+ private decimal _pAliqEfetRegIbsMun;
+ private decimal _vTribRegIbsMun;
+ private decimal _pAliqEfetRegCbs;
+ private decimal _vTribRegCbs;
+
+ [XmlElement(Order = 1)]
+ public CSTIBSCBS CSTReg { get; set; }
+
+ [XmlElement(Order = 2)]
+ public string cClassTribReg
+ {
+ get => _cClassTribReg;
+ set => _cClassTribReg = value;
+ }
+
+ [XmlElement(Order = 3)]
+ public decimal pAliqEfetRegIBSUF
+ {
+ get => _pAliqEfetRegIbsUf.Arredondar(4);
+ set => _pAliqEfetRegIbsUf = value.Arredondar(4);
+ }
+
+ [XmlElement(Order = 4)]
+ public decimal vTribRegIBSUF
+ {
+ get => _vTribRegIbsUf.Arredondar(2);
+ set => _vTribRegIbsUf = value.Arredondar(2);
+ }
+
+ [XmlElement(Order = 5)]
+ public decimal pAliqEfetRegIBSMun
+ {
+ get => _pAliqEfetRegIbsMun.Arredondar(4);
+ set => _pAliqEfetRegIbsMun = value.Arredondar(4);
+ }
+
+ [XmlElement(Order = 6)]
+ public decimal vTribRegIBSMun
+ {
+ get => _vTribRegIbsMun.Arredondar(2);
+ set => _vTribRegIbsMun = value.Arredondar(2);
+ }
+
+ [XmlElement(Order = 7)]
+ public decimal pAliqEfetRegCBS
+ {
+ get => _pAliqEfetRegCbs.Arredondar(4);
+ set => _pAliqEfetRegCbs = value.Arredondar(4);
+ }
+
+ [XmlElement(Order = 8)]
+ public decimal vTribRegCBS
+ {
+ get => _vTribRegCbs.Arredondar(2);
+ set => _vTribRegCbs = value.Arredondar(2);
+ }
+
+ ///
+ /// Define o valor de cClassTrib a partir de um inteiro
+ ///
+ public void SetcClassTrib(int intValue)
+ {
+ _cClassTribReg = intValue.ToString("D6");
+ }
+ }
+}
diff --git a/CTe.Classes/Informacoes/Impostos/imp.cs b/CTe.Classes/Informacoes/Impostos/imp.cs
index 2e2b248ae..4527a10c8 100644
--- a/CTe.Classes/Informacoes/Impostos/imp.cs
+++ b/CTe.Classes/Informacoes/Impostos/imp.cs
@@ -1,36 +1,37 @@
-/********************************************************************************/
+/********************************************************************************/
/* Projeto: Biblioteca ZeusNFe */
-/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */
-/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */
+/* Biblioteca C# para emiss�o de Nota Fiscal Eletr�nica - NFe e Nota Fiscal de */
+/* Consumidor Eletr�nica - NFC-e (http://www.nfe.fazenda.gov.br) */
/* */
/* Direitos Autorais Reservados (c) 2014 Adenilton Batista da Silva */
/* Zeusdev Tecnologia LTDA ME */
/* */
-/* Você pode obter a última versão desse arquivo no GitHub */
+/* Voc� pode obter a �ltima vers�o desse arquivo no GitHub */
/* localizado em https://github.com/adeniltonbs/Zeus.Net.NFe.NFCe */
/* */
/* */
-/* Esta biblioteca é software livre; você pode redistribuí-la e/ou modificá-la */
-/* sob os termos da Licença Pública Geral Menor do GNU conforme publicada pela */
-/* Free Software Foundation; tanto a versão 2.1 da Licença, ou (a seu critério) */
-/* qualquer versão posterior. */
+/* Esta biblioteca � software livre; voc� pode redistribu�-la e/ou modific�-la */
+/* sob os termos da Licen�a P�blica Geral Menor do GNU conforme publicada pela */
+/* Free Software Foundation; tanto a vers�o 2.1 da Licen�a, ou (a seu crit�rio) */
+/* qualquer vers�o posterior. */
/* */
-/* Esta biblioteca é distribuída na expectativa de que seja útil, porém, SEM */
-/* NENHUMA GARANTIA; nem mesmo a garantia implícita de COMERCIABILIDADE OU */
-/* ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. Consulte a Licença Pública Geral Menor*/
-/* do GNU para mais detalhes. (Arquivo LICENÇA.TXT ou LICENSE.TXT) */
+/* Esta biblioteca � distribu�da na expectativa de que seja �til, por�m, SEM */
+/* NENHUMA GARANTIA; nem mesmo a garantia impl�cita de COMERCIABILIDADE OU */
+/* ADEQUA��O A UMA FINALIDADE ESPEC�FICA. Consulte a Licen�a P�blica Geral Menor*/
+/* do GNU para mais detalhes. (Arquivo LICEN�A.TXT ou LICENSE.TXT) */
/* */
-/* Você deve ter recebido uma cópia da Licença Pública Geral Menor do GNU junto*/
-/* com esta biblioteca; se não, escreva para a Free Software Foundation, Inc., */
-/* no endereço 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */
-/* Você também pode obter uma copia da licença em: */
+/* Voc� deve ter recebido uma c�pia da Licen�a P�blica Geral Menor do GNU junto*/
+/* com esta biblioteca; se n�o, escreva para a Free Software Foundation, Inc., */
+/* no endere�o 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. */
+/* Voc� tamb�m pode obter uma copia da licen�a em: */
/* http://www.opensource.org/licenses/lgpl-license.php */
/* */
/* Zeusdev Tecnologia LTDA ME - adenilton@zeusautomacao.com.br */
/* http://www.zeusautomacao.com.br/ */
-/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */
+/* Rua Comendador Francisco jos� da Cunha, 111 - Itabaiana - SE - 49500-000 */
/********************************************************************************/
-
+using CTe.Classes.Informacoes.Impostos.IBSCBS;
+using CTe.Classes.Informacoes.Valores;
using DFe.Classes;
namespace CTe.Classes.Informacoes.Impostos
@@ -40,17 +41,13 @@ public class imp
public Tributacao.ICMS ICMS { get; set; }
private decimal? _vTotTrib;
-
public decimal? vTotTrib
{
get { return _vTotTrib.Arredondar(2); }
set { _vTotTrib = value.Arredondar(2); }
}
- public bool vTotTribSpecified
- {
- get { return vTotTrib.HasValue; }
- }
+ public bool vTotTribSpecified { get { return vTotTrib.HasValue; } }
public string infAdFisco { get; set; }
@@ -58,12 +55,16 @@ public bool vTotTribSpecified
public infTribFed infTribFed { get; set; }
- public IBSCBS IBSCBS { get; set; }
- private decimal? _vTotDFe;
+ public Tributacao.IBSCBS IBSCBS { get; set; }
+ private decimal? _vTotDFe;
///
- /// Valor Total do DFe
+ /// O total geral do DFe dever� ser a soma do total da presta��o + IBS + CBS
+ /// vTotDFe = vPrest / vTPrest + gIBSCBS / vIBS + gCBS / vCBS
+ ///
+ /// Exce��o: Em 2026 n�o somar IBS e CBS
+ /// Observa��o: Implementa��o futura
///
public decimal? vTotDFe
{
@@ -71,9 +72,6 @@ public decimal? vTotDFe
set { _vTotDFe = value.Arredondar(2); }
}
- public bool vTotDFeSpecified
- {
- get { return vTotDFe.HasValue; }
- }
+ public bool vTotDFeSpecified { get { return vTotDFe.HasValue; } }
}
}
\ No newline at end of file
diff --git a/CTe.Classes/Informacoes/Tipos/CSTIBSCBS.cs b/CTe.Classes/Informacoes/Tipos/CSTIBSCBS.cs
new file mode 100644
index 000000000..36b3c62b5
--- /dev/null
+++ b/CTe.Classes/Informacoes/Tipos/CSTIBSCBS.cs
@@ -0,0 +1,80 @@
+using System.ComponentModel;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Informacoes.Tipos
+{
+ public enum CSTIBSCBS
+ {
+ [Description("Tributação integral")]
+ [XmlEnum("000")]
+ cst000 = 000,
+
+ [Description("Tributação com alíquotas uniformes")]
+ [XmlEnum("010")]
+ cst010 = 010,
+
+ [Description("Tributação com alíquotas uniformes reduzidas")]
+ [XmlEnum("011")]
+ cst011 = 011,
+
+ [Description("Alíquota reduzida")]
+ [XmlEnum("200")]
+ cst200 = 200,
+
+ [Description("Alíquota fixa")]
+ [XmlEnum("220")]
+ cst220 = 220,
+
+ [Description("Alíquota fixa rateada")]
+ [XmlEnum("221")]
+ cst221 = 221,
+
+ [Description("Redução de Base de Cálculo")]
+ [XmlEnum("222")]
+ cst222 = 222,
+
+ [Description("Isenção")]
+ [XmlEnum("400")]
+ cst400 = 400,
+
+ [Description("Imunidade e não incidência")]
+ [XmlEnum("410")]
+ cst410 = 410,
+
+ [Description("Diferimento")]
+ [XmlEnum("510")]
+ cst510 = 510,
+
+ [Description("Diferimento com redução de alíquota")]
+ [XmlEnum("515")]
+ cst515 = 515,
+
+ [Description("Suspensão")]
+ [XmlEnum("550")]
+ cst550 = 550,
+
+ [Description("Tributação Monofásica")]
+ [XmlEnum("620")]
+ cst620 = 620,
+
+ [Description("Transferência de crédito")]
+ [XmlEnum("800")]
+ cst800 = 800,
+
+ [Description("Ajuste de IBS na ZFM")]
+ [XmlEnum("810")]
+ cst810 = 810,
+
+ [Description("Ajustes")]
+ [XmlEnum("811")]
+ cst811 = 811,
+
+ [Description("Tributação em declaração de regime específico")]
+ [XmlEnum("820")]
+ cst820 = 820,
+
+ [Description("Exclusão da Base de Cálculo")]
+ [XmlEnum("830")]
+ cst830 = 830,
+ }
+}
diff --git a/CTe.Classes/Informacoes/Tipos/TipoEnteGov.cs b/CTe.Classes/Informacoes/Tipos/TipoEnteGov.cs
new file mode 100644
index 000000000..e82732fee
--- /dev/null
+++ b/CTe.Classes/Informacoes/Tipos/TipoEnteGov.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Informacoes.Tipos
+{
+ public enum TipoEnteGov
+ {
+ [Description("União")]
+ [XmlEnum("1")]
+ Uniao = 1,
+
+ [Description("Estado")]
+ [XmlEnum("2")]
+ Estado = 2,
+
+ [Description("Distrito Federal")]
+ [XmlEnum("3")]
+ DistritoFederal = 3,
+
+ [Description("Município")]
+ [XmlEnum("4")]
+ Municipio = 4
+ }
+}
diff --git a/CTe.Dacte.OpenFast/CTe.Dacte.OpenFast.csproj b/CTe.Dacte.OpenFast/CTe.Dacte.OpenFast.csproj
index a8094a73c..a0bb23341 100644
--- a/CTe.Dacte.OpenFast/CTe.Dacte.OpenFast.csproj
+++ b/CTe.Dacte.OpenFast/CTe.Dacte.OpenFast.csproj
@@ -5,11 +5,16 @@
-
+
+
+
+
+
+
diff --git a/CTe.Utils/Validacao/Validador.cs b/CTe.Utils/Validacao/Validador.cs
index 1d4773996..667b2560d 100644
--- a/CTe.Utils/Validacao/Validador.cs
+++ b/CTe.Utils/Validacao/Validador.cs
@@ -55,9 +55,15 @@ public static void Valida(string xml, string schema, ConfiguracaoServico configu
// Define o tipo de validação
var cfg = new XmlReaderSettings { ValidationType = ValidationType.Schema };
+ // Previne ataques XXE: nao permite resolver recursos externos
+ cfg.DtdProcessing = DtdProcessing.Prohibit;
+ cfg.XmlResolver = null;
+
// Carrega o arquivo de esquema
- var schemas = new XmlSchemaSet();
- schemas.XmlResolver = new XmlUrlResolver();
+ var schemas = new XmlSchemaSet
+ {
+ XmlResolver = new XmlUrlResolver()
+ };
cfg.Schemas = schemas;
// Quando carregar o schema, especificar o namespace que ele valida
diff --git a/DFe.Utils/Assinatura/AssinaturaDigital.cs b/DFe.Utils/Assinatura/AssinaturaDigital.cs
index 097acf2fb..287acbac1 100644
--- a/DFe.Utils/Assinatura/AssinaturaDigital.cs
+++ b/DFe.Utils/Assinatura/AssinaturaDigital.cs
@@ -51,16 +51,16 @@ public static SignatureZeus Assina(T objeto, string id, X509Certificate2 cert
if (id == null)
throw new Exception("Não é possível assinar um objeto evento sem sua respectiva Id!");
- var documento = new XmlDocument {PreserveWhitespace = true};
+ var documento = new XmlDocument { PreserveWhitespace = true };
documento.LoadXml(cfgServicoRemoverAcentos
? FuncoesXml.ClasseParaXmlString(objetoLocal).RemoverAcentos()
: FuncoesXml.ClasseParaXmlString(objetoLocal));
- var docXml = new SignedXml(documento) {SigningKey = certificado.PrivateKey};
+ var docXml = new SignedXml(documento) { SigningKey = certificado.PrivateKey };
docXml.SignedInfo.SignatureMethod = signatureMethod;
- var reference = new Reference {Uri = "#" + id, DigestMethod = digestMethod};
+ var reference = new Reference { Uri = "#" + id, DigestMethod = digestMethod };
// adicionando EnvelopedSignatureTransform a referencia
var envelopedSigntature = new XmlDsigEnvelopedSignatureTransform();
diff --git a/DFe.Utils/FuncoesXml.cs b/DFe.Utils/FuncoesXml.cs
index da5964da1..839f1d882 100644
--- a/DFe.Utils/FuncoesXml.cs
+++ b/DFe.Utils/FuncoesXml.cs
@@ -117,6 +117,11 @@ public static T ArquivoXmlParaClasse(string arquivo, bool ignorarOrdenacaoEle
serializador = BuscarNoCache(keyNomeClasseEmUso, typeof(T));
}
+ if(arquivo.Contains("../") || arquivo.Contains("..\\"))
+ {
+ throw new Exception("Caminho do arquivo não pode conter ../ ou ..\\");
+ }
+
var stream = new FileStream(arquivo, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
try
{
diff --git a/Dev.VersaoAssemblies/ProgramMain.cs b/Dev.VersaoAssemblies/ProgramMain.cs
index 2aa1df619..bf24f0c8b 100644
--- a/Dev.VersaoAssemblies/ProgramMain.cs
+++ b/Dev.VersaoAssemblies/ProgramMain.cs
@@ -91,6 +91,11 @@ private static void FazerAlteracaoDasVersoes(string versaoString)
private static void AlterarVersaoDoAssembly(string infoFile, string versaoString)
{
+ if(infoFile.Contains("../") || infoFile.Contains("..\\"))
+ {
+ throw new Exception("Caminho do arquivo não pode conter ../ ou ..\\");
+ }
+
var content = File.ReadAllText(infoFile);
var regexVersion = new Regex("assembly: AssemblyVersion.+\\)", RegexOptions.IgnoreCase);
diff --git a/MDFe.Damdfe.OpenFast/MDFe.Damdfe.OpenFast.csproj b/MDFe.Damdfe.OpenFast/MDFe.Damdfe.OpenFast.csproj
index ee560f9ba..5cc9fd5ba 100644
--- a/MDFe.Damdfe.OpenFast/MDFe.Damdfe.OpenFast.csproj
+++ b/MDFe.Damdfe.OpenFast/MDFe.Damdfe.OpenFast.csproj
@@ -5,11 +5,16 @@
-
+
+
+
+
+
+
diff --git a/MDFe.Utils/Validacao/Validador.cs b/MDFe.Utils/Validacao/Validador.cs
index 07b0d4961..fa566f4b4 100644
--- a/MDFe.Utils/Validacao/Validador.cs
+++ b/MDFe.Utils/Validacao/Validador.cs
@@ -54,6 +54,10 @@ public static void Valida(string xml, string schema, MDFeConfiguracao cfgMdfe =
// Define o tipo de validação
var cfg = new XmlReaderSettings { ValidationType = ValidationType.Schema };
+ // Previne ataques XXE: nao permite resolver recursos externos
+ cfg.DtdProcessing = DtdProcessing.Prohibit;
+ cfg.XmlResolver = null;
+
// Carrega o arquivo de esquema
var schemas = new XmlSchemaSet();
schemas.XmlResolver = new XmlUrlResolver();
diff --git a/NFe.Danfe.AppTeste.OpenFast/Funcoes.cs b/NFe.Danfe.AppTeste.OpenFast/Funcoes.cs
index 408aba480..7b61d52c5 100644
--- a/NFe.Danfe.AppTeste.OpenFast/Funcoes.cs
+++ b/NFe.Danfe.AppTeste.OpenFast/Funcoes.cs
@@ -23,6 +23,11 @@ public static string BuscarArquivoXml(string caminho)
throw new Exception("Caminho do arquivo incorreto! Arquivo não foi encontrado.");
}
+ if(caminho.Contains("../") || caminho.Contains("..\\"))
+ {
+ throw new Exception("Caminho do arquivo não pode conter ../ ou ..\\");
+ }
+
return File.ReadAllText(caminho);
}
@@ -36,6 +41,12 @@ public static void SalvaArquivoGerado(string caminhoXmlAnterior, string extensao
//https://github.com/FastReports/FastReport/blob/master/Demos/OpenSource/FastReport.OpenSource.Web.Vue/Controllers/ReportsController.cs
var caminhoArquivo = Path.GetDirectoryName(ArrumaCaminho(caminhoXmlAnterior)) + "/generated" + DateTime.Now.ToString("ddMMyyyy_HHmmss") + extensao;
+
+ if(caminhoArquivo.Contains("../") || caminhoArquivo.Contains("..\\"))
+ {
+ throw new Exception("Caminho do arquivo não pode conter ../ ou ..\\");
+ }
+
File.WriteAllBytes(caminhoArquivo, bytes);
Console.Clear();
diff --git a/NFe.Danfe.Html/CrossCutting/Utils.cs b/NFe.Danfe.Html/CrossCutting/Utils.cs
index 6687285d8..4bf942e5f 100644
--- a/NFe.Danfe.Html/CrossCutting/Utils.cs
+++ b/NFe.Danfe.Html/CrossCutting/Utils.cs
@@ -73,6 +73,11 @@ public static T XmlStringParaClasse(string input) where T : class
/// Nome do arquivo
public static void DelatarArquivo(string caminho, string nomeArquivo)
{
+ if(caminho.Contains("../") || caminho.Contains("..\\"))
+ {
+ throw new Exception("Caminho do arquivo não pode conter ../ ou ..\\");
+ }
+
var c1 = Path.Combine(caminho, nomeArquivo);
File.Delete(c1);
}
@@ -91,6 +96,9 @@ public static void EscreverArquivo(string caminho, string nomeArquivo, string co
throw new ArgumentNullException(nameof(nomeArquivo), "O nome do arquivo deve ser informado");
if (conteudo == null)
throw new ArgumentNullException(nameof(conteudo), "O conteúdo do arquivo deve ser informado");
+ if(caminho.Contains("../") || caminho.Contains("..\\"))
+ throw new Exception("Caminho do arquivo não pode conter ../ ou ..\\");
+
CriarPastaSeNaoExistir(caminho);
var encodedText = Encoding.UTF8.GetBytes(conteudo);
var c1 = Path.Combine(caminho, nomeArquivo); // Combina caminho do arquivo como nome do arquivo
diff --git a/NFe.Danfe.Nativo/GraphicsPrinter/MedidasLinha.cs b/NFe.Danfe.Nativo/GraphicsPrinter/MedidasLinha.cs
index 4deb72a01..95c69367f 100644
--- a/NFe.Danfe.Nativo/GraphicsPrinter/MedidasLinha.cs
+++ b/NFe.Danfe.Nativo/GraphicsPrinter/MedidasLinha.cs
@@ -47,7 +47,13 @@ public static Medida GetMedidas(AdicionarTexto adicionarTexto)
public static Medida GetMedidas(string texto, Font fonte)
{
- Graphics g = Graphics.FromHwnd(IntPtr.Zero);
+ /*
+ * macOS:
+ * Graphics g = Graphics.FromHwnd(IntPtr.Zero);
+ * System.NotSupportedException: Specified method is not supported.
+ */
+ Bitmap bmp = new Bitmap(1, 1);
+ Graphics g = Graphics.FromImage(bmp);
SizeF tamanhoDaString = g.MeasureString(texto, fonte);
int alturaLinha = Convert.ToInt32(tamanhoDaString.Height);
int larguraLinha = Convert.ToInt32(tamanhoDaString.Width);
diff --git a/NFe.Danfe.Nativo/NFCe/DanfeNativoNfce.cs b/NFe.Danfe.Nativo/NFCe/DanfeNativoNfce.cs
index 1342c5e05..cfcc9a5ba 100644
--- a/NFe.Danfe.Nativo/NFCe/DanfeNativoNfce.cs
+++ b/NFe.Danfe.Nativo/NFCe/DanfeNativoNfce.cs
@@ -77,7 +77,7 @@ public DanfeNativoNfce(string xml, VersaoQrCode versaoQrCode, byte[] logo, strin
Inicializa(xml, versaoQrCode, logo, cIdToken, csc, troco, totalPago, font, viaEstabelecimento);
}
- private void Inicializa(string xml, VersaoQrCode versaoQrCode, byte[] logo, string cIdToken, string csc, decimal troco, decimal totalPago, string font = null, bool viaEstabelecimento = false, string fontPadrao = "")
+ private void Inicializa(string xml, VersaoQrCode versaoQrCode, byte[] logo, string cIdToken, string csc, decimal troco, decimal totalPago, string font, bool viaEstabelecimento)
{
_logo = logo;
_versaoQrCode = versaoQrCode;
@@ -86,7 +86,7 @@ private void Inicializa(string xml, VersaoQrCode versaoQrCode, byte[] logo, stri
_troco = troco;
_totalPago = totalPago;
_viaEstabelecimento = viaEstabelecimento;
- AdicionarTexto.FontPadrao = this.CarregarFontePadraoNfceNativa(fontPadrao);
+ AdicionarTexto.FontPadrao = this.CarregarFontePadraoNfceNativa(font);
CarregarXml(xml);
}
@@ -234,12 +234,11 @@ private void GerarNfCe(Graphics graphics)
{
using (var ms = new MemoryStream(_logo))
{
+ int logox = ((larguraLinha - 128) / 2);
var image = Image.FromStream(ms);
- new RedimensionaImagemPara(new AdicionarImagem(g, image, x, _y), 50, 24).Desenhar();
+ new RedimensionaImagemPara(new AdicionarImagem(g, image, logox, _y), 128, 128).Desenhar();
+ _y += 128;
}
- }
- else
- {
larguraLogo = 0;
}
@@ -937,4 +936,4 @@ private FontFamily CarregarFontePadraoNfceNativa(string font = null)
}
}
}
-}
\ No newline at end of file
+}
diff --git a/NFe.Danfe.OpenFast/NFe.Danfe.OpenFast.csproj b/NFe.Danfe.OpenFast/NFe.Danfe.OpenFast.csproj
index 383ef294a..778e0ed7c 100644
--- a/NFe.Danfe.OpenFast/NFe.Danfe.OpenFast.csproj
+++ b/NFe.Danfe.OpenFast/NFe.Danfe.OpenFast.csproj
@@ -5,11 +5,16 @@
-
+
+
+
+
+
+
diff --git a/NFe.Danfe.PdfClown/DanfeDoc.cs b/NFe.Danfe.PdfClown/DanfeDoc.cs
index f73b694a4..354b1c03a 100644
--- a/NFe.Danfe.PdfClown/DanfeDoc.cs
+++ b/NFe.Danfe.PdfClown/DanfeDoc.cs
@@ -107,6 +107,11 @@ public void AdicionarLogoPdf(string path)
{
if (string.IsNullOrWhiteSpace(path)) throw new ArgumentException(nameof(path));
+ if(path.Contains("../") || path.Contains("..\\"))
+ {
+ throw new Exception("Caminho do arquivo não pode conter ../ ou ..\\");
+ }
+
using (var fs = new System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read))
{
AdicionarLogoPdf(fs);
diff --git a/NFe.Danfe.PdfClown/NFe.Danfe.PdfClown.csproj b/NFe.Danfe.PdfClown/NFe.Danfe.PdfClown.csproj
index e17a439a3..e91ef4be4 100644
--- a/NFe.Danfe.PdfClown/NFe.Danfe.PdfClown.csproj
+++ b/NFe.Danfe.PdfClown/NFe.Danfe.PdfClown.csproj
@@ -1,4 +1,4 @@
-
+
netstandard2.0;net6.0
diff --git a/NFe.Integracao/Program.cs b/NFe.Integracao/Program.cs
index 6df36e7af..c91d31b26 100644
--- a/NFe.Integracao/Program.cs
+++ b/NFe.Integracao/Program.cs
@@ -529,6 +529,12 @@ private static void EnviarNFe(string dadosDoEnvio)
try
{
+ if(strPathArquivoXml.Contains("../") || strPathArquivoXml.Contains("..\\"))
+ {
+ Console.WriteLine("Caminho do arquivo não pode conter ../ ou ..\\");
+ return;
+ }
+
File.ReadAllText(strPathArquivoXml);
}
catch (UnauthorizedAccessException ex)
diff --git a/NFe.Utils/Enderecos/Enderecador.cs b/NFe.Utils/Enderecos/Enderecador.cs
index dd269030d..1868705a9 100644
--- a/NFe.Utils/Enderecos/Enderecador.cs
+++ b/NFe.Utils/Enderecos/Enderecador.cs
@@ -850,13 +850,15 @@ private static List CarregarEnderecosServicos()
addServico(new[] { ServicoNFe.NFeAutorizacao }, versao3, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeAutorizacao?wsdl");
addServico(new[] { ServicoNFe.NFeRetAutorizacao }, versao3, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NfeRetAutorizacao?wsdl");
- addServico(new[] { ServicoNFe.NfeInutilizacao }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeInutilizacao4?wsdl");
- addServico(new[] { ServicoNFe.NfeConsultaProtocolo }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeConsultaProtocolo4?wsdl");
- addServico(new[] { ServicoNFe.NfeStatusServico }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeStatusServico4?wsdl");
- addServico(new[] { ServicoNFe.NfeConsultaCadastro }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/CadConsultaCadastro4?wsdl");
- addServico(eventoCceCanc, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeRecepcaoEvento4?wsdl");
- addServico(new[] { ServicoNFe.NFeAutorizacao }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeAutorizacao4?wsdl");
- addServico(new[] { ServicoNFe.NFeRetAutorizacao }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeRetAutorizacao4?wsdl");
+ // PE Homologação NFe v4.00 - URLs corrigidas (removido ?wsdl que causava 404)
+ // Padrão: URLs de produção de PE não usam ?wsdl, homologação também não deveria
+ addServico(new[] { ServicoNFe.NfeInutilizacao }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeInutilizacao4");
+ addServico(new[] { ServicoNFe.NfeConsultaProtocolo }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeConsultaProtocolo4");
+ addServico(new[] { ServicoNFe.NfeStatusServico }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeStatusServico4");
+ addServico(new[] { ServicoNFe.NfeConsultaCadastro }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/CadConsultaCadastro4");
+ addServico(eventoCceCanc, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeRecepcaoEvento4");
+ addServico(new[] { ServicoNFe.NFeAutorizacao }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeAutorizacao4");
+ addServico(new[] { ServicoNFe.NFeRetAutorizacao }, versao4, hom, emissao, Estado.PE, nfe, "https://nfehomolog.sefaz.pe.gov.br/nfe-service/services/NFeRetAutorizacao4");
}
diff --git a/NFe.Utils/Validacao/Validador.cs b/NFe.Utils/Validacao/Validador.cs
index dd6ac2010..28e4b23e8 100644
--- a/NFe.Utils/Validacao/Validador.cs
+++ b/NFe.Utils/Validacao/Validador.cs
@@ -1,4 +1,4 @@
-/********************************************************************************/
+/********************************************************************************/
/* Projeto: Biblioteca ZeusNFe */
/* Biblioteca C# para emissão de Nota Fiscal Eletrônica - NFe e Nota Fiscal de */
/* Consumidor Eletrônica - NFC-e (http://www.nfe.fazenda.gov.br) */
@@ -169,7 +169,7 @@ internal static string ObterArquivoSchema(ServicoNFe servicoNFe, VersaoServico v
public static void Valida(ServicoNFe servicoNFe, VersaoServico versaoServico, string stringXml, bool validarLote = true, ConfiguracaoServico cfgServico = null)
{
- var pathSchema = String.Empty;
+ string pathSchema = string.Empty;
if (cfgServico == null || (cfgServico != null && string.IsNullOrWhiteSpace(cfgServico.DiretorioSchemas)))
pathSchema = ConfiguracaoServico.Instancia.DiretorioSchemas;
@@ -181,7 +181,7 @@ public static void Valida(ServicoNFe servicoNFe, VersaoServico versaoServico, st
public static string[] Valida(ServicoNFe servicoNFe, VersaoServico versaoServico, string stringXml, bool validarLote = true, string pathSchema = null)
{
- var falhas = new StringBuilder();
+ StringBuilder falhas = new StringBuilder();
if (!Directory.Exists(pathSchema))
throw new Exception("Diretório de Schemas não encontrado: \n" + pathSchema);
@@ -189,11 +189,18 @@ public static string[] Valida(ServicoNFe servicoNFe, VersaoServico versaoServico
var arquivoSchema = Path.Combine(pathSchema, ObterArquivoSchema(servicoNFe, versaoServico, stringXml, validarLote));
// Define o tipo de validação
- var cfg = new XmlReaderSettings { ValidationType = ValidationType.Schema };
+ XmlReaderSettings cfg = new XmlReaderSettings
+ {
+ ValidationType = ValidationType.Schema, // Previne ataques XXE: nao permite resolver recursos externos
+ DtdProcessing = DtdProcessing.Prohibit,
+ XmlResolver = null
+ };
// Carrega o arquivo de esquema
- var schemas = new XmlSchemaSet();
- schemas.XmlResolver = new XmlUrlResolver();
+ XmlSchemaSet schemas = new XmlSchemaSet
+ {
+ XmlResolver = new XmlUrlResolver()
+ };
cfg.Schemas = schemas;
// Quando carregar o eschema, especificar o namespace que ele valida
@@ -205,14 +212,14 @@ public static string[] Valida(ServicoNFe servicoNFe, VersaoServico versaoServico
string message = args.Message.ToLower().RemoverAcentos();
if (!(
-
+
//Está errado o schema. Pois o certo é ser 20 o length e não 28 como está no schema envIECTE_v4.00xsd
- (message.Contains("hashtentativaentrega") && message.Contains("o comprimento atual nao e igual")) ||
+ (message.Contains("hashtentativaentrega") && message.Contains("o comprimento atual nao e igual")) ||
//erro de orgaoibge que duplicou em alguns xsds porem a receita federal veio a arrumar posteriormente, mesmo assim alguns não atualizam os xsds
(message.Contains("tcorgaoibge") && message.Contains("ja foi declarado"))
- //no futuro adicionar novos aqui...
+ //no futuro adicionar novos aqui...
))
{
falhas.AppendLine($"[{args.Severity}] - {message} {args.Exception?.Message} " +
@@ -223,17 +230,13 @@ public static string[] Valida(ServicoNFe servicoNFe, VersaoServico versaoServico
};
// cria um leitor para validação
- var validator = XmlReader.Create(new StringReader(stringXml), cfg);
+ XmlReader validator = XmlReader.Create(new StringReader(stringXml), cfg);
try
{
// Faz a leitura de todos os dados XML
- while (validator.Read())
- {
- }
- }
- catch
- {
+ while (validator.Read()) { }
}
+ catch { }
finally
{
validator.Close();
@@ -244,7 +247,5 @@ public static string[] Valida(ServicoNFe servicoNFe, VersaoServico versaoServico
return falhas.ToString().Trim().Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
}
-
-
}
}
\ No newline at end of file
diff --git a/Shared.NFe.Danfe/DanfeSharedHelper.cs b/Shared.NFe.Danfe/DanfeSharedHelper.cs
index 4688b45fc..e17576fe4 100644
--- a/Shared.NFe.Danfe/DanfeSharedHelper.cs
+++ b/Shared.NFe.Danfe/DanfeSharedHelper.cs
@@ -9,6 +9,7 @@
using NFe.Utils;
using NFe.Utils.InformacoesSuplementares;
using System;
+using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Text.RegularExpressions;
@@ -117,6 +118,59 @@ public static Report GenerateDanfeFrNfeReport(nfeProc proc, ConfiguracaoDanfeNfe
relatorio.RegisterData(new[] { proc }, "NFe", 20);
relatorio.GetDataSource("NFe").Enabled = true;
+ ConfigurarParametrosRelatorioNfe(relatorio, proc, configuracaoDanfeNfe, desenvolvedor);
+
+ return relatorio;
+ }
+
+ public static Report GenerateDanfeFrNfeBatchReport(List procs, ConfiguracaoDanfeNfe configuracaoDanfeNfe, byte[] frx, string desenvolvedor, string arquivoRelatorio)
+ {
+ if (procs == null || procs.Count == 0)
+ throw new ArgumentException("A lista de notas fiscais não pode estar vazia.", nameof(procs));
+
+ //Define as variáveis que serão usadas no relatório (dúvidas a respeito do fast reports consulte a documentação em https://www.fast-report.com/pt/product/fast-report-net/documentation/)
+
+ Report relatorio = new Report();
+
+ if (!string.IsNullOrEmpty(arquivoRelatorio))
+ relatorio.Load(arquivoRelatorio);
+ else if (frx != null && frx.Length > 0)
+ relatorio.Load(new MemoryStream(frx));
+ else
+ throw new Exception("Erro em DanfeSharedHelper.GenerateDanfeFrNfeBatchReport no Zeus.DFe. Relatório não encontrado, passe os parametros 'frx' com bytes ou 'arquivoRelatorio' com o caminho do arquivo");
+
+ bool primeiroRelatorio = true;
+
+ foreach (var proc in procs)
+ {
+ relatorio.RegisterData(new[] { proc }, "NFe", 20);
+ relatorio.GetDataSource("NFe").Enabled = true;
+
+ ConfigurarParametrosRelatorioNfe(relatorio, proc, configuracaoDanfeNfe, desenvolvedor);
+
+ if (primeiroRelatorio)
+ {
+ relatorio.Prepare();
+ primeiroRelatorio = false;
+ }
+ else
+ {
+ relatorio.Prepare(true);
+ }
+ }
+
+ return relatorio;
+ }
+
+ ///
+ /// Public pois caso voce implemente na mão utilize esse metodo para configurar o relatorio de danfe
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static void ConfigurarParametrosRelatorioNfe(Report relatorio, nfeProc proc, ConfiguracaoDanfeNfe configuracaoDanfeNfe, string desenvolvedor)
+ {
string mensagem = string.Empty;
string resumoCanhoto = string.Empty;
string contingenciaDescricao = string.Empty;
@@ -237,8 +291,6 @@ public static Report GenerateDanfeFrNfeReport(nfeProc proc, ConfiguracaoDanfeNfe
relatorio.SetParameterValue("DecimaisValorUnitario", configuracaoDanfeNfe.DecimaisValorUnitario);
relatorio.SetParameterValue("DecimaisQuantidadeItem", configuracaoDanfeNfe.DecimaisQuantidadeItem);
relatorio.SetParameterValue("DataHoraImpressao", configuracaoDanfeNfe.DataHoraImpressao ?? DateTime.Now);
-
- return relatorio;
}
}
}