Exemplo n.º 1
0
 /**
  * Is this a change to an existing pending pledge requiring payment schedule changes.
  *
  * If the pledge is pending the code (slightly lazily) deletes & recreates pledge payments.
  *
  * If the payment dates or amounts have been manually edited then this can cause data loss. We can mitigate this to
  * some extent by making sure we have a change that could potentially affect the schedule (rather than just a
  * custom data change or similar).
  *
  * This calculation needs to be performed before update takes place as previous & new pledges are compared.
  *
  * @param array $params
  *
  * @return bool
  */
 protected static function isPaymentsRequireRecalculation($params)
 {
     if (empty($params['is_pledge_pending']) || empty($params['id'])) {
         return FALSE;
     }
     $scheduleChangingParameters = array('amount', 'frequency_unit', 'frequency_interval', 'frequency_day', 'installments', 'start_date');
     $existingPledgeDAO = new CRM_Pledge_BAO_Pledge();
     $existingPledgeDAO->id = $params['id'];
     $existingPledgeDAO->find(TRUE);
     foreach ($scheduleChangingParameters as $parameter) {
         if ($parameter == 'start_date') {
             if (strtotime($params[$parameter]) != strtotime($existingPledgeDAO->{$parameter})) {
                 return TRUE;
             }
         } elseif ($params[$parameter] != $existingPledgeDAO->{$parameter}) {
             return TRUE;
         }
     }
 }