Pro Rate Calculation (Rental And Service Cost)

Problem : How does pro rate work for rental.
*Note : Its different from all company.
There are 6 Condition will hit when u do pro rate calculation 

1. Rental Start <= Charge Start, Rental Start < Rental End < Charge End.
2. Rental End> Rental Start < Charge End., Rental End >= Charge End.
3. Rental Start <= Charge Start, Rental End >= Charge End.
4. Rental Start > Charge Start, Rental End < Charge End.
5. Rental Start < Charge Start, Rental End = Charge End.
6. Rental Start = Rental End.

Int32 DropdownMonth = 8;
Int32 DropdownYear = 2013;
int32 DaysActualPerMonth = 0;
int32 DaysPerMonth = 0;

// Eg. August bill September Rental
Int32 DaysInMonth = DateTime.DaysInMonth(DropdownYear, DropdownMonth + 1);
DateTime FirstDayOfTheMonth = GetFirstDayOfMonth(DropdownYear, DropdownMonth + 1);
DateTime LastDayOfTheMonth = GetLastDayOfMonth(DropdownYear, DropdownMonth + 1);

DateTime RentalCommenceDate = RentalCostCommenceDate; //Get Rental Commence Date
DateTime RentalDueDate = RentalCostDueDate; // Get Rental Due Date

//ParameterSetDateTime;  Equal to previous generation date. May bill invoice date = Invoice date (June Date)
if (RentalCommenceDate <= FirstDayOfTheMonth && RentalDueDate > RentalCommenceDate && RentalDueDate < LastDayOfTheMonth)
{
    //Return Partial Rental Amount (A)
    DaysActualPerMonth = DaysInMonth;
    DaysPerMonth = GetDaysBetweenDates(FirstDayOfTheMonth, RentalDueDate) + 1;
}
else if (RentalCommenceDate > FirstDayOfTheMonth && RentalCommenceDate < LastDayOfTheMonth && RentalDueDate >= LastDayOfTheMonth)
{
    //Return Partial Rental Amount (B)
    DaysActualPerMonth = DaysInMonth;
    DaysPerMonth = GetDaysBetweenDates(RentalCommenceDate, LastDayOfTheMonth) + 1;
}
else if (RentalCommenceDate <= FirstDayOfTheMonth && RentalDueDate >= LastDayOfTheMonth)
{
    //Return Full Rental Amount (C)
    DaysActualPerMonth = DaysInMonth;
    DaysPerMonth = DaysInMonth;
}
else if (RentalCommenceDate > FirstDayOfTheMonth && RentalDueDate > RentalCommenceDate && RentalDueDate < LastDayOfTheMonth)
{
    //Return Partial Rental Amount (D)
    DaysActualPerMonth = DaysInMonth;
    DaysPerMonth = GetDaysBetweenDates(RentalCommenceDate, RentalDueDate) + 1;
}
else if (RentalCommenceDate < FirstDayOfTheMonth && RentalDueDate > RentalCommenceDate && RentalDueDate == LastDayOfTheMonth)
{
    //Return Partial Rental Amount (E)
    DaysActualPerMonth = DaysInMonth;
    DaysPerMonth = 1;
}
else if (RentalCommenceDate == RentalDueDate)
{
    //Return Partial Rental Amount = One Day Rental (F)
    DaysActualPerMonth = DaysInMonth;
    DaysPerMonth = 1;
}
else
{
    //Nothing
}

0 comments: