List of usage examples for java.math MathContext MathContext
public MathContext(int setPrecision, RoundingMode setRoundingMode)
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)/*from w w w. j a va 2 s. c om*/ 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:org.mifosplatform.portfolio.loanaccount.domain.Loan.java
private void regenerateRepaymentSchedule(final LoanScheduleGeneratorFactory loanScheduleFactory, final ApplicationCurrency applicationCurrency, final LocalDate calculatedRepaymentsStartingFromDate, final boolean isHolidayEnabled, final List<Holiday> holidays, final WorkingDays workingDays) { final InterestMethod interestMethod = this.loanRepaymentScheduleDetail.getInterestMethod(); final LoanScheduleGenerator loanScheduleGenerator = loanScheduleFactory.create(interestMethod); final RoundingMode roundingMode = RoundingMode.HALF_EVEN; final MathContext mc = new MathContext(8, roundingMode); final Integer loanTermFrequency = this.termFrequency; final PeriodFrequencyType loanTermPeriodFrequencyType = PeriodFrequencyType .fromInt(this.termPeriodFrequencyType); final LoanApplicationTerms loanApplicationTerms = LoanApplicationTerms.assembleFrom(applicationCurrency, loanTermFrequency, loanTermPeriodFrequencyType, getDisbursementDate(), getExpectedFirstRepaymentOnDate(), calculatedRepaymentsStartingFromDate, getInArrearsTolerance(), this.loanRepaymentScheduleDetail); final LoanScheduleModel loanSchedule = loanScheduleGenerator.generate(mc, applicationCurrency, loanApplicationTerms, this.charges, isHolidayEnabled, holidays, workingDays); updateLoanSchedule(loanSchedule);/*from w w w .j ava 2 s . c o m*/ }
From source file:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)//ww w .j a v a 2 s . c o m 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
@Override @SuppressWarnings("unchecked") @Transactional(readOnly = true)/* www . j av a2 s. c om*/ 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)// w w w . j a va2s . 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:mx.edu.um.mateo.activos.dao.impl.ActivoDaoHibernate.java
@Override @Transactional(readOnly = true)//from ww w . j a va 2s.c om 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:com.gst.portfolio.loanaccount.domain.Loan.java
public LoanScheduleModel regenerateScheduleModel(final ScheduleGeneratorDTO scheduleGeneratorDTO) { final RoundingMode roundingMode = MoneyHelper.getRoundingMode(); final MathContext mc = new MathContext(8, roundingMode); final InterestMethod interestMethod = this.loanRepaymentScheduleDetail.getInterestMethod(); final LoanApplicationTerms loanApplicationTerms = constructLoanApplicationTerms(scheduleGeneratorDTO); final LoanScheduleGenerator loanScheduleGenerator = scheduleGeneratorDTO.getLoanScheduleFactory() .create(interestMethod);/* ww w .ja v a 2 s . c o m*/ final LoanScheduleModel loanSchedule = loanScheduleGenerator.generate(mc, loanApplicationTerms, charges(), scheduleGeneratorDTO.getHolidayDetailDTO()); return loanSchedule; }
From source file:atlas.kingj.roi.FrmMain.java
public static String getSignificant(double value, int sigFigs) { MathContext mc = new MathContext(sigFigs, RoundingMode.DOWN); BigDecimal bigDecimal = new BigDecimal(value, mc); return bigDecimal.toPlainString(); }
From source file:org.apache.fineract.portfolio.loanaccount.domain.Loan.java
private LoanScheduleDTO getRecalculatedSchedule(final ScheduleGeneratorDTO generatorDTO) { if (!this.repaymentScheduleDetail().isInterestRecalculationEnabled() || isNpa || !isOpen()) { return null; }//from w w w .ja va 2 s . co m final InterestMethod interestMethod = this.loanRepaymentScheduleDetail.getInterestMethod(); final LoanScheduleGenerator loanScheduleGenerator = generatorDTO.getLoanScheduleFactory() .create(interestMethod); final RoundingMode roundingMode = MoneyHelper.getRoundingMode(); final MathContext mc = new MathContext(8, roundingMode); final LoanApplicationTerms loanApplicationTerms = constructLoanApplicationTerms(generatorDTO); final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor = this.transactionProcessorFactory .determineProcessor(this.transactionProcessingStrategy); return loanScheduleGenerator.rescheduleNextInstallments(mc, loanApplicationTerms, charges(), generatorDTO.getHolidayDetailDTO(), retreiveListOfTransactionsPostDisbursementExcludeAccruals(), loanRepaymentScheduleTransactionProcessor, repaymentScheduleInstallments, generatorDTO.getRecalculateFrom()); }
From source file:org.apache.fineract.portfolio.loanaccount.domain.Loan.java
public LoanRepaymentScheduleInstallment fetchPrepaymentDetail(final ScheduleGeneratorDTO scheduleGeneratorDTO, final LocalDate onDate) { LoanRepaymentScheduleInstallment installment = null; if (this.loanRepaymentScheduleDetail.isInterestRecalculationEnabled()) { final RoundingMode roundingMode = MoneyHelper.getRoundingMode(); final MathContext mc = new MathContext(8, roundingMode); final InterestMethod interestMethod = this.loanRepaymentScheduleDetail.getInterestMethod(); final LoanApplicationTerms loanApplicationTerms = constructLoanApplicationTerms(scheduleGeneratorDTO); final LoanScheduleGenerator loanScheduleGenerator = scheduleGeneratorDTO.getLoanScheduleFactory() .create(interestMethod); final LoanRepaymentScheduleTransactionProcessor loanRepaymentScheduleTransactionProcessor = this.transactionProcessorFactory .determineProcessor(this.transactionProcessingStrategy); installment = loanScheduleGenerator.calculatePrepaymentAmount(getCurrency(), onDate, loanApplicationTerms, mc, charges(), scheduleGeneratorDTO.getHolidayDetailDTO(), retreiveListOfTransactionsPostDisbursementExcludeAccruals(), loanRepaymentScheduleTransactionProcessor, this.fetchRepaymentScheduleInstallments()); } else {//from w w w .j ava2 s . co m installment = this.getTotalOutstandingOnLoan(); } return installment; }