From d4b823ddeaf3d69a8df86929f62c3560d231603e Mon Sep 17 00:00:00 2001 From: Felipe Zorzo Date: Mon, 4 Sep 2023 11:00:24 -0300 Subject: [PATCH] =?UTF-8?q?Corre=C3=A7=C3=B5es=20diversas=20no=20CT-e=20(#?= =?UTF-8?q?918)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Corrigido schema cteTiposBasico_v4.00.xsd alterado indevidamente * Alterado CTeGeraChave e CTeGeraQRCode para aceitar CT-e OS * Adicionado CTeGeraChave e CTeGeraQRCode para o CT-e 4.00 * Corrigido para usar a url correta de recepção do CT-e OS 4.00 e corrigido nome do método * Alteradas tags de evento para não serem obrigatórias pois na consulta de CT-e a SEFAZ pode retornar eventos de marcação que não estão atualmente mapeados como, por exemplo, o evento "240130 - Autorizado CTe complementar" que vem com uma tag "evCTeComplementar" que não existe nos schemas do CT-e * A IE e a UF dentro de emiDocAnt (dados do emitente do documento de transporte anterior) são opcionais no CT-e de acordo com a definição dos schemas * Alterado atributo "versao" do CTeNotaConsultaRetorno para não ser obrigatório porque algumas UF não retornam esse atributo (mesmo sendo obrigatório nos schemas) * Mapeados atributos opcionais das tags cteProc e procEventoCTe que só estão documentadas no schema XSD * Ajustados stubs para não gerar prefixo de namespace nas tags pois a SEFAZ-MS estava recusando com "404 - Rejeicao: Uso de prefixo de namespace nao permitido" --------- Co-authored-by: Diego Fincatto <58352+fincatto@users.noreply.github.com> --- .../classes/evento/CTeDetalhamentoEvento.java | 18 ++-- ...AnterioresEmissorDocumentosAnteriores.java | 4 +- .../cte300/classes/nota/CTeProcessado.java | 24 +++++ .../nota/consulta/CTeNotaConsultaRetorno.java | 2 +- .../nota/consulta/CTeProtocoloEvento.java | 34 +++++++ .../cte300/classes/os/CTeOSProcessado.java | 24 +++++ .../cte300/utils/CTeGeraChave.java | 54 +++++++++-- .../cte300/utils/CTeGeraQRCode.java | 16 +++- .../classes/evento/CTeDetalhamentoEvento.java | 24 ++--- ...AnterioresEmissorDocumentosAnteriores.java | 4 +- .../cte400/classes/nota/CTeProcessado.java | 24 +++++ .../nota/consulta/CTeNotaConsultaRetorno.java | 2 +- .../nota/consulta/CTeProtocoloEvento.java | 34 +++++++ .../cte400/classes/os/CTeOSProcessado.java | 24 +++++ .../cte400/utils/CTeGeraChave.java | 94 +++++++++++++++++++ .../cte400/utils/CTeGeraQRCode.java | 38 ++++++++ .../cte400/webservices/WSFacade.java | 2 +- .../cte400/webservices/WSRecepcaoCTeOS.java | 2 +- .../webservices/gerado/CTeConsultaV4Stub.java | 8 +- .../gerado/CTeRecepcaoEventoV4Stub.java | 8 +- .../gerado/CTeRecepcaoOSV4Stub.java | 8 +- .../gerado/CTeRecepcaoSincV4Stub.java | 8 +- .../gerado/CTeStatusServicoV4Stub.java | 8 +- .../PL_CTe_400/cteTiposBasico_v4.00.xsd | 2 - 24 files changed, 406 insertions(+), 60 deletions(-) create mode 100644 src/main/java/com/fincatto/documentofiscal/cte400/utils/CTeGeraChave.java create mode 100644 src/main/java/com/fincatto/documentofiscal/cte400/utils/CTeGeraQRCode.java diff --git a/src/main/java/com/fincatto/documentofiscal/cte300/classes/evento/CTeDetalhamentoEvento.java b/src/main/java/com/fincatto/documentofiscal/cte300/classes/evento/CTeDetalhamentoEvento.java index 5e37d8b72..6f978f0ce 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte300/classes/evento/CTeDetalhamentoEvento.java +++ b/src/main/java/com/fincatto/documentofiscal/cte300/classes/evento/CTeDetalhamentoEvento.java @@ -13,9 +13,11 @@ import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; import org.simpleframework.xml.ElementUnion; +import org.simpleframework.xml.Root; import java.math.BigDecimal; +@Root(strict = false) public class CTeDetalhamentoEvento extends DFBase { private static final long serialVersionUID = 7006866358832001912L; @@ -23,14 +25,14 @@ public class CTeDetalhamentoEvento extends DFBase { private String versaoEvento; @ElementUnion({ - @Element(name = "evCancCECTe", type = CTeEnviaEventoCancelamentoComprovanteEntrega.class), - @Element(name = "evCancCTe", type = CTeEnviaEventoCancelamento.class), - @Element(name = "evCCeCTe", type = CTeEnviaEventoCartaCorrecao.class), - @Element(name = "evCECTe", type = CTeEnviaEventoComprovanteEntrega.class), - @Element(name = "evEPECCTe", type = CTeEnviaEventoEpec.class), - @Element(name = "evPrestDesacordo", type = CTeEnviaEventoPrestacaoEmDesacordo.class), - @Element(name = "evGTV", type = CTeEnviaEventoGtv.class), - @Element(name = "evRegMultimodal", type = CTeEnviaEventoRegistroMultimodal.class), + @Element(name = "evCancCECTe", type = CTeEnviaEventoCancelamentoComprovanteEntrega.class, required = false), + @Element(name = "evCancCTe", type = CTeEnviaEventoCancelamento.class, required = false), + @Element(name = "evCCeCTe", type = CTeEnviaEventoCartaCorrecao.class, required = false), + @Element(name = "evCECTe", type = CTeEnviaEventoComprovanteEntrega.class, required = false), + @Element(name = "evEPECCTe", type = CTeEnviaEventoEpec.class, required = false), + @Element(name = "evPrestDesacordo", type = CTeEnviaEventoPrestacaoEmDesacordo.class, required = false), + @Element(name = "evGTV", type = CTeEnviaEventoGtv.class, required = false), + @Element(name = "evRegMultimodal", type = CTeEnviaEventoRegistroMultimodal.class, required = false), }) private CTeTipoEvento evento; diff --git a/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/CTeNotaInfoCTeNormalDocumentosAnterioresEmissorDocumentosAnteriores.java b/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/CTeNotaInfoCTeNormalDocumentosAnterioresEmissorDocumentosAnteriores.java index a939784f2..903702fdc 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/CTeNotaInfoCTeNormalDocumentosAnterioresEmissorDocumentosAnteriores.java +++ b/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/CTeNotaInfoCTeNormalDocumentosAnterioresEmissorDocumentosAnteriores.java @@ -26,10 +26,10 @@ public class CTeNotaInfoCTeNormalDocumentosAnterioresEmissorDocumentosAnteriores @Element(name = "CPF", required = false) private String cpf; - @Element(name = "IE") + @Element(name = "IE", required = false) private String inscricaoEstadual; - @Element(name = "UF") + @Element(name = "UF", required = false) private String siglaUF; @Element(name = "xNome") diff --git a/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/CTeProcessado.java b/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/CTeProcessado.java index 7ace6fb43..4b6c2e5a2 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/CTeProcessado.java +++ b/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/CTeProcessado.java @@ -8,6 +8,8 @@ import com.fincatto.documentofiscal.cte300.classes.enviolote.consulta.CTeProtocolo; import org.simpleframework.xml.Namespace; +import java.time.ZonedDateTime; + /** * Created by Eldevan Nery Junior on 09/10/17. */ @@ -22,6 +24,12 @@ public class CTeProcessado extends DFBase { @Attribute(name = "ipTransmissor", required = false) private String ipTransmissor; + @Attribute(name = "nPortaCon", required = false) + private String portaConexao; + + @Attribute(name = "dhConexao", required = false) + private ZonedDateTime dataHoraConexao; + @Attribute(name = "versao") private String versao; @@ -39,6 +47,22 @@ public void setIpTransmissor(final String ipTransmissor) { this.ipTransmissor = ipTransmissor; } + public String getPortaConexao() { + return portaConexao; + } + + public void setPortaConexao(String portaConexao) { + this.portaConexao = portaConexao; + } + + public ZonedDateTime getDataHoraConexao() { + return dataHoraConexao; + } + + public void setDataHoraConexao(ZonedDateTime dataHoraConexao) { + this.dataHoraConexao = dataHoraConexao; + } + public String getVersao() { return this.versao; } diff --git a/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/consulta/CTeNotaConsultaRetorno.java b/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/consulta/CTeNotaConsultaRetorno.java index c29889a75..8074ba128 100755 --- a/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/consulta/CTeNotaConsultaRetorno.java +++ b/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/consulta/CTeNotaConsultaRetorno.java @@ -14,7 +14,7 @@ public class CTeNotaConsultaRetorno extends DFBase { private static final long serialVersionUID = 3229234247371007557L; - @Attribute(name = "versao") + @Attribute(name = "versao", required = false) private String versao; @Element(name = "tpAmb") diff --git a/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/consulta/CTeProtocoloEvento.java b/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/consulta/CTeProtocoloEvento.java index 79a46f22f..c72df9f36 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/consulta/CTeProtocoloEvento.java +++ b/src/main/java/com/fincatto/documentofiscal/cte300/classes/nota/consulta/CTeProtocoloEvento.java @@ -10,6 +10,7 @@ import org.simpleframework.xml.Root; import java.math.BigDecimal; +import java.time.ZonedDateTime; @Root(name = "procEventoCTe") @Namespace(reference = "http://www.portalfiscal.inf.br/cte") @@ -18,6 +19,15 @@ public class CTeProtocoloEvento extends DFBase { @Attribute(name = "versao") private String versao; + + @Attribute(name = "ipTransmissor", required = false) + private String ipTransmissor; + + @Attribute(name = "nPortaCon", required = false) + private String portaConexao; + + @Attribute(name = "dhConexao", required = false) + private ZonedDateTime dataHoraConexao; @Element(name = "eventoCTe") private CTeEvento evento; @@ -33,6 +43,30 @@ public void setVersao(final BigDecimal versao) { this.versao = DFBigDecimalValidador.tamanho4Com2CasasDecimais(versao, "Versao"); } + public String getIpTransmissor() { + return ipTransmissor; + } + + public void setIpTransmissor(String ipTransmissor) { + this.ipTransmissor = ipTransmissor; + } + + public String getPortaConexao() { + return portaConexao; + } + + public void setPortaConexao(String portaConexao) { + this.portaConexao = portaConexao; + } + + public ZonedDateTime getDataHoraConexao() { + return dataHoraConexao; + } + + public void setDataHoraConexao(ZonedDateTime dataHoraConexao) { + this.dataHoraConexao = dataHoraConexao; + } + public CTeEvento getEvento() { return this.evento; } diff --git a/src/main/java/com/fincatto/documentofiscal/cte300/classes/os/CTeOSProcessado.java b/src/main/java/com/fincatto/documentofiscal/cte300/classes/os/CTeOSProcessado.java index 07974fd42..d82265adc 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte300/classes/os/CTeOSProcessado.java +++ b/src/main/java/com/fincatto/documentofiscal/cte300/classes/os/CTeOSProcessado.java @@ -8,6 +8,8 @@ import org.simpleframework.xml.Namespace; import org.simpleframework.xml.Root; +import java.time.ZonedDateTime; + @Root(name = "cteOSProc") @Namespace(reference = CTeConfig.NAMESPACE) public class CTeOSProcessado extends DFBase { @@ -19,6 +21,12 @@ public class CTeOSProcessado extends DFBase { @Attribute(name = "ipTransmissor", required = false) private String ipTransmissor; + @Attribute(name = "nPortaCon", required = false) + private String portaConexao; + + @Attribute(name = "dhConexao", required = false) + private ZonedDateTime dataHoraConexao; + @Attribute(name = "versao") private String versao; @@ -36,6 +44,22 @@ public void setIpTransmissor(final String ipTransmissor) { this.ipTransmissor = ipTransmissor; } + public String getPortaConexao() { + return portaConexao; + } + + public void setPortaConexao(String portaConexao) { + this.portaConexao = portaConexao; + } + + public ZonedDateTime getDataHoraConexao() { + return dataHoraConexao; + } + + public void setDataHoraConexao(ZonedDateTime dataHoraConexao) { + this.dataHoraConexao = dataHoraConexao; + } + public String getVersao() { return this.versao; } diff --git a/src/main/java/com/fincatto/documentofiscal/cte300/utils/CTeGeraChave.java b/src/main/java/com/fincatto/documentofiscal/cte300/utils/CTeGeraChave.java index 140babec4..62a0f7a75 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte300/utils/CTeGeraChave.java +++ b/src/main/java/com/fincatto/documentofiscal/cte300/utils/CTeGeraChave.java @@ -1,23 +1,36 @@ package com.fincatto.documentofiscal.cte300.utils; -import org.apache.commons.lang3.StringUtils; - import com.fincatto.documentofiscal.cte300.classes.nota.CTeNota; +import com.fincatto.documentofiscal.cte300.classes.os.CTeOS; +import org.apache.commons.lang3.StringUtils; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Random; -import java.util.UUID; public class CTeGeraChave { private final CTeNota nota; - + private final CTeOS cteOS; + public CTeGeraChave(final CTeNota nota) { this.nota = nota; + this.cteOS = null; + } + + public CTeGeraChave(final CTeOS cteOS) { + this.nota = null; + this.cteOS = cteOS; } public String geraCodigoRandomico() { - final Random random = new Random(UUID.randomUUID().timestamp()); + long seed; + if (nota != null) { + seed = this.nota.getCteNotaInfo().getIdentificacao().getDataEmissao().toInstant().toEpochMilli(); + } else { + seed = this.cteOS.getInfo().getIdentificacao().getDataEmissao().toInstant().toEpochMilli(); + } + final Random random = new Random(seed); return StringUtils.leftPad(String.valueOf(random.nextInt(100000000)), 8, "0"); } @@ -46,9 +59,36 @@ public Integer getDV() { } private String geraChaveAcessoSemDV() { - if (StringUtils.isBlank(this.nota.getCteNotaInfo().getIdentificacao().getCodigoNumerico())) { + String codigoNumerico; + String codigoUF; + ZonedDateTime dataEmissao; + String cnpj; + String modelo; + String serie; + String numero; + String tipoEmissao; + if (nota != null) { + codigoUF = this.nota.getCteNotaInfo().getIdentificacao().getCodigoUF().getCodigoIbge(); + dataEmissao = this.nota.getCteNotaInfo().getIdentificacao().getDataEmissao(); + cnpj = this.nota.getCteNotaInfo().getEmitente().getCnpj(); + modelo = this.nota.getCteNotaInfo().getIdentificacao().getModelo().getCodigo(); + serie = this.nota.getCteNotaInfo().getIdentificacao().getSerie().toString(); + numero = this.nota.getCteNotaInfo().getIdentificacao().getNumero().toString(); + tipoEmissao = this.nota.getCteNotaInfo().getIdentificacao().getTipoEmissao().getCodigo(); + codigoNumerico = this.nota.getCteNotaInfo().getIdentificacao().getCodigoNumerico(); + } else { + codigoUF = this.cteOS.getInfo().getIdentificacao().getCodigoUF().getCodigoIbge(); + dataEmissao = this.cteOS.getInfo().getIdentificacao().getDataEmissao(); + cnpj = this.cteOS.getInfo().getEmitente().getCnpj(); + modelo = this.cteOS.getInfo().getIdentificacao().getModelo().getCodigo(); + serie = this.cteOS.getInfo().getIdentificacao().getSerie().toString(); + numero = this.cteOS.getInfo().getIdentificacao().getNumero().toString(); + tipoEmissao = this.cteOS.getInfo().getIdentificacao().getTipoEmissao().getCodigo(); + codigoNumerico = this.cteOS.getInfo().getIdentificacao().getCodigoNumerico(); + } + if (StringUtils.isBlank(codigoNumerico)) { throw new IllegalStateException("Codigo numerico deve estar presente para gerar a chave de acesso"); } - return StringUtils.leftPad(this.nota.getCteNotaInfo().getIdentificacao().getCodigoUF().getCodigoIbge(), 2, "0") + StringUtils.leftPad(DateTimeFormatter.ofPattern("yyMM").format(this.nota.getCteNotaInfo().getIdentificacao().getDataEmissao()), 4, "0") + StringUtils.leftPad(this.nota.getCteNotaInfo().getEmitente().getCnpj(), 14, "0") + StringUtils.leftPad(this.nota.getCteNotaInfo().getIdentificacao().getModelo().getCodigo(), 2, "0") + StringUtils.leftPad(this.nota.getCteNotaInfo().getIdentificacao().getSerie() + "", 3, "0") + StringUtils.leftPad(this.nota.getCteNotaInfo().getIdentificacao().getNumero() + "", 9, "0") + StringUtils.leftPad(this.nota.getCteNotaInfo().getIdentificacao().getTipoEmissao().getCodigo(), 1, "0") + StringUtils.leftPad(this.nota.getCteNotaInfo().getIdentificacao().getCodigoNumerico(), 8, "0"); + return StringUtils.leftPad(codigoUF, 2, "0") + StringUtils.leftPad(DateTimeFormatter.ofPattern("yyMM").format(dataEmissao), 4, "0") + StringUtils.leftPad(cnpj, 14, "0") + StringUtils.leftPad(modelo, 2, "0") + StringUtils.leftPad(serie, 3, "0") + StringUtils.leftPad(numero, 9, "0") + StringUtils.leftPad(tipoEmissao, 1, "0") + StringUtils.leftPad(codigoNumerico, 8, "0"); } } diff --git a/src/main/java/com/fincatto/documentofiscal/cte300/utils/CTeGeraQRCode.java b/src/main/java/com/fincatto/documentofiscal/cte300/utils/CTeGeraQRCode.java index fc2bc3fbe..d16d36ae2 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte300/utils/CTeGeraQRCode.java +++ b/src/main/java/com/fincatto/documentofiscal/cte300/utils/CTeGeraQRCode.java @@ -1,9 +1,10 @@ package com.fincatto.documentofiscal.cte300.utils; -import com.fincatto.documentofiscal.cte.CTeConfig; import com.fincatto.documentofiscal.cte.CTTipoEmissao; +import com.fincatto.documentofiscal.cte.CTeConfig; import com.fincatto.documentofiscal.cte300.classes.CTAutorizador31; import com.fincatto.documentofiscal.cte300.classes.nota.CTeNota; +import com.fincatto.documentofiscal.cte300.classes.os.CTeOS; import com.fincatto.documentofiscal.utils.DFAssinaturaDigital; public class CTeGeraQRCode { @@ -14,8 +15,7 @@ public CTeGeraQRCode(CTeConfig config) { this.config = config; } - public String getQRCode(CTeNota cTeNota) throws Exception { - String chaveAcesso = cTeNota.getCteNotaInfo().getChaveAcesso(); + private String getQRCode(String chaveAcesso) throws Exception { String url = CTAutorizador31.valueOfChaveAcesso(chaveAcesso).getCteQrCode(this.config.getAmbiente()); final StringBuilder parametros = new StringBuilder(); parametros.append("chCTe=").append(chaveAcesso).append("&"); @@ -26,5 +26,13 @@ public String getQRCode(CTeNota cTeNota) throws Exception { // retorna a url do qrcode return url + "?" + parametros.toString(); } - + + public String getQRCode(CTeNota cteNota) throws Exception { + return getQRCode(cteNota.getCteNotaInfo().getChaveAcesso()); + } + + public String getQRCode(CTeOS cteOS) throws Exception { + return getQRCode(cteOS.getInfo().getChaveAcesso()); + } + } diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/classes/evento/CTeDetalhamentoEvento.java b/src/main/java/com/fincatto/documentofiscal/cte400/classes/evento/CTeDetalhamentoEvento.java index dc115f45b..2dd490354 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/classes/evento/CTeDetalhamentoEvento.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/classes/evento/CTeDetalhamentoEvento.java @@ -16,9 +16,11 @@ import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; import org.simpleframework.xml.ElementUnion; +import org.simpleframework.xml.Root; import java.math.BigDecimal; +@Root(strict = false) public class CTeDetalhamentoEvento extends DFBase { private static final long serialVersionUID = 7006866358832001912L; @@ -26,17 +28,17 @@ public class CTeDetalhamentoEvento extends DFBase { private String versaoEvento; @ElementUnion({ - @Element(name = "evCancCECTe", type = CTeEnviaEventoCancelamentoComprovanteEntrega.class), - @Element(name = "evCancCTe", type = CTeEnviaEventoCancelamento.class), - @Element(name = "evCCeCTe", type = CTeEnviaEventoCartaCorrecao.class), - @Element(name = "evEPECCTe", type = CTeEnviaEventoEpec.class), - @Element(name = "evCECTe", type = CTeEnviaEventoComprovanteEntrega.class), - @Element(name = "evPrestDesacordo", type = CTeEnviaEventoPrestacaoEmDesacordo.class), - @Element(name = "evGTV", type = CTeEnviaEventoGtv.class), - @Element(name = "evRegMultimodal", type = CTeEnviaEventoRegistroMultimodal.class), - @Element(name = "evCancPrestDesacordo", type = CTeEnviaEventoCancelamentoPrestacaoEmDesacordo.class), - @Element(name = "evIECTe", type = CTeEnviaEventoInsucessoEntrega.class), - @Element(name = "evCancIECTe", type = CTeEnviaEventoCancelamentoInsucessoEntrega.class), + @Element(name = "evCancCECTe", type = CTeEnviaEventoCancelamentoComprovanteEntrega.class, required = false), + @Element(name = "evCancCTe", type = CTeEnviaEventoCancelamento.class, required = false), + @Element(name = "evCCeCTe", type = CTeEnviaEventoCartaCorrecao.class, required = false), + @Element(name = "evEPECCTe", type = CTeEnviaEventoEpec.class, required = false), + @Element(name = "evCECTe", type = CTeEnviaEventoComprovanteEntrega.class, required = false), + @Element(name = "evPrestDesacordo", type = CTeEnviaEventoPrestacaoEmDesacordo.class, required = false), + @Element(name = "evGTV", type = CTeEnviaEventoGtv.class, required = false), + @Element(name = "evRegMultimodal", type = CTeEnviaEventoRegistroMultimodal.class, required = false), + @Element(name = "evCancPrestDesacordo", type = CTeEnviaEventoCancelamentoPrestacaoEmDesacordo.class, required = false), + @Element(name = "evIECTe", type = CTeEnviaEventoInsucessoEntrega.class, required = false), + @Element(name = "evCancIECTe", type = CTeEnviaEventoCancelamentoInsucessoEntrega.class, required = false), }) private CTeTipoEvento evento; diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/CTeNotaInfoCTeNormalDocumentosAnterioresEmissorDocumentosAnteriores.java b/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/CTeNotaInfoCTeNormalDocumentosAnterioresEmissorDocumentosAnteriores.java index 6281f2d43..51c69df1b 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/CTeNotaInfoCTeNormalDocumentosAnterioresEmissorDocumentosAnteriores.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/CTeNotaInfoCTeNormalDocumentosAnterioresEmissorDocumentosAnteriores.java @@ -26,10 +26,10 @@ public class CTeNotaInfoCTeNormalDocumentosAnterioresEmissorDocumentosAnteriores @Element(name = "CPF", required = false) private String cpf; - @Element(name = "IE") + @Element(name = "IE", required = false) private String inscricaoEstadual; - @Element(name = "UF") + @Element(name = "UF", required = false) private String siglaUF; @Element(name = "xNome") diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/CTeProcessado.java b/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/CTeProcessado.java index e577cfc97..7ddac9ee2 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/CTeProcessado.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/CTeProcessado.java @@ -7,6 +7,8 @@ import org.simpleframework.xml.Namespace; import org.simpleframework.xml.Root; +import java.time.ZonedDateTime; + /** * Created by Eldevan Nery Junior on 09/10/17. */ @@ -21,6 +23,12 @@ public class CTeProcessado extends DFBase { @Attribute(name = "ipTransmissor", required = false) private String ipTransmissor; + @Attribute(name = "nPortaCon", required = false) + private String portaConexao; + + @Attribute(name = "dhConexao", required = false) + private ZonedDateTime dataHoraConexao; + @Attribute(name = "versao") private String versao; @@ -38,6 +46,22 @@ public void setIpTransmissor(final String ipTransmissor) { this.ipTransmissor = ipTransmissor; } + public String getPortaConexao() { + return portaConexao; + } + + public void setPortaConexao(String portaConexao) { + this.portaConexao = portaConexao; + } + + public ZonedDateTime getDataHoraConexao() { + return dataHoraConexao; + } + + public void setDataHoraConexao(ZonedDateTime dataHoraConexao) { + this.dataHoraConexao = dataHoraConexao; + } + public String getVersao() { return this.versao; } diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/consulta/CTeNotaConsultaRetorno.java b/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/consulta/CTeNotaConsultaRetorno.java index e73788a45..2e9b7b86d 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/consulta/CTeNotaConsultaRetorno.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/consulta/CTeNotaConsultaRetorno.java @@ -14,7 +14,7 @@ public class CTeNotaConsultaRetorno extends DFBase { private static final long serialVersionUID = 3229234247371007557L; - @Attribute(name = "versao") + @Attribute(name = "versao", required = false) private String versao; @Element(name = "tpAmb") diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/consulta/CTeProtocoloEvento.java b/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/consulta/CTeProtocoloEvento.java index 76920e2f2..039709159 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/consulta/CTeProtocoloEvento.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/classes/nota/consulta/CTeProtocoloEvento.java @@ -11,6 +11,7 @@ import org.simpleframework.xml.Root; import java.math.BigDecimal; +import java.time.ZonedDateTime; @Root(name = "procEventoCTe") @Namespace(reference = CTeConfig.NAMESPACE) @@ -19,6 +20,15 @@ public class CTeProtocoloEvento extends DFBase { @Attribute(name = "versao") private String versao; + + @Attribute(name = "ipTransmissor", required = false) + private String ipTransmissor; + + @Attribute(name = "nPortaCon", required = false) + private String portaConexao; + + @Attribute(name = "dhConexao", required = false) + private ZonedDateTime dataHoraConexao; @Element(name = "eventoCTe") private CTeEvento evento; @@ -34,6 +44,30 @@ public void setVersao(final BigDecimal versao) { this.versao = DFBigDecimalValidador.tamanho4Com2CasasDecimais(versao, "Versao"); } + public String getIpTransmissor() { + return ipTransmissor; + } + + public void setIpTransmissor(String ipTransmissor) { + this.ipTransmissor = ipTransmissor; + } + + public String getPortaConexao() { + return portaConexao; + } + + public void setPortaConexao(String portaConexao) { + this.portaConexao = portaConexao; + } + + public ZonedDateTime getDataHoraConexao() { + return dataHoraConexao; + } + + public void setDataHoraConexao(ZonedDateTime dataHoraConexao) { + this.dataHoraConexao = dataHoraConexao; + } + public CTeEvento getEvento() { return this.evento; } diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/classes/os/CTeOSProcessado.java b/src/main/java/com/fincatto/documentofiscal/cte400/classes/os/CTeOSProcessado.java index 04fa62d89..adebe7d5a 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/classes/os/CTeOSProcessado.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/classes/os/CTeOSProcessado.java @@ -8,6 +8,8 @@ import org.simpleframework.xml.Namespace; import org.simpleframework.xml.Root; +import java.time.ZonedDateTime; + @Root(name = "cteOSProc") @Namespace(reference = CTeConfig.NAMESPACE) public class CTeOSProcessado extends DFBase { @@ -19,6 +21,12 @@ public class CTeOSProcessado extends DFBase { @Attribute(name = "ipTransmissor", required = false) private String ipTransmissor; + @Attribute(name = "nPortaCon", required = false) + private String portaConexao; + + @Attribute(name = "dhConexao", required = false) + private ZonedDateTime dataHoraConexao; + @Attribute(name = "versao") private String versao; @@ -36,6 +44,22 @@ public void setIpTransmissor(final String ipTransmissor) { this.ipTransmissor = ipTransmissor; } + public String getPortaConexao() { + return portaConexao; + } + + public void setPortaConexao(String portaConexao) { + this.portaConexao = portaConexao; + } + + public ZonedDateTime getDataHoraConexao() { + return dataHoraConexao; + } + + public void setDataHoraConexao(ZonedDateTime dataHoraConexao) { + this.dataHoraConexao = dataHoraConexao; + } + public String getVersao() { return this.versao; } diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/utils/CTeGeraChave.java b/src/main/java/com/fincatto/documentofiscal/cte400/utils/CTeGeraChave.java new file mode 100644 index 000000000..26b978c3f --- /dev/null +++ b/src/main/java/com/fincatto/documentofiscal/cte400/utils/CTeGeraChave.java @@ -0,0 +1,94 @@ +package com.fincatto.documentofiscal.cte400.utils; + +import com.fincatto.documentofiscal.cte400.classes.nota.CTeNota; +import com.fincatto.documentofiscal.cte400.classes.os.CTeOS; +import org.apache.commons.lang3.StringUtils; + +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Random; + +public class CTeGeraChave { + + private final CTeNota nota; + private final CTeOS cteOS; + + public CTeGeraChave(final CTeNota nota) { + this.nota = nota; + this.cteOS = null; + } + + public CTeGeraChave(final CTeOS cteOS) { + this.nota = null; + this.cteOS = cteOS; + } + + public String geraCodigoRandomico() { + long seed; + if (nota != null) { + seed = this.nota.getCteNotaInfo().getIdentificacao().getDataEmissao().toInstant().toEpochMilli(); + } else { + seed = this.cteOS.getInfo().getIdentificacao().getDataEmissao().toInstant().toEpochMilli(); + } + final Random random = new Random(seed); + return StringUtils.leftPad(String.valueOf(random.nextInt(100000000)), 8, "0"); + } + + public String getChaveAcesso() { + return String.format("%s%s", this.geraChaveAcessoSemDV(), this.getDV()); + } + + public Integer getDV() { + final char[] valores = this.geraChaveAcessoSemDV().toCharArray(); + final int[] valoresInt = {2, 3, 4, 5, 6, 7, 8, 9}; + int indice = 0; + int soma = 0; + int valorTemp; + int multTemp; + for (int i = valores.length; i > 0; i--) { + if (indice >= valoresInt.length) { + indice = 0; + } + + valorTemp = Integer.parseInt(String.valueOf(valores[i - 1])); + multTemp = valoresInt[indice++]; + soma += valorTemp * multTemp; + } + final int dv = 11 - (soma % 11); + return ((dv == 11) || (dv == 10)) ? 0 : dv; + } + + private String geraChaveAcessoSemDV() { + String codigoNumerico; + String codigoUF; + ZonedDateTime dataEmissao; + String cnpj; + String modelo; + String serie; + String numero; + String tipoEmissao; + if (nota != null) { + codigoUF = this.nota.getCteNotaInfo().getIdentificacao().getCodigoUF().getCodigoIbge(); + dataEmissao = this.nota.getCteNotaInfo().getIdentificacao().getDataEmissao(); + cnpj = this.nota.getCteNotaInfo().getEmitente().getCnpj(); + modelo = this.nota.getCteNotaInfo().getIdentificacao().getModelo().getCodigo(); + serie = this.nota.getCteNotaInfo().getIdentificacao().getSerie().toString(); + numero = this.nota.getCteNotaInfo().getIdentificacao().getNumero().toString(); + tipoEmissao = this.nota.getCteNotaInfo().getIdentificacao().getTipoEmissao().getCodigo(); + codigoNumerico = this.nota.getCteNotaInfo().getIdentificacao().getCodigoNumerico(); + } else { + codigoUF = this.cteOS.getInfo().getIdentificacao().getCodigoUF().getCodigoIbge(); + dataEmissao = this.cteOS.getInfo().getIdentificacao().getDataEmissao(); + cnpj = this.cteOS.getInfo().getEmitente().getCnpj(); + modelo = this.cteOS.getInfo().getIdentificacao().getModelo().getCodigo(); + serie = this.cteOS.getInfo().getIdentificacao().getSerie().toString(); + numero = this.cteOS.getInfo().getIdentificacao().getNumero().toString(); + tipoEmissao = this.cteOS.getInfo().getIdentificacao().getTipoEmissao().getCodigo(); + codigoNumerico = this.cteOS.getInfo().getIdentificacao().getCodigoNumerico(); + } + if (StringUtils.isBlank(codigoNumerico)) { + throw new IllegalStateException("Codigo numerico deve estar presente para gerar a chave de acesso"); + } + return StringUtils.leftPad(codigoUF, 2, "0") + StringUtils.leftPad(DateTimeFormatter.ofPattern("yyMM").format(dataEmissao), 4, "0") + StringUtils.leftPad(cnpj, 14, "0") + StringUtils.leftPad(modelo, 2, "0") + StringUtils.leftPad(serie, 3, "0") + StringUtils.leftPad(numero, 9, "0") + StringUtils.leftPad(tipoEmissao, 1, "0") + StringUtils.leftPad(codigoNumerico, 8, "0"); + } +} diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/utils/CTeGeraQRCode.java b/src/main/java/com/fincatto/documentofiscal/cte400/utils/CTeGeraQRCode.java new file mode 100644 index 000000000..d68a6df48 --- /dev/null +++ b/src/main/java/com/fincatto/documentofiscal/cte400/utils/CTeGeraQRCode.java @@ -0,0 +1,38 @@ +package com.fincatto.documentofiscal.cte400.utils; + +import com.fincatto.documentofiscal.cte.CTTipoEmissao; +import com.fincatto.documentofiscal.cte.CTeConfig; +import com.fincatto.documentofiscal.cte400.classes.CTAutorizador400; +import com.fincatto.documentofiscal.cte400.classes.nota.CTeNota; +import com.fincatto.documentofiscal.cte400.classes.os.CTeOS; +import com.fincatto.documentofiscal.utils.DFAssinaturaDigital; + +public class CTeGeraQRCode { + + private final CTeConfig config; + + public CTeGeraQRCode(CTeConfig config) { + this.config = config; + } + + private String getQRCode(String chaveAcesso) throws Exception { + String url = CTAutorizador400.valueOfChaveAcesso(chaveAcesso).getCteQrCode(this.config.getAmbiente()); + final StringBuilder parametros = new StringBuilder(); + parametros.append("chCTe=").append(chaveAcesso).append("&"); + parametros.append("tpAmb=").append(this.config.getAmbiente().getCodigo()); + if(this.config.getTipoEmissao().equals(CTTipoEmissao.CONTINGENCIA_EPEC)){ + parametros.append("&sign=").append(new DFAssinaturaDigital(this.config).assinarString(chaveAcesso)); + } + // retorna a url do qrcode + return url + "?" + parametros.toString(); + } + + public String getQRCode(CTeNota cteNota) throws Exception { + return getQRCode(cteNota.getCteNotaInfo().getChaveAcesso()); + } + + public String getQRCode(CTeOS cteOS) throws Exception { + return getQRCode(cteOS.getInfo().getChaveAcesso()); + } + +} diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/WSFacade.java b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/WSFacade.java index 33123315b..56ca261bd 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/WSFacade.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/WSFacade.java @@ -565,7 +565,7 @@ public String getXmlAssinadoInsucessoEntrega(final String chave, final CTeEnviaE * @return dados do retorno do envio do CT-e OS e o xml assinado * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz * */ - public CTeOSEnvioRetornoDados envioRecepcaoLote(CTeOS cteOS) throws Exception { + public CTeOSEnvioRetornoDados enviaCTe(CTeOS cteOS) throws Exception { return this.wsRecepcaoCTeOS.enviaCTe(cteOS); } diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/WSRecepcaoCTeOS.java b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/WSRecepcaoCTeOS.java index 1c72cf20f..563de10e0 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/WSRecepcaoCTeOS.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/WSRecepcaoCTeOS.java @@ -45,7 +45,7 @@ private CTeOSEnvioRetorno comunicaLote(final String cteAssinadoXml) throws Excep dados.setCteDadosMsg(conteudoCompactado); final CTAutorizador400 autorizador = CTAutorizador400.valueOfTipoEmissao(this.config.getTipoEmissao(), this.config.getCUF()); - final String endpoint = autorizador.getCteRecepcaoSinc(this.config.getAmbiente()); + final String endpoint = autorizador.getCteRecepcaoOS(this.config.getAmbiente()); if (endpoint == null) { throw new IllegalArgumentException("Nao foi possivel encontrar URL para Recepcao OS, autorizador " + autorizador.name() + ", UF " + this.config.getCUF().name()); } diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeConsultaV4Stub.java b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeConsultaV4Stub.java index 4d2c22e19..352614c48 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeConsultaV4Stub.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeConsultaV4Stub.java @@ -332,7 +332,7 @@ public static Object getTypeObject( public static class CteConsultaCTResult implements org.apache.axis2.databinding.ADBBean { public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/cte/wsdl/CTeConsultaV4", - "cteConsultaCTResult", "ns1"); + "cteConsultaCTResult", ""); /** * field for ExtraElement @@ -420,7 +420,7 @@ private static String generatePrefix( String namespace) { if (namespace.equals( "http://www.portalfiscal.inf.br/cte/wsdl/CTeConsultaV4")) { - return "ns1"; + return ""; } return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); @@ -721,7 +721,7 @@ public static CteConsultaCTResult parse( public static class CteDadosMsg implements org.apache.axis2.databinding.ADBBean { public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/cte/wsdl/CTeConsultaV4", - "cteDadosMsg", "ns1"); + "cteDadosMsg", ""); /** * field for ExtraElement @@ -809,7 +809,7 @@ private static String generatePrefix( String namespace) { if (namespace.equals( "http://www.portalfiscal.inf.br/cte/wsdl/CTeConsultaV4")) { - return "ns1"; + return ""; } return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoEventoV4Stub.java b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoEventoV4Stub.java index e785b6e3a..1ea666284 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoEventoV4Stub.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoEventoV4Stub.java @@ -332,7 +332,7 @@ public static Object getTypeObject( public static class CteRecepcaoEventoResult implements org.apache.axis2.databinding.ADBBean { public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoEventoV4", - "cteRecepcaoEventoResult", "ns1"); + "cteRecepcaoEventoResult", ""); /** * field for ExtraElement @@ -420,7 +420,7 @@ private static String generatePrefix( String namespace) { if (namespace.equals( "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoEventoV4")) { - return "ns1"; + return ""; } return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); @@ -721,7 +721,7 @@ public static CteRecepcaoEventoResult parse( public static class CteDadosMsg implements org.apache.axis2.databinding.ADBBean { public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoEventoV4", - "cteDadosMsg", "ns1"); + "cteDadosMsg", ""); /** * field for ExtraElement @@ -809,7 +809,7 @@ private static String generatePrefix( String namespace) { if (namespace.equals( "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoEventoV4")) { - return "ns1"; + return ""; } return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoOSV4Stub.java b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoOSV4Stub.java index 3a182f686..42864be9c 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoOSV4Stub.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoOSV4Stub.java @@ -322,7 +322,7 @@ private java.lang.Object fromOM(org.apache.axiom.om.OMElement param, public static class CteRecepcaoOSResult implements org.apache.axis2.databinding.ADBBean { public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoOSV4", - "cteRecepcaoOSResult", "ns1"); + "cteRecepcaoOSResult", ""); /** * field for ExtraElement @@ -410,7 +410,7 @@ private static java.lang.String generatePrefix( java.lang.String namespace) { if (namespace.equals( "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoOSV4")) { - return "ns1"; + return ""; } return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); @@ -711,7 +711,7 @@ public static CteRecepcaoOSResult parse( public static class CteDadosMsg implements org.apache.axis2.databinding.ADBBean { public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoOSV4", - "cteDadosMsg", "ns1"); + "cteDadosMsg", ""); /** * field for CteDadosMsg @@ -798,7 +798,7 @@ private static java.lang.String generatePrefix( java.lang.String namespace) { if (namespace.equals( "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoOSV4")) { - return "ns1"; + return ""; } return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoSincV4Stub.java b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoSincV4Stub.java index 8200baa0d..f7b8f3e22 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoSincV4Stub.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeRecepcaoSincV4Stub.java @@ -323,7 +323,7 @@ private Object fromOM(org.apache.axiom.om.OMElement param, //https://cte-homologacao.svrs.rs.gov.br/ws/CTeRecepcaoSincV4/CTeRecepcaoSincV4.asmx public static class CteRecepcaoResult implements org.apache.axis2.databinding.ADBBean { public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoSincV4", - "cteRecepcaoResult", "ns1"); + "cteRecepcaoResult", ""); /** * field for ExtraElement @@ -411,7 +411,7 @@ private static String generatePrefix( String namespace) { if (namespace.equals( "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoSincV4")) { - return "ns1"; + return ""; } return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); @@ -712,7 +712,7 @@ public static CteRecepcaoResult parse( public static class CteDadosMsg implements org.apache.axis2.databinding.ADBBean { public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoSincV4", - "cteDadosMsg", "ns1"); + "cteDadosMsg", ""); /** * field for CteDadosMsg @@ -799,7 +799,7 @@ private static String generatePrefix( String namespace) { if (namespace.equals( "http://www.portalfiscal.inf.br/cte/wsdl/CTeRecepcaoSincV4")) { - return "ns1"; + return ""; } return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); diff --git a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeStatusServicoV4Stub.java b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeStatusServicoV4Stub.java index 6d97cd468..6dc5d1731 100644 --- a/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeStatusServicoV4Stub.java +++ b/src/main/java/com/fincatto/documentofiscal/cte400/webservices/gerado/CTeStatusServicoV4Stub.java @@ -332,7 +332,7 @@ public static java.lang.Object getTypeObject( public static class CteStatusServicoCTResult implements org.apache.axis2.databinding.ADBBean { public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/cte/wsdl/CTeStatusServicoV4", - "cteStatusServicoCTResult", "ns1"); + "cteStatusServicoCTResult", ""); /** * field for ExtraElement @@ -420,7 +420,7 @@ private static java.lang.String generatePrefix( java.lang.String namespace) { if (namespace.equals( "http://www.portalfiscal.inf.br/cte/wsdl/CTeStatusServicoV4")) { - return "ns1"; + return ""; } return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); @@ -721,7 +721,7 @@ public static CteStatusServicoCTResult parse( public static class CteDadosMsg implements org.apache.axis2.databinding.ADBBean { public static final javax.xml.namespace.QName MY_QNAME = new javax.xml.namespace.QName("http://www.portalfiscal.inf.br/cte/wsdl/CTeStatusServicoV4", - "cteDadosMsg", "ns1"); + "cteDadosMsg", ""); /** * field for ExtraElement @@ -809,7 +809,7 @@ private static java.lang.String generatePrefix( java.lang.String namespace) { if (namespace.equals( "http://www.portalfiscal.inf.br/cte/wsdl/CTeStatusServicoV4")) { - return "ns1"; + return ""; } return org.apache.axis2.databinding.utils.BeanUtil.getUniquePrefix(); diff --git a/src/main/resources/schemas/PL_CTe_400/cteTiposBasico_v4.00.xsd b/src/main/resources/schemas/PL_CTe_400/cteTiposBasico_v4.00.xsd index 6609f381e..3cf5e8845 100644 --- a/src/main/resources/schemas/PL_CTe_400/cteTiposBasico_v4.00.xsd +++ b/src/main/resources/schemas/PL_CTe_400/cteTiposBasico_v4.00.xsd @@ -4515,8 +4515,6 @@ Onde v9.99 é a a designação genérica para a versão do arquivo. Por exemplo, -, -