/**
  * Checks if a subscription has reached the maximum paycycle repetitions.
  * If the last paycycle was paid then the subscription is cancelled.
  *
  * @since  1.0.0
  * @internal Called by process_purchase() and request_payment()
  *
  * @param  MS_Model_Relationship $subscription
  * @param  M2_Stripe_Subscription $stripe_sub
  */
 protected function cancel_if_done($subscription, $stripe_sub)
 {
     $membership = $subscription->get_membership();
     if ($membership->pay_cycle_repetitions < 1) {
         return;
     }
     $payments = $subscription->get_payments();
     if (count($payments) < $membership->pay_cycle_repetitions) {
         return;
     }
     $stripe_sub->cancel(array('at_period_end' => true));
 }