Skip to content

Commit

Permalink
Merge pull request #2 from ZeusAutomacao/master
Browse files Browse the repository at this point in the history
merge
  • Loading branch information
marcosgerene authored Feb 12, 2024
2 parents 68ea9a5 + 257663d commit a97ddc1
Show file tree
Hide file tree
Showing 37 changed files with 984 additions and 182 deletions.
30 changes: 25 additions & 5 deletions CTe.AppTeste/CTeTesteModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -615,6 +615,8 @@ private static void CarregarConfiguracoes(Configuracao config)
ConfiguracaoServico.Instancia.DiretorioSchemas = config.ConfigWebService.CaminhoSchemas;
ConfiguracaoServico.Instancia.IsSalvarXml = config.IsSalvarXml;
ConfiguracaoServico.Instancia.DiretorioSalvarXml = config.DiretorioSalvarXml;
ConfiguracaoServico.Instancia.IsAdicionaQrCode = true;
ConfiguracaoServico.Instancia.IsValidaSchemas = true;
}

public void ConsultarStatusServico2()
Expand Down Expand Up @@ -1436,8 +1438,9 @@ public void EmitirCteOs()

var cteOS = new CTeOS();

cteOS.versao = VersaoServico.Versao400;
cteOS.InfCte = new infCteOS();

cteOS.InfCte.versao = VersaoServico.Versao400;

#region ide
cteOS.InfCte.ide = new ideOs();
Expand Down Expand Up @@ -1516,6 +1519,14 @@ public void EmitirCteOs()
cteOS.InfCte.vPrest = new vPrestOs();
cteOS.InfCte.vPrest.vTPrest = 100m;
cteOS.InfCte.vPrest.vRec = 100m;
cteOS.InfCte.vPrest.Comp = new List<Classes.Informacoes.Complemento.Comp>()
{
new Classes.Informacoes.Complemento.Comp()
{
vComp = 1,
xNome = "teste"
}
};

#endregion

Expand Down Expand Up @@ -1548,19 +1559,28 @@ public void EmitirCteOs()
respSeg = respSeg.EmitenteDoCTe
});



cteOS.InfCte.infCTeNorm.infModal = new infModalOs();

cteOS.InfCte.infCTeNorm.infModal.versaoModal = versaoModal.veM300;
cteOS.InfCte.infCTeNorm.infModal.versaoModal = versaoModal.veM400;

var rodoviario = new rodoOS();
var rodoviario = new CTe.CTeOSDocumento.CTe.CTeOS.Informacoes.InfCTeNormal.rodoOS();

rodoviario.TAF = "888888888888";
//rodoviario.NroRegEstadual = "23632667367";


cteOS.InfCte.infCTeNorm.infModal.ContainerModal = rodoviario;

cteOS.InfCte.autXML = new List<autXML>()
{
new autXML()
{
CPF = "04483616048"
}
};

var xml = cteOS.ObterXmlString();

#endregion
}

Expand Down
2 changes: 1 addition & 1 deletion CTe.Classes/CTeOutrosServicos/CTeOS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class CTeOS
{
public CTeOS()
{
versao = VersaoServico.Versao300;
versao = VersaoServico.Versao400;
}

[XmlAttribute]
Expand Down
9 changes: 9 additions & 0 deletions CTe.Classes/CTeOutrosServicos/Informacoes/Emitente/emitOs.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,14 @@ public class emitOs
public string xFant { get; set; }

public enderEmit enderEmit { get; set; }

/// <summary>
/// Versão 4.00 é Obrigatório
/// </summary>
public CRT? CRT { get; set; }
/// <summary>
/// Se null, não aparece no xml
/// </summary>
public bool CRTSpecified { get { return CRT.HasValue; } }
}
}
3 changes: 2 additions & 1 deletion CTe.Classes/CTeOutrosServicos/Informacoes/infCteOS.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ public class infCteOS

public infCteAnu infCteAnu { get; set; }

public List<autXML> autXml { get; set; }
[XmlElement("autXML")]
public List<autXML> autXML { get; set; }

[XmlElement(ElementName = "infRespTec")]
public infRespTec infRespTec { get; set; }
Expand Down
19 changes: 18 additions & 1 deletion CTe.Classes/ConfiguracaoServico.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ public sealed class ConfiguracaoServico : IDisposable
private static volatile ConfiguracaoServico _instancia;
private static readonly object SyncRoot = new object();
private string _diretorioSchemas;
private bool _unZip = true;

public ConfiguracaoServico()
{
Expand Down Expand Up @@ -156,7 +157,23 @@ public string DiretorioSchemas
/// <summary>
/// Diretório onde os xmls de envio/retorno devem ser salvos
/// </summary>
public string DiretorioSalvarXml { get; set; }
public string DiretorioSalvarXml { get; set; }

/// <summary>
/// Valor True, será descompactado os arquivos,
/// Valor False, os valor não será descompactado e a classes não serão preenchidas
/// </summary>
public bool UnZip
{
get
{
return _unZip;
}
set
{
_unZip = value;
}
}

/// <summary>
/// Instância do Singleton de ConfiguracaoServico
Expand Down
10 changes: 8 additions & 2 deletions CTe.Classes/Informacoes/Complemento/Comp.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,20 @@
/* http://www.zeusautomacao.com.br/ */
/* Rua Comendador Francisco josé da Cunha, 111 - Itabaiana - SE - 49500-000 */
/********************************************************************************/
using DFe.Classes;

namespace CTe.Classes.Informacoes.Complemento
{
public class Comp
{
private string _xNome;
private double _vComp;
private decimal _vComp;

public string xNome { get { return _xNome; } set { _xNome = value; } }
public double vComp { get { return _vComp; } set { _vComp = value; } }
public decimal vComp
{
get { return _vComp.Arredondar(2); }
set { _vComp = value.Arredondar(2); }
}
}
}
59 changes: 44 additions & 15 deletions CTe.Servicos/DistribuicaoDFe/ServicoCTeDistribuicaoDFe.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,25 +33,40 @@



using System;
using System.IO;
using System.Reflection;
using System.Threading.Tasks;
using System.Xml;
using CTe.Classes;
using CTe.Classes.Servicos.DistribuicaoDFe;
using CTe.Servicos.Factory;
using CTe.Utils.DistribuicaoDFe;
using CTe.Utils;
using CTe.Wsdl.DistribuicaoDFe;
using DFe.Utils;
using Shared.DFe.Utils;
using System;
using System.IO;
using System.Reflection;
using System.Security.Cryptography.X509Certificates;
using System.Threading.Tasks;
using System.Xml;
using Compressao = DFe.Utils.Compressao;


namespace CTe.Servicos.DistribuicaoDFe
{
public class ServicoCTeDistribuicaoDFe
{
public ServicoCTeDistribuicaoDFe()
{

}

private readonly ConfiguracaoServico _configuracaoServico;
private readonly X509Certificate2 _certificado;
public ServicoCTeDistribuicaoDFe(ConfiguracaoServico configuracaoServico, X509Certificate2 certificado = null)
{
_configuracaoServico = configuracaoServico;
_certificado = certificado ?? configuracaoServico.X509Certificate2;
}


/// <summary>
/// Serviço destinado à distribuição de informações resumidas e documentos fiscais eletrônicos de interesse de um ator, seja este pessoa física ou jurídica.
/// </summary>
Expand All @@ -63,7 +78,7 @@ public class ServicoCTeDistribuicaoDFe
/// <returns>Retorna um objeto da classe CTeDistDFeInteresse com os documentos de interesse do CNPJ/CPF pesquisado</returns>
public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento, string ultNSU = "0", string nSU = "0", ConfiguracaoServico configuracaoServico = null)
{
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
var configServico = configuracaoServico ?? _configuracaoServico ?? ConfiguracaoServico.Instancia;
distDFeInt pedDistDFeInt;
XmlDocument dadosConsulta;
var ws = InicializaCTeDistDFeInteresse(documento, ultNSU, nSU, out pedDistDFeInt, out dadosConsulta, configServico);
Expand All @@ -78,11 +93,11 @@ public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento

#region Obtém um retDistDFeInt de cada evento e salva em arquivo

if (retConsulta.loteDistDFeInt != null)
if (retConsulta.loteDistDFeInt != null && configServico.UnZip)
{
for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++)
{
string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe);
string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe).RemoverDeclaracaoXml();
string chCTe = string.Empty;

if (conteudo.StartsWith("<cteProc"))
Expand All @@ -95,6 +110,15 @@ public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento
var procEventoNFeConteudo = FuncoesXml.XmlStringParaClasse<Classes.Servicos.DistribuicaoDFe.Schemas.procEventoCTe>(conteudo);
chCTe = procEventoNFeConteudo.eventoCTe.infEvento.chCTe;
}
else if (conteudo.StartsWith("<cteOSProc"))
{
var retConteudo = FuncoesXml.XmlStringParaClasse<CTe.CTeOSDocumento.CTe.CTeOS.Retorno.cteOSProc>(conteudo);
chCTe = retConteudo.protCTe.infProt.chCTe;
}
else
{

}

string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_');
if (chCTe == string.Empty)
Expand All @@ -111,7 +135,7 @@ public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento

public async Task<RetornoCteDistDFeInt> CTeDistDFeInteresseAsync(string ufAutor, string documento, string ultNSU = "0", string nSU = "0", ConfiguracaoServico configuracaoServico = null)
{
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
var configServico = configuracaoServico ?? _configuracaoServico ?? ConfiguracaoServico.Instancia;
distDFeInt pedDistDFeInt;
XmlDocument dadosConsulta;
var ws = InicializaCTeDistDFeInteresse(documento, ultNSU, nSU, out pedDistDFeInt, out dadosConsulta, configServico);
Expand All @@ -126,11 +150,11 @@ public async Task<RetornoCteDistDFeInt> CTeDistDFeInteresseAsync(string ufAutor,

#region Obtém um retDistDFeInt de cada evento e salva em arquivo

if (retConsulta.loteDistDFeInt != null)
if (retConsulta.loteDistDFeInt != null && configServico.UnZip)
{
for (int i = 0; i < retConsulta.loteDistDFeInt.Length; i++)
{
string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe);
string conteudo = Compressao.Unzip(retConsulta.loteDistDFeInt[i].XmlNfe).RemoverDeclaracaoXml();
string chCTe = string.Empty;

if (conteudo.StartsWith("<cteProc"))
Expand All @@ -143,6 +167,11 @@ public async Task<RetornoCteDistDFeInt> CTeDistDFeInteresseAsync(string ufAutor,
var procEventoNFeConteudo = FuncoesXml.XmlStringParaClasse<Classes.Servicos.DistribuicaoDFe.Schemas.procEventoCTe>(conteudo);
chCTe = procEventoNFeConteudo.eventoCTe.infEvento.chCTe;
}
else if (conteudo.StartsWith("<cteOSProc"))
{
var retConteudo = FuncoesXml.XmlStringParaClasse<CTe.CTeOSDocumento.CTe.CTeOS.Retorno.cteOSProc>(conteudo);
chCTe = retConteudo.protCTe.infProt.chCTe;
}

string[] schema = retConsulta.loteDistDFeInt[i].schema.Split('_');
if (chCTe == string.Empty)
Expand All @@ -164,7 +193,7 @@ private CTeDistDFeInteresse InicializaCTeDistDFeInteresse(string documento, stri

#region Cria o objeto wdsl para consulta

var ws = WsdlFactory.CriaWsdlCTeDistDFeInteresse(configuracaoServico);
var ws = WsdlFactory.CriaWsdlCTeDistDFeInteresse(configuracaoServico, _certificado);

#endregion

Expand All @@ -183,11 +212,11 @@ private CTeDistDFeInteresse InicializaCTeDistDFeInteresse(string documento, stri
pedDistDFeInt.CNPJ = documento;


pedDistDFeInt.distNSU = new distNSU {ultNSU = ultNSU.PadLeft(15, '0')};
pedDistDFeInt.distNSU = new distNSU { ultNSU = ultNSU.PadLeft(15, '0') };

if (!nSU.Equals("0"))
{
pedDistDFeInt.consNSU = new consNSU {NSU = nSU.PadLeft(15, '0')};
pedDistDFeInt.consNSU = new consNSU { NSU = nSU.PadLeft(15, '0') };
pedDistDFeInt.distNSU = null;
}

Expand Down
22 changes: 4 additions & 18 deletions CTe.Servicos/Enderecos/Helpers/UrlHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -310,21 +310,6 @@ private static UrlCTe UrlProducao(ConfiguracaoServico configuracaoServico)
QrCode = @"http://www.fazenda.pr.gov.br/cte/qrcode",
CTeDistribuicaoDFe = "https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx"
};
case Estado.RS:
return new UrlCTe
{
CteStatusServico =
@"https://cte.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx",
CteRetRecepcao = @"https://cte.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx",
CteRecepcao = @"https://cte.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx",
CteInutilizacao =
@"https://cte.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx",
CteRecepcaoEvento =
@"https://cte.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx",
CteConsulta = @"https://cte.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx",
QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode",
CTeDistribuicaoDFe = "https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx"
};
case Estado.SP:
if (configuracaoServico.VersaoLayout == versao.ve400)
{
Expand Down Expand Up @@ -373,6 +358,7 @@ private static UrlCTe UrlProducao(ConfiguracaoServico configuracaoServico)
case Estado.SC:
case Estado.SE:
case Estado.TO:
case Estado.RS:
if (configuracaoServico.VersaoLayout == versao.ve400)
{
return new UrlCTe
Expand All @@ -383,21 +369,21 @@ private static UrlCTe UrlProducao(ConfiguracaoServico configuracaoServico)
CteStatusServico = @"https://cte.svrs.rs.gov.br/ws/CTeStatusServicoV4/CTeStatusServicoV4.asmx",
CteRecepcaoOs = @"https://cte.svrs.rs.gov.br/ws/CTeRecepcaoOSV4/CTeRecepcaoOSV4.asmx",
CteRecepcaoGtve = @"https://cte.svrs.rs.gov.br/ws/CTeRecepcaoGTVeV4/CTeRecepcaoGTVeV4.asmx",
QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode"
QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode",
};
}

return new UrlCTe
{
CteStatusServico =
@"https://cte.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx",
CteConsulta = @"https://cte.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx",
@"https://cte.svrs.rs.gov.br/ws/ctestatusservico/CteStatusServico.asmx",
CteInutilizacao =
@"https://cte.svrs.rs.gov.br/ws/cteinutilizacao/cteinutilizacao.asmx",
CteRecepcao = @"https://cte.svrs.rs.gov.br/ws/cterecepcao/CteRecepcao.asmx",
CteRecepcaoEvento =
@"https://cte.svrs.rs.gov.br/ws/cterecepcaoevento/cterecepcaoevento.asmx",
CteRetRecepcao = @"https://cte.svrs.rs.gov.br/ws/cteretrecepcao/cteRetRecepcao.asmx",
CteConsulta = @"https://cte.svrs.rs.gov.br/ws/cteconsulta/CteConsulta.asmx",
QrCode = @"https://dfe-portal.svrs.rs.gov.br/cte/qrCode",
CTeDistribuicaoDFe = "https://www1.cte.fazenda.gov.br/CTeDistribuicaoDFe/CTeDistribuicaoDFe.asmx"
};
Expand Down
Loading

0 comments on commit a97ddc1

Please sign in to comment.