diff --git a/CTe.Classes/Informacoes/Tipos/tpCTe.cs b/CTe.Classes/Informacoes/Tipos/tpCTe.cs
index 9ce00a02..9133bc51 100644
--- a/CTe.Classes/Informacoes/Tipos/tpCTe.cs
+++ b/CTe.Classes/Informacoes/Tipos/tpCTe.cs
@@ -3,7 +3,7 @@
namespace CTe.Classes.Informacoes.Tipos
{
///
- /// Tipo do Documento Fiscal (0 - CT-e Normal; 1 - CT-e de Complemento de Valores; 2 - CT-e de Anulação; 3 - CT-e Substituto)
+ /// Tipo do Documento Fiscal (0 - CT-e Normal; 1 - CT-e de Complemento de Valores; 2 - CT-e de Anulação; 3 - CT-e Substituto; 5 - Simplificado; 6 - Substitudo Simplificado)
///
public enum tpCTe
{
@@ -14,6 +14,10 @@ public enum tpCTe
[XmlEnum("2")]
Anulacao,
[XmlEnum("3")]
- Substituto
+ Substituto,
+ [XmlEnum("5")]
+ Simplificado,
+ [XmlEnum("6")]
+ SubstitutoSimplificado
}
}
\ No newline at end of file
diff --git a/CTe.Classes/Simplificado/Carga/comp.cs b/CTe.Classes/Simplificado/Carga/comp.cs
new file mode 100644
index 00000000..fbff2b6a
--- /dev/null
+++ b/CTe.Classes/Simplificado/Carga/comp.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Simplificado.Carga
+{
+ ///
+ /// Componente do valor da prestação.
+ ///
+ public class comp
+ {
+ ///
+ /// Nome do componente (ex: "Frete Valor", "Vr Icms").
+ ///
+ [XmlElement(ElementName = "xNome")]
+ public string xNome { get; set; }
+
+ ///
+ /// Valor do componente.
+ ///
+ [XmlElement(ElementName = "vComp")]
+ public decimal vComp { get; set; }
+ }
+}
diff --git a/CTe.Classes/Simplificado/Carga/det.cs b/CTe.Classes/Simplificado/Carga/det.cs
new file mode 100644
index 00000000..f4bc3e72
--- /dev/null
+++ b/CTe.Classes/Simplificado/Carga/det.cs
@@ -0,0 +1,70 @@
+using CTe.Classes.Simplificado.Informacoes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Simplificado.Carga
+{
+ ///
+ /// Detalhamento de cada entrega/prestação do CT-e Simplificado.
+ ///
+ public class det
+ {
+ ///
+ /// Número do item na lista de detalhamento.
+ ///
+ [XmlAttribute(AttributeName = "nItem")]
+ public int nItem { get; set; }
+
+ ///
+ /// Código do Município de início da prestação (IBGE).
+ ///
+ [XmlElement(ElementName = "cMunIni")]
+ public int cMunIni { get; set; }
+
+ ///
+ /// Nome do Município do início da prestação.
+ ///
+ [XmlElement(ElementName = "xMunIni")]
+ public string xMunIni { get; set; }
+
+ ///
+ /// Código do Município de término da prestação (IBGE).
+ ///
+ [XmlElement(ElementName = "cMunFim")]
+ public int cMunFim { get; set; }
+
+ ///
+ /// Nome do Município do término da prestação.
+ ///
+ [XmlElement(ElementName = "xMunFim")]
+ public string xMunFim { get; set; }
+
+ ///
+ /// Valor da Prestação do Serviço.
+ ///
+ [XmlElement(ElementName = "vPrest")]
+ public decimal vPrest { get; set; }
+
+ ///
+ /// Valor a Receber.
+ ///
+ [XmlElement(ElementName = "vRec")]
+ public decimal vRec { get; set; }
+
+ ///
+ /// Componentes do valor da prestação.
+ ///
+ [XmlElement(ElementName = "Comp")]
+ public List Comp { get; set; }
+
+ ///
+ /// Informações das NF-e vinculadas à entrega.
+ ///
+ [XmlElement(ElementName = "infNFe")]
+ public List infNFe { get; set; }
+ }
+}
diff --git a/CTe.Classes/Simplificado/Carga/infCarga.cs b/CTe.Classes/Simplificado/Carga/infCarga.cs
new file mode 100644
index 00000000..8bb7e908
--- /dev/null
+++ b/CTe.Classes/Simplificado/Carga/infCarga.cs
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Simplificado.Carga
+{
+ ///
+ /// Informações da carga do CT-e.
+ ///
+ public class infCarga
+ {
+ ///
+ /// Valor total da carga.
+ ///
+ [XmlElement(ElementName = "vCarga")]
+ public decimal vCarga { get; set; }
+
+ ///
+ /// Produto predominante.
+ ///
+ [XmlElement(ElementName = "proPred")]
+ public string proPred { get; set; }
+
+ ///
+ /// Detalhamento dos itens da carga.
+ ///
+ [XmlElement(ElementName = "det")]
+ public List det { get; set; }
+ }
+}
diff --git a/CTe.Classes/Simplificado/Informacoes/infCte.cs b/CTe.Classes/Simplificado/Informacoes/infCte.cs
new file mode 100644
index 00000000..1a7f3661
--- /dev/null
+++ b/CTe.Classes/Simplificado/Informacoes/infCte.cs
@@ -0,0 +1,276 @@
+using CTe.Classes.Simplificado.Carga;
+using DFe.Utils;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Simplificado.Informacoes
+{
+ ///
+ /// Informações do CT-e.
+ ///
+ public class infCte
+ {
+ ///
+ /// Código da UF do emitente do CT-e. Utilizar a Tabela do IBGE.
+ ///
+ [XmlElement(ElementName = "cUF")]
+ public int cUf { get; set; }
+
+ ///
+ /// 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.
+ ///
+ [XmlElement(ElementName = "cCT")]
+ public string cCt { get; set; }
+
+ ///
+ /// Código Fiscal de Operações e Prestações.
+ ///
+ [XmlElement(ElementName = "CFOP")]
+ public string cfop { get; set; }
+
+ ///
+ /// Natureza da Operação.
+ ///
+ [XmlElement(ElementName = "natOp")]
+ public string natOp { get; set; }
+
+ ///
+ /// Modelo do documento fiscal. Utilizar o código 57 para identificação do CT-e.
+ ///
+ [XmlElement(ElementName = "mod")]
+ public int mod { get; set; }
+
+ ///
+ /// Série do CT-e. Preencher com "0" no caso de série única.
+ ///
+ [XmlElement(ElementName = "serie")]
+ public int serie { get; set; }
+
+ ///
+ /// Número do CT-e.
+ ///
+ [XmlElement(ElementName = "nCT")]
+ public string nCt { get; set; }
+
+ ///
+ /// Data e hora de emissão do CT-e.
+ ///
+ [XmlIgnore]
+ public DateTimeOffset? dhEmi { get; set; }
+
+ ///
+ /// Data e hora de emissão do CT-e. Formato AAAA-MM-DDTHH:MM:DD TZD.
+ ///
+ [XmlElement(ElementName = "dhEmi")]
+ public string DhEmi
+ {
+ get { return dhEmi.ParaDataHoraStringUtc(); }
+ set { dhEmi = DateTimeOffset.Parse(value); }
+ }
+
+ ///
+ /// Formato de impressão do DACTE. Preencher com: 1 - Retrato; 2 - Paisagem.
+ ///
+ [XmlElement(ElementName = "tpImp")]
+ public int tpImp { get; set; }
+
+ ///
+ /// Forma de emissão do CT-e.
+ ///
+ [XmlElement(ElementName = "tpEmis")]
+ public int tpEmis { get; set; }
+
+ ///
+ /// Dígito Verificador da chave de acesso do CT-e.
+ ///
+ [XmlElement(ElementName = "cDV")]
+ public int cDv { get; set; }
+
+ ///
+ /// Tipo do Ambiente. Preencher com: 1 - Produção; 2 - Homologação.
+ ///
+ [XmlElement(ElementName = "tpAmb")]
+ public int tpAmb { get; set; }
+
+ ///
+ /// Tipo do CT-e Simplificado. Preencher com:
+ /// 5 - CTe Simplificado;
+ /// 6 - Substituição CTe Simplificado.
+ ///
+ [XmlElement(ElementName = "tpCTe")]
+ public int tpCte { get; set; }
+
+ ///
+ /// Identificador do processo de emissão do CT-e.
+ ///
+ [XmlElement(ElementName = "procEmi")]
+ public int procEmi { get; set; }
+
+ ///
+ /// Versão do processo de emissão.
+ ///
+ [XmlElement(ElementName = "verProc")]
+ public string verProc { get; set; }
+
+ ///
+ /// Código do Município de envio do CT-e (de onde o documento foi transmitido). Utilizar a tabela do IBGE.
+ ///
+ [XmlElement(ElementName = "cMunEnv")]
+ public int cMunEnv { get; set; }
+
+ ///
+ /// Nome do Município de envio do CT-e (de onde o documento foi transmitido).
+ ///
+ [XmlElement(ElementName = "xMunEnv")]
+ public string xMunEnv { get; set; }
+
+ ///
+ /// Sigla da UF de envio do CT-e (de onde o documento foi transmitido).
+ ///
+ [XmlElement(ElementName = "UFEnv")]
+ public string ufEnv { get; set; }
+
+ ///
+ /// Modal. Preencher com:
+ /// 01-Rodoviário;
+ /// 02-Aéreo;
+ /// 03-Aquaviário.
+ ///
+ [XmlElement(ElementName = "modal")]
+ public string modal { get; set; }
+
+ ///
+ /// Tipo do Serviço. Preencher com:
+ /// 0 - Normal;
+ /// 1 - Subcontratação;
+ /// 2 - Redespacho.
+ ///
+ [XmlElement(ElementName = "tpServ")]
+ public int tpServ { get; set; }
+
+ ///
+ /// UF do início da prestação.
+ ///
+ [XmlElement(ElementName = "UFIni")]
+ public string ufIni { get; set; }
+
+ ///
+ /// UF do término da prestação.
+ ///
+ [XmlElement(ElementName = "UFFim")]
+ public string ufFim { get; set; }
+
+ ///
+ /// Indicador se o Recebedor retira no Aeroporto, Filial, Porto ou Estação de Destino.
+ /// Preencher com: 0 - sim; 1 - não.
+ ///
+ [XmlElement(ElementName = "retira")]
+ public int retira { get; set; }
+
+ ///
+ /// Detalhes do retira.
+ ///
+ [XmlElement(ElementName = "detRetira")]
+ public string detRetira { get; set; }
+
+ ///
+ /// Data e Hora da entrada em contingência.
+ ///
+ [XmlIgnore]
+ public DateTimeOffset? dhCont { get; set; }
+
+ ///
+ /// Data e Hora da entrada em contingência. Formato AAAA-MM-DDTHH:MM:SS.
+ ///
+ [XmlElement(ElementName = "dhCont")]
+ public string DhCont
+ {
+ get { return dhCont.ParaDataHoraStringUtc(); }
+ set { dhCont = DateTimeOffset.Parse(value); }
+ }
+
+ ///
+ /// Justificativa da entrada em contingência.
+ ///
+ [XmlElement(ElementName = "xJust")]
+ public string xJust { get; set; }
+
+ ///
+ /// Característica adicional do transporte.
+ ///
+ [XmlElement(ElementName = "caracAd")]
+ public string caracAd { get; set; }
+
+ ///
+ /// Característica adicional do serviço.
+ ///
+ [XmlElement(ElementName = "caracSer")]
+ public string caracSer { get; set; }
+
+ ///
+ /// Detalhamento das entregas/prestações do CT-e Simplificado.
+ ///
+ [XmlElement(ElementName = "detEntrega")]
+ public List detEntrega { get; set; }
+
+
+ ///
+ /// Detalhamento das entregas/prestações do CT-e Simplificado.
+ ///
+ [XmlElement(ElementName = "det")]
+ public List det { get; set; }
+
+ ///
+ /// Informações da carga do CT-e.
+ ///
+ [XmlElement(ElementName = "infCarga")]
+ public infCarga infCarga { get; set; }
+ }
+
+ ///
+ /// Detalhamento das entregas/prestações do CT-e Simplificado.
+ ///
+ public class DetEntrega
+ {
+ ///
+ /// Código do Município de início da prestação. Utilizar a tabela do IBGE.
+ ///
+ [XmlElement(ElementName = "cMunIni")]
+ public int cMunIni { get; set; }
+
+ ///
+ /// Nome do Município do início da prestação.
+ ///
+ [XmlElement(ElementName = "xMunIni")]
+ public string xMunIni { get; set; }
+
+ ///
+ /// Código do Município de término da prestação. Utilizar a tabela do IBGE.
+ ///
+ [XmlElement(ElementName = "cMunFim")]
+ public int cMunFim { get; set; }
+
+ ///
+ /// Nome do Município do término da prestação.
+ ///
+ [XmlElement(ElementName = "xMunFim")]
+ public string xMunFim { get; set; }
+
+ ///
+ /// Valor da Prestação do Serviço.
+ ///
+ [XmlElement(ElementName = "vPrest")]
+ public decimal vPrest { get; set; }
+
+ ///
+ /// Valor a Receber.
+ ///
+ [XmlElement(ElementName = "vRec")]
+ public decimal vRec { get; set; }
+ }
+}
diff --git a/CTe.Classes/Simplificado/Informacoes/infNFe.cs b/CTe.Classes/Simplificado/Informacoes/infNFe.cs
new file mode 100644
index 00000000..20da548e
--- /dev/null
+++ b/CTe.Classes/Simplificado/Informacoes/infNFe.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Simplificado.Informacoes
+{
+ ///
+ /// Informações da NF-e vinculada à entrega.
+ ///
+ public class infNFe
+ {
+ ///
+ /// Chave de acesso da NF-e.
+ ///
+ [XmlElement(ElementName = "chNFe")]
+ public string chNFe { get; set; }
+
+ ///
+ /// Data prevista de entrega.
+ ///
+ [XmlIgnore]
+ public DateTimeOffset? dPrev { get; set; }
+
+ ///
+ /// Data prevista de entrega (formato AAAA-MM-DD).
+ ///
+ [XmlElement(ElementName = "dPrev")]
+ public string DPrev
+ {
+ get { return dPrev?.ToString("yyyy-MM-dd"); }
+ set { dPrev = DateTimeOffset.Parse(value); }
+ }
+ }
+}
diff --git a/CTe.Classes/Simplificado/cteSimp.cs b/CTe.Classes/Simplificado/cteSimp.cs
new file mode 100644
index 00000000..ae6fd189
--- /dev/null
+++ b/CTe.Classes/Simplificado/cteSimp.cs
@@ -0,0 +1,35 @@
+using CTe.Classes.Simplificado.Informacoes;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CTe.Classes.Simplificado
+{
+ ///
+ /// Tipo Conhecimento de Transporte Eletrônico (Modelo 57) - Modelo Simplificado
+ ///
+ [XmlRoot("CTeSimp", Namespace = "http://www.portalfiscal.inf.br/cte")]
+ public class cteSimp
+ {
+ ///
+ /// Informações do CT-e
+ ///
+ [XmlElement("infCte")]
+ public infCte infCte { get; set; }
+
+ ///
+ /// Versão do leiaute
+ ///
+ [XmlAttribute("versao")]
+ public string versao { get; set; }
+
+ ///
+ /// Identificador da tag a ser assinada
+ ///
+ [XmlAttribute("Id")]
+ public string id { get; set; }
+ }
+}
diff --git a/CTe.Classes/cteSimpProc.cs b/CTe.Classes/cteSimpProc.cs
new file mode 100644
index 00000000..80bd219e
--- /dev/null
+++ b/CTe.Classes/cteSimpProc.cs
@@ -0,0 +1,73 @@
+using CTe.Classes.Protocolo;
+using CTe.Classes.Simplificado;
+using DFe.Utils;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Xml.Serialization;
+
+namespace CTe.Classes
+{
+ ///
+ /// CT-e Simplificado processado
+ ///
+ [XmlRoot("cteSimpProc", Namespace = "http://www.portalfiscal.inf.br/cte")]
+ public class cteSimpProc
+ {
+ ///
+ /// Representa o CT-e Simplificado
+ ///
+ [XmlElement("CTeSimp")]
+ public cteSimp cteSimp { get; set; }
+
+ ///
+ /// Representa o protocolo do CT-e
+ ///
+ [XmlElement("protCTe")]
+ public protCTe protCTe { get; set; }
+
+ ///
+ /// Versão do CT-e
+ ///
+ [XmlAttribute("versao")]
+ public string versao { get; set; }
+
+ ///
+ /// IP do transmissor do documento fiscal para o ambiente autorizador
+ ///
+ [XmlAttribute("ipTransmissor")]
+ public string ipTransmissor { get; set; }
+
+ ///
+ /// Porta de origem utilizada na conexão (De 0 a 65535)
+ ///
+ [XmlAttribute("nPortaCon")]
+ public string nPortaCon { get; set; }
+
+
+ [XmlIgnore]
+ public DateTimeOffset? dhConexao { get; set; }
+
+ ///
+ /// Data e Hora da Conexão de Origem
+ ///
+ [XmlElement(ElementName = "dhConexao")]
+ public string DhConexao
+ {
+ get { return dhConexao.ParaDataHoraStringUtc(); }
+ set { dhConexao = DateTimeOffset.Parse(value); }
+ }
+
+ public static cteSimpProc LoadXmlString(string xml)
+ {
+ return FuncoesXml.XmlStringParaClasse(xml);
+ }
+
+ public static cteSimpProc LoadXmlArquivo(string caminhoArquivoXml)
+ {
+ return FuncoesXml.ArquivoXmlParaClasse(caminhoArquivoXml);
+ }
+ }
+}