All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.fincatto.documentofiscal.cte300.webservices.WSFacade Maven / Gradle / Ivy

There is a newer version: 4.0.78
Show newest version
package com.fincatto.documentofiscal.cte300.webservices;

import com.fincatto.documentofiscal.DFModelo;
import com.fincatto.documentofiscal.DFUnidadeFederativa;
import com.fincatto.documentofiscal.cte.CTeConfig;
import com.fincatto.documentofiscal.cte.classes.distribuicao.CTDistribuicaoIntRetorno;
import com.fincatto.documentofiscal.cte.webservices.distribuicao.WSDistribuicaoCTe;
import com.fincatto.documentofiscal.cte300.classes.consultastatusservico.CTeConsStatServRet;
import com.fincatto.documentofiscal.cte300.classes.envio.CTeOSEnvioRetornoDados;
import com.fincatto.documentofiscal.cte300.classes.enviolote.CTeEnvioLote;
import com.fincatto.documentofiscal.cte300.classes.enviolote.CTeEnvioLoteRetornoDados;
import com.fincatto.documentofiscal.cte300.classes.enviolote.consulta.CTeConsultaRecLoteRet;
import com.fincatto.documentofiscal.cte300.classes.evento.CTeEventoRetorno;
import com.fincatto.documentofiscal.cte300.classes.evento.cartacorrecao.CTeInformacaoCartaCorrecao;
import com.fincatto.documentofiscal.cte300.classes.evento.comprovanteentrega.CTeEnviaEventoComprovanteEntrega;
import com.fincatto.documentofiscal.cte300.classes.evento.epec.CTeEnviaEventoEpec;
import com.fincatto.documentofiscal.cte300.classes.evento.gtv.CTeEnviaEventoGtv;
import com.fincatto.documentofiscal.cte300.classes.evento.inutilizacao.CTeRetornoEventoInutilizacao;
import com.fincatto.documentofiscal.cte300.classes.nota.consulta.CTeNotaConsultaRetorno;
import com.fincatto.documentofiscal.cte300.classes.os.CTeOS;
import com.fincatto.documentofiscal.utils.DFSocketFactory;
import org.apache.commons.httpclient.protocol.Protocol;

import java.io.IOException;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.util.List;

public class WSFacade {

    private final WSStatusConsulta wsStatusConsulta;
    private final WSRecepcaoLote wsRecepcaoLote;
    private final WSNotaConsulta wsNotaConsulta;
    private final WSCancelamento wsCancelamento;
    private final WSInutilizacao wsInutilizacao;
    private final WSDistribuicaoCTe wSDistribuicaoCTe;
    private final WSRecepcaoLoteRetorno wsRecepcaoLoteRetorno;
    private final WSPrestacaoEmDesacordo wsPrestacaoEmDesacordo;
    private final WSRegistroMultimodal wsRegistroMultimodal;
    private final WSCartaCorrecao wsCartaCorrecao;
    private final WSComprovanteEntrega wsComprovanteEntrega;
    private final WSCancelamentoComprovanteEntrega wsCancelamentoComprovanteEntrega;
    private final WSEpec wsEpec;
    private final WSGtv wsGtv;
    private final WSRecepcaoCTeOS wsRecepcaoCTeOS;

    public WSFacade(final CTeConfig config) throws IOException, KeyManagementException, UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException, CertificateException {
        Protocol.registerProtocol("https", new Protocol("https", new DFSocketFactory(config), 443));
        this.wsStatusConsulta = new WSStatusConsulta(config);
        this.wsRecepcaoLote = new WSRecepcaoLote(config);
        this.wsRecepcaoLoteRetorno = new WSRecepcaoLoteRetorno(config);
        this.wsNotaConsulta = new WSNotaConsulta(config);
        this.wsCancelamento = new WSCancelamento(config);
        this.wsInutilizacao = new WSInutilizacao(config);
        this.wSDistribuicaoCTe = new WSDistribuicaoCTe(config);
        this.wsPrestacaoEmDesacordo = new WSPrestacaoEmDesacordo(config);
        this.wsRegistroMultimodal = new WSRegistroMultimodal(config);
        this.wsCartaCorrecao = new WSCartaCorrecao(config);
        this.wsComprovanteEntrega = new WSComprovanteEntrega(config);
        this.wsCancelamentoComprovanteEntrega = new WSCancelamentoComprovanteEntrega(config);
        this.wsEpec = new WSEpec(config);
        this.wsGtv = new WSGtv(config);
        this.wsRecepcaoCTeOS = new WSRecepcaoCTeOS(config);
    }

    /**
     * Faz a consulta de status responsavel pela UF
     *
     * @param uf uf UF que deseja consultar o status do sefaz responsavel
     * @return dados da consulta de status retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeConsStatServRet consultaStatus(final DFUnidadeFederativa uf) throws Exception {
        return this.wsStatusConsulta.consultaStatus(uf);
    }

    /**
     * Faz o envio do lote para a SEFAZ
     *
     * @param cteRecepcao a ser eviado para a SEFAZ
     * @return dados do retorno do envio do lote e o xml assinado
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     * */
    public CTeEnvioLoteRetornoDados envioRecepcaoLote(CTeEnvioLote cteRecepcao) throws Exception {
        return this.wsRecepcaoLote.envioRecepcao(cteRecepcao);
    }

    /**
     * Faz a consulta do processamento do lote na SEFAZ
     *
     * @param numRecibo do recebimento do lote
     * @return dados da consulta do processamento do lote
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     * */
    public CTeConsultaRecLoteRet consultaEnvioRecepcaoLote(String numRecibo) throws Exception {
        return this.wsRecepcaoLoteRetorno.consultaLote(numRecibo);
    }

    /**
     * Faz a consulta do CTe
     *
     * @param chaveDeAcesso chave de acesso do cte
     * @return dados da consulta da nota retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeNotaConsultaRetorno consultaNota(final String chaveDeAcesso) throws Exception {
        return this.wsNotaConsulta.consultaNota(chaveDeAcesso);
    }

    /**
     * Faz o cancelamento do CTe
     *
     * @param chave     chave de acesso da nota
     * @param numeroProtocolo numero do protocolo da nota
     * @param motivo          motivo do cancelamento
     * @return dados do cancelamento da nota retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno cancelaNota(final String chave, final String numeroProtocolo, final String motivo) throws Exception {
        return this.wsCancelamento.cancelaNota(chave, numeroProtocolo, motivo);
    }

    /**
     * Faz o cancelamento da nota com evento ja assinado
     * ATENCAO: Esse metodo deve ser utilizado para assinaturas A3
     *
     * @param chave       chave de acesso da nota
     * @param eventoAssinadoXml evento ja assinado em formato XML
     * @return dados do cancelamento da nota retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno cancelaNotaAssinada(final String chave, final String eventoAssinadoXml) throws Exception {
        return this.wsCancelamento.cancelaNotaAssinada(chave, eventoAssinadoXml);
    }

    /**
     * Gera o XML assinado do cancelamento sem enviar para a SEFAZ.
     * @param chave           chave de acesso do CT-e
     * @param numeroProtocolo numero do protocolo da nota
     * @param motivo          motivo do cancelamento
     * @return O XML da requisicao de registro multimodal ja assinado
     * @throws Exception caso nao consiga gerar o xml
     */
    public String getXmlAssinadoCancelamento(final String chave, final String numeroProtocolo, final String motivo) throws Exception {
        return this.wsCancelamento.getXmlAssinado(chave, numeroProtocolo, motivo);
    }

    /**
     * Inutiliza o CTE com o evento assinado ATENCAO: Esse metodo deve ser utilizado para assinaturas A3
     * @param eventoAssinadoXml evento assinado em XML
     * @param modelo modelo do CTE
     * @return dados da inutilizacao do CTE retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeRetornoEventoInutilizacao inutilizaNotaAssinada(final String eventoAssinadoXml, final DFModelo modelo) throws Exception {
        return this.wsInutilizacao.inutilizaNotaAssinada(eventoAssinadoXml, modelo);
    }

    /**
     * Inutiliza o CTE
     * @param anoInutilizacaoNumeracao ano de inutilizacao
     * @param cnpjEmitente CNPJ emitente da nota
     * @param serie serie da nota
     * @param numeroInicial numero inicial da nota
     * @param numeroFinal numero final da nota
     * @param justificativa justificativa da inutilizacao
     * @param modelo modelo da nota (NF-e ou NFC-e)
     * @return dados da inutilizacao da nota retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeRetornoEventoInutilizacao inutilizaNota(final int anoInutilizacaoNumeracao, final String cnpjEmitente, final String serie, final String numeroInicial, final String numeroFinal, final String justificativa, final DFModelo modelo) throws Exception {
        return this.wsInutilizacao.inutilizaNota(anoInutilizacaoNumeracao, cnpjEmitente, serie, numeroInicial, numeroFinal, justificativa, modelo);
    }

    /**
     * Gera o XML assinado da inutilizacao sem enviar para a SEFAZ.
     * @param anoInutilizacaoNumeracao ano de inutilizacao
     * @param cnpjEmitente CNPJ emitente da nota
     * @param serie serie da nota
     * @param numeroInicial numero inicial da nota
     * @param numeroFinal numero final da nota
     * @param justificativa justificativa da inutilizacao
     * @param modelo modelo da nota (NF-e ou NFC-e)
     * @return O XML da requisicao de inutilizacao ja assinado
     * @throws Exception caso nao consiga gerar o xml
     */
    public String getXmlAssinadoInutilizacao(final int anoInutilizacaoNumeracao, final String cnpjEmitente, final String serie, final String numeroInicial, final String numeroFinal, final String justificativa, final DFModelo modelo) throws Exception {
        return this.wsInutilizacao.getXmlAssinado(anoInutilizacaoNumeracao, cnpjEmitente, serie, numeroInicial, numeroFinal, justificativa, modelo);
    }

    /**
     * Faz consulta de distribuicao dos CTe.
     * Pode ser feita utilizando o CTe (numero sequencial unico) da receita.
     * @param cpfOuCnpj CPF ou CNPJ da pessoa fisica ou juridica a consultar
     * @param uf Unidade federativa da pessoa juridica a consultar
     * @param nsu Número Sequencial Único. Geralmente esta consulta será
     * utilizada quando identificado pelo interessado um NSU faltante. O Web
     * Service retornará o documento ou informará que o NSU não existe no
     * Ambiente Nacional. Assim, esta consulta fechará a lacuna do NSU
     * identificado como faltante.
     * @param ultNsu Último NSU recebido pelo ator. Caso seja informado com
     * zero, ou com um NSU muito antigo, a consulta retornará unicamente as
     * informações resumidas e documentos fiscais eletrônicos que tenham sido
     * recepcionados pelo Ambiente Nacional nos últimos 3 meses.
     * @return dados da consulta retornado pelo webservice limitando um total de
     * 50 registros
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com
     * o sefaz
     */
    public CTDistribuicaoIntRetorno consultarDistribuicaoCTe(final String cpfOuCnpj, final DFUnidadeFederativa uf, final String nsu, final String ultNsu) throws Exception {
        return this.wSDistribuicaoCTe.consultar(cpfOuCnpj, uf, nsu, ultNsu);
    }

    /**
     * Cancela um evento de comprovante de entrega enviado anteriormente.
     *
     * @param chave                       chave de acesso do CT-e
     * @param protocoloAutorizacao        protocolo de autorizacao
     * @param protocoloComprovanteEntrega protocolo do comprovante de entrega
     * @param sequencialEvento            sequencial do evento
     * @return dados do cancelamento do comprovante de entrega retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno cancelaComprovanteEntrega(final String chave, final String protocoloAutorizacao, final String protocoloComprovanteEntrega, final int sequencialEvento) throws Exception {
        return this.wsCancelamentoComprovanteEntrega.cancelaComprovanteEntrega(chave, protocoloAutorizacao, protocoloComprovanteEntrega, sequencialEvento);
    }

    /**
     * Cancela um evento de comprovante de entrega enviado anteriormente.
     * ATENCAO: Esse metodo deve ser utilizado para assinaturas A3
     *
     * @param chave             chave de acesso do CT-e
     * @param eventoAssinadoXml evento ja assinado em formato XML
     * @return dados do cancelamento do comprovante de entrega retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno cancelaComprovanteEntregaAssinado(final String chave, final String eventoAssinadoXml) throws Exception {
        return this.wsCancelamentoComprovanteEntrega.cancelaComprovanteEntregaAssinado(chave, eventoAssinadoXml);
    }

    /**
     * Gera o XML assinado do cancelamento do comprovante de entrega sem enviar para a SEFAZ.
     * @param chave                       chave de acesso do CT-e
     * @param protocoloAutorizacao        protocolo de autorizacao
     * @param protocoloComprovanteEntrega protocolo do comprovante de entrega
     * @param sequencialEvento            sequencial do evento
     * @return O XML da requisicao de cancelamento do comprovante de entrega ja assinado
     * @throws Exception caso nao consiga gerar o xml
     */
    public String getXmlAssinadoCancelamentoComprovanteEntrega(final String chave, final String protocoloAutorizacao, final String protocoloComprovanteEntrega, final int sequencialEvento) throws Exception {
        return this.wsCancelamentoComprovanteEntrega.getXmlAssinado(chave, protocoloAutorizacao, protocoloComprovanteEntrega, sequencialEvento);
    }

    /**
     * Faz a correcao do CT-e.
     *
     * @param chave              chave de acesso do CT-e
     * @param grupoAlterado      grupo de informações que pertence o campo que será alterado
     * @param campoAlterado      campo que será alterado
     * @param valorAlterado      novo valor que deve ser utilizado para o campo
     * @param numeroItemAlterado o índice do item alterado caso a alteração ocorra em uma lista
     * @param sequencialEvento   sequencial do evento
     * @return dados da carta de correção retornada pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno corrigeNota(final String chave, String grupoAlterado, String campoAlterado, String valorAlterado, Integer numeroItemAlterado, int sequencialEvento) throws Exception {
        return this.wsCartaCorrecao.corrigeNota(chave, grupoAlterado, campoAlterado, valorAlterado, numeroItemAlterado, sequencialEvento);
    }

    /**
     * Faz a correcao do CT-e.
     *
     * @param chave            chave de acesso do CT-e
     * @param correcoes        lista de correções a serem efetuadas no CT-e
     * @param sequencialEvento sequencial do evento
     * @return dados da carta de correção retornada pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno corrigeNota(final String chave, List correcoes, int sequencialEvento) throws Exception {
        return this.wsCartaCorrecao.corrigeNota(chave, correcoes, sequencialEvento);
    }

    /**
     * Faz a correcao do CT-e.
     * ATENCAO: Esse metodo deve ser utilizado para assinaturas A3
     *
     * @param chave             chave de acesso do CT-e
     * @param eventoAssinadoXml evento ja assinado em formato XML
     * @return ddados da carta de correção retornada pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno corrigeNotaAssinada(final String chave, final String eventoAssinadoXml) throws Exception {
        return this.wsCartaCorrecao.corrigeNotaAssinada(chave, eventoAssinadoXml);
    }

    /**
     * Gera o XML assinado da carta de correção sem enviar para a SEFAZ.
     * @param chave            chave de acesso do CT-e
     * @param correcoes        lista de correções a serem efetuadas no CT-e
     * @param sequencialEvento sequencial do evento
     * @return O XML da requisicao de carta de correção ja assinado
     * @throws Exception caso nao consiga gerar o xml
     */
    public String getXmlAssinadoCartaCorreca(final String chave, List correcoes, int sequencialEvento) throws Exception {
        return this.wsCartaCorrecao.getXmlAssinado(chave, correcoes, sequencialEvento);
    }

    /**
     * Registra a efetivação da entrega da carga pelo transportador.
     *
     * @param chave                 chave de acesso do CT-e
     * @param comprovanteEntrega    dados do comprovante de entrega
     * @return dados do comprovante de entrega retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno comprovanteEntrega(final String chave, final CTeEnviaEventoComprovanteEntrega comprovanteEntrega, final int sequencialEvento) throws Exception {
        return this.wsComprovanteEntrega.comprovanteEntrega(chave, comprovanteEntrega, sequencialEvento);
    }

    /**
     * Registra a efetivação da entrega da carga pelo transportador.
     * ATENCAO: Esse metodo deve ser utilizado para assinaturas A3
     *
     * @param chave             chave de acesso do CT-e
     * @param eventoAssinadoXml evento ja assinado em formato XML
     * @return dados do comprovante de entrega retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno comprovanteEntregaAssinado(final String chave, final String eventoAssinadoXml) throws Exception {
        return this.wsComprovanteEntrega.comprovanteEntregaAssinado(chave, eventoAssinadoXml);
    }

    /**
     * Gera o XML assinado do comprovante de entrega sem enviar para a SEFAZ.
     * @param chave                 chave de acesso do CT-e
     * @param comprovanteEntrega    dados do comprovante de entrega
     * @return O XML da requisicao de comprovante de entrega ja assinado
     * @throws Exception caso nao consiga gerar o xml
     */
    public String getXmlAssinadoComprovanteEntrega(final String chave, final CTeEnviaEventoComprovanteEntrega comprovanteEntrega, final int sequencialEvento) throws Exception {
        return this.wsComprovanteEntrega.getXmlAssinado(chave, comprovanteEntrega, sequencialEvento);
    }

    /**
     * Faz o registro do EPEC.
     *
     * @param chave           chave de acesso do CT-e
     * @param eventoEpec      dados do evento prévio de emissão em contingência
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno enviaEpec(final String chave, final CTeEnviaEventoEpec eventoEpec) throws Exception {
        return this.wsEpec.enviaEpec(chave, eventoEpec);
    }

    /**
     * Faz o registro do EPEC.
     * ATENCAO: Esse metodo deve ser utilizado para assinaturas A3
     *
     * @param chave             chave de acesso do CT-e
     * @param eventoAssinadoXml evento ja assinado em formato XML
     * @return dados do EPEC retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno enviaEpecAssinado(final String chave, final String eventoAssinadoXml) throws Exception {
        return this.wsEpec.enviaEpecAssinado(chave, eventoAssinadoXml);
    }

    /**
     * Gera o XML assinado do EPEC sem enviar para a SEFAZ.
     * @param chave           chave de acesso do CT-e
     * @param eventoEpec      dados do evento prévio de emissão em contingência
     * @return O XML da requisicao de EPEC ja assinado
     * @throws Exception caso nao consiga gerar o xml
     */
    public String getXmlAssinadoEpec(final String chave, final CTeEnviaEventoEpec eventoEpec) throws Exception {
        return this.wsEpec.getXmlAssinado(chave, eventoEpec);
    }

    /**
     * Faz o registro da guia de transporte de valores.
     *
     * @param chave            chave de acesso do CT-e
     * @param eventoGtv        dados da guia de transporte de valores
     * @param sequencialEvento sequencial do evento
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno enviaGtv(final String chave, final CTeEnviaEventoGtv eventoGtv, final int sequencialEvento) throws Exception {
        return this.wsGtv.enviaGtv(chave, eventoGtv, sequencialEvento);
    }

    /**
     * Faz o registro da guia de transporte de valores.
     * ATENCAO: Esse metodo deve ser utilizado para assinaturas A3
     *
     * @param chave             chave de acesso do CT-e
     * @param eventoAssinadoXml evento ja assinado em formato XML
     * @return dados da guia de transporte de valores retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno enviaGtvAssinada(final String chave, final String eventoAssinadoXml) throws Exception {
        return this.wsGtv.enviaGtvAssinada(chave, eventoAssinadoXml);
    }

    /**
     * Gera o XML assinado da guia de transporte de valores sem enviar para a SEFAZ.
     * @param chave            chave de acesso do CT-e
     * @param eventoGtv        dados do evento prévio de emissão em contingência
     * @param sequencialEvento sequencial do evento
     * @return O XML da requisicao da guia de transporte de valores ja assinada
     * @throws Exception caso nao consiga gerar o xml
     */
    public String getXmlAssinadoGtv(final String chave, final CTeEnviaEventoGtv eventoGtv, final int sequencialEvento) throws Exception {
        return this.wsGtv.getXmlAssinado(chave, eventoGtv, sequencialEvento);
    }

    /**
     * Faz o registro de prestação de serviço em desacordo.
     *
     * @param chave           chave de acesso do CT-e
     * @param observacao      observação do desacordo
     * @param cpfOuCnpj       CPF ou CNPJ do autor do evento
     * @return dados do desacordo do CT-e retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno prestacaoEmDesacordo(final String chave, final String observacao, final String cpfOuCnpj, final int sequencialEvento) throws Exception {
        return this.wsPrestacaoEmDesacordo.prestacaoEmDesacordo(chave, observacao, cpfOuCnpj, sequencialEvento);
    }

    /**
     * Faz o registro de prestação de serviço em desacordo.
     * ATENCAO: Esse metodo deve ser utilizado para assinaturas A3
     *
     * @param chave             chave de acesso do CT-e
     * @param eventoAssinadoXml evento ja assinado em formato XML
     * @return dados do desacordo do CT-e retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno prestacaoEmDesacordoAssinada(final String chave, final String eventoAssinadoXml) throws Exception {
        return this.wsPrestacaoEmDesacordo.prestacaoEmDesacordoAssinada(chave, eventoAssinadoXml);
    }

    /**
     * Gera o XML assinado da prestação de serviço em desacordo sem enviar para a SEFAZ.
     * @param chave           chave de acesso do CT-e
     * @param observacao      observação do desacordo
     * @param cpfOuCnpj       CPF ou CNPJ do autor do evento
     * @return O XML da requisicao de prestação de serviço em desacordo ja assinado
     * @throws Exception caso nao consiga gerar o xml
     */
    public String getXmlAssinadoPrestacaoEmDesacordo(final String chave, final String observacao, final String cpfOuCnpj, final int sequencialEvento) throws Exception {
        return this.wsPrestacaoEmDesacordo.getXmlAssinado(chave, observacao, cpfOuCnpj, sequencialEvento);
    }

    /**
     * Vincula um serviço ao CT-e multimodal.
     *
     * @param chave                 chave de acesso do CT-e multimodal
     * @param informacoesAdicionais informações sobre o tipo de documento utilizado e ressalvas, se for o caso
     * @param numeroDocumento       número do documento que será vinculado
     * @return dados do registro multimodal retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno registroMultimodal(final String chave, final String informacoesAdicionais, final String numeroDocumento) throws Exception {
        return this.wsRegistroMultimodal.registroMultimodal(chave, informacoesAdicionais, numeroDocumento);
    }

    /**
     * Vincula um serviço ao CT-e multimodal.
     * ATENCAO: Esse metodo deve ser utilizado para assinaturas A3
     *
     * @param chave             chave de acesso do CT-e multimodal
     * @param eventoAssinadoXml evento ja assinado em formato XML
     * @return dados do registro multimodal retornado pelo webservice
     * @throws Exception caso nao consiga gerar o xml ou problema de conexao com o sefaz
     */
    public CTeEventoRetorno registroMultimodalAssinado(final String chave, final String eventoAssinadoXml) throws Exception {
        return this.wsRegistroMultimodal.registroMultimodalAssinado(chave, eventoAssinadoXml);
    }

    /**
     * Gera o XML assinado do registro multimodal sem enviar para a SEFAZ.
     * @param chave                 chave de acesso do CT-e multimodal
     * @param informacoesAdicionais informações sobre o tipo de documento utilizado e ressalvas, se for o caso
     * @param numeroDocumento       número do documento que será vinculado
     * @return O XML da requisicao de registro multimodal ja assinado
     * @throws Exception caso nao consiga gerar o xml
     */
    public String getXmlAssinadoRegistroMultimodal(final String chave, final String informacoesAdicionais, final String numeroDocumento) throws Exception {
        return this.wsRegistroMultimodal.getXmlAssinado(chave, informacoesAdicionais, numeroDocumento);
    }

    /**
     * Faz o envio do CT-e de Outros Serviços para a SEFAZ.
     *
     * @param cteOS a ser eviado para a SEFAZ
     * @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 {
        return this.wsRecepcaoCTeOS.envioRecepcao(cteOS);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy