diff --git a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java index ec1730cc6..a8a64e226 100644 --- a/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/FiscalDAO.java @@ -13,7 +13,7 @@ import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionNaoFiscalVO; public interface FiscalDAO { - public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte); + public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte) throws SQLException; public List buscaDatosFiscaisECF(Date inicio, Date fim, Integer empresaId, boolean isNormal, boolean isCancelados, boolean isPendencias, Connection connection) throws SQLException; diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 5afb78f0e..e7245976f 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -10,6 +10,10 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; +import javax.sql.DataSource; + +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import com.rjconsultores.ventaboletos.dao.FiscalDAO; @@ -27,6 +31,8 @@ import com.rjconsultores.ventaboletos.vo.impressaofiscal.SituacaoTributaria; public class FiscalHibernateDAO implements FiscalDAO { public static final String DATE_FORMAT_FISCAL = "yyyyMMdd"; + @Autowired + private DataSource dataSource; public FiscalHibernateDAO() { } @@ -1010,7 +1016,7 @@ public class FiscalHibernateDAO implements FiscalDAO { return itensFiscais; } - private int gerarRegistroP2(List lsEsquemaCorrida, Date dataDe, Date dataAte) { + private int gerarRegistroP2(List lsEsquemaCorrida, Date dataDe, Date dataAte) throws SQLException { Integer[] idsCorrida = getIdsCorrida(lsEsquemaCorrida); StringBuilder sb = new StringBuilder(""); @@ -1054,17 +1060,38 @@ public class FiscalHibernateDAO implements FiscalDAO { sb.append(" and cto.fechorsalida between vt.feciniciovigencia and vt.fecfinvigencia "); sb.append(" and c.feccorrida between :datIni and :datFim "); sb.append(" and c.corrida_id in (:corridaId) "); - sb.append(" and ROWNUM < 2 "); + sb.append(" and CODPRODUTO(t.origen_id , t.destino_id , rc.ruta_id) not in (select codproduto from fiscal_p2) "); + sb.append(" and ROWNUM < 50 "); - // FIXME - Implementar a inserção na base de dados. Atenção para checar se tem q ficar em transação ou não - // Query query = getSession().createSQLQuery(sb.toString()); - // query.setParameterList("corridaId", idsCorrida); - // query.setDate("datIni", new java.sql.Date(dataDe.getTime())); - // query.setDate("datFim", new java.sql.Date(dataAte.getTime())); + int qtd = 0; + + Connection connection = null; + try{ + connection = dataSource.getConnection(); + + connection.setAutoCommit(false); + + PreparedStatement ps = connection.prepareStatement(sb.toString()); + + ps.setDate(1, new java.sql.Date(dataDe.getTime())); + ps.setDate(2, new java.sql.Date(dataAte.getTime())); + ps.setString(3,StringUtils.join(idsCorrida, ",")); + + qtd = ps.executeUpdate(); + + connection.commit(); + }catch(Throwable t){ + connection.rollback(); + }finally{ + if (connection != null){ + connection.close(); + } + } + + - // return query.executeUpdate(); + return qtd; - return 0; } private Integer[] getIdsCorrida(List lsEsquemaCorrida) { @@ -1077,7 +1104,7 @@ public class FiscalHibernateDAO implements FiscalDAO { return idsCorrida; } - private int gerarRegistroF2(List lsEsquemaCorrida, Date dataDe, Date dataAte) { + private int gerarRegistroF2(List lsEsquemaCorrida, Date dataDe, Date dataAte) throws SQLException { StringBuilder sb = new StringBuilder(""); sb.append(" INSERT INTO FISCAL_F2 (cnpj, codigo_local_emissao,identificacao_linha, descricao_linha, data_partida, hora_partida, codigo_tipo_viagem) "); sb.append(" select distinct oc.cnpj, t.origen_id as codigo_local_emissao, r.prefixo as identificacao_linha, r.descruta as descricao_linha, to_char(cto.fechorsalida, 'YYYYMMdd') as data_partida, to_char(cto.fechorsalida, 'hh24miss') as hora_partida, (case nvl(c.tiposervicio_id, 0) when 2 then '01' else '00' end) as codigo_tipo_viagem "); @@ -1101,22 +1128,42 @@ public class FiscalHibernateDAO implements FiscalDAO { sb.append(" and cto.fechorsalida between vt.feciniciovigencia and vt.fecfinvigencia "); sb.append(" and c.feccorrida between :datIni and :datFim "); sb.append(" and c.corrida_id in (:corridaId) "); - sb.append(" and ROWNUM < 2 "); + //sb.append(" and ROWNUM < 2 "); Integer[] idsCorrida = getIdsCorrida(lsEsquemaCorrida); - // FIXME - Implementar a inserção na base de dados. Atenção para checar se tem q ficar em transação ou não - // Query query = getSession().createSQLQuery(sb.toString()); - // query.setParameterList("corridaId", idsCorrida); - // query.setDate("datIni", new java.sql.Date(dataDe.getTime())); - // query.setDate("datFim", new java.sql.Date(dataAte.getTime())); - // - // return query.executeUpdate(); + Connection connection = null; + + int qtd = 0; + + try{ + connection = dataSource.getConnection(); + + connection.setAutoCommit(false); + + PreparedStatement ps = connection.prepareStatement(sb.toString()); + + ps.setDate(1, new java.sql.Date(dataDe.getTime())); + ps.setDate(2, new java.sql.Date(dataAte.getTime())); + ps.setString(3,StringUtils.join(idsCorrida, ",")); + + qtd = ps.executeUpdate(); + + connection.commit(); + + }catch(Throwable t){ + connection.rollback(); + }finally{ + if (connection != null){ + connection.close(); + } + } + - return 0; + return qtd; } @Override - public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte) { + public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte) throws SQLException { int gerarRegistroP2 = this.gerarRegistroP2(lsEsquemaCorrida, dataDe, dataAte); int gerarRegistroF2 = this.gerarRegistroF2(lsEsquemaCorrida, dataDe, dataAte); return gerarRegistroP2 + gerarRegistroF2; diff --git a/src/com/rjconsultores/ventaboletos/service/ConstanteService.java b/src/com/rjconsultores/ventaboletos/service/ConstanteService.java index 3b42519c0..46b6c3beb 100644 --- a/src/com/rjconsultores/ventaboletos/service/ConstanteService.java +++ b/src/com/rjconsultores/ventaboletos/service/ConstanteService.java @@ -18,4 +18,6 @@ public interface ConstanteService extends GenericService { public List buscar(String nombconstante); String buscarNombreAmbiente(); + + boolean pafActivo(); } diff --git a/src/com/rjconsultores/ventaboletos/service/FiscalService.java b/src/com/rjconsultores/ventaboletos/service/FiscalService.java index 3f6c61e7b..2745cfedf 100644 --- a/src/com/rjconsultores/ventaboletos/service/FiscalService.java +++ b/src/com/rjconsultores/ventaboletos/service/FiscalService.java @@ -1,6 +1,7 @@ package com.rjconsultores.ventaboletos.service; import java.io.File; +import java.sql.SQLException; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -10,7 +11,7 @@ import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; public interface FiscalService { - public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte); + public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte) throws SQLException; public HashMap importacionFiscalECFValidaReducaoZ(Date inicio, Date fim, Empresa empresa); diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ConstanteServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ConstanteServiceImpl.java index f25215f23..4fde0bd01 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/ConstanteServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/ConstanteServiceImpl.java @@ -12,6 +12,7 @@ import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import java.util.Calendar; import java.util.List; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -80,4 +81,20 @@ public class ConstanteServiceImpl implements ConstanteService { return constante.getValorconstante(); } + + @Override + public boolean pafActivo(){ + List list = constanteDAO.buscar("HOMOLOGACAO_PAF"); + if (list.isEmpty()){ + return false; + } + + Constante constante = list.get(0); + + if (StringUtils.isBlank(constante.getValorconstante())){ + return false; + } + + return constante.getValorconstante().equalsIgnoreCase("true"); + } } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java index b86bcd17b..51fc1c61c 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/FiscalServiceImpl.java @@ -69,7 +69,7 @@ public class FiscalServiceImpl implements FiscalService { @Override @Transactional - public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte) { + public int gerarRegistroP2_F2(List lsEsquemaCorrida, Date dataDe, Date dataAte) throws SQLException { return fiscalDAO.gerarRegistroP2_F2(lsEsquemaCorrida, dataDe, dataAte); } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/ApplicationProperties.java b/src/com/rjconsultores/ventaboletos/utilerias/ApplicationProperties.java index bda64b8e2..5307890af 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/ApplicationProperties.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/ApplicationProperties.java @@ -129,12 +129,6 @@ public class ApplicationProperties { String property = p.getProperty("contrasena.validaComplejidad", "0"); return property.equals("1"); } - - public boolean pafActivo() { - String property = p.getProperty("paf.activo", "0"); - return property.equals("1"); - } - public boolean habilitarCustomSequence() { String property = p.getProperty("custom.sequence", "0"); return property.equals("1");