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

br.com.swconsultoria.nfe.util.WebServiceUtil Maven / Gradle / Ivy

There is a newer version: 4.00.34
Show newest version
/**
 *
 */
package br.com.swconsultoria.nfe.util;

import br.com.swconsultoria.nfe.dom.ConfiguracoesNfe;
import br.com.swconsultoria.nfe.dom.enuns.AmbienteEnum;
import br.com.swconsultoria.nfe.dom.enuns.DocumentoEnum;
import br.com.swconsultoria.nfe.dom.enuns.EstadosEnum;
import br.com.swconsultoria.nfe.dom.enuns.ServicosEnum;
import br.com.swconsultoria.nfe.exception.NfeException;
import lombok.extern.java.Log;
import org.ini4j.Wini;

import java.io.*;
import java.util.logging.Logger;

/**
 * @author Samuel Oliveira
 *
 * Classe responsávelem montar as URL's de consulta de serviços do SEFAZ.
 */
@Log
public class WebServiceUtil {

    private final static Logger logger = Logger.getLogger(WebServiceUtil.class.getName());

    /**
     * Retorna a URL para consulta de operações do SEFAZ.
* *

* O método carrega o arquivo WebServicesNfe.ini que contêm as * URL's de operações do SEFAZ, busca pela seção no arquivo .ini que * corresponda com os argumentos tipo, config, servico * e retorna essa URL. *

* * @param config interface que contêm os dados necessários para a comunicação. * @param tipoDocumento DocumentoEnum.NFE e ConstantesUtil.NFCE * @param tipoServico é a operação que se deseja fazer.
* Ex.: para consultas status deserviço no ambiente de produção * use ServicosEnum.NfeStatusServico_4.00 * * @return url String que representa a URL do serviço. * @throws NfeException * * @see ConfiguracoesNfe * @see ConstantesUtil **/ public static String getUrl(ConfiguracoesNfe config, DocumentoEnum tipoDocumento, ServicosEnum tipoServico) throws NfeException { try { String secao = tipoDocumento.getTipo() + "_" + config.getEstado() + "_" + (config.getAmbiente().equals(AmbienteEnum.HOMOLOGACAO) ? "H" : "P"); InputStream is; if (ObjetoUtil.verifica(config.getArquivoWebService()).isPresent()) { File arquivo = new File(config.getArquivoWebService()); if (!arquivo.exists()) throw new FileNotFoundException("Arquivo WebService" + config.getArquivoWebService() + " não encontrado"); is = new FileInputStream(arquivo); log.info("[ARQUIVO INI CUSTOMIZADO]: " + config.getArquivoWebService()); } else { is = WebServiceUtil.class.getResourceAsStream("/WebServicesNfe.ini"); } Wini ini = new Wini(); ini.getConfig().setLowerCaseOption(true); ini.load(is); is.close(); String url = ini.get(secao, "usar"); //URLS CONSULTA CADASTO if (tipoServico.equals(ServicosEnum.CONSULTA_CADASTRO) && ( config.getEstado().equals(EstadosEnum.PA) || config.getEstado().equals(EstadosEnum.AM) || config.getEstado().equals(EstadosEnum.AL) || config.getEstado().equals(EstadosEnum.AP) || config.getEstado().equals(EstadosEnum.DF) || config.getEstado().equals(EstadosEnum.PI) || config.getEstado().equals(EstadosEnum.RJ) || config.getEstado().equals(EstadosEnum.RO) || config.getEstado().equals(EstadosEnum.SE) || config.getEstado().equals(EstadosEnum.TO))) { throw new NfeException("Estado não possui Consulta Cadastro."); // URLS de ambiente nacional } else if (tipoServico.equals(ServicosEnum.DISTRIBUICAO_DFE) || tipoServico.equals(ServicosEnum.MANIFESTACAO) || tipoServico.equals(ServicosEnum.EPEC)) { secao = config.getAmbiente().equals(AmbienteEnum.HOMOLOGACAO) ? "NFe_AN_H" : "NFe_AN_P"; } else if (!tipoServico.equals(ServicosEnum.URL_CONSULTANFCE) && !tipoServico.equals(ServicosEnum.URL_QRCODE) && ObjetoUtil.verifica(url).isPresent()) { secao = url; } else if (config.isContigenciaSVC()) { // SVC-RS if (config.getEstado().equals(EstadosEnum.GO) || config.getEstado().equals(EstadosEnum.AM) || config.getEstado().equals(EstadosEnum.BA) || config.getEstado().equals(EstadosEnum.CE) || config.getEstado().equals(EstadosEnum.MA) || config.getEstado().equals(EstadosEnum.MS) || config.getEstado().equals(EstadosEnum.MT) || config.getEstado().equals(EstadosEnum.PA) || config.getEstado().equals(EstadosEnum.PE) || config.getEstado().equals(EstadosEnum.PI) || config.getEstado().equals(EstadosEnum.PR)) { secao = tipoDocumento.getTipo() + "_SVRS_" + (config.getAmbiente().equals(AmbienteEnum.HOMOLOGACAO) ? "H" : "P"); // SVC-AN } else { secao = tipoDocumento.getTipo() + "_SVC-AN_" + (config.getAmbiente().equals(AmbienteEnum.HOMOLOGACAO) ? "H" : "P"); } } url = ini.get(secao, tipoServico.getServico().toLowerCase()); ObjetoUtil.verifica(url).orElseThrow(() -> new NfeException( "WebService de " + tipoServico + " não encontrado para " + config.getEstado().getNome())); log.info("[URL]: " + tipoServico + ": " + url); return url; } catch (IOException e) { throw new NfeException(e.getMessage(),e); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy