fixed bug #9708
git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@73082 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
7fc8a4e1b4
commit
8aa53ca764
|
@ -1,11 +1,15 @@
|
|||
package com.rjconsultores.ventaboletos.dao.hibernate;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.hibernate.SQLQuery;
|
||||
import org.hibernate.SessionFactory;
|
||||
import org.hibernate.transform.Transformers;
|
||||
import org.hibernate.type.BigDecimalType;
|
||||
import org.hibernate.type.BooleanType;
|
||||
import org.hibernate.type.DateType;
|
||||
|
@ -22,10 +26,13 @@ import com.rjconsultores.ventaboletos.dao.BusquedaDatosTicketDAO;
|
|||
import com.rjconsultores.ventaboletos.entidad.Pacote;
|
||||
import com.rjconsultores.ventaboletos.enums.SituacaoVendaPacote;
|
||||
import com.rjconsultores.ventaboletos.enums.TipoFormapago;
|
||||
import com.rjconsultores.ventaboletos.utilerias.OcdUtil;
|
||||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.ClientePacoteVO;
|
||||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.DadosBancarioVO;
|
||||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.EnderecoApanheVO;
|
||||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.ItemAdicionalVO;
|
||||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.NotaCreditoVendaPacoteVO;
|
||||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.OcdPacoteVO;
|
||||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.PacoteVO;
|
||||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.PagamentoVO;
|
||||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.PassageiroVO;
|
||||
|
@ -34,10 +41,10 @@ import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosClient
|
|||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosDadosBancarioResultTransformer;
|
||||
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;
|
||||
import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosTicketResultTransformer;
|
||||
import com.rjconsultores.ventaboletos.vo.caja.PagamentoCartaoVO;
|
||||
|
||||
@Repository("busquedaDatosTicketDAO")
|
||||
public class BusquedaDatosTicketHibernateDAO extends GenericHibernateDAO<Pacote, Integer> implements BusquedaDatosTicketDAO {
|
||||
|
@ -52,9 +59,9 @@ public class BusquedaDatosTicketHibernateDAO extends GenericHibernateDAO<Pacote,
|
|||
@Override
|
||||
public List<PacoteVO> buscaDatosTickets(Date fecInicial, Date fecFinal, Date fecVentaInicial, Date fecVentaFinal, Date fecAlteracaoInicial, Date fecAlteracaoFinal) {
|
||||
List<PacoteVO> pacotes = new ArrayList<PacoteVO>();
|
||||
|
||||
try {
|
||||
pacotes = carregarDadosPacotes(fecInicial, fecFinal, fecVentaInicial, fecVentaFinal, fecAlteracaoInicial, fecAlteracaoFinal);
|
||||
|
||||
if(!pacotes.isEmpty()) {
|
||||
carregarDadosPagamento(pacotes, fecInicial, fecFinal, fecVentaInicial, fecVentaFinal, fecAlteracaoInicial, fecAlteracaoFinal);
|
||||
carregarDadosServico(pacotes, fecInicial, fecFinal, fecVentaInicial, fecVentaFinal, fecAlteracaoInicial, fecAlteracaoFinal);
|
||||
|
@ -68,10 +75,20 @@ public class BusquedaDatosTicketHibernateDAO extends GenericHibernateDAO<Pacote,
|
|||
log.error(e.getMessage(), e);
|
||||
pacotes.clear();
|
||||
}
|
||||
|
||||
return pacotes;
|
||||
|
||||
return getPacotesFiltradosReserva(pacotes);
|
||||
}
|
||||
|
||||
private List<PacoteVO> getPacotesFiltradosReserva(List<PacoteVO> pacotes){
|
||||
List<PacoteVO> retorno = new ArrayList<PacoteVO>();
|
||||
for(PacoteVO p : pacotes){
|
||||
if(p.getFormaspagamento() != null && !p.getFormaspagamento().isEmpty()){
|
||||
retorno.add(p);
|
||||
}
|
||||
}
|
||||
return retorno;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<PacoteVO> carregarDadosPacotes(Date fecInicial, Date fecFinal, Date fecVentaInicial, Date fecVentaFinal, Date fecAlteracaoInicial, Date fecAlteracaoFinal) {
|
||||
StringBuilder sQuery = new StringBuilder();
|
||||
|
@ -135,47 +152,63 @@ public class BusquedaDatosTicketHibernateDAO extends GenericHibernateDAO<Pacote,
|
|||
@SuppressWarnings("unchecked")
|
||||
private void carregarDadosPagamento(List<PacoteVO> pacotes, Date fecInicial, Date fecFinal, Date fecVentaInicial, Date fecVentaFinal, Date fecAlteracaoInicial, Date fecAlteracaoFinal) {
|
||||
StringBuilder sQuery = new StringBuilder();
|
||||
sQuery.append("SELECT PFP.PACOTEFORMAPAGO_ID, PFP.VALOR, PFP.VENDAPACOTE_ID, FP.FORMAPAGO_ID, FP.DESCPAGO, CT.TIPOTARJETA, CT.NUMAUTORIZACION, CT.CANTPARCELAS, ")
|
||||
.append("NC.NOTACREDITOVENDAPACOTE_ID, VPC.NUMOPERACION AS NUMOPERACAOPACOTECANCELAMENTO, CT.NOMBTITULAR, CT.FECOPERACION, CT.NUMTARJETA, CT.DESCOPERADORACARTAO, ")
|
||||
.append("FP.TIPO_PAGO, CDP.CAJADIVERSOSPAGO_ID, OCD.OCD_ID, OCD.NUMOPERACION AS NUMOPERACION_OCD ")
|
||||
.append("FROM PACOTE_FORMAPAGO PFP ")
|
||||
.append("JOIN FORMA_PAGO FP ON FP.FORMAPAGO_ID = PFP.FORMAPAGO_ID ")
|
||||
.append("LEFT JOIN CAJA_DIVERSOS CD ON CD.VENDAPACOTE_ID = PFP.VENDAPACOTE_ID ")
|
||||
.append("LEFT JOIN CAJA_DIVERSOS_PAGO CDP ON CDP.CAJADIVERSOS_ID = CD.CAJADIVERSOS_ID ")
|
||||
.append("LEFT JOIN CAJA_TARJETA CT ON CT.CAJATARJETA_ID = CDP.CAJATARJETA_ID ")
|
||||
.append("LEFT JOIN NOTA_CREDITO_VENDA_PACOTE NC ON NC.NOTACREDITOVENDAPACOTE_ID = PFP.NOTACREDITOVENDAPACOTE_ID ")
|
||||
.append("LEFT JOIN OCD OCD ON OCD.OCD_ID = PFP.OCD_ID ")
|
||||
.append("LEFT JOIN VENDA_PACOTE VPC ON NC.VENDAPACOTECANCELAMENTO_ID = VPC.VENDAPACOTE_ID ")
|
||||
.append("LEFT JOIN VENDA_PACOTE VP ON VP.VENDAPACOTE_ID = PFP.VENDAPACOTE_ID ")
|
||||
.append("WHERE 1=1 ");
|
||||
sQuery.append("SELECT ");
|
||||
sQuery.append("PFP.PACOTEFORMAPAGO_ID,");
|
||||
sQuery.append("PFP.VALOR,");
|
||||
sQuery.append("PFP.VENDAPACOTE_ID,");
|
||||
sQuery.append("FP.FORMAPAGO_ID,");
|
||||
sQuery.append("FP.DESCPAGO,");
|
||||
sQuery.append("NC.NOTACREDITOVENDAPACOTE_ID,");
|
||||
sQuery.append("VPC.NUMOPERACION AS NUMOPERACAOPACOTECANCELAMENTO,");
|
||||
sQuery.append("FP.TIPO_PAGO,");
|
||||
sQuery.append("OCD.OCD_ID,");
|
||||
sQuery.append("OCD.NUMOPERACION AS NUMOPERACION_OCD,");
|
||||
sQuery.append("CD.CAJADIVERSOS_ID ");
|
||||
|
||||
sQuery.append("FROM PACOTE_FORMAPAGO PFP ");
|
||||
sQuery.append("JOIN FORMA_PAGO FP ON FP.FORMAPAGO_ID = PFP.FORMAPAGO_ID ");
|
||||
sQuery.append("LEFT JOIN VENDA_PACOTE VP ON VP.VENDAPACOTE_ID = PFP.VENDAPACOTE_ID ");
|
||||
sQuery.append("LEFT JOIN NOTA_CREDITO_VENDA_PACOTE NC ON NC.NOTACREDITOVENDAPACOTE_ID = PFP.NOTACREDITOVENDAPACOTE_ID ");
|
||||
sQuery.append("LEFT JOIN VENDA_PACOTE VPC ON NC.VENDAPACOTECANCELAMENTO_ID = VPC.VENDAPACOTE_ID ");
|
||||
sQuery.append("LEFT JOIN OCD OCD ON OCD.OCD_ID = PFP.OCD_ID ");
|
||||
sQuery.append("INNER JOIN CAJA_DIVERSOS CD ON CD.VENDAPACOTE_ID = PFP.VENDAPACOTE_ID ");
|
||||
|
||||
sQuery.append("WHERE 1=1");
|
||||
|
||||
adicionarFiltros(sQuery, fecInicial, fecFinal, fecVentaInicial, fecVentaFinal, fecAlteracaoInicial, fecAlteracaoFinal);
|
||||
|
||||
sQuery.append("ORDER BY VP.VENDAPACOTE_ID");
|
||||
sQuery.append("ORDER BY VP.VENDAPACOTE_ID, PFP.PACOTEFORMAPAGO_ID");
|
||||
|
||||
SQLQuery query = getSession().createSQLQuery(sQuery.toString())
|
||||
.addScalar("CAJADIVERSOSPAGO_ID", LongType.INSTANCE)
|
||||
.addScalar("VALOR", BigDecimalType.INSTANCE)
|
||||
.addScalar("VENDAPACOTE_ID", LongType.INSTANCE)
|
||||
.addScalar("FORMAPAGO_ID", IntegerType.INSTANCE)
|
||||
.addScalar("DESCPAGO", StringType.INSTANCE)
|
||||
.addScalar("TIPOTARJETA", StringType.INSTANCE)
|
||||
.addScalar("NUMAUTORIZACION", StringType.INSTANCE)
|
||||
.addScalar("CANTPARCELAS", IntegerType.INSTANCE)
|
||||
.addScalar("NOTACREDITOVENDAPACOTE_ID", LongType.INSTANCE)
|
||||
.addScalar("NUMOPERACAOPACOTECANCELAMENTO", StringType.INSTANCE)
|
||||
.addScalar("NOMBTITULAR", StringType.INSTANCE)
|
||||
.addScalar("FECOPERACION", DateType.INSTANCE)
|
||||
.addScalar("NUMTARJETA", StringType.INSTANCE)
|
||||
.addScalar("DESCOPERADORACARTAO", StringType.INSTANCE)
|
||||
.addScalar("TIPO_PAGO", IntegerType.INSTANCE)
|
||||
.addScalar("OCD_ID", LongType.INSTANCE)
|
||||
.addScalar("NUMOPERACION_OCD", StringType.INSTANCE);
|
||||
.addScalar("VALOR", BigDecimalType.INSTANCE)
|
||||
.addScalar("VENDAPACOTE_ID", LongType.INSTANCE)
|
||||
.addScalar("FORMAPAGO_ID", IntegerType.INSTANCE)
|
||||
.addScalar("DESCPAGO", StringType.INSTANCE)
|
||||
.addScalar("NOTACREDITOVENDAPACOTE_ID", LongType.INSTANCE)
|
||||
.addScalar("NUMOPERACAOPACOTECANCELAMENTO", StringType.INSTANCE)
|
||||
.addScalar("TIPO_PAGO", IntegerType.INSTANCE)
|
||||
.addScalar("OCD_ID", LongType.INSTANCE)
|
||||
.addScalar("NUMOPERACION_OCD", StringType.INSTANCE)
|
||||
.addScalar("CAJADIVERSOS_ID", LongType.INSTANCE);
|
||||
|
||||
query.setResultTransformer(new DatosPagamentoResultTransformer());
|
||||
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
|
||||
adicionarFiltros(query, fecInicial, fecFinal, fecVentaInicial, fecVentaFinal, fecAlteracaoInicial, fecAlteracaoFinal);
|
||||
|
||||
List<PagamentoVO> pagamentos = query.list();
|
||||
HashMap<Long, List<HashMap<String, Object>>> resultGroupedByCajaDiversos = new HashMap<Long,List<HashMap<String,Object>>>();
|
||||
|
||||
for(HashMap<String, Object> h : (List<HashMap<String, Object>>) query.list()){
|
||||
Long cajaDiversosId = (Long)h.get("CAJADIVERSOS_ID");
|
||||
if(!resultGroupedByCajaDiversos.containsKey(cajaDiversosId)){
|
||||
List<HashMap<String, Object>> list = new ArrayList<HashMap<String,Object>>();
|
||||
list.add(h);
|
||||
resultGroupedByCajaDiversos.put(cajaDiversosId, list);
|
||||
}else{
|
||||
resultGroupedByCajaDiversos.get(cajaDiversosId).add(h);
|
||||
}
|
||||
}
|
||||
|
||||
List<PagamentoVO> pagamentos = getResult(resultGroupedByCajaDiversos);
|
||||
|
||||
for (PacoteVO pacote : pacotes) {
|
||||
int flag = -1;
|
||||
for (PagamentoVO pagamento : pagamentos) {
|
||||
|
@ -198,8 +231,126 @@ public class BusquedaDatosTicketHibernateDAO extends GenericHibernateDAO<Pacote,
|
|||
} else if(flag == 0){
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private List<PagamentoVO> getResult(HashMap<Long, List<HashMap<String, Object>>> firstResult) {
|
||||
|
||||
StringBuilder sQuery = new StringBuilder();
|
||||
|
||||
sQuery.append("SELECT CDP.CAJADIVERSOSPAGO_ID, ");
|
||||
sQuery.append("CT.TIPOTARJETA, ");
|
||||
sQuery.append("CT.NUMAUTORIZACION, ");
|
||||
sQuery.append("CT.CANTPARCELAS, ");
|
||||
sQuery.append("CT.NOMBTITULAR, ");
|
||||
sQuery.append("CT.FECOPERACION, ");
|
||||
sQuery.append("CT.NUMTARJETA, ");
|
||||
sQuery.append("CT.DESCOPERADORACARTAO, ");
|
||||
sQuery.append("CDP.CAJADIVERSOS_ID ");
|
||||
sQuery.append("FROM CAJA_DIVERSOS_PAGO CDP ");
|
||||
sQuery.append("LEFT JOIN CAJA_TARJETA CT ON CT.CAJATARJETA_ID = CDP.CAJATARJETA_ID ");
|
||||
sQuery.append("WHERE CDP.CAJADIVERSOS_ID IN (:cajaDiversosId) ");
|
||||
sQuery.append("ORDER BY CDP.CAJADIVERSOS_ID, CDP.CAJADIVERSOSPAGO_ID ");
|
||||
|
||||
SQLQuery query = getSession().createSQLQuery(sQuery.toString())
|
||||
.addScalar("CAJADIVERSOSPAGO_ID", LongType.INSTANCE)
|
||||
.addScalar("TIPOTARJETA", StringType.INSTANCE)
|
||||
.addScalar("NUMAUTORIZACION", StringType.INSTANCE)
|
||||
.addScalar("CANTPARCELAS", IntegerType.INSTANCE)
|
||||
.addScalar("NOMBTITULAR", StringType.INSTANCE)
|
||||
.addScalar("FECOPERACION", DateType.INSTANCE)
|
||||
.addScalar("NUMTARJETA", StringType.INSTANCE)
|
||||
.addScalar("DESCOPERADORACARTAO", StringType.INSTANCE)
|
||||
.addScalar("CAJADIVERSOS_ID", LongType.INSTANCE);
|
||||
|
||||
query.setParameterList("cajaDiversosId", firstResult.keySet());
|
||||
|
||||
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
|
||||
|
||||
List<HashMap<String, Object>> secondResult = query.list();
|
||||
int count = 0;
|
||||
|
||||
for (Long cajaDiversosId : firstResult.keySet()) {
|
||||
count = 0;
|
||||
for (HashMap<String, Object> s : secondResult) {
|
||||
if (cajaDiversosId.equals(s.get("CAJADIVERSOS_ID"))) {
|
||||
firstResult.get(cajaDiversosId).get(count).putAll(s);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<PagamentoVO> pagamentos = new ArrayList<PagamentoVO>();
|
||||
List<HashMap<String, Object>> dadosExtraidos = new ArrayList<HashMap<String, Object>>();
|
||||
|
||||
for (Long cajaDiversosId : firstResult.keySet()) {
|
||||
dadosExtraidos.addAll(firstResult.get(cajaDiversosId));
|
||||
}
|
||||
|
||||
for (HashMap<String, Object> m : dadosExtraidos) {
|
||||
PagamentoVO pagamento = new PagamentoVO();
|
||||
setDatosPacote(pagamento, m);
|
||||
pagamentos.add(pagamento);
|
||||
}
|
||||
|
||||
return pagamentos;
|
||||
}
|
||||
|
||||
private void setDatosPacote(PagamentoVO pagamento, Map<String, Object> tupleMap) {
|
||||
pagamento.setMoeda("R$");
|
||||
pagamento.setVendapacoteId((Long) tupleMap.get("VENDAPACOTE_ID"));
|
||||
pagamento.setFormapagoId((Integer) tupleMap.get("FORMAPAGO_ID"));
|
||||
pagamento.setFormapagamento((String) tupleMap.get("DESCPAGO"));
|
||||
pagamento.setValor((BigDecimal) tupleMap.get("VALOR"));
|
||||
|
||||
Integer tipoPago = (Integer) tupleMap.get("TIPO_PAGO");
|
||||
pagamento.setTipoFormapago(TipoFormapago.getTipoFormapagoByValor(tipoPago));
|
||||
|
||||
if (isVentaCartaoCredito(pagamento.getTipoFormapago()) || isVentaCartaoDebito(pagamento.getTipoFormapago())) {
|
||||
PagamentoCartaoVO cartao = new PagamentoCartaoVO();
|
||||
cartao.setBandeira((String) tupleMap.get("TIPOTARJETA"));
|
||||
cartao.setNumautorizacao((String) tupleMap.get("NUMAUTORIZACION"));
|
||||
cartao.setParcelas((Integer) tupleMap.get("CANTPARCELAS"));
|
||||
cartao.setTitular((String) tupleMap.get("NOMBTITULAR"));
|
||||
cartao.setDatapagamento((Date) tupleMap.get("FECOPERACION"));
|
||||
cartao.setNumcartao((String) tupleMap.get("NUMTARJETA"));
|
||||
cartao.setNumcartao((String) tupleMap.get("NUMTARJETA"));
|
||||
cartao.setOperadoracartao((String) tupleMap.get("DESCOPERADORACARTAO"));
|
||||
|
||||
pagamento.setCartao(cartao);
|
||||
}
|
||||
|
||||
if (isVentaNotaCredito(pagamento.getTipoFormapago())) {
|
||||
if (tupleMap.get("NOTACREDITOVENDAPACOTE_ID") != null) {
|
||||
NotaCreditoVendaPacoteVO notacredito = new NotaCreditoVendaPacoteVO();
|
||||
notacredito.setVouchernotacredito(((Long) tupleMap.get("NOTACREDITOVENDAPACOTE_ID")).toString());
|
||||
notacredito.setNumoperacaopacotecancelamento((String) tupleMap.get("NUMOPERACAOPACOTECANCELAMENTO"));
|
||||
pagamento.setNotacredito(notacredito);
|
||||
}
|
||||
|
||||
if (tupleMap.get("OCD_ID") != null) {
|
||||
String voucherocd = OcdUtil.generaLocalizadorOCD((String) tupleMap.get("NUMOPERACION_OCD"), (Long) tupleMap.get("OCD_ID"));
|
||||
OcdPacoteVO ocdPacote = new OcdPacoteVO();
|
||||
ocdPacote.setVoucherocd(voucherocd);
|
||||
pagamento.setOcd(ocdPacote);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean isVentaCartaoCredito(TipoFormapago tipoFormapago) {
|
||||
return TipoFormapago.CREDITO.equals(tipoFormapago);
|
||||
}
|
||||
|
||||
private boolean isVentaCartaoDebito(TipoFormapago tipoFormapago) {
|
||||
return TipoFormapago.DEBITO.equals(tipoFormapago);
|
||||
}
|
||||
|
||||
private boolean isVentaNotaCredito(TipoFormapago tipoFormapago) {
|
||||
return TipoFormapago.NOTA_CREDITO.equals(tipoFormapago);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue