Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Garantindo que instancia de serviço na CTe esteja sempre instanciada e seja utilizada corretamente #26

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 27 additions & 21 deletions CTe.Servicos/ConsultaProtocolo/ConsultaProtcoloServico.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,54 +43,60 @@ public class ConsultaProtcoloServico
{
public retConsSitCTe ConsultaProtocolo(string chave, ConfiguracaoServico configuracaoServico = null)
{
var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configuracaoServico);
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;

if (configuracaoServico.IsValidaSchemas)
consSitCTe.ValidarSchema(configuracaoServico);
var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configServico);

consSitCTe.SalvarXmlEmDisco(configuracaoServico);
if (configServico.IsValidaSchemas)
consSitCTe.ValidarSchema(configServico);

var webService = WsdlFactory.CriaWsdlConsultaProtocolo(configuracaoServico);
consSitCTe.SalvarXmlEmDisco(configServico);

var webService = WsdlFactory.CriaWsdlConsultaProtocolo(configServico);
var retornoXml = webService.cteConsultaCT(consSitCTe.CriaRequestWs());

var retorno = retConsSitCTe.LoadXml(retornoXml.OuterXml, consSitCTe);
retorno.SalvarXmlEmDisco(chave, configuracaoServico);
retorno.SalvarXmlEmDisco(chave, configServico);

return retorno;
}

public retConsSitCTe ConsultaProtocoloV4(string chave, ConfiguracaoServico configuracaoServico = null)
{
var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configuracaoServico);
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;

var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configServico);

if (configuracaoServico.IsValidaSchemas)
consSitCTe.ValidarSchema(configuracaoServico);
if (configServico.IsValidaSchemas)
consSitCTe.ValidarSchema(configServico);

consSitCTe.SalvarXmlEmDisco(configuracaoServico);
consSitCTe.SalvarXmlEmDisco(configServico);

var webService = WsdlFactory.CriaWsdlConsultaProtocoloV4(configuracaoServico);
var webService = WsdlFactory.CriaWsdlConsultaProtocoloV4(configServico);
var retornoXml = webService.cteConsultaCT(consSitCTe.CriaRequestWs());

var retorno = retConsSitCTe.LoadXml(retornoXml.OuterXml, consSitCTe);
retorno.SalvarXmlEmDisco(chave, configuracaoServico);
retorno.SalvarXmlEmDisco(chave, configServico);

return retorno;
}

public async Task<retConsSitCTe> ConsultaProtocoloAsync(string chave, ConfiguracaoServico configuracaoServico = null)
{
var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configuracaoServico);

if (configuracaoServico.IsValidaSchemas)
consSitCTe.ValidarSchema(configuracaoServico);

consSitCTe.SalvarXmlEmDisco(configuracaoServico);

var webService = WsdlFactory.CriaWsdlConsultaProtocolo(configuracaoServico);
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;

var consSitCTe = ClassesFactory.CriarconsSitCTe(chave, configServico);

if (configServico.IsValidaSchemas)
consSitCTe.ValidarSchema(configServico);

consSitCTe.SalvarXmlEmDisco(configServico);

var webService = WsdlFactory.CriaWsdlConsultaProtocolo(configServico);
var retornoXml = await webService.cteConsultaCTAsync(consSitCTe.CriaRequestWs());

var retorno = retConsSitCTe.LoadXml(retornoXml.OuterXml, consSitCTe);
retorno.SalvarXmlEmDisco(chave, configuracaoServico);
retorno.SalvarXmlEmDisco(chave, configServico);

return retorno;
}
Expand Down
40 changes: 22 additions & 18 deletions CTe.Servicos/ConsultaRecibo/ConsultaReciboServico.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,36 +50,40 @@ public ConsultaReciboServico(string recibo)

public retConsReciCTe Consultar(ConfiguracaoServico configuracaoServico = null)
{
var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo, configuracaoServico);

if (configuracaoServico.IsValidaSchemas)
consReciCTe.ValidarSchema(configuracaoServico);

consReciCTe.SalvarXmlEmDisco(configuracaoServico);

var webService = WsdlFactory.CriaWsdlCteRetRecepcao(configuracaoServico);
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;

var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo, configServico);

if (configServico.IsValidaSchemas)
consReciCTe.ValidarSchema(configServico);

consReciCTe.SalvarXmlEmDisco(configServico);

var webService = WsdlFactory.CriaWsdlCteRetRecepcao(configServico);
var retornoXml = webService.cteRetRecepcao(consReciCTe.CriaRequestWs());

var retorno = retConsReciCTe.LoadXml(retornoXml.OuterXml, consReciCTe);
retorno.SalvarXmlEmDisco(configuracaoServico);
retorno.SalvarXmlEmDisco(configServico);

return retorno;
}

public async Task<retConsReciCTe> ConsultarAsync(ConfiguracaoServico configuracaoServico = null)
{
var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo, configuracaoServico);

if (configuracaoServico.IsValidaSchemas)
consReciCTe.ValidarSchema(configuracaoServico);

consReciCTe.SalvarXmlEmDisco(configuracaoServico);

var webService = WsdlFactory.CriaWsdlCteRetRecepcao(configuracaoServico);
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;

var consReciCTe = ClassesFactory.CriaConsReciCTe(_recibo, configServico);

if (configServico.IsValidaSchemas)
consReciCTe.ValidarSchema(configServico);

consReciCTe.SalvarXmlEmDisco(configServico);

var webService = WsdlFactory.CriaWsdlCteRetRecepcao(configServico);
var retornoXml = await webService.cteRetRecepcaoAsync(consReciCTe.CriaRequestWs());

var retorno = retConsReciCTe.LoadXml(retornoXml.OuterXml, consReciCTe);
retorno.SalvarXmlEmDisco(configuracaoServico);
retorno.SalvarXmlEmDisco(configServico);

return retorno;
}
Expand Down
1 change: 1 addition & 0 deletions CTe.Servicos/DistribuicaoDFe/ServicoCTeDistribuicaoDFe.cs
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ public ServicoCTeDistribuicaoDFe(ConfiguracaoServico configuracaoServico, X509Ce
public RetornoCteDistDFeInt CTeDistDFeInteresse(string ufAutor, string documento, string ultNSU = "0", string nSU = "0", ConfiguracaoServico configuracaoServico = null)
{
var configServico = configuracaoServico ?? _configuracaoServico ?? ConfiguracaoServico.Instancia;

distDFeInt pedDistDFeInt;
XmlDocument dadosConsulta;
var ws = InicializaCTeDistDFeInteresse(documento, ultNSU, nSU, out pedDistDFeInt, out dadosConsulta, configServico);
Expand Down
6 changes: 3 additions & 3 deletions CTe.Servicos/EnviarCte/ServicoEnviarCte.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ public class ServicoEnviarCte
public RetornoEnviarCte Enviar(int lote, Classes.CTe cte, ConfiguracaoServico configuracaoServico = null)
{
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;

ServicoCTeRecepcao servicoRecepcao = new ServicoCTeRecepcao();

retEnviCte retEnviCte = servicoRecepcao.CTeRecepcao(lote, new List<Classes.CTe> {cte}, configServico);
retEnviCte retEnviCte = servicoRecepcao.CTeRecepcao(lote, new List<Classes.CTe> { cte }, configServico);

if (retEnviCte.cStat != 103)
{
Expand All @@ -28,7 +28,6 @@ public RetornoEnviarCte Enviar(int lote, Classes.CTe cte, ConfiguracaoServico co

retConsReciCTe retConsReciCTe = servicoConsultaRecibo.Consultar(configServico);


cteProc cteProc = null;
if (retConsReciCTe.cStat == 104)
{
Expand All @@ -54,6 +53,7 @@ public RetornoEnviarCte Enviar(int lote, Classes.CTe cte, ConfiguracaoServico co
public async Task<RetornoEnviarCte> EnviarAsync(int lote, Classes.CTe cte, ConfiguracaoServico configuracaoServico = null)
{
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;

ServicoCTeRecepcao servicoRecepcao = new ServicoCTeRecepcao();

retEnviCte retEnviCte = await servicoRecepcao.CTeRecepcaoAsync(lote, new List<Classes.CTe> { cte }, configServico);
Expand Down
15 changes: 9 additions & 6 deletions CTe.Servicos/Eventos/EventoCancelamento.cs
Original file line number Diff line number Diff line change
Expand Up @@ -72,30 +72,33 @@ public EventoCancelamento(CteEletronicoOS cte, int sequenciaEvento, string numer

public retEventoCTe Cancelar(ConfiguracaoServico configuracaoServico = null)
{
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
var evento = ClassesFactory.CriaEvCancCTe(_justificativa, _numeroProtocolo);

EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, evento, configuracaoServico);
RetornoSefaz = new ServicoController().Executar(_cte, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configuracaoServico);
EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, evento, configServico);
RetornoSefaz = new ServicoController().Executar(_cte, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configServico);

return RetornoSefaz;
}

public retEventoCTe CancelarOs(ConfiguracaoServico configuracaoServico = null)
{
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
var evento = ClassesFactory.CriaEvCancCTe(_justificativa, _numeroProtocolo);

EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cteOs.Chave(), _cteOs.InfCte.emit.CNPJ, evento, configuracaoServico);
RetornoSefaz = new ServicoController().Executar(_cteOs, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configuracaoServico);
EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cteOs.Chave(), _cteOs.InfCte.emit.CNPJ, evento, configServico);
RetornoSefaz = new ServicoController().Executar(_cteOs, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configServico);

return RetornoSefaz;
}

public async Task<retEventoCTe> CancelarAsync(ConfiguracaoServico configuracaoServico = null)
{
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
var evento = ClassesFactory.CriaEvCancCTe(_justificativa, _numeroProtocolo);

EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, evento, configuracaoServico);
RetornoSefaz = await new ServicoController().ExecutarAsync(_cte, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configuracaoServico);
EventoEnviado = FactoryEvento.CriaEvento(CTeTipoEvento.Cancelamento, _sequenciaEvento, _cte.Chave(), _cte.infCte.emit.CNPJ, evento, configServico);
RetornoSefaz = await new ServicoController().ExecutarAsync(_cte, _sequenciaEvento, evento, CTeTipoEvento.Cancelamento, configServico);

return RetornoSefaz;
}
Expand Down
3 changes: 2 additions & 1 deletion CTe.Servicos/Eventos/FactoryEvento.cs
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ public class FactoryEvento
//Vou manter para evitar quebra de código pois a classe e o metodo são publicos
public static eventoCTe CriaEvento(CTeEletronico cte, CTeTipoEvento cTeTipoEvento, int sequenciaEvento, EventoContainer container, ConfiguracaoServico configuracaoServico = null)
{
return CriaEvento(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configuracaoServico);
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
return CriaEvento(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configServico);
}

public static eventoCTe CriaEvento(CTeTipoEvento cTeTipoEvento, int sequenciaEvento, string chave, string cnpj, EventoContainer container, ConfiguracaoServico configuracaoServico = null)
Expand Down
52 changes: 31 additions & 21 deletions CTe.Servicos/Eventos/ServicoController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,64 +50,74 @@ public class ServicoController : IServicoController
{
public retEventoCTe Executar(CteEletronico cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento cTeTipoEvento, ConfiguracaoServico configuracaoServico = null)
{
return Executar(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configuracaoServico);
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
return Executar(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configServico);
}

public retEventoCTe Executar(CteEletronicoOS cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento cTeTipoEvento, ConfiguracaoServico configuracaoServico = null)
{
return Executar(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.InfCte.emit.CNPJ, container, configuracaoServico);
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
return Executar(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.InfCte.emit.CNPJ, container, configServico);
}

public async Task<retEventoCTe> ExecutarAsync(CteEletronico cte, int sequenciaEvento, EventoContainer container, CTeTipoEvento cTeTipoEvento, ConfiguracaoServico configuracaoServico = null)
{
return await ExecutarAsync(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configuracaoServico);
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
return await ExecutarAsync(cTeTipoEvento, sequenciaEvento, cte.Chave(), cte.infCte.emit.CNPJ, container, configServico);
}

public retEventoCTe Executar(CTeTipoEvento cTeTipoEvento, int sequenciaEvento, string chave, string cnpj, EventoContainer container, ConfiguracaoServico configuracaoServico = null)
{
var evento = FactoryEvento.CriaEvento(cTeTipoEvento, sequenciaEvento, chave, cnpj, container, configuracaoServico);
evento.Assina(configuracaoServico);

var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;
var evento = FactoryEvento.CriaEvento(cTeTipoEvento, sequenciaEvento, chave, cnpj, container, configServico);
evento.Assina(configServico);

if (configuracaoServico.IsValidaSchemas)
evento.ValidarSchema(configuracaoServico);
evento.ValidarSchema(configServico);

evento.SalvarXmlEmDisco(configuracaoServico);
evento.SalvarXmlEmDisco(configServico);

XmlNode retornoXml = null;

if (evento.versao == versao.ve200 || evento.versao == versao.ve300)
{
var webService = WsdlFactory.CriaWsdlCteEvento(configuracaoServico);
var webService = WsdlFactory.CriaWsdlCteEvento(configServico);
retornoXml = webService.cteRecepcaoEvento(evento.CriaXmlRequestWs());
}

if (evento.versao == versao.ve400)
{
var webService = WsdlFactory.CriaWsdlCteEventoV4(configuracaoServico);
var webService = WsdlFactory.CriaWsdlCteEventoV4(configServico);
retornoXml = webService.cteRecepcaoEvento(evento.CriaXmlRequestWs());
}

var retorno = retEventoCTe.LoadXml(retornoXml.OuterXml, evento);
retorno.SalvarXmlEmDisco(configuracaoServico);
retorno.SalvarXmlEmDisco(configServico);

return retorno;
}

public async Task<retEventoCTe> ExecutarAsync(CTeTipoEvento cTeTipoEvento, int sequenciaEvento, string chave, string cnpj, EventoContainer container, ConfiguracaoServico configuracaoServico = null)
public async Task<retEventoCTe> ExecutarAsync(CTeTipoEvento cTeTipoEvento,
int sequenciaEvento,
string chave, string
cnpj, EventoContainer container,
ConfiguracaoServico configuracaoServico = null)
{
var evento = FactoryEvento.CriaEvento(cTeTipoEvento, sequenciaEvento, chave, cnpj, container, configuracaoServico);
evento.Assina(configuracaoServico);

if (configuracaoServico.IsValidaSchemas)
evento.ValidarSchema(configuracaoServico);

evento.SalvarXmlEmDisco(configuracaoServico);
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;

var evento = FactoryEvento.CriaEvento(cTeTipoEvento, sequenciaEvento, chave, cnpj, container, configServico);
evento.Assina(configServico);

if (configServico.IsValidaSchemas)
evento.ValidarSchema(configServico);

evento.SalvarXmlEmDisco(configServico);

var webService = WsdlFactory.CriaWsdlCteEvento(configuracaoServico);
var webService = WsdlFactory.CriaWsdlCteEvento(configServico);
var retornoXml = await webService.cteRecepcaoEventoAsync(evento.CriaXmlRequestWs());

var retorno = retEventoCTe.LoadXml(retornoXml.OuterXml, evento);
retorno.SalvarXmlEmDisco(configuracaoServico);
retorno.SalvarXmlEmDisco(configServico);

return retorno;
}
Expand Down
6 changes: 4 additions & 2 deletions CTe.Servicos/Factory/WsdlFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,9 +134,11 @@ public static CteRecepcaoEvento CriaWsdlCteEvento(ConfiguracaoServico configurac

public static CteRecepcaoEventoV4 CriaWsdlCteEventoV4(ConfiguracaoServico configuracaoServico = null, X509Certificate2 certificado = null)
{
var url = UrlHelper.ObterUrlServico(configuracaoServico).CteRecepcaoEvento;
var configServico = configuracaoServico ?? ConfiguracaoServico.Instancia;

var configuracaoWsdl = CriaConfiguracao(url, configuracaoServico, certificado);
var url = UrlHelper.ObterUrlServico(configServico).CteRecepcaoEvento;

var configuracaoWsdl = CriaConfiguracao(url, configServico, certificado);

return new CteRecepcaoEventoV4(configuracaoWsdl);
}
Expand Down
Loading
Loading