use of sic.modelo.QPedido in project sic by belluccifranco.
the class PedidoServiceImpl method buscarConCriteria.
@Override
public List<Pedido> buscarConCriteria(BusquedaPedidoCriteria criteria) {
//Fecha
if (criteria.isBuscaPorFecha() == true & (criteria.getFechaDesde() == null | criteria.getFechaHasta() == null)) {
throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_pedido_fechas_busqueda_invalidas"));
}
if (criteria.isBuscaPorFecha() == true) {
Calendar cal = new GregorianCalendar();
cal.setTime(criteria.getFechaDesde());
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
criteria.setFechaDesde(cal.getTime());
cal.setTime(criteria.getFechaHasta());
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
criteria.setFechaHasta(cal.getTime());
}
//Empresa
if (criteria.getEmpresa() == null) {
throw new EntityNotFoundException(ResourceBundle.getBundle("Mensajes").getString("mensaje_empresa_no_existente"));
}
//Cliente
if (criteria.isBuscaCliente() == true && criteria.getCliente() == null) {
throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_cliente_vacio_razonSocial"));
}
//Usuario
if (criteria.isBuscaUsuario() == true && criteria.getUsuario() == null) {
throw new BusinessServiceException(ResourceBundle.getBundle("Mensajes").getString("mensaje_usuario_vacio_nombre"));
}
QPedido qpedido = QPedido.pedido;
BooleanBuilder builder = new BooleanBuilder();
builder.and(qpedido.empresa.eq(criteria.getEmpresa()).and(qpedido.eliminado.eq(false)));
if (criteria.isBuscaPorFecha() == true) {
FormatterFechaHora formateadorFecha = new FormatterFechaHora(FormatterFechaHora.FORMATO_FECHAHORA_INTERNACIONAL);
DateExpression<Date> fDesde = Expressions.dateTemplate(Date.class, "convert({0}, datetime)", formateadorFecha.format(criteria.getFechaDesde()));
DateExpression<Date> fHasta = Expressions.dateTemplate(Date.class, "convert({0}, datetime)", formateadorFecha.format(criteria.getFechaHasta()));
builder.and(qpedido.fecha.between(fDesde, fHasta));
}
if (criteria.isBuscaCliente() == true) {
builder.and(qpedido.cliente.eq(criteria.getCliente()));
}
if (criteria.isBuscaUsuario() == true) {
builder.and(qpedido.usuario.eq(criteria.getUsuario()));
}
if (criteria.isBuscaPorNroPedido() == true) {
builder.and(qpedido.nroPedido.eq(criteria.getNroPedido()));
}
List<Pedido> pedidos = new ArrayList<>();
pedidoRepository.findAll(builder, new Sort(Sort.Direction.DESC, "fecha")).iterator().forEachRemaining(pedidos::add);
return this.calcularTotalActualDePedidos(pedidos);
}
Aggregations