Example usage for org.joda.time Days daysBetween

List of usage examples for org.joda.time Days daysBetween

Introduction

In this page you can find the example usage for org.joda.time Days daysBetween.

Prototype

public static Days daysBetween(ReadablePartial start, ReadablePartial end) 

Source Link

Document

Creates a Days representing the number of whole days between the two specified partial datetimes.

Usage

From source file:com.google.api.ads.adwords.awreporting.server.kratu.KratuCompute.java

License:Open Source License

public static Kratu createKratuSummary(List<Kratu> dailyKratus, Date startDate, Date endDate) {

    Kratu summarizedKratu = new Kratu();

    BigDecimal daysInRange = new BigDecimal(
            Days.daysBetween(new DateTime(startDate.getTime()), new DateTime(endDate.getTime())).getDays())
                    .add(BigDecimal.ONE);

    // We use the first Kratu to set the Base Account info (They all should have the same Account info).
    if (dailyKratus != null && dailyKratus.size() > 0) {
        summarizedKratu.setTopAccountId(dailyKratus.get(0).getTopAccountId());
        summarizedKratu.setAccountName(dailyKratus.get(0).getAccountName());
        summarizedKratu.setExternalCustomerId(dailyKratus.get(0).getExternalCustomerId());
        summarizedKratu.setCurrencyCode(dailyKratus.get(0).getCurrencyCode());
        summarizedKratu.setDateTimeZone(dailyKratus.get(0).getDateTimeZone());
        summarizedKratu.setAccountSuspended(dailyKratus.get(0).getAccountSuspended());
    }//from  ww w.  j a  v a 2  s  .c o  m

    for (Kratu dailyKratu : dailyKratus) {
        // General
        summarizedKratu.addSpend(dailyKratu.getSpend());
        summarizedKratu.setSpend(summarizedKratu.getSpend().setScale(SCALE, ROUNDING));
        summarizedKratu.addSumBudget(dailyKratu.getSumBudget());
        summarizedKratu.addConversions(dailyKratu.getConversions());

        // Search Info
        summarizedKratu.addTotalClicksSearch(dailyKratu.getTotalClicksSearch());
        summarizedKratu.addImpressionsSearch(dailyKratu.getImpressionsSearch());

        summarizedKratu.addElegibleImpressionsSearch(dailyKratu.getElegibleImpressionsSearch());
        summarizedKratu.addLostImpressionsDueToBudgetSearch(dailyKratu.getLostImpressionsDueToBudgetSearch());
        summarizedKratu
                .addLostImpressionsDueToBidAdRankSearch(dailyKratu.getLostImpressionsDueToBidAdRankSearch());

        summarizedKratu.addCtrSearch(dailyKratu.getCtrSearch().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu
                .addAverageCpcSearch(dailyKratu.getAverageCpcSearch().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu
                .addAverageCpmSearch(dailyKratu.getAverageCpmSearch().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addAveragePositionSearch(
                dailyKratu.getAveragePositionSearch().divide(daysInRange, SCALE, ROUNDING));

        // Display Info
        summarizedKratu.addTotalClicksDisplay(dailyKratu.getTotalClicksDisplay());
        summarizedKratu.addImpressionsDisplay(dailyKratu.getImpressionsDisplay());

        summarizedKratu.addElegibleImpressionsDisplay(dailyKratu.getElegibleImpressionsDisplay());
        summarizedKratu.addLostImpressionsDueToBudgetDisplay(dailyKratu.getLostImpressionsDueToBudgetDisplay());
        summarizedKratu
                .addLostImpressionsDueToBidAdRankDisplay(dailyKratu.getLostImpressionsDueToBidAdRankDisplay());

        summarizedKratu.addCtrDisplay(dailyKratu.getCtrDisplay().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu
                .addAverageCpcDisplay(dailyKratu.getAverageCpcDisplay().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu
                .addAverageCpmDisplay(dailyKratu.getAverageCpmDisplay().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addAveragePositionDisplay(
                dailyKratu.getAveragePositionDisplay().divide(daysInRange, SCALE, ROUNDING));

        // Structural Info
        summarizedKratu.addNumberOfActiveCampaigns(
                dailyKratu.getNumberOfActiveCampaigns().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfActiveAdGroups(
                dailyKratu.getNumberOfActiveAdGroups().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu
                .addNumberOfActiveAds(dailyKratu.getNumberOfActiveAds().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfPositiveActiveKeywords(
                dailyKratu.getNumberOfPositiveActiveKeywords().divide(daysInRange, SCALE, ROUNDING));

        summarizedKratu.addNumberOfActiveBroadMatchingKeywords(
                dailyKratu.getNumberOfActiveBroadMatchingKeywords().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfActivePhraseMatchingKeywords(
                dailyKratu.getNumberOfActivePhraseMatchingKeywords().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfActiveExactMatchingKeywords(
                dailyKratu.getNumberOfActiveExactMatchingKeywords().divide(daysInRange, SCALE, ROUNDING));

        summarizedKratu.addNumberOfNegativeActiveKeywords(
                dailyKratu.getNumberOfNegativeActiveKeywords().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfCampaignNegativeActiveKeywords(
                dailyKratu.getNumberOfCampaignNegativeActiveKeywords().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfAdGroupNegativeActiveKeywords(
                dailyKratu.getNumberOfAdGroupNegativeActiveKeywords().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfActiveGoodQualityScoreKeywords(
                dailyKratu.getNumberOfActiveGoodQualityScoreKeywords().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfActiveAverageQualityScoreKeywords(
                dailyKratu.getNumberOfActiveAverageQualityScoreKeywords().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfActivePoorQualityScoreKeywords(
                dailyKratu.getNumberOfActivePoorQualityScoreKeywords().divide(daysInRange, SCALE, ROUNDING));

        summarizedKratu.addNumberOfCampaignsWithCallExtensionEnabled(
                dailyKratu.getNumberOfCampaignsWithCallExtensionEnabled().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfCampaignsWithLocationExtensionEnabled(dailyKratu
                .getNumberOfCampaignsWithLocationExtensionEnabled().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfCampaignsWithSiteLinksEnabled(
                dailyKratu.getNumberOfCampaignsWithSiteLinksEnabled().divide(daysInRange, SCALE, ROUNDING));

        summarizedKratu.addNumberOfAdgroupsWithoneActiveAd(
                dailyKratu.getNumberOfAdgroupsWithoneActiveAd().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfAdgroupsWithTwoActiveAds(
                dailyKratu.getNumberOfAdgroupsWithTwoActiveAds().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addNumberOfDisapprovedAds(
                dailyKratu.getNumberOfDisapprovedAds().divide(daysInRange, SCALE, ROUNDING));

        summarizedKratu.addWeightedAverageKeywordPosition(
                dailyKratu.getWeightedAverageKeywordPosition().divide(daysInRange, SCALE, ROUNDING));
        summarizedKratu.addWeightedAverageQualityScore(
                dailyKratu.getWeightedAverageQualityScore().divide(daysInRange, SCALE, ROUNDING));

        System.out.print(".");
    }

    if (summarizedKratu.getImpressionsDisplay() + summarizedKratu.getImpressionsSearch() > 0) {
        summarizedKratu.setAccountActive("Yes");
    }

    return summarizedKratu;
}

From source file:com.google.api.ads.adwords.jaxws.extensions.kratu.data.Kratu.java

License:Open Source License

protected static Kratu createKratuSummary(List<Kratu> dailyKratus, Date startDate, Date endDate) {

    Kratu summarizedKratu = new Kratu();

    BigDecimal daysInRange = new BigDecimal(
            Days.daysBetween(new DateTime(startDate.getTime()), new DateTime(endDate.getTime())).getDays())
                    .add(new BigDecimal(1));

    if (dailyKratus != null && dailyKratus.size() > 0) {
        summarizedKratu.topAccountId = dailyKratus.get(0).topAccountId;
        summarizedKratu.accountName = dailyKratus.get(0).accountName;
        summarizedKratu.externalCustomerId = dailyKratus.get(0).externalCustomerId;
        summarizedKratu.currencyCode = dailyKratus.get(0).currencyCode;
        summarizedKratu.dateTimeZone = dailyKratus.get(0).dateTimeZone;
        summarizedKratu.accountSuspended = dailyKratus.get(0).accountSuspended;
    }//w  ww.  j a  va 2  s .  co  m

    for (Kratu dailyKratu : dailyKratus) {
        summarizedKratu.spend = summarizedKratu.spend.add(dailyKratu.spend);
        summarizedKratu.spend = summarizedKratu.spend.setScale(2, RoundingMode.HALF_UP);
        summarizedKratu.conversions += dailyKratu.conversions;

        summarizedKratu.totalClicksSearch += dailyKratu.totalClicksSearch;
        summarizedKratu.impressionsSearch += dailyKratu.impressionsSearch;
        summarizedKratu.lostImpressionsDueToBudgetSearch = summarizedKratu.lostImpressionsDueToBudgetSearch
                .add(dailyKratu.lostImpressionsDueToBudgetSearch);
        summarizedKratu.lostImpressionsDueToBidAdRankSearch = summarizedKratu.lostImpressionsDueToBidAdRankSearch
                .add(dailyKratu.lostImpressionsDueToBidAdRankSearch);
        summarizedKratu.ctrSearch = summarizedKratu.ctrSearch
                .add(dailyKratu.ctrSearch.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.averageCpcSearch = summarizedKratu.averageCpcSearch
                .add(dailyKratu.ctrSearch.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.averageCpmSearch = summarizedKratu.averageCpmSearch
                .add(dailyKratu.averageCpmSearch.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.averagePositionSearch = summarizedKratu.averagePositionSearch
                .add(dailyKratu.averagePositionSearch.divide(daysInRange, 2, RoundingMode.HALF_UP));

        summarizedKratu.totalClicksDisplay += dailyKratu.totalClicksDisplay;
        summarizedKratu.impressionsDisplay += dailyKratu.impressionsDisplay;
        summarizedKratu.lostImpressionsDueToBudgetDisplay = summarizedKratu.lostImpressionsDueToBudgetDisplay
                .add(dailyKratu.lostImpressionsDueToBudgetDisplay);
        summarizedKratu.lostImpressionsDueToBidAdRankDisplay = summarizedKratu.lostImpressionsDueToBidAdRankDisplay
                .add(dailyKratu.lostImpressionsDueToBidAdRankDisplay);
        summarizedKratu.ctrDisplay = summarizedKratu.ctrDisplay
                .add(dailyKratu.ctrDisplay.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.averageCpcDisplay = summarizedKratu.averageCpcDisplay
                .add(dailyKratu.averageCpcDisplay.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.averageCpmDisplay = summarizedKratu.averageCpmDisplay
                .add(dailyKratu.averageCpmDisplay.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.averagePositionDisplay = summarizedKratu.averagePositionDisplay
                .add(dailyKratu.averagePositionDisplay.divide(daysInRange, 2, RoundingMode.HALF_UP));

        summarizedKratu.numberOfActiveCampaigns = summarizedKratu.numberOfActiveCampaigns
                .add(dailyKratu.numberOfActiveCampaigns.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.numberOfActiveAdGroups = summarizedKratu.numberOfActiveAdGroups
                .add(dailyKratu.numberOfActiveAdGroups.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.numberOfActiveAds = summarizedKratu.numberOfActiveAds
                .add(dailyKratu.numberOfActiveAds.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.numberOfPositiveActiveKeywords = summarizedKratu.numberOfPositiveActiveKeywords
                .add(dailyKratu.numberOfPositiveActiveKeywords.divide(daysInRange, 2, RoundingMode.HALF_UP));

        summarizedKratu.numberOfActiveBroadMatchingKeywords = summarizedKratu.numberOfActiveBroadMatchingKeywords
                .add(dailyKratu.numberOfActiveBroadMatchingKeywords.divide(daysInRange, 2,
                        RoundingMode.HALF_UP));
        summarizedKratu.numberOfActivePhraseMatchingKeywords = summarizedKratu.numberOfActivePhraseMatchingKeywords
                .add(dailyKratu.numberOfActivePhraseMatchingKeywords.divide(daysInRange, 2,
                        RoundingMode.HALF_UP));
        summarizedKratu.numberOfActiveExactMatchingKeywords = summarizedKratu.numberOfActivePhraseMatchingKeywords
                .add(dailyKratu.numberOfActivePhraseMatchingKeywords.divide(daysInRange, 2,
                        RoundingMode.HALF_UP));

        summarizedKratu.numberOfNegativeActiveKeywords = summarizedKratu.numberOfNegativeActiveKeywords
                .add(dailyKratu.numberOfNegativeActiveKeywords.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.numberOfCampaignNegativeActiveKeywords = summarizedKratu.numberOfNegativeActiveKeywords
                .add(dailyKratu.numberOfNegativeActiveKeywords.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.numberOfAdGroupNegativeActiveKeywords = summarizedKratu.numberOfAdGroupNegativeActiveKeywords
                .add(dailyKratu.numberOfAdGroupNegativeActiveKeywords.divide(daysInRange, 2,
                        RoundingMode.HALF_UP));
        summarizedKratu.numberOfActiveGoodQualityScoreKeywords = summarizedKratu.numberOfActiveGoodQualityScoreKeywords
                .add(dailyKratu.numberOfActiveGoodQualityScoreKeywords.divide(daysInRange, 2,
                        RoundingMode.HALF_UP));
        summarizedKratu.numberOfActiveAverageQualityScoreKeywords = summarizedKratu.numberOfActiveAverageQualityScoreKeywords
                .add(dailyKratu.numberOfActiveAverageQualityScoreKeywords.divide(daysInRange, 2,
                        RoundingMode.HALF_UP));
        summarizedKratu.numberOfActivePoorQualityScoreKeywords = summarizedKratu.numberOfActivePoorQualityScoreKeywords
                .add(dailyKratu.numberOfActivePoorQualityScoreKeywords.divide(daysInRange, 2,
                        RoundingMode.HALF_UP));

        summarizedKratu.numberOfCampaignsWithCallExtensionEnabled = summarizedKratu.numberOfCampaignsWithCallExtensionEnabled
                .add(dailyKratu.numberOfCampaignsWithCallExtensionEnabled.divide(daysInRange, 2,
                        RoundingMode.HALF_UP));
        summarizedKratu.numberOfCampaignsWithLocationExtensionEnabled = summarizedKratu.numberOfCampaignsWithLocationExtensionEnabled
                .add(dailyKratu.numberOfCampaignsWithLocationExtensionEnabled.divide(daysInRange, 2,
                        RoundingMode.HALF_UP));
        summarizedKratu.numberOfCampaignsWithSiteLinksEnabled = summarizedKratu.numberOfCampaignsWithSiteLinksEnabled
                .add(dailyKratu.numberOfCampaignsWithSiteLinksEnabled.divide(daysInRange, 2,
                        RoundingMode.HALF_UP));

        summarizedKratu.numberOfAdgroupsWithoneActiveAd = summarizedKratu.numberOfAdgroupsWithoneActiveAd
                .add(dailyKratu.numberOfAdgroupsWithoneActiveAd.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.numberOfAdgroupsWithTwoActiveAds = summarizedKratu.numberOfAdgroupsWithTwoActiveAds
                .add(dailyKratu.numberOfAdgroupsWithTwoActiveAds.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.numberOfDisapprovedAds = summarizedKratu.numberOfDisapprovedAds
                .add(dailyKratu.numberOfDisapprovedAds.divide(daysInRange, 2, RoundingMode.HALF_UP));

        summarizedKratu.weightedAverageKeywordPosition = summarizedKratu.weightedAverageKeywordPosition
                .add(dailyKratu.weightedAverageKeywordPosition.divide(daysInRange, 2, RoundingMode.HALF_UP));
        summarizedKratu.weightedAverageQualityScore = summarizedKratu.weightedAverageQualityScore
                .add(dailyKratu.weightedAverageQualityScore.divide(daysInRange, 2, RoundingMode.HALF_UP));

        summarizedKratu.sumBudget = summarizedKratu.sumBudget.add(dailyKratu.sumBudget);
        System.out.print(".");
    }
    if (summarizedKratu.impressionsDisplay + summarizedKratu.impressionsSearch > 0) {
        summarizedKratu.accountActive = "Yes";
    }

    return summarizedKratu;
}

From source file:com.graph.line.LineGraphData.java

public LineGraphData(String timeIn, String timeOut) {
    java.sql.Connection con = null;
    java.sql.PreparedStatement stmt = null;
    java.sql.ResultSet rs = null;
    try {// ww w. j  a  v  a 2s  . com
        con = ControlPanelPool.getInstance().getConnection();
        DateTimeFormatter format = org.joda.time.format.DateTimeFormat.forPattern("MM/dd/yyyy");
        LocalDate startDate = LocalDate.parse(timeIn, format);
        LocalDate endDate = LocalDate.parse(timeOut, format);
        int days = Days.daysBetween(startDate, endDate).getDays();
        //List<LocalDate> dates = new ArrayList<>(days);
        sessionCount = new ArrayList<>();
        addressCount = new ArrayList<>();
        dateCount = new ArrayList<>();
        for (int i = 0; i < days; i++) {
            LocalDate d2 = startDate.withFieldAdded(DurationFieldType.days(), i + 1);
            //dates.add(d);
            stmt = con.prepareStatement(
                    "SELECT COUNT(DISTINCT remoteAddress) as remoteAdd, COUNT(DISTINCT sessionId) as sess FROM leadSession WHERE timeIn > CONVERT(date, ?) AND timeIn < CONVERT(date, ?)");
            stmt.setString(1, startDate.withFieldAdded(DurationFieldType.days(), i).toString());
            stmt.setString(2, startDate.withFieldAdded(DurationFieldType.days(), i + 1).toString());
            rs = stmt.executeQuery();
            while (rs.next()) {
                sessionCount.add(rs.getString("sess"));
                addressCount.add(rs.getString("remoteAdd"));
            }
            dateCount.add(startDate.withFieldAdded(DurationFieldType.days(), i).toString());
        }
        con.close();
    } catch (IOException | SQLException | PropertyVetoException ex) {
        Logger.getLogger(LineGraphData.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
        DbUtils.closeQuietly(con, stmt, rs);
    }
}

From source file:com.gst.infrastructure.core.domain.LocalDateInterval.java

License:Apache License

private Integer daysBetween() {
    return Days.daysBetween(this.startDate, this.endDate).getDays();
}

From source file:com.gst.portfolio.interestratechart.domain.InterestRateChartSlabFields.java

License:Apache License

public Integer depositPeriod(final LocalDate periodStartDate, final LocalDate periodEndDate) {
    Integer actualDepositPeriod = 0;
    final SavingsPeriodFrequencyType periodFrequencyType = SavingsPeriodFrequencyType.fromInt(periodType());
    switch (periodFrequencyType) {
    case DAYS://from ww w.j  a va 2s. c om
        actualDepositPeriod = Days.daysBetween(periodStartDate, periodEndDate).getDays();
        break;
    case WEEKS:
        actualDepositPeriod = Weeks.weeksBetween(periodStartDate, periodEndDate).getWeeks();
        break;
    case MONTHS:
        actualDepositPeriod = Months.monthsBetween(periodStartDate, periodEndDate).getMonths();
        break;
    case YEARS:
        actualDepositPeriod = Years.yearsBetween(periodStartDate, periodEndDate).getYears();
        break;
    case INVALID:
        actualDepositPeriod = 0;// default value
        break;
    }
    return actualDepositPeriod;
}

From source file:com.gst.portfolio.loanaccount.domain.Loan.java

License:Apache License

private Money[] fetchInterestFeeAndPenaltyTillDate(final LocalDate paymentDate, final MonetaryCurrency currency,
        final LoanRepaymentScheduleInstallment installment) {
    Money penaltyForCurrentPeriod = Money.zero(getCurrency());
    Money penaltyAccoutedForCurrentPeriod = Money.zero(getCurrency());
    Money feeForCurrentPeriod = Money.zero(getCurrency());
    Money feeAccountedForCurrentPeriod = Money.zero(getCurrency());
    Money interestForCurrentPeriod = Money.zero(getCurrency());
    Money interestAccountedForCurrentPeriod = Money.zero(getCurrency());
    int totalPeriodDays = Days.daysBetween(installment.getFromDate(), installment.getDueDate()).getDays();
    int tillDays = Days.daysBetween(installment.getFromDate(), paymentDate).getDays();
    interestForCurrentPeriod = Money.of(getCurrency(),
            BigDecimal.valueOf(calculateInterestForDays(totalPeriodDays,
                    installment.getInterestCharged(getCurrency()).getAmount(), tillDays)));
    interestAccountedForCurrentPeriod = installment.getInterestWaived(getCurrency())
            .plus(installment.getInterestPaid(getCurrency()));
    for (LoanCharge loanCharge : this.charges) {
        if (loanCharge.isActive() && !loanCharge.isDueAtDisbursement()) {
            if (loanCharge.isDueForCollectionFromAndUpToAndIncluding(installment.getFromDate(), paymentDate)) {
                if (loanCharge.isPenaltyCharge()) {
                    penaltyForCurrentPeriod = penaltyForCurrentPeriod.plus(loanCharge.getAmount(getCurrency()));
                    penaltyAccoutedForCurrentPeriod = penaltyAccoutedForCurrentPeriod.plus(loanCharge
                            .getAmountWaived(getCurrency()).plus(loanCharge.getAmountPaid(getCurrency())));
                } else {
                    feeForCurrentPeriod = feeForCurrentPeriod.plus(loanCharge.getAmount(currency));
                    feeAccountedForCurrentPeriod = feeAccountedForCurrentPeriod
                            .plus(loanCharge.getAmountWaived(getCurrency()).plus(

                                    loanCharge.getAmountPaid(getCurrency())));
                }/*from  www.jav  a  2s  .  co m*/
            } else if (loanCharge.isInstalmentFee()) {
                LoanInstallmentCharge loanInstallmentCharge = loanCharge
                        .getInstallmentLoanCharge(installment.getInstallmentNumber());
                if (loanCharge.isPenaltyCharge()) {
                    penaltyAccoutedForCurrentPeriod = penaltyAccoutedForCurrentPeriod
                            .plus(loanInstallmentCharge.getAmountPaid(currency));
                } else {
                    feeAccountedForCurrentPeriod = feeAccountedForCurrentPeriod
                            .plus(loanInstallmentCharge.getAmountPaid(currency));
                }
            }
        }
    }

    Money[] balances = new Money[6];
    balances[0] = interestForCurrentPeriod;
    balances[1] = feeForCurrentPeriod;
    balances[2] = penaltyForCurrentPeriod;
    balances[3] = feeAccountedForCurrentPeriod;
    balances[4] = penaltyAccoutedForCurrentPeriod;
    balances[5] = interestAccountedForCurrentPeriod;
    return balances;
}

From source file:com.gst.portfolio.loanaccount.domain.Loan.java

License:Apache License

public Money retrieveAccruedAmountAfterDate(final LocalDate tillDate) {
    Money totalAmountAccrued = Money.zero(getCurrency());
    Money actualAmountTobeAccrued = Money.zero(getCurrency());
    for (final LoanRepaymentScheduleInstallment installment : this.repaymentScheduleInstallments) {
        totalAmountAccrued = totalAmountAccrued.plus(installment.getInterestAccrued(getCurrency()));

        if (tillDate.isAfter(installment.getFromDate()) && tillDate.isBefore(installment.getDueDate())) {
            int daysInPeriod = Days.daysBetween(installment.getFromDate(), installment.getDueDate()).getDays();
            int tillDays = Days.daysBetween(installment.getFromDate(), tillDate).getDays();
            double interest = calculateInterestForDays(daysInPeriod,
                    installment.getInterestCharged(getCurrency()).getAmount(), tillDays);
            actualAmountTobeAccrued = actualAmountTobeAccrued.plus(interest);
        } else if ((tillDate.isAfter(installment.getFromDate()) && tillDate.isEqual(installment.getDueDate()))
                || (tillDate.isEqual(installment.getFromDate()) && tillDate.isEqual(installment.getDueDate()))
                || (tillDate.isAfter(installment.getFromDate())
                        && tillDate.isAfter(installment.getDueDate()))) {
            actualAmountTobeAccrued = actualAmountTobeAccrued
                    .plus(installment.getInterestAccrued(getCurrency()));
        }//from w  w  w .  j  a  va2  s.c o  m
    }
    Money accredAmountAfterDate = totalAmountAccrued.minus(actualAmountTobeAccrued);
    if (accredAmountAfterDate.isLessThanZero()) {
        accredAmountAfterDate = Money.zero(getCurrency());
    }
    return accredAmountAfterDate;
}

From source file:com.gst.portfolio.loanaccount.loanschedule.data.LoanSchedulePeriodData.java

License:Apache License

private LoanSchedulePeriodData(final Integer periodNumber, final LocalDate fromDate, final LocalDate dueDate,
        final BigDecimal principalDisbursed, final BigDecimal chargesDueAtTimeOfDisbursement,
        final boolean isDisbursed) {
    this.period = periodNumber;
    this.fromDate = fromDate;
    this.dueDate = dueDate;
    this.obligationsMetOnDate = null;
    this.complete = null;
    if (fromDate != null) {
        this.daysInPeriod = Days.daysBetween(this.fromDate, this.dueDate).getDays();
    } else {/* w w w .  j ava 2 s.  com*/
        this.daysInPeriod = null;
    }
    this.principalDisbursed = principalDisbursed;
    this.principalOriginalDue = null;
    this.principalDue = null;
    this.principalPaid = null;
    this.principalWrittenOff = null;
    this.principalOutstanding = null;
    this.principalLoanBalanceOutstanding = principalDisbursed;

    this.interestOriginalDue = null;
    this.interestDue = null;
    this.interestPaid = null;
    this.interestWaived = null;
    this.interestWrittenOff = null;
    this.interestOutstanding = null;

    this.feeChargesDue = chargesDueAtTimeOfDisbursement;
    if (isDisbursed) {
        this.feeChargesPaid = chargesDueAtTimeOfDisbursement;
        this.feeChargesWaived = null;
        this.feeChargesWrittenOff = null;
        this.feeChargesOutstanding = null;
    } else {
        this.feeChargesPaid = null;
        this.feeChargesWaived = null;
        this.feeChargesWrittenOff = null;
        this.feeChargesOutstanding = chargesDueAtTimeOfDisbursement;
    }

    this.penaltyChargesDue = null;
    this.penaltyChargesPaid = null;
    this.penaltyChargesWaived = null;
    this.penaltyChargesWrittenOff = null;
    this.penaltyChargesOutstanding = null;

    this.totalOriginalDueForPeriod = chargesDueAtTimeOfDisbursement;
    this.totalDueForPeriod = chargesDueAtTimeOfDisbursement;
    this.totalPaidForPeriod = this.feeChargesPaid;
    this.totalPaidInAdvanceForPeriod = null;
    this.totalPaidLateForPeriod = null;
    this.totalWaivedForPeriod = null;
    this.totalWrittenOffForPeriod = null;
    this.totalOutstandingForPeriod = this.feeChargesOutstanding;
    this.totalActualCostOfLoanForPeriod = this.feeChargesDue;
    this.totalInstallmentAmountForPeriod = null;
    if (dueDate.isBefore(new LocalDate())) {
        this.totalOverdue = this.totalOutstandingForPeriod;
    } else {
        this.totalOverdue = null;
    }
}

From source file:com.gst.portfolio.loanaccount.loanschedule.data.LoanSchedulePeriodData.java

License:Apache License

private LoanSchedulePeriodData(final Integer periodNumber, final LocalDate fromDate, final LocalDate dueDate,
        final BigDecimal principalOriginalDue, final BigDecimal principalOutstanding,
        final BigDecimal interestDueOnPrincipalOutstanding, final BigDecimal feeChargesDueForPeriod,
        final BigDecimal penaltyChargesDueForPeriod, final BigDecimal totalDueForPeriod,
        BigDecimal totalInstallmentAmountForPeriod) {
    this.period = periodNumber;
    this.fromDate = fromDate;
    this.dueDate = dueDate;
    this.obligationsMetOnDate = null;
    this.complete = null;
    if (fromDate != null) {
        this.daysInPeriod = Days.daysBetween(this.fromDate, this.dueDate).getDays();
    } else {// w w w  .  j a v  a  2s . co  m
        this.daysInPeriod = null;
    }
    this.principalDisbursed = null;
    this.principalOriginalDue = principalOriginalDue;
    this.principalDue = principalOriginalDue;
    this.principalPaid = null;
    this.principalWrittenOff = null;
    this.principalOutstanding = principalOriginalDue;
    this.principalLoanBalanceOutstanding = principalOutstanding;

    this.interestOriginalDue = interestDueOnPrincipalOutstanding;
    this.interestDue = interestDueOnPrincipalOutstanding;
    this.interestPaid = null;
    this.interestWaived = null;
    this.interestWrittenOff = null;
    this.interestOutstanding = interestDueOnPrincipalOutstanding;

    this.feeChargesDue = feeChargesDueForPeriod;
    this.feeChargesPaid = null;
    this.feeChargesWaived = null;
    this.feeChargesWrittenOff = null;
    this.feeChargesOutstanding = null;

    this.penaltyChargesDue = penaltyChargesDueForPeriod;
    this.penaltyChargesPaid = null;
    this.penaltyChargesWaived = null;
    this.penaltyChargesWrittenOff = null;
    this.penaltyChargesOutstanding = null;

    this.totalOriginalDueForPeriod = totalDueForPeriod;
    this.totalDueForPeriod = totalDueForPeriod;
    this.totalPaidForPeriod = BigDecimal.ZERO;
    this.totalPaidInAdvanceForPeriod = null;
    this.totalPaidLateForPeriod = null;
    this.totalWaivedForPeriod = null;
    this.totalWrittenOffForPeriod = null;
    this.totalOutstandingForPeriod = totalDueForPeriod;
    this.totalActualCostOfLoanForPeriod = interestDueOnPrincipalOutstanding.add(feeChargesDueForPeriod);
    this.totalInstallmentAmountForPeriod = totalInstallmentAmountForPeriod;

    if (dueDate.isBefore(new LocalDate())) {
        this.totalOverdue = this.totalOutstandingForPeriod;
    } else {
        this.totalOverdue = null;
    }
}

From source file:com.gst.portfolio.loanaccount.loanschedule.data.LoanSchedulePeriodData.java

License:Apache License

private LoanSchedulePeriodData(final Integer periodNumber, final LocalDate fromDate, final LocalDate dueDate,
        final LocalDate obligationsMetOnDate, final boolean complete, final BigDecimal principalOriginalDue,
        final BigDecimal principalPaid, final BigDecimal principalWrittenOff,
        final BigDecimal principalOutstanding, final BigDecimal principalLoanBalanceOutstanding,
        final BigDecimal interestDueOnPrincipalOutstanding, final BigDecimal interestPaid,
        final BigDecimal interestWaived, final BigDecimal interestWrittenOff,
        final BigDecimal interestOutstanding, final BigDecimal feeChargesDue, final BigDecimal feeChargesPaid,
        final BigDecimal feeChargesWaived, final BigDecimal feeChargesWrittenOff,
        final BigDecimal feeChargesOutstanding, final BigDecimal penaltyChargesDue,
        final BigDecimal penaltyChargesPaid, final BigDecimal penaltyChargesWaived,
        final BigDecimal penaltyChargesWrittenOff, final BigDecimal penaltyChargesOutstanding,
        final BigDecimal totalDueForPeriod, final BigDecimal totalPaid,
        final BigDecimal totalPaidInAdvanceForPeriod, final BigDecimal totalPaidLateForPeriod,
        final BigDecimal totalWaived, final BigDecimal totalWrittenOff, final BigDecimal totalOutstanding,
        final BigDecimal totalActualCostOfLoanForPeriod, final BigDecimal totalInstallmentAmountForPeriod) {
    this.period = periodNumber;
    this.fromDate = fromDate;
    this.dueDate = dueDate;
    this.obligationsMetOnDate = obligationsMetOnDate;
    this.complete = complete;
    if (fromDate != null) {
        this.daysInPeriod = Days.daysBetween(this.fromDate, this.dueDate).getDays();
    } else {/* w  w w.  j  ava  2s .  c  o m*/
        this.daysInPeriod = null;
    }
    this.principalDisbursed = null;
    this.principalOriginalDue = principalOriginalDue;
    this.principalDue = principalOriginalDue;
    this.principalPaid = principalPaid;
    this.principalWrittenOff = principalWrittenOff;
    this.principalOutstanding = principalOutstanding;
    this.principalLoanBalanceOutstanding = principalLoanBalanceOutstanding;

    this.interestOriginalDue = interestDueOnPrincipalOutstanding;
    this.interestDue = interestDueOnPrincipalOutstanding;
    this.interestPaid = interestPaid;
    this.interestWaived = interestWaived;
    this.interestWrittenOff = interestWrittenOff;
    this.interestOutstanding = interestOutstanding;

    this.feeChargesDue = feeChargesDue;
    this.feeChargesPaid = feeChargesPaid;
    this.feeChargesWaived = feeChargesWaived;
    this.feeChargesWrittenOff = feeChargesWrittenOff;
    this.feeChargesOutstanding = feeChargesOutstanding;

    this.penaltyChargesDue = penaltyChargesDue;
    this.penaltyChargesPaid = penaltyChargesPaid;
    this.penaltyChargesWaived = penaltyChargesWaived;
    this.penaltyChargesWrittenOff = penaltyChargesWrittenOff;
    this.penaltyChargesOutstanding = penaltyChargesOutstanding;

    this.totalOriginalDueForPeriod = totalDueForPeriod;
    this.totalDueForPeriod = totalDueForPeriod;
    this.totalPaidForPeriod = totalPaid;
    this.totalPaidInAdvanceForPeriod = totalPaidInAdvanceForPeriod;
    this.totalPaidLateForPeriod = totalPaidLateForPeriod;
    this.totalWaivedForPeriod = totalWaived;
    this.totalWrittenOffForPeriod = totalWrittenOff;
    this.totalOutstandingForPeriod = totalOutstanding;
    this.totalActualCostOfLoanForPeriod = totalActualCostOfLoanForPeriod;
    this.totalInstallmentAmountForPeriod = totalInstallmentAmountForPeriod;

    if (dueDate.isBefore(new LocalDate())) {
        this.totalOverdue = this.totalOutstandingForPeriod;
    } else {
        this.totalOverdue = null;
    }
}