private APUnitTaxCalculationInfo calculateVacantLandTax( final Property property, final Date occupancyDate) { final APUnitTaxCalculationInfo unitTaxCalculationInfo = new APUnitTaxCalculationInfo(); unitTaxCalculationInfo.setFloorNumber("0"); unitTaxCalculationInfo.setBaseRateEffectiveDate(occupancyDate); unitTaxCalculationInfo.setCapitalValue( new BigDecimal(property.getPropertyDetail().getCurrentCapitalValue())); unitTaxCalculationInfo.setNetARV(unitTaxCalculationInfo.getCapitalValue()); return unitTaxCalculationInfo; }
private APUnitTaxCalculationInfo prepareUnitCalcInfo( final Property property, final Floor floor, final BoundaryCategory boundaryCategory) { final APUnitTaxCalculationInfo unitTaxCalculationInfo = new APUnitTaxCalculationInfo(); BigDecimal builtUpArea = BigDecimal.ZERO; BigDecimal floorMrv = BigDecimal.ZERO; BigDecimal floorBuildingValue = BigDecimal.ZERO; BigDecimal floorSiteValue = BigDecimal.ZERO; BigDecimal floorGrossArv = BigDecimal.ZERO; BigDecimal floorDepreciation = BigDecimal.ZERO; BigDecimal floorNetArv = BigDecimal.ZERO; builtUpArea = BigDecimal.valueOf(floor.getBuiltUpArea().getArea()); floorMrv = calculateFloorMrv(builtUpArea, boundaryCategory); floorBuildingValue = calculateFloorBuildingValue(floorMrv); floorSiteValue = calculateFloorSiteValue(floorMrv); floorGrossArv = floorBuildingValue.multiply(new BigDecimal(12)); floorDepreciation = calculateFloorDepreciation(floorGrossArv, floor); if (property.getPropertyDetail().isStructure()) floorNetArv = floorGrossArv.subtract(floorDepreciation); else floorNetArv = floorSiteValue .multiply(new BigDecimal(12)) .add(floorGrossArv.subtract(floorDepreciation)); unitTaxCalculationInfo.setFloorNumber(FLOOR_MAP.get(floor.getFloorNo())); unitTaxCalculationInfo.setBaseRateEffectiveDate(boundaryCategory.getFromDate()); unitTaxCalculationInfo.setBaseRate( BigDecimal.valueOf(boundaryCategory.getCategory().getCategoryAmount())); unitTaxCalculationInfo.setMrv(floorMrv); unitTaxCalculationInfo.setBuildingValue(floorBuildingValue); unitTaxCalculationInfo.setSiteValue(floorSiteValue); unitTaxCalculationInfo.setGrossARV(floorGrossArv); unitTaxCalculationInfo.setDepreciation(floorDepreciation); unitTaxCalculationInfo.setNetARV(floorNetArv.setScale(0, BigDecimal.ROUND_HALF_UP)); return unitTaxCalculationInfo; }