Rolling.php in Commerce Recurring Framework 8
File
src/Plugin/Commerce/BillingSchedule/Rolling.php
View source
<?php
namespace Drupal\commerce_recurring\Plugin\Commerce\BillingSchedule;
use Drupal\commerce_recurring\BillingPeriod;
use Drupal\Core\Datetime\DrupalDateTime;
class Rolling extends IntervalBase {
public function generateFirstBillingPeriod(DrupalDateTime $start_date) {
return new BillingPeriod($start_date, $this
->getInterval()
->add($start_date));
}
public function generateNextBillingPeriod(DrupalDateTime $start_date, BillingPeriod $billing_period) {
$next_start_date = $billing_period
->getEndDate();
$next_end_date = $this
->getInterval()
->add($next_start_date);
$billing_day = $start_date
->format('d');
if ($this
->getInterval()
->getUnit() == 'month' && $next_end_date
->format('d') != $billing_day) {
if ($billing_day <= $next_end_date
->format('t')) {
$next_end_date
->setDate($next_end_date
->format('Y'), $next_end_date
->format('m'), $billing_day);
}
}
return new BillingPeriod($next_start_date, $next_end_date);
}
}
Classes
Name |
Description |
Rolling |
Provides a rolling interval billing schedule. |