示例#1
0
 /**
  * Get all properties of this receipt token source, so we can e.g. export it or pass the
  * properties into the $template->generatePDF() function to create another copy
  *
  * @return array of properties
  */
 public function getAllTokens()
 {
     $values = array();
     CRM_Donrec_Logic_ReceiptItem::getCustomFields();
     $expected_fields = CRM_Donrec_Logic_ReceiptTokens::$STORED_TOKENS;
     $receipt_id = $this->Id;
     $receipt_fields = self::$_custom_fields;
     $item_fields = CRM_Donrec_Logic_ReceiptItem::$_custom_fields;
     // TODO: FIX, look up table name!
     $receipt_table_name = 'civicrm_value_donation_receipt_' . self::$_custom_group_id;
     $item_table_name = 'civicrm_value_donation_receipt_item_' . CRM_Donrec_Logic_ReceiptItem::$_custom_group_id;
     // get all the receipt data
     $query_receipt = "SELECT\n        receipt.`id`                                       AS `id`,\n        receipt.`entity_id`                                AS `contributor__id`,\n        receipt.`{$receipt_fields['receipt_id']}`              AS `receipt_id`,\n        receipt.`{$receipt_fields['profile']}`                 AS `profile`,\n        receipt.`{$receipt_fields['type']}`                    AS `type`,\n        receipt.`{$receipt_fields['status']}`                  AS `status`,\n        receipt.`{$receipt_fields['issued_on']}`               AS `issued_on`,\n        receipt.`{$receipt_fields['issued_by']}`               AS `issued_by`,\n        receipt.`{$receipt_fields['original_file']}`           AS `original_file`,\n        receipt.`{$receipt_fields['date_from']}`               AS `date_from`,\n        receipt.`{$receipt_fields['date_to']}`                 AS `date_to`,\n\n        receipt.`{$receipt_fields['display_name']}`            AS `contributor__display_name`,\n        receipt.`{$receipt_fields['street_address']}`          AS `contributor__street_address`,\n        receipt.`{$receipt_fields['supplemental_address_1']}`  AS `contributor__supplemental_address_1`,\n        receipt.`{$receipt_fields['supplemental_address_2']}`  AS `contributor__supplemental_address_2`,\n        receipt.`{$receipt_fields['postal_code']}`             AS `contributor__postal_code`,\n        receipt.`{$receipt_fields['city']}`                    AS `contributor__city`,\n        receipt.`{$receipt_fields['country']}`                 AS `contributor__country`,\n\n        receipt.`{$receipt_fields['shipping_street_address']}`          AS `addressee__street_address`,\n        receipt.`{$receipt_fields['shipping_supplemental_address_1']}`  AS `addressee__supplemental_address_1`,\n        receipt.`{$receipt_fields['shipping_supplemental_address_2']}`  AS `addressee__supplemental_address_2`,\n        receipt.`{$receipt_fields['shipping_postal_code']}`             AS `addressee__postal_code`,\n        receipt.`{$receipt_fields['shipping_city']}`                    AS `addressee__city`,\n        receipt.`{$receipt_fields['shipping_country']}`                 AS `addressee__country`,\n\n        SUM(item.`{$item_fields['total_amount']}`)             AS `total_amount`,\n        SUM(item.`{$item_fields['non_deductible_amount']}`)    AS `non_deductible_amount`,\n        item.`{$item_fields['currency']}`                      AS `currency`\n\n      FROM `{$receipt_table_name}`                           AS receipt\n\n      RIGHT JOIN `{$item_table_name}`                        AS item\n        ON   item.`{$item_fields['issued_in']}` = receipt.`id`\n        AND  item.`{$item_fields['status']}`    = receipt.`{$receipt_fields['status']}`\n\n      WHERE receipt.`id` = {$receipt_id}";
     $result = CRM_Core_DAO::executeQuery($query_receipt);
     if ($result->fetch()) {
         foreach ($expected_fields as $key => $value) {
             // copy all expected values, if they exist
             if (!is_array($key) && isset($result->{$key})) {
                 $values[$key] = $result->{$key};
             }
         }
         // also, copy the contributor data
         foreach ($expected_fields['contributor'] as $key => $value) {
             $qkey = 'contributor__' . $key;
             if (isset($result->{$qkey})) {
                 $values['contributor'][$key] = $result->{$qkey};
             }
         }
         // and the addresse data
         foreach ($expected_fields['addressee'] as $key => $value) {
             $qkey = 'addressee__' . $key;
             if (isset($result->{$qkey})) {
                 $values['addressee'][$key] = $result->{$qkey};
             }
         }
     } else {
         CRM_Core_Error::debug_log_message("de.systopia.donrec - couldn't load receipt data.");
         return $values;
     }
     // get receipt-item-infos
     $query_item = "\n      SELECT\n        item.`id`                                        AS `id`,\n        item.`entity_id`                                 AS `contribution_id`,\n        item.`{$item_fields['receive_date']}`                AS `receive_date`,\n        item.`{$item_fields['total_amount']}`                AS `total_amount`,\n        item.`{$item_fields['issued_on']}`                   AS `currency`,\n        item.`{$item_fields['non_deductible_amount']}`       AS `non_deductible_amount`,\n        item.`{$item_fields['financial_type_id']}`           AS `financial_type_id`,\n        type.`name`                                      AS `type`\n\n      FROM `{$item_table_name}`                            AS item\n      INNER JOIN `civicrm_contribution`                  AS contrib\n        ON   item.`entity_id` = contrib.`id`\n      INNER JOIN `civicrm_financial_type`                AS type\n        ON   type.`id` = contrib.`financial_type_id`\n\n      WHERE item.`{$item_fields['issued_in']}` = {$receipt_id}";
     $result = CRM_Core_DAO::executeQuery($query_item);
     while ($result->fetch()) {
         foreach ($expected_fields['lines'] as $key => $value) {
             if (isset($result->{$key})) {
                 $values['lines'][$result->id][$key] = $result->{$key};
             }
         }
     }
     // add dynamically created tokens
     CRM_Donrec_Logic_ReceiptTokens::addDynamicTokens($values);
     return $values;
 }
 /**
  * Get all properties of this receipt token source, so we can e.g. export it or pass the
  * properties into the $template->generatePDF() function to create another copy
  *
  * @return array of properties
  */
 public function getAllTokens()
 {
     $values = array();
     // create items
     $values['receipt_id'] = $this->receipt_id;
     $values['status'] = $this->is_test ? 'DRAFT' : 'ORIGINAL';
     $values['issued_on'] = date('Y-m-d H:i:s');
     $values['issued_by'] = CRM_Core_Session::singleton()->get('userID');
     $values['total_amount'] = 0.0;
     $values['non_deductible_amount'] = 0.0;
     $values['date_from'] = 9999999999.0;
     $values['date_to'] = 0;
     $values['lines'] = array();
     foreach ($this->snapshot_lines as $snapshot_line) {
         $snapshot_line_id = $snapshot_line['id'];
         $receive_date = strtotime($snapshot_line['receive_date']);
         // create line item
         $values['lines'][$snapshot_line_id] = array('id' => $snapshot_line['id'], 'receive_date' => $snapshot_line['receive_date'], 'contribution_id' => $snapshot_line['contribution_id'], 'total_amount' => $snapshot_line['total_amount'], 'non_deductible_amount' => $snapshot_line['non_deductible_amount'], 'financial_type_id' => $snapshot_line['financial_type_id']);
         // update general values
         $values['id'] = $snapshot_line_id;
         // just use one of them as ID
         $values['profile'] = $snapshot_line['profile'];
         $values['contact_id'] = $snapshot_line['contact_id'];
         $values['currency'] = $snapshot_line['currency'];
         $values['date_from'] = $snapshot_line['date_from'];
         $values['date_to'] = $snapshot_line['date_to'];
         $values['total_amount'] += $snapshot_line['total_amount'];
         $values['non_deductible_amount'] += $snapshot_line['non_deductible_amount'];
     }
     // add contributor and addressee
     $values['contributor'] = $this->getContributor($values['contact_id']);
     $values['addressee'] = $this->getAddressee($values['contact_id']);
     // add dynamically created tokens
     CRM_Donrec_Logic_ReceiptTokens::addDynamicTokens($values);
     return $values;
 }