/** * build all the data structures needed to build the form * * @return void * @access public */ function preProcess() { //check for permission to edit contributions if (!CRM_Core_Permission::check('issue cdn tax receipts')) { CRM_Core_Error::fatal(ts('You do not have permission to access this page', array('domain' => 'org.civicrm.cdntaxreceipts'))); } parent::preProcess(); $thisYear = date("Y"); $this->_years = array($thisYear, $thisYear - 1, $thisYear - 2); $receipts = array(); foreach ($this->_years as $year) { $receipts[$year] = array('email' => 0, 'print' => 0, 'total' => 0, 'contrib' => 0); } // count and categorize contributions foreach ($this->_contactIds as $id) { foreach ($this->_years as $year) { list($issuedOn, $receiptId) = cdntaxreceipts_annual_issued_on($id, $year); $eligible = count(cdntaxreceipts_contributions_not_receipted($id, $year)); if ($eligible > 0) { list($method, $email) = cdntaxreceipts_sendMethodForContact($id); $receipts[$year][$method]++; $receipts[$year]['total']++; $receipts[$year]['contrib'] += $eligible; } } } $this->_receipts = $receipts; }
/** * build all the data structures needed to build the form * * @return void * @access public */ function preProcess() { //check for permission to view contributions if (!CRM_Core_Permission::check('access CiviContribute')) { CRM_Core_Error::fatal(ts('You do not have permission to access this page')); } parent::preProcess(); $contributionId = CRM_Utils_Array::value('id', $_GET); $contactId = CRM_Utils_Array::value('cid', $_GET); if (isset($contributionId) && isset($contactId)) { $this->set('contribution_id', $contributionId); $this->set('contact_id', $contactId); } else { $contributionId = $this->get('contribution_id'); $contactId = $this->get('contact_id'); } // might be callback to retrieve the downloadable PDF file $download = CRM_Utils_Array::value('download', $_GET); if ($download == 1) { $this->sendFile($contributionId, $contactId); // exits } list($issuedOn, $receiptId) = cdntaxreceipts_issued_on($contributionId); if (isset($receiptId)) { $existingReceipt = cdntaxreceipts_load_receipt($receiptId); $this->_reissue = 1; $this->_receipt = $existingReceipt; } else { $this->_reissue = 0; } list($method, $email) = cdntaxreceipts_sendMethodForContact($contactId); $this->_method = $method; if ($method == 'email') { $this->_sendTarget = $email; } // may need to offer a PDF file for download, if returning from form submission. // this sets up the form with proper JS to download the file, it doesn't actually send the file. // see ?download=1 for sending the file. $pdfDownload = CRM_Utils_Array::value('file', $_GET); if ($pdfDownload == 1) { $this->_pdfFile = 1; } }
/** * build all the data structures needed to build the form * * @return void * @access public */ function preProcess() { //check for permission to edit contributions if (!CRM_Core_Permission::check('issue cdn tax receipts')) { CRM_Core_Error::fatal(ts('You do not have permission to access this page', array('domain' => 'org.civicrm.cdntaxreceipts'))); } parent::preProcess(); $this->_contributions_status = array(); $this->_issue_type = array('original', 'duplicate'); $this->_receipts = array(); $this->_years = array(); $receipts = array('totals' => array('total_contrib' => 0, 'loading_errors' => 0, 'total_contacts' => 0, 'original' => 0, 'duplicate' => 0)); $this->_contributions_status = cdntaxreceipts_contributions_get_status($this->_contributionIds); // Get the number of years selected foreach ($this->_contributions_status as $contrib_status) { $this->_years[$contrib_status['receive_year']] = $contrib_status['receive_year']; } foreach ($this->_years as $year) { foreach ($this->_issue_type as $issue_type) { $receipts[$issue_type][$year] = array('total_contrib' => 0, 'total_amount' => 0, 'email' => array('contribution_count' => 0, 'receipt_count' => 0), 'print' => array('contribution_count' => 0, 'receipt_count' => 0), 'total_contacts' => 0, 'total_eligible_amount' => 0, 'not_eligible' => 0, 'not_eligible_amount' => 0, 'contact_ids' => array()); } } // Count and categorize contributions foreach ($this->_contributionIds as $id) { $status = isset($this->_contributions_status[$id]) ? $this->_contributions_status[$id] : NULL; if (is_array($status)) { $year = $status['receive_year']; $issue_type = empty($status['receipt_id']) ? 'original' : 'duplicate'; $receipts[$issue_type][$year]['total_contrib']++; // Note: non-deductible amount has already had hook called in cdntaxreceipts_contributions_get_status $receipts[$issue_type][$year]['total_amount'] += $status['total_amount']; $receipts[$issue_type][$year]['not_eligible_amount'] += $status['non_deductible_amount']; if ($status['eligible']) { list($method, $email) = cdntaxreceipts_sendMethodForContact($status['contact_id']); $receipts[$issue_type][$year][$method]['contribution_count']++; if (!isset($receipts[$issue_type][$year]['contact_ids'][$status['contact_id']])) { $receipts[$issue_type][$year]['contact_ids'][$status['contact_id']] = array('issue_method' => $method, 'contributions' => array()); $receipts[$issue_type][$year][$method]['receipt_count']++; } // Here we store all the contribution details for each contact_id $receipts[$issue_type][$year]['contact_ids'][$status['contact_id']]['contributions'][$id] = $status; } else { $receipts[$issue_type][$year]['not_eligible']++; // $receipts[$issue_type][$year]['not_eligible_amount'] += $status['total_amount']; } // Global totals $receipts['totals']['total_contrib']++; $receipts['totals'][$issue_type]++; if ($status['contact_id']) { $receipts['totals']['total_contacts']++; } } else { $receipts['loading_errors']++; } } foreach ($this->_issue_type as $issue_type) { foreach ($this->_years as $year) { $receipts[$issue_type][$year]['total_contacts'] = count($receipts[$issue_type][$year]['contact_ids']); } } $this->_receipts = $receipts; }