Make recurrence end date inclusive

This commit is contained in:
Hillel Coren 2018-03-15 11:49:44 +02:00
parent 36696f28af
commit 8de96b6d05
2 changed files with 36 additions and 36 deletions

View File

@ -1093,41 +1093,6 @@ class Invoice extends EntityModel implements BalanceAffecting
return $this; return $this;
} }
/**
* @throws \Recurr\Exception\MissingData
*
* @return bool|\Recurr\RecurrenceCollection
*/
public function getSchedule()
{
if (! $this->start_date || ! $this->is_recurring || ! $this->frequency_id) {
return false;
}
$startDate = $this->getOriginal('last_sent_date') ?: $this->getOriginal('start_date');
$startDate .= ' ' . $this->account->recurring_hour . ':00:00';
$startDate = $this->account->getDateTime($startDate);
$endDate = $this->end_date ? $this->account->getDateTime($this->getOriginal('end_date')) : null;
$timezone = $this->account->getTimezone();
$rule = $this->getRecurrenceRule();
$rule = new \Recurr\Rule("{$rule}", $startDate, $endDate, $timezone);
// Fix for months with less than 31 days
$transformerConfig = new \Recurr\Transformer\ArrayTransformerConfig();
$transformerConfig->enableLastDayOfMonthFix();
$transformer = new \Recurr\Transformer\ArrayTransformer();
$transformer->setConfig($transformerConfig);
$dates = $transformer->transform($rule);
if (count($dates) < 2) {
return false;
}
return $dates;
}
/** /**
* @param null $invoice_date * @param null $invoice_date
* *

View File

@ -116,6 +116,41 @@ trait HasRecurrence
} }
} }
/**
* @throws \Recurr\Exception\MissingData
*
* @return bool|\Recurr\RecurrenceCollection
*/
public function getSchedule()
{
if (! $this->start_date || ! $this->frequency_id) {
return false;
}
$startDate = $this->getOriginal('last_sent_date') ?: $this->getOriginal('start_date');
$startDate .= ' ' . $this->account->recurring_hour . ':00:00';
$startDate = $this->account->getDateTime($startDate);
$endDate = $this->end_date ? $this->account->getDateTime($this->getOriginal('end_date')) : null;
$timezone = $this->account->getTimezone();
$rule = $this->getRecurrenceRule();
$rule = new \Recurr\Rule("{$rule}", $startDate);
// Fix for months with less than 31 days
$transformerConfig = new \Recurr\Transformer\ArrayTransformerConfig();
$transformerConfig->enableLastDayOfMonthFix();
$transformer = new \Recurr\Transformer\ArrayTransformer();
$transformer->setConfig($transformerConfig);
$dates = $transformer->transform($rule);
if (count($dates) < 2) {
return false;
}
return $dates;
}
/** /**
* @return null * @return null
*/ */
@ -183,7 +218,7 @@ trait HasRecurrence
} }
if ($this->end_date) { if ($this->end_date) {
$rule .= 'UNTIL=' . $this->getOriginal('end_date'); $rule .= 'UNTIL=' . $this->getOriginal('end_date') . ' 24:00:00';
} }
return $rule; return $rule;