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

br.com.swconsultoria.nfe.dom.ConfiguracoesNfe Maven / Gradle / Ivy

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

import br.com.swconsultoria.certificado.Certificado;
import br.com.swconsultoria.certificado.exception.CertificadoException;
import br.com.swconsultoria.nfe.dom.enuns.AmbienteEnum;
import br.com.swconsultoria.nfe.dom.enuns.EstadosEnum;
import br.com.swconsultoria.nfe.util.ConstantesUtil;
import br.com.swconsultoria.nfe.util.ObjetoUtil;
import lombok.extern.java.Log;

import java.io.InputStream;
import java.lang.reflect.Field;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.time.ZoneId;

/**
 * @author Samuel Oliveira
 * 

* Responsável por iniciar as configurações das operações NF-e. *

* Para iniciar as configurações chame o método estático * iniciaConfiguracoes:
* {@code * ConfiguracoesIniciaisNfe.iniciaConfiguracoes(estado, ambiente, certificado, schemas); * } * @see ConfiguracoesNfe * @see ConfiguracoesWebNfe */ @Log public class ConfiguracoesNfe { private EstadosEnum estado; private AmbienteEnum ambiente; private Certificado certificado; private String pastaSchemas; private Proxy proxy; private Integer timeout; private boolean contigenciaSVC; private boolean validacaoDocumento = true; private String arquivoWebService; private Integer retry; private InputStream cacert; private Charset encode; private ZoneId zoneId; /** * Este método recebe como parâmetro os dados necessários para iniciar a * comunicação de operações dos eventos da NF-e. Retorna uma instância dela * mesma. * Nessa inicializacao é usado o ZoneId padrao America/Sao_Paulo * * @param estado enumeration Estados, UF do emitente. * @param ambiente Enumeration AmbienteEnum * @param certificado objeto Certificado * @param pastaSchemas local dos arquivo de schemas da NF-e. * @return ConfiguracoesIniciaisNfe * @see br.com.swconsultoria.certificado.Certificado * @see EstadosEnum */ public static ConfiguracoesNfe criarConfiguracoes(EstadosEnum estado, AmbienteEnum ambiente, Certificado certificado, String pastaSchemas) throws CertificadoException { return criarConfiguracoes(estado,ambiente,certificado,pastaSchemas, ZoneId.of("America/Sao_Paulo")); } /** * Este método recebe como parâmetro os dados necessários para iniciar a * comunicação de operações dos eventos da NF-e. Retorna uma instância dela * mesma. * * @param estado enumeration Estados, UF do emitente. * @param ambiente Enumeration AmbienteEnum * @param certificado objeto Certificado * @param pastaSchemas local dos arquivo de schemas da NF-e. * @param zoneId Zona para configuracoes de data * @return ConfiguracoesIniciaisNfe * @see br.com.swconsultoria.certificado.Certificado * @see EstadosEnum */ public static ConfiguracoesNfe criarConfiguracoes(EstadosEnum estado, AmbienteEnum ambiente, Certificado certificado, String pastaSchemas, ZoneId zoneId) throws CertificadoException { ConfiguracoesNfe configuracoesNfe = new ConfiguracoesNfe(); configuracoesNfe.setEstado(ObjetoUtil.verifica(estado).orElseThrow(() -> new IllegalArgumentException("Estado não pode ser Nulo."))); configuracoesNfe.setAmbiente(ObjetoUtil.verifica(ambiente).orElseThrow(() -> new IllegalArgumentException("Ambiente não pode ser Nulo."))); configuracoesNfe.setCertificado(ObjetoUtil.verifica(certificado).orElseThrow(() -> new IllegalArgumentException("Certificado não pode ser Nulo."))); configuracoesNfe.setPastaSchemas(pastaSchemas); configuracoesNfe.setZoneId(ObjetoUtil.verifica(zoneId).orElseThrow(() -> new IllegalArgumentException("Zone ID não pode ser Nulo."))); /** * Para as versões Java até 11, Eu ainda seto o Encoding por que é permitido. * Para quem trabalha com Java 12+, Aconselhasse setar o Encoding : * -Dfile.encoding="UTF-8" * -Dsun.jnu.encoding="UTF-8" * */ if (Integer.parseInt(System.getProperty("java.class.version").substring(0, 2)) < 56) { try { //Setando Encoding. System.setProperty("file.encoding", "UTF-8"); Field charset = Charset.class.getDeclaredField("defaultCharset"); charset.setAccessible(true); charset.set(null, null); } catch (NoSuchFieldException | IllegalAccessException e) { throw new CertificadoException("Erro ao setar Encoding."); } } log.info(String.format("JAVA-NFE | Samuel Oliveira | [email protected] " + "| VERSAO=%s | DATA_VERSAO=%s | PASTA_SCHEMAS=%s | AMBIENTE=%s | ESTADO=%s", "4.00.31", "25/03/2024", pastaSchemas, ambiente, estado.getNome().toUpperCase())); if (!certificado.isValido()) { throw new CertificadoException("Certificado Vencido/Inválido"); } return configuracoesNfe; } /** * Retorna o local da pasta dos schemas da NF-e(.xsd) * * @return pastaSchemas */ public String getPastaSchemas() { return pastaSchemas; } /** * Atribui uma string que representa o local da pasta dos schemas da NF-e * (.xsd) * * @param pastaSchemas */ private void setPastaSchemas(String pastaSchemas) { this.pastaSchemas = pastaSchemas; } /** * Retorna um enuns que representa o ambiente de operações da NF-e.
* * @return ambiente */ public AmbienteEnum getAmbiente() { return ambiente; } /** * Atribui uma String que representa o ambiente de operação da NF-e.
* Ex.:
* {@code * ConfiguracoesIniciaisNfe.iniciaConfiguracoes( * estado, * AmbienteEnum.HOMOLOGACAO, * certificado, * schemas); * } * * @param ambiente * @see ConstantesUtil */ public void setAmbiente(AmbienteEnum ambiente) { this.ambiente = ambiente; } /** * Retorna o objeto Certificado. * * @return certificado * @see br.com.swconsultoria.certificado */ public Certificado getCertificado() { return certificado; } /** * Atribui um objeto Certificado. * * @param certificado */ private void setCertificado(Certificado certificado) { this.certificado = certificado; } /** * Retorna um valor booleano que representa se as operações de NF-e estão, * ou, não operando no modo de Contingência. * * @return contigenciaSCAN */ public boolean isContigenciaSVC() { return contigenciaSVC; } /** * Atribui um valor para contigenciaSVC. Caso True, as operações da NF-e * funcionarão no modo de Contingência.
* Usar para situações em que não for possível estabelecer conexão com o * WebService SEFAZ Origem. * * @param contigenciaSVC */ public void setContigenciaSVC(boolean contigenciaSVC) { this.contigenciaSVC = contigenciaSVC; } /** * Retorna um objeto Estado que representa o UF do emissor da NF-e. * * @return estado * @see EstadosEnum */ public EstadosEnum getEstado() { return estado; } /** * Atribui um valor para o atribuito Estado. * * @param estado estado * @see EstadosEnum */ public void setEstado(EstadosEnum estado) { this.estado = estado; } /** * Retorna o valor do atributo proxyUtil. * * @return proxyUtil * @see Proxy */ public Proxy getProxy() { return proxy; } /** * Atribui um valor para o proxuUtil. * * @param proxy */ public void setProxy(Proxy proxy) { this.proxy = proxy; } /** * Retorna o valor do atributo timeout. * * @return timeout */ public Integer getTimeout() { return timeout; } /** * Atribui o valor de timeout.
* O timeout é o limite de tempo(em milisegundos) de comunicação com * WebService. Sugerido pelo manual do contribuinte: 30000. * * @param timeout */ public void setTimeout(Integer timeout) { this.timeout = timeout; } /** * Retorna o valor da validacaoDocumento. * * @return validacaoDocumento */ public boolean isValidacaoDocumento() { return validacaoDocumento; } /** * Atribui um valor para validacaoDocumento. Caso True, irá validar o * documento do emitente com o documento do certificado.
* * @param validacaoDocumento */ public void setValidacaoDocumento(boolean validacaoDocumento) { this.validacaoDocumento = validacaoDocumento; } public String getArquivoWebService() { return arquivoWebService; } public void setArquivoWebService(String arquivoWebService) { this.arquivoWebService = arquivoWebService; } /** * Retorna o valor do atributo retry. * * @return */ public Integer getRetry() { return retry; } /** * Permite informar um retry. O padrão é de 3.
* Ao definir um retry indicamos o valor a ser usado como um número de * tentativas para a conexão com WebService. * * @param retry */ public void setRetry(Integer retry) { this.retry = retry; } public InputStream getCacert() { return cacert; } public void setCacert(InputStream cacert) { this.cacert = cacert; } /** * Recupera encode que será utilizado na geração do arquivo XML. * * @return */ public Charset getEncode() {return encode;} /** * Altera o encode utilizado para criar o arquivo xml.
* Por padrão é utilizado o UTF-8 em caso de erro ou não ser * informado nada. * * @param encode */ public void setEncode(Charset encode) {this.encode = encode;} /** * Passar encode via String para o xml. * * @param nomeEncode */ public void setEncode(String nomeEncode) { if (nomeEncode != null && !nomeEncode.equals("")) { try { this.encode = Charset.forName(nomeEncode); } catch (Exception ex) { this.encode = StandardCharsets.UTF_8; } } } public ZoneId getZoneId() { return zoneId; } public void setZoneId(ZoneId zoneId) { this.zoneId = zoneId; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy