Ejemplo n.º 1
0
 /**
  * Test update pending contribution
  */
 public function testUpdatePendingContribution()
 {
     $this->_individualId = $this->individualCreate();
     $form = new CRM_Contribute_Form_Task_Status();
     // create a pending contribution
     $contributionParams = array('contact_id' => $this->_individualId, 'total_amount' => 100, 'financial_type_id' => 'Donation', 'contribution_status_id' => 2);
     $contribution = $this->callAPISuccess('Contribution', 'create', $contributionParams);
     $contributionId = $contribution['id'];
     $form->setContributionIds(array($contributionId));
     $form->buildQuickForm();
     $params = array("contribution_status_id" => 1, "trxn_id_{$contributionId}" => NULL, "check_number_{$contributionId}" => NULL, "fee_amount_{$contributionId}" => 0, "trxn_date_{$contributionId}" => date('m/d/Y'), "payment_instrument_id_{$contributionId}" => 4);
     CRM_Contribute_Form_Task_Status::processForm($form, $params);
     $contribution = $this->callAPISuccess('Contribution', 'get', array('id' => $contributionId));
     $updatedContribution = $contribution['values'][1];
     $this->assertEquals('', $updatedContribution['contribution_source']);
     $this->assertEquals(date("Y-m-d"), date("Y-m-d", strtotime($updatedContribution['receive_date'])));
     $this->assertNotEquals("00:00:00", date("H:i:s", strtotime($updatedContribution['receive_date'])));
     $this->assertEquals('Completed', $updatedContribution['contribution_status']);
 }
Ejemplo n.º 2
0
 /**
  * Declaration of common variables for Invoice and PDF.
  *
  *
  * @param array $contribIds
  *   Contribution Id.
  * @param array $params
  *   Parameter for pdf or email invoices.
  * @param array $contactIds
  *   Contact Id.
  *
  * @return array
  *   array of common elements
  *
  */
 public static function getElements($contribIds, $params, $contactIds)
 {
     $pdfElements = array();
     $pdfElements['contribIDs'] = implode(',', $contribIds);
     $pdfElements['details'] = CRM_Contribute_Form_Task_Status::getDetails($pdfElements['contribIDs']);
     $pdfElements['baseIPN'] = new CRM_Core_Payment_BaseIPN();
     $pdfElements['params'] = $params;
     $pdfElements['createPdf'] = FALSE;
     if (!empty($pdfElements['params']['output']) && ($pdfElements['params']['output'] == "pdf_invoice" || $pdfElements['params']['output'] == "pdf_receipt")) {
         $pdfElements['createPdf'] = TRUE;
     }
     $excludeContactIds = array();
     if (!$pdfElements['createPdf']) {
         $returnProperties = array('email' => 1, 'do_not_email' => 1, 'is_deceased' => 1, 'on_hold' => 1);
         list($contactDetails) = CRM_Utils_Token::getTokenDetails($contactIds, $returnProperties, FALSE, FALSE);
         $pdfElements['suppressedEmails'] = 0;
         $suppressedEmails = 0;
         foreach ($contactDetails as $id => $values) {
             if (empty($values['email']) || empty($params['override_privacy']) && !empty($values['do_not_email']) || CRM_Utils_Array::value('is_deceased', $values) || !empty($values['on_hold'])) {
                 $suppressedEmails++;
                 $pdfElements['suppressedEmails'] = $suppressedEmails;
                 $excludeContactIds[] = $values['contact_id'];
             }
         }
     }
     $pdfElements['excludeContactIds'] = $excludeContactIds;
     return $pdfElements;
 }
Ejemplo n.º 3
0
 /**
  * process the form after the input has been submitted and validated
  *
  * @access public
  *
  * @return void
  */
 public function postProcess()
 {
     // get all the details needed to generate a receipt
     $contribIDs = implode(',', $this->_contributionIds);
     $details = CRM_Contribute_Form_Task_Status::getDetails($contribIDs);
     $baseIPN = new CRM_Core_Payment_BaseIPN();
     $message = array();
     $template = CRM_Core_Smarty::singleton();
     $params = $this->controller->exportValues($this->_name);
     $createPdf = FALSE;
     if ($params['output'] == "pdf_receipt") {
         $createPdf = TRUE;
     }
     $excludeContactIds = array();
     if (!$createPdf) {
         $returnProperties = array('email' => 1, 'do_not_email' => 1, 'is_deceased' => 1, 'on_hold' => 1);
         list($contactDetails) = CRM_Utils_Token::getTokenDetails($this->_contactIds, $returnProperties, FALSE, FALSE);
         $suppressedEmails = 0;
         foreach ($contactDetails as $id => $values) {
             if (empty($values['email']) || !empty($values['do_not_email']) || CRM_Utils_Array::value('is_deceased', $values) || !empty($values['on_hold'])) {
                 $suppressedEmails++;
                 $excludeContactIds[] = $values['contact_id'];
             }
         }
     }
     foreach ($details as $contribID => $detail) {
         $input = $ids = $objects = array();
         if (in_array($detail['contact'], $excludeContactIds)) {
             continue;
         }
         $input['component'] = $detail['component'];
         $ids['contact'] = $detail['contact'];
         $ids['contribution'] = $contribID;
         $ids['contributionRecur'] = NULL;
         $ids['contributionPage'] = NULL;
         $ids['membership'] = CRM_Utils_Array::value('membership', $detail);
         $ids['participant'] = CRM_Utils_Array::value('participant', $detail);
         $ids['event'] = CRM_Utils_Array::value('event', $detail);
         if (!$baseIPN->validateData($input, $ids, $objects, FALSE)) {
             CRM_Core_Error::fatal();
         }
         $contribution =& $objects['contribution'];
         // CRM_Core_Error::debug('o',$objects);
         // set some fake input values so we can reuse IPN code
         $input['amount'] = $contribution->total_amount;
         $input['is_test'] = $contribution->is_test;
         $input['fee_amount'] = $contribution->fee_amount;
         $input['net_amount'] = $contribution->net_amount;
         $input['trxn_id'] = $contribution->trxn_id;
         $input['trxn_date'] = isset($contribution->trxn_date) ? $contribution->trxn_date : NULL;
         // CRM_Contribute_BAO_Contribution::composeMessageArray expects mysql formatted date
         $objects['contribution']->receive_date = CRM_Utils_Date::isoToMysql($objects['contribution']->receive_date);
         // CRM_Core_Error::debug('input',$input);
         $values = array();
         $mail = $baseIPN->sendMail($input, $ids, $objects, $values, FALSE, $createPdf);
         if ($mail['html']) {
             $message[] = $mail['html'];
         } else {
             $message[] = nl2br($mail['body']);
         }
         // reset template values before processing next transactions
         $template->clearTemplateVars();
     }
     if ($createPdf) {
         CRM_Utils_PDF_Utils::html2pdf($message, 'civicrmContributionReceipt.pdf', FALSE, $params['pdf_format_id']);
         CRM_Utils_System::civiExit();
     } else {
         if ($suppressedEmails) {
             $status = ts('Email was NOT sent to %1 contacts (no email address on file, or communication preferences specify DO NOT EMAIL, or contact is deceased).', array(1 => $suppressedEmails));
             $msgTitle = ts('Email Error');
             $msgType = 'error';
         } else {
             $status = ts('Your mail has been sent.');
             $msgTitle = ts('Sent');
             $msgType = 'success';
         }
         CRM_Core_Session::setStatus($status, $msgTitle, $msgType);
     }
 }
Ejemplo n.º 4
0
 /**
  * process the form after the input has been submitted and validated
  *
  * @access public
  * @return None
  */
 public function postProcess()
 {
     // get all the details needed to generate a receipt
     $contribIDs = implode(',', $this->_contributionIds);
     require_once 'CRM/Contribute/Form/Task/Status.php';
     $details =& CRM_Contribute_Form_Task_Status::getDetails($contribIDs);
     require_once 'CRM/Core/Payment/BaseIPN.php';
     $baseIPN = new CRM_Core_Payment_BaseIPN();
     $message = array();
     $template =& CRM_Core_Smarty::singleton();
     foreach ($details as $contribID => $detail) {
         $input = $ids = $objects = array();
         $input['component'] = $detail['component'];
         $ids['contact'] = $detail['contact'];
         $ids['contribution'] = $contribID;
         $ids['contributionRecur'] = null;
         $ids['contributionPage'] = null;
         $ids['membership'] = $detail['membership'];
         $ids['participant'] = $detail['participant'];
         $ids['event'] = $detail['event'];
         if (!$baseIPN->validateData($input, $ids, $objects, false)) {
             CRM_Core_Error::fatal();
         }
         $contribution =& $objects['contribution'];
         // CRM_Core_Error::debug('o',$objects);
         // set some fake input values so we can reuse IPN code
         $input['amount'] = $contribution->total_amount;
         $input['is_test'] = $contribution->is_test;
         $input['fee_amount'] = $contribution->fee_amount;
         $input['net_amount'] = $contribution->net_amount;
         $input['trxn_id'] = $contribution->trxn_id;
         $input['trxn_date'] = isset($contribution->trxn_date) ? $contribution->trxn_date : null;
         // CRM_Core_Error::debug('input',$input);
         $values = array();
         $mail = $baseIPN->sendMail($input, $ids, $objects, $values, false, true);
         $mail = str_replace("\n\n", "<p>", $mail);
         $mail = str_replace("\n", "<br/>", $mail);
         $message[] = $mail;
         // reset template values before processing next transactions
         $template->clearTemplateVars();
     }
     require_once 'CRM/Utils/PDF/Utils.php';
     CRM_Utils_PDF_Utils::domlib($message, "civicrmContributionReceipt.pdf");
     exit;
 }
Ejemplo n.º 5
0
 /**
  * process the form after the input has been submitted and validated
  *
  * @access public
  * @return None
  */
 public function postProcess()
 {
     // get all the details needed to generate a receipt
     $contribIDs = implode(',', $this->_contributionIds);
     require_once 'CRM/Contribute/Form/Task/Status.php';
     $details =& CRM_Contribute_Form_Task_Status::getDetails($contribIDs);
     require_once 'CRM/Core/Payment/BaseIPN.php';
     $baseIPN = new CRM_Core_Payment_BaseIPN();
     $message = array();
     $template = CRM_Core_Smarty::singleton();
     $params = $this->controller->exportValues($this->_name);
     $createPdf = false;
     if ($params['output'] == "pdf_receipt") {
         $createPdf = true;
     }
     $excludeContactIds = array();
     if (!$createPdf) {
         $returnProperties = array('email' => 1, 'do_not_email' => 1, 'is_deceased' => 1, 'on_hold' => 1);
         require_once 'CRM/Mailing/BAO/Mailing.php';
         list($contactDetails) = CRM_Mailing_BAO_Mailing::getDetails($this->_contactIds, $returnProperties, false, false);
         foreach ($contactDetails as $id => $values) {
             if (empty($values['email']) || CRM_Utils_Array::value('do_not_email', $values) || CRM_Utils_Array::value('is_deceased', $values) || CRM_Utils_Array::value('on_hold', $values)) {
                 $suppressedEmails++;
                 $excludeContactIds[] = $values['contact_id'];
             }
         }
     }
     foreach ($details as $contribID => $detail) {
         $input = $ids = $objects = array();
         if (in_array($detail['contact'], $excludeContactIds)) {
             continue;
         }
         $input['component'] = $detail['component'];
         $ids['contact'] = $detail['contact'];
         $ids['contribution'] = $contribID;
         $ids['contributionRecur'] = null;
         $ids['contributionPage'] = null;
         $ids['membership'] = $detail['membership'];
         $ids['participant'] = $detail['participant'];
         $ids['event'] = $detail['event'];
         if (!$baseIPN->validateData($input, $ids, $objects, false)) {
             CRM_Core_Error::fatal();
         }
         $contribution =& $objects['contribution'];
         // CRM_Core_Error::debug('o',$objects);
         // set some fake input values so we can reuse IPN code
         $input['amount'] = $contribution->total_amount;
         $input['is_test'] = $contribution->is_test;
         $input['fee_amount'] = $contribution->fee_amount;
         $input['net_amount'] = $contribution->net_amount;
         $input['trxn_id'] = $contribution->trxn_id;
         $input['trxn_date'] = isset($contribution->trxn_date) ? $contribution->trxn_date : null;
         // CRM_Core_Error::debug('input',$input);
         $values = array();
         $mail = $baseIPN->sendMail($input, $ids, $objects, $values, false, $createPdf);
         if (!$mail['html']) {
             $mail = str_replace("\n\n", "<p>", $mail);
             $mail = str_replace("\n", "<br/>", $mail);
         }
         $message[] = $mail;
         // reset template values before processing next transactions
         $template->clearTemplateVars();
     }
     if ($createPdf) {
         require_once 'CRM/Utils/PDF/Utils.php';
         CRM_Utils_PDF_Utils::domlib($message, 'civicrmContributionReceipt.pdf', false, 'portrait', 'letter');
         CRM_Utils_System::civiExit();
     } else {
         if ($suppressedEmails) {
             $status = array('', ts('Email was NOT sent to %1 contacts (no email address on file, or communication preferences specify DO NOT EMAIL, or contact is deceased).', array(1 => $suppressedEmails)));
         } else {
             $status = array('', ts('Your mail has been sent.'));
         }
         CRM_Core_Session::setStatus($status);
     }
 }