package org.kuali.kfs.module.ar.businessobject;
import org.junit.Test;
import org.kuali.kfs.module.ar.ArConstants;
public class TimeBasedBillingPeriodTest extends BillingPeriodTest {
@Test
public void testDetermineBillingPeriodPriorTo_Monthly_nullLastBilled_1() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, null, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.MONTHLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Monthly_nullLastBilled_2() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-03-21";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-02-28";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, null, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.MONTHLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Monthly_LastBilledLastMonth() {
String awardStartDate = "2014-07-01";
String lastBilled = "2015-03-29";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2015-03-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilled, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.MONTHLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Monthly_LastBilledTwoMonthsAgo() {
String awardStartDate = "2014-07-01";
String lastBilled = "2015-02-17";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2015-02-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilled, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.MONTHLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Monthly_SpanCalendarYears() {
String awardStartDate = "2013-07-01";
String lastBilled = "2014-06-15";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2014-06-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilled, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.MONTHLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Monthly_MayNotBillNow() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String lastBilledDate = "2015-04-15";
String expectedBillingPeriodStart = null;
String expectedBillingPeriodEnd = null;
boolean expectedBillable = false;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.MONTHLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Monthly_MayBillNowLastYear() {
String awardStartDate = "2014-03-01";
String currentDate = "2015-04-21";
String lastBilledDate = "2014-04-15";
String expectedBillingPeriodStart = "2014-04-01";
String expectedBillingPeriodEnd = "2015-03-31";
boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.MONTHLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Predetermined_nullLastBilled_1() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, null, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.PREDETERMINED_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Predetermined_nullLastBilled_2() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-03-21";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-02-28";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, null, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.PREDETERMINED_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Predetermined_LastBilledLastMonth() {
String awardStartDate = "2014-07-01";
String lastBilled = "2015-03-29";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2015-03-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilled, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.PREDETERMINED_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Predetermined_LastBilledTwoMonthsAgo() {
String awardStartDate = "2014-07-01";
String lastBilled = "2015-02-17";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2015-02-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilled, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.PREDETERMINED_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Predetermined_SpanCalendarYears() {
String awardStartDate = "2013-07-01";
String lastBilled = "2014-06-15";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2014-06-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilled, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.PREDETERMINED_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Predetermined_MayNotBillNow() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String lastBilledDate = "2015-04-15";
String expectedBillingPeriodStart = null;
String expectedBillingPeriodEnd = null;
boolean expectedBillable = false;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.PREDETERMINED_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Predetermined_MayBillNowLastYear() {
String awardStartDate = "2014-03-01";
String currentDate = "2015-04-21";
String lastBilledDate = "2014-04-15";
String expectedBillingPeriodStart = "2014-04-01";
String expectedBillingPeriodEnd = "2015-03-31";
boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.PREDETERMINED_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Milestone_nullLastBilled_1() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, null, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.MILESTONE_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Milestone_nullLastBilled_2() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-03-21";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-02-28";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, null, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.MILESTONE_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Milestone_LastBilledLastMonth() {
String awardStartDate = "2014-07-01";
String lastBilled = "2015-03-29";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2015-03-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilled, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.MILESTONE_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Milestone_LastBilledTwoMonthsAgo() {
String awardStartDate = "2014-07-01";
String lastBilled = "2015-02-17";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2015-02-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilled, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.MILESTONE_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Milestone_SpanCalendarYears() {
String awardStartDate = "2013-07-01";
String lastBilled = "2014-06-15";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2014-06-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilled, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.MILESTONE_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Milestone_MayNotBillNow() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String lastBilledDate = "2015-04-15";
String expectedBillingPeriodStart = null;
String expectedBillingPeriodEnd = null;
boolean expectedBillable = false;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.MILESTONE_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Milestone_MayBillNowLastYear() {
String awardStartDate = "2014-03-01";
String currentDate = "2015-04-21";
String lastBilledDate = "2014-04-15";
String expectedBillingPeriodStart = "2014-04-01";
String expectedBillingPeriodEnd = "2015-03-31";
boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.MILESTONE_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Quarterly_nullLastBilled_1() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-03-31";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, null, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.QUATERLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Quarterly_nullLastBilled_2() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-08-21";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-06-30";
verifyBillingPeriodPriorTo(awardStartDate, currentDate, null, expectedBillingPeriodStart, expectedBillingPeriodEnd, true, ArConstants.QUATERLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Quarterly_MayNotBillNow() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
final String lastBilledDate = "2015-04-20";
String expectedBillingPeriodStart = null;
String expectedBillingPeriodEnd = null;
final boolean expectedBillable = false;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.QUATERLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Quarterly_LastBilledEarlierQuarter() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-08-21";
final String lastBilledDate = "2015-04-20";
String expectedBillingPeriodStart = "2015-04-01";
String expectedBillingPeriodEnd = "2015-06-30";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.QUATERLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Quarterly_LastBilledPreviousQuarter() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
final String lastBilledDate = "2015-03-29";
String expectedBillingPeriodStart = "2015-01-01";
String expectedBillingPeriodEnd = "2015-03-31";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.QUATERLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Quarterly_MayNotBillAwardInFuture() {
String awardStartDate = "2015-07-01";
String currentDate = "2015-04-21";
final String lastBilledDate = null;
String expectedBillingPeriodStart = null;
String expectedBillingPeriodEnd = null;
final boolean expectedBillable = false;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.QUATERLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Quarterly_BilledLastCalendarYear() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
final String lastBilledDate = "2014-11-15";
String expectedBillingPeriodStart = "2014-10-01";
String expectedBillingPeriodEnd = "2015-03-31";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.QUATERLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Quarterly_BilledLastFiscalYear() {
String awardStartDate = "2013-07-01";
String currentDate = "2015-04-21";
final String lastBilledDate = "2014-06-15";
String expectedBillingPeriodStart = "2014-04-01";
String expectedBillingPeriodEnd = "2015-03-31";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.QUATERLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_SemiAnnual_nullLastBilled1() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
final String lastBilledDate = null;
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2014-12-31";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.SEMI_ANNUALLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_SemiAnnual_nullLastBilled2() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-08-21";
final String lastBilledDate = null;
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-06-30";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.SEMI_ANNUALLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_SemiAnnual_MayNotBillNow() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-04-21";
final String lastBilledDate = "2015-04-20";
String expectedBillingPeriodStart = null;
String expectedBillingPeriodEnd = null;
final boolean expectedBillable = false;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.SEMI_ANNUALLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_SemiAnnual_LastBilledPreviousSemiAnnual() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-08-21";
final String lastBilledDate = "2015-04-20";
String expectedBillingPeriodStart = "2015-01-01";
String expectedBillingPeriodEnd = "2015-06-30";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.SEMI_ANNUALLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_SemiAnnual_LastBilledEarlierSemiAnnual() {
String awardStartDate = "2013-07-01";
String currentDate = "2015-04-21";
final String lastBilledDate = "2014-11-29";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2014-12-31";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.SEMI_ANNUALLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Annual_nullLastBilled1() {
String awardStartDate = "2014-07-01";
String currentDate = "2015-08-21";
final String lastBilledDate = null;
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-06-30";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.ANNUALLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Annual_MayNotBillNow() {
String awardStartDate = "2013-07-01";
String currentDate = "2015-06-21";
final String lastBilledDate = "2014-10-20";
String expectedBillingPeriodStart = null;
String expectedBillingPeriodEnd = null;
final boolean expectedBillable = false;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.ANNUALLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Annual_LastBilledPreviousAnnual() {
String awardStartDate = "2013-07-01";
String currentDate = "2015-08-21";
final String lastBilledDate = "2015-04-20";
String expectedBillingPeriodStart = "2014-07-01";
String expectedBillingPeriodEnd = "2015-06-30";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.ANNUALLY_BILLING_SCHEDULE_CODE);
}
@Test
public void testDetermineBillingPeriodPriorTo_Annual_LastBilledEarlierAnnual() {
String awardStartDate = "2012-07-01";
String currentDate = "2015-08-21";
final String lastBilledDate = "2013-11-20";
String expectedBillingPeriodStart = "2013-07-01";
String expectedBillingPeriodEnd = "2015-06-30";
final boolean expectedBillable = true;
verifyBillingPeriodPriorTo(awardStartDate, currentDate, lastBilledDate, expectedBillingPeriodStart, expectedBillingPeriodEnd, expectedBillable, ArConstants.ANNUALLY_BILLING_SCHEDULE_CODE);
}
}