diff --git a/src/com/rjconsultores/ventaboletos/dao/SeguroTarifaDAO.java b/src/com/rjconsultores/ventaboletos/dao/SeguroTarifaDAO.java new file mode 100644 index 000000000..7bf5ec729 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/SeguroTarifaDAO.java @@ -0,0 +1,13 @@ +package com.rjconsultores.ventaboletos.dao; + +import com.rjconsultores.ventaboletos.entidad.SeguroTarifa; + +public interface SeguroTarifaDAO { + /** + * See {@link SeguroTarifa#atualizarSeguroPorTarifa(Integer, Integer, Integer)} + * @param rutaId + * @param orgaoId + * @param usuarioId + */ + public void atualizarSeguroPorTarifa(Integer rutaId, Integer orgaoId,Integer usuarioId); +} diff --git a/src/com/rjconsultores/ventaboletos/dao/TarifaOficialDAO.java b/src/com/rjconsultores/ventaboletos/dao/TarifaOficialDAO.java index b0817235e..a2ac76957 100644 --- a/src/com/rjconsultores/ventaboletos/dao/TarifaOficialDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/TarifaOficialDAO.java @@ -29,4 +29,12 @@ public interface TarifaOficialDAO { * @param usuarioId TODO */ public void copiarParaTarifa(VigenciaTarifa vigenciaTarifa, Integer usuarioId); + + /** + * See {@link TarifaOficialService#atualizarTaxaEmbarque(Integer, Integer)} + * @param rutaId + * @param usuarioId TODO + * @param orgaoConcedenteId TODO + */ + public void atualizarTaxaEmbarque(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId); } diff --git a/src/com/rjconsultores/ventaboletos/dao/TaxaEmbarqueDAO.java b/src/com/rjconsultores/ventaboletos/dao/TaxaEmbarqueDAO.java deleted file mode 100644 index b187f3708..000000000 --- a/src/com/rjconsultores/ventaboletos/dao/TaxaEmbarqueDAO.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.rjconsultores.ventaboletos.dao; - - -public interface TaxaEmbarqueDAO { - /** - * See {@link TaxaEmbarqueServic#atualizarTaxaEmbarque(Integer, Integer, Integer)} - * @param rutaId - * @param usuarioId TODO - * @param orgaoConcedenteId TODO - */ - public void atualizarTaxaEmbarque(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId); -} diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/SeguroTarifaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/SeguroTarifaHibernateDAO.java new file mode 100644 index 000000000..d2179fe64 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/SeguroTarifaHibernateDAO.java @@ -0,0 +1,30 @@ +package com.rjconsultores.ventaboletos.dao.hibernate; + +import org.hibernate.SQLQuery; +import org.hibernate.SessionFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Repository; + +import com.rjconsultores.ventaboletos.dao.SeguroTarifaDAO; +import com.rjconsultores.ventaboletos.dao.sqlbuilder.SQLBuilder; +import com.rjconsultores.ventaboletos.entidad.SeguroTarifa; + +@Repository("seguroTarifaDAO") +public class SeguroTarifaHibernateDAO extends GenericHibernateDAO implements SeguroTarifaDAO { + + @Autowired + private SQLBuilder sqlBuilder; + + @Autowired + public SeguroTarifaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } + + @Override + public void atualizarSeguroPorTarifa(Integer rutaId, Integer orgaoId, Integer usuarioId) { + SQLQuery query = getSession().createSQLQuery(sqlBuilder.getSQLAtualizarSeguroPorTarifa(rutaId, usuarioId, orgaoId)); + query.executeUpdate(); + } + +} diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaOficialHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaOficialHibernateDAO.java index 9ecc65a1f..b59efc9da 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaOficialHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaOficialHibernateDAO.java @@ -1,6 +1,7 @@ package com.rjconsultores.ventaboletos.dao.hibernate; import org.hibernate.Query; +import org.hibernate.SQLQuery; import org.hibernate.SessionFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -17,7 +18,7 @@ public class TarifaOficialHibernateDAO extends GenericHibernateDAO implements TaxaEmbarqueDAO { - - @Autowired - private SQLBuilder sqlBuilder; - - @Autowired - public TaxaEmbarqueHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { - setSessionFactory(factory); - } - - @Override - public void atualizarTaxaEmbarque(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId) { - // Atualizo a taxa de embarque de acordo a parada e km - SQLQuery query = getSession().createSQLQuery(sqlBuilder.getAtualizarTaxaEmbarquePorKmParada(rutaId, usuarioId, orgaoConcedenteId)); - query.executeUpdate(); - - // Atualizo a taxa de embarque de acordo a km do orgao - query = getSession().createSQLQuery(sqlBuilder.getSQLAtualizarTaxaEmbarquePorKmOrgao(rutaId, usuarioId, orgaoConcedenteId)); - query.executeUpdate(); - - // Atualizo a taxa de embarque de acordo a parada e valor fixo - query = getSession().createSQLQuery(sqlBuilder.getSQLAtualizarTaxaEmbarquePorParadaFixo(rutaId, usuarioId, orgaoConcedenteId)); - query.executeUpdate(); - } - -} diff --git a/src/com/rjconsultores/ventaboletos/dao/sqlbuilder/SQLBuilder.java b/src/com/rjconsultores/ventaboletos/dao/sqlbuilder/SQLBuilder.java index ab8d44c14..88e1ee98f 100644 --- a/src/com/rjconsultores/ventaboletos/dao/sqlbuilder/SQLBuilder.java +++ b/src/com/rjconsultores/ventaboletos/dao/sqlbuilder/SQLBuilder.java @@ -26,5 +26,7 @@ public interface SQLBuilder { public String getSQLAtualizarSeguroPorKm(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId); + public String getSQLAtualizarSeguroPorTarifa(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId); + } diff --git a/src/com/rjconsultores/ventaboletos/dao/sqlbuilder/impl/SQLBuilderOracle.java b/src/com/rjconsultores/ventaboletos/dao/sqlbuilder/impl/SQLBuilderOracle.java index ed1d5c69a..e4c851717 100644 --- a/src/com/rjconsultores/ventaboletos/dao/sqlbuilder/impl/SQLBuilderOracle.java +++ b/src/com/rjconsultores/ventaboletos/dao/sqlbuilder/impl/SQLBuilderOracle.java @@ -82,7 +82,7 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append(" and r.activo = 1 "); sb.append(" and tc.activo = 1 "); sb.append(" and m.moneda_id = 1 "); - if (orgaoConcedenteId != null){ + if (orgaoConcedenteId != null) { sb.append(" and oc.orgaoconcedente_id = ").append(orgaoConcedenteId); } sb.append(" and "); @@ -99,7 +99,7 @@ public class SQLBuilderOracle implements SQLBuilder { @Override public String getSQLAtualizarTarifaOficial(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId) { StringBuilder sb = new StringBuilder(""); - + sb.append("UPDATE TARIFA_OFICIAL SET PRECIO = "); sb.append("( "); sb.append("select "); @@ -128,7 +128,7 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append(" and r.activo = 1 "); sb.append(" and tc.activo = 1 "); sb.append(" and m.moneda_id = 1 "); - if (orgaoConcedenteId != null){ + if (orgaoConcedenteId != null) { sb.append(" and oc.orgaoconcedente_id = ").append(orgaoConcedenteId); } sb.append(" and t.tramo_id = TARIFA_OFICIAL.tramo_id "); @@ -143,10 +143,10 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append(" "); sb.append("where "); sb.append(" activo = 1 "); - if (rutaId != null){ + if (rutaId != null) { sb.append(" and ruta_id = ").append(rutaId); } - if (orgaoConcedenteId != null){ + if (orgaoConcedenteId != null) { sb.append(" and orgaoconcedente_id = ").append(orgaoConcedenteId); } @@ -185,13 +185,13 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append(" "); sb.append("where "); sb.append(" tarifa_oficial.activo = 1 "); - if (rutaId != null){ + if (rutaId != null) { sb.append(" and tarifa_oficial.ruta_id = ").append(rutaId); } - if (orgaoConcedenteId != null){ + if (orgaoConcedenteId != null) { sb.append(" and tarifa_oficial.orgaoconcedente_id = ").append(orgaoConcedenteId); } - + return sb.toString(); } @@ -228,12 +228,12 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append(" "); sb.append("where "); sb.append(" tarifa_oficial.activo = 1 "); - - if (rutaId != null){ + + if (rutaId != null) { sb.append(" and tarifa_oficial.ruta_id = ").append(rutaId); } - - if (orgaoConcedenteId != null){ + + if (orgaoConcedenteId != null) { sb.append(" and tarifa_oficial.orgaoconcedente_id = ").append(orgaoConcedenteId); } return sb.toString(); @@ -265,10 +265,10 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append(" "); sb.append("where "); sb.append(" tarifa_oficial.activo = 1 "); - if (rutaId != null){ + if (rutaId != null) { sb.append(" and tarifa_oficial.ruta_id = ").append(rutaId); } - if (orgaoConcedenteId != null){ + if (orgaoConcedenteId != null) { sb.append(" and tarifa_oficial.orgaoconcedente_id = ").append(orgaoConcedenteId); } return sb.toString(); @@ -291,7 +291,7 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append(" from "); sb.append(" seguro_km sk1 "); sb.append(" where "); - sb.append(" sk1.KMATE >= t.CANTKMREAL and sk1.activo = 1 "); + sb.append(" sk1.KMATE >= t.CANTKMREAL and sk1.activo = 1 and tao.ORGAOCONCEDENTE_ID = sk1.ORGAOCONCEDENTE_ID "); sb.append(" ) "); sb.append(" and tao.marca_id = tarifa_oficial.marca_id "); sb.append(" and tao.orgaoconcedente_id = tarifa_oficial.orgaoconcedente_id "); @@ -304,13 +304,53 @@ public class SQLBuilderOracle implements SQLBuilder { sb.append(" "); sb.append("where "); sb.append(" tarifa_oficial.activo = 1 "); - if (rutaId != null){ + if (rutaId != null) { sb.append(" and tarifa_oficial.ruta_id = ").append(rutaId); } - if (orgaoConcedenteId != null){ + if (orgaoConcedenteId != null) { sb.append(" and tarifa_oficial.orgaoconcedente_id = ").append(orgaoConcedenteId); } - + + return sb.toString(); + } + + @Override + public String getSQLAtualizarSeguroPorTarifa(Integer rutaId, Integer usuarioId, Integer orgaoConcedenteId) { + StringBuilder sb = new StringBuilder(""); + sb.append("update tarifa_oficial set IMPORTESEGURO = "); + sb.append("( "); + sb.append("select "); + sb.append(" st.VALORTAXA "); + sb.append("from "); + sb.append(" tarifa_oficial tao "); + sb.append(" inner join seguro_tarifa st on st.VALORTARIFAATE >= tao.precio and st.activo = 1 and tao.ORGAOCONCEDENTE_ID = st.ORGAOCONCEDENTE_ID "); + sb.append("where "); + sb.append(" st.VALORTARIFAATE= "); + sb.append(" (select min(st1.VALORTARIFAATE) "); + sb.append(" from "); + sb.append(" seguro_tarifa st1 "); + sb.append(" where "); + sb.append(" st1.VALORTARIFAATE >= tao.precio and st1.activo = 1 and tao.ORGAOCONCEDENTE_ID = st1.ORGAOCONCEDENTE_ID "); + sb.append(" ) "); + sb.append(" and tao.marca_id = tarifa_oficial.marca_id "); + sb.append(" and tao.orgaoconcedente_id = tarifa_oficial.orgaoconcedente_id "); + sb.append(" and tao.claseservicio_id=tarifa_oficial.claseservicio_id "); + sb.append(" and tao.moneda_id = tarifa_oficial.moneda_id "); + sb.append(" and tao.ruta_id = tarifa_oficial.ruta_id "); + sb.append(" and tao.tramo_id = tarifa_oficial.tramo_id "); + sb.append(") "); + sb.append(", usuario_id = ").append(usuarioId).append(",fecmodif = sysdate "); + sb.append(" "); + sb.append("where "); + sb.append(" tarifa_oficial.activo = 1 "); + + if (rutaId != null) { + sb.append(" and tarifa_oficial.ruta_id = ").append(rutaId); + } + if (orgaoConcedenteId != null) { + sb.append(" and tarifa_oficial.orgaoconcedente_id = ").append(orgaoConcedenteId); + } + return sb.toString(); } diff --git a/src/com/rjconsultores/ventaboletos/service/SeguroTarifaService.java b/src/com/rjconsultores/ventaboletos/service/SeguroTarifaService.java index c5b71af5d..2260379c8 100644 --- a/src/com/rjconsultores/ventaboletos/service/SeguroTarifaService.java +++ b/src/com/rjconsultores/ventaboletos/service/SeguroTarifaService.java @@ -1,5 +1,16 @@ package com.rjconsultores.ventaboletos.service; -public interface SeguroTarifaService { +import com.rjconsultores.ventaboletos.exception.BusinessException; +public interface SeguroTarifaService { + + /** + * Atualiza o seguro de acordo o valor da tarifa + * + * @param rutaId - Se informado, será filtrado pela ruta + * @param orgaoId -Campo obrigatório + * + */ + public void atualizarSeguroPorTarifa(Integer rutaId, Integer orgaoId) throws BusinessException; + } diff --git a/src/com/rjconsultores/ventaboletos/service/TarifaOficialService.java b/src/com/rjconsultores/ventaboletos/service/TarifaOficialService.java index 449f392ff..d21a8494f 100644 --- a/src/com/rjconsultores/ventaboletos/service/TarifaOficialService.java +++ b/src/com/rjconsultores/ventaboletos/service/TarifaOficialService.java @@ -49,5 +49,22 @@ public interface TarifaOficialService { * @param vigenciaTarifa */ public void copiarParaTarifa(VigenciaTarifa vigenciaTarifa); + + /** + * Atualiza a taxa de embarque da entidade TarifaOficial.
+ * + * Para o cálculo, é usado a seguinte lógica:
+ * - Atualiza de acordo a tabela TAXA_EMBARQUE_PARADA por kilometragem
+ * - Atualiza de acordo a tabela TAXA_EMBARQUE por kilometragem
+ * - Atualiza de acordo a tabela TAXA_EMBARQUE_PARADA por valor fixo
+ * + * A sequencia acima indica a ordem de atualização da taxa de embarque.
+ * + * A taxa de embarque mais restritiva fica por último (TAXA_EMBARQUE_PARADA por valor fixo) + * + * @param rutaId - Se informado, será atualizado apenas a taxa de embarque da ruta informada + * @param orgaoConcedenteId TODO + */ + public void atualizarTaxaEmbarque(Integer rutaId, Integer orgaoConcedenteId); } diff --git a/src/com/rjconsultores/ventaboletos/service/TaxaEmbarqueService.java b/src/com/rjconsultores/ventaboletos/service/TaxaEmbarqueService.java deleted file mode 100644 index 2b98d9bf4..000000000 --- a/src/com/rjconsultores/ventaboletos/service/TaxaEmbarqueService.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.rjconsultores.ventaboletos.service; - -public interface TaxaEmbarqueService { - - /** - * Atualiza a taxa de embarque da entidade TarifaOficial.
- * - * Para o cálculo, é usado a seguinte lógica:
- * - Atualiza de acordo a tabela TAXA_EMBARQUE_PARADA por kilometragem
- * - Atualiza de acordo a tabela TAXA_EMBARQUE por kilometragem
- * - Atualiza de acordo a tabela TAXA_EMBARQUE_PARADA por valor fixo
- * - * A sequencia acima indica a ordem de atualização da taxa de embarque.
- * - * A taxa de embarque mais restritiva fica por último (TAXA_EMBARQUE_PARADA por valor fixo) - * - * @param rutaId - Se informado, será atualizado apenas a taxa de embarque da ruta informada - * @param orgaoConcedenteId TODO - */ - public void atualizarTaxaEmbarque(Integer rutaId, Integer orgaoConcedenteId); - -} diff --git a/src/com/rjconsultores/ventaboletos/service/impl/SeguroTarifaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/SeguroTarifaServiceImpl.java new file mode 100644 index 000000000..9cbd354ff --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/service/impl/SeguroTarifaServiceImpl.java @@ -0,0 +1,26 @@ +package com.rjconsultores.ventaboletos.service.impl; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.rjconsultores.ventaboletos.dao.SeguroTarifaDAO; +import com.rjconsultores.ventaboletos.exception.BusinessException; +import com.rjconsultores.ventaboletos.service.SeguroTarifaService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; + +@Service("seguroTarifaService") +public class SeguroTarifaServiceImpl implements SeguroTarifaService { + + @Autowired + private SeguroTarifaDAO seguroTarifaDAO; + + @Override + public void atualizarSeguroPorTarifa(Integer rutaId, Integer orgaoId) throws BusinessException { + if (orgaoId == null){ + throw new BusinessException("SeguroServiceImpl.msg.validacion.orgaoObligatorio"); + } + + seguroTarifaDAO.atualizarSeguroPorTarifa(rutaId, orgaoId, UsuarioLogado.getUsuarioLogado().getUsuarioId()); + } + +} diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java index a5171c7e7..308249c8c 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TarifaOficialServiceImpl.java @@ -42,5 +42,11 @@ public class TarifaOficialServiceImpl implements TarifaOficialService { return qtd; } + + @Override + @Transactional + public void atualizarTaxaEmbarque(Integer rutaId, Integer orgaoConcedenteId) { + tarifaOficialDAO.atualizarTaxaEmbarque(rutaId, UsuarioLogado.getUsuarioLogado().getUsuarioId(), orgaoConcedenteId); + } } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TaxaEmbarqueServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TaxaEmbarqueServiceImpl.java deleted file mode 100644 index fb44ad2f5..000000000 --- a/src/com/rjconsultores/ventaboletos/service/impl/TaxaEmbarqueServiceImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.rjconsultores.ventaboletos.service.impl; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.rjconsultores.ventaboletos.dao.TaxaEmbarqueDAO; -import com.rjconsultores.ventaboletos.service.TaxaEmbarqueService; -import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; - -@Service("taxaEmbarqueService") -public class TaxaEmbarqueServiceImpl implements TaxaEmbarqueService{ - @Autowired - private TaxaEmbarqueDAO taxaEmbarqueDAO; - - @Override - @Transactional - public void atualizarTaxaEmbarque(Integer rutaId, Integer orgaoConcedenteId) { - taxaEmbarqueDAO.atualizarTaxaEmbarque(rutaId, UsuarioLogado.getUsuarioLogado().getUsuarioId(), orgaoConcedenteId); - } - -}