3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
15 * @copyright CiviCRM LLC https://civicrm.org/licensing
19 * This class provides the functionality to delete a group of
20 * contributions. This class provides functionality for the actual
23 class CRM_Financial_Form_Export
extends CRM_Core_Form
{
26 * The financial batch id, used when editing the field
33 * Financial batch ids.
36 protected $_batchIds = [];
42 protected $_exportStatusId;
48 protected $_exportFormat;
51 * Download export File.
54 protected $_downloadFile = TRUE;
57 * Build all the data structures needed to build the form.
59 public function preProcess() {
60 $this->_id
= CRM_Utils_Request
::retrieve('id', 'Positive', $this);
62 // this mean it's a batch action
64 if (!empty($_GET['batch_id'])) {
66 $batchIds = explode(',', $_GET['batch_id']);
67 foreach ($batchIds as $batchId) {
68 CRM_Utils_Type
::validate($batchId, 'Positive');
71 $this->_batchIds
= $_GET['batch_id'];
72 $this->set('batchIds', $this->_batchIds
);
75 $this->_batchIds
= $this->get('batchIds');
77 if (!empty($_GET['export_format']) && in_array($_GET['export_format'], ['IIF', 'CSV'])) {
78 $this->_exportFormat
= $_GET['export_format'];
82 $this->_batchIds
= $this->_id
;
85 $this->_exportStatusId
= CRM_Core_PseudoConstant
::getKey('CRM_Batch_DAO_Batch', 'status_id', 'Exported');
87 // check if batch status is valid, do not allow exported batches to export again
88 $batchStatus = CRM_Batch_BAO_Batch
::getBatchStatuses($this->_batchIds
);
90 foreach ($batchStatus as $batchStatusId) {
91 if ($batchStatusId == $this->_exportStatusId
) {
92 $url = CRM_Core_Session
::singleton()->readUserContext();
93 CRM_Core_Error
::statusBounce(ts('You cannot export batches which have already been exported.'), $url);
97 $session = CRM_Core_Session
::singleton();
98 $session->replaceUserContext(CRM_Utils_System
::url('civicrm/financial/financialbatches',
99 "reset=1&batchStatus={$this->_exportStatusId}"));
103 * Build the form object.
105 public function buildQuickForm() {
106 // this mean it's a batch action
107 if (!empty($this->_batchIds
)) {
108 $batchNames = CRM_Batch_BAO_Batch
::getBatchNames($this->_batchIds
);
109 $this->assign('batchNames', $batchNames);
110 // Skip building the form if we already have batches and an export format
111 if ($this->_exportFormat
) {
112 $this->postProcess();
117 'IIF' => ts('Export to IIF'),
118 'CSV' => ts('Export to CSV'),
121 $this->addRadio('export_format', NULL, $optionTypes, NULL, '<br/>', TRUE);
127 'name' => ts('Export Batch'),
128 'spacing' => ' ',
133 'name' => ts('Cancel'),
140 * Process the form after the input has been submitted and validated.
142 public function postProcess() {
143 if (!$this->_exportFormat
) {
144 $params = $this->exportValues();
145 $this->_exportFormat
= $params['export_format'];
149 $batchIds = [$this->_id
];
151 elseif (!empty($this->_batchIds
)) {
152 $batchIds = explode(',', $this->_batchIds
);
154 // Recalculate totals
155 $totals = CRM_Batch_BAO_Batch
::batchTotals($batchIds);
157 // build batch params
158 $session = CRM_Core_Session
::singleton();
159 $batchParams['modified_date'] = date('YmdHis');
160 $batchParams['modified_id'] = $session->get('userID');
161 $batchParams['status_id'] = $this->_exportStatusId
;
163 foreach ($batchIds as $batchId) {
164 $batchParams['id'] = $batchId;
166 $batchParams = array_merge($batchParams, $totals[$batchId]);
167 CRM_Batch_BAO_Batch
::create($batchParams);
170 CRM_Batch_BAO_Batch
::exportFinancialBatch($batchIds, $this->_exportFormat
, $this->_downloadFile
);