diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/BusquedaDatosTicketHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/BusquedaDatosTicketHibernateDAO.java index e0fa6d372..0909c150d 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/BusquedaDatosTicketHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/BusquedaDatosTicketHibernateDAO.java @@ -23,12 +23,14 @@ import com.rjconsultores.ventaboletos.entidad.Pacote; import com.rjconsultores.ventaboletos.enums.SituacaoVendaPacote; import com.rjconsultores.ventaboletos.vo.busquedapacotes.ClientePacoteVO; import com.rjconsultores.ventaboletos.vo.busquedapacotes.EnderecoApanheVO; +import com.rjconsultores.ventaboletos.vo.busquedapacotes.ItemAdicionalVO; import com.rjconsultores.ventaboletos.vo.busquedapacotes.PacoteVO; import com.rjconsultores.ventaboletos.vo.busquedapacotes.PagamentoVO; import com.rjconsultores.ventaboletos.vo.busquedapacotes.PassageiroVO; import com.rjconsultores.ventaboletos.vo.busquedapacotes.ServicoVO; import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosClientePacoteResultTransformer; import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosEnderecoApanheResultTransformer; +import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosItemAdicionalResultTransformer; import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosPagamentoResultTransformer; import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosPassageiroResultTransformer; import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosServicoResultTransformer; @@ -57,6 +59,7 @@ public class BusquedaDatosTicketHibernateDAO extends GenericHibernateDAO carregarDadosPacotes(Date fecInicial, Date fecFinal) { StringBuilder sQuery = new StringBuilder(); - sQuery.append("SELECT VP.VENDAPACOTE_ID, VP.DATAPACOTE, VP.DATAVENDA, VP.SUBTOTAL, VP.TOTAL, VP.DESCONTO, VP.NUMOPERACION, P.NOMPACOTE, E.NOMBEMPRESA, ") - .append("VP.SITUACAO, PV.NOMBPUNTOVENTA, VP.USUARIO_ID, ") + sQuery.append("SELECT VP.VENDAPACOTE_ID, VP.DATAPACOTE, VP.DATAVENDA, VP.SUBTOTAL, VP.TOTAL, VP.DESCONTO, VP.NUMOPERACION, P.PACOTE_ID, ") + .append("P.NOMPACOTE, P.DESCPACOTE, E.NOMBEMPRESA, VP.SITUACAO, PV.NOMBPUNTOVENTA, VP.USUARIO_ID, ") .append("COUNT(TVP.TARIFAVENDAPACOTE_ID) AS QTDEPASSAGEIRO, ") .append("SUM(B.PRECIOPAGADO) AS TOTALTARIFA, ") .append("SUM(B.IMPORTETAXAEMBARQUE) AS TOTALTAXAEMBARQUE, ") .append("SUM(B.IMPORTEPEDAGIO) AS TOTALPEDAGIO, ") .append("SUM(B.IMPORTEOUTROS) AS TOTALOUTROS, ") .append("SUM(B.IMPORTESEGURO) AS TOTALSEGURO, ") - .append("COUNT(PFP.PACOTEFORMAPAGO_ID) AS QTDEPACOTEFORMAPAGO ") + .append("(SELECT COUNT(DISTINCT PFP.PACOTEFORMAPAGO_ID) FROM PACOTE_FORMAPAGO PFP WHERE PFP.VENDAPACOTE_ID = VP.VENDAPACOTE_ID) AS QTDEPACOTEFORMAPAGO ") .append("FROM VENDA_PACOTE VP ") .append("JOIN PACOTE P ON P.PACOTE_ID = VP.PACOTE_ID ") .append("JOIN EMPRESA E ON E.EMPRESA_ID = P.EMPRESA_ID ") .append("LEFT JOIN PUNTO_VENTA PV ON PV.PUNTOVENTA_ID = VP.PUNTOVENTA_ID ") .append("LEFT JOIN TARIFA_VENDA_PACOTE TVP ON TVP.VENDAPACOTE_ID = VP.VENDAPACOTE_ID ") .append("LEFT JOIN BOLETO B ON B.BOLETO_ID = TVP.BOLETO_ID ") - .append("LEFT JOIN PACOTE_FORMAPAGO PFP ON PFP.VENDAPACOTE_ID = VP.VENDAPACOTE_ID ") .append("WHERE (B.BOLETO_ID IS NULL OR B.INDSTATUSBOLETO = 'V') ") .append("AND VP.DATAPACOTE BETWEEN :fecInicial AND :fecFinal ") .append("GROUP BY VP.VENDAPACOTE_ID, VP.DATAPACOTE, VP.DATAVENDA, VP.SUBTOTAL, VP.TOTAL, ") - .append("VP.DESCONTO, VP.NUMOPERACION, P.NOMPACOTE, E.NOMBEMPRESA, VP.SITUACAO, PV.NOMBPUNTOVENTA, VP.USUARIO_ID "); + .append("VP.DESCONTO, VP.NUMOPERACION, P.PACOTE_ID, P.NOMPACOTE, P.DESCPACOTE, E.NOMBEMPRESA, VP.SITUACAO, PV.NOMBPUNTOVENTA, VP.USUARIO_ID "); SQLQuery query = getSession().createSQLQuery(sQuery.toString()) .addScalar("VENDAPACOTE_ID", LongType.INSTANCE) @@ -98,7 +100,9 @@ public class BusquedaDatosTicketHibernateDAO extends GenericHibernateDAO pacotes) { + StringBuilder sQuery = new StringBuilder(); + sQuery.append("SELECT DISTINCT IA.DESCITEMADICIONAL, VP.VENDAPACOTE_ID, PI.ITEMADICIONAL_ID ") + .append("FROM ITEM_ADICIONAL IA ") + .append("JOIN PACOTE_ITEM PI ON IA.ITEMADICIONAL_ID = PI.ITEMADICIONAL_ID ") + .append("JOIN PACOTE P ON P.PACOTE_ID = PI.PACOTE_ID ") + .append("JOIN VENDA_PACOTE VP ON VP.PACOTE_ID = P.PACOTE_ID ") + .append("WHERE IA.ACTIVO = 1 ") + .append("AND VP.VENDAPACOTE_ID IN (:vendapacoteIds) "); + + SQLQuery query = getSession().createSQLQuery(sQuery.toString()) + .addScalar("DESCITEMADICIONAL", StringType.INSTANCE) + .addScalar("VENDAPACOTE_ID", LongType.INSTANCE) + .addScalar("ITEMADICIONAL_ID", LongType.INSTANCE); + + query.setResultTransformer(new DatosItemAdicionalResultTransformer()); + query.setParameterList("vendapacoteIds", getVendapacoteIds(pacotes)); + + List itens = query.list(); + for (PacoteVO pacote : pacotes) { + for (ItemAdicionalVO itemAdicional : itens) { + if(itemAdicional.getVendapacoteId().equals(pacote.getVendapacoteId())) { + if(pacote.getItens() == null) { + pacote.setItens(new ArrayList()); + } + pacote.getItens().add(itemAdicional); + } + } + } + } } diff --git a/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/ItemAdicionalVO.java b/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/ItemAdicionalVO.java new file mode 100644 index 000000000..840cccf05 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/ItemAdicionalVO.java @@ -0,0 +1,41 @@ +package com.rjconsultores.ventaboletos.vo.busquedapacotes; + +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.XmlType; + +@XmlRootElement +@XmlType(propOrder = {"descitemadicional"}) +public class ItemAdicionalVO { + + private Long itemadicionalId; + private String descitemadicional; + private Long vendapacoteId; + + public String getDescitemadicional() { + return descitemadicional; + } + + public void setDescitemadicional(String descitemadicional) { + this.descitemadicional = descitemadicional; + } + + @XmlTransient + public Long getVendapacoteId() { + return vendapacoteId; + } + + public void setVendapacoteId(Long vendapacoteId) { + this.vendapacoteId = vendapacoteId; + } + + @XmlTransient + public Long getItemadicionalId() { + return itemadicionalId; + } + + public void setItemadicionalId(Long itemadicionalId) { + this.itemadicionalId = itemadicionalId; + } + +} diff --git a/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/PacoteVO.java b/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/PacoteVO.java index 718d7b2b8..1b1371b9f 100644 --- a/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/PacoteVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/PacoteVO.java @@ -12,15 +12,17 @@ import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; @XmlRootElement(name = "pacote") -@XmlType(propOrder = { "numoperacao", "datavenda", "datapacote", "nompacote", "usuariovenda", "status", "pontoVenda", "empresa", "quantidade", +@XmlType(propOrder = { "numoperacao", "datavenda", "datapacote", "nompacote", "pacoteId", "descpacote", "usuariovenda", "status", "pontoVenda", "empresa", "quantidade", "totalTarifa", "totalSeguro", "totalOutros", "totalPedagio", "totalTaxaEmbarque", "valorsubtotal", "valortotal", "valordesconto", - "formaspagamento", "servico", "pax", "enderecoApanhe", "clientePacote" }) + "formaspagamento", "servico", "pax", "enderecoApanhe", "clientePacote", "itens" }) public class PacoteVO { private Long vendapacoteId; private Date datapacote; private Date datavenda; - private String nompacote; + private Long pacoteId; + private String nompacote; + private String descpacote; private String numoperacao; private Integer usuariovenda; private String status; @@ -43,6 +45,7 @@ public class PacoteVO { private List formaspagamento = new ArrayList(); private List pax = new ArrayList(); + private List itens = new ArrayList(); /* Auxiliares */ private Integer qtdePacoteFormaspago; @@ -245,4 +248,30 @@ public class PacoteVO { this.qtdePacoteFormaspago = qtdePacoteFormaspago; } + public String getDescpacote() { + return descpacote; + } + + public void setDescpacote(String descpacote) { + this.descpacote = descpacote; + } + + @XmlElementWrapper + @XmlElement(name = "itemPacote", type = ItemAdicionalVO.class) + public List getItens() { + return itens; + } + + public void setItens(List itens) { + this.itens = itens; + } + + public Long getPacoteId() { + return pacoteId; + } + + public void setPacoteId(Long pacoteId) { + this.pacoteId = pacoteId; + } + } diff --git a/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/transformer/DatosItemAdicionalResultTransformer.java b/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/transformer/DatosItemAdicionalResultTransformer.java new file mode 100644 index 000000000..02aeca015 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/transformer/DatosItemAdicionalResultTransformer.java @@ -0,0 +1,55 @@ +package com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.hibernate.transform.ResultTransformer; + +import com.rjconsultores.ventaboletos.vo.busquedapacotes.ItemAdicionalVO; + +public class DatosItemAdicionalResultTransformer implements ResultTransformer { + + private static final long serialVersionUID = 1L; + + @Override + @SuppressWarnings({ "unchecked", "rawtypes" }) + public List transformList(List mapList) { + Map itens = new HashMap(); + + for (Object objmap : mapList) { + Map tupleMap = (Map) objmap; + Long itemadicionalId = (Long) tupleMap.get("ITEMADICIONAL_ID"); + + if(!itens.containsKey(itemadicionalId)){ + ItemAdicionalVO itemAdicional = new ItemAdicionalVO(); + itemAdicional.setItemadicionalId(itemadicionalId); + setDatosItemAdicional(itemAdicional, tupleMap); + itens.put(itemadicionalId+""+itemAdicional.getVendapacoteId(), itemAdicional); + } + } + + List itemAdicionalList = new ArrayList(); + itemAdicionalList.addAll(itens.values()); + + return itemAdicionalList; + } + + @Override + public Object transformTuple(Object[] data, String[] aliases) { + Map row = new HashMap(); + + for(int index = 0; index < aliases.length; index++){ + row.put(aliases[index], data[index]); + } + + return row; + } + + private void setDatosItemAdicional(ItemAdicionalVO itemAdicional, Map tupleMap) { + itemAdicional.setVendapacoteId((Long) tupleMap.get("VENDAPACOTE_ID")); + itemAdicional.setDescitemadicional((String) tupleMap.get("DESCITEMADICIONAL")); + } + +} diff --git a/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/transformer/DatosTicketResultTransformer.java b/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/transformer/DatosTicketResultTransformer.java index 8a82144ab..e39e92a09 100644 --- a/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/transformer/DatosTicketResultTransformer.java +++ b/src/com/rjconsultores/ventaboletos/vo/busquedapacotes/transformer/DatosTicketResultTransformer.java @@ -7,6 +7,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.apache.commons.lang.StringEscapeUtils; +import org.apache.commons.lang.StringUtils; import org.hibernate.transform.ResultTransformer; import com.rjconsultores.ventaboletos.enums.SituacaoVendaPacote; @@ -66,6 +68,9 @@ public class DatosTicketResultTransformer implements ResultTransformer { } } + pacote.setPacoteId((Long) tupleMap.get("PACOTE_ID")); + pacote.setDescpacote((String) tupleMap.get("DESCPACOTE")); + pacote.setNompacote((String) tupleMap.get("NOMPACOTE")); pacote.setPontoVenda((String) tupleMap.get("NOMBPUNTOVENTA")); pacote.setEmpresa((String) tupleMap.get("NOMBEMPRESA")); pacote.setQuantidade((Integer) tupleMap.get("QTDEPASSAGEIRO")); @@ -79,209 +84,10 @@ public class DatosTicketResultTransformer implements ResultTransformer { pacote.setValordesconto((BigDecimal) tupleMap.get("DESCONTO")); pacote.setQtdePacoteFormaspago((Integer) tupleMap.get("QTDEPACOTEFORMAPAGO")); - } - - /*private void setFormasPagamento(PacoteVO pacote, Map tupleMap){ - - PagamentoVO pagamento = new PagamentoVO(); - pagamento.setMoeda("R$"); - - BigDecimal valorPagamento = (BigDecimal)tupleMap.get("importe"); - pagamento.setValor(valorPagamento); - - String cvePago = (String)tupleMap.get("cvePago"); - - boolean isVentaCartaoCredito = isVentaCartaoCredito(cvePago); - boolean isVentaCartaoDebito = isVentaCartaoDebito(cvePago); - - if(isVentaCartaoCredito || isVentaCartaoDebito){ - PagamentoCartaoVO pgtoCartao = new PagamentoCartaoVO(); - Integer tipo = (isVentaCartaoCredito) ? PagamentoCartaoVO.TIPO_CREDITO : PagamentoCartaoVO.TIPO_DEBITO; - pgtoCartao.setTipo(tipo); - pgtoCartao.setBandeira(getBandeiraCartao(cvePago)); - pagamento.setCartao(pgtoCartao); - pagamento.setFormapagamento("CARTAO"); - } else { - String descPago = (String)tupleMap.get("descPago"); - pagamento.setFormapagamento(descPago); - } - - pacote.setValortotal(pacote.getValortotal().add(valorPagamento)); - - pacote.getFormaspagamento().add(pagamento); - } - - private boolean isVentaCartaoCredito(String cvePago){ - return PagamentoCartaoVO.CREDITO.equals(cvePago) - || PagamentoCartaoVO.VISA_CREDITO.equals(cvePago) - || PagamentoCartaoVO.MASTER_CREDITO.equals(cvePago); - } - - private boolean isVentaCartaoDebito(String cvePago){ - return PagamentoCartaoVO.DEBITO.equals(cvePago) - || PagamentoCartaoVO.VISA_ELECTRON.equals(cvePago) - || PagamentoCartaoVO.MAESTRO.equals(cvePago); - } - - private boolean isVentaCartaoVisa(String cvePago){ - return PagamentoCartaoVO.MAESTRO.equals(cvePago) - || PagamentoCartaoVO.MASTER_CREDITO.equals(cvePago); - } - - private boolean isVentaDebitoMaster(String cvePago){ - return PagamentoCartaoVO.VISA_ELECTRON.equals(cvePago) - || PagamentoCartaoVO.VISA_CREDITO.equals(cvePago); - } - - private String getBandeiraCartao(String cvePago){ - String bandeiraCartao = ""; - - if(isVentaCartaoVisa(cvePago)){ - bandeiraCartao = "VISA"; - }else if(isVentaDebitoMaster(cvePago)){ - bandeiraCartao = "MASTERCARD"; - } else { - bandeiraCartao = String.format("OUTROS(%s)",cvePago); + if(StringUtils.isNotBlank(pacote.getDescpacote())){ + pacote.setDescpacote(StringEscapeUtils.unescapeHtml(pacote.getDescpacote().replaceAll(" ", " ").replaceAll("\\<.*?\\>", " ")).replaceAll("\\s+", " ")); } - return bandeiraCartao; } - private void setServico(PacoteVO pacote, Map tupleMap){ - - ServicoVO servico = pacote.getServico(); - servico = (servico == null) ? new ServicoVO() : servico; - - Date dataviagem = (Date)tupleMap.get("fechorViaje"); - servico.setDataviagem(dataviagem); - - setDatosPassageiro(servico, pacote, tupleMap); - - Integer quantidade = pacote.getQuantidade(); - pacote.setQuantidade(++quantidade); - - Integer origenId = (Integer)tupleMap.get("origenId"); - servico.setLocalorigem(origenId); - - Date fechorViaje = (Date)tupleMap.get("fechorViaje"); - servico.setDataviagem(fechorViaje); - - pacote.setServico(servico); - } - - private void setDatosPassageiro(ServicoVO servico, PacoteVO pacote, Map tupleMap){ - - PassageiroVO passageiro = new PassageiroVO(); - - String docPassageiro = (String) tupleMap.get("numIdentificacion"); - passageiro.setDocumento(docPassageiro); - - String nomePassageiro = (String) tupleMap.get("nombPasajero"); - passageiro.setNome(nomePassageiro); - - Long boletoId = (Long) tupleMap.get("boletoId"); - passageiro.setBoletoId(boletoId); - - String numBoleto = (String) tupleMap.get("numBoleto"); - passageiro.setNumboleto(numBoleto); - - setCategoriaPassageiro(passageiro, tupleMap); - - List pax = servico.getPax(); - - if(!pax.contains(passageiro)){ - pax.add(passageiro); - } - } - - private void setCategoriaPassageiro(PassageiroVO passageiro, Map tupleMap){ - - Integer categoriaId = (Integer) tupleMap.get("categoriaId"); - String categoria = (String) tupleMap.get("categoria"); - String categoriaWS = ""; - - if(isCategoriaAdult(categoriaId)){ - - categoriaWS = PassageiroVO.CATEGORIA_ADULT; - - }else if(isCategoriaInfant(categoriaId)){ - - categoriaWS = PassageiroVO.CATEGORIA_INFANT; - - }else if(isCategoriaChild(categoriaId)){ - - categoriaWS = PassageiroVO.CATEGORIA_CHILD; - - }else if(isCategoriaSenior(categoriaId)){ - - categoriaWS = PassageiroVO.CATEGORIA_SENIOR; - - }else{ - categoriaWS = String.format("%s-%s", categoriaId.toString(), categoria); - } - - passageiro.setCategoria(categoriaWS); - - } - - private boolean isCategoriaSenior(Integer categoriaId){ - - return (PassageiroVO.CATEGORIA_IDOSO_100 == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_50 == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_CE == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_MA == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_50_MA == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_100_PB_BIL == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_50_PB_BIL == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_100_SP == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_100_GO == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_50_GO == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_100_TO == categoriaId - || PassageiroVO.CATEGORIA_IDOSO_50_TO == categoriaId); - } - - private boolean isCategoriaAdult(Integer categoriaId){ - - return (PassageiroVO.CATEGORIA_DEFICIENTE == categoriaId - || PassageiroVO.CATEGORIA_DEFICIENTE_GO == categoriaId - || PassageiroVO.CATEGORIA_DEFICIENTE_TO == categoriaId - || PassageiroVO.CATEGORIA_DEFICIENTE_PB == categoriaId - || PassageiroVO.CATEGORIA_DEFICIENTE_BA == categoriaId - || PassageiroVO.CATEGORIA_DEFICIENTE_MA == categoriaId - || PassageiroVO.CATEGORIA_DEFICIENTE_PI == categoriaId - || PassageiroVO.CATEGORIA_ESTUDANTE == categoriaId - || PassageiroVO.CATEGORIA_ESTUDANTE_PB == categoriaId - || PassageiroVO.CATEGORIA_ESTUDANTE_CE_LIBERCAD == categoriaId - || PassageiroVO.CATEGORIA_FISCAL_DO_TRABALHO == categoriaId - || PassageiroVO.CATEGORIA_OPERADOR_A_TRABALHO == categoriaId - || PassageiroVO.CATEGORIA_PRF == categoriaId - || PassageiroVO.CATEGORIA_POL_MILITAR_MA == categoriaId - || PassageiroVO.CATEGORIA_MILITAR_PI_POL == categoriaId - || PassageiroVO.CATEGORIA_CE_PM_BOMBEIRO == categoriaId - || PassageiroVO.CATEGORIA_CE_DETRAN == categoriaId - || PassageiroVO.CATEGORIA_MA_OFI_JUSTICA == categoriaId - || PassageiroVO.CATEGORIA_ERFP == categoriaId - || PassageiroVO.CATEGORIA_MA_SINFRA == categoriaId - || PassageiroVO.CATEGORIA_SINDICATO_PB == categoriaId - || PassageiroVO.CATEGORIA_SINDICATO_CE == categoriaId - || PassageiroVO.CATEGORIA_SINDICATO_PI == categoriaId - || PassageiroVO.CATEGORIA_PB_PORTADOR_DE_CA == categoriaId - || PassageiroVO.CATEGORIA_PB_ACOMP_PORT_CA == categoriaId - || PassageiroVO.CATEGORIA_PB_INTEG_PARAIBA == categoriaId - || PassageiroVO.CATEGORIA_CORTESIA_AFETIVIDADE == categoriaId - || PassageiroVO.CATEGORIA_CORTESIA_EMPRESA == categoriaId - || PassageiroVO.CATEGORIA_NORMAL == categoriaId ); - } - - private boolean isCategoriaInfant(Integer categoriaId){ - - return false; - } - - private boolean isCategoriaChild(Integer categoriaId){ - - return (PassageiroVO.CATEGORIA_CRIANCA_GRATUIDADE == categoriaId); - - }*/ - }