diff --git a/src/com/rjconsultores/ventaboletos/dao/ConferenciaComissaoDAO.java b/src/com/rjconsultores/ventaboletos/dao/ConferenciaComissaoDAO.java index 17c7f1d7a..56fe46f57 100644 --- a/src/com/rjconsultores/ventaboletos/dao/ConferenciaComissaoDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/ConferenciaComissaoDAO.java @@ -20,7 +20,7 @@ public interface ConferenciaComissaoDAO extends GenericDAO { public Conferencia suscribirOrActualizacion(Conferencia entidad); - public List carregarConferenciaComissao(String competencia, Empresa empresa, PuntoVenta puntoVenta) throws BusinessException; + public List carregarConferenciaComissao(String competencia, Empresa empresa, PuntoVenta puntoVenta, Date dataMovimento) throws BusinessException; public Conferencia confirmarChegadaMalote(Conferencia conferencia) throws BusinessException; diff --git a/src/com/rjconsultores/ventaboletos/dao/PuntoVentaDAO.java b/src/com/rjconsultores/ventaboletos/dao/PuntoVentaDAO.java index 3d067c3a5..3a6aa403c 100644 --- a/src/com/rjconsultores/ventaboletos/dao/PuntoVentaDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/PuntoVentaDAO.java @@ -25,6 +25,8 @@ public interface PuntoVentaDAO extends GenericDAO { public List buscaPuntoVenta(String numPuntoVenta); public List buscaPuntoVentaParada(Parada parada); + + public List buscaPuntoVentaEmpresa(Empresa empresa); public List buscarPuntoVentaSubordinados(PuntoVenta puntoVenta); diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/ConferenciaComissaoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/ConferenciaComissaoHibernateDAO.java index cb0daf9e2..9373f9a94 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/ConferenciaComissaoHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/ConferenciaComissaoHibernateDAO.java @@ -68,17 +68,17 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO carregarConferenciaComissao(String competencia, - Empresa empresa, PuntoVenta puntoVenta) throws BusinessException { + Empresa empresa, PuntoVenta puntoVenta, Date dataMovimento) throws BusinessException { Connection con = null; try { con = dataSourceRead.getConnection(); List lsConferencias = new ArrayList(); - carregarPuntoVentas(lsConferencias, competencia, empresa, puntoVenta); - carregarConferenciasRegistradas(lsConferencias, competencia, empresa, puntoVenta); - carregarMovimentoVendas(con, lsConferencias, competencia, empresa, puntoVenta); - carregarDiasSemMovimento(lsConferencias, competencia, empresa, puntoVenta); + carregarPuntoVentas(lsConferencias, competencia, empresa, puntoVenta, dataMovimento); + carregarConferenciasRegistradas(lsConferencias, competencia, empresa, puntoVenta, dataMovimento); + carregarMovimentoVendas(con, lsConferencias, competencia, empresa, puntoVenta, dataMovimento); + carregarDiasSemMovimento(lsConferencias, competencia, empresa, puntoVenta, dataMovimento); Collections.sort(lsConferencias); @@ -101,10 +101,10 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO lsConferencias, String competencia, - Empresa empresa, PuntoVenta puntoVenta) throws BusinessException { + Empresa empresa, PuntoVenta puntoVenta, Date dataMovimento) throws BusinessException { try { if (puntoVenta != null && puntoVenta.getPuntoventaId() > -1) { - Set diasSemMovimentos = DateUtil.carregarDiasCompetencia(competencia); + Set diasSemMovimentos = DateUtil.carregarDiasCompetencia(competencia, dataMovimento); ConferenciaComissaoVO conferenciaComissao = new ConferenciaComissaoVO(); conferenciaComissao.setPuntoventaId(puntoVenta.getPuntoventaId()); conferenciaComissao.setNombpuntoventa(puntoVenta.getNombpuntoventa()); @@ -139,7 +139,7 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO lsConferencias, - String competencia, Empresa empresa, PuntoVenta puntoVenta) throws BusinessException { + String competencia, Empresa empresa, PuntoVenta puntoVenta, Date dataMovimento) throws BusinessException { try { - Map parametros = carregarParametros(competencia, empresa, puntoVenta, null); + Map parametros = carregarParametros(competencia, empresa, puntoVenta, dataMovimento); StringBuilder sQuery = new StringBuilder("SELECT co FROM Conferencia co "); sQuery.append("JOIN co.empresa em ").append("JOIN co.puntoVenta pv ") - .append("WHERE co.activo = 1 ") - .append("AND co.datamovimento BETWEEN :dataInicial AND :dataFinal "); - + .append("WHERE co.activo = 1 "); + if(dataMovimento != null){ + sQuery.append("AND co.datamovimento BETWEEN TO_DATE(:dataInicial,'DD/MM/YYYY HH24:MI') AND TO_DATE(:dataFinal,'DD/MM/YYYY HH24:MI')"); + }else{ + sQuery.append("AND co.datamovimento BETWEEN :dataInicial AND :dataFinal "); + } if (parametros.containsKey("empresaId")) { sQuery.append("AND em.empresaId = :empresaId "); } @@ -165,7 +168,7 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO lsConferencias, - String competencia, Empresa empresa, PuntoVenta puntoVenta) + String competencia, Empresa empresa, PuntoVenta puntoVenta, Date dataMovimento) throws BusinessException, SQLException { PreparedStatement stmt = null; ResultSet rset = null; try { - Map parametros = carregarParametros(competencia, empresa, puntoVenta, null); + Map parametros = carregarParametros(competencia, empresa, puntoVenta, dataMovimento); StringBuilder sQuery = new StringBuilder() .append("SELECT PV.PUNTOVENTA_ID AS \"puntoventaId\", PV.NUMPUNTOVENTA as \"numPuntoVenta\", ") .append("PV.NOMBPUNTOVENTA as \"nombpuntoventa\", TO_DATE(B.FECHORVENTA, 'DD/MM/YY') as \"datamovimento\" ") .append("FROM BOLETO B ") .append("INNER JOIN PUNTO_VENTA PV ON B.PUNTOVENTA_ID = PV.PUNTOVENTA_ID ") - .append("INNER JOIN MARCA M ON B.MARCA_ID = M.MARCA_ID ") + .append("INNER JOIN MARCA M ON B.MARCA_ID = M.EMPRESA_ID ") .append("WHERE PV.ACTIVO = 1 ") .append("AND B.FECHORVENTA BETWEEN TO_DATE(?, 'DD/MM/YYYY HH24:MI') AND TO_DATE(?, 'DD/MM/YYYY HH24:MI') "); @@ -215,8 +218,17 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO lsQuery, - List lsConferencias, String competencia) throws ParseException { - Set diasSemMovimentos = DateUtil.carregarDiasCompetencia(competencia); + List lsConferencias, String competencia, Date dataMovimento ) throws ParseException { + Set diasSemMovimentos = DateUtil.carregarDiasCompetencia(competencia, dataMovimento); for (ConferenciaComissaoVO conferenciaComissaoMovimentoDiario : lsQuery) { ConferenciaComissaoVO conferenciaComissao = new ConferenciaComissaoVO(); @@ -278,13 +290,17 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO()); @@ -310,57 +326,66 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO lsQuery, - List lsConferencias, String competencia) throws ParseException { - Set diasSemMovimentos = DateUtil.carregarDiasCompetencia(competencia); - - for (Conferencia conferencia : lsQuery) { - ConferenciaComissaoVO conferenciaComissao = new ConferenciaComissaoVO(); - conferenciaComissao.setCompetencia(competencia); - conferenciaComissao.setPuntoventaId(conferencia.getPuntoVenta().getPuntoventaId()); - conferenciaComissao.setNumPuntoVenta(conferencia.getPuntoVenta().getNumPuntoVenta()); - conferenciaComissao.setNombpuntoventa(conferencia.getPuntoVenta().getNombpuntoventa()); - conferenciaComissao.setDiasSemMovimentos(new TreeSet(diasSemMovimentos)); - - if (lsConferencias.contains(conferenciaComissao)) { - conferenciaComissao = lsConferencias.get(lsConferencias.indexOf(conferenciaComissao)); - } - - if (conferencia.getDatamovimento() != null) { - Integer dia = Integer.valueOf(DateUtil.getStringDate(conferencia.getDatamovimento(), "dd")); - if (conferenciaComissao.getDiasSemMovimentos().contains(dia)) { - - DiaConferenciaComissaoVO diaConferenciaComissao = new DiaConferenciaComissaoVO(); - diaConferenciaComissao.setConferenciaId(conferencia.getConferenciaId()); - diaConferenciaComissao.setDia(dia); - diaConferenciaComissao.setData(DateUtil.getDateFromString(dia + "/" + competencia, "dd/MM/yyyy")); - diaConferenciaComissao.setIndboletogerado(conferencia.getIndboletogerado()); - diaConferenciaComissao.setIndconferido(conferencia.getIndconferido()); - diaConferenciaComissao.setIndmaloterecebido(conferencia.getIndmaloterecebido()); - diaConferenciaComissao.setIndpendencia(conferencia.getIndpendencia()); - diaConferenciaComissao.setIndsemmovimento(conferencia.getIndsemmovimento()); - - if (conferenciaComissao.getDias() == null) { - conferenciaComissao.setDias(new ArrayList()); - } - - conferenciaComissao.getDias().add(diaConferenciaComissao); - conferenciaComissao.getDiasSemMovimentos().remove(diaConferenciaComissao.getDia()); + List lsConferencias, String competencia, Date dataMovimento) throws ParseException { + if(lsQuery != null && !lsQuery.isEmpty()){ + Set diasSemMovimentos = DateUtil.carregarDiasCompetencia(competencia, dataMovimento); + for (Conferencia conferencia : lsQuery) { + ConferenciaComissaoVO conferenciaComissao = new ConferenciaComissaoVO(); + conferenciaComissao.setCompetencia(competencia); + conferenciaComissao.setPuntoventaId(conferencia.getPuntoVenta().getPuntoventaId()); + conferenciaComissao.setNumPuntoVenta(conferencia.getPuntoVenta().getNumPuntoVenta()); + conferenciaComissao.setNombpuntoventa(conferencia.getPuntoVenta().getNombpuntoventa()); + conferenciaComissao.setDiasSemMovimentos(new TreeSet(diasSemMovimentos)); + + if (lsConferencias.contains(conferenciaComissao)) { + conferenciaComissao = lsConferencias.get(lsConferencias.indexOf(conferenciaComissao)); + } + + if (conferencia.getDatamovimento() != null) { + Integer dia = Integer.valueOf(DateUtil.getStringDate(conferencia.getDatamovimento(), "dd")); + if (conferenciaComissao.getDiasSemMovimentos().contains(dia)) { + + DiaConferenciaComissaoVO diaConferenciaComissao = new DiaConferenciaComissaoVO(); + diaConferenciaComissao.setConferenciaId(conferencia.getConferenciaId()); + diaConferenciaComissao.setDia(dia); + if(competencia !=null){ + diaConferenciaComissao.setData(DateUtil.getDateFromString(dia + "/" + competencia, "dd/MM/yyyy")); + }else{ + diaConferenciaComissao.setData(dataMovimento); + } + diaConferenciaComissao.setIndboletogerado(conferencia.getIndboletogerado()); + diaConferenciaComissao.setIndconferido(conferencia.getIndconferido()); + diaConferenciaComissao.setIndmaloterecebido(conferencia.getIndmaloterecebido()); + diaConferenciaComissao.setIndpendencia(conferencia.getIndpendencia()); + diaConferenciaComissao.setIndsemmovimento(conferencia.getIndsemmovimento()); + + if (conferenciaComissao.getDias() == null) { + conferenciaComissao.setDias(new ArrayList()); + } + + conferenciaComissao.getDias().add(diaConferenciaComissao); + conferenciaComissao.getDiasSemMovimentos().remove(diaConferenciaComissao.getDia()); + } + } + + if (!lsConferencias.contains(conferenciaComissao)) { + lsConferencias.add(conferenciaComissao); } - } - - if (!lsConferencias.contains(conferenciaComissao)) { - lsConferencias.add(conferenciaComissao); } } } private void carregarDiasSemMovimento(List lsConferencias, - String competencia, Empresa empresa, PuntoVenta puntoVenta) throws ParseException { + String competencia, Empresa empresa, PuntoVenta puntoVenta, Date dataMovimento) throws ParseException { for (ConferenciaComissaoVO conferenciaComissao : lsConferencias) { for (Integer diaSemMovimento : conferenciaComissao.getDiasSemMovimentos()) { DiaConferenciaComissaoVO diaConferenciaComissao = new DiaConferenciaComissaoVO(); diaConferenciaComissao.setDia(diaSemMovimento); - diaConferenciaComissao.setData(DateUtil.getDateFromString(diaSemMovimento + "/" + competencia, "dd/MM/yyyy")); + if(competencia ==null && diaSemMovimento!=null ){ + diaConferenciaComissao.setData(dataMovimento); + }else{ + diaConferenciaComissao.setData(DateUtil.getDateFromString(diaSemMovimento + "/" + competencia, "dd/MM/yyyy")); + } diaConferenciaComissao.setIndsemmovimento(true); if (conferenciaComissao.getDias() == null) { @@ -383,8 +408,8 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO lsConferencias = new ArrayList(); - carregarConferenciasRegistradas(lsConferencias, competencia, empresa, puntoVenta); - carregarDiasSemMovimento(lsConferencias, competencia, empresa, puntoVenta); + carregarConferenciasRegistradas(lsConferencias, competencia, empresa, puntoVenta, null); + carregarDiasSemMovimento(lsConferencias, competencia, empresa, puntoVenta, null); for (ConferenciaComissaoVO conferenciaComissao : lsConferencias) { for (DiaConferenciaComissaoVO diaConferenciaComissao : conferenciaComissao.getDias()) { @@ -1001,7 +1026,7 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO lsConferenciaComissao = new ArrayList(); - processarQueryConferencia(qr.list(), lsConferenciaComissao, competencia); + processarQueryConferencia(qr.list(), lsConferenciaComissao, competencia, datamovimento); if (!lsConferenciaComissao.isEmpty()) { for (DiaConferenciaComissaoVO diaConferenciaComissao : lsConferenciaComissao diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/PuntoVentaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/PuntoVentaHibernateDAO.java index 0f0ff4832..01a338b59 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/PuntoVentaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/PuntoVentaHibernateDAO.java @@ -108,6 +108,15 @@ public class PuntoVentaHibernateDAO extends GenericHibernateDAO buscaPuntoVentaEmpresa(Empresa empresa) { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + c.add(Restrictions.eq("empresa", empresa)); + c.addOrder(Order.asc("nombpuntoventa")); + + return c.list(); + } @Override public List buscarPuntoVentaSubordinados(PuntoVenta puntoVenta) { diff --git a/src/com/rjconsultores/ventaboletos/service/ConferenciaComissaoService.java b/src/com/rjconsultores/ventaboletos/service/ConferenciaComissaoService.java index ab2d613fc..5ab837497 100644 --- a/src/com/rjconsultores/ventaboletos/service/ConferenciaComissaoService.java +++ b/src/com/rjconsultores/ventaboletos/service/ConferenciaComissaoService.java @@ -25,7 +25,7 @@ public interface ConferenciaComissaoService extends GenericService carregarConferenciaComissao(String competencia, Empresa empresa, PuntoVenta puntoVenta) throws BusinessException; + public List carregarConferenciaComissao(String competencia, Empresa empresa, PuntoVenta puntoVenta, Date dataMovimento) throws BusinessException; public Conferencia confirmarChegadaMalote(Conferencia conferencia) throws BusinessException; @@ -67,7 +67,7 @@ public interface ConferenciaComissaoService extends GenericService buscarPuntosVentaMovimentacionBilhetes(List empresas); public List buscarPuntosVentaPorUsuario(Usuario usuario); + + public List buscaPuntoVentaEmpresa(Empresa empresa); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java index b54b305c5..b94042715 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java @@ -11,10 +11,13 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import org.zkoss.util.resource.Labels; import com.rjconsultores.ventaboletos.dao.ConferenciaComissaoDAO; @@ -30,6 +33,8 @@ import com.rjconsultores.ventaboletos.enums.comissao.BoletoStatusComissao; import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.service.ConferenciaComissaoService; import com.rjconsultores.ventaboletos.service.ConstanteService; +import com.rjconsultores.ventaboletos.service.EmpresaService; +import com.rjconsultores.ventaboletos.service.PuntoVentaService; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.LocaleUtil; import com.rjconsultores.ventaboletos.utilerias.SendMail; @@ -66,6 +71,10 @@ public class ConferenciaComissaoServiceImpl implements ConferenciaComissaoServic @Autowired ConstanteService constanteService; + @Autowired + private EmpresaService empresaService; + @Autowired + private PuntoVentaService puntoVentaService; @Override public List obtenerTodos() { @@ -99,14 +108,16 @@ public class ConferenciaComissaoServiceImpl implements ConferenciaComissaoServic } @Override - public List carregarConferenciaComissao(String competencia, Empresa empresa, PuntoVenta puntoVenta) throws BusinessException { - return conferenciaComissaoDAO.carregarConferenciaComissao(competencia, empresa, puntoVenta); + public List carregarConferenciaComissao(String competencia, Empresa empresa, PuntoVenta puntoVenta, Date dataMovimento) throws BusinessException { + return conferenciaComissaoDAO.carregarConferenciaComissao(competencia, empresa, puntoVenta, dataMovimento); } @Override public Conferencia confirmarChegadaMalote(Conferencia conferencia) throws BusinessException { conferencia.setDatamalote(new Date()); - conferencia.setUsuarioMaloteId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + if(conferencia.getUsuarioId()==null || conferencia.getUsuarioId() < 1){ + conferencia.setUsuarioMaloteId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + } return conferenciaComissaoDAO.confirmarChegadaMalote(conferencia); } @@ -120,7 +131,9 @@ public class ConferenciaComissaoServiceImpl implements ConferenciaComissaoServic @Override public Conferencia encerrarMovimentoDiario(Conferencia conferencia) throws BusinessException { - conferencia.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + if(conferencia.getUsuarioId()==null || conferencia.getUsuarioId() < 1){ + conferencia.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + } conferencia.setFecmodif(Calendar.getInstance().getTime()); return conferenciaComissaoDAO.encerrarMovimentoDiario(conferencia); } @@ -614,4 +627,249 @@ public class ConferenciaComissaoServiceImpl implements ConferenciaComissaoServic } } + @Transactional(readOnly = true, propagation = Propagation.SUPPORTS) + public void generacionAutomaticaConferencia() { + List lsPuntoVenta; + List lsConferenciaComissao; + Conferencia conferencia; + // Perocorrer todas as empresas cadastradas + List lsEmpresa = empresaService.obtenerTodos(); + for (Empresa empresa : lsEmpresa) { + lsPuntoVenta = puntoVentaService.buscaPuntoVentaEmpresa(empresa); + // Percorrer todos os pontos de venda de cada empresa + //TODO - Apagar este if ao final da implementação do mantis 8371. + //if(empresa.getEmpresaId() == 25){ + // System.out.println("teste"); + //} + for (PuntoVenta puntoVenta : lsPuntoVenta) { + //TODO - Paras testes. Apagar este if e else ao final da implementação do mantis 8371. + //if(puntoVenta.getPuntoventaId() == 4 || "UBERABA".contains(puntoVenta.getNombpuntoventa())){ + // System.out.println("teste"); + //}else{ + // continue; + //} + // Valida se cada ponto de venda tem ao menos uma ecf, caso tenha aborta o processo. + Integer qtdadeECF = quantidadeECFPorPuntoVenta(empresa.getEmpresaId(), puntoVenta.getPuntoventaId()); + if (qtdadeECF >= 1) { + log.info("Existe ECF para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDate()); + continue; + } + try { + // Busca o Movimento para o dia de ontem, caso não exista aborta para este ponto de venda + lsConferenciaComissao = carregarConferenciaComissao(null, empresa, puntoVenta, DateUtil.getYesterdayDate()); + if ((CollectionUtils.isEmpty(lsConferenciaComissao)) || (!CollectionUtils.isEmpty(lsConferenciaComissao.get(0).getDias()) && lsConferenciaComissao.get(0).getDias().size() < 1)) { + log.info("Não há conferência para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); + continue; + } + + // Confirma chegada do malote + conferencia = obtenerConferenciaDataMovimento(DateUtil.getYesterdayDate(), puntoVenta.getPuntoventaId(), empresa.getEmpresaId()); + if (conferencia == null) { + conferencia = new Conferencia(); + conferencia.setActivo(Boolean.TRUE); + conferencia.setFecmodif(new Date()); + conferencia.setUsuarioId(1); + conferencia.setEmpresa(empresa); + conferencia.setPuntoVenta(new PuntoVenta( puntoVenta.getPuntoventaId())); + conferencia.setDatamovimento(DateUtil.getYesterdayDate()); + } + else{ + //Se existe a conferência com status conferido para esta empresa e ponto de venda no dia de ontem, aborta. + if(Boolean.TRUE == conferencia.getIndconferido()){ + log.info("Já existe conferência com status conferido para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); + continue; + } + } + + //Valida se existe alguma pendência que impede o fechamento. + if(!validaConferencia(conferencia)){ + log.info("Será necessário realizar Conferência Manual para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); + continue; + } + + //Confirma chegada do malote + conferencia = confirmarChegadaMalote(conferencia); + log.info("Realizado confirmação de chegada do malote para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString()); + + // Encerra Movimento + encerrarMovimentoDiario(conferencia); + log.info("Conferência de Movimento para o Ponto de Venda " + puntoVenta.getNombpuntoventa() + " da empresa " + empresa.getNombempresa() + " no dia " + DateUtil.getYesterdayDateString() + "realizada com sucesso."); + } catch (BusinessException e) { + log.error("Erro ao buscar/validar conferência para o dia " + DateUtil.getYesterdayDateString(), e); + continue; + } + } + } + + } + + private boolean validaConferencia(Conferencia conferencia ) { + try { + //BigDecimal totalBilhetesManual = BigDecimal.ZERO; + //BigDecimal totalBilhetesVendidos = BigDecimal.ZERO; + //BigDecimal totalBilhetesCancelados = BigDecimal.ZERO; + //BigDecimal totalBilhetesDevolvidos = BigDecimal.ZERO; + //BigDecimal totalBilhetesGap = BigDecimal.ZERO; + //BigDecimal totalBilhetesGapCancelados = BigDecimal.ZERO; + //BigDecimal totalBilhetesGapDevolvidos = BigDecimal.ZERO; + //BigDecimal totalCreditosEventoFinanceiros = BigDecimal.ZERO; + //BigDecimal totalDebitosEventoFinanceiros = BigDecimal.ZERO; + //OcdVO ocdTotal = null; + //ListlsEventosFinanceiros = null; + List boletosComissaos = carregarBilhetesComissao(null, conferencia, null); + if(boletosComissaos ==null || CollectionUtils.isEmpty(boletosComissaos)){ + return false; + } + //totalBilhetesManual = validaBilhetesManual(boletosComissaos, conferencia); + if(!validaBilhetesManual(boletosComissaos, conferencia)){ + return false; + } + //totalBilhetesVendidos = validaBilhetesVendidos(boletosComissaos, conferencia); + if(!validaBilhetesVendidos(boletosComissaos, conferencia)){ + return false; + } + //totalBilhetesCancelados = validaBilhetesCancelados(boletosComissaos, conferencia); + if(!validaBilhetesCancelados(boletosComissaos, conferencia)){ + return false; + } + //totalBilhetesDevolvidos = validaBilhetesDevolvidos(boletosComissaos, conferencia); + if(!validaBilhetesDevolvidos(boletosComissaos, conferencia)){ + return false; + } + //totalBilhetesGap = validaBilhetesGap(boletosComissaos, conferencia); + if(!validaBilhetesGap(boletosComissaos, conferencia)){ + return false; + } + //totalBilhetesGapCancelados = validaBilhetesGapCancelados(boletosComissaos, conferencia); + if(!validaBilhetesGapCancelados(boletosComissaos, conferencia)){ + return false; + } + //totalBilhetesGapDevolvidos = validaBilhetesGapDevolvidos(boletosComissaos, conferencia); + if(!validaBilhetesGapDevolvidos(boletosComissaos, conferencia)){ + return false; + } + //lsEventosFinanceiros = validaEventosFinanceiros(boletosComissaos, conferencia); + if(!validaEventosFinanceiros(boletosComissaos, conferencia)){ + return false; + } + //else{ + // for (EventosFinanceirosVO eventoFinanceiro : lsEventosFinanceiros) { + // if (eventoFinanceiro.isCredito()) { + // totalCreditosEventoFinanceiros = totalCreditosEventoFinanceiros.add(eventoFinanceiro.getImpingreso()); + // } else { + // totalDebitosEventoFinanceiros = totalDebitosEventoFinanceiros.add(eventoFinanceiro.getImpingreso()); + // } + // } + //} + //ocdTotal = validaOcds(conferencia); + if(!validaOcds(conferencia)){ + return false; + } + return true; + } catch (BusinessException e) { + log.error(e.getMessage(), e); + return false; + } + } + + private boolean validaBilhetesManual(List boletosComissaos, Conferencia conferencia ) throws BusinessException { + List lsBilhetesManual = carregarBilhetesComissao(boletosComissaos, conferencia, BoletoStatusComissao.BOLETO_MANUAL); + if(!CollectionUtils.isEmpty(lsBilhetesManual) && isBilhetesSemConferencia(lsBilhetesManual)){ + //return null; + return false; + }else{ + //return totalizarBoletoComissao(lsBilhetesManual, IndStatusBoleto.V); + return true; + } + } + private boolean validaBilhetesVendidos(List boletosComissaos, Conferencia conferencia) throws BusinessException { + List lsBilhetes = carregarBilhetesComissao(boletosComissaos, conferencia, BoletoStatusComissao.BOLETOS_VENDIDOS); + if(!CollectionUtils.isEmpty(lsBilhetes) && isBilhetesSemConferencia(lsBilhetes)){ + //return null; + return false; + }else{ + //return totalizarBoletoComissao(lsBilhetes, IndStatusBoleto.V, IndStatusBoleto.T); + return true; + } + } + private boolean validaBilhetesCancelados(List boletosComissaos, Conferencia conferencia) throws BusinessException { + List lsBilhetesCancelados = carregarBilhetesComissao(boletosComissaos, conferencia, BoletoStatusComissao.BOLETO_CANCELADO); + if(!CollectionUtils.isEmpty(lsBilhetesCancelados) && isBilhetesSemConferencia(lsBilhetesCancelados)){ + //return null; + return false; + }else{ + return true; + //return totalizarBoletoComissao(lsBilhetesCancelados); + } + } + private boolean validaBilhetesDevolvidos(List boletosComissaos, Conferencia conferencia) throws BusinessException { + List lsBilhetesDevolvidos = carregarBilhetesComissao(boletosComissaos, conferencia, BoletoStatusComissao.BOLETO_DEVOLVIDO); + if(!CollectionUtils.isEmpty(lsBilhetesDevolvidos) && isBilhetesSemConferencia(lsBilhetesDevolvidos)){ + //return null; + return false; + }else{ + //Map totais = totalizarBoletoComissaoDevolvidosTrocaOcd(lsBilhetesDevolvidos); + return true; + //return totais.get(BoletoStatusComissao.BOLETO_DEVOLVIDO); + + } + } + private boolean validaBilhetesGap(List boletosComissaos, Conferencia conferencia) throws BusinessException { + List lsBilhetesGap = carregarBilhetesComissao(boletosComissaos, conferencia, BoletoStatusComissao.GAP_VENDIDOS); + if(!CollectionUtils.isEmpty(lsBilhetesGap) && isBilhetesSemConferencia(lsBilhetesGap)){ + //return null; + return false; + }else{ + //return totalizarBoletoComissao(lsBilhetesGap, IndStatusBoleto.V, IndStatusBoleto.T); + return true; + } + } + private boolean validaBilhetesGapCancelados(List boletosComissaos, Conferencia conferencia ) throws BusinessException { + List lsBilhetesGapCancelados = carregarBilhetesComissao(boletosComissaos, conferencia, BoletoStatusComissao.GAP_CANCELADO); + if(!CollectionUtils.isEmpty(lsBilhetesGapCancelados) && isBilhetesSemConferencia(lsBilhetesGapCancelados)){ + //return null; + return false; + }else{ + //return totalizarBoletoComissao(lsBilhetesGapCancelados); + return true; + } + } + + private boolean validaBilhetesGapDevolvidos(List boletosComissaos, Conferencia conferencia) throws BusinessException { + List lsBilhetesGapDevolvidos = carregarBilhetesComissao(boletosComissaos, conferencia, BoletoStatusComissao.GAP_DEVOLVIDO); + if(!CollectionUtils.isEmpty(lsBilhetesGapDevolvidos) && isBilhetesSemConferencia(lsBilhetesGapDevolvidos)){ + //return null; + return false; + }else{ + //Map totais = totalizarBoletoComissaoDevolvidosTrocaOcd(lsBilhetesGapDevolvidos); + return true; + //return totais.get(BoletoStatusComissao.BOLETO_DEVOLVIDO); + } + } + + private boolean validaEventosFinanceiros(List boletosComissaos, Conferencia conferencia) throws BusinessException { + ListlsEventosFinanceiros = carregarEventosFinanceiros(conferencia); + if(!CollectionUtils.isEmpty(lsEventosFinanceiros) && isEventosFinanceirosSemConferencia(lsEventosFinanceiros)) { + //return null; + return false; + } else { + return true; + //return lsEventosFinanceiros; + } + } + private boolean validaOcds(Conferencia conferencia) throws BusinessException { + List lsOcds = carregarOcds(conferencia); + if(!CollectionUtils.isEmpty(lsOcds) && isOcdSemConferencia(lsOcds)) { + //return null; + return false; + } else { + return true; + //return totalizarOcd(lsOcds); + + } + } + +// private void carregarResumo(List boletosComissaos, Conferencia conferencia, List lsEventosFinanceiros, BigDecimal totalBilhetesManual, BigDecimal totalBilhetesVendidos, BigDecimal totalBilhetesCancelados, BigDecimal totalBilhetesDevolvidos,BigDecimal totalBilhetesGap,BigDecimal totalBilhetesGapCancelados,BigDecimal totalBilhetesGapDevolvidos, BigDecimal totalCreditosEventoFinanceiros,BigDecimal totalDebitosEventoFinanceiros, OcdVO ocdTotal ) throws BusinessException { +// gerarResumo(conferencia, boletosComissaos, lsEventosFinanceiros, totalBilhetesManual, totalBilhetesVendidos, totalBilhetesCancelados, totalBilhetesDevolvidos, totalBilhetesGap, totalBilhetesGapCancelados, totalBilhetesGapDevolvidos, totalCreditosEventoFinanceiros, totalDebitosEventoFinanceiros, ocdTotal); +// } } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/PuntoVentaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/PuntoVentaServiceImpl.java index 6c7f2c864..7459ceaf4 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/PuntoVentaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/PuntoVentaServiceImpl.java @@ -734,4 +734,9 @@ public class PuntoVentaServiceImpl implements PuntoVentaService { return Normalizer.normalize(s, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "").replaceAll("\\W", " "); } + @Override + public List buscaPuntoVentaEmpresa(Empresa empresa) { + return puntoVentaDAO.buscaPuntoVentaEmpresa(empresa); + } + } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java b/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java index 000bb8f0d..8b2a50ee1 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java @@ -594,18 +594,21 @@ public final class DateUtil { * @param competencia * @return */ - public static Set carregarDiasCompetencia(String competencia) { + public static Set carregarDiasCompetencia(String competencia, Date dataMovimento) { Set diasCompetencia = new TreeSet(); - - String[] vetCompetencia = competencia.split("/"); - Calendar cal = Calendar.getInstance(); - cal.set(Calendar.MONTH, Integer.valueOf(vetCompetencia[0]) - 1); - cal.set(Calendar.YEAR, Integer.valueOf(vetCompetencia[1])); - - for (int i = 1; i <= cal.getActualMaximum(Calendar.DAY_OF_MONTH); i++) { - diasCompetencia.add(i); + if(competencia== null && dataMovimento!=null){ + Integer diaInteger = new Integer (getStringDate(dataMovimento).split("/")[0]); + diasCompetencia.add(diaInteger); + }else{ + String[] vetCompetencia = competencia.split("/"); + Calendar cal = Calendar.getInstance(); + cal.set(Calendar.MONTH, Integer.valueOf(vetCompetencia[0]) - 1); + cal.set(Calendar.YEAR, Integer.valueOf(vetCompetencia[1])); + + for (int i = 1; i <= cal.getActualMaximum(Calendar.DAY_OF_MONTH); i++) { + diasCompetencia.add(i); + } } - return diasCompetencia; } @@ -639,5 +642,18 @@ public final class DateUtil { } return null; } - + public static Date getYesterdayDate() { + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.DATE, -1); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.SECOND, 0); + Date yesterday = calendar.getTime(); + return yesterday; + } + public static String getYesterdayDateString() { + DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy"); + Calendar cal = Calendar.getInstance(); + cal.add(Calendar.DATE, -1); + return dateFormat.format(cal.getTime()); +} } \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/vo/comissao/ConferenciaComissaoVO.java b/src/com/rjconsultores/ventaboletos/vo/comissao/ConferenciaComissaoVO.java index f1cd65663..edd36b8a0 100644 --- a/src/com/rjconsultores/ventaboletos/vo/comissao/ConferenciaComissaoVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/comissao/ConferenciaComissaoVO.java @@ -114,11 +114,11 @@ public class ConferenciaComissaoVO implements Comparable return this.getNombpuntoventa().compareToIgnoreCase(o.getNombpuntoventa()); } - public Date getDatamovimento() { + public Date getDataMovimento() { return datamovimento; } - public void setDatamovimento(Date datamovimento) { + public void setDataMovimento(Date datamovimento) { this.datamovimento = datamovimento; }