diff --git a/pom.xml b/pom.xml
index a64f6f6c7..0bbb47112 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
br.com.rjconsultores
ModelWeb
- 1.0.39
+ 1.0.40
rj-releases
diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ContingenciaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ContingenciaServiceImpl.java
index 25940fcd5..a92d468df 100644
--- a/src/com/rjconsultores/ventaboletos/service/impl/ContingenciaServiceImpl.java
+++ b/src/com/rjconsultores/ventaboletos/service/impl/ContingenciaServiceImpl.java
@@ -1,208 +1,211 @@
-package com.rjconsultores.ventaboletos.service.impl;
-
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map.Entry;
-
-import javax.mail.AuthenticationFailedException;
-import javax.mail.SendFailedException;
-
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.log4j.Logger;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.rjconsultores.ventaboletos.constantes.Constantes;
-import com.rjconsultores.ventaboletos.dao.LogHistoricoContingenciaDAO;
-import com.rjconsultores.ventaboletos.entidad.Constante;
-import com.rjconsultores.ventaboletos.entidad.EmpresaEmail;
-import com.rjconsultores.ventaboletos.entidad.EmpresaEmailConfig;
-import com.rjconsultores.ventaboletos.entidad.LogHistoricoContingencia;
-import com.rjconsultores.ventaboletos.enums.EAmbienteContingencia;
-import com.rjconsultores.ventaboletos.enums.EStatusContingencia;
-import com.rjconsultores.ventaboletos.exception.BusinessException;
-import com.rjconsultores.ventaboletos.rest.ContingenciaClienteRest;
-import com.rjconsultores.ventaboletos.service.ConstanteService;
-import com.rjconsultores.ventaboletos.service.ContingenciaService;
-import com.rjconsultores.ventaboletos.service.EmpresaEmailConfigService;
-import com.rjconsultores.ventaboletos.service.EmpresaEmailService;
-import com.rjconsultores.ventaboletos.utilerias.SendMail;
-import com.rjconsultores.ventaboletos.utilerias.StringHelper;
-import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
-import com.rjconsultores.ventaboletos.utilerias.SendMail.AuthType;
-
-/**
- * @author vjcor
- *
- */
-@Service("contingenciaService")
-public class ContingenciaServiceImpl implements ContingenciaService {
-
- private static final String EMAIL_COPIA_OCULTA = "suportesco@rjconsultores.com.br";
-
- private static Logger log = Logger.getLogger(ContingenciaServiceImpl.class);
-
- @Autowired
- private LogHistoricoContingenciaDAO histContingenciaDAO;
-
- @Autowired
- private EmpresaEmailService empresaEmailService;
-
- @Autowired
- private EmpresaEmailConfigService empresaEmailConfigService;
-
- @Autowired
- private ConstanteService constanteService;
-
- public List buscarHistorico(Integer empresaID, Integer estadoID) {
- return histContingenciaDAO.buscarHistorico(empresaID, estadoID);
- }
-
- @Transactional
- public LogHistoricoContingencia salvarHistoricoContingencia(LogHistoricoContingencia historicoCont) throws BusinessException, SendFailedException, AuthenticationFailedException{
- historicoCont.setUsuario(UsuarioLogado.getUsuarioLogado());
- historicoCont.setDataHora(Calendar.getInstance().getTime());
-
- if (historicoCont.getEmpresa() == null) {
- throw new BusinessException("N�o � poss�vel salvar sem a empresa");
- }
-
- if (historicoCont.getEstado() == null) {
- throw new BusinessException("N�o � poss�vel salvar sem o estado referente");
- }
-
- if (historicoCont.getMotivo() == null) {
- throw new BusinessException("N�o � poss�vel salvar sem o motivo referente");
- }
-
- try {
- Integer retorno = definirStatusContingencia(historicoCont);
-
- if (retorno == null) {
- throw new BusinessException(" entre em contato com o administrador do sistema.");
- }
-
- if (EStatusContingencia.CONTINGENCIA.equals(getStatusContingencia(historicoCont))) {
- enviaEmail(historicoCont);
- }
- } catch (SendFailedException e2 ) {
- setMotivoNaoTrocaStatus(historicoCont, e2);
- histContingenciaDAO.suscribir(historicoCont);
- throw e2;
- }catch (AuthenticationFailedException e2) {
- setMotivoNaoTrocaStatus(historicoCont, e2);
- histContingenciaDAO.suscribir(historicoCont);
- throw e2;
- }
-
- return histContingenciaDAO.suscribir(historicoCont);
- }
-
- private void setMotivoNaoTrocaStatus(LogHistoricoContingencia historicoCont, Exception e) {
- log.error(String.format("Erro no envio de e-mail de conting�ncia da empresa %s para o estado %s.", historicoCont.getEmpresa().getEmpresaId(),historicoCont.getEstado()), e);
-
- String motivo = historicoCont.getMotivo();
- motivo = motivo.concat("**Problema no envio de E-mail de notifica��o. Favor checar.");
-
- historicoCont.setMotivo(motivo);
- }
-
- private Integer definirStatusContingencia(LogHistoricoContingencia historicoCont) {
-
- Integer statusEnviado = Integer.valueOf(historicoCont.getStatus());
-
- List constantesContig = constanteService.buscarPorNomeConstanteLike(Constantes.BPE_URL_CONTIG);
- if (CollectionUtils.isEmpty(constantesContig)) {
- Constante constanteBPeURL = constanteService.buscarPorNomeConstante(Constantes.BPE_URL);
- constantesContig.add(constanteBPeURL);
- }
-
- HashMap retornos = new HashMap();
-
- for (Constante constante : constantesContig) {
-
- try {
- String url = constante.getValorconstante();
- Integer retorno = ContingenciaClienteRest.getInstance().consultar(url, historicoCont.getEstado().getCveestado(), historicoCont.getAmbiente().toString(), StringHelper.retornaSomenteNumeros(historicoCont.getEmpresa().getCnpj()));
- retornos.put(constante, retorno);
- } catch (Exception e) {
- log.error("", e);
- }
- }
-
- for (Entry entry : retornos.entrySet()) {
- if (entry.getValue() == null || (entry.getValue() != null && entry.getValue().equals(statusEnviado))) {
- log.info("O Servidor:" + entry.getKey().getValorconstante() + "enviou: " + statusEnviado + " recebeu " + entry.getValue());
- return null;
- }
- }
-
- for (Constante constante : constantesContig) {
-
- try {
- String bpeURL = constante.getValorconstante();
-
- Integer retorno = ContingenciaClienteRest.getInstance().definir(bpeURL, historicoCont.getEstado().getCveestado(),
- historicoCont.getAmbiente().toString(), StringHelper.retornaSomenteNumeros(historicoCont.getEmpresa().getCnpj()),
- Integer.valueOf(historicoCont.getStatus()));
-
- log.info("Servidor:" + bpeURL + " status:" + retorno);
-
- } catch (Exception e) {
- log.error("", e);
- }
- }
-
- return statusEnviado;
-
- }
-
- private EStatusContingencia getStatusContingencia(LogHistoricoContingencia historicoCont) {
- return EStatusContingencia.getStatusContingencia(Integer.valueOf(historicoCont.getStatus()));
- }
-
- private void enviaEmail(LogHistoricoContingencia historicoCont) throws SendFailedException, AuthenticationFailedException {
-
- EmpresaEmail empresaEmail = empresaEmailService.buscarPorEmpresa(historicoCont.getEmpresa());
- EmpresaEmailConfig empresaEmailConfig = empresaEmailConfigService.buscarPorEmpresa(historicoCont.getEmpresa());
-
- if (empresaEmail != null && empresaEmailConfig != null &&
- empresaEmailConfig.getIndAutenticacao() != null && empresaEmail.getEmailDe() != null &&
- empresaEmailConfig.getTipoAutorizacao() != null && empresaEmailConfig.getSmtp() != null &&
- empresaEmailConfig.getSenha() != null && empresaEmailConfig.getSmtpPorta() != null &&
- empresaEmailConfig.getSmtpEmail() != null && empresaEmail.getDestinatario() != null) {
-
- SendMail mail = new SendMail();
- mail.setAuth(empresaEmailConfig.getIndAutenticacao());
- if (StringUtils.isNotEmpty(empresaEmailConfig.getTipoAutorizacao())) {
- mail.setAuthType(AuthType.valueOf(empresaEmailConfig.getTipoAutorizacao()));
- }
- mail.setEmailFrom(empresaEmail.getEmailDe());
- mail.setSmtpHost(empresaEmailConfig.getSmtp());
- mail.setSmtpPassword(empresaEmailConfig.getSenha());
- mail.setSmtpPort(empresaEmailConfig.getSmtpPorta());
- mail.setSmtpUser(empresaEmailConfig.getSmtpEmail());
- mail.setSubject("Conting�ncia Off-line BP-e");
- mail.setText(getMensagem(historicoCont));
- mail.setEmailTo(empresaEmail.getDestinatario());
- mail.setEmailToCO(EMAIL_COPIA_OCULTA);
- mail.send();
- }
- }
-
- private String getMensagem(LogHistoricoContingencia historicoContingencia) {
- StringBuilder mensagem = new StringBuilder();
- mensagem.append(String.format("A empresa %s est� com a emiss�o do BP-e em conting�ncia off-line para a UF %s no ambiente de %s. ",
- historicoContingencia.getEmpresa().getNombempresa(), historicoContingencia.getEstado().getCveestado(),
- EAmbienteContingencia.getAmbienteContingencia(historicoContingencia.getAmbiente()).getDescricao()));
- mensagem.append("A emiss�o em conting�ncia deve ser tratada como exce��o, sendo que a regra deve ser a emiss�o com autoriza��o em tempo real.");
- mensagem.append("O Fisco poder� solicitar esclarecimentos, e at� mesmo restringir ao contribuinte a utiliza��o da modalidade de conting�ncia off-line, caso seja identificado que o emissor do BP-e utiliza a conting�ncia em demasia e sem justificativa aceit�vel, quando comparado a outros contribuintes em situa��o similar.");
- mensagem.append("Na utiliza��o de conting�ncia off-line, o contribuinte assume o risco de perda da informa��o dos ");
- mensagem.append("BP-e emitidos em conting�ncia, at� que os mesmos constem da base de dados do Fisco.");
- return mensagem.toString();
- }
-
-}
+package com.rjconsultores.ventaboletos.service.impl;
+
+import java.util.Calendar;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map.Entry;
+
+import javax.mail.AuthenticationFailedException;
+import javax.mail.SendFailedException;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.rjconsultores.ventaboletos.constantes.Constantes;
+import com.rjconsultores.ventaboletos.dao.LogHistoricoContingenciaDAO;
+import com.rjconsultores.ventaboletos.entidad.Constante;
+import com.rjconsultores.ventaboletos.entidad.EmpresaEmail;
+import com.rjconsultores.ventaboletos.entidad.EmpresaEmailConfig;
+import com.rjconsultores.ventaboletos.entidad.LogHistoricoContingencia;
+import com.rjconsultores.ventaboletos.enums.EAmbienteContingencia;
+import com.rjconsultores.ventaboletos.enums.EStatusContingencia;
+import com.rjconsultores.ventaboletos.exception.BusinessException;
+import com.rjconsultores.ventaboletos.rest.ContingenciaClienteRest;
+import com.rjconsultores.ventaboletos.service.ConstanteService;
+import com.rjconsultores.ventaboletos.service.ContingenciaService;
+import com.rjconsultores.ventaboletos.service.EmpresaEmailConfigService;
+import com.rjconsultores.ventaboletos.service.EmpresaEmailService;
+import com.rjconsultores.ventaboletos.utilerias.SendMail;
+import com.rjconsultores.ventaboletos.utilerias.StringHelper;
+import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
+import com.rjconsultores.ventaboletos.utilerias.SendMail.AuthType;
+
+/**
+ * @author vjcor
+ *
+ */
+@Service("contingenciaService")
+public class ContingenciaServiceImpl implements ContingenciaService {
+
+ private static final String EMAIL_SUPORTE_SCO_RJCONSULTORES = "EMAIL_SUPORTE_SCO_RJCONSULTORES";
+
+ private static Logger log = Logger.getLogger(ContingenciaServiceImpl.class);
+
+ @Autowired
+ private LogHistoricoContingenciaDAO histContingenciaDAO;
+
+ @Autowired
+ private EmpresaEmailService empresaEmailService;
+
+ @Autowired
+ private EmpresaEmailConfigService empresaEmailConfigService;
+
+ @Autowired
+ private ConstanteService constanteService;
+
+ public List buscarHistorico(Integer empresaID, Integer estadoID) {
+ return histContingenciaDAO.buscarHistorico(empresaID, estadoID);
+ }
+
+ @Transactional
+ public LogHistoricoContingencia salvarHistoricoContingencia(LogHistoricoContingencia historicoCont) throws BusinessException, SendFailedException, AuthenticationFailedException{
+ historicoCont.setUsuario(UsuarioLogado.getUsuarioLogado());
+ historicoCont.setDataHora(Calendar.getInstance().getTime());
+
+ if (historicoCont.getEmpresa() == null) {
+ throw new BusinessException("N�o � poss�vel salvar sem a empresa");
+ }
+
+ if (historicoCont.getEstado() == null) {
+ throw new BusinessException("N�o � poss�vel salvar sem o estado referente");
+ }
+
+ if (historicoCont.getMotivo() == null) {
+ throw new BusinessException("N�o � poss�vel salvar sem o motivo referente");
+ }
+
+ try {
+ Integer retorno = definirStatusContingencia(historicoCont);
+
+ if (retorno == null) {
+ throw new BusinessException(" entre em contato com o administrador do sistema.");
+ }
+
+ if (EStatusContingencia.CONTINGENCIA.equals(getStatusContingencia(historicoCont))) {
+ enviaEmail(historicoCont);
+ }
+ } catch (SendFailedException e2 ) {
+ setMotivoNaoTrocaStatus(historicoCont, e2);
+ histContingenciaDAO.suscribir(historicoCont);
+ throw e2;
+ }catch (AuthenticationFailedException e2) {
+ setMotivoNaoTrocaStatus(historicoCont, e2);
+ histContingenciaDAO.suscribir(historicoCont);
+ throw e2;
+ }
+
+ return histContingenciaDAO.suscribir(historicoCont);
+ }
+
+ private void setMotivoNaoTrocaStatus(LogHistoricoContingencia historicoCont, Exception e) {
+ log.error(String.format("Erro no envio de e-mail de conting�ncia da empresa %s para o estado %s.", historicoCont.getEmpresa().getEmpresaId(),historicoCont.getEstado()), e);
+
+ String motivo = historicoCont.getMotivo();
+ motivo = motivo.concat("**Problema no envio de E-mail de notifica��o. Favor checar.");
+
+ historicoCont.setMotivo(motivo);
+ }
+
+ private Integer definirStatusContingencia(LogHistoricoContingencia historicoCont) {
+
+ Integer statusEnviado = Integer.valueOf(historicoCont.getStatus());
+
+ List constantesContig = constanteService.buscarPorNomeConstanteLike(Constantes.BPE_URL_CONTIG);
+ if (CollectionUtils.isEmpty(constantesContig)) {
+ Constante constanteBPeURL = constanteService.buscarPorNomeConstante(Constantes.BPE_URL);
+ constantesContig.add(constanteBPeURL);
+ }
+
+ HashMap retornos = new HashMap();
+
+ for (Constante constante : constantesContig) {
+
+ try {
+ String url = constante.getValorconstante();
+ Integer retorno = ContingenciaClienteRest.getInstance().consultar(url, historicoCont.getEstado().getCveestado(), historicoCont.getAmbiente().toString(), StringHelper.retornaSomenteNumeros(historicoCont.getEmpresa().getCnpj()));
+ retornos.put(constante, retorno);
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
+
+ for (Entry entry : retornos.entrySet()) {
+ if (entry.getValue() == null || (entry.getValue() != null && entry.getValue().equals(statusEnviado))) {
+ log.info("O Servidor:" + entry.getKey().getValorconstante() + "enviou: " + statusEnviado + " recebeu " + entry.getValue());
+ return null;
+ }
+ }
+
+ for (Constante constante : constantesContig) {
+
+ try {
+ String bpeURL = constante.getValorconstante();
+
+ Integer retorno = ContingenciaClienteRest.getInstance().definir(bpeURL, historicoCont.getEstado().getCveestado(),
+ historicoCont.getAmbiente().toString(), StringHelper.retornaSomenteNumeros(historicoCont.getEmpresa().getCnpj()),
+ Integer.valueOf(historicoCont.getStatus()));
+
+ log.info("Servidor:" + bpeURL + " status:" + retorno);
+
+ } catch (Exception e) {
+ log.error("", e);
+ }
+ }
+
+ return statusEnviado;
+
+ }
+
+ private EStatusContingencia getStatusContingencia(LogHistoricoContingencia historicoCont) {
+ return EStatusContingencia.getStatusContingencia(Integer.valueOf(historicoCont.getStatus()));
+ }
+
+ private void enviaEmail(LogHistoricoContingencia historicoCont) throws SendFailedException, AuthenticationFailedException {
+
+ EmpresaEmail empresaEmail = empresaEmailService.buscarPorEmpresa(historicoCont.getEmpresa());
+ EmpresaEmailConfig empresaEmailConfig = empresaEmailConfigService.buscarPorEmpresa(historicoCont.getEmpresa());
+ Constante emailSuporRJConstante = constanteService.buscarPorNomeConstante(EMAIL_SUPORTE_SCO_RJCONSULTORES);
+ String emailSuporRJ = emailSuporRJConstante !=null ? emailSuporRJConstante.getValorconstante() : null;
+ if (empresaEmail != null && empresaEmailConfig != null &&
+ empresaEmailConfig.getIndAutenticacao() != null && empresaEmail.getEmailDe() != null &&
+ empresaEmailConfig.getTipoAutorizacao() != null && empresaEmailConfig.getSmtp() != null &&
+ empresaEmailConfig.getSenha() != null && empresaEmailConfig.getSmtpPorta() != null &&
+ empresaEmailConfig.getSmtpEmail() != null && empresaEmail.getDestinatario() != null) {
+
+ SendMail mail = new SendMail();
+ mail.setAuth(empresaEmailConfig.getIndAutenticacao());
+ if (StringUtils.isNotEmpty(empresaEmailConfig.getTipoAutorizacao())) {
+ mail.setAuthType(AuthType.valueOf(empresaEmailConfig.getTipoAutorizacao()));
+ }
+ mail.setEmailFrom(empresaEmail.getEmailDe());
+ mail.setSmtpHost(empresaEmailConfig.getSmtp());
+ mail.setSmtpPassword(empresaEmailConfig.getSenha());
+ mail.setSmtpPort(empresaEmailConfig.getSmtpPorta());
+ mail.setSmtpUser(empresaEmailConfig.getSmtpEmail());
+ mail.setSubject("Conting�ncia Off-line BP-e");
+ mail.setText(getMensagem(historicoCont));
+ mail.setEmailTo(empresaEmail.getDestinatario());
+ if(StringUtils.isNotBlank(emailSuporRJ)) {
+ mail.setEmailToCO(emailSuporRJ);
+ }
+ mail.send();
+ }
+ }
+
+ private String getMensagem(LogHistoricoContingencia historicoContingencia) {
+ StringBuilder mensagem = new StringBuilder();
+ mensagem.append(String.format("A empresa %s est� com a emiss�o do BP-e em conting�ncia off-line para a UF %s no ambiente de %s. ",
+ historicoContingencia.getEmpresa().getNombempresa(), historicoContingencia.getEstado().getCveestado(),
+ EAmbienteContingencia.getAmbienteContingencia(historicoContingencia.getAmbiente()).getDescricao()));
+ mensagem.append("A emiss�o em conting�ncia deve ser tratada como exce��o, sendo que a regra deve ser a emiss�o com autoriza��o em tempo real.");
+ mensagem.append("O Fisco poder� solicitar esclarecimentos, e at� mesmo restringir ao contribuinte a utiliza��o da modalidade de conting�ncia off-line, caso seja identificado que o emissor do BP-e utiliza a conting�ncia em demasia e sem justificativa aceit�vel, quando comparado a outros contribuintes em situa��o similar.");
+ mensagem.append("Na utiliza��o de conting�ncia off-line, o contribuinte assume o risco de perda da informa��o dos ");
+ mensagem.append("BP-e emitidos em conting�ncia, at� que os mesmos constem da base de dados do Fisco.");
+ return mensagem.toString();
+ }
+
+}