public void validateVehiculo(FacesContext context, UIComponent component, Object value) { String patente = value.toString(); if (patente != null) { vehiculo = getVehiculoService().findByPatenteVehiculo(patente.toUpperCase()); if (vehiculo != null) { usuario = vehiculo.getCliente().getUsuario(); TipoEstadia tipoEstadia = getTipoEstadiaService().findByNombreTipoEstadia("Por Mes"); CategoriaVehiculo categoriaVehiculo = vehiculo.getModeloVehiculo().getCategoriaVehiculo(); tarifa = getTarifaService() .findTarifaVigenteByPlayaAndCategoriaAndTipoEstadia( playaLoggeada, categoriaVehiculo, tipoEstadia); if (tarifa == null) { FacesMessage message = new FacesMessage( FacesMessage.SEVERITY_WARN, "No existe tarifa mensual " + "para la categoría " + tipoEstadia, ""); throw new ValidatorException(message); } else { promocionesDisponibles = getPromocionService().findByPlayaAndTarifa(playaLoggeada, tarifa); } } else { FacesMessage message = new FacesMessage( FacesMessage.SEVERITY_WARN, "No existe el vehiculo con patente: " + patente, ""); throw new ValidatorException(message); } } }
@Override public List<String[]> findEstadiasByVehiculoByPeriodo( Vehiculo vehiculo, Date fechaDesde, Date fechaHasta) { List<String[]> resultQuery = new ArrayList<String[]>(3); String query = "SELECT CAST(MONTH(DATE(fechaHoraEgreso)) AS CHAR(50)) AS 'MES'" + ", CAST(YEAR(DATE(fechaHoraEgreso)) AS CHAR(50)) AS 'AÑO'" + ", CAST(SUM(importeTotal) AS CHAR(50)) AS 'TOTAL CONSUMIDO'" + "FROM detalle_estadia " + "WHERE vehiculoID = ? AND fechaHoraEgreso is not null " + "AND DATE(fechaHoraEgreso) >= CONVERT(?, DATE) " + "AND DATE(fechaHoraEgreso) <= CONVERT(?, DATE) " + "GROUP BY MONTH(DATE(fechaHoraEgreso)), YEAR(DATE(fechaHoraEgreso)) " + "ORDER BY 2, 1"; SimpleDateFormat formato = new SimpleDateFormat("yyyy/MM/dd"); List<?> list = getSessionFactory() .getCurrentSession() .createSQLQuery(query) .setParameter(0, vehiculo.getId()) .setParameter(1, formato.format(fechaDesde)) .setParameter(2, formato.format(fechaHasta)) .list(); if (!list.isEmpty()) { String[] vConsumo; for (Object obj : list) { vConsumo = new String[3]; Object[] vObject = new Object[3]; vObject = ((Object[]) obj); vConsumo[0] = (String) vObject[0]; vConsumo[1] = (String) vObject[1]; vConsumo[2] = (String) vObject[2]; resultQuery.add(vConsumo); } } return resultQuery; }
public String abonoAddFromPlayaGerente() { Abono abono; try { if (getAbonoService().existeAbonoVehiculo(vehiculo, playaLoggeada) == false) { abono = new Abono(getFechaDesde(), getFechaHasta(), getTarifa(), playaLoggeada); abono.setVehiculo(getVehiculo()); abono.setPromocion(getPromocion()); CuentaCliente cuentaCliente = new CuentaCliente(); cuentaCliente = vehiculo.getCliente().getCuentaCliente(); float nuevoSaldo; if (cuentaCliente.getSaldo() >= getTarifa().getImporte()) { if (getPromocion() != null) { nuevoSaldo = cuentaCliente.getSaldo() - (getTarifa().getImporte() * ((getPromocion().getDescuento()) / 100 + 1)); } else { nuevoSaldo = cuentaCliente.getSaldo() - (getTarifa().getImporte()); } // Grabo el abono getAbonoService().save(abono); // Actualizo la cuenta de cliente. cuentaCliente.setSaldo(nuevoSaldo); getCuentaClienteService().update(cuentaCliente); // Creo la transacción de la playa TransaccionPlaya txPlaya = new TransaccionPlaya(); CuentaPlaya cuentaPlaya = getCuentaPlayaService().findByPlaya(playaLoggeada); txPlaya.setCuentaPlaya(cuentaPlaya); txPlaya.setFecha(new Date()); float importe; if (getPromocion() != null) { importe = getTarifa().getImporte() * ((getPromocion().getDescuento()) / 100 + 1); } else { importe = getTarifa().getImporte(); } txPlaya.setImporte(importe); TipoPago tipoPagoCuenta = getTipoPagoService().findByNombreTipoPago("Cuenta"); txPlaya.setTipoPago(tipoPagoCuenta); getTransaccionPlayaService().save(txPlaya); // Creo la transacción cliente TransaccionCliente transaccionCliente = new TransaccionCliente(); transaccionCliente.setCuentaCliente(cuentaCliente); transaccionCliente.setFecha(new Date()); transaccionCliente.setImporte(-importe); transaccionCliente.setTipoPago(tipoPagoCuenta); getTransaccionClienteService().save(transaccionCliente); FacesMessage message = new FacesMessage( FacesMessage.SEVERITY_INFO, "Se registró exitosamente el abono mensual", ""); FacesContext.getCurrentInstance().addMessage(null, message); return "abonoaddendgerente"; } else { FacesMessage message = new FacesMessage( FacesMessage.SEVERITY_WARN, "No posee saldo suficiente para efectuar el abono mensual.", ""); FacesContext.getCurrentInstance().addMessage(null, message); } } else { FacesMessage message = new FacesMessage( FacesMessage.SEVERITY_WARN, "Ya existe un abonado en el período indicado. ¡Verifique las fechas!", ""); FacesContext.getCurrentInstance().addMessage(null, message); } } catch (Exception ex) { FacesMessage message = new FacesMessage( FacesMessage.SEVERITY_ERROR, "Error, no se pudo registrar el abono mensual, Disculpe las molestias ocacionadas.", ""); FacesContext.getCurrentInstance().addMessage(null, message); ex.printStackTrace(); } return null; }