List of usage examples for java.math BigDecimal add
private static long add(long xs, long ys)
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
private void depreciacionAcumuladaPorCentroDeCostoDetalle(Activo activo, MathContext mc, Map<String, BigDecimal> totales) { BigDecimal total = totales.get("ACUMULADA"); total = total.add(activo.getDepreciacionAcumulada(), mc); totales.put("ACUMULADA", total); total = totales.get("MENSUAL"); total = total.add(activo.getDepreciacionMensual(), mc); totales.put("MENSUAL", total); total = totales.get("ANUAL"); total = total.add(activo.getDepreciacionAnual(), mc); totales.put("ANUAL", total); total = totales.get("NETO"); total = total.add(activo.getValorNeto(), mc); totales.put("NETO", total); }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
private void depreciacionMensualPorCentroDeCostoDetalle(Activo activo, MathContext mc, Map<String, BigDecimal> totales) { BigDecimal total = totales.get("ACUMULADA"); total = total.add(activo.getDepreciacionAcumulada(), mc); totales.put("ACUMULADA", total); total = totales.get("MENSUAL"); total = total.add(activo.getDepreciacionMensual(), mc); totales.put("MENSUAL", total); total = totales.get("ANUAL"); total = total.add(activo.getDepreciacionAnual(), mc); totales.put("ANUAL", total); total = totales.get("NETO"); total = total.add(activo.getValorNeto(), mc); totales.put("NETO", total); }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
private void depreciacionAcumuladaPorCentroDeCosto(Activo activo, MathContext mc, Map<String, Map<String, Object>> mapa1, List<Map<String, Object>> tiposDeActivo, Map<String, Map<String, Object>> tiposDeActivoMap) { Map<String, Object> mapa2 = mapa1.get(activo.getCentroCostoCuenta()); Map<String, BigDecimal> mapa3; if (mapa2 == null) { mapa2 = new HashMap<>(); mapa3 = new HashMap<>(); for (Map<String, Object> tipoActivo : tiposDeActivo) { mapa3.put((String) tipoActivo.get("cuenta"), BigDecimal.ZERO); }// w w w . j a v a2s .com mapa3.put("TOTAL", BigDecimal.ZERO); mapa2.put("totales", mapa3); mapa2.put("cuenta", activo.getCentroCostoCuenta()); mapa2.put("nombre", activo.getCentroCostoNombre()); mapa1.put(activo.getCentroCostoCuenta(), mapa2); } mapa3 = (Map<String, BigDecimal>) mapa2.get("totales"); BigDecimal cantidad = mapa3.get(activo.getTipoActivoCuenta()); cantidad = cantidad.add(activo.getDepreciacionAcumulada(), mc); mapa3.put(activo.getTipoActivoCuenta(), cantidad); Map<String, Object> tipoActivo = (Map<String, Object>) tiposDeActivoMap.get(activo.getTipoActivoCuenta()); BigDecimal total = (BigDecimal) tipoActivo.get("total"); total = total.add(activo.getDepreciacionAcumulada(), mc); tipoActivo.put("total", total); // Totales cantidad = mapa3.get("TOTAL"); cantidad = cantidad.add(activo.getDepreciacionAcumulada(), mc); mapa3.put("TOTAL", cantidad); tipoActivo = (Map<String, Object>) tiposDeActivoMap.get("TOTAL"); total = (BigDecimal) tipoActivo.get("total"); total = total.add(activo.getDepreciacionAcumulada(), mc); tipoActivo.put("total", total); }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
private void depreciacionMensualPorCentroDeCosto(Activo activo, MathContext mc, Map<String, Map<String, Object>> mapa1, List<Map<String, Object>> tiposDeActivo, Map<String, Map<String, Object>> tiposDeActivoMap) { Map<String, Object> mapa2 = mapa1.get(activo.getCentroCostoCuenta()); Map<String, BigDecimal> mapa3; if (mapa2 == null) { mapa2 = new HashMap<>(); mapa3 = new HashMap<>(); for (Map<String, Object> tipoActivo : tiposDeActivo) { mapa3.put((String) tipoActivo.get("cuenta"), BigDecimal.ZERO); }// ww w . j a v a2 s . c o m mapa3.put("TOTAL", BigDecimal.ZERO); mapa2.put("totales", mapa3); mapa2.put("cuenta", activo.getCentroCostoCuenta()); mapa2.put("nombre", activo.getCentroCostoNombre()); mapa1.put(activo.getCentroCostoCuenta(), mapa2); } mapa3 = (Map<String, BigDecimal>) mapa2.get("totales"); BigDecimal cantidad = mapa3.get(activo.getTipoActivoCuenta()); cantidad = cantidad.add(activo.getDepreciacionMensual(), mc); mapa3.put(activo.getTipoActivoCuenta(), cantidad); Map<String, Object> tipoActivo = (Map<String, Object>) tiposDeActivoMap.get(activo.getTipoActivoCuenta()); BigDecimal total = (BigDecimal) tipoActivo.get("total"); total = total.add(activo.getDepreciacionMensual(), mc); tipoActivo.put("total", total); // Totales cantidad = mapa3.get("TOTAL"); cantidad = cantidad.add(activo.getDepreciacionMensual(), mc); mapa3.put("TOTAL", cantidad); tipoActivo = (Map<String, Object>) tiposDeActivoMap.get("TOTAL"); total = (BigDecimal) tipoActivo.get("total"); total = total.add(activo.getDepreciacionMensual(), mc); tipoActivo.put("total", total); }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)//from w ww. j a v a 2 s . c o m public Map<String, Object> depreciacionAcumuladaPorTipoActivoDetalle(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 tipoActivoId = (String) params.get("tipoActivoId"); Date fecha = (Date) params.get("fecha"); Query query = currentSession().createQuery( "select ta from TipoActivo ta where ta.cuenta.id.idCtaMayor = :tipoActivoId and ta.cuenta.id.ejercicio.id.idEjercicio = :ejercicioId and ta.cuenta.id.ejercicio.id.organizacion.id = :organizacionId"); query.setString("tipoActivoId", tipoActivoId); query.setString("ejercicioId", usuario.getEjercicio().getId().getIdEjercicio()); query.setLong("organizacionId", usuario.getEjercicio().getId().getOrganizacion().getId()); TipoActivo tipoActivo = (TipoActivo) query.uniqueResult(); if (tipoActivo != null) { params.put("tipoActivo", tipoActivo); Criteria criteria = currentSession().createCriteria(Activo.class); criteria.add(Restrictions.eq("empresa.id", usuario.getEmpresa().getId())); criteria.add(Restrictions.eq("tipoActivo.id", tipoActivo.getId())); criteria.add(Restrictions.le("fechaCompra", fecha)); List<Activo> activos = criteria.list(); for (Activo activo : activos) { log.trace("Depreciando activo {}", activo.getId()); activo = this.deprecia(activo, fecha); BigDecimal total = totales.get("ACUMULADA"); total = total.add(activo.getDepreciacionAcumulada(), mc); totales.put("ACUMULADA", total); total = totales.get("MENSUAL"); total = total.add(activo.getDepreciacionMensual(), mc); totales.put("MENSUAL", total); total = totales.get("ANUAL"); total = total.add(activo.getDepreciacionAnual(), mc); totales.put("ANUAL", total); total = totales.get("NETO"); total = total.add(activo.getValorNeto(), mc); totales.put("NETO", total); } params.put("activos", activos); params.put("totales", totales); } return params; }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)/*from w w w . j a v a2 s .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
private void concentradoDepreciacionPorCentroDeCosto(Activo activo, MathContext mc, Map<String, Map<String, Object>> mapa1, List<Map<String, Object>> tiposDeActivo, Map<String, Map<String, Object>> tiposDeActivoMap) { Map<String, Object> mapa2 = mapa1.get(activo.getCentroCostoCuenta()); Map<String, Map<String, BigDecimal>> mapa3; if (mapa2 == null) { mapa2 = new HashMap<>(); mapa3 = new HashMap<>(); for (Map<String, Object> tipoActivo : tiposDeActivo) { Map<String, BigDecimal> mapa4 = new HashMap<>(); mapa4.put("acumulada", BigDecimal.ZERO); mapa4.put("mensual", BigDecimal.ZERO); mapa4.put("anual", BigDecimal.ZERO); mapa4.put("valorNeto", BigDecimal.ZERO); mapa4.put("costo", BigDecimal.ZERO); mapa3.put((String) tipoActivo.get("cuenta"), mapa4); }// ww w. ja va2s .c o m mapa2.put("totales", mapa3); mapa2.put("cuenta", activo.getCentroCostoCuenta()); mapa2.put("nombre", activo.getCentroCostoNombre()); mapa1.put(activo.getCentroCostoCuenta(), mapa2); } mapa3 = (Map<String, Map<String, BigDecimal>>) mapa2.get("totales"); Map<String, BigDecimal> mapa4 = mapa3.get(activo.getTipoActivoCuenta()); BigDecimal acumulada = mapa4.get("acumulada"); acumulada = acumulada.add(activo.getDepreciacionAcumulada(), mc); mapa4.put("acumulada", acumulada); BigDecimal mensual = mapa4.get("mensual"); mensual = mensual.add(activo.getDepreciacionMensual(), mc); mapa4.put("mensual", mensual); BigDecimal anual = mapa4.get("anual"); anual = anual.add(activo.getDepreciacionAnual(), mc); mapa4.put("anual", anual); BigDecimal valorNeto = mapa4.get("valorNeto"); valorNeto = valorNeto.add(activo.getValorNeto(), mc); mapa4.put("valorNeto", valorNeto); BigDecimal costo = mapa4.get("costo"); costo = costo.add(activo.getMoi(), mc); mapa4.put("costo", costo); Map<String, BigDecimal> total = mapa3.get("TOTAL"); acumulada = total.get("acumulada"); acumulada = acumulada.add(activo.getDepreciacionAcumulada(), mc); total.put("acumulada", acumulada); mensual = total.get("mensual"); mensual = mensual.add(activo.getDepreciacionMensual(), mc); total.put("mensual", mensual); anual = total.get("anual"); anual = anual.add(activo.getDepreciacionAnual(), mc); total.put("anual", anual); valorNeto = total.get("valorNeto"); valorNeto = valorNeto.add(activo.getValorNeto(), mc); total.put("valorNeto", valorNeto); costo = total.get("costo"); costo = costo.add(activo.getMoi(), mc); total.put("costo", costo); Map<String, Object> tipoActivo = (Map<String, Object>) tiposDeActivoMap.get(activo.getTipoActivoCuenta()); acumulada = (BigDecimal) tipoActivo.get("acumulada"); acumulada = acumulada.add(activo.getDepreciacionAcumulada(), mc); tipoActivo.put("acumulada", acumulada); mensual = (BigDecimal) tipoActivo.get("mensual"); mensual = mensual.add(activo.getDepreciacionMensual(), mc); tipoActivo.put("mensual", mensual); anual = (BigDecimal) tipoActivo.get("anual"); anual = anual.add(activo.getDepreciacionAnual(), mc); tipoActivo.put("anual", anual); valorNeto = (BigDecimal) tipoActivo.get("valorNeto"); valorNeto = valorNeto.add(activo.getValorNeto(), mc); tipoActivo.put("valorNeto", valorNeto); costo = (BigDecimal) tipoActivo.get("costo"); costo = costo.add(activo.getMoi(), mc); tipoActivo.put("costo", costo); // Totales tipoActivo = (Map<String, Object>) tiposDeActivoMap.get("TOTAL"); acumulada = (BigDecimal) tipoActivo.get("acumulada"); acumulada = acumulada.add(activo.getDepreciacionAcumulada(), mc); tipoActivo.put("acumulada", acumulada); tipoActivo = (Map<String, Object>) tiposDeActivoMap.get("TOTAL"); mensual = (BigDecimal) tipoActivo.get("mensual"); mensual = mensual.add(activo.getDepreciacionMensual(), mc); tipoActivo.put("mensual", mensual); tipoActivo = (Map<String, Object>) tiposDeActivoMap.get("TOTAL"); anual = (BigDecimal) tipoActivo.get("anual"); anual = anual.add(activo.getDepreciacionAnual(), mc); tipoActivo.put("anual", anual); tipoActivo = (Map<String, Object>) tiposDeActivoMap.get("TOTAL"); valorNeto = (BigDecimal) tipoActivo.get("valorNeto"); valorNeto = valorNeto.add(activo.getValorNeto(), mc); tipoActivo.put("valorNeto", valorNeto); tipoActivo = (Map<String, Object>) tiposDeActivoMap.get("TOTAL"); costo = (BigDecimal) tipoActivo.get("costo"); costo = costo.add(activo.getMoi(), mc); tipoActivo.put("costo", costo); }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)//from w w w . j a v a2 s. co 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:nl.strohalm.cyclos.services.transactions.PaymentServiceImpl.java
@Override public List<ScheduledPaymentDTO> calculatePaymentProjection(final ProjectionDTO params) { getProjectionValidator().validate(params); final LocalSettings localSettings = settingsService.getLocalSettings(); final int paymentCount = params.getPaymentCount(); final TimePeriod recurrence = params.getRecurrence(); final BigDecimal totalAmount = params.getAmount(); final BigDecimal paymentAmount = localSettings.round(totalAmount .divide(CoercionHelper.coerce(BigDecimal.class, paymentCount), localSettings.getMathContext())); BigDecimal accumulatedAmount = BigDecimal.ZERO; Calendar currentDate = DateHelper.truncate(params.getFirstExpirationDate()); final List<ScheduledPaymentDTO> payments = new ArrayList<ScheduledPaymentDTO>(paymentCount); for (int i = 0; i < paymentCount; i++) { final ScheduledPaymentDTO dto = new ScheduledPaymentDTO(); dto.setDate(currentDate);//ww w.j a v a2 s . co m dto.setAmount(i == paymentCount - 1 ? totalAmount.subtract(accumulatedAmount) : paymentAmount); payments.add(dto); accumulatedAmount = accumulatedAmount.add(dto.getAmount(), localSettings.getMathContext()); currentDate = recurrence.add(currentDate); } return payments; }
From source file:ca.uhn.fhir.jpa.dao.SearchBuilder.java
private Predicate createPredicateNumeric(CriteriaBuilder builder, IQueryParameterType params, ParamPrefixEnum cmpValue, BigDecimal valueValue, final Expression<BigDecimal> path, String invalidMessageName, String theValueString) { Predicate num;/* w w w . jav a 2 s. c o m*/ switch (cmpValue) { case GREATERTHAN: num = builder.gt(path, valueValue); break; case GREATERTHAN_OR_EQUALS: num = builder.ge(path, valueValue); break; case LESSTHAN: num = builder.lt(path, valueValue); break; case LESSTHAN_OR_EQUALS: num = builder.le(path, valueValue); break; case APPROXIMATE: case EQUAL: case NOT_EQUAL: BigDecimal mul = calculateFuzzAmount(cmpValue, valueValue); BigDecimal low = valueValue.subtract(mul, MathContext.DECIMAL64); BigDecimal high = valueValue.add(mul, MathContext.DECIMAL64); Predicate lowPred; Predicate highPred; if (cmpValue != ParamPrefixEnum.NOT_EQUAL) { lowPred = builder.ge(path.as(BigDecimal.class), low); highPred = builder.le(path.as(BigDecimal.class), high); num = builder.and(lowPred, highPred); ourLog.trace("Searching for {} <= val <= {}", low, high); } else { // Prefix was "ne", so reverse it! lowPred = builder.lt(path.as(BigDecimal.class), low); highPred = builder.gt(path.as(BigDecimal.class), high); num = builder.or(lowPred, highPred); } break; default: String msg = myContext.getLocalizer().getMessage(SearchBuilder.class, invalidMessageName, cmpValue.getValue(), params.getValueAsQueryToken(myContext)); throw new InvalidRequestException(msg); } return num; }