Expand repeated expenses.

This commit is contained in:
James Cole
2014-11-24 17:01:37 +01:00
parent bfda4bc199
commit b051278d2e
6 changed files with 161 additions and 7 deletions

View File

@@ -98,6 +98,51 @@ class Date
return $currentEnd;
}
/**
* @param Carbon $theCurrentEnd
* @param $repeatFreq
*
* @return mixed
* @throws FireflyException
*/
public function endOfX(Carbon $theCurrentEnd, $repeatFreq)
{
$currentEnd = clone $theCurrentEnd;
switch ($repeatFreq) {
default:
throw new FireflyException('Cannot do endOfPeriod for $repeat_freq ' . $repeatFreq);
break;
case 'daily':
$currentEnd->endOfDay();
break;
case 'week':
case 'weekly':
$currentEnd->endOfWeek();
break;
case 'month':
case 'monthly':
$currentEnd->endOfMonth();
break;
case 'quarter':
case 'quarterly':
$currentEnd->lastOfQuarter();
break;
case 'half-year':
$month = intval($theCurrentEnd->format('m'));
$currentEnd->endOfYear();
if($month <= 6) {
$currentEnd->subMonths(6);
}
break;
case 'year':
case 'yearly':
$currentEnd->endOfYear();
break;
}
return $currentEnd;
}
public function periodShow(Carbon $date, $repeatFrequency)
{
switch ($repeatFrequency) {
@@ -107,13 +152,18 @@ class Date
case 'daily':
return $date->format('j F Y');
break;
case 'week':
case 'weekly':
return $date->format('\W\e\e\k W, Y');
break;
case 'quarter':
return $date->format('F Y');
break;
case 'monthly':
case 'month':
return $date->format('F Y');
break;
case 'year':
case 'yearly':
return $date->format('Y');
break;