List of usage examples for org.hibernate Query setDate
@Deprecated @SuppressWarnings("unchecked") default Query<R> setDate(String name, Date val)
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
License:Open Source License
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)/*from www . jav a 2 s . co m*/ public Map<String, Object> depreciacionAcumuladaPorCentroDeCosto(Map<String, Object> params) { Usuario usuario = (Usuario) params.get("usuario"); Query tiposDeActivoQuery = currentSession().createQuery( "select new map(ta.nombre as nombre, ta.cuenta.id.idCtaMayor as cuenta, ta.id as id) from TipoActivo ta where ta.cuenta.id.ejercicio.id.idEjercicio = :ejercicioId and ta.cuenta.id.ejercicio.id.organizacion.id = :organizacionId order by ta.cuenta.id.idCtaMayor"); tiposDeActivoQuery.setString("ejercicioId", usuario.getEjercicio().getId().getIdEjercicio()); tiposDeActivoQuery.setLong("organizacionId", usuario.getEjercicio().getId().getOrganizacion().getId()); List<Map<String, Object>> tiposDeActivo = tiposDeActivoQuery.list(); Map<String, Map<String, Object>> tiposDeActivoMap = new HashMap<>(); for (Map<String, Object> tipoActivo : tiposDeActivo) { tipoActivo.put("total", BigDecimal.ZERO); tiposDeActivoMap.put((String) tipoActivo.get("cuenta"), tipoActivo); } Map<String, Object> totalCC = new HashMap<>(); totalCC.put("nombre", ""); totalCC.put("cuenta", "TOTAL"); totalCC.put("id", 0); totalCC.put("total", BigDecimal.ZERO); tiposDeActivo.add(totalCC); tiposDeActivoMap.put("TOTAL", totalCC); params.put("tiposDeActivo", tiposDeActivo); Date fecha = (Date) params.get("fecha"); MathContext mc = new MathContext(16, RoundingMode.HALF_UP); Map<String, Map<String, Object>> mapa1 = new TreeMap<>(); Query query = currentSession().createQuery( "select new Activo(a.id, a.version, a.moi, a.fechaCompra, a.tipoActivo.porciento, a.tipoActivo.vidaUtil, a.inactivo, a.fechaInactivo, a.fechaReubicado, a.tipoActivo.cuenta.id.idCtaMayor, a.centroCosto.id.idCosto, a.centroCosto.nombre) from Activo a inner join a.tipoActivo where a.empresa.id = :empresaId and a.fechaCompra <= :fecha and a.fechaReubicado is null"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setDate("fecha", fecha); List<Activo> activos = query.list(); for (Activo activo : activos) { log.trace("Depreciando activo {}", activo.getId()); activo = this.deprecia(activo, fecha); this.depreciacionAcumuladaPorCentroDeCosto(activo, mc, mapa1, tiposDeActivo, tiposDeActivoMap); } // Busca activos reubicados query = currentSession().createQuery( "select new Activo(a.id, a.version, a.moi, a.fechaCompra, a.tipoActivo.porciento, a.tipoActivo.vidaUtil, a.inactivo, a.fechaInactivo, a.fechaReubicado, a.tipoActivo.cuenta.id.idCtaMayor, a.centroCosto.id.idCosto, a.centroCosto.nombre) from Activo a inner join a.tipoActivo where a.empresa.id = :empresaId and a.fechaCompra <= :fecha and a.fechaReubicado != null"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setDate("fecha", fecha); activos = query.list(); for (Activo activo : activos) { query = currentSession().createQuery( "select r from ReubicacionActivo r where r.activo.id = :activoId order by r.fecha"); query.setLong("activoId", activo.getId()); List<ReubicacionActivo> reubicaciones = query.list(); Date fechaAnterior = null; boolean bandera1 = true; for (ReubicacionActivo reubicacion : reubicaciones) { if (reubicacion.getFecha().before(fecha)) { activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); if (fechaAnterior != null) { activo.setFechaCompra(fechaAnterior); } this.deprecia(activo, reubicacion.getFecha()); fechaAnterior = reubicacion.getFecha(); } else { if (fechaAnterior != null) { activo.setFechaCompra(fechaAnterior); } activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); this.deprecia(activo, fecha); bandera1 = false; } this.depreciacionAcumuladaPorCentroDeCosto(activo, mc, mapa1, tiposDeActivo, tiposDeActivoMap); } if (bandera1) { activo.setFechaCompra(activo.getFechaReubicado()); this.deprecia(activo, fecha); this.depreciacionAcumuladaPorCentroDeCosto(activo, mc, mapa1, tiposDeActivo, tiposDeActivoMap); } } if (log.isTraceEnabled()) { for (Map<String, Object> centroCosto : mapa1.values()) { log.trace("CentroCosto: {} : {}", centroCosto.get("nombre"), centroCosto.get("totales")); } } params.put("centrosDeCosto", mapa1.values()); return params; }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
License:Open Source License
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)/*from ww w . j av a 2 s .c om*/ public Map<String, Object> depreciacionAcumuladaPorCentroDeCostoDetalle(Map<String, Object> params) { MathContext mc = new MathContext(16, RoundingMode.HALF_UP); Map<String, BigDecimal> totales = new HashMap<>(); totales.put("ACUMULADA", BigDecimal.ZERO); totales.put("MENSUAL", BigDecimal.ZERO); totales.put("ANUAL", BigDecimal.ZERO); totales.put("NETO", BigDecimal.ZERO); Usuario usuario = (Usuario) params.get("usuario"); String centroCostoId = (String) params.get("centroCostoId"); Date fecha = (Date) params.get("fecha"); CCostoPK ccostoPK = new CCostoPK(usuario.getEjercicio(), centroCostoId); CentroCosto centroCosto = (CentroCosto) currentSession().get(CentroCosto.class, ccostoPK); params.put("centroCosto", centroCosto); Criteria criteria = currentSession().createCriteria(Activo.class); criteria.add(Restrictions.eq("empresa.id", usuario.getEmpresa().getId())); criteria.add(Restrictions.eq("centroCosto.id.ejercicio.id.idEjercicio", usuario.getEjercicio().getId().getIdEjercicio())); criteria.add(Restrictions.eq("centroCosto.id.ejercicio.id.organizacion.id", usuario.getEjercicio().getId().getOrganizacion().getId())); criteria.add(Restrictions.eq("centroCosto.id.idCosto", centroCostoId)); criteria.add(Restrictions.le("fechaCompra", fecha)); criteria.add(Restrictions.isNull("fechaReubicado")); List<Activo> activos = criteria.list(); for (Activo activo : activos) { log.trace("Depreciando activo {}", activo.getId()); activo = this.deprecia(activo, fecha); this.depreciacionAcumuladaPorCentroDeCostoDetalle(activo, mc, totales); } // busca reubicados Query query = currentSession().createQuery( "select a from ReubicacionActivo ra inner join ra.activo a where ra.empresa.id = :empresaId and (ra.centroCosto.id.idCosto = :centroCostoId or ra.centroCostoAnterior.id.idCosto = :centroCostoId) and a.fechaCompra < :fecha group by a"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setString("centroCostoId", centroCostoId); query.setDate("fecha", fecha); List<Activo> reubicados = query.list(); for (Activo activo : reubicados) { log.trace("Depreciando reubicado {}", activo.getId()); query = currentSession().createQuery( "select r from ReubicacionActivo r where r.activo.id = :activoId order by r.fecha"); query.setLong("activoId", activo.getId()); List<ReubicacionActivo> reubicaciones = query.list(); Date fechaAnterior = null; boolean bandera1 = true; for (ReubicacionActivo reubicacion : reubicaciones) { boolean seDeprecio = false; if (reubicacion.getFecha().before(fecha) && reubicacion.getCentroCostoAnterior().getId().getIdCosto().equals(centroCostoId)) { if (fechaAnterior != null) { activo.setFechaCompra(fechaAnterior); } activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); this.deprecia(activo, reubicacion.getFecha()); activos.add(activo); seDeprecio = true; } else if (reubicacion.getCentroCostoAnterior().getId().getIdCosto().equals(centroCostoId)) { if (fechaAnterior != null) { activo.setFechaCompra(fechaAnterior); } activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); this.deprecia(activo, fecha); activos.add(activo); seDeprecio = true; bandera1 = false; } else { activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); } fechaAnterior = reubicacion.getFecha(); if (seDeprecio) { this.depreciacionAcumuladaPorCentroDeCostoDetalle(activo, mc, totales); } } if (bandera1 && activo.getCentroCosto().getId().getIdCosto().equals(centroCostoId)) { activo.setFechaCompra(activo.getFechaReubicado()); this.deprecia(activo, fecha); activos.add(activo); this.depreciacionAcumuladaPorCentroDeCostoDetalle(activo, mc, totales); } } params.put("activos", activos); params.put("totales", totales); return params; }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
License:Open Source License
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)//from www . jav a 2 s.co m public Map<String, Object> depreciacionMensualPorCentroDeCosto(Map<String, Object> params) { Usuario usuario = (Usuario) params.get("usuario"); Query tiposDeActivoQuery = currentSession().createQuery( "select new map(ta.nombre as nombre, ta.cuenta.id.idCtaMayor as cuenta, ta.id as id) from TipoActivo ta where ta.cuenta.id.ejercicio.id.idEjercicio = :ejercicioId and ta.cuenta.id.ejercicio.id.organizacion.id = :organizacionId order by ta.cuenta.id.idCtaMayor"); tiposDeActivoQuery.setString("ejercicioId", usuario.getEjercicio().getId().getIdEjercicio()); tiposDeActivoQuery.setLong("organizacionId", usuario.getEjercicio().getId().getOrganizacion().getId()); List<Map<String, Object>> tiposDeActivo = tiposDeActivoQuery.list(); Map<String, Map<String, Object>> tiposDeActivoMap = new HashMap<>(); for (Map<String, Object> tipoActivo : tiposDeActivo) { tipoActivo.put("total", BigDecimal.ZERO); tiposDeActivoMap.put((String) tipoActivo.get("cuenta"), tipoActivo); } Map<String, Object> totalCC = new HashMap<>(); totalCC.put("nombre", ""); totalCC.put("cuenta", "TOTAL"); totalCC.put("id", 0); totalCC.put("total", BigDecimal.ZERO); tiposDeActivo.add(totalCC); tiposDeActivoMap.put("TOTAL", totalCC); params.put("tiposDeActivo", tiposDeActivo); Date fecha = (Date) params.get("fecha"); MathContext mc = new MathContext(16, RoundingMode.HALF_UP); Map<String, Map<String, Object>> mapa1 = new TreeMap<>(); Query query = currentSession().createQuery( "select new Activo(a.id, a.version, a.moi, a.fechaCompra, a.tipoActivo.porciento, a.tipoActivo.vidaUtil, a.inactivo, a.fechaInactivo, a.fechaReubicado, a.tipoActivo.cuenta.id.idCtaMayor, a.centroCosto.id.idCosto, a.centroCosto.nombre) from Activo a inner join a.tipoActivo where a.empresa.id = :empresaId and a.fechaCompra <= :fecha and a.fechaReubicado is null"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setDate("fecha", fecha); List<Activo> activos = query.list(); for (Activo activo : activos) { log.trace("Depreciando activo {}", activo.getId()); activo = this.deprecia(activo, fecha); this.depreciacionMensualPorCentroDeCosto(activo, mc, mapa1, tiposDeActivo, tiposDeActivoMap); } // busca reubicados query = currentSession().createQuery( "select new Activo(a.id, a.version, a.moi, a.fechaCompra, a.tipoActivo.porciento, a.tipoActivo.vidaUtil, a.inactivo, a.fechaInactivo, a.fechaReubicado, a.tipoActivo.cuenta.id.idCtaMayor, a.centroCosto.id.idCosto, a.centroCosto.nombre) from Activo a inner join a.tipoActivo where a.empresa.id = :empresaId and a.fechaCompra <= :fecha and a.fechaReubicado != null"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setDate("fecha", fecha); activos = query.list(); for (Activo activo : activos) { log.trace("Depreciando activo {}", activo.getId()); query = currentSession().createQuery( "select r from ReubicacionActivo r where r.activo.id = :activoId order by r.fecha"); query.setLong("activoId", activo.getId()); List<ReubicacionActivo> reubicaciones = query.list(); Date fechaAnterior = null; boolean bandera1 = true; for (ReubicacionActivo reubicacion : reubicaciones) { if (reubicacion.getFecha().before(fecha)) { activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); if (fechaAnterior != null) { activo.setFechaCompra(fechaAnterior); } this.deprecia(activo, reubicacion.getFecha()); fechaAnterior = reubicacion.getFecha(); } else { if (fechaAnterior != null) { activo.setFechaCompra(fechaAnterior); } activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); this.deprecia(activo, fecha); bandera1 = false; } this.depreciacionMensualPorCentroDeCosto(activo, mc, mapa1, tiposDeActivo, tiposDeActivoMap); } if (bandera1) { activo.setFechaCompra(activo.getFechaReubicado()); this.deprecia(activo, fecha); this.depreciacionMensualPorCentroDeCosto(activo, mc, mapa1, tiposDeActivo, tiposDeActivoMap); } } if (log.isTraceEnabled()) { for (Map<String, Object> centroCosto : mapa1.values()) { log.trace("CentroCosto: {} : {}", centroCosto.get("nombre"), centroCosto.get("totales")); } } params.put("centrosDeCosto", mapa1.values()); return params; }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
License:Open Source License
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)//from ww w . j ava2 s. c o m public Map<String, Object> depreciacionMensualPorCentroDeCostoDetalle(Map<String, Object> params) { MathContext mc = new MathContext(16, RoundingMode.HALF_UP); Map<String, BigDecimal> totales = new HashMap<>(); totales.put("ACUMULADA", BigDecimal.ZERO); totales.put("MENSUAL", BigDecimal.ZERO); totales.put("ANUAL", BigDecimal.ZERO); totales.put("NETO", BigDecimal.ZERO); Usuario usuario = (Usuario) params.get("usuario"); String centroCostoId = (String) params.get("centroCostoId"); Date fecha = (Date) params.get("fecha"); CCostoPK ccostoPK = new CCostoPK(usuario.getEjercicio(), centroCostoId); CentroCosto centroCosto = (CentroCosto) currentSession().get(CentroCosto.class, ccostoPK); params.put("centroCosto", centroCosto); Criteria criteria = currentSession().createCriteria(Activo.class); criteria.add(Restrictions.eq("empresa.id", usuario.getEmpresa().getId())); criteria.add(Restrictions.eq("centroCosto.id.ejercicio.id.idEjercicio", usuario.getEjercicio().getId().getIdEjercicio())); criteria.add(Restrictions.eq("centroCosto.id.ejercicio.id.organizacion.id", usuario.getEjercicio().getId().getOrganizacion().getId())); criteria.add(Restrictions.eq("centroCosto.id.idCosto", centroCostoId)); criteria.add(Restrictions.le("fechaCompra", fecha)); criteria.add(Restrictions.isNull("fechaReubicado")); List<Activo> activos = criteria.list(); for (Activo activo : activos) { log.trace("Depreciando activo {}", activo.getId()); activo = this.deprecia(activo, fecha); this.depreciacionMensualPorCentroDeCostoDetalle(activo, mc, totales); } // busca reubicados Query query = currentSession().createQuery( "select a from ReubicacionActivo ra inner join ra.activo a where ra.empresa.id = :empresaId and (ra.centroCosto.id.idCosto = :centroCostoId or ra.centroCostoAnterior.id.idCosto = :centroCostoId) and a.fechaCompra < :fecha group by a"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setString("centroCostoId", centroCostoId); query.setDate("fecha", fecha); List<Activo> reubicados = query.list(); for (Activo activo : reubicados) { log.trace("Depreciando reubicado {}", activo.getId()); query = currentSession().createQuery( "select r from ReubicacionActivo r where r.activo.id = :activoId order by r.fecha"); query.setLong("activoId", activo.getId()); List<ReubicacionActivo> reubicaciones = query.list(); Date fechaAnterior = null; boolean bandera1 = true; for (ReubicacionActivo reubicacion : reubicaciones) { boolean seDeprecio = false; if (reubicacion.getFecha().before(fecha) && reubicacion.getCentroCostoAnterior().getId().getIdCosto().equals(centroCostoId)) { if (fechaAnterior != null) { activo.setFechaCompra(fechaAnterior); } activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); this.deprecia(activo, reubicacion.getFecha()); activos.add(activo); seDeprecio = true; } else if (reubicacion.getCentroCostoAnterior().getId().getIdCosto().equals(centroCostoId)) { if (fechaAnterior != null) { activo.setFechaCompra(fechaAnterior); } activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); this.deprecia(activo, fecha); activos.add(activo); seDeprecio = true; bandera1 = false; } else { activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); } fechaAnterior = reubicacion.getFecha(); if (seDeprecio) { this.depreciacionMensualPorCentroDeCostoDetalle(activo, mc, totales); } } if (bandera1 && activo.getCentroCosto().getId().getIdCosto().equals(centroCostoId)) { activo.setFechaCompra(activo.getFechaReubicado()); this.deprecia(activo, fecha); this.depreciacionMensualPorCentroDeCostoDetalle(activo, mc, totales); activos.add(activo); } } params.put("activos", activos); params.put("totales", totales); return params; }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
License:Open Source License
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)/* w w w.java2s. c om*/ public Map<String, Object> depreciacionAcumuladaPorTipoActivo(Map<String, Object> params) { Usuario usuario = (Usuario) params.get("usuario"); Query tiposDeActivoQuery = currentSession().createQuery( "select new map(ta.nombre as nombre, ta.cuenta.id.idCtaMayor as cuenta, ta.id as id) from TipoActivo ta where ta.cuenta.id.ejercicio.id.idEjercicio = :ejercicioId and ta.cuenta.id.ejercicio.id.organizacion.id = :organizacionId order by ta.cuenta.id.idCtaMayor"); tiposDeActivoQuery.setString("ejercicioId", usuario.getEjercicio().getId().getIdEjercicio()); tiposDeActivoQuery.setLong("organizacionId", usuario.getEjercicio().getId().getOrganizacion().getId()); List<Map<String, Object>> tiposDeActivo = tiposDeActivoQuery.list(); Map<String, Map<String, Object>> tiposDeActivoMap = new HashMap<>(); for (Map<String, Object> tipoActivo : tiposDeActivo) { tipoActivo.put("ACUMULADA", BigDecimal.ZERO); tipoActivo.put("MENSUAL", BigDecimal.ZERO); tiposDeActivoMap.put((String) tipoActivo.get("cuenta"), tipoActivo); } log.trace("TiposDeActivoMap: {}", tiposDeActivoMap); params.put("tiposDeActivo", tiposDeActivo); Map<String, BigDecimal> totales = new HashMap<>(); totales.put("ACUMULADA", BigDecimal.ZERO); totales.put("MENSUAL", BigDecimal.ZERO); Date fecha = (Date) params.get("fecha"); MathContext mc = new MathContext(16, RoundingMode.HALF_UP); Query query = currentSession().createQuery( "select new Activo(a.id, a.version, a.moi, a.fechaCompra, a.tipoActivo.porciento, a.tipoActivo.vidaUtil, a.inactivo, a.fechaInactivo, a.fechaReubicado, a.tipoActivo.cuenta.id.idCtaMayor, a.centroCosto.id.idCosto, a.centroCosto.nombre) from Activo a inner join a.tipoActivo where a.empresa.id = :empresaId and a.fechaCompra <= :fecha"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setDate("fecha", fecha); List<Activo> activos = query.list(); for (Activo activo : activos) { log.trace("Depreciando activo {}", activo.getId()); activo = this.deprecia(activo, fecha); Map<String, Object> tipoActivo = (Map<String, Object>) tiposDeActivoMap .get(activo.getTipoActivoCuenta()); BigDecimal acumulada = (BigDecimal) tipoActivo.get("ACUMULADA"); acumulada = acumulada.add(activo.getDepreciacionAcumulada(), mc); tipoActivo.put("ACUMULADA", acumulada); BigDecimal totalAcumulada = (BigDecimal) totales.get("ACUMULADA"); totalAcumulada = totalAcumulada.add(activo.getDepreciacionAcumulada(), mc); totales.put("ACUMULADA", totalAcumulada); BigDecimal mensual = (BigDecimal) tipoActivo.get("MENSUAL"); mensual = mensual.add(activo.getDepreciacionMensual(), mc); tipoActivo.put("MENSUAL", mensual); BigDecimal totalMensual = (BigDecimal) totales.get("MENSUAL"); totalMensual = totalMensual.add(activo.getDepreciacionMensual(), mc); totales.put("MENSUAL", totalMensual); } if (log.isTraceEnabled()) { for (Map<String, Object> tipoActivo : tiposDeActivo) { log.trace("TipoActivo: {} : {} : {}", new Object[] { tipoActivo.get("nombre"), tipoActivo.get("ACUMULADA"), tipoActivo.get("MENSUAL") }); } log.trace("Totales: {}", totales); } params.put("totales", totales); return params; }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
License:Open Source License
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)/*from w ww . jav a 2 s .c o m*/ public Map<String, Object> reporteDIA(Integer anio, Usuario usuario) { Map<String, Object> resultado = new HashMap<>(); Calendar fecha = Calendar.getInstance(); fecha.setTimeInMillis(0); fecha.set(Calendar.DAY_OF_YEAR, 1); fecha.set(Calendar.YEAR, anio); fecha.set(Calendar.HOUR_OF_DAY, 0); Calendar fecha2 = Calendar.getInstance(); fecha2.setTime(fecha.getTime()); fecha2.add(Calendar.YEAR, 1); log.debug("Armando reporte dia de {} a {}", fecha, fecha2); MathContext mc = new MathContext(16, RoundingMode.HALF_UP); Map<String, Map<String, Object>> grupos = new TreeMap<>(); BigDecimal totalCosto = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); BigDecimal totalCompras = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); BigDecimal totalBajas = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); BigDecimal costoFinal = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); BigDecimal totalDepreciacionAcumulada = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); BigDecimal totalComprasAcumuladas = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); BigDecimal totalBajasAcumuladas = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); BigDecimal totalDepreciacionFinal = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); BigDecimal valorNeto = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); Criteria criteria = currentSession().createCriteria(TipoActivo.class); criteria.add(Restrictions.eq("empresa.id", usuario.getEmpresa().getId())); List<TipoActivo> tiposDeActivo = criteria.list(); for (TipoActivo tipoActivo : tiposDeActivo) { Map<String, Object> ta = new HashMap<>(); ta.put("cuenta", tipoActivo.getCuenta().getId().getIdCtaMayor()); ta.put("nombre", tipoActivo.getNombre()); ta.put("costo", BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); ta.put("compras", BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); ta.put("bajas", BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); ta.put("costoFinal", BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); ta.put("depreciacionAcumulada", BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); ta.put("comprasAcumuladas", BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); ta.put("bajasAcumuladas", BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); ta.put("depreciacionFinal", BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); ta.put("valorNeto", BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); grupos.put(tipoActivo.getCuenta().getId().getIdCtaMayor(), ta); } log.debug("Activos"); Query query = currentSession().createQuery( "select new Activo(a.id, a.version, a.moi, a.fechaCompra, a.tipoActivo.porciento, a.tipoActivo.vidaUtil, a.inactivo, a.fechaInactivo, a.fechaReubicado, a.tipoActivo.cuenta.id.idCtaMayor, a.centroCosto.id.idCosto, a.centroCosto.nombre) " + "from Activo a inner join a.tipoActivo " + "where a.empresa.id = :empresaId " + "and a.fechaCompra <= :fecha " + "and (a.inactivo = false or a.fechaInactivo > :fecha)"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setDate("fecha", fecha.getTime()); for (Activo activo : (List<Activo>) query.list()) { activo = this.deprecia(activo, fecha.getTime()); Map<String, Object> ta = grupos.get(activo.getTipoActivoCuenta()); BigDecimal costo = (BigDecimal) ta.get("costo"); costo = costo.add(activo.getMoi(), mc); ta.put("costo", costo); BigDecimal depreciacionAcumulada = (BigDecimal) ta.get("depreciacionAcumulada"); depreciacionAcumulada = depreciacionAcumulada.add(activo.getDepreciacionAcumulada(), mc); ta.put("depreciacionAcumulada", depreciacionAcumulada); totalCosto = totalCosto.add(activo.getMoi()); totalDepreciacionAcumulada = totalDepreciacionAcumulada.add(activo.getDepreciacionAcumulada(), mc); activo = this.deprecia(activo, fecha2.getTime()); BigDecimal depreciacionFinal = (BigDecimal) ta.get("depreciacionFinal"); depreciacionFinal = depreciacionFinal.add(activo.getDepreciacionAcumulada(), mc); ta.put("depreciacionFinal", depreciacionFinal); totalDepreciacionFinal = totalDepreciacionFinal.add(activo.getDepreciacionAcumulada(), mc); } // Compras query = currentSession().createQuery( "select new Activo(a.id, a.version, a.moi, a.fechaCompra, a.tipoActivo.porciento, a.tipoActivo.vidaUtil, a.inactivo, a.fechaInactivo, a.fechaReubicado, a.tipoActivo.cuenta.id.idCtaMayor, a.centroCosto.id.idCosto, a.centroCosto.nombre) " + "from Activo a inner join a.tipoActivo " + "where a.empresa.id = :empresaId " + "and a.fechaCompra between :fecha and :fecha2 " + "and (a.inactivo = false or a.fechaInactivo > :fecha)"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setDate("fecha", fecha.getTime()); query.setDate("fecha2", fecha2.getTime()); for (Activo activo : (List<Activo>) query.list()) { activo = this.deprecia(activo, fecha.getTime()); Map<String, Object> ta = grupos.get(activo.getTipoActivoCuenta()); BigDecimal compras = (BigDecimal) ta.get("compras"); compras = compras.add(activo.getMoi(), mc); ta.put("compras", compras); totalCompras = totalCompras.add(activo.getMoi(), mc); activo = this.deprecia(activo, fecha2.getTime()); BigDecimal comprasAcumuladas = (BigDecimal) ta.get("comprasAcumuladas"); comprasAcumuladas = comprasAcumuladas.add(activo.getDepreciacionAcumulada(), mc); ta.put("comprasAcumuladas", comprasAcumuladas); totalComprasAcumuladas = totalComprasAcumuladas.add(activo.getDepreciacionAcumulada(), mc); totalDepreciacionFinal = totalDepreciacionFinal.add(activo.getDepreciacionAcumulada(), mc); } // Bajas query = currentSession().createQuery( "select new Activo(a.id, a.version, a.moi, a.fechaCompra, a.tipoActivo.porciento, a.tipoActivo.vidaUtil, a.inactivo, a.fechaInactivo, a.fechaReubicado, a.tipoActivo.cuenta.id.idCtaMayor, a.centroCosto.id.idCosto, a.centroCosto.nombre) " + "from Activo a inner join a.tipoActivo " + "where a.empresa.id = :empresaId " + "and a.inactivo = true and a.fechaInactivo between :fecha and :fecha2"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setDate("fecha", fecha.getTime()); query.setDate("fecha2", fecha2.getTime()); for (Activo activo : (List<Activo>) query.list()) { activo = this.deprecia(activo, fecha.getTime()); Map<String, Object> ta = grupos.get(activo.getTipoActivoCuenta()); BigDecimal bajas = (BigDecimal) ta.get("bajas"); bajas = bajas.add(activo.getMoi(), mc); ta.put("bajas", bajas); BigDecimal bajasAcumuladas = (BigDecimal) ta.get("bajasAcumuladas"); bajasAcumuladas = bajasAcumuladas.add(activo.getDepreciacionAcumulada(), mc); ta.put("bajasAcumuladas", bajasAcumuladas); totalBajas = totalBajas.add(activo.getMoi(), mc); totalBajasAcumuladas = totalBajasAcumuladas.add(activo.getDepreciacionAcumulada(), mc); } for (TipoActivo tipoActivo : tiposDeActivo) { Map<String, Object> grupo = grupos.get(tipoActivo.getCuenta().getId().getIdCtaMayor()); BigDecimal costo = (BigDecimal) grupo.get("costo"); BigDecimal compras = (BigDecimal) grupo.get("compras"); BigDecimal bajas = (BigDecimal) grupo.get("bajas"); BigDecimal grupoCostoFinal = costo.add(compras.subtract(bajas, mc), mc); grupo.put("costoFinal", grupoCostoFinal); costoFinal = costoFinal.add(grupoCostoFinal, mc); BigDecimal depreciacionFinal = (BigDecimal) grupo.get("depreciacionFinal"); BigDecimal depreciacionAcumulada = (BigDecimal) grupo.get("depreciacionAcumulada"); grupo.put("comprasAcumuladas", depreciacionFinal.subtract(depreciacionAcumulada, mc)); totalComprasAcumuladas = totalDepreciacionFinal.subtract(totalDepreciacionAcumulada, mc); BigDecimal grupoValorNeto = grupoCostoFinal.subtract(depreciacionFinal, mc); grupo.put("valorNeto", grupoValorNeto); valorNeto = valorNeto.add(grupoValorNeto, mc); log.debug("{} : {} : {} : {} : {}", new Object[] { tipoActivo.getNombre(), costoFinal, depreciacionFinal, grupoValorNeto, valorNeto }); } resultado.put("lista", grupos.values()); resultado.put("totalCosto", totalCosto); resultado.put("totalCompras", totalCompras); resultado.put("totalBajas", totalBajas); resultado.put("costoFinal", costoFinal); resultado.put("totalDepreciacionAcumulada", totalDepreciacionAcumulada); resultado.put("totalComprasAcumuladas", totalComprasAcumuladas); resultado.put("totalBajasAcumuladas", totalBajasAcumuladas); resultado.put("totalDepreciacionFinal", totalDepreciacionFinal); resultado.put("valorNeto", valorNeto); return resultado; }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
License:Open Source License
@Override @Transactional(readOnly = true)/*from w ww . java2 s . co m*/ public Map<String, Object> concentradoDepreciacionPorCentroDeCosto(Map<String, Object> params) { Usuario usuario = (Usuario) params.get("usuario"); Query tiposDeActivoQuery = currentSession().createQuery( "select new map(ta.nombre as nombre, ta.cuenta.id.idCtaMayor as cuenta, ta.id as id) from TipoActivo ta where ta.cuenta.id.ejercicio.id.idEjercicio = :ejercicioId and ta.cuenta.id.ejercicio.id.organizacion.id = :organizacionId order by ta.cuenta.id.idCtaMayor"); tiposDeActivoQuery.setString("ejercicioId", usuario.getEjercicio().getId().getIdEjercicio()); tiposDeActivoQuery.setLong("organizacionId", usuario.getEjercicio().getId().getOrganizacion().getId()); List<Map<String, Object>> tiposDeActivo = new ArrayList<>(); Map<String, Object> totalCC = new HashMap<>(); totalCC.put("nombre", ""); totalCC.put("cuenta", "TOTAL"); totalCC.put("id", 0); totalCC.put("acumulada", BigDecimal.ZERO); totalCC.put("mensual", BigDecimal.ZERO); totalCC.put("anual", BigDecimal.ZERO); totalCC.put("valorNeto", BigDecimal.ZERO); totalCC.put("costo", BigDecimal.ZERO); tiposDeActivo.add(totalCC); tiposDeActivo.addAll(tiposDeActivoQuery.list()); Map<String, Map<String, Object>> tiposDeActivoMap = new HashMap<>(); tiposDeActivoMap.put("TOTAL", totalCC); for (Map<String, Object> tipoActivo : tiposDeActivo) { if (!tipoActivo.get("cuenta").equals("TOTAL")) { tipoActivo.put("acumulada", BigDecimal.ZERO); tipoActivo.put("mensual", BigDecimal.ZERO); tipoActivo.put("anual", BigDecimal.ZERO); tipoActivo.put("valorNeto", BigDecimal.ZERO); tipoActivo.put("costo", BigDecimal.ZERO); tiposDeActivoMap.put((String) tipoActivo.get("cuenta"), tipoActivo); } } params.put("tiposDeActivo", tiposDeActivo); Date fecha = (Date) params.get("fecha"); MathContext mc = new MathContext(16, RoundingMode.HALF_UP); Map<String, Map<String, Object>> mapa1 = new TreeMap<>(); Query query = currentSession().createQuery( "select new Activo(a.id, a.version, a.moi, a.fechaCompra, a.tipoActivo.porciento, a.tipoActivo.vidaUtil, a.inactivo, a.fechaInactivo, a.fechaReubicado, a.tipoActivo.cuenta.id.idCtaMayor, a.centroCosto.id.idCosto, a.centroCosto.nombre) from Activo a inner join a.tipoActivo where a.empresa.id = :empresaId and a.fechaCompra <= :fecha and a.fechaReubicado is null"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setDate("fecha", fecha); List<Activo> activos = query.list(); for (Activo activo : activos) { log.trace("Depreciando activo {}", activo.getId()); activo = this.deprecia(activo, fecha); this.concentradoDepreciacionPorCentroDeCosto(activo, mc, mapa1, tiposDeActivo, tiposDeActivoMap); } query = currentSession().createQuery( "select new Activo(a.id, a.version, a.moi, a.fechaCompra, a.tipoActivo.porciento, a.tipoActivo.vidaUtil, a.inactivo, a.fechaInactivo, a.fechaReubicado, a.tipoActivo.cuenta.id.idCtaMayor, a.centroCosto.id.idCosto, a.centroCosto.nombre) from Activo a inner join a.tipoActivo where a.empresa.id = :empresaId and a.fechaCompra <= :fecha and a.fechaReubicado != null"); query.setLong("empresaId", usuario.getEmpresa().getId()); query.setDate("fecha", fecha); activos = query.list(); for (Activo activo : activos) { query = currentSession().createQuery( "select r from ReubicacionActivo r where r.activo.id = :activoId order by r.fecha"); query.setLong("activoId", activo.getId()); List<ReubicacionActivo> reubicaciones = query.list(); Date fechaAnterior = null; boolean bandera1 = true; for (ReubicacionActivo reubicacion : reubicaciones) { if (reubicacion.getFecha().before(fecha)) { activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); if (fechaAnterior != null) { activo.setFechaCompra(fechaAnterior); } this.deprecia(activo, reubicacion.getFecha()); fechaAnterior = reubicacion.getFecha(); } else { if (fechaAnterior != null) { activo.setFechaCompra(fechaAnterior); } activo.setCentroCosto(reubicacion.getCentroCostoAnterior()); this.deprecia(activo, fecha); bandera1 = false; } this.concentradoDepreciacionPorCentroDeCosto(activo, mc, mapa1, tiposDeActivo, tiposDeActivoMap); } if (bandera1) { activo.setFechaCompra(activo.getFechaReubicado()); this.deprecia(activo, fecha); this.concentradoDepreciacionPorCentroDeCosto(activo, mc, mapa1, tiposDeActivo, tiposDeActivoMap); } } if (log.isTraceEnabled()) { for (Map<String, Object> centroCosto : mapa1.values()) { log.trace("CentroCosto: {} : {} : {}", new Object[] { centroCosto.get("cuenta"), centroCosto.get("nombre"), centroCosto.get("totales") }); } log.trace("TiposDeActivo: {}", tiposDeActivo); } params.put("centrosDeCosto", mapa1.values()); return params; }
From source file:mx.edu.um.mateo.inventario.dao.impl.ProductoDaoHibernate.java
License:Open Source License
@SuppressWarnings("unchecked") @Override/*from w w w.j a v a 2s. c o m*/ public void guardaHistorial(Date fecha) { log.debug("Buscando historial de productos de la fecha {}", fecha); StringBuilder sb = new StringBuilder(); sb.append("select new HistorialProducto(p.id, p.almacen) from Producto p order by p.codigo"); log.debug("Cargando lista de productos"); List<HistorialProducto> productos = currentSession().createQuery(sb.toString()).list(); List<HistorialProducto> resultado = new ArrayList<>(); log.debug("Buscando historial por producto ({})", productos.size()); int cont = 0; for (HistorialProducto hp : productos) { if (cont++ % 10 == 0) { log.debug("Leyendo {} / {} Productos", cont, productos.size()); } sb = new StringBuilder(); sb.append( "select new map(p.existencia as existencia) from XProducto p where p.productoId = :productoId and p.fechaCreacion <= :fecha order by p.fechaCreacion desc"); Query query = currentSession().createQuery(sb.toString()); query.setLong("productoId", hp.getProductoId()); query.setTimestamp("fecha", fecha); query.setMaxResults(1); Map<String, Object> existencia = (Map<String, Object>) query.uniqueResult(); if (existencia != null && !existencia.isEmpty()) { sb = new StringBuilder(); sb.append("select hp from HistorialProducto hp where fecha = :fecha and productoId = :productoId"); Query query2 = currentSession().createQuery(sb.toString()); query2.setDate("fecha", fecha); query2.setLong("productoId", hp.getProductoId()); HistorialProducto otro = (HistorialProducto) query2.uniqueResult(); if (otro != null) { hp = otro; } hp.setExistencia((BigDecimal) existencia.get("existencia")); hp.setFecha(fecha); resultado.add(hp); } } log.debug("{} / {} Productos", cont, productos.size()); log.debug("Guardando historial de productos ({})", resultado.size()); cont = 0; for (HistorialProducto hp : resultado) { if (cont++ % 10 == 0) { log.debug("Guardando {} / {} Productos", cont, resultado.size()); } currentSession().saveOrUpdate(hp); } }
From source file:mx.edu.um.mateo.inventario.dao.impl.ProductoDaoHibernate.java
License:Open Source License
@Override public List<Map<String, Object>> revisaEntradas(String fechaString, Usuario usuario) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); List<Map<String, Object>> entradas = new ArrayList<>(); try {// w w w.j ava 2s. c om Date fecha = sdf.parse(fechaString); StringBuilder s = new StringBuilder(); s.append( "select new map(x.entradaId as entradaId, e.folio as folio, x.productoId as productoId, p.sku as sku, count(x.productoId) as cantidad) "); s.append("from XProducto x, Entrada e, Producto p "); s.append( "where x.entradaId = e.id and x.productoId = p.id and x.fechaCreacion >= :fecha and x.almacenId = :almacenId "); s.append("group by x.entradaId, e.folio, x.productoId, p.sku "); s.append("order by cantidad desc, e.folio desc"); Query query = currentSession().createQuery(s.toString()); query.setDate("fecha", fecha); query.setLong("almacenId", usuario.getAlmacen().getId()); List<Map<String, Object>> resultados = (List<Map<String, Object>>) query.list(); for (Map<String, Object> resultado : resultados) { if (((Long) resultado.get("cantidad")) > 1) { entradas.add(resultado); } } } catch (ParseException e) { log.error("No pude entender la fecha " + fechaString, e); } return entradas; }
From source file:mx.edu.um.mateo.rh.dao.impl.DiaFeriadoDaoHibernate.java
/** * @see mx.edu.um.mateo.rh.dao.DiaFeriadoDao#esFeriado(java.util.Date) */// ww w. jav a 2 s . com @Override @Transactional(readOnly = true) public Boolean esFeriado(Date fecha) { Boolean feriado = true; Query query = currentSession().createQuery("select f from DiaFeriado f where f.fecha = :fecha"); query.setDate("fecha", fecha); DiaFeriado dia = (DiaFeriado) query.uniqueResult(); if (dia == null) { feriado = false; } return feriado; }