diff --git a/pom.xml b/pom.xml index 4aac00419..1ca3c4d1c 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 br.com.rjconsultores ModelWeb - 1.81.0 + 1.82.0 diff --git a/src/com/rjconsultores/ventaboletos/dao/DescontoContratoDAO.java b/src/com/rjconsultores/ventaboletos/dao/DescontoContratoDAO.java new file mode 100644 index 000000000..da17d41c2 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/DescontoContratoDAO.java @@ -0,0 +1,11 @@ +package com.rjconsultores.ventaboletos.dao; + +import java.util.List; + +import com.rjconsultores.ventaboletos.entidad.DescontoContrato; + +public interface DescontoContratoDAO extends GenericDAO{ + + public boolean gravarDescontosContrato(List descontos); + +} diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/DescontoContratoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/DescontoContratoHibernateDAO.java new file mode 100644 index 000000000..d6f3238ad --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/DescontoContratoHibernateDAO.java @@ -0,0 +1,45 @@ +package com.rjconsultores.ventaboletos.dao.hibernate; + +import java.util.List; + +import org.hibernate.Criteria; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Repository; + +import com.rjconsultores.ventaboletos.dao.DescontoContratoDAO; +import com.rjconsultores.ventaboletos.entidad.DescontoContrato; + +@SuppressWarnings("unchecked") +@Repository("descontoContratoDAO") +public class DescontoContratoHibernateDAO extends GenericHibernateDAO implements DescontoContratoDAO { + + @Autowired + public DescontoContratoHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } + + @Override + public List obtenerTodos() { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + + return c.list(); + } + + @Override + public boolean gravarDescontosContrato(List descontos) { + + for (DescontoContrato desconto : descontos) { + if(desconto.getDescontoContratoId() == null) { + suscribir(desconto); + }else { + actualizacion(desconto); + } + } + + return true; + } +} diff --git a/src/com/rjconsultores/ventaboletos/entidad/ContratoCorporativo.java b/src/com/rjconsultores/ventaboletos/entidad/ContratoCorporativo.java index 3896c2e49..b1a3d8993 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/ContratoCorporativo.java +++ b/src/com/rjconsultores/ventaboletos/entidad/ContratoCorporativo.java @@ -3,18 +3,24 @@ package com.rjconsultores.ventaboletos.entidad; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; +import java.util.List; import javax.persistence.Basic; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.OneToMany; import javax.persistence.SequenceGenerator; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; +import org.hibernate.annotations.Where; + import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; @@ -108,6 +114,10 @@ public class ContratoCorporativo implements Serializable { @Temporal(TemporalType.TIMESTAMP) private Date fecModif; + @OneToMany(mappedBy = "contratoId", cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @Where(clause = "ACTIVO=1") + private List descontosContrato; + private transient String nomeClienteCorp; private transient String nomeGrupoContrato; @@ -129,5 +139,31 @@ public class ContratoCorporativo implements Serializable { this.clienteCorporativoId = clienteCorporativoId; this.fecModif = fecModif; } + + @Override + public boolean equals(Object obj) { + if (obj == null ) { + return false; + } + + if (getClass() != obj.getClass()) { + return false; + } + + final ContratoCorporativo other = (ContratoCorporativo) obj; + + if (other.getContratoId() == null ) { + return false; + } + + return this.getContratoId().equals(other.getContratoId()); + } + + @Override + public int hashCode() { + int hash = 7; + hash = 59 * hash + (this.getContratoId() != null ? this.getContratoId().hashCode() : 0); + return hash; + } } \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/entidad/DescontoContrato.java b/src/com/rjconsultores/ventaboletos/entidad/DescontoContrato.java new file mode 100644 index 000000000..965f4d2f2 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/entidad/DescontoContrato.java @@ -0,0 +1,68 @@ +package com.rjconsultores.ventaboletos.entidad; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import com.rjconsultores.ventaboletos.anotacao.Renderizado; +import com.rjconsultores.ventaboletos.enums.EnumDesconto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Entity +@SequenceGenerator(name = "DESCONTO_CONTRATO_SEQ", sequenceName = "DESCONTO_CONTRATO_SEQ", allocationSize = 1) +@Table(name = "DESCONTO_CONTRATO") +public class DescontoContrato implements Serializable { + + private static final long serialVersionUID = -3684489881654368314L; + + @Id + @Basic(optional = false) + @GeneratedValue(strategy = GenerationType.AUTO, generator = "DESCONTO_CONTRATO_SEQ") + @Column(name = "DESCONTOCONTRATO_ID") + private Long descontoContratoId; + + @Column(name = "CONTRATO_ID") + private Long contratoId; + + @Renderizado + @Column(name = "DATA_INICIAL") + private Date dataInicial; + + @Renderizado + @Column(name = "DATA_FINAL") + private Date dataFinal; + + @Renderizado + @Column(name = "PORCENTAGEM") + private BigDecimal porcentagem; + + @Renderizado( conversor = EnumDesconto.class) + @Column(name = "INDDESCONTO") + private boolean indDesconto; + + @Column(name = "ACTIVO") + private Boolean activo; + + @Column(name = "FECMODIF") + @Temporal(TemporalType.TIMESTAMP) + private Date fecModif; + + @Column(name = "USUARIO_ID") + private Integer usuarioId; + +} diff --git a/src/com/rjconsultores/ventaboletos/enums/EnumDesconto.java b/src/com/rjconsultores/ventaboletos/enums/EnumDesconto.java new file mode 100644 index 000000000..cda092cbe --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/enums/EnumDesconto.java @@ -0,0 +1,34 @@ +package com.rjconsultores.ventaboletos.enums; + +public enum EnumDesconto { + + INATIVO("false", "Acrescimo"), + ATIVO("true", "Desconto"); + + private String valor; + private String descricao; + + private EnumDesconto(String valor, String descricao) { + this.valor = valor; + this.descricao = descricao; + } + + public String getValor() { + return valor; + } + + @Override + public String toString() { + return this.descricao; + } + + public static EnumDesconto buscarPeloValor(String tValor) { + for (EnumDesconto valor : EnumDesconto.values()) { + if (valor.getValor().equalsIgnoreCase(tValor)) { + return valor; + } + } + return null; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/service/ContratoService.java b/src/com/rjconsultores/ventaboletos/service/ContratoService.java index 9cb785c10..7d9cf84af 100644 --- a/src/com/rjconsultores/ventaboletos/service/ContratoService.java +++ b/src/com/rjconsultores/ventaboletos/service/ContratoService.java @@ -3,6 +3,7 @@ package com.rjconsultores.ventaboletos.service; import java.util.List; import com.rjconsultores.ventaboletos.entidad.ContratoCorporativo; +import com.rjconsultores.ventaboletos.entidad.DescontoContrato; import com.rjconsultores.ventaboletos.exception.BusinessException; public interface ContratoService{ @@ -18,4 +19,6 @@ public interface ContratoService{ public List buscaLike(String numContrato); public boolean existe(ContratoCorporativo contrato); + + public void gravarDescontosContrato(List lsDesconto); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ContratoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ContratoServiceImpl.java index 07bd0f950..ae0817757 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/ContratoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/ContratoServiceImpl.java @@ -8,7 +8,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.rjconsultores.ventaboletos.dao.ContratoDAO; +import com.rjconsultores.ventaboletos.dao.DescontoContratoDAO; import com.rjconsultores.ventaboletos.entidad.ContratoCorporativo; +import com.rjconsultores.ventaboletos.entidad.DescontoContrato; import com.rjconsultores.ventaboletos.service.ContratoService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; @@ -17,6 +19,9 @@ public class ContratoServiceImpl implements ContratoService { @Autowired private ContratoDAO contratoDAO; + + @Autowired + private DescontoContratoDAO descontoContratoDAO; public List obtenerTodos() { return contratoDAO.obtenerTodos(); @@ -58,4 +63,10 @@ public class ContratoServiceImpl implements ContratoService { public boolean existe(ContratoCorporativo contrato) { return contratoDAO.existe(contrato); } + + @Override + @Transactional + public void gravarDescontosContrato(List lsDescontoBanco) { + descontoContratoDAO.gravarDescontosContrato(lsDescontoBanco); + } }